Dateien hochladen nach „“

master
Justus Jan Nico Wolff 2022-10-28 14:17:00 +02:00
parent f29780f956
commit 9ac77b7b38
3 changed files with 194 additions and 0 deletions

185
client.py 100644
View File

@ -0,0 +1,185 @@
import ast
import threading
import communicate
import tkinter as tk
from tkinter import messagebox
import threading
import tkinter.ttk as ttk
file = open("config.config", 'r')
file = file.read()
config = ast.literal_eval(file)
sessionid = ""
conversations = []
def updateconfig():
global config
file = open("config.config", 'w')
file.write(str(config))
file.close()
def registeeer(name, password):
global container
global sessionid
name = name.get()
password = password.get()
back = communicate.get(config["serveraddress"]+config["port"], {"targetserver": "PM", "targetfunction": "register", "name": name, "pass": password})
if back[0] == " ":
messagebox.showinfo("erfolgreich!", "sie haben sich erfolgreich registriert!")
config["logindata"]["name"] = name
config["logindata"]["pass"] = password
updateconfig()
sessionid = back
container.destroy()
else:
messagebox.showerror("fehler!", "kann nicht registrieren: name wird schon benutzt")
def register():
global container
container.destroy()
container = tk.Tk("registrieren")
namevar = tk.StringVar(container)
passvar = tk.StringVar(container)
nameentry = tk.Entry(container, textvariable=namevar)
passentry = tk.Entry(container, textvariable=passvar)
registerbutton = tk.Button(container, text="registrieren", command=lambda: registeeer(namevar, passvar))
namelabel = tk.Label(container, text="Name")
passlabel = tk.Label(container, text="Passwort")
namelabel.grid()
nameentry.grid()
passlabel.grid()
passentry.grid()
registerbutton.grid()
container.mainloop()
def loginnn(name, password):
global container
global sessionid
name = name.get()
password = password.get()
back = communicate.get(config["serveraddress"]+config["port"], {"targetserver": "PM", "targetfunction": "getsessionid", "name": name, "pass": password})
if back[0] == " ":
messagebox.showinfo("erfolgreich!", "sie haben sich erfolgreich angemeldet!")
config["logindata"]["name"] = name
config["logindata"]["pass"] = password
updateconfig()
sessionid = back
container.destroy()
else:
messagebox.showerror("fehler!", "kann nicht anmelden: falscher name oder passwort")
def login():
global container
container.destroy()
container = tk.Tk("anmelden")
namevar = tk.StringVar(container)
passvar = tk.StringVar(container)
nameentry = tk.Entry(container, textvariable=namevar)
passentry = tk.Entry(container, textvariable=passvar)
registerbutton = tk.Button(container, text="anmelden", command=lambda: loginnn(namevar, passvar))
namelabel = tk.Label(container, text="Name")
passlabel = tk.Label(container, text="Passwort")
namelabel.grid()
nameentry.grid()
passlabel.grid()
passentry.grid()
registerbutton.grid()
container.mainloop()
def send(message, conversation):
global sessionid
message = message.get()
communicate.patch(config["serveraddress"]+config["port"], {"targetserver": "PM", "targetfunction": "send", "sessionid": sessionid, "message": message, "conversation": conversation})
def turnback(target):
temp = ""
for i in target:
temp = temp + i + "\n"
return temp
def showconversation(conversation2):
global conversations
container2 = tk.Tk("conversation")
conversationtext = conversations[conversation2]["conversation"]
conversation = tk.Text(container2)
conversation.insert(tk.END, conversationtext)
conversation.config(state=tk.DISABLED)
conversation.grid(padx=2, pady=2)
scrollbar = ttk.Scrollbar(container2, command=conversation.yview)
scrollbar.grid(column=3)
conversation['yscrollcommand'] = scrollbar.set
sendvar = tk.StringVar(container2)
entry = tk.Entry(container2, textvariable=sendvar)
sendbutton = tk.Button(container2, command=lambda: send(sendvar, conversations[conversation2]["speakers"]), text="senden")
entry.grid()
sendbutton.grid()
while True:
temp = communicate.get(config["serveraddress"]+config["port"], {"targetserver": "PM", "targetfunction": "update", "sessionid": sessionid})[conversation2]["conversation"].split("\n")
for i in conversationtext.split("\n"):
temp.remove(i)
if len(temp) != 0:
conversation.grid_forget()
conversation.config(state=tk.NORMAL)
conversation.insert(tk.END, turnback(temp))
conversation.config(state=tk.DISABLED)
conversation.grid(row=0)
conversationtext = conversationtext + turnback(temp)
container2.update()
def updatescreen():
global container
global conversations
global conversationbuttons
global config
try:
for temp in range(len(conversations)):
temp2 = conversations[temp]["speakers"].split("&<splitedaccountname>&")
temp2.remove(config["logindata"]["name"])
temp2 = temp2[0]
if not temp2 in conversationbuttons:
conversationbuttons[temp2] = tk.Button(container, text=temp2, command=lambda: showconversation(temp))
conversationbuttons[temp2].grid()
except Exception as e:
print(e)
def update():
global sessionid
global conversations
while True:
conversations = communicate.get(config["serveraddress"]+config["port"], {"targetserver": "PM", "targetfunction": "update", "sessionid": sessionid})
updatescreen()
def newww(name, container2):
global sessionid
name = name.get()
communicate.patch(config["serveraddress"]+config["port"], {"targetserver": "PM", "targetfunction": "newconv", "sessionid": sessionid, "target": name})
container2.destroy()
def newconversation():
container2 = tk.Tk("new conversation")
namelabel = tk.Label(container2, text="name des benutzers: ")
namelabel.grid()
stringvar = tk.StringVar(container2)
entry = tk.Entry(container2, textvariable=stringvar)
entry.grid()
gobutton = tk.Button(container2, text="konversation erstellen", command=lambda: newww(stringvar, container2))
gobutton.grid()
container2.mainloop()
if config["logindata"]["name"] == None:
container = tk.Tk("PM")
messagebox.showinfo("nicht angemeldet!", "sie sind nicht angemeldet bitte melden sie sich an!")
registerbutton = tk.Button(container, text="registrieren", command=register)
loginbutton = tk.Button(container, text="anmelden", command=login)
loginbutton.grid()
registerbutton.grid()
container.mainloop()
else:
sessionid = communicate.get(config["serveraddress"]+config["port"], {"targetserver": "PM", "targetfunction": "getsessionid", "name": config["logindata"]["name"], "pass": config["logindata"]["pass"]})
conversationbuttons = {}
updatethread = threading.Thread(target=update)
container = tk.Tk("PM")
updatethread.start()
newconversationbutton = tk.Button(container, text="neue konversation", command=newconversation)
newconversationbutton.grid()
container.mainloop()

8
communicate.py 100644
View File

@ -0,0 +1,8 @@
from server import server
def get(address, args):
return server.GET(args)
def patch(address, args):
server.PATCH(args)
print("communication module successfully initialized")

1
config.config 100644
View File

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