mirror of
https://github.com/iio612/DEFENDER.git
synced 2026-02-13 19:24:23 +00:00
Adding Geoip to the UserModel
This commit is contained in:
@@ -18,6 +18,7 @@ class User:
|
|||||||
isWebsocket: bool
|
isWebsocket: bool
|
||||||
remote_ip: str
|
remote_ip: str
|
||||||
score_connexion: int
|
score_connexion: int
|
||||||
|
geoip: str = None
|
||||||
connexion_datetime: datetime = field(default=datetime.now())
|
connexion_datetime: datetime = field(default=datetime.now())
|
||||||
|
|
||||||
UID_DB: list[UserModel] = []
|
UID_DB: list[UserModel] = []
|
||||||
|
|||||||
93
core/irc.py
93
core/irc.py
@@ -591,7 +591,7 @@ class Irc:
|
|||||||
self.send2socket(f':{dnickname} NOTICE {fromuser} : Please run (git pull origin main) in the current folder')
|
self.send2socket(f':{dnickname} NOTICE {fromuser} : Please run (git pull origin main) in the current folder')
|
||||||
else:
|
else:
|
||||||
self.send2socket(f':{dnickname} NOTICE {fromuser} : You have the latest version of defender')
|
self.send2socket(f':{dnickname} NOTICE {fromuser} : You have the latest version of defender')
|
||||||
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def cmd(self, data: list[str]) -> None:
|
def cmd(self, data: list[str]) -> None:
|
||||||
@@ -813,52 +813,67 @@ class Irc:
|
|||||||
self.Base.logs.error(f'Index Error: {ie}')
|
self.Base.logs.error(f'Index Error: {ie}')
|
||||||
|
|
||||||
case 'UID':
|
case 'UID':
|
||||||
# ['@s2s-md/geoip=cc=GB|cd=United\\sKingdom|asn=16276|asname=OVH\\sSAS;s2s-md/tls_cipher=TLSv1.3-TLS_CHACHA20_POLY1305_SHA256;s2s-md/creationtime=1721564601',
|
try:
|
||||||
# ':001', 'UID', 'albatros', '0', '1721564597', 'albatros', 'vps-91b2f28b.vps.ovh.net',
|
# ['@s2s-md/geoip=cc=GB|cd=United\\sKingdom|asn=16276|asname=OVH\\sSAS;s2s-md/tls_cipher=TLSv1.3-TLS_CHACHA20_POLY1305_SHA256;s2s-md/creationtime=1721564601',
|
||||||
# '001HB8G04', '0', '+iwxz', 'Clk-A62F1D18.vps.ovh.net', 'Clk-A62F1D18.vps.ovh.net', 'MyZBwg==', ':...']
|
# ':001', 'UID', 'albatros', '0', '1721564597', 'albatros', 'vps-91b2f28b.vps.ovh.net',
|
||||||
|
# '001HB8G04', '0', '+iwxz', 'Clk-A62F1D18.vps.ovh.net', 'Clk-A62F1D18.vps.ovh.net', 'MyZBwg==', ':...']
|
||||||
|
|
||||||
isWebirc = True if 'webirc' in original_response[0] else False
|
isWebirc = True if 'webirc' in original_response[0] else False
|
||||||
isWebsocket = True if 'websocket' in original_response[0] else False
|
isWebsocket = True if 'websocket' in original_response[0] else False
|
||||||
|
|
||||||
uid = str(original_response[8])
|
uid = str(original_response[8])
|
||||||
nickname = str(original_response[3])
|
nickname = str(original_response[3])
|
||||||
username = str(original_response[6])
|
username = str(original_response[6])
|
||||||
hostname = str(original_response[7])
|
hostname = str(original_response[7])
|
||||||
umodes = str(original_response[10])
|
umodes = str(original_response[10])
|
||||||
vhost = str(original_response[11])
|
vhost = str(original_response[11])
|
||||||
if not 'S' in umodes:
|
|
||||||
remote_ip = self.Base.decode_ip(str(original_response[13]))
|
|
||||||
else:
|
|
||||||
remote_ip = '127.0.0.1'
|
|
||||||
|
|
||||||
# extract realname
|
if not 'S' in umodes:
|
||||||
realname_list = []
|
remote_ip = self.Base.decode_ip(str(original_response[13]))
|
||||||
for i in range(14, len(original_response)):
|
else:
|
||||||
realname_list.append(original_response[i])
|
remote_ip = '127.0.0.1'
|
||||||
|
|
||||||
realname = ' '.join(realname_list)[1:]
|
# extract realname
|
||||||
|
realname_list = []
|
||||||
|
for i in range(14, len(original_response)):
|
||||||
|
realname_list.append(original_response[i])
|
||||||
|
|
||||||
score_connexion = self.first_score
|
realname = ' '.join(realname_list)[1:]
|
||||||
|
|
||||||
self.User.insert(
|
# Extract Geoip information
|
||||||
self.User.UserModel(
|
pattern = r'^.*geoip=cc=(\S{2}).*$'
|
||||||
uid=uid,
|
geoip_match = re.match(pattern, original_response[0])
|
||||||
nickname=nickname,
|
|
||||||
username=username,
|
if geoip_match:
|
||||||
realname=realname,
|
geoip = geoip_match.group(1)
|
||||||
hostname=hostname,
|
else:
|
||||||
umodes=umodes,
|
geoip = None
|
||||||
vhost=vhost,
|
|
||||||
isWebirc=isWebirc,
|
score_connexion = self.first_score
|
||||||
isWebsocket=isWebsocket,
|
|
||||||
remote_ip=remote_ip,
|
self.User.insert(
|
||||||
score_connexion=score_connexion,
|
self.User.UserModel(
|
||||||
connexion_datetime=datetime.now()
|
uid=uid,
|
||||||
|
nickname=nickname,
|
||||||
|
username=username,
|
||||||
|
realname=realname,
|
||||||
|
hostname=hostname,
|
||||||
|
umodes=umodes,
|
||||||
|
vhost=vhost,
|
||||||
|
isWebirc=isWebirc,
|
||||||
|
isWebsocket=isWebsocket,
|
||||||
|
remote_ip=remote_ip,
|
||||||
|
geoip=geoip,
|
||||||
|
score_connexion=score_connexion,
|
||||||
|
connexion_datetime=datetime.now()
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
|
||||||
|
|
||||||
for classe_name, classe_object in self.loaded_classes.items():
|
for classe_name, classe_object in self.loaded_classes.items():
|
||||||
classe_object.cmd(original_response)
|
classe_object.cmd(original_response)
|
||||||
|
|
||||||
|
except Exception as err:
|
||||||
|
self.Base.logs.error(f'General Error: {err}')
|
||||||
|
|
||||||
case 'PRIVMSG':
|
case 'PRIVMSG':
|
||||||
try:
|
try:
|
||||||
|
|||||||
@@ -298,8 +298,7 @@ class Clone():
|
|||||||
case 'list':
|
case 'list':
|
||||||
try:
|
try:
|
||||||
for clone_name in self.Clone.UID_CLONE_DB:
|
for clone_name in self.Clone.UID_CLONE_DB:
|
||||||
self.Irc.send2socket(f':{dnickname} NOTICE {fromuser} :>> {clone_name.nickname} | {clone_name.username}')
|
self.Irc.send2socket(f':{dnickname} NOTICE {fromuser} :>> Nickname: {clone_name.nickname} | Username: {clone_name.username}')
|
||||||
pass
|
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
self.Logs.error(f'{err}')
|
self.Logs.error(f'{err}')
|
||||||
|
|
||||||
|
|||||||
@@ -1633,6 +1633,7 @@ class Defender():
|
|||||||
self.Irc.send2socket(f':{dnickname} NOTICE {fromuser} : HOSTNAME : {UserObject.hostname}')
|
self.Irc.send2socket(f':{dnickname} NOTICE {fromuser} : HOSTNAME : {UserObject.hostname}')
|
||||||
self.Irc.send2socket(f':{dnickname} NOTICE {fromuser} : VHOST : {UserObject.vhost}')
|
self.Irc.send2socket(f':{dnickname} NOTICE {fromuser} : VHOST : {UserObject.vhost}')
|
||||||
self.Irc.send2socket(f':{dnickname} NOTICE {fromuser} : IP : {UserObject.remote_ip}')
|
self.Irc.send2socket(f':{dnickname} NOTICE {fromuser} : IP : {UserObject.remote_ip}')
|
||||||
|
self.Irc.send2socket(f':{dnickname} NOTICE {fromuser} : Country : {UserObject.geoip}')
|
||||||
self.Irc.send2socket(f':{dnickname} NOTICE {fromuser} : WebIrc : {UserObject.isWebirc}')
|
self.Irc.send2socket(f':{dnickname} NOTICE {fromuser} : WebIrc : {UserObject.isWebirc}')
|
||||||
self.Irc.send2socket(f':{dnickname} NOTICE {fromuser} : WebWebsocket : {UserObject.isWebsocket}')
|
self.Irc.send2socket(f':{dnickname} NOTICE {fromuser} : WebWebsocket : {UserObject.isWebsocket}')
|
||||||
self.Irc.send2socket(f':{dnickname} NOTICE {fromuser} : REPUTATION : {UserObject.score_connexion}')
|
self.Irc.send2socket(f':{dnickname} NOTICE {fromuser} : REPUTATION : {UserObject.score_connexion}')
|
||||||
|
|||||||
Reference in New Issue
Block a user