Dateien hochladen nach „“

master
Justus Jan Nico Wolff 2022-10-30 14:49:29 +01:00
parent 2a6aeb1bbe
commit 111fb4e9fe
4 changed files with 51 additions and 24 deletions

View File

@ -1,14 +1,15 @@
import ast import ast
import threading
import communicate import communicate
import tkinter as tk import tkinter as tk
from tkinter import messagebox from tkinter import messagebox
import threading import threading
import tkinter.ttk as ttk import tkinter.ttk as ttk
file = open("config.config", 'r') file = open("config.config", 'r')
file = file.read() file = file.read()
config = ast.literal_eval(file) config = ast.literal_eval(file)
sessionid = "" sessionid = ""
global conversations
conversations = [] conversations = []
def updateconfig(): def updateconfig():
global config global config
@ -21,7 +22,7 @@ def registeeer(name, password):
global sessionid global sessionid
name = name.get() name = name.get()
password = password.get() password = password.get()
back = communicate.get(config["serveraddress"]+config["port"], {"targetserver": "PM", "targetfunction": "register", "name": name, "pass": password}) back = communicate.get(config["serveraddress"]+":"+config["port"], {"targetserver": "python messages main server", "targetfunction": "register", "name": name, "pass": password})
if back[0] == " ": if back[0] == " ":
messagebox.showinfo("erfolgreich!", "sie haben sich erfolgreich registriert!") messagebox.showinfo("erfolgreich!", "sie haben sich erfolgreich registriert!")
config["logindata"]["name"] = name config["logindata"]["name"] = name
@ -55,7 +56,7 @@ def loginnn(name, password):
global sessionid global sessionid
name = name.get() name = name.get()
password = password.get() password = password.get()
back = communicate.get(config["serveraddress"]+config["port"], {"targetserver": "PM", "targetfunction": "getsessionid", "name": name, "pass": password}) back = communicate.get(config["serveraddress"]+":"+config["port"], {"targetserver": "python messages main server", "targetfunction": "getsessionid", "name": name, "pass": password})
if back[0] == " ": if back[0] == " ":
messagebox.showinfo("erfolgreich!", "sie haben sich erfolgreich angemeldet!") messagebox.showinfo("erfolgreich!", "sie haben sich erfolgreich angemeldet!")
config["logindata"]["name"] = name config["logindata"]["name"] = name
@ -87,7 +88,7 @@ def login():
def send(message, conversation): def send(message, conversation):
global sessionid global sessionid
message = message.get() message = message.get()
communicate.patch(config["serveraddress"]+config["port"], {"targetserver": "PM", "targetfunction": "send", "sessionid": sessionid, "message": message, "conversation": conversation}) communicate.patch(config["serveraddress"]+":"+config["port"], {"targetserver": "python messages main server", "targetfunction": "send", "sessionid": sessionid, "message": message, "conversation": conversation})
def turnback(target): def turnback(target):
temp = "" temp = ""
@ -112,7 +113,7 @@ def showconversation(conversation2):
entry.grid() entry.grid()
sendbutton.grid() sendbutton.grid()
while True: while True:
temp = communicate.get(config["serveraddress"]+config["port"], {"targetserver": "PM", "targetfunction": "update", "sessionid": sessionid})[conversation2]["conversation"].split("\n") temp = communicate.get(config["serveraddress"]+":"+config["port"], {"targetserver": "python messages main server", "targetfunction": "update", "sessionid": sessionid})[conversation2]["conversation"].split("\n")
for i in conversationtext.split("\n"): for i in conversationtext.split("\n"):
temp.remove(i) temp.remove(i)
if len(temp) != 0: if len(temp) != 0:
@ -129,28 +130,25 @@ def updatescreen():
global conversations global conversations
global conversationbuttons global conversationbuttons
global config global config
try: if True:
for temp in range(len(conversations)): for temp in range(len(conversations)):
temp2 = conversations[temp]["speakers"].split("&<splitedaccountname>&") temp2 = conversations[temp]["speakers"].split("<splitedaccountname>")
temp2.remove(config["logindata"]["name"]) temp2.remove(config["logindata"]["name"])
temp2 = temp2[0] temp2 = temp2[0]
if not temp2 in conversationbuttons: if not temp2 in conversationbuttons:
conversationbuttons[temp2] = tk.Button(container, text=temp2, command=lambda: showconversation(temp)) conversationbuttons[temp2] = tk.Button(container, text=temp2, command=lambda temp=temp: showconversation(temp))
conversationbuttons[temp2].grid() conversationbuttons[temp2].grid()
except Exception as e:
print(e)
def update(): def update():
global sessionid global sessionid
global conversations global conversations
while True: while True:
conversations = communicate.get(config["serveraddress"]+config["port"], {"targetserver": "PM", "targetfunction": "update", "sessionid": sessionid}) conversations = communicate.get(config["serveraddress"]+":"+config["port"], {"targetserver": "python messages main server", "targetfunction": "update", "sessionid": sessionid})
updatescreen()
def newww(name, container2): def newww(name, container2):
global sessionid global sessionid
name = name.get() name = name.get()
communicate.patch(config["serveraddress"]+config["port"], {"targetserver": "PM", "targetfunction": "newconv", "sessionid": sessionid, "target": name}) communicate.patch(config["serveraddress"]+":"+config["port"], {"targetserver": "python messages main server", "targetfunction": "newconv", "sessionid": sessionid, "target": name})
container2.destroy() container2.destroy()
def newconversation(): def newconversation():
@ -173,7 +171,7 @@ if config["logindata"]["name"] == None:
registerbutton.grid() registerbutton.grid()
container.mainloop() container.mainloop()
else: else:
sessionid = communicate.get(config["serveraddress"]+config["port"], {"targetserver": "PM", "targetfunction": "getsessionid", "name": config["logindata"]["name"], "pass": config["logindata"]["pass"]}) sessionid = communicate.get(config["serveraddress"]+":"+config["port"], {"targetserver": "python messages main server", "targetfunction": "getsessionid", "name": config["logindata"]["name"], "pass": config["logindata"]["pass"]})
conversationbuttons = {} conversationbuttons = {}
updatethread = threading.Thread(target=update) updatethread = threading.Thread(target=update)
container = tk.Tk("PM") container = tk.Tk("PM")
@ -182,4 +180,6 @@ updatethread.start()
newconversationbutton = tk.Button(container, text="neue konversation", command=newconversation) newconversationbutton = tk.Button(container, text="neue konversation", command=newconversation)
newconversationbutton.grid() newconversationbutton.grid()
container.mainloop() while True:
container.update()
updatescreen()

