Coder Social home page Coder Social logo

mrdoctorwho / vk4xmpp Goto Github PK

View Code? Open in Web Editor NEW
126.0 22.0 25.0 1.79 MB

Jabber-транспорт для ВКонтакте (A jabber gateway to the VK social network)

Home Page: https://vk.com/vk4xmpp

License: MIT License

Makefile 0.41% Python 94.31% HTML 0.24% Ruby 2.52% Shell 0.82% JavaScript 0.89% Perl 0.81%
xmpp jabber python vk vkontakte xhtml gateway gajim psi pidgin conversations transport vcard

vk4xmpp's Introduction

Code Climate

VK4XMPP on Ohloh

Fork Me Now! Spread the project for great good!

Donate:

  • Dogecoin: DEZWbJaCi47cY8ZGLh1oH7QXHx2ntEgp4X

VK4XMPP Transport

VK4XMPP представляет собой транспорт¹. Из VK в XMPP ² и обратно. Написан на языке программирования Python (совместим только со второй версией).

На текущий момент транспорт не развивается. Осуществляется только поддержка существующего решения.

Возможности:

  • Аватары у пользователей (во vCard и при входе в сеть, по стандарту XEP-0153).
  • Long Poll (обо всех событиях пользователь уведомляется незамедлительно).
  • Поддержка групп (меток для друзей ВКонтакте) в ростере.
  • Поддержка конференций (групповых чатов).
  • Отправка изображений в сторону транспорта (XEP-0071: XHTML-IM).
  • Статусы прочтения сообщений (XEP-0333: Chat Markers).
  • Возможность передачи текстового статуса пользователя во ВКонтакте и в Jabber.
  • Вложения в сообщениях (только приём).
  • Пересланные сообщения (и вложения в них).
  • Прием и отправка сообщений.
  • Авторизация по паролю или ключу «access-token», выдаваемому ВКонтакте.
  • Список друзей в ростере.
  • Поддержка vCard для контактов.
  • Добавление в ростер новых, недавно добавленных друзей автоматически (в случае, если пользователь транспорта в это время был в сети, иначе следует вручную запросить подписку id@transport).
  • Статистические данные о работе транспорта.
  • Проверка времени последней активности пользователя.
  • Настройка транспорта пользователем «под себя» посредством AdHoc-команд ³.
  • Отправка изображения капчи по стандарту XEP-0158 (поддерживается в Tkabber).
  • Администрирование посредством AdHoc-команд.
  • Поддержка плагинов.

Отличия от pyvk-t:

  • Транспорт не хранит паролей
  • Транспорт не парсит страницы, а использует API ВКонтакте

Список поддерживаемых XEP:

  • XEP-0012 (Last Activity).
  • XEP-0030 (Service Discovery).
  • XEP-0039 (Statistics Gathering).
  • XEP-0045 (Multi-User Chat).
  • XEP-0050 (Ad-Hoc Commands).
  • XEP-0054 (vcard-temp).
  • XEP-0066 (Out of Band Data).
  • XEP-0071 (XHTML-IM).
  • XEP-0077 (In-Band Registration).
  • XEP-0153 (vCard-Based Avatars).
  • XEP-0085 (Chat State Notifications).
  • XEP-0091 (Legacy Delayed Delivery).
  • XEP-0092 (Software Version).
  • XEP-0100 (Gateway Interaction).
  • XEP-0158 (CAPTCHA Forms).
  • XEP-0184 (Message Delivery Receipts).
  • XEP-0199 (XMPP Ping).
  • XEP-0333 (Chat Markers).

Почему VK4XMPP:

В конце 2013 года администрация «ВКонтакте» приняла решение отказаться от официальной поддержки протокола XMPP. Это событие было воспринято пользователями по-разному. Тем, кто уже был знаком с XMPP, его возможностями и удобством некоторых клиентов, это не понравилось.

«VK4XMPP», подоспевший прямо к остановке XMPP-сервера «ВКонтакте», выполнявшего роль пересылки сообщений из/в социальную сеть, был тепло принят бывшими пользователями официального сервиса. С самого момента первого релиза транспорт предоставлял намного больше возможностей, чем бывший официальный вариант.

