diff --git a/core/base.py b/core/base.py index ba99e9c..bb39d27 100644 --- a/core/base.py +++ b/core/base.py @@ -1,7 +1,7 @@ import time, threading, os, random, socket, hashlib, ipaddress, logging, requests, json, re, ast from dataclasses import fields from typing import Union, Literal -from base64 import b64decode +from base64 import b64decode, b64encode from datetime import datetime from sqlalchemy import create_engine, Engine, Connection, CursorResult from sqlalchemy.sql import text @@ -678,6 +678,17 @@ class Base: self.logs.critical(f'This remote ip is not valid : {ve}') return None + # def encode_ip(self, remote_ip_address: str) -> Union[str, None]: + + # binary_ip = b64encode() + # try: + # decoded_ip = ipaddress.ip_address(binary_ip) + + # return decoded_ip.exploded + # except ValueError as ve: + # self.logs.critical(f'This remote ip is not valid : {ve}') + # return None + def get_random(self, lenght:int) -> str: """ Retourn une chaîne aléatoire en fonction de la longueur spécifiée. diff --git a/core/irc.py b/core/irc.py index 99853d9..d6bf9a0 100644 --- a/core/irc.py +++ b/core/irc.py @@ -110,8 +110,8 @@ class Irc: self.ircObject = ircInstance # créer une copie de l'instance Irc self.__link(self.IrcSocket) # établir la connexion au serveur IRC self.signal = True # Une variable pour initier la boucle infinie - self.load_existing_modules() # Charger les modules existant dans la base de données self.__join_saved_channels() # Join existing channels + self.load_existing_modules() # Charger les modules existant dans la base de données while self.signal: try: @@ -131,6 +131,7 @@ class Irc: self.__create_socket() self.__link(self.IrcSocket) + self.__join_saved_channels() self.load_existing_modules() self.RESTART = 0 @@ -212,7 +213,8 @@ class Irc: writer.send(f":{sid} PROTOCTL SID={sid}\r\n".encode(charset)) writer.send(f":{sid} SERVER {link} 1 :{info}\r\n".encode(charset)) writer.send(f":{sid} {nickname} :Reserved for services\r\n".encode(charset)) - writer.send(f":{sid} UID {nickname} 1 {unixtime} {username} {host} {service_id} * {smodes} * * * :{realname}\r\n".encode(charset)) + #writer.send(f":{sid} UID {nickname} 1 {unixtime} {username} {host} {service_id} * {smodes} * * * :{realname}\r\n".encode(charset)) + writer.send(f":{sid} UID {nickname} 1 {unixtime} {username} {host} {service_id} * {smodes} * * fwAAAQ== :{realname}\r\n".encode(charset)) writer.send(f":{sid} SJOIN {unixtime} {chan} + :{service_id}\r\n".encode(charset)) writer.send(f":{sid} TKL + Q * {nickname} {host} 0 {unixtime} :Reserved for services\r\n".encode(charset)) diff --git a/mods/mod_defender.py b/mods/mod_defender.py index a442ac4..9178699 100644 --- a/mods/mod_defender.py +++ b/mods/mod_defender.py @@ -140,6 +140,9 @@ class Defender(): self.Base.create_thread(func=self.thread_psutil_scan) 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}") + return None def __set_commands(self, commands:dict[int, list[str]]) -> None: @@ -487,6 +490,7 @@ class Defender(): if self.get_user_uptime_in_minutes(user.uid) >= reputation_timer and int(user.score) <= int(reputation_seuil): self.Irc.send2socket(f":{service_id} PRIVMSG {dchanlog} :[{color_red} REPUTATION {color_black}] : Action sur {user.nickname} aprés {str(reputation_timer)} minutes d'inactivité") self.Irc.send2socket(f":{service_id} KILL {user.nickname} After {str(reputation_timer)} minutes of inactivity you should reconnect and type the password code ") + self.Irc.send2socket(f":{self.Config.SERVEUR_LINK} REPUTATION {user.ip} 0") self.Logs.info(f"Nickname: {user.nickname} KILLED after {str(reputation_timer)} minutes of inactivity") uid_to_clean.append(user.uid) @@ -946,6 +950,10 @@ class Defender(): 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: diff --git a/version.json b/version.json index fbf0de9..7aa2f24 100644 --- a/version.json +++ b/version.json @@ -1,3 +1,3 @@ { - "version": "5.1.7" + "version": "5.1.8" } \ No newline at end of file