Update server.py
All checks were successful
Check syntax / check (push) Successful in 8s
All checks were successful
Check syntax / check (push) Successful in 8s
This commit is contained in:
parent
9185e4dd81
commit
e01928ecb4
1 changed files with 23 additions and 7 deletions
30
server.py
30
server.py
|
@ -19,7 +19,7 @@ motd = """
|
||||||
| |__| (_) | (_| | __/ | | | (_| | | | | | | __/ | || _ <| |__| (_| | |_
|
| |__| (_) | (_| | __/ | | | (_| | | | | | | __/ | || _ <| |__| (_| | |_
|
||||||
\____\___/ \__,_|\___|_| |_|\__,_|_| |_| |_|\___| |___|_| \_\\\\____\__,_|\__|
|
\____\___/ \__,_|\___|_| |_|\__,_|_| |_| |_|\___| |___|_| \_\\\\____\__,_|\__|
|
||||||
https://ircat.xyz
|
https://ircat.xyz
|
||||||
This server's configuration doesn't have a MOTD in its configuration, or is invalid."""
|
This server doesn't have a MOTD in its configuration, or is invalid."""
|
||||||
motd_file = None
|
motd_file = None
|
||||||
ping_timeout = 255
|
ping_timeout = 255
|
||||||
with open(sys.argv[1], 'r') as file:
|
with open(sys.argv[1], 'r') as file:
|
||||||
|
@ -76,7 +76,7 @@ reserved = ["nickserv", "chanserv", "gitserv"] # Reserved nicknames
|
||||||
nickname_list = {} # Stores nicknames and the respective sockets
|
nickname_list = {} # Stores nicknames and the respective sockets
|
||||||
lower_nicks = {"gitserv": "GitServ", "nickserv": "NickServ"} # Nicknames in lowercase
|
lower_nicks = {"gitserv": "GitServ", "nickserv": "NickServ"} # Nicknames in lowercase
|
||||||
channels_list = {} # Store channels and their user lists
|
channels_list = {} # Store channels and their user lists
|
||||||
property_list = {"GitServ": {"host": "IRCatCore", "username": "IRCat", "realname": "Codename IRCat Integrated services - Updates bot"},"NickServ": {"host": "IRCatCore", "username": "IRCat", "realname": "Codename IRCat Integrated services - Login bot"}} # Stores properties for active users and channels
|
property_list = {"GitServ": {"host": "IRCatCore", "username": "IRCat", "realname": "Codename IRCat Integrated services - Updates bot"},"NickServ": {"host": "IRCatCore", "username": "IRCat", "realname": "Codename IRCat Integrated services - Login bot", "away": False}} # Stores properties for active users and channels
|
||||||
print("Now listening on port 6667")
|
print("Now listening on port 6667")
|
||||||
def pinger(nick, connection):
|
def pinger(nick, connection):
|
||||||
global property_list
|
global property_list
|
||||||
|
@ -153,7 +153,7 @@ def session(connection, client):
|
||||||
cleanup_manual()
|
cleanup_manual()
|
||||||
print(f"User {pending} successfully logged in.")
|
print(f"User {pending} successfully logged in.")
|
||||||
nickname_list[pending] = connection
|
nickname_list[pending] = connection
|
||||||
property_list[pending] = {"host": hostname, "username": username, "realname": realname, "modes": "iw", "last_ping": time.time(), "ping_pending": False}
|
property_list[pending] = {"host": hostname, "username": username, "realname": realname, "modes": "iw", "last_ping": time.time(), "ping_pending": False, "away": False}
|
||||||
lower_nicks[pending.lower()] = pending
|
lower_nicks[pending.lower()] = pending
|
||||||
threading.Thread(target=pinger, args=[pending, connection]).start()
|
threading.Thread(target=pinger, args=[pending, connection]).start()
|
||||||
connection.sendall(bytes(f":{server} 001 {pending} :Welcome to the {displayname} Internet Relay Chat Network {pending}\r\n", "UTF-8"))
|
connection.sendall(bytes(f":{server} 001 {pending} :Welcome to the {displayname} Internet Relay Chat Network {pending}\r\n", "UTF-8"))
|
||||||
|
@ -284,6 +284,16 @@ def session(connection, client):
|
||||||
channels_list[channel].remove(pending)
|
channels_list[channel].remove(pending)
|
||||||
except:
|
except:
|
||||||
print(traceback.format_exc())
|
print(traceback.format_exc())
|
||||||
|
elif command == "AWAY":
|
||||||
|
if len(args) == 0:
|
||||||
|
property_list[pending]["away"] = False
|
||||||
|
connection.sendall(bytes(f":{server} 305 {pending} :You are no longer marked as being away\r\n","UTF-8"))
|
||||||
|
else:
|
||||||
|
reasons = " ".join(args)
|
||||||
|
if reasons[0] == ":": reasons = reasons[1:]
|
||||||
|
property_list[pending]["away"] = True
|
||||||
|
property_list[pending]["reason"] = reasons
|
||||||
|
connection.sendall(bytes(f":{server} 306 {pending} :You have been marked as being away\r\n","UTF-8"))
|
||||||
elif command == "WHO":
|
elif command == "WHO":
|
||||||
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"))
|
||||||
|
@ -294,12 +304,14 @@ def session(connection, client):
|
||||||
who_host = property_list[i]["host"]
|
who_host = property_list[i]["host"]
|
||||||
who_user = property_list[i]["username"]
|
who_user = property_list[i]["username"]
|
||||||
who_realname = property_list[i]["realname"]
|
who_realname = property_list[i]["realname"]
|
||||||
connection.sendall(bytes(f":{server} 352 {pending} {channel} ~{who_user} {who_host} {server} {i} H :0 {who_realname}\r\n","UTF-8"))
|
who_away = "G" if property_list[i]["away"] else "H"
|
||||||
|
connection.sendall(bytes(f":{server} 352 {pending} {channel} ~{who_user} {who_host} {server} {i} {who_away} :0 {who_realname}\r\n","UTF-8"))
|
||||||
elif channel in nickname_list:
|
elif channel in nickname_list:
|
||||||
who_host = property_list[channel]["host"]
|
who_host = property_list[channel]["host"]
|
||||||
who_user = property_list[channel]["username"]
|
who_user = property_list[channel]["username"]
|
||||||
who_realname = property_list[channel]["realname"]
|
who_realname = property_list[channel]["realname"]
|
||||||
connection.sendall(bytes(f":{server} 352 {pending} * ~{who_user} {who_host} {server} {channel} H :0 {who_realname}\r\n","UTF-8"))
|
who_away = "G" if property_list[channel]["away"] else "H"
|
||||||
|
connection.sendall(bytes(f":{server} 352 {pending} * ~{who_user} {who_host} {server} {channel} {who_away} :0 {who_realname}\r\n","UTF-8"))
|
||||||
|
|
||||||
connection.sendall(bytes(f":{server} 315 {pending} {channel} :End of /WHO list.\r\n","UTF-8"))
|
connection.sendall(bytes(f":{server} 315 {pending} {channel} :End of /WHO list.\r\n","UTF-8"))
|
||||||
elif command == "WHOIS":
|
elif command == "WHOIS":
|
||||||
|
@ -319,8 +331,12 @@ def session(connection, client):
|
||||||
who_flags = None
|
who_flags = None
|
||||||
connection.sendall(bytes(f":{server} 311 {pending} {target} ~{who_user} {who_host} * :{who_realname}\r\n","UTF-8"))
|
connection.sendall(bytes(f":{server} 311 {pending} {target} ~{who_user} {who_host} * :{who_realname}\r\n","UTF-8"))
|
||||||
connection.sendall(bytes(f":{server} 312 {pending} {target} {server} :{identifier}\r\n","UTF-8"))
|
connection.sendall(bytes(f":{server} 312 {pending} {target} {server} :{identifier}\r\n","UTF-8"))
|
||||||
#connection.sendall(bytes(f":{server} 313 {target} :is an IRC operator\r\n","UTF-8")) # I haven't implemented modes yet.
|
if "o" in who_flags: connection.sendall(bytes(f":{server} 313 {pending} {target} :is an IRC operator\r\n","UTF-8"))
|
||||||
#connection.sendall(bytes(f":{server} 317 {target} {time} :seconds idle\r\n","UTF-8")) # I haven't implemented idle time yet.
|
who_away = property_list[target]["away"]
|
||||||
|
if who_away:
|
||||||
|
who_reason = who_away = property_list[target]["reason"]
|
||||||
|
connection.sendall(bytes(f":{server} 301 {pending} {target} :{who_reason}\r\n","UTF-8"))
|
||||||
|
#connection.sendall(bytes(f":{server} 317 {pending} {target} {time} :seconds idle\r\n","UTF-8")) # I haven't implemented idle time yet.
|
||||||
if who_flags != None and who_flags != "iw":
|
if who_flags != None and who_flags != "iw":
|
||||||
connection.sendall(bytes(f":{server} 379 {pending} {target} :Is using modes +{who_flags}\r\n","UTF-8"))
|
connection.sendall(bytes(f":{server} 379 {pending} {target} :Is using modes +{who_flags}\r\n","UTF-8"))
|
||||||
connection.sendall(bytes(f":{server} 318 {pending} {target} :End of /WHOIS list\r\n","UTF-8"))
|
connection.sendall(bytes(f":{server} 318 {pending} {target} :End of /WHOIS list\r\n","UTF-8"))
|
||||||
|
|
Loading…
Reference in a new issue