Причины попробовать VK4XMPP:

  • Удобство: чтобы использовать VK4XMPP вам нужен XMPP-клиент и jabber-аккаунт. Клиентов очень много и все разные. Любой найдёт что-то, что ему понравится.
  • Скорость работы: VK4XMPP использует прямые HTTP-запросы к API «ВКонтакте», которые, в основном, не превышают и килобайта.
  • Экономия трафика: Несмотря на большой расход трафика на присутствия в XMPP, ваш XMPP-клиент передаст в десятки раз меньше данных, нежели браузер.
  • Экономия оперативной памяти устройства: Вы когда-нибудь задумывались, сколько памяти «съедает» браузер? Посмотрите. А теперь посмотрите на XMPP-клиент. Браузер — гораздо более сложная программа, чем XMPP-клиент. Оставьте чаты специализированному софту.
  • Вы параноик: Вы видите опасность раскрытия личных данных везде и всюду, но всё же пользуетесь социальной сетью (вероятно, под другим именем, ведь вы параноик). Что, по-вашему, безопаснее? Простой XMPP-клиент или же браузер? Помимо этого вы можете пропускать зашифрованные сообщения через jabber и сервера ВКонтакте с использованием OTR. Поддержка OTR не требуется от транспорта. Для этого вам и вашему собеседнику нужен клиент с поддержкой OTR, например, Psi+ или Gajim.

Причины сбежать в ужасе:

  • Сложная форма регистрации: Как ни крути, а регистрация (при условии наличия Jabber ID) на транспорте состоит аж из 3-х пунктов! Вы потратите целую минуту на регистрацию, а может даже две!
  • Отсутствие некоторых возможностей: К сожалению, не всё можно реализовать в текущем варианте XMPP и состоянии XMPP-клиентов. Так например, вы не сможете переслать сообщения другу от другого пользователя. И это не всё.
  • Вы параноик: Бегите и не возвращайтесь. Никогда.

Как вы можете помочь:

  1. Вы — программист. Каждая функция vk4xmpp содержит строки документации. Также есть пример написания плагина, описывающий все возможности системы плагинов. При желании, написать что-то не составит труда. Pull-request'ы приветствуются.

  2. Вы — активный пользователь социальной сети «ВКонтакте» или Jabber, которому просто нравится транспорт. Приглашайте своих друзей попробовать VK4XMPP!

  3. Вы — пользователь, которому просто нравится проект и/или определённый запущенный сервис. Транспорты, впрочем как и сервера (в основном), запущены энтузиастами на некоммерческой основе, люди оплачивают их из своего кармана. Сделайте пожертвование своему серверу! (администраторам: в файле конфигурации для этого есть поле AdditionalAbout)

Список серверов, где установлен VK4XMPP:

  • vk.j-cool.ru
  • vk.opiums.eu
  • vk.yorulez.ru

Полный список можно посмотреть здесь.

Благодарности:

  • Алексею «Snake» Нежданову, за библиотеку xmpppy.
  • Алексею «Alexey CV», бывшему администратору jabberon.ru, за donate, продвижение посредством создания тем на 4pda, содание FAQ, написание большинства инструкций и тестирование.
  • Al Korgun, за помощь с кодом.
  • Armageddon, за сервера, тестирование, идеи и, конечно же, donate.
  • boriz, за donate.
  • diSabler, за патчи, форму капчи, логотип, donate.
  • Manazius, за инструкции, общение со смертными.
  • nsof, за donate, идеи, тестирование.
  • Santiago26 за тестирование ранних релизов, статью на Хабре.
  • aawray, за (xmpp-monitor).

А также всем, кто как-либо участвовал в жизни транспорта. Без вас не было бы транспорта таким, какой он есть.

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

Установка (для серверов):

Настройка jabber-серверов:

Регистрация:

Часть инструкций была безнадёжно утеряна. Не стесняйтесь сообщить, если напишете или найдёте недостающую.

Обсуждения:

Другое:

Также рекомендуется заглянуть в Wiki.

Запуск: python ./gateway.py

Обратиться к разработчику в сети jabber можно в конференции [email protected].

WTF:

  1. Транспорт — Программное Обеспечение, обеспечивающее связь между различными протоколами мгновенного обмена сообщениями. Распространены в XMPP (Jabber).

  2. XMPP (Jabber) — Расширяемый протокол мгновенного обмена сообщениями (Wikipedia/XMPP).

  3. К сожалению, нет нормальной инструкции; см. JabberON/AdHoc и JaWiki/AdHoc.

