MediaServ - новая концепция IRC

Четверг, 26 Июль 2007

«О чем это мы? MediaServ какой-то… Да зачем это вообще нужно?» — спросите вы. Попытаюсь донести до вас это понятным языком.

Сейчас ярким недостатком IRC является невозможность передачи никакой информации друг другу стандартными средствами, кроме реального имени. Много лет назад этого было достаточно, но время идет, а IRC остается на месте. Мы предлагаем идею реализации принципиально новой технологии, не имеющей пока аналогов ни в отечественном, ни в мировом IRC пространстве. Звучит гордо. Но посмотрим, стоит ли оно этого фактически.

Смысл в двух словах прост как дважды два: пользователь устанавливает информацию о себе, а другие ее видят. «И что тут революционного?» - будет справедливая реплика читателя. А революционен способ реализации этого. Получение любого количества информации о собеседнике, включая его аватар и фотографии, должно проходить автоматически и координироваться сервисами, а не CTCP/DCC соединениями.

Как это будет работать

Предоставление информации о себе

При идентификации на сервисах (в частности 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-серверах.

Сети, готовые принять этот сервис

На данный момент свою поддержку выразила сеть SolarNet.
< Пред.   След. >