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:
-rw-r--r--gateway.py30
-rw-r--r--library/xmpp/auth.py4
-rw-r--r--library/xmpp/browser.py2
-rw-r--r--library/xmpp/debug.py8
-rw-r--r--library/xmpp/filetransfer.py2
-rw-r--r--library/xmpp/protocol.py12
-rw-r--r--library/xmpp/roster.py4
-rw-r--r--library/xmpp/simplexml.py2
-rw-r--r--library/xmpp/transports.py3
-rw-r--r--systemd/vk4xmpp.service7
10 files changed, 40 insertions, 34 deletions
diff --git a/gateway.py b/gateway.py
index 5924b88..800e86f 100644
--- a/gateway.py
+++ b/gateway.py
@@ -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