Skip to main content

Python library for UnrealIRCd json-rpc

Project description

# UNREALIRCD-RPC-PY
![Static Badge](https://img.shields.io/badge/UnrealIRCd-6.2.2%20or%20later-green)
![Static Badge](https://img.shields.io/badge/Python3-3.10%20or%20later-green)
![Static Badge](https://img.shields.io/badge/Requests->=2.25.1-green)
![Static Badge](https://img.shields.io/badge/Websockets->=13.1-green)
![Dynamic JSON Badge](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fadator85%2Funrealircd_rpc_py%2Fmain%2Fversion.json&query=version&label=Current%20Version)
![Static Badge](https://img.shields.io/badge/Maintained-Yes-green)


## Introduction
If you are using Python3, this package can help you to parse all json responses it does all the work for you.

## How to install this package
```bash
pip3 install unrealircd_rpc_py
```
> [!NOTE]
> I recommend installing a virtual environment and then installing the package within it.

## How to establish the link
### Using requests module
```python
from unrealircd_rpc_py.ConnectionFactory import ConnectionFactory

# Define your connection string
connection_string = {
'url': 'https://your.irc.domaine.org:8600/api',
'username':'API_USERNAME',
'password':'API_PASSWORD'
}

# Use the factory to create your connection object
conn = ConnectionFactory().get('http')
conn.setup(connection_string)
```
### Using unixsocket method (Local only)
```python
from unrealircd_rpc_py.ConnectionFactory import ConnectionFactory

# Define your connection string
connection_string = {
'path_to_socket_file': '/path/to/unrealircd/data/rpc.socket'
}

# Use the factory to create your connection object
conn = ConnectionFactory().get('unixsocket')
conn.setup(connection_string)
```

## How to work with it
This package allows easy interfacing with UnrealIRCd through regular Python3 code, such as:
```python
# Enjoy the power of JSON-RPC
User = conn.User
response = User.get('adator')

print(f'Nickname: {response.name}')
print(f'Ip: {response.ip}')

Channels = rpc.Channel
response = Channels.list_(_object_detail_level=3)

for chan in Channels:
print(f'-' * 16)
print(f'Channel: {chan.name}')
print(f'Created on: {chan.creation_time}')
print(f'Bans: {chan.bans}')
print(f'Members: {chan.members}')
print(f'-' * 16)
```
## Object that you can use in a synchrone mode
```python
# After connecting using one of the methods listed above.
rpc = conn
Channel = rpc.Channel
Name_ban = rpc.Name_ban
Server_ban_exception = rpc.Server_ban_exception
Server_ban = rpc.Server_ban
Spamfilter = rpc.Spamfilter
Stats = rpc.Stats
User = rpc.User
Whowas = rpc.Whowas
Log = rpc.Log # This feature requires unrealIRCd 6.1.8 or higher
Message = rpc.Message # This feat requires unrealIRCd 6.2.2 or higher
Connthrottle = rpc.ConnThrottle # This feat requires unrealIRCd 6.2.2 or higher
SecurityGroup = rpc.SecurityGroup # This feat requires unrealIRCd 6.2.2 or higher

```

### Live Connection using UnixSocket (Local Only)
```python
from unrealircd_rpc_py.LiveConnectionFactory import LiveConnectionFactory

# Live Connection (Local only) using unix socket
liverpc = LiveConnectionFactory().get('unixsocket')
liverpc.setup({
'path_to_socket_file': '/path/to/unrealircd/data/rpc.socket',
'callback_object_instance' : callback_function_instance,
'callback_method_or_function_name': 'your_method_name'
})
```
### Live connection using Websocket (Local or Remote)
```python
from unrealircd_rpc_py.LiveConnectionFactory import LiveConnectionFactory

# Live Connection (Local Or Remote) using websocket
liverpc = LiveConnectionFactory().get('http')
liverpc.setup({
'url': 'https://your.irc.domaine.org:8600/api',
'username': 'Your-api-username',
'password': 'Your-api-password',
'callback_object_instance' : callback_function_instance,
'callback_method_or_function_name': 'your_method_name'
})
```
# Live Connection via unixsocket or websocket
## How to work with
- Class: see [how_to_use_it_live_class.py](https://github.com/adator85/unrealircd_rpc_py/blob/main/how_to_use_it_live_class.py)
- Function: see [how_to_use_it_live_func.py](https://github.com/adator85/unrealircd_rpc_py/blob/main/how_to_use_it_live_func.py)

# JSON-RPC TO SQL
```python
from unrealircd_rpc_py.modules.tosql.tosql import ToSql
# PROVIDE YOUR SQL CREDENTIALS HERE
# engine_name: you can choose between 3 sql engines
# postgresql, mysql or sqlite
sql = ToSql(engine_name='postgresql',
db_hostname='127.0.0.1',
db_name='YOUR_DB_NAME',
db_username='YOUR_DB_USERNAME',
db_password='YOUR_DB_PASSWORD',
db_port=0) # If you use default port leave the db_port to 0

# PROVIDE YOUR RPC CREDENTIALS HERE
sql.rpc_credentials.url='https://your.rpc.link:PORT/api'
sql.rpc_credentials.username='YOUR-RPC-USER'
sql.rpc_credentials.password='YOUR-RPC-PASSWORD'

# FINALLY RUN THE COPY
sql.run()
```
If you want to use sqlite please use the syntax below:
```python
from unrealircd_rpc_py.modules.tosql.tosql import ToSql

sql = ToSql(engine_name='sqlite')

# PROVIDE YOUR RPC CREDENTIALS HERE
sql.rpc_credentials.url='https://your.rpc.link:PORT/api'
sql.rpc_credentials.username='YOUR-RPC-USER'
sql.rpc_credentials.password='YOUR-RPC-PASSWORD'

# FINALLY RUN THE COPY
sql.run()
```


## How to work with JSON-RPC TO SQL
- JSON-RPC TO SQL: see [how_to_use_json_to_sql.py](https://github.com/adator85/unrealircd_rpc_py/blob/main/how_to_use_json_to_sql.py)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

unrealircd_rpc_py-3.1.2.tar.gz (37.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

unrealircd_rpc_py-3.1.2-py3-none-any.whl (57.8 kB view details)

Uploaded Python 3

File details

Details for the file unrealircd_rpc_py-3.1.2.tar.gz.

File metadata

  • Download URL: unrealircd_rpc_py-3.1.2.tar.gz
  • Upload date:
  • Size: 37.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.3.1 CPython/3.10.11 Windows/10

File hashes

Hashes for unrealircd_rpc_py-3.1.2.tar.gz
Algorithm Hash digest
SHA256 b2f9525c77503698b406ca66068f8fc97a538048db39fb00621e0ac237b57617
MD5 a66acc0cf7abe614be1b0190f663bf6c
BLAKE2b-256 5578e5cc145a040ac08122af422978758fd2c4fd053429b8d4bd56823246184f

See more details on using hashes here.

File details

Details for the file unrealircd_rpc_py-3.1.2-py3-none-any.whl.

File metadata

  • Download URL: unrealircd_rpc_py-3.1.2-py3-none-any.whl
  • Upload date:
  • Size: 57.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.3.1 CPython/3.10.11 Windows/10

File hashes

Hashes for unrealircd_rpc_py-3.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 9e3037a0e801fb8891fa111a2265c0ac0d26ae1bc25e21728066fdaafe38e8b3
MD5 44a4ebf7a9cfb2fe7a00c1be329306d4
BLAKE2b-256 138b2355af80d01cb11151d12f28b3541fb685912121c2e7fb6e35a0eab6f9e2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page