From d762da1943becf3678fa3b3981f58ba7c8c42d4d Mon Sep 17 00:00:00 2001 From: Justus Jan Nico Wolff Date: Fri, 21 Jul 2023 14:17:08 +0200 Subject: [PATCH] main.py aktualisiert --- main.py | 272 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 136 insertions(+), 136 deletions(-) diff --git a/main.py b/main.py index 81fae3b..1a73726 100644 --- a/main.py +++ b/main.py @@ -1,137 +1,137 @@ -import os -import tkinter as tk -import threading -import http.server -import random -import querytools -from tkinter import filedialog -from tkinter import messagebox -import ast -container = tk.Tk("server manager") -temp = os.listdir("servers") -servers = {} -avaible = {} -def toggle(target): - global avaible - if avaible[target] == True: - avaible[target] = False - else: - avaible[target] = True - -def menu(target): - global servers - global avaible - tempcon = tk.Tk(target) - textvar = tk.StringVar(tempcon) - if avaible[target] == True: - textvar.set("stop") - else: - textvar.set("start") - runbutton = tk.Button(tempcon, command=lambda: toggle(target), textvariable=textvar) - runbutton.grid() - backbutton = tk.Button(tempcon, command=tempcon.destroy, text="zurück") - backbutton.grid() - tempcon.mainloop() - -for i in temp: - if i != "__pycache__": - i = i[:-1] - i = i[:-1] - i = i[:-1] - temp3 = "servers.{}".format(i) - servers[i] = __import__(temp3, fromlist=[""]) - avaible[i] = False - -temp = os.listdir("ressources") -ressources = {} -for i in temp: - if i != "__pycache__" and i != "__init__.py": - ressources[i] = {} - for f in os.listdir("ressources/{}".format(i)): - if f != "__pycache__" and f != "__init__.py": - f = f[:-1] - f = f[:-1] - f = f[:-1] - ressources[i][f] = __import__("ressources.{}.{}".format(i, f), fromlist=[""]) - -title = tk.Label(container, text="servers:") -title.grid() - -for i in servers: - temp = tk.Button(container, text=i, command=lambda i=i: menu(i)) - temp.grid() - -def install(): - target = filedialog.askopenfilename() - target = open(target, 'r') - target = target.read() - target = ast.literal_eval(target) - serverfile = open("servers/"+target["servername"]+".py", 'w') - serverfile.write(target["serverdata"]) - serverfile.close() - temp = target["ressources"] - os.mkdir("ressources/{}".format(target["servername"])) - init = open("ressources/{}/__init__.py".format(target["servername"]), 'x') - init.close() - for i in temp: - temp2 = open("ressources/{}/{}".format(target["servername"], i), 'w') - temp2.write(temp[i]) - temp2.close() - messagebox.showinfo("info!", "server installiert! bitte starten sie server managment neu!") - -installbutton = tk.Button(container, text="installiere einen neuen server", command=install) -installbutton.grid() - -class JSRequestHandler(http.server.BaseHTTPRequestHandler): - - def getAppname(self): - if self.path == "" or self.path == "/": - p = "__root__" - else: - p = self.path.split("/")[1] - return p - - def do_GET(self): - global avaible - global ressources - - args = self.getAppname() - if args != "favicon.ico": - args = querytools.decode(args) - - if args["targetserver"] in avaible: - if avaible[args["targetserver"]] == True: - sb = str(servers[args["targetserver"]].GET(args, ressources[args["targetserver"]])).encode("utf-8") - else: - sb = str("server is down").encode("utf-8") - else: - sb = str("server not found").encode("utf-8") - - self.send_response(200) - self.send_header("content-length", len(sb)) - self.end_headers() - - self.wfile.write(sb) - - def do_PATCH(self): - global avaible - global ressources - - args = self.getAppname() - if args != "favicon.ico": - args = querytools.decode(args) - - bpatch = self.rfile.read(int(self.headers.get('content-length', 0))) - ps = bpatch.decode("utf-8") - if args["targetserver"] in avaible: - if avaible[args["targetserver"]] == True: - servers[args["targetserver"]].PATCH(args, ressources[args["targetserver"]]) - return self.do_GET() - - def log_message(self, format, *args): - return - -#https://www.justserv2.l--n.de -httpd = http.server.ThreadingHTTPServer(('localhost', 8080 ), JSRequestHandler) -threading.Thread(target=httpd.serve_forever).start() +import os +import tkinter as tk +import threading +import http.server +import random +import querytools +from tkinter import filedialog +from tkinter import messagebox +import ast +container = tk.Tk("server manager") +temp = os.listdir("servers") +servers = {} +avaible = {} +def toggle(target): + global avaible + if avaible[target] == True: + avaible[target] = False + else: + avaible[target] = True + +def menu(target): + global servers + global avaible + tempcon = tk.Tk(target) + textvar = tk.StringVar(tempcon) + if avaible[target] == True: + textvar.set("stop") + else: + textvar.set("start") + runbutton = tk.Button(tempcon, command=lambda: toggle(target), textvariable=textvar) + runbutton.grid() + backbutton = tk.Button(tempcon, command=tempcon.destroy, text="zurück") + backbutton.grid() + tempcon.mainloop() + +for i in temp: + if i != "__pycache__": + i = i[:-1] + i = i[:-1] + i = i[:-1] + temp3 = "servers.{}".format(i) + servers[i] = __import__(temp3, fromlist=[""]) + avaible[i] = False + +temp = os.listdir("ressources") +ressources = {} +for i in temp: + if i != "__pycache__" and i != "__init__.py": + ressources[i] = {} + for f in os.listdir("ressources/{}".format(i)): + if f != "__pycache__" and f != "__init__.py": + f = f[:-1] + f = f[:-1] + f = f[:-1] + ressources[i][f] = __import__("ressources.{}.{}".format(i, f), fromlist=[""]) + +title = tk.Label(container, text="servers:") +title.grid() + +for i in servers: + temp = tk.Button(container, text=i, command=lambda i=i: menu(i)) + temp.grid() + +def install(): + target = filedialog.askopenfilename() + target = open(target, 'r') + target = target.read() + target = ast.literal_eval(target) + serverfile = open("servers/"+target["servername"]+".py", 'w') + serverfile.write(target["serverdata"]) + serverfile.close() + temp = target["ressources"] + os.mkdir("ressources/{}".format(target["servername"])) + init = open("ressources/{}/__init__.py".format(target["servername"]), 'x') + init.close() + for i in temp: + temp2 = open("ressources/{}/{}".format(target["servername"], i), 'w') + temp2.write(temp[i]) + temp2.close() + messagebox.showinfo("info!", "server installiert! bitte starten sie server managment neu!") + +installbutton = tk.Button(container, text="installiere einen neuen server", command=install) +installbutton.grid() + +class JSRequestHandler(http.server.BaseHTTPRequestHandler): + + def getAppname(self): + if self.path == "" or self.path == "/": + p = "__root__" + else: + p = self.path.split("/")[1] + return p + + def do_GET(self): + global avaible + global ressources + + args = self.getAppname() + if args != "favicon.ico": + args = querytools.decode(args) + + if args["targetserver"] in avaible: + if avaible[args["targetserver"]] == True: + sb = str(servers[args["targetserver"]].GET(args, ressources[args["targetserver"]])).encode("utf-8") + else: + sb = str("server is down").encode("utf-8") + else: + sb = str("server not found").encode("utf-8") + + self.send_response(200) + self.send_header("content-length", len(sb)) + self.end_headers() + + self.wfile.write(sb) + + def do_PATCH(self): + global avaible + global ressources + + args = self.getAppname() + if args != "favicon.ico": + args = querytools.decode(args) + + bpatch = self.rfile.read(int(self.headers.get('content-length', 0))) + ps = bpatch.decode("utf-8") + if args["targetserver"] in avaible: + if avaible[args["targetserver"]] == True: + servers[args["targetserver"]].PATCH(args, ressources[args["targetserver"]]) + return self.do_GET() + + def log_message(self, format, *args): + return + +#https://www.justserv2.l--n.de +httpd = http.server.ThreadingHTTPServer(('192.168.178.139', 8080 ), JSRequestHandler) +threading.Thread(target=httpd.serve_forever).start() container.mainloop() \ No newline at end of file