Skip to content

VladimirKhil/CIRCe

Repository files navigation

Цирцея - проект IRC-клиента.

IRC - протокол для обмена сообщениями, позволяющий организовать общение пользователей при помощи приватных чатов и отдельных каналов.

Спецификация протокола описана здесь: https://tools.ietf.org/html/rfc2812

Проект реализован на C# при помощи технологий Windows Forms и WPF.

Изначальная архитектура была разработана таким образом, что основные классы форм - MDIParent, MDIChild, MDIChildServer и т.д. содержали реализацию протокола IRC и бизнес-логику приложения.

В дальнейшем проводился рефакторинг с целью отделить реализацию протокола от бизнес-логики и отображения, за счёт чего появились отдельные проекты IRC.Client.Base, CIRCe.Base и т.д. Но эта работа не была закончена, и поэтому в настоящий момент в проекте сосуществуют две архитектуры - прежняя, полноценная, и новая, недоделанная.

Сам клиент Цирцеи реализован как MDI-приложение с поддержкой добавления собственных плагинов. Каждый плагин выполняется в отдельных потоке и AppDomain'е.

В настоящий момент разработка проекта не ведётся. Любой желающий может продолжить разработку своими силами.

Структура решения IRCClient:

  • AddonsChecker: проверка корректности подгружаемых плагинов
  • CIRCe.Base: базовая модель приложения Цирцеи, в том числе передаваемая плагину для расширения
  • CIRCeAddonTemplate: шаблон для написания собственного плагина для Цирцеи
  • CIRCeSetup: установщик Цирцеи
  • IRC.Client: реализация IRC-клиента (реализация протокола без UI)
  • IRC.Client.Base: модель IRC-клиента
  • IRC.Client.Test: простейший тест IRC-клиента
  • IRCConnection: управление IRC-подключением (прежняя архитектура)
  • IRCProviders: общие приципы работы IRC-клиента (прежняя архитектура)
  • IRCWindow: основной проект, поддерживает обе архитектуры
  • SIIRC: плагин для проведения SIGame в Цирцее

Для сборки проекта используется Microsoft Visual Studio 2017.

После запуска нужно поменять учётные данные пользователя (кнопка "Настроить свои данные"), заполнив англоязычное имя пользователя и задав адрес почты, иначе не получится подключиться к серверу.

Приложение содержит базовый файл помощи.

Releases

No releases published

Packages

No packages published