diff options
-rw-r--r-- | gateway.py | 30 | ||||
-rw-r--r-- | library/xmpp/auth.py | 4 | ||||
-rw-r--r-- | library/xmpp/browser.py | 2 | ||||
-rw-r--r-- | library/xmpp/debug.py | 8 | ||||
-rw-r--r-- | library/xmpp/filetransfer.py | 2 | ||||
-rw-r--r-- | library/xmpp/protocol.py | 12 | ||||
-rw-r--r-- | library/xmpp/roster.py | 4 | ||||
-rw-r--r-- | library/xmpp/simplexml.py | 2 | ||||
-rw-r--r-- | library/xmpp/transports.py | 3 | ||||
-rw-r--r-- | systemd/vk4xmpp.service | 7 |
10 files changed, 40 insertions, 34 deletions
@@ -237,29 +237,28 @@ class VKLogin(object): " Please, go to %s and enter text from image to chat." " Example: !captcha my_captcha_key. Tnx") % self.engine.captcha["img"] msg = xmpp.Message(self.jidFrom, body, "chat", frm = TransportID) - msg.setTag("x", {}, xmpp.NS_OOB) - xTag = msg.getTag("x", {}, xmpp.NS_OOB) + xTag = msg.setTag("x", {}, xmpp.NS_OOB) xTag.setTagData("url", self.engine.captcha["img"]) - msg.setTag("captcha", {}, xmpp.NS_CAPTCHA) - cTag = msg.getTag("captcha", {}, xmpp.NS_CAPTCHA) + cTag = msg.setTag("captcha", {}, xmpp.NS_CAPTCHA) imgData = vCardGetPhoto(self.engine.captcha["img"], False) if imgData: imgHash = sha1(imgData).hexdigest() imgEncoded = imgData.encode("base64") - form = xmpp.DataForm() - form.addChild(node=DataField("FORM_TYPE", xmpp.NS_CAPTCHA, "hidden")) - form.addChild(node=DataField("from", TransportID, "hidden")) + form = xmpp.DataForm("form") + form.setField("FORM_TYPE", xmpp.NS_CAPTCHA, "hidden") + form.setField("from", TransportID, "hidden") field = form.setField("ocr") field.setLabel(_("Enter shown text")) - field.setPayload([xmpp.Node("required"), xmpp.Node("media", {"xmlns": xmpp.NS_MEDIA}, - [xmpp.Node("uri", {"type": "image/jpg"}, ["cid:sha1+%s@bob.xmpp.org" % imgHash])])]) - cTag.addChild(node = form) - msg.setTag("data", {"cid": "sha1+%s@bob.xmpp.org" % imgHash, "type":"image/jpg", "max-age":"0"}, xmpp.NS_URN_OOB) - obTag = msg.getTag("data", {"cid": "sha1+%s@bob.xmpp.org" % imgHash, "type": "image/jpg", "max-age": "0"}, xmpp.NS_URN_OOB) + field.delAttr("type") + field.setPayload([xmpp.Node("required"), + xmpp.Node("media", {"xmlns": xmpp.NS_MEDIA}, + [xmpp.Node("uri", {"type": "image/jpg"}, + ["cid:sha1+%s@bob.xmpp.org" % imgHash])])]) + cTag.addChild(node=form) + obTag = msg.setTag("data", {"cid": "sha1+%s@bob.xmpp.org" % imgHash, "type": "image/jpg", "max-age": "0"}, xmpp.NS_URN_OOB) obTag.setData(imgEncoded) else: logger.critical("VKLogin: can't add captcha image to message url:%s" % self.engine.captcha["img"]) - Sender(Component, msg) Presence = xmpp.protocol.Presence(self.jidFrom, frm = TransportID) Presence.setStatus(body) @@ -612,6 +611,10 @@ def WatcherMsg(text): def disconnectHandler(crash = True): if crash: crashLog("main.Disconnect") + try: + Component.disconnect() + except (NameError, AttributeError): + pass Print("Reconnecting..."); time.sleep(5) os.execl(sys.executable, sys.executable, sys.argv[0]) @@ -628,6 +631,7 @@ def main(): Print("#-# Auth: ", False) if not Component.auth(TransportID, Password): Print("fail (%s/%s)!\n" % (Component.lastErr, Component.lastErrCode), True) + disconnectHandler(False) else: Print("ok.\n", False) Print("#-# Initializing users", False) diff --git a/library/xmpp/auth.py b/library/xmpp/auth.py index 37ab234..95842f4 100644 --- a/library/xmpp/auth.py +++ b/library/xmpp/auth.py @@ -195,7 +195,7 @@ class SASL(PlugIn): return self.startsasl = "in-process" self._owner.send(node.__str__()) - raise NodeProcessed + raise NodeProcessed() def SASLHandler(self, conn, challenge): """ @@ -259,7 +259,7 @@ class SASL(PlugIn): else: self.startsasl = "failure" self.DEBUG("Failed SASL authentification: unknown challenge", "error") - raise NodeProcessed + raise NodeProcessed() class Bind(PlugIn): """ diff --git a/library/xmpp/browser.py b/library/xmpp/browser.py index f1a6a20..d2ffdf0 100644 --- a/library/xmpp/browser.py +++ b/library/xmpp/browser.py @@ -145,7 +145,7 @@ class Browser(PlugIn): return None, None if cur.has_key(1) or set: return cur, 1 - raise "Corrupted data" + raise Exception("Corrupted data") def setDiscoHandler(self, handler, node="", jid=""): """ diff --git a/library/xmpp/debug.py b/library/xmpp/debug.py index 32cd1d8..be208c1 100644 --- a/library/xmpp/debug.py +++ b/library/xmpp/debug.py @@ -85,7 +85,7 @@ class Debug: else: self._fh = sys.stdout if time_stamp not in (0, 1, 2): - raise "Invalid time_stamp param", str(time_stamp) + raise Exception("Invalid time_stamp param", str(time_stamp)) self.prefix = prefix self.sufix = sufix self.time_stamp = time_stamp @@ -104,7 +104,7 @@ class Debug: if isinstance(flag_show, (str, type(None))): self.flag_show = flag_show else: - raise "Invalid type for flag_show!", str(flag_show) + raise Exception("Invalid type for flag_show!", str(flag_show)) def show(self, msg, flag=None, prefix=None, sufix=None, lf=0): """ @@ -254,7 +254,7 @@ class Debug: Filter out any dupes. """ if not isinstance(item, str): - raise "Invalid item type (should be string)", str(item) + raise Exception("Invalid item type (should be string)", str(item)) if item not in lst: lst.append(item) return lst @@ -266,7 +266,7 @@ class Debug: if flags: for flag in self._as_one_list(flags): if not flag in self.debug_flags: - raise "Invalid debugflag given", str(flag) + raise Exception("Invalid debugflag given", str(flag)) def _remove_dupe_flags(self): """ diff --git a/library/xmpp/filetransfer.py b/library/xmpp/filetransfer.py index 7742c0d..fc938ab 100644 --- a/library/xmpp/filetransfer.py +++ b/library/xmpp/filetransfer.py @@ -70,7 +70,7 @@ class IBB(PlugIn): self.StreamOpenReplyHandler(conn, stanza) else: conn.send(Error(stanza, ERR_BAD_REQUEST)) - raise NodeProcessed + raise NodeProcessed() def StreamOpenHandler(self, conn, stanza): """ diff --git a/library/xmpp/protocol.py b/library/xmpp/protocol.py index ef5b2cb..e9927b3 100644 --- a/library/xmpp/protocol.py +++ b/library/xmpp/protocol.py @@ -12,7 +12,7 @@ ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. -# $Id: protocol.py, v1.62 2013/10/21 alkorgun Exp $ +# $Id: protocol.py, v1.63 2013/12/06 alkorgun Exp $ """ Protocol module contains tools that is needed for processing of @@ -1213,13 +1213,13 @@ class DataItem(Node): """ return self.getTag("field", attrs={"var": name}) - def setField(self, name): + def setField(self, name, value=None, typ=None): """ Create if nessessary or get the existing datafield object with name "name" and return it. """ field = self.getField(name) if not field: - field = self.addChild(node=DataField(name)) + field = self.addChild(node=DataField(name, value, typ)) return field def asDict(self): @@ -1360,13 +1360,13 @@ class DataForm(Node): """ return self.getTag("field", attrs={"var": name}) - def setField(self, name): + def setField(self, name, value=None, typ=None): """ Create if nessessary or get the existing datafield object with name "name" and return it. """ field = self.getField(name) - if field: - field = self.addChild(node=DataField(name)) + if not field: + field = self.addChild(node=DataField(name, value, typ)) return field def asDict(self): diff --git a/library/xmpp/roster.py b/library/xmpp/roster.py index b5203d4..1cf737f 100644 --- a/library/xmpp/roster.py +++ b/library/xmpp/roster.py @@ -85,7 +85,7 @@ class Roster(PlugIn): if item.getAttr("subscription") == "remove": if self._data.has_key(jid): del self._data[jid] - raise NodeProcessed # a MUST + raise NodeProcessed() # a MUST self.DEBUG("Setting roster item %s..." % jid, "ok") if jid not in self._data: self._data[jid] = {} @@ -99,7 +99,7 @@ class Roster(PlugIn): self._data[jid]["groups"].append(group.getData()) self._data["@".join((self._owner.User, self._owner.Server))] = {"resources": {}, "name": None, "ask": None, "subscription": None, "groups": None, } self.set = 1 - raise NodeProcessed # a MUST. Otherwise you'll get back an <iq type='error'/> + raise NodeProcessed() # a MUST. Otherwise you'll get back an <iq type='error'/> def PresenceHandler(self, dis, pres): """ diff --git a/library/xmpp/simplexml.py b/library/xmpp/simplexml.py index 16e1ad2..19dcb29 100644 --- a/library/xmpp/simplexml.py +++ b/library/xmpp/simplexml.py @@ -480,7 +480,7 @@ class Node(object): if attr == "NT": self.NT = NT(self) return self.NT - raise AttributeError + raise AttributeError() class T: """ diff --git a/library/xmpp/transports.py b/library/xmpp/transports.py index 7055c32..0a12a74 100644 --- a/library/xmpp/transports.py +++ b/library/xmpp/transports.py @@ -37,6 +37,7 @@ from simplexml import ustr from plugin import PlugIn from protocol import * +# http://pydns.sourceforge.net try: import dns except ImportError: @@ -364,7 +365,7 @@ class TLS(PlugIn): self._owner.RegisterHandlerOnce("proceed", self.StartTLSHandler, xmlns=NS_TLS) self._owner.RegisterHandlerOnce("failure", self.StartTLSHandler, xmlns=NS_TLS) self._owner.Connection.send("<starttls xmlns=\"%s\"/>" % NS_TLS) - raise NodeProcessed + raise NodeProcessed() def pending_data(self, timeout=0): """ diff --git a/systemd/vk4xmpp.service b/systemd/vk4xmpp.service index 7d22a2b..cc0d577 100644 --- a/systemd/vk4xmpp.service +++ b/systemd/vk4xmpp.service @@ -1,11 +1,12 @@ [Unit] Description=VK4XMPP is an Vk.com transport for Jabber/XMPP + [Service] Type=simple -PIDFile=/usr/share/vk4xmpp/pidFile.txt -ExecStart=/usr/bin/env python2 /usr/share/vk4xmpp/gateway.py +PIDFile=/var/run/vk4xmpp/vk4xmpp.pid +ExecStart=/usr/bin/env python2 /usr/share/vk4xmpp/gateway.py -c/etc/vk4xmpp.conf -p/var/run/vk4xmpp/vk4xmpp.pid User=nobody Group=nobody [Install] -WantedBy=multi-user.target +WantedBy=multi-user.target
\ No newline at end of file |