mirror of
https://github.com/iio612/DEFENDER.git
synced 2026-02-13 11:14:23 +00:00
refactoring code
This commit is contained in:
@@ -13,7 +13,7 @@ class IProtocol(ABC):
|
|||||||
def __init__(self, uplink: 'Irc'):
|
def __init__(self, uplink: 'Irc'):
|
||||||
self.name: Optional[str] = None
|
self.name: Optional[str] = None
|
||||||
self.protocol_version: int = -1
|
self.protocol_version: int = -1
|
||||||
self.known_protocol: set[str] = {}
|
self.known_protocol: set[str] = set()
|
||||||
|
|
||||||
self._Irc = uplink
|
self._Irc = uplink
|
||||||
self._Config = uplink.Config
|
self._Config = uplink.Config
|
||||||
@@ -32,10 +32,7 @@ class IProtocol(ABC):
|
|||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def init_protocol(self):
|
def init_protocol(self):
|
||||||
"""_summary_
|
"""Init protocol
|
||||||
|
|
||||||
Returns:
|
|
||||||
_type_: _description_
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
@@ -316,46 +313,46 @@ class IProtocol(ABC):
|
|||||||
# ------------------------------------------------------------------------
|
# ------------------------------------------------------------------------
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def parse_uid(self, serverMsg: list[str]) -> Optional['MUser']:
|
def parse_uid(self, server_msg: list[str]) -> Optional['MUser']:
|
||||||
"""Parse UID and return dictionary.
|
"""Parse UID and return dictionary.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
serverMsg (list[str]): The UID IRCD message
|
server_msg (list[str]): The UID IRCD message
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
Optional[MUser]: The MUser object or None
|
Optional[MUser]: The MUser object or None
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def parse_quit(self, serverMsg: list[str]) -> tuple[Optional['MUser'], str]:
|
def parse_quit(self, server_msg: list[str]) -> tuple[Optional['MUser'], str]:
|
||||||
"""Parse quit and return dictionary.
|
"""Parse quit and return dictionary.
|
||||||
>>> [':97KAAAAAB', 'QUIT', ':Quit:', 'this', 'is', 'my', 'reason', 'to', 'quit']
|
>>> [':97KAAAAAB', 'QUIT', ':Quit:', 'this', 'is', 'my', 'reason', 'to', 'quit']
|
||||||
Args:
|
Args:
|
||||||
serverMsg (list[str]): The server message to parse
|
server_msg (list[str]): The server message to parse
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
tuple[MUser, str]: The User Who Quit Object and the reason.
|
tuple[MUser, str]: The User Who Quit Object and the reason.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def parse_nick(self, serverMsg: list[str]) -> dict[str, str]:
|
def parse_nick(self, server_msg: list[str]) -> dict[str, str]:
|
||||||
"""Parse nick changes and return dictionary.
|
"""Parse nick changes and return dictionary.
|
||||||
>>> [':97KAAAAAC', 'NICK', 'testinspir', '1757360740']
|
>>> [':97KAAAAAC', 'NICK', 'testinspir', '1757360740']
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
serverMsg (list[str]): The server message to parse
|
server_msg (list[str]): The server message to parse
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
dict[str, str]: The response as dictionary.
|
dict[str, str]: The response as dictionary.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def parse_privmsg(self, serverMsg: list[str]) -> tuple[Optional['MUser'], Optional['MUser'], Optional['MChannel'], str]:
|
def parse_privmsg(self, server_msg: list[str]) -> tuple[Optional['MUser'], Optional['MUser'], Optional['MChannel'], str]:
|
||||||
"""Parse PRIVMSG message.
|
"""Parse PRIVMSG message.
|
||||||
>>> [':97KAAAAAE', 'PRIVMSG', '#welcome', ':This', 'is', 'my', 'public', 'message']
|
>>> [':97KAAAAAE', 'PRIVMSG', '#welcome', ':This', 'is', 'my', 'public', 'message']
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
serverMsg (list[str]): The server message to parse
|
server_msg (list[str]): The server message to parse
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
tuple[MUser(Sender), MUser(Reciever), MChannel, str]: Sender user model, reciever user model, Channel model, messgae.
|
tuple[MUser(Sender), MUser(Reciever), MChannel, str]: Sender user model, reciever user model, Channel model, messgae.
|
||||||
@@ -366,174 +363,174 @@ class IProtocol(ABC):
|
|||||||
# ------------------------------------------------------------------------
|
# ------------------------------------------------------------------------
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def on_svs2mode(self, serverMsg: list[str]) -> None:
|
def on_svs2mode(self, server_msg: list[str]) -> None:
|
||||||
"""Handle svs2mode coming from a server
|
"""Handle svs2mode coming from a server
|
||||||
>>> [':00BAAAAAG', 'SVS2MODE', '001U01R03', '-r']
|
>>> [':00BAAAAAG', 'SVS2MODE', '001U01R03', '-r']
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
serverMsg (list[str]): Original server message
|
server_msg (list[str]): Original server message
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def on_mode(self, serverMsg: list[str]) -> None:
|
def on_mode(self, server_msg: list[str]) -> None:
|
||||||
"""Handle mode coming from a server
|
"""Handle mode coming from a server
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
serverMsg (list[str]): Original server message
|
server_msg (list[str]): Original server message
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def on_umode2(self, serverMsg: list[str]) -> None:
|
def on_umode2(self, server_msg: list[str]) -> None:
|
||||||
"""Handle umode2 coming from a server
|
"""Handle umode2 coming from a server
|
||||||
>>> [':adator_', 'UMODE2', '-i']
|
>>> [':adator_', 'UMODE2', '-i']
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
serverMsg (list[str]): Original server message
|
server_msg (list[str]): Original server message
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def on_quit(self, serverMsg: list[str]) -> None:
|
def on_quit(self, server_msg: list[str]) -> None:
|
||||||
"""Handle quit coming from a server
|
"""Handle quit coming from a server
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
serverMsg (list[str]): Original server message
|
server_msg (list[str]): Original server message
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def on_squit(self, serverMsg: list[str]) -> None:
|
def on_squit(self, server_msg: list[str]) -> None:
|
||||||
"""Handle squit coming from a server
|
"""Handle squit coming from a server
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
serverMsg (list[str]): Original server message
|
server_msg (list[str]): Original server message
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def on_protoctl(self, serverMsg: list[str]) -> None:
|
def on_protoctl(self, server_msg: list[str]) -> None:
|
||||||
"""Handle protoctl coming from a server
|
"""Handle protoctl coming from a server
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
serverMsg (list[str]): Original server message
|
server_msg (list[str]): Original server message
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def on_nick(self, serverMsg: list[str]) -> None:
|
def on_nick(self, server_msg: list[str]) -> None:
|
||||||
"""Handle nick coming from a server
|
"""Handle nick coming from a server
|
||||||
new nickname
|
new nickname
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
serverMsg (list[str]): Original server message
|
server_msg (list[str]): Original server message
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def on_sjoin(self, serverMsg: list[str]) -> None:
|
def on_sjoin(self, server_msg: list[str]) -> None:
|
||||||
"""Handle sjoin coming from a server
|
"""Handle sjoin coming from a server
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
serverMsg (list[str]): Original server message
|
server_msg (list[str]): Original server message
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def on_part(self, serverMsg: list[str]) -> None:
|
def on_part(self, server_msg: list[str]) -> None:
|
||||||
"""Handle part coming from a server
|
"""Handle part coming from a server
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
serverMsg (list[str]): Original server message
|
server_msg (list[str]): Original server message
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def on_eos(self, serverMsg: list[str]) -> None:
|
def on_eos(self, server_msg: list[str]) -> None:
|
||||||
"""Handle EOS coming from a server
|
"""Handle EOS coming from a server
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
serverMsg (list[str]): Original server message
|
server_msg (list[str]): Original server message
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def on_reputation(self, serverMsg: list[str]) -> None:
|
def on_reputation(self, server_msg: list[str]) -> None:
|
||||||
"""Handle REPUTATION coming from a server
|
"""Handle REPUTATION coming from a server
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
serverMsg (list[str]): Original server message
|
server_msg (list[str]): Original server message
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def on_uid(self, serverMsg: list[str]) -> None:
|
def on_uid(self, server_msg: list[str]) -> None:
|
||||||
"""Handle uid message coming from the server
|
"""Handle uid message coming from the server
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
serverMsg (list[str]): Original server message
|
server_msg (list[str]): Original server message
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def on_privmsg(self, serverMsg: list[str]) -> None:
|
def on_privmsg(self, server_msg: list[str]) -> None:
|
||||||
"""Handle PRIVMSG message coming from the server
|
"""Handle PRIVMSG message coming from the server
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
serverMsg (list[str]): Original server message
|
server_msg (list[str]): Original server message
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def on_server_ping(self, serverMsg: list[str]) -> None:
|
def on_server_ping(self, server_msg: list[str]) -> None:
|
||||||
"""Send a PONG message to the server
|
"""Send a PONG message to the server
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
serverMsg (list[str]): List of str coming from the server
|
server_msg (list[str]): List of str coming from the server
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def on_server(self, serverMsg: list[str]) -> None:
|
def on_server(self, server_msg: list[str]) -> None:
|
||||||
"""_summary_
|
"""_summary_
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
serverMsg (list[str]): _description_
|
server_msg (list[str]): _description_
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def on_version(self, serverMsg: list[str]) -> None:
|
def on_version(self, server_msg: list[str]) -> None:
|
||||||
"""Sending Server Version to the server
|
"""Sending Server Version to the server
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
serverMsg (list[str]): List of str coming from the server
|
server_msg (list[str]): List of str coming from the server
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def on_time(self, serverMsg: list[str]) -> None:
|
def on_time(self, server_msg: list[str]) -> None:
|
||||||
"""Sending TIME answer to a requestor
|
"""Sending TIME answer to a requestor
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
serverMsg (list[str]): List of str coming from the server
|
server_msg (list[str]): List of str coming from the server
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def on_ping(self, serverMsg: list[str]) -> None:
|
def on_ping(self, server_msg: list[str]) -> None:
|
||||||
"""Sending a PING answer to requestor
|
"""Sending a PING answer to requestor
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
serverMsg (list[str]): List of str coming from the server
|
server_msg (list[str]): List of str coming from the server
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def on_version_msg(self, serverMsg: list[str]) -> None:
|
def on_version_msg(self, server_msg: list[str]) -> None:
|
||||||
"""Handle version coming from the server
|
"""Handle version coming from the server
|
||||||
\n ex. /version Defender
|
\n ex. /version Defender
|
||||||
Args:
|
Args:
|
||||||
serverMsg (list[str]): Original message from the server
|
server_msg (list[str]): Original message from the server
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def on_smod(self, serverMsg: list[str]) -> None:
|
def on_smod(self, server_msg: list[str]) -> None:
|
||||||
"""Handle SMOD message coming from the server
|
"""Handle SMOD message coming from the server
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
serverMsg (list[str]): Original server message
|
server_msg (list[str]): Original server message
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def on_sasl(self, serverMsg: list[str]) -> Optional['MSasl']:
|
def on_sasl(self, server_msg: list[str]) -> Optional['MSasl']:
|
||||||
"""Handle SASL coming from a server
|
"""Handle SASL coming from a server
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
serverMsg (list[str]): Original server message
|
server_msg (list[str]): Original server message
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
|
|
||||||
@@ -551,18 +548,18 @@ class IProtocol(ABC):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def on_md(self, serverMsg: list[str]) -> None:
|
def on_md(self, server_msg: list[str]) -> None:
|
||||||
"""Handle MD responses
|
"""Handle MD responses
|
||||||
[':001', 'MD', 'client', '001MYIZ03', 'certfp', ':d1235648...']
|
[':001', 'MD', 'client', '001MYIZ03', 'certfp', ':d1235648...']
|
||||||
Args:
|
Args:
|
||||||
serverMsg (list[str]): The server reply
|
server_msg (list[str]): The server reply
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def on_kick(self, serverMsg: list[str]) -> None:
|
def on_kick(self, server_msg: list[str]) -> None:
|
||||||
"""When a user is kicked out from a channel
|
"""When a user is kicked out from a channel
|
||||||
|
|
||||||
Eg. ['@unrealircd.org...', ':001', 'KICK', '#jsonrpc', '001ELW13T', ':Kicked', 'from', 'JSONRPC', 'User']
|
Eg. ['@unrealircd.org...', ':001', 'KICK', '#jsonrpc', '001ELW13T', ':Kicked', 'from', 'JSONRPC', 'User']
|
||||||
Args:
|
Args:
|
||||||
serverMsg (list[str]): The server message
|
server_msg (list[str]): The server message
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -254,7 +254,7 @@ class Inspircd(IProtocol):
|
|||||||
self.send2socket(f":{server_id} SQUIT {server_link} :{reason}")
|
self.send2socket(f":{server_id} SQUIT {server_link} :{reason}")
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def send_ungline(self, nickname:str, hostname: str) -> None:
|
def send_ungline(self, nickname: str, hostname: str) -> None:
|
||||||
|
|
||||||
self.send2socket(f":{self._Config.SERVEUR_ID} TKL - G {nickname} {hostname} {self._Config.SERVICE_NICKNAME}")
|
self.send2socket(f":{self._Config.SERVEUR_ID} TKL - G {nickname} {hostname} {self._Config.SERVICE_NICKNAME}")
|
||||||
|
|
||||||
@@ -312,7 +312,9 @@ class Inspircd(IProtocol):
|
|||||||
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def send_uid(self, nickname:str, username: str, hostname: str, uid:str, umodes: str, vhost: str, remote_ip: str, realname: str, print_log: bool = True) -> None:
|
def send_uid(self, nickname: str, username: str, hostname: str,
|
||||||
|
uid:str, umodes: str, vhost: str, remote_ip: str,
|
||||||
|
realname: str, print_log: bool = True) -> None:
|
||||||
"""Send UID to the server
|
"""Send UID to the server
|
||||||
[:<sid>] UID <uid> <ts> <nick> <real-host> <displayed-host> <real-user> <ip> <signon> <modes> [<mode-parameters>]+ :<real>
|
[:<sid>] UID <uid> <ts> <nick> <real-host> <displayed-host> <real-user> <ip> <signon> <modes> [<mode-parameters>]+ :<real>
|
||||||
Args:
|
Args:
|
||||||
@@ -384,7 +386,7 @@ class Inspircd(IProtocol):
|
|||||||
self._Irc.Channel.insert(self._Irc.Loader.Definition.MChannel(name=channel, uids=[user_obj.uid]))
|
self._Irc.Channel.insert(self._Irc.Loader.Definition.MChannel(name=channel, uids=[user_obj.uid]))
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def send_part_chan(self, uidornickname:str, channel: str, print_log: bool = True) -> None:
|
def send_part_chan(self, uidornickname: str, channel: str, print_log: bool = True) -> None:
|
||||||
"""Part from a channel
|
"""Part from a channel
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
@@ -409,7 +411,7 @@ class Inspircd(IProtocol):
|
|||||||
self._Irc.Channel.delete_user_from_channel(channel, user_obj.uid)
|
self._Irc.Channel.delete_user_from_channel(channel, user_obj.uid)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def send_unkline(self, nickname:str, hostname: str) -> None:
|
def send_unkline(self, nickname: str, hostname: str) -> None:
|
||||||
|
|
||||||
self.send2socket(f":{self._Config.SERVEUR_ID} TKL - K {nickname} {hostname} {self._Config.SERVICE_NICKNAME}")
|
self.send2socket(f":{self._Config.SERVEUR_ID} TKL - K {nickname} {hostname} {self._Config.SERVICE_NICKNAME}")
|
||||||
|
|
||||||
@@ -1263,7 +1265,6 @@ class Inspircd(IProtocol):
|
|||||||
|
|
||||||
return sender, reciever, channel, message
|
return sender, reciever, channel, message
|
||||||
|
|
||||||
|
|
||||||
# ------------------------------------------------------------------------
|
# ------------------------------------------------------------------------
|
||||||
# IRC SENDER METHODS
|
# IRC SENDER METHODS
|
||||||
# ------------------------------------------------------------------------
|
# ------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
from base64 import b64decode
|
from base64 import b64decode
|
||||||
from optparse import Option
|
|
||||||
from re import match, findall, search
|
from re import match, findall, search
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from typing import TYPE_CHECKING, Any, Optional
|
from typing import TYPE_CHECKING, Any, Optional
|
||||||
@@ -10,7 +9,6 @@ from core.utils import tr
|
|||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from core.classes.modules.sasl import Sasl
|
from core.classes.modules.sasl import Sasl
|
||||||
from core.definition import MClient, MSasl, MUser, MChannel
|
from core.definition import MClient, MSasl, MUser, MChannel
|
||||||
from core.loader import Loader
|
|
||||||
|
|
||||||
class Unrealircd6(IProtocol):
|
class Unrealircd6(IProtocol):
|
||||||
|
|
||||||
@@ -106,7 +104,8 @@ class Unrealircd6(IProtocol):
|
|||||||
"""Envoit les commandes à envoyer au serveur.
|
"""Envoit les commandes à envoyer au serveur.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
string (Str): contient la commande à envoyer au serveur.
|
message (str): contient la commande à envoyer au serveur.
|
||||||
|
print_log (bool): True print log message in the console
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
with self._Base.lock:
|
with self._Base.lock:
|
||||||
@@ -142,22 +141,22 @@ class Unrealircd6(IProtocol):
|
|||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
batch_size = self._Config.BATCH_SIZE
|
batch_size = self._Config.BATCH_SIZE
|
||||||
User_from = self._Irc.User.get_user(nick_from)
|
user_from = self._Irc.User.get_user(nick_from)
|
||||||
User_to = self._Irc.User.get_user(nick_to) if not nick_to is None else None
|
user_to = self._Irc.User.get_user(nick_to) if not nick_to is None else None
|
||||||
|
|
||||||
if User_from is None:
|
if user_from is None:
|
||||||
self._Logs.error(f"The sender nickname [{nick_from}] do not exist")
|
self._Logs.error(f"The sender nickname [{nick_from}] do not exist")
|
||||||
return None
|
return None
|
||||||
|
|
||||||
if not channel is None:
|
if not channel is None:
|
||||||
for i in range(0, len(str(msg)), batch_size):
|
for i in range(0, len(str(msg)), batch_size):
|
||||||
batch = str(msg)[i:i+batch_size]
|
batch = str(msg)[i:i+batch_size]
|
||||||
self.send2socket(f":{User_from.uid} PRIVMSG {channel} :{batch}")
|
self.send2socket(f":{user_from.uid} PRIVMSG {channel} :{batch}")
|
||||||
|
|
||||||
if not nick_to is None:
|
if not nick_to is None:
|
||||||
for i in range(0, len(str(msg)), batch_size):
|
for i in range(0, len(str(msg)), batch_size):
|
||||||
batch = str(msg)[i:i+batch_size]
|
batch = str(msg)[i:i+batch_size]
|
||||||
self.send2socket(f":{nick_from} PRIVMSG {User_to.uid} :{batch}")
|
self.send2socket(f":{nick_from} PRIVMSG {user_to.uid} :{batch}")
|
||||||
|
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
self._Logs.error(f"General Error: {err}")
|
self._Logs.error(f"General Error: {err}")
|
||||||
@@ -173,16 +172,16 @@ class Unrealircd6(IProtocol):
|
|||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
batch_size = self._Config.BATCH_SIZE
|
batch_size = self._Config.BATCH_SIZE
|
||||||
User_from = self._Irc.User.get_user(nick_from)
|
user_from = self._Irc.User.get_user(nick_from)
|
||||||
User_to = self._Irc.User.get_user(nick_to)
|
user_to = self._Irc.User.get_user(nick_to)
|
||||||
|
|
||||||
if User_from is None or User_to is None:
|
if user_from is None or user_to is None:
|
||||||
self._Logs.error(f"The sender [{nick_from}] or the Reciever [{nick_to}] do not exist")
|
self._Logs.error(f"The sender [{nick_from}] or the Reciever [{nick_to}] do not exist")
|
||||||
return None
|
return None
|
||||||
|
|
||||||
for i in range(0, len(str(msg)), batch_size):
|
for i in range(0, len(str(msg)), batch_size):
|
||||||
batch = str(msg)[i:i+batch_size]
|
batch = str(msg)[i:i+batch_size]
|
||||||
self.send2socket(f":{User_from.uid} NOTICE {User_to.uid} :{batch}")
|
self.send2socket(f":{user_from.uid} NOTICE {user_to.uid} :{batch}")
|
||||||
|
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
self._Logs.error(f"General Error: {err}")
|
self._Logs.error(f"General Error: {err}")
|
||||||
@@ -199,7 +198,7 @@ class Unrealircd6(IProtocol):
|
|||||||
service_info = self._Config.SERVICE_INFO
|
service_info = self._Config.SERVICE_INFO
|
||||||
service_smodes = self._Config.SERVICE_SMODES
|
service_smodes = self._Config.SERVICE_SMODES
|
||||||
service_cmodes = self._Config.SERVICE_CMODES
|
service_cmodes = self._Config.SERVICE_CMODES
|
||||||
service_umodes = self._Config.SERVICE_UMODES
|
# service_umodes = self._Config.SERVICE_UMODES
|
||||||
service_hostname = self._Config.SERVICE_HOST
|
service_hostname = self._Config.SERVICE_HOST
|
||||||
service_name = self._Config.SERVICE_NAME
|
service_name = self._Config.SERVICE_NAME
|
||||||
protocolversion = self.protocol_version
|
protocolversion = self.protocol_version
|
||||||
@@ -251,8 +250,8 @@ class Unrealircd6(IProtocol):
|
|||||||
"""
|
"""
|
||||||
self.send2socket(f":{self._Config.SERVICE_NICKNAME} NICK {newnickname}")
|
self.send2socket(f":{self._Config.SERVICE_NICKNAME} NICK {newnickname}")
|
||||||
|
|
||||||
userObj = self._Irc.User.get_user(self._Config.SERVICE_NICKNAME)
|
user_obj = self._Irc.User.get_user(self._Config.SERVICE_NICKNAME)
|
||||||
self._Irc.User.update_nickname(userObj.uid, newnickname)
|
self._Irc.User.update_nickname(user_obj.uid, newnickname)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def send_set_mode(self, modes: str, *, nickname: Optional[str] = None, channel_name: Optional[str] = None, params: Optional[str] = None) -> None:
|
def send_set_mode(self, modes: str, *, nickname: Optional[str] = None, channel_name: Optional[str] = None, params: Optional[str] = None) -> None:
|
||||||
@@ -339,21 +338,20 @@ class Unrealircd6(IProtocol):
|
|||||||
"""_summary_
|
"""_summary_
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
from_nick (str): _description_
|
nick_to_sapart (str): _description_
|
||||||
nick_to (str): _description_
|
|
||||||
channel_name (str): _description_
|
channel_name (str): _description_
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
|
|
||||||
userObj = self._Irc.User.get_user(uidornickname=nick_to_sapart)
|
user_obj = self._Irc.User.get_user(uidornickname=nick_to_sapart)
|
||||||
chanObj = self._Irc.Channel.get_channel(channel_name)
|
chan_obj = self._Irc.Channel.get_channel(channel_name)
|
||||||
service_uid = self._Config.SERVICE_ID
|
service_uid = self._Config.SERVICE_ID
|
||||||
|
|
||||||
if userObj is None or chanObj is None:
|
if user_obj is None or chan_obj is None:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
self.send2socket(f":{service_uid} SAPART {userObj.nickname} {chanObj.name}")
|
self.send2socket(f":{service_uid} SAPART {user_obj.nickname} {chan_obj.name}")
|
||||||
self._Irc.Channel.delete_user_from_channel(chanObj.name, userObj.uid)
|
self._Irc.Channel.delete_user_from_channel(chan_obj.name, user_obj.uid)
|
||||||
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@@ -369,28 +367,28 @@ class Unrealircd6(IProtocol):
|
|||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
|
|
||||||
userObj = self._Irc.User.get_user(uidornickname=nick_to_sajoin)
|
user_obj = self._Irc.User.get_user(uidornickname=nick_to_sajoin)
|
||||||
chanObj = self._Irc.Channel.get_channel(channel_name)
|
chan_obj = self._Irc.Channel.get_channel(channel_name)
|
||||||
service_uid = self._Config.SERVICE_ID
|
service_uid = self._Config.SERVICE_ID
|
||||||
|
|
||||||
if userObj is None:
|
if user_obj is None:
|
||||||
# User not exist: leave
|
# User not exist: leave
|
||||||
return None
|
return None
|
||||||
|
|
||||||
if chanObj is None:
|
if chan_obj is None:
|
||||||
# Channel not exist
|
# Channel not exist
|
||||||
if not self._Irc.Channel.is_valid_channel(channel_name):
|
if not self._Irc.Channel.is_valid_channel(channel_name):
|
||||||
# Incorrect channel: leave
|
# Incorrect channel: leave
|
||||||
return None
|
return None
|
||||||
|
|
||||||
# Create the new channel with the uid
|
# Create the new channel with the uid
|
||||||
newChanObj = self._Irc.Loader.Definition.MChannel(name=channel_name, uids=[userObj.uid])
|
new_chan_obj = self._Irc.Loader.Definition.MChannel(name=channel_name, uids=[user_obj.uid])
|
||||||
self._Irc.Channel.insert(newChanObj)
|
self._Irc.Channel.insert(new_chan_obj)
|
||||||
self.send2socket(f":{service_uid} SAJOIN {userObj.nickname} {newChanObj.name}")
|
self.send2socket(f":{service_uid} SAJOIN {user_obj.nickname} {new_chan_obj.name}")
|
||||||
|
|
||||||
else:
|
else:
|
||||||
self._Irc.Channel.add_user_to_a_channel(channel_name=channel_name, uid=userObj.uid)
|
self._Irc.Channel.add_user_to_a_channel(channel_name=channel_name, uid=user_obj.uid)
|
||||||
self.send2socket(f":{service_uid} SAJOIN {userObj.nickname} {chanObj.name}")
|
self.send2socket(f":{service_uid} SAJOIN {user_obj.nickname} {chan_obj.name}")
|
||||||
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@@ -472,7 +470,7 @@ class Unrealircd6(IProtocol):
|
|||||||
"""Logout a client from his account
|
"""Logout a client from his account
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
client_uid (str): The Client UID
|
client_obj (MClient): The Client object
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
c_uid = client_obj.uid
|
c_uid = client_obj.uid
|
||||||
@@ -483,31 +481,33 @@ class Unrealircd6(IProtocol):
|
|||||||
except Exception as err:
|
except Exception as err:
|
||||||
self._Logs.error(f'General Error: {err}')
|
self._Logs.error(f'General Error: {err}')
|
||||||
|
|
||||||
def send_quit(self, uid: str, reason: str, print_log: True) -> None:
|
def send_quit(self, uid: str, reason: str, print_log: bool = True) -> None:
|
||||||
"""Send quit message
|
"""Send quit message
|
||||||
- Delete uid from User object
|
- Delete uid from User object
|
||||||
- Delete uid from Reputation object
|
- Delete uid from Reputation object
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
uidornickname (str): The UID or the Nickname
|
uid (str): The UID or the Nickname
|
||||||
reason (str): The reason for the quit
|
reason (str): The reason for the quit
|
||||||
|
print_log (bool): Print the log
|
||||||
"""
|
"""
|
||||||
user_obj = self._Irc.User.get_user(uidornickname=uid)
|
user_obj = self._Irc.User.get_user(uidornickname=uid)
|
||||||
reputationObj = self._Irc.Reputation.get_reputation(uidornickname=uid)
|
reputation_obj = self._Irc.Reputation.get_reputation(uidornickname=uid)
|
||||||
|
|
||||||
if not user_obj is None:
|
if not user_obj is None:
|
||||||
self.send2socket(f":{user_obj.uid} QUIT :{reason}", print_log=print_log)
|
self.send2socket(f":{user_obj.uid} QUIT :{reason}", print_log=print_log)
|
||||||
self._Irc.User.delete(user_obj.uid)
|
self._Irc.User.delete(user_obj.uid)
|
||||||
|
|
||||||
if not reputationObj is None:
|
if not reputation_obj is None:
|
||||||
self._Irc.Reputation.delete(reputationObj.uid)
|
self._Irc.Reputation.delete(reputation_obj.uid)
|
||||||
|
|
||||||
if not self._Irc.Channel.delete_user_from_all_channel(uid):
|
if not self._Irc.Channel.delete_user_from_all_channel(uid):
|
||||||
self._Logs.error(f"The UID [{uid}] has not been deleted from all channels")
|
self._Logs.error(f"The UID [{uid}] has not been deleted from all channels")
|
||||||
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def send_uid(self, nickname:str, username: str, hostname: str, uid:str, umodes: str, vhost: str, remote_ip: str, realname: str, print_log: bool = True) -> None:
|
def send_uid(self, nickname:str, username: str, hostname: str, uid:str, umodes: str,
|
||||||
|
vhost: str, remote_ip: str, realname: str, print_log: bool = True) -> None:
|
||||||
"""Send UID to the server
|
"""Send UID to the server
|
||||||
- Insert User to User Object
|
- Insert User to User Object
|
||||||
Args:
|
Args:
|
||||||
@@ -555,34 +555,34 @@ class Unrealircd6(IProtocol):
|
|||||||
print_log (bool, optional): Write logs. Defaults to True.
|
print_log (bool, optional): Write logs. Defaults to True.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
userObj = self._Irc.User.get_user(uidornickname)
|
user_obj = self._Irc.User.get_user(uidornickname)
|
||||||
passwordChannel = password if not password is None else ''
|
pwd_channel = password if not password is None else ''
|
||||||
|
|
||||||
if userObj is None:
|
if user_obj is None:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
if not self._Irc.Channel.is_valid_channel(channel):
|
if not self._Irc.Channel.is_valid_channel(channel):
|
||||||
self._Logs.error(f"The channel [{channel}] is not valid")
|
self._Logs.error(f"The channel [{channel}] is not valid")
|
||||||
return None
|
return None
|
||||||
|
|
||||||
self.send2socket(f":{userObj.uid} JOIN {channel} {passwordChannel}", print_log=print_log)
|
self.send2socket(f":{user_obj.uid} JOIN {channel} {pwd_channel}", print_log=print_log)
|
||||||
|
|
||||||
if uidornickname == self._Config.SERVICE_NICKNAME or uidornickname == self._Config.SERVICE_ID:
|
if uidornickname == self._Config.SERVICE_NICKNAME or uidornickname == self._Config.SERVICE_ID:
|
||||||
self.send2socket(f":{self._Config.SERVICE_ID} MODE {channel} {self._Config.SERVICE_UMODES} {self._Config.SERVICE_ID}")
|
self.send2socket(f":{self._Config.SERVICE_ID} MODE {channel} {self._Config.SERVICE_UMODES} {self._Config.SERVICE_ID}")
|
||||||
|
|
||||||
# Add defender to the channel uids list
|
# Add defender to the channel uids list
|
||||||
self._Irc.Channel.insert(self._Irc.Loader.Definition.MChannel(name=channel, uids=[userObj.uid]))
|
self._Irc.Channel.insert(self._Irc.Loader.Definition.MChannel(name=channel, uids=[user_obj.uid]))
|
||||||
|
|
||||||
# Set the automode to the user
|
# Set the automode to the user
|
||||||
if 'r' not in userObj.umodes and 'o' not in userObj.umodes:
|
if 'r' not in user_obj.umodes and 'o' not in user_obj.umodes:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
db_data: dict[str, str] = {"nickname": userObj.nickname, "channel": channel}
|
db_data: dict[str, str] = {"nickname": user_obj.nickname, "channel": channel}
|
||||||
db_query = self._Base.db_execute_query("SELECT id, mode FROM command_automode WHERE nickname = :nickname AND channel = :channel", db_data)
|
db_query = self._Base.db_execute_query("SELECT id, mode FROM command_automode WHERE nickname = :nickname AND channel = :channel", db_data)
|
||||||
db_result = db_query.fetchone()
|
db_result = db_query.fetchone()
|
||||||
if db_result is not None:
|
if db_result is not None:
|
||||||
id, mode = db_result
|
id_cmd_automode, mode = db_result
|
||||||
self.send2socket(f":{self._Config.SERVICE_ID} MODE {channel} {mode} {userObj.nickname}")
|
self.send2socket(f":{self._Config.SERVICE_ID} MODE {channel} {mode} {user_obj.nickname}")
|
||||||
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user