From 3cdee5fddfaf3e580600da68ed3c519f64cd0e62 Mon Sep 17 00:00:00 2001 From: adator <85586985+adator85@users.noreply.github.com> Date: Tue, 1 Oct 2024 01:17:00 +0200 Subject: [PATCH] V5.3.5 --- core/irc.py | 12 ++++++++-- mods/mod_defender.py | 55 +++++--------------------------------------- mods/mod_test.py | 6 ++++- mods/mod_votekick.py | 17 +++++++------- version.json | 2 +- 5 files changed, 31 insertions(+), 61 deletions(-) diff --git a/core/irc.py b/core/irc.py index cc6612a..7703499 100644 --- a/core/irc.py +++ b/core/irc.py @@ -821,7 +821,7 @@ class Irc: self.Base.logs.info(f"# CHANNEL : {self.Config.SERVICE_CHANLOG} ") self.Base.logs.info(f"# VERSION : {version} ") self.Base.logs.info(f"################################################") - + if self.Base.check_for_new_version(False): self.send2socket(f":{self.Config.SERVICE_NICKNAME} PRIVMSG {self.Config.SERVICE_CHANLOG} : New Version available {version}") @@ -829,6 +829,13 @@ class Irc: self.sendPrivMsg(msg=f'[{self.Config.COLORS.green}INFORMATION{self.Config.COLORS.nogc}] >> Defender is ready', channel=self.Config.SERVICE_CHANLOG) self.INIT = 0 + # Send EOF to other modules + for classe_name, classe_object in self.loaded_classes.items(): + classe_object.cmd(original_response) + + # Stop here When EOS + return None + case _: pass @@ -1348,8 +1355,9 @@ class Irc: batch_commands = ' | '.join(groupe) self.send2socket(f':{dnickname} NOTICE {fromuser} : {batch_commands}') + self.send2socket(f':{dnickname} NOTICE {fromuser} : ') + count_level_definition += 1 - self.send2socket(f':{dnickname} NOTICE {fromuser} : ') self.send2socket(f':{dnickname} NOTICE {fromuser} : ***************** FIN DES COMMANDES *****************') diff --git a/mods/mod_defender.py b/mods/mod_defender.py index 15674e0..8d8caed 100644 --- a/mods/mod_defender.py +++ b/mods/mod_defender.py @@ -111,9 +111,6 @@ class Defender(): self.__load_module_configuration() # End of mandatory methods you can start your customization # - # # Rejoindre les salons - # self.join_saved_channels() - self.timeout = self.Config.API_TIMEOUT # Listes qui vont contenir les ip a scanner avec les différentes API @@ -150,7 +147,7 @@ class Defender(): self.Base.create_thread(func=self.thread_reputation_timer) if self.ModConfig.reputation == 1: - self.Irc.send2socket(f":{self.Config.SERVICE_ID} SAMODE {self.Config.SALON_JAIL} +{self.Config.SERVICE_UMODES} {self.Config.SERVICE_NICKNAME}") + self.Irc.send2socket(f":{self.Config.SERVEUR_ID} SJOIN {self.Base.get_unixtime()} {self.Config.SALON_JAIL} + :{self.Config.SERVICE_ID}") return None @@ -249,40 +246,6 @@ class Defender(): self.reputationTimer_isRunning:bool = False return None - def add_defender_channel(self, channel:str) -> bool: - """Cette fonction ajoute les salons de join de Defender - - Args: - channel (str): le salon à enregistrer. - """ - mes_donnees = {'channel': channel} - response = self.Base.db_execute_query("SELECT id FROM def_channels WHERE channel = :channel", mes_donnees) - - isChannelExist = response.fetchone() - - if isChannelExist is None: - mes_donnees = {'datetime': self.Base.get_datetime(), 'channel': channel} - insert = self.Base.db_execute_query(f"INSERT INTO def_channels (datetime, channel) VALUES (:datetime, :channel)", mes_donnees) - return True - else: - return False - - def delete_defender_channel(self, channel:str) -> bool: - """Cette fonction supprime les salons de join de Defender - - Args: - channel (str): le salon à enregistrer. - """ - mes_donnes = {'channel': channel} - response = self.Base.db_execute_query("DELETE FROM def_channels WHERE channel = :channel", mes_donnes) - - affected_row = response.rowcount - - if affected_row > 0: - return True - else: - return False - def reputation_insert(self, reputationModel: ReputationModel) -> bool: response = False @@ -372,7 +335,7 @@ class Defender(): def join_saved_channels(self) -> None: - result = self.Base.db_execute_query("SELECT id, channel FROM def_channels") + result = self.Base.db_execute_query(f"SELECT distinct channel_name FROM {self.Config.table_channel}") channels = result.fetchall() jail_chan = self.Config.SALON_JAIL jail_chan_mode = self.Config.SALON_JAIL_MODES @@ -383,7 +346,7 @@ class Defender(): unixtime = self.Base.get_unixtime() for channel in channels: - id, chan = channel + chan = channel[0] self.Irc.send2socket(f":{self.Config.SERVEUR_ID} SJOIN {unixtime} {chan} + :{self.Config.SERVICE_ID}") if chan == jail_chan: self.Irc.send2socket(f":{service_id} SAMODE {jail_chan} +{dumodes} {dnickname}") @@ -1004,15 +967,8 @@ class Defender(): service_id = self.Config.SERVICE_ID # Defender serveur id cmd = list(data).copy() - if len(cmd) < 2: - return None - match cmd[1]: - case 'EOS': - if self.Irc.INIT == 0: - self.Irc.send2socket(f":{service_id} SAMODE {self.Config.SALON_JAIL} +{self.Config.SERVICE_UMODES} {self.Config.SERVICE_NICKNAME}") - case 'REPUTATION': # :001 REPUTATION 91.168.141.239 118 try: @@ -1096,8 +1052,9 @@ class Defender(): get_reputation = self.reputation_get_Reputation(parsed_UID) - self.Irc.send2socket(f":{service_id} MODE {parsed_chan} +b ~security-group:unknown-users") - self.Irc.send2socket(f":{service_id} MODE {parsed_chan} +eee ~security-group:webirc-users ~security-group:known-users ~security-group:websocket-users") + if parsed_chan != self.Config.SALON_JAIL: + self.Irc.send2socket(f":{service_id} MODE {parsed_chan} +b ~security-group:unknown-users") + self.Irc.send2socket(f":{service_id} MODE {parsed_chan} +eee ~security-group:webirc-users ~security-group:known-users ~security-group:websocket-users") if not get_reputation is None: isWebirc = get_reputation.isWebirc diff --git a/mods/mod_test.py b/mods/mod_test.py index 4c3ddce..418b777 100644 --- a/mods/mod_test.py +++ b/mods/mod_test.py @@ -124,8 +124,12 @@ class Test(): return None def cmd(self, data:list) -> None: + try: + cmd = list(data).copy() - return None + return None + except Exception as err: + self.Base.logs.error(f"General Error: {err}") def _hcmds(self, user:str, channel: any, cmd: list, fullcmd: list = []) -> None: diff --git a/mods/mod_votekick.py b/mods/mod_votekick.py index 61be294..5a8de26 100644 --- a/mods/mod_votekick.py +++ b/mods/mod_votekick.py @@ -242,15 +242,16 @@ class Votekick(): return None def cmd(self, data:list) -> None: - cmd = list(data).copy() + try: + cmd = list(data).copy() + return None - match cmd[2]: - case 'SJOIN': - pass - case _: - pass - - return None + except KeyError as ke: + self.Base.logs.error(f"Key Error: {ke}") + except IndexError as ie: + self.Base.logs.error(f"{ie} / {cmd} / length {str(len(cmd))}") + except Exception as err: + self.Base.logs.error(f"General Error: {err}") def _hcmds(self, user:str, channel: any, cmd: list, fullcmd: list = []) -> None: # cmd is the command starting from the user command diff --git a/version.json b/version.json index 1b12f9e..3334497 100644 --- a/version.json +++ b/version.json @@ -1,3 +1,3 @@ { - "version": "5.3.4" + "version": "5.3.5" } \ No newline at end of file