xmpppy / xmpppy Goto Github PK
View Code? Open in Web Editor NEWPython 2/3 implementation of XMPP
Home Page: http://xmpppy.sourceforge.net/
License: GNU General Public License v3.0
Python 2/3 implementation of XMPP
Home Page: http://xmpppy.sourceforge.net/
License: GNU General Public License v3.0
It is possible to have a XEPs and RFCs support page with version (XEP-XXXX v1.2)?
Examples:
OS: Windows 8.1 (RU)
Python: 3.8.2
xmpppy version: latest (0.6.2)
PS C:\Users\user\PycharmProjects\test\test> pip install xmpppy
Collecting xmpppy
Using cached xmpppy-0.6.2.tar.gz (65 kB)
ERROR: Command errored out with exit status 1:
command: 'c:\users\user\test\scripts\python.exe' -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\user\\AppData\\Local\\Temp\\pip-install-ughlxdiy\\xmpppy_7058d09e3db741378dd6e8812124d160\\setup.py'"'"'; __file__='"'"'C:\\Users\\user\\AppData\\Local\\Temp\\pip-install-ughlxdiy\\x
mpppy_7058d09e3db741378dd6e8812124d160\\setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))'
egg_info --egg-base 'C:\Users\user\AppData\Local\Temp\pip-pip-egg-info-hqjaxgvp'
cwd: C:\Users\user\AppData\Local\Temp\pip-install-ughlxdiy\xmpppy_7058d09e3db741378dd6e8812124d160\
Complete output (7 lines):
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "C:\Users\user\AppData\Local\Temp\pip-install-ughlxdiy\xmpppy_7058d09e3db741378dd6e8812124d160\setup.py", line 6, in <module>
README = open(os.path.join(here, 'README.rst')).read()
File "C:\Users\user\AppData\Local\Programs\Python\Python38-32\lib\encodings\cp1251.py", line 23, in decode
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x98 in position 1087: character maps to <undefined>
----------------------------------------
WARNING: Discarding https://files.pythonhosted.org/packages/80/0f/df8de530e0cbe4956c3671a4db4365c85477096d5021d93125d01ea11854/xmpppy-0.6.2.tar.gz#sha256=5c1810d129f3f5ae5a2cf56791c9efcd393a34940c8efc75ad36cca40a699709 (from https://pypi.org/simple/xmpppy/). Command errored out with exit status 1: python setup.
py egg_info Check the logs for full command output.
Using cached xmpppy-0.6.1.tar.gz (66 kB)
ERROR: Command errored out with exit status 1:
command: 'c:\users\user\test\scripts\python.exe' -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\user\\AppData\\Local\\Temp\\pip-install-ughlxdiy\\xmpppy_0ad7323ff5ec4dffb6e7f5029f497ff3\\setup.py'"'"'; __file__='"'"'C:\\Users\\user\\AppData\\Local\\Temp\\pip-install-ughlxdiy\\x
mpppy_0ad7323ff5ec4dffb6e7f5029f497ff3\\setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))'
egg_info --egg-base 'C:\Users\user\AppData\Local\Temp\pip-pip-egg-info-umgfzmmn'
cwd: C:\Users\user\AppData\Local\Temp\pip-install-ughlxdiy\xmpppy_0ad7323ff5ec4dffb6e7f5029f497ff3\
Complete output (7 lines):
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "C:\Users\user\AppData\Local\Temp\pip-install-ughlxdiy\xmpppy_0ad7323ff5ec4dffb6e7f5029f497ff3\setup.py", line 6, in <module>
README = open(os.path.join(here, 'README.rst')).read()
File "C:\Users\user\AppData\Local\Programs\Python\Python38-32\lib\encodings\cp1251.py", line 23, in decode
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x98 in position 1093: character maps to <undefined>
----------------------------------------
WARNING: Discarding https://files.pythonhosted.org/packages/25/34/42f1966f5c2ec33dc201d70ae71c255d510ef32288112e1b4c801aa9c011/xmpppy-0.6.1.tar.gz#sha256=48549adb7493facd85114c5cab9312e680417281a08038378306d371d791ea31 (from https://pypi.org/simple/xmpppy/). Command errored out with exit status 1: python setup.
py egg_info Check the logs for full command output.
Using cached xmpppy-0.6.0.tar.gz (65 kB)
ERROR: Command errored out with exit status 1:
command: 'c:\users\user\test\scripts\python.exe' -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\user\\AppData\\Local\\Temp\\pip-install-ughlxdiy\\xmpppy_9fb8b2f9adbb4511a43200675adfd105\\setup.py'"'"'; __file__='"'"'C:\\Users\\user\\AppData\\Local\\Temp\\pip-install-ughlxdiy\\x
mpppy_9fb8b2f9adbb4511a43200675adfd105\\setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))'
egg_info --egg-base 'C:\Users\user\AppData\Local\Temp\pip-pip-egg-info-990vw8g_'
cwd: C:\Users\user\AppData\Local\Temp\pip-install-ughlxdiy\xmpppy_9fb8b2f9adbb4511a43200675adfd105\
Complete output (7 lines):
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "C:\Users\user\AppData\Local\Temp\pip-install-ughlxdiy\xmpppy_9fb8b2f9adbb4511a43200675adfd105\setup.py", line 6, in <module>
README = open(os.path.join(here, 'README.rst')).read()
File "C:\Users\user\AppData\Local\Programs\Python\Python38-32\lib\encodings\cp1251.py", line 23, in decode
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x98 in position 947: character maps to <undefined>
----------------------------------------
WARNING: Discarding https://files.pythonhosted.org/packages/26/8a/2bf78d0246dae80497bfc9a22dcea9423e6e7c02ce5ea117612840e19704/xmpppy-0.6.0.tar.gz#sha256=4c01a306aecbc55d4c94f3157bad5ed3d14c1e69d7ee66754589cde7f69649c6 (from https://pypi.org/simple/xmpppy/). Command errored out with exit status 1: python setup.
py egg_info Check the logs for full command output.
ERROR: Could not find a version that satisfies the requirement xmpppy (from versions: 0.5.0rc1, 0.6.0, 0.6.1, 0.6.2)
ERROR: No matching distribution found for xmpppy
PS C:\Users\user\PycharmProjects\test\test>
I confirm problem inside README.rst
You have support for HTTP proxies';could you please add support for SOCKS proxies.
Hi! I'm writing some code with this library and the send() method is not found for the Client class, how to solve that?
Hi,
I use xmpppy in a decentralized xmpp bot network. I notice that sometimes, I received duplicate ID. for example:
<presence to="user-A@host1/res1" from="user-B@@host1/res2" id="287">
<show>xa</show>
<status>Off</status>
</presence>
<presence to="user-A@host1/res1" from="user-C@host1/res3" id="287">
<show></show>
<status>Running</status>
</presence>
So here the ID is the same. The problem is that sometimes, planets alignment makes this triggering callback for wrong events.
If I do:
pres = xmpp.Presence(status=presence_status, show=presence_show)
self.xmppclient.SendAndCallForResponse(stanza=pres, func=presence_callback)
Sometimes, my presence_callback is called with a wrong answer, and things can became completely screwed up.
I think a way to fix this is to modify the xmpppy.Dispatcher.send() function and change the way xmpppy manage IDs.
There are two options:
I think option 1 is the more optimized.
What do you think?
I didn't find the answer, is this library able to send from gtalk account to another one account ?
Coming from mqtt-tools/mqttwarn#295, we are thinking about revamping this Python package.
Here, we are looking at some cherries from the community within the network of forks of xmpppy worth to integrate into a freshly minted release.
Supporting Python3 within this process will be definitively welcome, see also #24.
Hi there,
at #29 (comment), I've asked:
Dear @snakeru, @normanr, @clarkspark, @Neustradamus and @caronc,
thanks for the bump. When looking at slixmpp again, it looks like it is well maintained. Considering that Python 2 is essentially dead, shall we just move on and advise users of xmpppy to also switch to using either slixmpp, aioxmpp or python-nbxmpp?
I will be happy to hear about any encouragements, suggestions or objections on that topic.
With kind regards,
Andreas.
As I see this has sparked some discussion, I would like to humbly suggest to continue the discussion here within another issue in order not to pollute #29 further.
At #37 (comment), I reflected about that this code base is actually already compatible with Python 3. However it still offers a way to use it with Python 2, which might be important for people out there.
Maybe we should check download statistics on PyPI to find out more about how much it is still used these days.
Please rest assured that may question should in no way be taken in any offensive manner with respect to the conceivers and former maintainers of this library, specifically @snakeru and @normanr. I am just asking it from an open minded perspective and looking forward to a collaborative discussion and decision.
With kind regards,
Andreas.
We need some way to enable/disable certificate checking. Currently the library uses the top-level wrap_socket function, which got removed in Python 3.12; that one never did certificate validation. However, using default context's wrap_socket always did certificate validation (since Python 2.7.x for some x < 20 IIRC).
Old code that responds to XEP-0050 commands does not expect an existing root reply node (ordinarily a <query />
, here a <command />
) to exist within the generated <iq />
. Old code, including the commandsbot.py
example, performs an .addChild()
.
It should be documented somewhere what is the expected way to update the root <command />
tag generated by .buildReply()
.
I'm currently doing this:
replypayload = . . . . . . . .
reply = request.buildReply('result')
reply.delChild(reply.getQuery())
reply.addChild(name='command',
namespace=xmpp.protocol.NS_COMMANDS,
attrs={
'node':request.getTagAttr('command','node'),
'sessionid':sessionid,
'status':'completed'},
payload=replypayload)
Note the delChild()
.
This probably isn't the best way to go about it, and requires patching existing code. I can't figure out a clean way to easily patch xmpppy without breaking half the codebase, so hopefully someone more "at home" with the codebase can patch this, document that .delChild()
is necessary, or provide another solution.
How can i transfer a file(text file or image file) through xmpppy
@normanr: Can you move other repositories too?
You can move too: https://github.com/normanr/xmppd?
I think that I have forgotten nothing.
Dear @snakeru, @normanr and @Neustradamus,
in order to add more meat to #39, I just checked the SleekXMPP and Slixmpp libraries for support of BOSH (XEP-0124, XEP-0206).
As I am not involved into the nitty gritty details of the XMPP specification in any way, I humbly asking you whether BOSH is still a thing these days? I can well see that xmpppy has some support for that which might have been slightly improved through #23.
On the other hand, there are absolute no references to "bosh", "124" or "206 when searching through the Slixmpp code base. When looking at SleekXMPP (which has already been archived by its maintainer), there is only fritzy/SleekXMPP#160 and fritzy/SleekXMPP#476, which also outline that BOSH might not be supported.
According to https://github.com/horazont/aioxmpp/issues/252 and https://github.com/horazont/aioxmpp/issues/18, aioxmpp also doesn't support neither BOSH nor Websockets. python-nbxmpp replaced BOSH with Websocket at its 1.0.0 release (18 June 2020).
Apologies for asking such questions, I have only used xmpppy for basic operations so far and would like to gain more knowledge about its featureset from you.
With kind regards,
Andreas.
So I often want to assume JID('a_process')
or JID('a_process/resource')
is at my local domain which gets dealt with elsewhere
However protocol.JID
gives a blank node and sets the domain which is a pain.
So my ugly fix is this at the end of the init of JID
if self.node == '':
self.node = self.domain
self.domain = ''
class Test_JID():
def test_1(self):
jid = JID('audiod/Jcop')
assert jid.getDomain() == ''
assert jid.getNode() == 'audiod'
assert jid.getResource() == 'Jcop'
def test_2(self):
jid = JID('audiod@ics/Jcop')
assert jid.getDomain() == 'ics'
assert jid.getNode() == 'audiod'
assert jid.getResource() == 'Jcop'
def test_3(self):
jid = JID('audiod')
assert jid.getDomain() == ''
assert jid.getNode() == 'audiod'
assert jid.getResource() == ''
def test_4(self):
jid = JID('audiod@ics')
assert jid.getDomain() == 'ics'
assert jid.getNode() == 'audiod'
assert jid.getResource() == ''
Is there any way to execute ejabberdctl commands and get the results using XMPPPY library?
Example: If I want to get current offline messages for a user, I can run ejabberdctl get_offline_count user server
command on server. How can I get the same using XMPPPY library?
Dear @xmpppy team,
It will be nice to remove old parts like:
Can you add a "move" box like https://sourceforge.net/projects/handbrake for example.
To disable/delete tabs, go here: https://sourceforge.net/projects/xmpppy/
To add a new tab, go here: https://sourceforge.net/projects/xmpppy/
To change informations, go here: https://sourceforge.net/p/xmpppy/admin/overview
To export, go here: https://sourceforge.net/p/xmpppy/admin/export
The new place can be added in:
Clean the old website and redirect to new place too?
Thanks in advance.
Your current head 8eb1092 is fine but the 0.7.0 version on PyPi does not work for me on an Ubuntu machine:
return super().auth(username, password, resource) File "/home/asl/xmpppy/xmpp/client.py", line 223, in auth if xmpp.auth.NonSASL(user,password,resource).PlugIn(self): File "/home/asl/xmpppy/xmpp/client.py", line 73, in PlugIn if 'plugin' in self.__class__.__dict__: return self.plugin(owner) File "/home/asl/xmpppy/xmpp/auth.py", line 71, in plugin query.setTagData('digest',sha1(owner.Dispatcher.Stream._document_attrs['id']+self.password).hexdigest()) TypeError: Unicode-objects must be encoded before hashing
Could you possible just publish your latest package to PyPi please?
Thanks
Fix error with tcpsock._sslObj.issuer()
.
import socket
from socketfunc import *
from xmpp import *
from lxml.etree import ElementTree, Element, SubElement
import lxml.etree as etree
import pubsubclient
from io import StringIO
import string
from random import Random
user="joker@localhost"
password="joker"
server="localhost"
jid = JID(user)
connection = Client(server)
connection.connect()
result = connection.auth(jid.getNode(),password)
connection.sendInitPresence()
I have a user joker registered on ejabberd server with the same username and password and i am trying to connect and open a session with the ejabberd server but running the above code leads to the below issue
Traceback (most recent call last):
File "test.py", line 79, in <module>
result = connection.auth(jid.getNode(),password)
File "/home/manas/anaconda3/lib/python3.7/site-packages/xmpp/client.py", line 228, in auth
while self.SASL.startsasl=='in-process' and self.Process(1): pass
File "/home/manas/anaconda3/lib/python3.7/site-packages/xmpp/dispatcher.py", line 127, in Process
raise _pendingException[0](_pendingException[1]).with_traceback(_pendingException[2])
File "/home/manas/anaconda3/lib/python3.7/site-packages/xmpp/dispatcher.py", line 305, in dispatch
handler['func'](session,stanza)
File "/home/manas/anaconda3/lib/python3.7/site-packages/xmpp/auth.py", line 181, in SASLHandler
self.DEBUG('Got challenge:'+data,'ok')
TypeError: can only concatenate str (not "bytes") to str
However i am able to connect to prosody xmpp server using the same above code but ofcourse different user credentials.
Please look into this issue
Thanks
I am trying to use xmpppy api for connecting jabber, I have gone through xsend.py for sending messages. But where can i find the other docs or examples for registering or removing accounts form server.I have seen register and unregister functions in "features.py" file.But what parameters need to send to register a new user and etc?
I am trying to use 0.6.3 on NetBSD against ejabberd. When built with python2.7, using the provided xsend.py example script works fine. When I build with ptyhon3.8, then I get an authentication failure.
I speculate that this is some sort of bytes/strings mismatch and my username and password are being sent in some wrong bytes/UTF/? way. I see the username in the server log with a failure.
As an aside, the xsend.py example needs () around the args to print.
It would be helpful to know if anyone thinks that this works with python 3.
Please add support of XEP-0443: XMPP Compliance Suites 2021: https://xmpp.org/extensions/xep-0443.html
Which replaces:
Can you update the ietf-docs with XMPP RFCs instead very old drafts?
Excuse me, should I build an xmpp server for testing?
What kind of service should ubuntu18.04 build?
Using the basic.py script, where should its destination be sent to?
Are the required passwords and user names already set when the service is set up?
thanks you!
With xsend.py, one puts JID and PASSWORD in ~/.xsend, and that allows keeping credentials separate from scripts (which might be checked in). Because of this, xmpp-message almost replaces xsend.py, but not quite.
Line 58 has a type error as sha1 needs a bytes so have wrapped in an encode('utf-8') to fix
query.setTagData('digest',sha1((owner.Dispatcher.Stream._document_attrs['id']+self.password).encode('utf-8')).hexdigest())
Hi,
It seems that your fork is more advanced and more stable than the official one. Thanks for this.
But I'd like to know why the version is lower than the official one? Official one is xmpppy-0.5.0rc1 and yours is 0.4.0.
not possible use libary for local xmpp send ?
i got error when try.
xmpp.protocol.HostUnknown: ('host-unknown', 'This server does not serve 127.0.0.1')
code use like this.
connection = xmpp.Client(server='127.0.0.1')
connection.connect()
connection.auth(user='', password='', resource='')
connection.send(xmpp.protocol.Message(to=to_user, body=to_message, typ='chat'))
OS : Ubuntu 20.04
Python : 3.8
xmpppy==0.6.4
OS: Windows 7
Python: 3.7.1
xmpppy version: latest (0.6.2)
Installation errors out when trying to read the readme:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "C:\Users\Krzychu\AppData\Local\Temp\pip-install-w0qmfaz6\xmpppy_b4e34b41ffb641f68c7cf59cda30c9a2\setup.py", line 6, in <module>
README = open(os.path.join(here, 'README.rst')).read()
File "c:\users\krzychu\appdata\local\programs\python\python37\lib\encodings\cp1250.py", line 23, in decode
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x98 in position 1087: character maps to <undefined>
The issue is the ☠ character - removing all occurences in the readme fixes the problem.
I notice for a long time (but now I have a tracker to post this hehe):
If I activate TLS in ejabberd and if stanza I/O are "too fast" (I can't isolate clearly the value of "too fast"), xmpppy is disconnected without any more informations.
Disabling the TLS support make this problem go away.
I spotted another potential memory leak here:
dispatcher.py:
def SendAndCallForResponse(self, stanza, func, args={}):
""" Put stanza on the wire and call back when recipient replies.
Additional callback arguments can be specified in args. """
self._expected[self.send(stanza)]=(func,args)
Actually and contrary to SendAndWaitForResponse, the self._expected dict remains wired to all stanza/cb receveid as you ca see here:
We clearly see that self._expected contains all ID and what ever they are linked too.
I try to figure out how to fix this, I'm asking for help about that.
Thanks
During debugging of another problem, I stumbled upon the following error:
While trying to connect, the line 165 in transports.py
is failing, since the socket.error
has a tuple with five elements but the current code only supports two. I do not know if the number of elements is different only between operating systems or depending on the error, but it should be able to handle all errors. Mine was:
File "xxx\lib\site-packages\xmpp\transports.py", line 166, in connect
(errno, strerror) = xxx_todo_changeme.args
ValueError: too many values to unpack (expected 2)
@snakeru @normanr : Would you mind tagging a new release? (The latest release is from 2011.)
Also, if this is the canonical Git repository for xmpppy, could you update the xmpppy.sf.net website to point here and remove/fix the other git/cvs repos on SourceForge? It seems that site hasn't been touched in at least 2 years.
After the unsecure and obsolete DIGEST-MD5, can you add supports of :
"When using the SASL SCRAM mechanism, the SCRAM-SHA-256-PLUS variant SHOULD be preferred over the SCRAM-SHA-256 variant, and SHA-256 variants [RFC7677] SHOULD be preferred over SHA-1 variants [RFC5802]".
SCRAM-SHA-1(-PLUS):
-- https://tools.ietf.org/html/rfc5802
-- https://tools.ietf.org/html/rfc6120
SCRAM-SHA-256(-PLUS):
-- https://tools.ietf.org/html/rfc7677 since 2015-11-02
-- https://tools.ietf.org/html/rfc8600 since 2019-06-21: https://mailarchive.ietf.org/arch/msg/ietf-announce/suJMmeMhuAOmGn_PJYgX5Vm8lNA
SCRAM-SHA-512(-PLUS):
-- https://tools.ietf.org/html/draft-melnikov-scram-sha-512
SCRAM-SHA3-512(-PLUS):
-- https://tools.ietf.org/html/draft-melnikov-scram-sha3-512
https://xmpp.org/extensions/inbox/hash-recommendations.html
-PLUS variants:
LDAP:
HTTP:
2FA:
IANA:
Linked to:
Hi,
When we send bulk message, XMPP - Jabber bot get disconnected from server and goes offline. How to fix the disconnection issue or automatically reconnect the Jabber bot to server?
Packagers and users would like to be able to know what has changed. Please add a NEWS (NEWS.md, whatever) at top-level to contain a user-facing summary of changes, similarly to how the GNU Coding Standards suggest.
It seems that brutally interrupting an xmpppy client doesn't close the socket. So the XMPP server is not notified that the client as gone.
Seems that library is not compatible with Python 3.12:
File "/ust/lib/python3.12/site-packages/xmpp/transports.py", line 387, in _startSSL
tcpsock._sslObj = ssl.wrap_socket(tcpsock._sock, None, None)
^^^^^^^^^^^^^^^
AttributeError: module 'ssl' has no attribute 'wrap_socket'
Just to let y'all know, I'm forking to work on python3 support, and will send a pull request when done.
Hi,
installed xmpppy via pip3.
# python3 -m pip install xmpppy
Collecting xmpppy
Downloading https://www.piwheels.org/simple/xmpppy/xmpppy-0.7.1-py3-none-any.whl (77kB)
100% |████████████████████████████████| 81kB 1.3MB/s
Put my xmpp credentials in ~/.xsend
as described in the README.md
cat ~/.xsend
[email protected]
PASSWORD=supersecurepassword123
And then try to send myself a message
# xmpp-message --receiver [email protected] --message "hello world"
Traceback (most recent call last):
File "/usr/local/bin/xmpp-message", line 10, in <module>
sys.exit(simple_message())
File "/usr/local/lib/python3.7/dist-packages/xmpp/cli.py", line 74, in simple_message
send_message(options.jabberid, options.password, options.receiver, options.message, debug=options.debug)
File "/usr/local/lib/python3.7/dist-packages/xmpp/cli.py", line 26, in send_message
connection.connect()
File "/usr/local/lib/python3.7/dist-packages/xmpp/client.py", line 203, in connect
if not CommonClient.connect(self,server,proxy,secure,use_srv,transport) or secure!=None and not secure: return self.connected
File "/usr/local/lib/python3.7/dist-packages/xmpp/client.py", line 175, in connect
sock.PlugOut()
File "/usr/local/lib/python3.7/dist-packages/xmpp/client.py", line 79, in PlugOut
if 'plugout' in self.__class__.__dict__: ret = self.plugout()
File "/usr/local/lib/python3.7/dist-packages/xmpp/transports.py", line 178, in plugout
self._sock.close()
AttributeError: 'TCPsocket' object has no attribute '_sock'
This happens on my Raspberry Pi4 running DietPi (Debian).
On my Linux Mint 21.1 laptop it works fine though.
Any dependency missing? Can't get it working 🤔
Thanks!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.