XMPP транспорт Вконтакте или VK4XMPP

С начала сентября 2013 года вконтакте полностью отказались от использования xmpp в качестве системы обмена сообщениями. По этому поводу было высказано много мнений, как положительных, так и отрицательных. Однако факт остаётся фактом - обмениваться сообщениями через xmpp (как напрямую, так и через j2j транспорты) стало не возможно.

Но не всё так плохо. Нашелся добрый человек и написал новый транспорт для вконтакта. Его ник mrDoctorWho и сайт http://simpleapps.ru. Работа над транспортом была начата после известий о скором закрытии поддержки xmpp со стороны вконтакта, в августе 2013 года. А уже в начале сентября стала доступна первая пробная версия транспорта. Оригинальный исходный код доступен на GitHub.com, а вот тут находится мой форк транспорта, который периодически объединяется с оригиналом.


У меня нет своего сервера! Что делать?

Первое и основное правило - не паниковать! Если у Вас нет своего сервера - Вы можете воспользоваться публичными транспортами:
• vk.jabberik.ru (транспорт непосредственно от автора)
• vk.virtualtalk.org
• vkontakte.jabberon.ru
• vk.jabber-moscow.ru
• vk.beerseller.org
• vk.jabberid.org
• vk4xmpp.kap.sh
• vk.xmppserv.ru
• vk.jabbik.ru
• vk.helldev.net
• vk.xxo.su
• vk.anakee.ru
• vk.matrixteam.org (English version)

Порядок регистрации весьма прост:
• В меню Вашего любимого xmpp клиента надо найти пункт "Обзор сервисов";
• Ввести один из адресов, указанных выше;
• Заполнить регистрационную форму и нажать "Регистрация".

На форме регистрации хотелось бы остановиться и описать её более подробно.

Авторизация возможна тремя способами:

• По номеру телефона и ссылке из браузера. Рекомендуется именно этот вариант. Для регистрации копируем ссылку из первого поля в адресную строку своего браузера, переходим по ней, разрешаем приложению доступ. После этого копируем полученную ссылку из адресной строки своего браузера в последнее поле формы регистрации. Заполняем поле с номером телефона и нажимаем кнопку регистрации.

• По номеру телефона и паролю. Пароль не сохраняется и используется только один раз - при регистрации. Для регистрации заполняем поля "Номер телефона" и "Пароль", ставим галочку "Получить access-токен автоматически" и нажимаем кнопку регистрации.

• По номеру телефона и access-токену. Указываем номер телефона, в поле "Пароль" пишем access-токен и нажимаем кнопку регистрации.


У меня есть свой сервер и я хочу поднять свой транспорт!

Ничего сложного! Настраиваем:

Скачиваем последнюю версию транспорта:
git clone https://github.com/mrDoctorWho/vk4xmpp.git
либо последнюю версию моего форка:
git clone https://github.com/disabler/vk4xmpp.git

Открываем папку с транспортом и копируем файл конфигурации:
cd vk4xmpp
cp Config_example.txt Config.txt

Редактируем Config.txt Вашим любимым текстовым редактором:
Host = "vk.your_server.tld" # Хост, на котором у Вас будет транспорт
Server = "localhost" # Адрес, к которому будет подключаться транспорт
Port = 5556 # Порт подключения. Для Prosody рекомендуется указать порт 5347
TransportID = "vk.your_server.tld" # ID транспорта. Т.е. фактические это его JID
Password = "******" # Пароль для подключения к серверу
WhiteList = [] # Список серверов, которым разрешена регистрация на Вашем транспорте. Если не заполнять - регистрация будет доступна без ограничений. Если надо ограничить регистрацию, то можно прописать разрешенные сервера вот так ['yourserver1.tld', 'yourserver2.tld', 'yourserver3.tld']
WatcherList = [] # Список JID'ов, которым будут присылаться уведомления о регистрации и её удалении. Формат записи вот такой: ['admin@yourserver1.tld','name@yourserver2.tld']

Остальные настройки не рекомендуется менять. Переходим к настройки xmpp-сервера.

Настройка сервера Prosody:

В файле конфигурации в секции VirtualHost "your_server.tld" прописываем адрес транспорта и его пароль
Component "vk.your_server.tld"
component_secret = "*****"

Перезапускаем сервер или через telnet-shell перезагружаем файл конфигурации.

Настройка сервера Ejabberd:

В файле конфигурации в секции listen добавляем:
{5556, ejabberd_service, [
{ip, {127, 0, 0, 1}},
{access, local},
{shaper_rule, fast},
{hosts, ["vk.your_server.tld"], [{password, "*****"}]}
]},
где прописываем адрес транспорта и его пароль.

Перезапускаем сервер или через панель управления ejabberd перезагружаем файл конфигурации.

Запускаем транспорт:

Делаем первый тестовый запуск транспорта:
python2.7 ./gateway.py
Если в консоли нет ошибок и появился примерно такой текст:
#-# Config loaded successfully.

#-# Connecting: ok.
#-# Auth: ok.
#-# Initializing users..
#-# Connected 2/2 users.

#-# Finished.
значит всё в порядке и транспорт можно переводить в штатный режим работы. Нажимаем ^C и запускаем транспорт по новой:
python2.7 ./gateway.py > /dev/null 2>&1 &

Если транспорт не запустился - внимательно читаем что он написал при этом и исправляем.


На этом, пожалуй всё. Более подробную информацию Вы можете узнать в конференции поддержки транспорта: xmpp:simpleapps@conference.jabber.ru?join

P.S: Добрые люди написали онлайн-утилитку для мониторинга транспортов VK.