© simpleApps, 2013 — 2017.

vk4xmpp's People

Contributors

alexeycv avatar alkorgun avatar banonotit avatar disabler avatar eg-astrouka avatar highwaystar avatar l29ah avatar manazius avatar mrdoctorwho avatar opiums9 avatar orhideous avatar shizeeg avatar unclev avatar vitlav avatar yorulez avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

vk4xmpp's Issues

Обновление подключённых контактов

Добрый вечер.

Такая проблема: сразу после ПЕРВОГО подключения, загружаются в ростер все контакты и становятся видимыми те, что на тот момент в онлайне. Если вывести джаббер в оффлайн и подключиться снова, то онлайн контакты не отображаются как онлайн. Как будто никого нет в сети.
Ситуация меняется, когда я получаю от кого-то сообщение - человек становится видим как в сети.
Можно что-то с этим сделать? В остальном на первый взгляд работает замечательно. Спасибо большое.

Не видно контакты в сети

Не уверен, как лучше правильно это описать и стоит ли вообще, ибо это бета, но пускай будет, правда ведь? )

Вот только что пришёл запрос на подтверждение капчи. Подтвердил успешно. Но в контактах висит только бот. Моих контактов в сети не видно. Что делать?
Можно ли ввести какую-нибудь команду для принудительного обновления текущей инфы о контактах?

Заменить library.zip на requirements.txt

pip freeze > requirements.txt
Потом люди могут просто сделать pip install -r requiremets.txt и всё.
К тому же хранение бинарных файлов в GIT не кошерно.

Сообщения путаются местами

Насколько я понял, есть небольшая задержка в проходе сообщений через транспорт. Ну и, собсна, сообщеньки перепутываются. Это решаемо вообще или смириться? Или может у меня клиенты кривые были?(юзал mcabber, pidgin, empathy).

В чат отправляется какой-то мусор с моего аккуанта

Периодически с моего аккуанта в групповой чат отправляется какой-то мусор: какие-то бессмысленные сообщения (я здесь, меня видно?, кто тут?, эта комната не анонимная,и т.д.), наборы смайлов и ещё каких-то символов.

Используемый сервер vk.jabberik.ru

PEP8

W191 indentation contains tabs
E501 line too long (X > 79 characters)
E223 tab before operator

Примутся ли чисто рефакторинговые пулл-реквесты, чтобы код больше соответствовал стандартам?
Открыв код в pycharm, мой монитор стал настолько желтым, что у меня в комнате поднялась температура :)

Конкретнее:
Заменить все табы на пробелы из 4 символов
Сократить длину строк до 79 символов
More and more

Improvements & bugs

Есть предложения и замечания по транспорту.
Предложения следующие:

  1. Более полный vCard, если это возможно (хотя бы день рождения туда еще включить)
  2. Статусы для контактов брать с ВК
  3. Возможно стоит кешировать фото, для уменьшения нагрузки на сеть и соответственно для ускорения работы

Замечания:

  1. Во многих случаях вместо смайлов приходят квадраты
  2. Иногда после завершения пользовательской сессии, контакт находится в сети порядка несколько часов
  3. После ввода капчи не всегда сразу появляется список контактов. Приходится отключать\подключать транспорт и тогда все приходит

Service doesn't reconnect to server when server restarts

When jabber server restarts vk4xmpp begins to flood messages "#! fixme: "main.Disconnect".". Is it possible to make it auto reconnect when server goes up? It is rather inconvenient when you reconfigure server to restart vk4xmpp manually. And also it is required to restart it manually when ejabber suddenly falls.

Thanks.

Несовпадение капчи

Добрый день.
Изредка приходит запрос подтверждения капчи, раз пятьдесят пробовал - бесполезно.

"WARNING: VK sent captcha to you.Please, go to http://api.vk.com/captcha.php?sid=ХХХХХХХХХХХХ and enter text from image to chat.Example: !captcha my_captcha_key. Tnx
Captcha invalid."

Ввожу так: !captcha код-с-картинки.
Для чего это вообще нужно? Чем грозит не-ввод капчи?

Спасибо.

Некорректно работает регистрация

Здравствуйте!
Столкнулся с некоторыми проблемами при настройке транспорта. Подключил транспорт, в списке сервисов сервера он виден.
После получения токена и ввода его и телефона в форму регистрации - ничего не происходит, но судя по логам - возникает ошибка.

