Update server.py

This commit is contained in:
Nova Cat 2024-12-12 13:12:10 -08:00
parent b9df37a75f
commit 9bb062445c

View file

@ -109,7 +109,7 @@ def session(connection, client):
args = text.split(" ")[1:] args = text.split(" ")[1:]
except: except:
pass pass
if command == "NICK" and not already_set: if command == "NICK" and not finished:
pending = text.split(" ")[1] pending = text.split(" ")[1]
if pending[0] == ":": pending[1:] if pending[0] == ":": pending[1:]
if "!" in pending or ":" in pending or "#" in pending or "*" in pending: if "!" in pending or ":" in pending or "#" in pending or "*" in pending:
@ -146,7 +146,7 @@ def session(connection, client):
e = text.split(" ")[1] e = text.split(" ")[1]
print("Replying with \"" + str([f":{server} PONG {server} :{e}\r\n"]) + "\"") print("Replying with \"" + str([f":{server} PONG {server} :{e}\r\n"]) + "\"")
connection.sendall(bytes(f":{server} PONG {server} :{e}\r\n","UTF-8")) connection.sendall(bytes(f":{server} PONG {server} :{e}\r\n","UTF-8"))
elif (ready and already_set) and finished: elif finished:
if command == "JOIN": if command == "JOIN":
channels = text.split(" ")[1] channels = text.split(" ")[1]
for channelt in channels.split(","): for channelt in channels.split(","):
@ -183,6 +183,35 @@ def session(connection, client):
print(pending + " replied to PING.") print(pending + " replied to PING.")
property_list[pending]["last_ping"] = time.time() property_list[pending]["last_ping"] = time.time()
property_list[pending]["ping_pending"] = False property_list[pending]["ping_pending"] = False
if command == "NICK":
if len(args) == 0:
connection.sendall(bytes(f":{server} 461 {pending} {command} :Not enough parameters\r\n","UTF-8"))
else:
pending2 = text.split(" ")[1]
if pending2[0] == ":": pending2[1:]
if "!" in pending2 or ":" in pending2 or "#" in pending2 or "*" in pending2:
connection.sendall(bytes(f":{server} 432 {pending} {pending2} :Erroneus nickname\r\n","UTF-8"))
elif pending.lower() in lower_nicks or pending in reserved:
connection.sendall(bytes(f":{server} 433 {pending} {pending2} :Nickname is already in use.\r\n","UTF-8"))
else:
# Broadcast the nickname change
done = []
for i, users in channels_list.items():
if pending in users:
for j in users:
if j != pending and not j in done:
nickname_list[j].sendall(bytes(f":{pending}!~{username}@{hostname} {text}\r\n","UTF-8"))
done.append(j)
# Replace the nickname
try:
channels_list[i].remove(pending)
channels_list[i].append(pending2)
except:
print(traceback.format_exc())
property_list[pending2] = property_list.pop(pending)
nickname_list[pending2] = nickname_list.pop(pending)
pending = pending2
print(f"User {pending} set nick")
elif command == "PART": elif command == "PART":
if len(args) == 0: if len(args) == 0:
connection.sendall(bytes(f":{server} 461 {pending} {command} :Not enough parameters\r\n","UTF-8")) connection.sendall(bytes(f":{server} 461 {pending} {command} :Not enough parameters\r\n","UTF-8"))