From 7be3f51bf4b9547dc99d6b652b117689d0ab32c7 Mon Sep 17 00:00:00 2001 From: adator <85586985+adator85@users.noreply.github.com> Date: Sat, 21 Sep 2024 16:28:50 +0200 Subject: [PATCH] V5.2.9 --- core/base.py | 2 -- core/irc.py | 56 ++++++++++++++++++++++++++++++++++++++++++++++- mods/mod_clone.py | 4 +++- version.json | 2 +- 4 files changed, 59 insertions(+), 5 deletions(-) diff --git a/core/base.py b/core/base.py index 922ab74..6a2e1cc 100644 --- a/core/base.py +++ b/core/base.py @@ -26,8 +26,6 @@ class Base: self.engine, self.cursor = self.db_init() # Initialisation de la connexion a la base de données self.__create_db() # Initialisation de la base de données - self.db_create_first_admin() # Créer un nouvel admin si la base de données est vide - def __set_current_defender_version(self) -> None: """This will put the current version of Defender located in version.json diff --git a/core/irc.py b/core/irc.py index a8f1f8e..db194f0 100644 --- a/core/irc.py +++ b/core/irc.py @@ -29,7 +29,7 @@ class Irc: # Liste des commandes internes du bot self.commands_level = { - 0: ['help', 'auth', 'copyright', 'uptime'], + 0: ['help', 'auth', 'copyright', 'uptime', 'firstauth'], 1: ['load','reload','unload', 'deauth', 'checkversion'], 2: ['show_modules', 'show_timers', 'show_threads', 'show_channels', 'show_users', 'show_admins'], 3: ['quit', 'restart','addaccess','editaccess', 'delaccess'] @@ -1019,6 +1019,56 @@ class Irc: self.delete_db_admin(uid_to_deauth) self.send2socket(f":{dnickname} PRIVMSG {dchanlog} :[ {self.Config.CONFIG_COLOR['rouge']}{str(current_command).upper()} ]{self.Config.CONFIG_COLOR['noire']} - {self.User.get_nickname(fromuser)} est désormais déconnecter de {dnickname}") + case 'firstauth': + # firstauth OWNER_NICKNAME OWNER_PASSWORD + current_nickname = self.User.get_nickname(fromuser) + current_uid = self.User.get_uid(fromuser) + current_command = str(cmd[0]) + + query = f"SELECT count(id) as c FROM {self.Config.table_admin}" + result = self.Base.db_execute_query(query) + result_db = result.fetchone() + + if result_db[0] > 0: + self.send2socket(f":{dnickname} NOTICE {fromuser} :You can't use this command anymore ! Please use [{self.Config.SERVICE_PREFIX}auth] instead") + return False + + if current_nickname is None: + self.Base.logs.critical(f"This nickname [{fromuser}] don't exist") + return False + + # Credentials sent from the user + cmd_owner = str(cmd[1]) + cmd_password = str(cmd[2]) + + # Credentials coming from the Configuration + config_owner = self.Config.OWNER + config_password = self.Config.PASSWORD + + if current_nickname != cmd_owner: + self.Base.logs.critical(f"The current nickname [{fromuser}] is different than the nickname sent [{cmd_owner}] !") + self.send2socket(f":{dnickname} NOTICE {fromuser} :The current nickname [{fromuser}] is different than the nickname sent [{cmd_owner}] !") + return False + + if current_nickname != config_owner: + self.Base.logs.critical(f"The current nickname [{current_nickname}] is different than the configuration owner [{config_owner}] !") + self.send2socket(f":{dnickname} NOTICE {fromuser} :The current nickname [{current_nickname}] is different than the configuration owner [{config_owner}] !") + return False + + if cmd_owner != config_owner: + self.Base.logs.critical(f"The nickname sent [{cmd_owner}] is different than the configuration owner [{config_owner}] !") + self.send2socket(f":{dnickname} NOTICE {fromuser} :The nickname sent [{cmd_owner}] is different than the configuration owner [{config_owner}] !") + return False + + if cmd_owner == config_owner and cmd_password == config_password: + self.Base.db_create_first_admin() + self.insert_db_admin(current_uid, 5) + self.send2socket(f":{dnickname} PRIVMSG {dchanlog} :[ {self.Config.CONFIG_COLOR['verte']}{str(current_command).upper()} ]{self.Config.CONFIG_COLOR['noire']} - {self.User.get_nickname(fromuser)} est désormais connecté a {dnickname}") + self.send2socket(f":{self.Config.SERVICE_NICKNAME} NOTICE {fromuser} :Connexion a {dnickname} réussie!") + else: + self.send2socket(f":{dnickname} PRIVMSG {dchanlog} :[ {self.Config.CONFIG_COLOR['rouge']}{str(current_command).upper()} ]{self.Config.CONFIG_COLOR['noire']} - {self.User.get_nickname(fromuser)} a tapé un mauvais mot de pass") + self.send2socket(f":{self.Config.SERVICE_NICKNAME} NOTICE {fromuser} :Mot de passe incorrecte") + case 'auth': # ['auth', 'adator', 'password'] current_command = cmd[0] @@ -1051,6 +1101,10 @@ class Irc: case 'addaccess': try: # .addaccess adator 5 password + if len(cmd) < 4: + self.send2socket(f':{dnickname} NOTICE {fromuser} : Right command : /msg {dnickname} addaccess [nickname] [level] [password]') + self.send2socket(f':{dnickname} NOTICE {fromuser} : level: from 1 to 4') + newnickname = cmd[1] newlevel = self.Base.int_if_possible(cmd[2]) password = cmd[3] diff --git a/mods/mod_clone.py b/mods/mod_clone.py index 9c3643f..a8a2129 100644 --- a/mods/mod_clone.py +++ b/mods/mod_clone.py @@ -347,8 +347,10 @@ class Clone(): case 'list': try: + clone_count = len(self.Clone.UID_CLONE_DB) + self.Irc.send2socket(f':{dnickname} NOTICE {fromuser} :>> Number of connected clones: {clone_count}') for clone_name in self.Clone.UID_CLONE_DB: - self.Irc.send2socket(f':{dnickname} NOTICE {fromuser} :>> Nickname: {clone_name.nickname} | Username: {clone_name.username}') + self.Irc.send2socket(f':{dnickname} NOTICE {fromuser} :>> Nickname: {clone_name.nickname} | Username: {clone_name.username} | Realname: {clone_name.realname} | Vhost: {clone_name.vhost} | Connected: {clone_name.connected}') except Exception as err: self.Logs.error(f'{err}') diff --git a/version.json b/version.json index 188602a..cdc5ae6 100644 --- a/version.json +++ b/version.json @@ -1,3 +1,3 @@ { - "version": "5.2.8" + "version": "5.2.9" } \ No newline at end of file