Server: ejabberd 2.1.10-4+deb7u1
Client: psi 0.14
vk4xmpp: 173

gateway.log

-# Config loaded successfully.

-# Connecting: ok.

-# Auth: ok.

-# Initializing users.#-# Config loaded successfully.

-# Killing old transport instance:

-# Connecting: ok.

-# Auth: ok.

-# Initializing users

vk4xmpp.log

[14.07.2014 05:06:57]:DEBUG:vk4xmpp Sending register form to [email protected]
[14.07.2014 05:07:07]:DEBUG:vk4xmpp user [email protected] won't use password
[14.07.2014 05:07:07]:DEBUG:vk4xmpp VKLogin.init with number:+ТУТ_БЫЛ_НОМЕР_ТЕЛЕФОНА from jid:[email protected]
[14.07.2014 05:07:07]:DEBUG:vk4xmpp initializing User for [email protected]
[14.07.2014 05:07:07]:DEBUG:vk4xmpp User: [email protected] exists in db. Have to use it.
[14.07.2014 05:07:07]:DEBUG:vk4xmpp User: connecting [email protected]
[14.07.2014 05:07:07]:DEBUG:vk4xmpp VKLogin.auth with token
[14.07.2014 05:07:07]:DEBUG:vk4xmpp VKLogin: checking data for [email protected]
[14.07.2014 05:07:07]:DEBUG:vk4xmpp VKLogin.checkData: trying to use token
[14.07.2014 05:07:07]:DEBUG:vk4xmpp VKLogin.auth completed
[14.07.2014 05:07:07]:DEBUG:vk4xmpp longpoll: requesting server address for user: [email protected]
[14.07.2014 05:07:07]:DEBUG:vk4xmpp longpoll: server: http://im69v4.vk.com/im2378 ts: 1828470938
[14.07.2014 05:07:07]:DEBUG:vk4xmpp User: auth=True for [email protected]
[14.07.2014 05:07:07]:DEBUG:vk4xmpp User: updating db for [email protected] because auth done
[14.07.2014 05:07:08]:CRITICAL:vk4xmpp DISCONNECTED
[14.07.2014 05:07:08]:ERROR:vk4xmpp writing crashlog Component.iter
[14.07.2014 05:07:08]:ERROR:vk4xmpp writing crashlog main.disconnect
[14.07.2014 05:07:08]:ERROR:vk4xmpp writing crashlog main.disconnect

crash/Component.iter.txt

| 14.07.2014 (05:07:08) |
Traceback (most recent call last):
File "/usr/share/vk4xmpp/gateway.py", line 885, in
Component.iter(6)
File "library/xmpp/dispatcher.py", line 175, in Process
deferredRaise(self._pendingExceptions.pop())
File "library/xmpp/dispatcher.py", line 402, in dispatch
handler["func"](session, stanza)
File "handlers/IQ.py", line 25, in iqHandler
iqRegisterHandler(cl, iq)
File "handlers/IQ.py", line 130, in iqRegisterHandler
if not user.connect():
File "/usr/share/vk4xmpp/gateway.py", line 412, in connect
if not UseLastMessageID:
NameError: global name 'UseLastMessageID' is not defined

оповещение о наборе сообщения

возможно ли сделать оповещение о наборе сообщения другого человека когда я набираю и наоборот?
кроме того, вероятно, есть смысл помечать сообщения прочитанными на сервере вк только после того, как я начал набирать ответ или ответил (как было в официальном xmpp вконтакте)?

конфиги для supervisor'а

Транспорт можно запускать через supervisor, некоторым это будет удобней, чем init.d-скрипт.

Добавлю конфиги в форк ASAP.

Картинки, аудио и т.п. в диалогах

возможно ли добавить поддержку картинок, аудиозаписей, пересланных сообщений и т.п.? Сейчас они вообще не отображаются.

Картинки можно превращать в ссылки на эти картинки; аудиозаписи и пересланные сообщения в ссылки на сообщения типа vk.com/mail?act=show&id=цифры

Обработка вложений в сообщения.

Понятно дело что это не баг а фич-реквест...
Собственно я не предлагаю естественно слать музыку, видео и картинки напрямую...
Для картинок предлагаю присылать URL на страницу с картинкой и на полную картинку.
Для видео и аудио хотя бы уведомление(в XMPP от вК бесило что тебе прислали что то а ты даже не знаешь об этом), или тоже ссылку, если API это позволяет.

