diff --git a/core/classes/protocols/inspircd.py b/core/classes/protocols/inspircd.py index f725b02..c7abba0 100644 --- a/core/classes/protocols/inspircd.py +++ b/core/classes/protocols/inspircd.py @@ -126,26 +126,11 @@ class Inspircd: self.send2socket(f"CAPAB START 1206") - self.send2socket(f"CAPAB CHANMODES :list:ban=b param-set:limit=l param:key=k prefix:10000:voice=+v prefix:30000:op=@o simple:inviteonly=i simple:moderated=m simple:noextmsg=n simple:private=p simple:secret=s simple:topiclock=t") - self.send2socket(f"CAPAB USERMODES :param-set:snomask=s simple:invisible=i simple:oper=o simple:wallops=w") self.send2socket(f"CAPAB CAPABILITIES :NICKMAX=30 CHANMAX=64 MAXMODES=20 IDENTMAX=10 MAXQUIT=255 MAXTOPIC=307 MAXKICK=255 MAXREAL=128 MAXAWAY=200 MAXHOST=64 MAXLINE=512 CASEMAPPING=ascii GLOBOPS=0") self.send2socket(f"CAPAB END") - self.send2socket(f"SERVER {link} wobble {server_id} 079 :{service_name}") - - - # self.__Irc.send2socket(f":{sid} PROTOCTL NICKv2 VHP UMODE2 NICKIP SJOIN SJOIN2 SJ3 NOQUIT TKLEXT MLOCK SID MTAGS") - # self.send2socket(f":{server_id} PROTOCTL EAUTH={link},,,{service_name}-v{version}") - # self.send2socket(f":{server_id} PROTOCTL SID={server_id}") - # self.send2socket(f":{server_id} SERVER {link} 1 :{info}") - # self.send2socket(f":{server_id} {nickname} :Reserved for services") - # #self.__Irc.send2socket(f":{sid} UID {nickname} 1 {unixtime} {username} {host} {service_id} * {smodes} * * * :{realname}") - # self.send2socket(f":{server_id} UID {nickname} 1 {unixtime} {username} {host} {service_id} * {smodes} * * fwAAAQ== :{realname}") - # # self.__Irc.send2socket(f":{server_id} SJOIN {unixtime} {chan} + :{service_id}") - # self.sjoin(chan) - # self.send2socket(f":{server_id} TKL + Q * {nickname} {host} 0 {unixtime} :Reserved for services") - - # self.send2socket(f":{service_id} MODE {chan} {cmodes}") - # self.send2socket(f":{service_id} MODE {chan} {umodes} {service_id}") + self.send2socket(f"SERVER {link} {password} {server_id} :{info}") + self.send2socket(f"BURST {unixtime}") + self.send2socket(f":{server_id} ENDBURST") self.__Base.logs.debug(f'>> {__name__} Link information sent to the server') @@ -565,9 +550,12 @@ class Inspircd: serverMsg (list[str]): List of str coming from the server """ try: + # InspIRCd 3: + # <- :3IN PING 808 + # -> :808 PONG 3IN - pong = str(serverMsg[1]).replace(':','') - self.send2socket(f"PONG :{pong}", print_log=False) + hsid = str(serverMsg[0]).replace(':','') + self.send2socket(f":{self.__Config.SERVEUR_ID} PONG {hsid}", print_log=True) return None except Exception as err: diff --git a/core/classes/settings.py b/core/classes/settings.py index b42d95b..715f03c 100644 --- a/core/classes/settings.py +++ b/core/classes/settings.py @@ -7,8 +7,8 @@ class Settings: RUNNING_THREADS: list[Thread] = [] RUNNING_SOCKETS: list[socket] = [] PERIODIC_FUNC: dict[object] = {} - LOCK: RLock = RLock() + LOCK: RLock = RLock() CONSOLE: bool = True - USER_MODES: list[str] = [] + USER_MODES: list[str] = [] diff --git a/core/definition.py b/core/definition.py index ac557b7..c983760 100644 --- a/core/definition.py +++ b/core/definition.py @@ -187,6 +187,9 @@ class MConfig: CLONE_CMODES: str = "+nts" """Clone channel modes (ex. +nts)""" + CLONE_UMODES: str = '+iwxz' + """Clone User modes (ex. +iwxz)""" + CLONE_LOG_HOST_EXEMPT: list[str] = field(default_factory=list[str]) """Hosts that clones will not log""" diff --git a/core/irc.py b/core/irc.py index f11f78a..4e05fc6 100644 --- a/core/irc.py +++ b/core/irc.py @@ -230,6 +230,7 @@ class Irc: self.Logs.error(f"SSLEOFError __connect_to_irc: {soe} - {data}") except ssl.SSLError as se: self.Logs.error(f"SSLError __connect_to_irc: {se} - {data}") + sys.exit(1) except OSError as oe: self.Logs.error(f"SSLError __connect_to_irc: {oe} - {data}") except (socket.error, ConnectionResetError): @@ -768,7 +769,12 @@ class Irc: return False match original_response[1]: - + + case 'PING': + # Sending PONG response to the serveur + self.Protocol.on_server_ping(original_response) + return None + case 'SLOG': # self.Base.scan_ports(cmd[7]) # if self.Config.ABUSEIPDB == 1: diff --git a/mods/mod_clone.py b/mods/mod_clone.py index ba74390..0aca364 100644 --- a/mods/mod_clone.py +++ b/mods/mod_clone.py @@ -157,7 +157,6 @@ class Clone(): def generate_clones(self, group: str = 'Default') -> None: try: - # :5TC UID Q 1 1727473203 qb4u localhost 5TC00000Q * Sdiop network/service/test * AAAAAAAAAAAAAAAAAAAAAQ== :qbot4u fakeEN = self.fakeEN fakeFR = self.fakeFR @@ -167,7 +166,7 @@ class Clone(): generate_uid = fakeEN.random_sample(chaine, 6) uid = self.Config.SERVEUR_ID + ''.join(generate_uid) - umodes = '+iwxz' + umodes = self.Config.CLONE_UMODES # Generate Username chaine = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789' @@ -210,16 +209,16 @@ class Clone(): checkUid = self.Clone.uid_exists(uid=uid) clone = self.Definition.MClone( - connected=False, - nickname=nickname, - username=username, + connected=False, + nickname=nickname, + username=username, realname=realname, hostname=hostname, umodes=umodes, - uid=uid, - remote_ip=decoded_ip, - vhost=vhost, - group=group, + uid=uid, + remote_ip=decoded_ip, + vhost=vhost, + group=group, channels=[] )