View File

@ -1,8 +1,34 @@
from server import server import requests
def get(address, args): import urllib.parse as safer
return server.GET(args) import ast
def patch(address, args): def encode(target):
server.PATCH(args) temp = "?"
for i in target:
print("communication module successfully initialized") temp = temp + i + "=" + target[i] + "&"
temp = temp[:-1]
return safer.quote(temp)
def decode(target):
target = safer.unquote(target)
out = {}
target = target[1:]
args = target.split("&")
for i in args:
temp = i.split("=")
out[temp[0]] = temp[1]
return out
def get(address, args):
temp = requests.get("{}/{}".format(address, encode(args)), timeout=5).content.decode()
try:
temp = ast.literal_eval(temp)
except:
print("NOT an warning or error! just for debug")
print("non dictionary response from server: "+temp)
return temp
def patch(address, args):
requests.patch("{}/{}".format(address, encode(args)))

1
compiled.server 100644
View File

@ -0,0 +1 @@
{'servername': 'python messages main server', 'serverdata': 'import os\nimport random\nimport string\nimport ast\nimport copy\nimport time\n\nif not os.path.exists("PM server/acc\'s"):\n os.mkdir("PM server")\n file = open("PM server/acc\'s", \'w\')\n file.write(str({}))\n file.close()\n file = open("PM server/conversations", \'w\')\n file.write(str({}))\n file.close()\nelse:\n file = open("PM server/acc\'s", \'r\')\n accounts = file.read()\n accounts = ast.literal_eval(accounts)\n file.close()\n file = open("PM server/conversations", \'r\')\n conversations = file.read()\n conversations = ast.literal_eval(conversations)\n file.close()\n\ncurrentsessionids = {}\nsessiontime = {}\n\ndef updatefiles():\n global accounts\n global conversations\n while True:\n try:\n file = open("PM server/acc\'s", \'r\')\n accounts = file.read()\n accounts = ast.literal_eval(accounts)\n file.close()\n file = open("PM server/conversations", \'r\')\n conversations = file.read()\n conversations = ast.literal_eval(conversations)\n file.close()\n break\n except:\n pass\n\ndef saveaccounts(target):\n file = open("PM server/acc\'s", \'w\')\n file.write(str(target))\n file.close()\n\ndef saveconversations(target):\n file = open("PM server/conversations", \'w\')\n file.write(str(target))\n file.close()\n\ndef GET(args, ressources=None):\n function = args["targetfunction"]\n if function == "getsessionid":\n name = args["name"]\n password = args["pass"]\n for i in currentsessionids.copy():\n if currentsessionids[i] == name:\n del currentsessionids[i]\n del sessiontime[i]\n if name in accounts:\n if accounts[name]["pass"] == password:\n temp = " "\n for i in range(1,20):\n temp = temp + random.choice(list(string.ascii_letters+string.digits))\n currentsessionids[temp] = name\n sessiontime[temp] = time.time()\n return temp\n else:\n return "wrong password"\n else:\n return "account not found"\n elif function == "register":\n name = args["name"]\n password = args["pass"]\n if not name in accounts:\n accounts[name] = {"pass": password}\n saveaccounts(accounts)\n temp = " "\n for i in range(1,20):\n temp = temp + random.choice(list(string.ascii_letters+string.digits))\n currentsessionids[temp] = name\n sessiontime[temp] = time.time()\n return temp\n else:\n return "name already used!"\n elif args["targetfunction"] == "update":\n updatefiles()\n sessionid = args["sessionid"]\n if sessionid in currentsessionids:\n lasttime = sessiontime[sessionid]\n temp = time.time() - lasttime\n if not temp > 60:\n sessiontime[sessionid] = time.time()\n name = currentsessionids[sessionid]\n temp = []\n for i in conversations:\n if name in i.split("<splitedaccountname>"):\n temp.append({"speakers": i, "conversation": copy.deepcopy(conversations[i])})\n return temp\n else:\n currentsessionids.pop(sessionid)\n sessiontime.pop(sessionid)\n return "sessionid ran out"\n \ndef PATCH(args, ressources=None):\n if args["targetfunction"] == "send":\n updatefiles()\n sessionid = args["sessionid"]\n message = args["message"]\n name = currentsessionids[sessionid]\n conversation = args["conversation"]\n if conversation in conversations:\n if name in conversation:\n conversations[conversation] = conversations[conversation] + name + ":" + message + "\\n"\n saveconversations(conversations)\n elif args["targetfunction"] == "newconv":\n sessionid = args["sessionid"]\n name = currentsessionids[sessionid]\n target = args["target"]\n if target in accounts:\n conversations[name+"<splitedaccountname>"+target] = ""\n saveconversations(conversations)\n', 'ressources': {}}

View File

@ -1 +1 @@
{'serveraddress': 'localhost', 'port': '8080', 'logindata': {'name': 'Justus Wolff', 'pass': 'highsc0re'}} {'serveraddress': 'http://localhost', 'port': '8080', 'logindata': {'name': None, 'pass': 'highsc0re'}}