python 3

По той же причине, что и PEP8 - пока не поздно, нужно вводить поддержку.

related: #34

Service файл для systemd

[Unit]                                                                                                                  
Description=VK4XMPP is an Vk.com transport for Jabber/XMPP

[Service]                                                                                                             
Type=simple                                                                                                       
PIDFile=/usr/share/vk4xmpp/pidFile.txt
ExecStart=/usr/bin/python /usr/share/vk4xmpp/gateway.py
User=nobody
Group=nobody                                                                                 
                   
[Install]     
WantedBy=multi-user.target 

XEP-0321: Roster Management

Предназначено для того, чтобы все контакты автоматически появились в ростере, без участия со стороны пользователя, равно как и удалились из него; а так же для удаления контактов на стороне vk.com (не знаю правда, позволяет ли это их api).
Поддерживается:

Пурга с запросами на разрешение, описанная в данном XEP - не нужна, во всех трех реализациях подразумевается, что клиент(в данном случае транспорт) проверяет запросом jabber:iq:roster возможность управлять ростером, а дальше управляет им как обычный клиент - см. примеры 4.2-4.4.

Десятикратное увеличение расхода памяти

За 4 дня на одном из серверов расход оперативной памяти транспортом вырос с 25МБ до 258МБ. При этом был замечен аномальный рост списка TransportsList, что вызвало запуск огромного количества лишних потоков.

XEP-0039: Statistics Gathering

Знаю, что этот XEP официально не рекомендуется к реализации, но всё-таки он всё равно достаточно популярен, и, к тому же, реализован в любом Jabber-боте :)

Хотелось бы иметь возможность запрашивать статистику транспорта — число зарегистрированных, число онлайнов, число переданных сообщений и так далее. Плюс сделать возможность посмотреть эту статистику через команду Ah-Hoc, т/к большинство клиентов не умеют запрашивать статистику именно по этому херу.

Сообщения в лог пишутся каждую секунду.

И лог очень быстро становится очень большим.
triklozoid ~/vk4xmpp $ ls -lah vk4xmpp.log
-rw-rw-r-- 1 triklozoid triklozoid 16G сент. 18 14:35 vk4xmpp.log

triklozoid ~/vk4xmpp $ tail -n 100000 vk4xmpp.log |sed 's/.*]://'|uniq -c
99999 ERROR:vk4xmpp writing crashlog main.Disconnect

Кажется одного сообщения было бы достаточно.
А вообще штука крутая, спасибо.

Дублирующийся пользователь в групчатах

В списке пользователей в конференции дублируется текущий пользователь: в списке есть тот никнейм, с которым зашел в конференцию + есть собственно вконтактовский пользователь. Сообщения отсылаются от имени пользователя в конференции, но при этом в веб-интерфейсе VK видны как сообщения VK-пользователя. При этом зайти с никнеймом VK-пользователя нельзя. На скриншоте мой пользователь в 2 экземплярах: malcoriel и Валерий Кузьмин.

vk4xmpp issue

Используемый софт:
Miranda NG Version: 0.94.5 #6300
jabber.dll v.0.11.0.3 [2 Oct 2013 16:44:28]
ejabberd: 2.1.10-2ubuntu1.1
vk4xmpp: 1a31561

Как этим пользоваться?

Думаю этим вопросом задаюсь не только я. Вот есть Pidgin, вот есть ваш транспорт, вот есть НеПрограммист. "И че?" Задаст логичный вопрос не обремененный багажом знаний в части транспортов и протоколов НеПрограммист.
В общем есть вот такая просьба - совет приготовьте пошаговую инструкцию по использованию этого в Pidgin, qutIM, в общем в человеческих условиях.

Тесты

#21 #39 и, возможно, #39 (если допилят 3 версию языка) могут потребовать

довольно обширного рефакторинга.

Предлагается ввести модульные тесты хотя бы для gateway.py, заменив джабберо-зависимые обьекты на Mock'и, если это вообще возможно.

Поправить групповые чаты

На текущий момент vk4xmpp справляется с задачей создания конференций и поддержания их активности. В дальнейшем строго рекомендуется проверять наличие активности и удалять по истечении указанного времени.

Транспорт падает при запуске

