Как это будет работать
Предоставление информации о себе
При идентификации на сервисах (в частности NickServ) зарегистрированному пользователю будет выдаваться некоторый временный (сессионный) ключ доступа к сервису загрузки информации о себе. IRC-клиент, поддерживающий эти возможности, автоматически будет подключаться к HTTP-сервису, расположенному физически на том же сервере что и IRC-сервер (это уменьшит межсетевой трафик для пользователей локальных IRC-серверов) и при помощи GET/POST-запросов протокола HTTP отправит (обновит) информацию о пользователе.
Далее эта информация автоматически (а точнее, при возникновении в ней необходимости на других серверах) будет ретранслирована на "центральный сервер" в сети (тот, к которому подключены сервисы) и станет доступна другим пользователям.
Теоретически может быть загружена любая информация (визитная карточка, фотография и т.п.).
Получение информации о других
При подключении клиента IRC-сервер декларирует о поддержке MediaServ (фактически об этом будет свидетельствовать наличие этого сервиса он-лайн или специальный ответ IRC-сервера), и IRC клиент, видя это, получает от MediaServ адрес HTTP-сервиса (который, как говорилось выше, совпадает с физическим адресом IRC-сервера, но это требование необязательно и служит для равномерного распределения нагрузки и уменьшения трафика) и подключается к HTTP сервису и запрашивает с него данные. Если же на конкретном IRC-сервере нет такого HTTP-сервиса, MediaServ может выдать ссылку на другие доступные HTTP-сервисы или ссылку на HTTP-сервис «центрального сервера».
Опуская технические подробности, диалог может выглядеть примерно так:
GET (или POST) запрос к HTTP-сервису: дай мне информацию о пользователях с никами USER1,USER2,USER3 и т.д. (перечисление всех интересующих пользователей).
Ответ сервиса: у USER1 имеется аватар avatar1.jpg 20кб, дата последнего изменения такая-то, MD5 такое-то, и есть визитка, у USER2 только визитка, у USER3 нет ничего. Эти данные сервис получит, обратившись к централизованной сетевой базе данных, которая будет расположена на центральном сервере и будет интегрирована с базой данных пользователей сервисов. Далее, из полученной информации, IRC-клиент может выбрать какие именно данные он хочет скачать. Например, он хочет получить файл avatar1.jpg. Первым делом он смотрит, нет ли этого файла в его кэше (не скачивал ли он его ранее) и сверяет время последнего обновления этого файла со временем, которое вернул сервер. Если такого аватара нет в кэше или он уже устарел, то отправляет запрос HTTP сервису, мол «дай-ка мне этот файлик».
Сервис проверяет (используя в принципе такие же правила что и IRC-клиент), есть ли у него этот файл в кэше. Если да, то отдает клиенту, если нет, то скачивает с центрального сервера и отдает клиенту, сохраняя у себя (кэширует) для экономии времени и траффика при последующих запросах этого же файла.
Для пользователей mIRC
nМы вполне оправдано сомневаемся в том, что разработчики mIRC (и других клиентов) добавят поддержку этой технологии. Но это не может остановить развитие проекта. На том же локальном HTTP будет присутствовать веб-интерфейс, который можно будет использовать подобно тому, как это происходит при просмотре профилей пользователей на форумах. Например, авторизация будет производиться путём использования зарегистрированных на NickServ ника и пароля. Затем можно произвести модификацию собственной анкеты или, например, просмотреть анкеты пользователей определенного канала.
В той или иной форме подобные сервисы уже существуют: есть боты, составляющие списки пользователей сети, есть общесетевые или канальные сайты с галереями пользователей. Мы лишь предлагаем единый, удобный и тесно интегрированный как с сервисами, так и с IRC-клиентами способ.
Требования к сети и серверам
Введение ограничений на размер файлов, позволит хранить графическую информацию на сервере не занимая много места. Флуд-контроль должен ограждать HTTP-сервис от некорректного использования и его избыточной нагрузки. В части интеграции в сети революционность технологии в том, что она практически не требует модификации IRCD т.к. все данные и сервисы работают самостоятельно, лишь синхронизируясь с сетью.
В таком случае нужна минимальная модификация центрального сервера и сервисов. Причем, если какие-либо сервера сети по тем или иным причинам откажутся от установки HTTP сервиса, это никак не повлияет на работу сети в целом. Модификации настолько минимальны, что позволяют выполнить их как небольшие патчи или модули для ircservices и ircd-ru или Unreal и Anope.
Для функционирования веб-сервиса потребуется лишь работающий HTTP сервер с возможностью входящих подключений. В подавляюще большинстве случаев HTTP сервер и так присутствует на IRC-серверах.