Giter Club home page Giter Club logo

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

"Ошибка сегментирования" на ветке 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

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

И лог очень быстро становится очень большим.
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

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

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

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.

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

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

Тесты

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

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

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

Improvements & bugs

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

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

Замечания:

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

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

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

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

PEP8

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

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

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

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

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

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

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

XEP-0039: Statistics Gathering

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Падает при запуске, ранее падал при получении сообщения в групповом чате или запросе формы регистраци. Последняя версия из 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=*****..

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

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

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

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

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

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

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

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

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

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

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

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

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

"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 код-с-картинки.
Для чего это вообще нужно? Чем грозит не-ввод капчи?

Спасибо.

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

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

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

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

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

python 3

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

related: #34

XEP-0321: Roster Management

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

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

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 или же папка с установленным приложением находится под контролем версий.

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 

Транспорт vk2xmpp

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

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.