Падает при запуске, ранее падал при получении сообщения в групповом чате или запросе формы регистраци. Последняя версия из Git, ветка master.

vk4xmpp.log:
[03.09.2014 09:51:51]:ERROR:vk4xmpp vkapi: ujson couldn't be loaded, using simplejson instead
[03.09.2014 09:51:51]:INFO:vk4xmpp main: add "TimeAndRelativeDimensionInSpace" to handle type msg01
[03.09.2014 09:51:51]:INFO:vk4xmpp main: add "parseAttachments" to handle type msg01
[03.09.2014 09:51:51]:INFO:vk4xmpp main: add "statusChange" to handle type prs01
[03.09.2014 09:51:51]:INFO:vk4xmpp main: add "parseForwardedMessages" to handle type msg01
[03.09.2014 09:51:51]:DEBUG:vk4xmpp extension groupchats is loaded
[03.09.2014 09:51:51]:INFO:vk4xmpp main: add "outgoungChatMessageHandler" to handle type msg01
[03.09.2014 09:51:51]:INFO:vk4xmpp main: add "incomingChatMessageHandler" to handle type msg02
[03.09.2014 09:51:51]:INFO:vk4xmpp main: add "exterminateChat" to handle type evt03
[03.09.2014 09:51:51]:INFO:vk4xmpp main: add "captchaSend" to handle type evt04
[03.09.2014 09:51:54]:DEBUG:vk4xmpp User not in the transport, but presence received. Searching in database (jid: [email protected])
[03.09.2014 09:51:54]:DEBUG:vk4xmpp User has been found in database (jid: [email protected])
[03.09.2014 09:51:54]:DEBUG:vk4xmpp VK.init with number:+7********** from jid:[email protected]
[03.09.2014 09:51:54]:DEBUG:vk4xmpp initializing User (jid: [email protected])
[03.09.2014 09:51:54]:DEBUG:vk4xmpp User exists in database. Using his information (jid: [email protected])
[03.09.2014 09:51:54]:DEBUG:vk4xmpp User: connecting (jid: [email protected])
[03.09.2014 09:51:54]:DEBUG:vk4xmpp VK.auth with token
[03.09.2014 09:51:54]:DEBUG:vk4xmpp VK: checking data (jid: [email protected])
[03.09.2014 09:51:54]:DEBUG:vk4xmpp VK.checkData: trying to use token
[03.09.2014 09:51:54]:DEBUG:vk4xmpp VK.auth completed
[03.09.2014 09:51:54]:DEBUG:vk4xmpp longpoll: requesting server address (jid: [email protected])
[03.09.2014 09:51:54]:DEBUG:vk4xmpp User: auth=True (jid: [email protected])
[03.09.2014 09:51:54]:DEBUG:vk4xmpp User: updating database because auth done (jid: [email protected])
[03.09.2014 09:51:54]:DEBUG:vk4xmpp longpoll: server: http://im56v6.vk.com/im1815
[03.09.2014 09:51:55]:DEBUG:vk4xmpp User: called init for user [email protected]
[03.09.2014 09:51:55]:DEBUG:vk4xmpp User: sending init presence (friends exists) (jid [email protected])
[03.09.2014 09:51:55]:DEBUG:vk4xmpp groupchats: creating 445815_chat#[email protected]. Users: 264748766,264749935; owner: 445815
[03.09.2014 09:51:56]:CRITICAL:vk4xmpp disconnected
[03.09.2014 09:51:56]:ERROR:vk4xmpp write crashlog component.iter
[03.09.2014 09:51:56]:ERROR:vk4xmpp write crashlog main.disconnect
[03.09.2014 09:51:56]:DEBUG:vk4xmpp groupchats: user has been invited to chat 445815_chat#[email protected] (jid: [email protected])
[03.09.2014 09:51:56]:ERROR:vk4xmpp write crashlog main.disconnect

gateway.log:

-# Config loaded successfully.

-# Killing old transport instance: 6317 killed.

-# Connecting: ok.

-# Auth: ok.

-# Initializing users.

-# Finished.

! [09:51:56] fixme: "component.iter".

! [09:51:56] fixme: "main.disconnect".

