main.py aktualisiert

master
Justus Jan Nico Wolff 2023-07-21 14:17:08 +02:00
parent eadc77dbe8
commit d762da1943
1 changed files with 136 additions and 136 deletions

272
main.py
View File

@ -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()