Athalbraht / xmppy

XMPP module for Python
https://pypi.org/project/xmppy/
MIT License
5 stars 1 forks source link

xmppy

tag commit license

status status

The repository is no longer being developed

Python module for receiving and sending message using XMPP protocol.

Requires python >=3.8, <3.10

Attention: Module DO NOT provide any layers of encryption. You use it at your own risk.

Repos: GitHub GitLab


Table of Contents


Installation

From source

# using poetry
user@host:~$ poetry install 
# using pip
user@host:~$ pip install .

Using pip

user@host:~$ pip install xmppy

AUR (TODO)

user@host:~$ makepkg xmppy

Usage

Sending and receiving messages

example 1

(using classmethod)

import xmppy.Messenger as xb
import subprocess as sp

def monitor():
    return "Example message"

def reply(msg):
    return sp.check_output(msg, shell=True).decode()

#send monitor() every 60 seconds and keep receiving reply()
Client = xb.Client.initialize("jabber_id@examp.le", "password",
                "send_to@examp.le", monitor, reply, freq=60)

example 1

example 2

(only sending messages)

#send one message (for looping add freq param)
Client = xb.Client.sendMessage("jabber_id@examp.le", "password",
                        "send_to@examp.le", monitor)

example 3

(only receiving messages)

  Client = xb.Client.receiveMessage("jabber_id@examp.le", "password", reply)

Data input

Instead od entering data as parameters xmppy.Client("jid","pass","recipient"...) you can use .ini file:

#example.ini
[configfile]
jid = jid@examp.le
password = qwerty123
# recipient input is optional.
# In order to use entry below you should mark recipient as None in Client constructor
# i.e. xmppy.Client("file", "example.ini", None, ...) Otherwise, this input will be ignored.
recipient = rece@examp.le

and change function call from .Client("jid@examp.le", "password", "recipient@examp.le", ...) to .Client("file", "<.ini file>", <None or recipient@examp.le>, ...). Feature works with all calls from examples (1,2,3).

Console script

user@host:~$ xmppy -j <Jabber ID> -p <password> -t <recipient> -m <message>

Encryption

GPG

(in progress...)

Client = xb.Client.initialize("jabber_id@examp.le", "password",
                "send_to@examp.le", monitor, reply, freq=60, wait=True)
#temporarily doesn't support signing and receiving encrypted messages TODO!
Client.enableGPG("UID", "gnupghome_dir")

Client.run(wait=False)

OMEMO

TODO!