Статьи

Порты на PaaS: запуск IRC Bouncer на Stackato

 Если вы пропустили его, ZNC теперь доступен в магазине приложений Stackato вместе с исходным кодом на Github . ZNC — это многофункциональный IRC-батут, написанный на C ++. В этом примере приложения показана служба переадресации портов Stackato — Harbour.

Что такое IRC Bouncer?

IRC-баунсер — это прокси между IRC-клиентом и его сетью назначения. Этот дизайн решает проблему, с которой часто сталкиваются многие пользователи IRC — постоянство. Если вы не подключены к серверу активно, вы пропустите все действия, связанные с обменом сообщениями. Это проблема, которую решают IRC-вышибалы, такие как ZNC, и сервисы, подобные IRCCloud. Однако IRC-батутер останется подключенным к серверу и будет регистрировать сообщения, чтобы можно было снова присоединиться к IRC-батутеру и воспроизвести пропущенные сообщения.

Развертывание ZNC на Stackato

Запустить ZNC в Stackato легко, просто нажмите «Развернуть приложение» в App Store или, если вы используете командную строку, просто запустите « stackato push ». Приложение уже настроено с модулем веб-администрирования, начальным пользователем-администратором и некоторыми базовыми настройками.

Один параметр, который вы можете настроить, называется слушателем , порт, который прослушивает ZNC. В данной конфигурации ZNC может быть определено более одного слушателя, каждый из которых допускает свой протокол. В нашей конфигурации ZNC мы используем настройку двойного слушателя. Stackato может добиться такого многопортового поведения благодаря сервису Harbour, представленному Stackato 2.8 в начале 2013 года. Один слушатель использует порт HTTP (S), назначенный приложению по умолчанию, а другой прослушивает порт, предоставленный службой Harbour. , Затем с помощью директив прослушивателя ZNC AllowWeb и AllowIRC мы можем ограничить тип сетевого трафика для каждого порта.

гавань

Служба Harbor позволяет предоставлять приложениям дополнительные порты. Затем он поддерживает сопоставление этих портов, чтобы трафик можно было передавать и из связанных приложений, подобно маршрутизатору Stackato . Отличительной особенностью Harbour является тип трафика, который он может передавать. Маршрутизатор поддерживает только трафик TCP через HTTP (S). Harbour способен маршрутизировать как TCP, так и UDP трафик с любым протоколом или без него. Значение произвольных битов может быть передано через порт, управляемый Harbour.

Предоставление службы Harbour для нашего приложения ZNC выполняется путем простого включения следующего фрагмента в файл manifest.yml:

applications:
- name: znc
...
services:
  ${name}-port:
    type: harbor
...
${name}-port

Часть `$ {name} -port` присваивает имя этому экземпляру службы Harbor и использует функцию замены ключа (доступна как в manifest.yml, так и stackato.yml) как часть своего синтаксиса. При оценке это соответствует «znc-порту», ​​являющемуся именем предоставленного экземпляра службы Harbour.

С сервисом Harbour связаны два порта: внутренний и внешний порт. Внутренний порт используется приложениями, связывающимися с сервисом напрямую, тогда как внешний порт используется для всех внешних коммуникаций. В нашей конфигурации порт Harbor используется для прослушивания трафика IRC. Это означает, что когда мы подключаемся к IRC-батутеру с помощью клиента, мы указываем внешний порт как часть адреса.

Дополнительную информацию можно найти в документации Harbour, доступной как с точки зрения конечного пользователя, так и с точки зрения администратора .

Использование ZNC

В следующем примере XChat используется в качестве IRC-клиента и предполагается, что ZNC был развернут в http: //znc.stackato-5wtk.local на локальной виртуальной машине Stackato. (вы можете заменить это именем хоста вашего собственного экземпляра ZNC в Stackato).

1. Перейдите по адресу http: //znc.stackato-5wtk.local/, где вы найдете веб-интерфейс.

ZNC

2. Войдите в систему с именем пользователя «admin» и паролем «stackato».

3. Выберите «Ваши настройки» и добавьте новую сеть.

ZNC

Присвойте имя (например, myFreenode) сети и укажите адрес сервера, к которому будет подключаться вышибала IRC. Наш IRC-батут будет подключаться к Freenode для этого примера.

ZNC

Сохраните информацию о сети. Когда вы будете перенаправлены обратно на страницу пользователя, вы увидите добавленную сеть.

ZNC

4. «Редактировать» сеть и добавить новый канал.

ZNC

Укажите канал в сети для подключения (например, #test).

ZNC

5. Откройте XChat и добавьте экземпляр ZNC в качестве новой сети. В этом случае создается сеть с именем «ZNC».

ZNC

Установите сетевой адрес как тот же, на котором запущен экземпляр ZNC, и значение порта в качестве порта внешней гавани. Затем выберите «Подключиться только к выбранному серверу» и снимите флажок «Использовать глобальную информацию о пользователе». Передайте в качестве пароля сервера $ user / $ network: $ password (например, admin / myFreenode: stackato).

Внешний порт и имя хоста доступны приложению через переменные среды и могут быть найдены с помощью веб-консоли или интерфейса командной строки. При использовании командной строки выполните команду `stackato service znc-port`. При использовании веб-консоли перейдите на страницу своего приложения и выберите «Службы», «znc-порт», затем «Учетные данные».

ZNC

6. Подключитесь к сети ZNC. Должен автоматически присоединиться к каналу #test на Freenode

ZNC

7. Отключите ваш клиент от IRC. Подождите немного, пока сообщения будут обмениваться другими. Во время ожидания читайте больше отличных блогов ActiveState . При повторном подключении к IRC-баунсеру отобразится повтор пропущенных сообщений.

ZNC

Вывод

And that’s how you can run ZNC on Stackato. Run your own ZNC IRC Bouncer now by downloading Stackato and never miss the action on IRC again. To learn more about other features specific to ZNC visit their wiki.