main.py aktualisiert
parent
eadc77dbe8
commit
d762da1943
272
main.py
272
main.py
|
@ -1,137 +1,137 @@
|
||||||
import os
|
import os
|
||||||
import tkinter as tk
|
import tkinter as tk
|
||||||
import threading
|
import threading
|
||||||
import http.server
|
import http.server
|
||||||
import random
|
import random
|
||||||
import querytools
|
import querytools
|
||||||
from tkinter import filedialog
|
from tkinter import filedialog
|
||||||
from tkinter import messagebox
|
from tkinter import messagebox
|
||||||
import ast
|
import ast
|
||||||
container = tk.Tk("server manager")
|
container = tk.Tk("server manager")
|
||||||
temp = os.listdir("servers")
|
temp = os.listdir("servers")
|
||||||
servers = {}
|
servers = {}
|
||||||
avaible = {}
|
avaible = {}
|
||||||
def toggle(target):
|
def toggle(target):
|
||||||
global avaible
|
global avaible
|
||||||
if avaible[target] == True:
|
if avaible[target] == True:
|
||||||
avaible[target] = False
|
avaible[target] = False
|
||||||
else:
|
else:
|
||||||
avaible[target] = True
|
avaible[target] = True
|
||||||
|
|
||||||
def menu(target):
|
def menu(target):
|
||||||
global servers
|
global servers
|
||||||
global avaible
|
global avaible
|
||||||
tempcon = tk.Tk(target)
|
tempcon = tk.Tk(target)
|
||||||
textvar = tk.StringVar(tempcon)
|
textvar = tk.StringVar(tempcon)
|
||||||
if avaible[target] == True:
|
if avaible[target] == True:
|
||||||
textvar.set("stop")
|
textvar.set("stop")
|
||||||
else:
|
else:
|
||||||
textvar.set("start")
|
textvar.set("start")
|
||||||
runbutton = tk.Button(tempcon, command=lambda: toggle(target), textvariable=textvar)
|
runbutton = tk.Button(tempcon, command=lambda: toggle(target), textvariable=textvar)
|
||||||
runbutton.grid()
|
runbutton.grid()
|
||||||
backbutton = tk.Button(tempcon, command=tempcon.destroy, text="zurück")
|
backbutton = tk.Button(tempcon, command=tempcon.destroy, text="zurück")
|
||||||
backbutton.grid()
|
backbutton.grid()
|
||||||
tempcon.mainloop()
|
tempcon.mainloop()
|
||||||
|
|
||||||
for i in temp:
|
for i in temp:
|
||||||
if i != "__pycache__":
|
if i != "__pycache__":
|
||||||
i = i[:-1]
|
i = i[:-1]
|
||||||
i = i[:-1]
|
i = i[:-1]
|
||||||
i = i[:-1]
|
i = i[:-1]
|
||||||
temp3 = "servers.{}".format(i)
|
temp3 = "servers.{}".format(i)
|
||||||
servers[i] = __import__(temp3, fromlist=[""])
|
servers[i] = __import__(temp3, fromlist=[""])
|
||||||
avaible[i] = False
|
avaible[i] = False
|
||||||
|
|
||||||
temp = os.listdir("ressources")
|
temp = os.listdir("ressources")
|
||||||
ressources = {}
|
ressources = {}
|
||||||
for i in temp:
|
for i in temp:
|
||||||
if i != "__pycache__" and i != "__init__.py":
|
if i != "__pycache__" and i != "__init__.py":
|
||||||
ressources[i] = {}
|
ressources[i] = {}
|
||||||
for f in os.listdir("ressources/{}".format(i)):
|
for f in os.listdir("ressources/{}".format(i)):
|
||||||
if f != "__pycache__" and f != "__init__.py":
|
if f != "__pycache__" and f != "__init__.py":
|
||||||
f = f[:-1]
|
f = f[:-1]
|
||||||
f = f[:-1]
|
f = f[:-1]
|
||||||
f = f[:-1]
|
f = f[:-1]
|
||||||
ressources[i][f] = __import__("ressources.{}.{}".format(i, f), fromlist=[""])
|
ressources[i][f] = __import__("ressources.{}.{}".format(i, f), fromlist=[""])
|
||||||
|
|
||||||
title = tk.Label(container, text="servers:")
|
title = tk.Label(container, text="servers:")
|
||||||
title.grid()
|
title.grid()
|
||||||
|
|
||||||
for i in servers:
|
for i in servers:
|
||||||
temp = tk.Button(container, text=i, command=lambda i=i: menu(i))
|
temp = tk.Button(container, text=i, command=lambda i=i: menu(i))
|
||||||
temp.grid()
|
temp.grid()
|
||||||
|
|
||||||
def install():
|
def install():
|
||||||
target = filedialog.askopenfilename()
|
target = filedialog.askopenfilename()
|
||||||
target = open(target, 'r')
|
target = open(target, 'r')
|
||||||
target = target.read()
|
target = target.read()
|
||||||
target = ast.literal_eval(target)
|
target = ast.literal_eval(target)
|
||||||
serverfile = open("servers/"+target["servername"]+".py", 'w')
|
serverfile = open("servers/"+target["servername"]+".py", 'w')
|
||||||
serverfile.write(target["serverdata"])
|
serverfile.write(target["serverdata"])
|
||||||
serverfile.close()
|
serverfile.close()
|
||||||
temp = target["ressources"]
|
temp = target["ressources"]
|
||||||
os.mkdir("ressources/{}".format(target["servername"]))
|
os.mkdir("ressources/{}".format(target["servername"]))
|
||||||
init = open("ressources/{}/__init__.py".format(target["servername"]), 'x')
|
init = open("ressources/{}/__init__.py".format(target["servername"]), 'x')
|
||||||
init.close()
|
init.close()
|
||||||
for i in temp:
|
for i in temp:
|
||||||
temp2 = open("ressources/{}/{}".format(target["servername"], i), 'w')
|
temp2 = open("ressources/{}/{}".format(target["servername"], i), 'w')
|
||||||
temp2.write(temp[i])
|
temp2.write(temp[i])
|
||||||
temp2.close()
|
temp2.close()
|
||||||
messagebox.showinfo("info!", "server installiert! bitte starten sie server managment neu!")
|
messagebox.showinfo("info!", "server installiert! bitte starten sie server managment neu!")
|
||||||
|
|
||||||
installbutton = tk.Button(container, text="installiere einen neuen server", command=install)
|
installbutton = tk.Button(container, text="installiere einen neuen server", command=install)
|
||||||
installbutton.grid()
|
installbutton.grid()
|
||||||
|
|
||||||
class JSRequestHandler(http.server.BaseHTTPRequestHandler):
|
class JSRequestHandler(http.server.BaseHTTPRequestHandler):
|
||||||
|
|
||||||
def getAppname(self):
|
def getAppname(self):
|
||||||
if self.path == "" or self.path == "/":
|
if self.path == "" or self.path == "/":
|
||||||
p = "__root__"
|
p = "__root__"
|
||||||
else:
|
else:
|
||||||
p = self.path.split("/")[1]
|
p = self.path.split("/")[1]
|
||||||
return p
|
return p
|
||||||
|
|
||||||
def do_GET(self):
|
def do_GET(self):
|
||||||
global avaible
|
global avaible
|
||||||
global ressources
|
global ressources
|
||||||
|
|
||||||
args = self.getAppname()
|
args = self.getAppname()
|
||||||
if args != "favicon.ico":
|
if args != "favicon.ico":
|
||||||
args = querytools.decode(args)
|
args = querytools.decode(args)
|
||||||
|
|
||||||
if args["targetserver"] in avaible:
|
if args["targetserver"] in avaible:
|
||||||
if avaible[args["targetserver"]] == True:
|
if avaible[args["targetserver"]] == True:
|
||||||
sb = str(servers[args["targetserver"]].GET(args, ressources[args["targetserver"]])).encode("utf-8")
|
sb = str(servers[args["targetserver"]].GET(args, ressources[args["targetserver"]])).encode("utf-8")
|
||||||
else:
|
else:
|
||||||
sb = str("server is down").encode("utf-8")
|
sb = str("server is down").encode("utf-8")
|
||||||
else:
|
else:
|
||||||
sb = str("server not found").encode("utf-8")
|
sb = str("server not found").encode("utf-8")
|
||||||
|
|
||||||
self.send_response(200)
|
self.send_response(200)
|
||||||
self.send_header("content-length", len(sb))
|
self.send_header("content-length", len(sb))
|
||||||
self.end_headers()
|
self.end_headers()
|
||||||
|
|
||||||
self.wfile.write(sb)
|
self.wfile.write(sb)
|
||||||
|
|
||||||
def do_PATCH(self):
|
def do_PATCH(self):
|
||||||
global avaible
|
global avaible
|
||||||
global ressources
|
global ressources
|
||||||
|
|
||||||
args = self.getAppname()
|
args = self.getAppname()
|
||||||
if args != "favicon.ico":
|
if args != "favicon.ico":
|
||||||
args = querytools.decode(args)
|
args = querytools.decode(args)
|
||||||
|
|
||||||
bpatch = self.rfile.read(int(self.headers.get('content-length', 0)))
|
bpatch = self.rfile.read(int(self.headers.get('content-length', 0)))
|
||||||
ps = bpatch.decode("utf-8")
|
ps = bpatch.decode("utf-8")
|
||||||
if args["targetserver"] in avaible:
|
if args["targetserver"] in avaible:
|
||||||
if avaible[args["targetserver"]] == True:
|
if avaible[args["targetserver"]] == True:
|
||||||
servers[args["targetserver"]].PATCH(args, ressources[args["targetserver"]])
|
servers[args["targetserver"]].PATCH(args, ressources[args["targetserver"]])
|
||||||
return self.do_GET()
|
return self.do_GET()
|
||||||
|
|
||||||
def log_message(self, format, *args):
|
def log_message(self, format, *args):
|
||||||
return
|
return
|
||||||
|
|
||||||
#https://www.justserv2.l--n.de
|
#https://www.justserv2.l--n.de
|
||||||
httpd = http.server.ThreadingHTTPServer(('localhost', 8080 ), JSRequestHandler)
|
httpd = http.server.ThreadingHTTPServer(('192.168.178.139', 8080 ), JSRequestHandler)
|
||||||
threading.Thread(target=httpd.serve_forever).start()
|
threading.Thread(target=httpd.serve_forever).start()
|
||||||
container.mainloop()
|
container.mainloop()
|
Loading…
Reference in New Issue