diff options
author | mrDoctorWho <mrdoctorwho@gmail.com> | 2014-07-14 14:40:26 +0400 |
---|---|---|
committer | mrDoctorWho <mrdoctorwho@gmail.com> | 2014-07-14 14:40:26 +0400 |
commit | 863a34ebcecd7af82c98b3bfa4d669c13d1abe41 (patch) | |
tree | bed82ae1e779b9112351f6e4aa7029cf5f0f1b03 | |
parent | 2bd4b47d81d7ebab817351615b14d2ad88a785c4 (diff) |
Fixed #63.174
Readme update
Config update
-rw-r--r-- | Config_example.txt | 24 | ||||
-rw-r--r-- | README.md | 61 | ||||
-rw-r--r-- | gateway.py | 20 | ||||
-rw-r--r-- | library/writer.py | 2 |
4 files changed, 56 insertions, 51 deletions
diff --git a/Config_example.txt b/Config_example.txt index 1cf960f..0ccb955 100644 --- a/Config_example.txt +++ b/Config_example.txt @@ -15,7 +15,7 @@ Port = 5556 ## Transport ID (Controls all) TransportID = "vk.example.com" -## Connection password. +## Connection password Password = "secret" ## Language (ru/en/pl) @@ -24,19 +24,18 @@ DefLang = "ru" ## Photo size (photo_50, photo_100, photo_200_orig) PhotoSize = "photo_100" -## White list. Put here servers which you want allow to access transport. F.e.: ['yourserver1.tld','yourserver2.tld'] -## Save it as [] if you won't block any servers. +## White list. Put here servers which you want allow to access the transport. F.e.: ['yourserver1.tld','yourserver2.tld'] +## Leave it as is if you won't block any servers. WhiteList = [] -## Watcher list. Put here jid(s) of transport admin for notifications of registration. F.e.: ['admin@yourserver1.tld','name@yourserver2.tld'] -## Save it as [] if you won't watch any registration. +## Watcher list. Put here jid(s) of transport's admin to receive notifications about registrations. F.e.: ['admin@yourserver1.tld','name@yourserver2.tld'] +## Leave it as is if you won't receive anything. WatcherList = [] -# Additional about text. It was shown after main about text in transports vcard. +# Additional description. It will be shown after "about" text in transport's vcard. AdditionalAbout = "" # Conference server. Don't change if you won't allow your users to use groupchats (depends on jabber-server's MUC) -# It's an alpha! Testers are welcome, but don't use it everytime! # F.e. conference.example.com ConferenceServer = "" @@ -48,17 +47,14 @@ allowBePublic = True USER_LIMIT = 0 #! Danger zone. -#! Edit settings below ONLY IF YOU KNOW WHAT ARE YOU DOING! DEFAULT VALUES ARE RECOMMENTED! -## Thread stack size (WARNING: MAY CAUSE TRANSPORT CRASH WITH SEGMENTATION FAULT ERROR) -## It's needed for optimize memory consuming. +#! Change settings below ONLY IF YOU KNOW WHAT ARE YOU DOING! DEFAULT VALUES ARE RECOMMENDED! +## Thread stack size (WARNING: THIS MAY CAUSE TRANSPORT CRASH WITH SEGMENTATION FAULT ERROR) +## You may need it to optimize memory consuming. ## minimum value is 32768 bytes (32kb) THREAD_STACK_SIZE = 0 ## Maximum forwarded messages depth. -MAXIMUM_FORWARD_DEPTH = 5 - -## Users per thread. -SLICE_STEP = 8 +MAXIMUM_FORWARD_DEPTH = 20 ## Image that will be used if transport can't recieve image from VK. URL_VCARD_NO_IMAGE = "http://simpleapps.ru/vk4xmpp.png" @@ -3,44 +3,55 @@ VK4XMPP Transport VK4XMPP представляет собой легковесный транспорт. Из VK в XMPP и обратно. -Написан на языке программирования Python, все используемые библиотеки содержит в себе. -**Требует Python 2.7.** +Написан на языке программирования Python, все используемые библиотеки содержит в себе. + +**Транспорт требует Python 2.7+**. -Установка стандартна как и для любого другого транспорта. Только вот переименуйте Config_example.txt в Config.txt и заполните его. -На время тестирования рекомендуется заглядывать в папку транспорта и сообщать разработчику об ошибках (тела ошибок хранятся в папке crash). **Возможности**: -* Прием и отправка сообщений; -* Авторизация по паролю или ключу «access-token», выдаваемому ВКонтакте; -* Пересланные сообщения; -* Вложения в сообщениях (только приём); -* Список друзей в ростере; -* Поддержка vCard для контактов; -* Поддержка конференций (групповых чатов, тестовая, не рекомендуется к использованию); -* Добавление в ростер новых, недавно добавленных друзей автоматически (в случае, если пользователь транспорта в это время был в сети, иначе следует вручную запросить подписку id@transport); -* Статистические данные о работе транспорта; -* Отправка изображений по стандарту XHTML-IM в сторону транспорта. +* Прием и отправка сообщений +* Авторизация по паролю или ключу «access-token», выдаваемому ВКонтакте +* Пересланные сообщения +* Вложения в сообщениях (только приём) +* Список друзей в ростере +* Поддержка vCard для контактов +* Поддержка конференций (групповых чатов, тестовая, не рекомендуется к использованию) +* Добавление в ростер новых, недавно добавленных друзей автоматически (в случае, если пользователь транспорта в это время был в сети, иначе следует вручную запросить подписку id@transport) +* Статистические данные о работе транспорта +* Отправка изображений по стандарту XHTML-IM в сторону транспорта +* Проверка времени последней активности пользователя **Отличия от pyvk-t**: -* Транспорт не хранит паролей; -* Транспорт не парсит страницы, а использует API ВКонтакте; +* Транспорт не хранит паролей +* Транспорт не парсит страницы, а использует API ВКонтакте + +**Список поддерживаемых XEP**: +* XEP-0012 (Last Activity) +* XEP-0030 (Service Discovery) +* XEP-0039 (Statistics Gathering) +* XEP-0054 (vcard-temp) +* XEP-0071 (XHTML-IM) +* XEP-0077 (In-Band Registration) +* 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) **Список серверов, где уже установлен транспорт VK4XMPP**: * vk.jabberik.ru -* vk.isida-bot.com * 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.matrixteam.org (English version) * vk.helldev.net -* vk.xxo.su -* vk.anakee.ru -* vk.nixman.info + +Полный список можно посмотреть [здесь](http://xmppserv.ru/xmpp-monitor). **Отдельное «спасибо»**: @@ -59,20 +70,20 @@ VK4XMPP представляет собой легковесный трансп Установка (для серверов): [Arch](https://github.com/mrDoctorWho/vk4xmpp/wiki/Установка-на-ArchLinux-с-Prosody) | [Ubuntu/Debian/etc](https://github.com/mrDoctorWho/vk4xmpp/wiki/Установка-(только-для-серверов)) | [Gentoo](http://blog.stv-fian.ru/?p=375) -Настройка jabber-серверов: [Ejabberd](https://github.com/mrDoctorWho/vk4xmpp/wiki/Установка-(только-для-серверов)) | [Ejabberd (2)](http://nixman.info/?p=2315) | [Prosody](https://github.com/mrDoctorWho/vk4xmpp/wiki/Установка-VK4XMPP-на-Prosody) | [Openfire](http://ky0uraku.livejournal.com/79921.html) | [Generic](http://dsy.name/?q=vk4xmpp) +Настройка jabber-серверов: [Ejabberd](https://github.com/mrDoctorWho/vk4xmpp/wiki/Установка-(только-для-серверов)) | [Ejabberd (2)](http://nixman.info/?p=2315) | [Prosody](https://github.com/mrDoctorWho/vk4xmpp/wiki/Установка-VK4XMPP-на-Prosody) | [Openfire](http://ky0uraku.livejournal.com/79921.html) | [Generic](http://dsy.name/?q=vk4xmpp) Регистрация: [Psi+](http://is.gd/ujPeZ8) | [Tkabber](http://dsy.name/?q=vk4xmpp) | [Gajim](http://xmppserv.ru/gajim/) | [Miranda](http://is.gd/q8ZfFP) | [QIP](http://is.gd/eLAt27) | [jTalk](http://is.gd/XkkdIl) | [Jimm](http://xmppserv.ru/jimm/) | [JasmineIM](http://xmppserv.ru/jasmine/) | [Pidgin](http://xmppserv.ru/pidgin/) | [VacuumIM](http://xmppserv.ru/vacuum/) | [Kopete](http://xmppserv.ru/kopete/) Обсуждения: [На 4pda](http://is.gd/t10ZIc) | [На форуме Ubuntu](http://forum.ubuntu.ru/index.php?topic=230041) | [На форуме Debian](http://debianforum.ru/index.php?topic=6037) -Другое: [FAQ](http://is.gd/zgOMp9) | [Отзывы и предложения](http://vk4xmpp.userecho.com) | [Страница на JaWiki](http://jawiki.ru/Vk4xmpp) | [Группа во ВКонтакте](https://vk.com/vk4xmpp) +Другое: [FAQ](http://is.gd/zgOMp9) | [Отзывы и предложения](http://vk4xmpp.userecho.com) | [Страница на JaWiki](http://jawiki.ru/Vk4xmpp) | [Группа во ВКонтакте](https://vk.com/vk4xmpp) Также рекомендуется заглянуть в [Wiki](https://github.com/mrDoctorWho/vk4xmpp/wiki/). Запуск: python ./gateway.py -Обратиться к разработчику в сети xmpp можно в конференции [simpleapps@conference.jabber.ru](xmpp:simpleapps@conference.jabber.ru?join). +Обратиться к разработчику в сети jabber можно в конференции [simpleapps@conference.jabber.ru](xmpp:simpleapps@conference.jabber.ru?join). @@ -55,7 +55,8 @@ TransportFeatures = [xmpp.NS_DISCO_ITEMS, xmpp.NS_PING, xmpp.NS_LAST] -UserFeatures = [xmpp.NS_CHATSTATES] +UserFeatures = [xmpp.NS_CHATSTATES, + xmpp.NS_LAST] IDentifier = {"type": "vk", "category": "gateway", @@ -231,7 +232,7 @@ class VKLogin(object): logger.error("VKLogin.auth failed with error %s" % e.message) return False except Exception: - crashLog("VKLogin.auth") + crashLog("vklogin.auth") return False logger.debug("VKLogin.auth completed") self.Online = True @@ -344,7 +345,7 @@ class User(object): self.friends = {} self.auth = None self.token = None - self.lastMsgID = None + self.lastMsgID = 0 self.rosterSet = None self.existsInDB = None self.last_udate = time.time() @@ -360,7 +361,7 @@ class User(object): desc = db.fetchone() if desc: if not self.token or not self.password: - logger.debug("User: %s exists in db. Have to use it." % self.source) + logger.debug("User: %s exists in db. Use it." % self.source) self.existsInDB = True self.source, self.username, self.token, self.lastMsgID, self.rosterSet = desc elif self.password or self.token: @@ -409,8 +410,6 @@ class User(object): self.getUserID() self.friends = self.vk.getFriends() self.vk.Online = True - if not UseLastMessageID: - self.lastMsgID = 0 return self.vk.Online def getUserID(self): @@ -511,9 +510,8 @@ class User(object): if messages: lastMsg = messages[-1] self.lastMsgID = lastMsg["mid"] - if UseLastMessageID: - with Database(DatabaseFile, Semaphore) as db: - db("update users set lastMsgID=? where jid=?", (self.lastMsgID, self.source)) + with Database(DatabaseFile, Semaphore) as db: + db("update users set lastMsgID=? where jid=?", (self.lastMsgID, self.source)) def processPollResult(self, opener): try: @@ -616,7 +614,7 @@ def Sender(cl, stanza): try: cl.send(stanza) except Exception: - crashLog("Sender") + crashLog("sender") def msgSend(cl, destination, body, source, timestamp=0): msg = xmpp.Message(destination, body, "chat", frm=source) @@ -885,5 +883,5 @@ if __name__ == "__main__": Component.iter(6) except Exception: logger.critical("DISCONNECTED") - crashLog("Component.iter") + crashLog("component.iter") disconnectHandler(True) diff --git a/library/writer.py b/library/writer.py index 5769d05..6ac33cc 100644 --- a/library/writer.py +++ b/library/writer.py @@ -20,7 +20,7 @@ def rFile(filename): def crashLog(name, text = 0, fixMe = True): global lastErrorBody - logger.error("writing crashlog %s" % name) + logger.error("write crashlog %s" % name) if fixMe: fixme(name) try: |