Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import csv
- import base64
- import webbrowser
- import os
- import time
- global Direc
- def enc(txt):
- binary=txt.encode()
- return base64.b64encode(binary).decode()
- def dec(cyp):
- txt=base64.b64decode(cyp.encode())
- return txt.decode()
- #######
- global Direc
- Direc =enc("C://Users//Max//Documents//Server//V4 (Clean)//")
- #######
- def giveDirectory():
- return Direc
- def newUser(username,password,Nick,Rank):
- with open(dec(Direc)+"Records.csv", "a") as file:
- write=csv.writer(file)
- write.writerow([enc(username), enc(password), enc(Nick), enc(Rank)])
- print("Sucessful User Creation.")
- def login():
- nickname=""
- with open(dec(Direc)+"Records.csv", "r") as file:
- reader=csv.DictReader(file)
- while True:
- print("-------Login------- \n")
- username=input("Username: ")
- password=input("Password: ")
- for i in reader:
- if str(enc(username)) in i["Username"] and str(enc(password)) in i["Password"]:
- nickname=dec(i["Nickname"])
- rank=dec(i["Rank"])
- print("Logged in")
- return nickname + "###!!" + rank
- print("Incorrect Username or Password. Try again.")
- def register():
- with open(dec(Direc)+"Records.csv", "r") as file:
- reader=csv.DictReader(file)
- print("-------Register------- \n")
- x=True
- while x==True:
- count=0
- username=input("Username: ")
- if len(username)<5:
- print("That username is too short (5 chars min)")
- else:
- for i in reader:
- if str(enc(username)) in i["Username"]:
- count=1
- if count==1:
- print("That username is taken. Choose another.")
- else:
- print("Username accepted")
- x=False
- x=True
- while x==True:
- password=input("Password: ")
- if len(password)<5:
- print("That password is too short (5 chars min)")
- else:
- print("Password accepted")
- x=False
- with open("Records.csv", "r") as file:
- reader=csv.DictReader(file)
- x=True
- while x==True:
- count=0
- Nick=input("Nickname: ")
- if len(Nick)<5 or " " in Nick:
- print("That Nickname is too short (5 chars min) / you have a SPACE in your nickname.")
- else:
- for i in reader:
- if str(enc(Nick)) in i["Nickname"]:
- count=1
- if count==1:
- print("That Nickname is taken. Choose another.")
- else:
- x=False
- print("Nickname accepted")
- if username[0:5] == "Admin":
- Rank="Admin"
- print("Special One!")
- else:
- Rank="User"
- newUser(username, password, Nick, Rank)
- def sendMessage(Text, nickname, rank):
- #Just for sending messages. No commands.
- #From - Who is sending the message
- #To - WHo is it going to
- #Type - What type of message is it, command or message
- #Text - Everything they typed
- with open(dec(Direc)+"chat.txt","w", encoding = "utf-8") as file:
- #-FROM TO TYPE TEXT
- code="~~##@^@**"
- From = nickname
- if Text[0] == "/":
- try:
- sections=Text.split()
- Type = "Command"
- if "/browser" in Text:
- #/browser (All/Name of user) (reps) (url)
- To=sections[1]
- if rank == "Admin":
- file.write(str(enc(From+code+To+code+Type+code+Text)))
- elif "/openfile" in Text:
- #/openfile (All/Name of user) (direc)
- To=sections[1]
- if rank == "Admin":
- file.write(str(enc(From+code+To+code+Type+code+Text)))
- elif "/sudo" in Text:
- #Allows an admin to send a message from anyones's name
- #sudo (name of user) (message)
- if rank == "Admin":
- To = "All"
- Type = "Message"
- From = sections[1]
- Text = sections[2]
- file.write(str(enc(From+code+To+code+Type+code+Text)))
- elif "/dm" in Text:
- #/dm (Name of user) (message)
- To = sections[1]
- file.write(str(enc(From+code+To+code+Type+code+Text)))
- elif "/freeze" in Text:
- #/freeze (All/Name of user) (time)
- To = sections[1]
- if rank == "Admin":
- file.write(str(enc(From+code+To+code+Type+code+Text)))
- except:
- pass
- else:
- To="All"
- Type = "Message"
- file.write(str(enc(From+code+To+code+Type+code+Text)))
- def displayMessage(nick,rank):
- history=[]
- while True:
- with open(dec(Direc)+"chat.txt","r", encoding = "utf-8") as file:
- for i in file:
- temp=i
- break
- if temp not in history:
- history.append(temp)
- parts = dec(temp).split("~~##@^@**")
- #plain messages
- if parts[1] == "All" and parts[2]=="Message":
- print(parts[0]+"]"+parts[3])
- #commands
- elif parts[1] == "All" or parts[1] == nick:
- params=parts[3].split()
- if "/browser" in parts[3]:
- try:
- if rank != "Admin":
- for i in range(int(params[2])):
- webbrowser.open(params[3])
- except:
- pass
- elif "/openfile" in parts[3]:
- ###if not admin for later
- try:
- #if rank != "Admin":
- os.startfile(params[2])
- except:
- pass
- elif "/dm" in parts[3]:
- try:
- print("[DM] FROM- " + parts[0]+ ": "+ " ".join(params[2:len(params)]))
- except:
- pass
- elif "/freeze" in parts[3]:
- print("SERVER: CHAT HAS BEEN FROZEN")
- time.sleep(int(params[2]))
- print("SERVER: CHAT IS UNFROZEN")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement