Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mrDoctorWho/vk4xmpp.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormrDoctorWho <mrdoctorwho@gmail.com>2014-09-17 22:28:56 +0400
committermrDoctorWho <mrdoctorwho@gmail.com>2014-09-17 22:28:56 +0400
commitd595ca24e8f315fda6c13d37b128ba354c512603 (patch)
treee2fea55834b6f13c0821ce962ed1c37c903b1e0d
parentd83b8f4bd1c611c15c7d4c2859e5a76cd7ef8979 (diff)
Couple fixes in groupchats (exterminateChat())
Added sqlite3.OperationalError ignoring Fixed disconnect when building errors Added Semaphore into initializeUser() func Fixed crashLog() arguments overflow
-rw-r--r--README.md3
-rw-r--r--extensions/groupchats.py2
-rw-r--r--gateway.py19
-rw-r--r--library/utils.py5
-rw-r--r--modules/mod_iq_register.py12
-rw-r--r--modules/mod_prs_main.py4
6 files changed, 28 insertions, 17 deletions
diff --git a/README.md b/README.md
index bc92dd9..9d065ad 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,8 @@
[![VK4XMPP on Ohloh](https://www.openhub.net/p/vk4xmpp/widgets/project_partner_badge.gif)](https://www.openhub.net/p/vk4xmpp)
+[Donate](http://simpleapps.ru/index/0-2)
+
+
VK4XMPP Transport
======
diff --git a/extensions/groupchats.py b/extensions/groupchats.py
index efc5364..52f954c 100644
--- a/extensions/groupchats.py
+++ b/extensions/groupchats.py
@@ -147,7 +147,7 @@ def incomingChatMessageHandler(msg):
user.vk.sendMessage(body, Node.split("#")[1], "chat_id")
-def exterminateChat(user, chats):
+def exterminateChat(user):
chats = user.vk.method("execute.getChats")
for chat in chats:
setChatConfig("%s_chat#%s@%s" % (user.vk.userID, chat["chat_id"], ConferenceServer), TransportID, True)
diff --git a/gateway.py b/gateway.py
index accc689..e13c4f8 100644
--- a/gateway.py
+++ b/gateway.py
@@ -13,6 +13,7 @@ import re
import select
import socket
import signal
+import sqlite3
import sys
import threading
import time
@@ -266,7 +267,7 @@ class Settings(object):
"""
self.filename = "%s/%s/settings.txt" % (settingsDir, source)
self.settings = deepcopy(GLOBAL_USER_SETTINGS)
- self.settings.update(eval(rFile(self.filename)))
+ self.settings.update(eval(rFile(self.filename))) ## better use json.load() instead
self.keys = self.settings.keys
self.items = self.settings.items
self.source = source
@@ -726,13 +727,17 @@ class User(object):
if init:
date = message["date"]
sendMessage(Component, self.source, fromjid, escape("", body), date)
- if messages:
- self.lastMsgID = messages[-1]["mid"]
- with Database(DatabaseFile, Semaphore) as db:
- db("update users set lastMsgID=? where jid=?", (self.lastMsgID, self.source))
+ if messages:
+ self.lastMsgID = messages[-1]["mid"]
+ try:
+ self.updateLastMsgID(Semaphore)
+ except sqlite3.OperationalError, e:
+ logger.error("User:sendmessages error %s occurred while updating last message id (jid: %s)" % (str(e), self.source))
+
if not self.vk.userID:
self.vk.getUserID()
+
def processPollResult(self, opener):
"""
Processes poll result
@@ -780,6 +785,10 @@ class User(object):
self.typing[evt[0]] = time.time()
return 1
+ def updateLastMsgID(self, semph=Semaphore):
+ with Database(DatabaseFile, semph) as db:
+ db("update users set lastMsgID=? where jid=?", (self.lastMsgID, self.source))
+
def updateTypingUsers(self, cTime):
"""
Sends "paused" message event to stop user from composing a message
diff --git a/library/utils.py b/library/utils.py
index e6daf2b..9d8f6ad 100644
--- a/library/utils.py
+++ b/library/utils.py
@@ -50,8 +50,9 @@ def buildIQError(stanza, error=xmpp.ERR_FEATURE_NOT_IMPLEMENTED, text=None):
"""
error = xmpp.Error(stanza, error, True)
if text:
- eTag = error.getTag("error")
- eTag.setTagData("text", text)
+ tag = error.getTag("error")
+ if tag:
+ tag.setTagData("text", text)
return error
def normalizeValue(value):
diff --git a/modules/mod_iq_register.py b/modules/mod_iq_register.py
index 164bf9d..0dedcda 100644
--- a/modules/mod_iq_register.py
+++ b/modules/mod_iq_register.py
@@ -57,9 +57,8 @@ def register_handler(cl, iq):
"and then paste url to password field."), "value": URL_ACCEPT_APP},
{"var": "phone", "type": "text-single", "desc": _("Enter phone number in format +71234567890"), "value": "+"},
{"var": "use_password", "type": "boolean", "label": _("Get access-token automatically"), "desc": _("Try to get access-token automatically. (NOT recommended, password required!)")}, #"value": "0"},#, "0"}
- {"var": "password", "type": "text-private", "label": _("Password/Access-token"), "desc": _("Type password, access-token or url (recommended)")}
-
- ], data = [_("Type data in fields")])
+ {"var": "password", "type": "text-private", "label": _("Password/Access-token"), "desc": _("Type password, access-token or url (recommended)")}],
+ data = [_("Type data in fields")])
result.setQueryPayload([form])
elif iType == "set" and queryChildren:
@@ -68,10 +67,9 @@ def register_handler(cl, iq):
data = query.getTag("x", namespace=xmpp.NS_DATA)
if data:
form = xmpp.DataForm(node=data).asDict()
- print form
- phone = form.get("phone")
- password = form.get("password")
- use_password = utils.normalizeValue(form.get("use_password"))
+ phone = form.get("phone", "")
+ password = form.get("password", "")
+ use_password = utils.normalizeValue(form.get("use_password", ""))
if not password:
result = utils.buildIQError(iq, xmpp.ERR_BAD_REQUEST, _("Empty password/token field"))
diff --git a/modules/mod_prs_main.py b/modules/mod_prs_main.py
index f2c6d32..8c6a4cc 100644
--- a/modules/mod_prs_main.py
+++ b/modules/mod_prs_main.py
@@ -8,7 +8,7 @@ from __main__ import _
def initializeUser(source, resource, prs):
logger.debug("User not in the transport, but presence received. Searching in database (jid: %s)" % source)
- with Database(DatabaseFile) as db:
+ with Database(DatabaseFile, Semaphore) as db:
db("select jid,username from users where jid=?", (source,))
data = db.fetchone()
if data:
@@ -20,7 +20,7 @@ def initializeUser(source, resource, prs):
user.initialize(False, True, resource)
runThread(executeHandlers, ("prs01", (source, prs)))
else:
- crashLog("user.connect", 0, False)
+ crashLog("user.connect", False)
sendMessage(Component, jid, TransportID, _("Auth failed! If this error repeated, please register again. This incident will be reported."))
except Exception:
crashLog("prs.init")