Traceback (most recent call last):
File "/home/xtransport/vk4xmpp/gateway.py", line 1262, in
disconnectHandler(True)
File "/home/xtransport/vk4xmpp/gateway.py", line 1206, in disconnectHandler
Component.disconnect()
File "library/xmpp/dispatcher.py", line 484, in disconnect
while self.Process(1):
File "library/xmpp/dispatcher.py", line 175, in Process
deferredRaise(self._pendingExceptions.pop())
File "library/xmpp/dispatcher.py", line 402, in dispatch
handler["func"](session, stanza)
File "modules/mod_iq_main.py", line 12, in main_handler
Sender(cl, utils.buildIQError(iq, xmpp.ERR_BAD_REQUEST, "You're not in the white-list"))
NameError: global name 'Sender' is not defined

! [09:51:56] fixme: "main.disconnect".

Captcha

Пользуюсь IM клиентом Empathy, подключаюсь к серверу vk.jabberik.ru.
Часто на сторону адресата сообщения от меня приходят сообщения такого вида, которые сам не вижу в клиенте, или до тех пор пока не зайду в ВК сообщения:

Внимание, системное сообщение!
Спамооборона классифицировала Ваше сообщение как спам. Если это ошибка, пожалуйста, перейдите по ссылке и выполните инструкции, описанные на открывшейся странице.
http://online.yandex.ru/captcha.xml?u=*****..

Транспорт «теряет» сообщения

В моменты, когда сообщение от собеседника ВК пришло на долю секунды позже, чем сообщение от пользователя, сообщение успевает стать прочитанным (согласно новой политике чтения сообщений во ВК), в связи с чем транспорт не отсылает сообщение пользователю.

XEP-0060: PubSub для сообщений в группах / на стеночках

К рассмотрению, один из крутейших вариантов для получения обновлений, как из новостной ленты, так и со стенок (личные, группы). Конечно, тут везде опять появляется polling.

Вообще, вконтакте имеет всё подспорье для интеграции с xmpp, да если бы там ещё и pubsub был бы родной, без костылей.

Startup issue

Проблема при запуске транспорта:

Traceback (most recent call last):
File "./gateway.py", line 89, in
GATEWAY_REV = gateway_rev()
File "./gateway.py", line 87, in gateway_rev
return 'rev.%s-%s' % (len(rev),rev[0])
IndexError: list index out of range

Транспорт хочет получить номер ревизии бота, но так как директория с ботом не под контролем версий, соответственно ее не получает. И падает при обработке данных.

Далеко не всегда на сервере установлен git или же папка с установленным приложением находится под контролем версий.

long-polling for messages

доки:

https://vk.com/pages?oid=-1&p=%D0%9F%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BA_LongPoll_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D1%83

позволит обновлять только то, что надо и вовремя, реализуется через запуск дополнительного thread-а для каждого клиента в онлайне, в котором и выполняется сначала получение информации о сервере, а затем его опрос.
Вроде GIL не возникает, надо проверить еще.

SyntaxError: invalid syntax

Спасибо за возможность, но пока не получилось попробовать…
Пробовал установить на локалхосте в своём арче.
Prosody настроил, vk4xmpp скачал.
Но при запуске выдает вот что:

/usr/share/vk4xmpp$ python gateway.py
  File "gateway.py", line 19
    print "#! Incorrect launch!"
                               ^
SyntaxError: invalid syntax

Попробовал пакет из аур, но разницы нет.

Транспорт vk2xmpp

Нужно переименовать приложение вконтакте.
Там название приложения "Транспорт vk2xmpp"
Но ВЕЗДЕ название проекта используется vk4xmpp, поэтому приложение должно называться Транспорт vk4xmpp
"дико рвёт шаблон в мозгу"

"Ошибка сегментирования" на ветке testing

$ python2.7 gateway.py 

#-# Config loaded successfully.
#-# Killing old transport instance: 8509 killed.

#-# Connecting: ok.
#-# Auth: ok.
#-# Initializing users.
#-# Finished.
Ошибка сегментирования

На ветке master аналогичная команда запускает транспорт без ошибок.

$ python2.7 --version
Python 2.7.6

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

При попытке зарегистрироваться на транспорте, он присылает регистрационный , содержащий форму для заполнения регистрационными данными.
Тип данных указан неверно: вместо "form" указан "submit".
В результате на клиентах, которые работают корректно, не удаётся зарегистрироваться. Например, Vacuum-IM отображает пустую форму. Зарегистрироваться получается только на косячных клиентах (типа QiP), которые игнорируют тип получаемых данных.

Не приходят некоторые сообщения

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.