Dateien hochladen nach „“
parent
7fadccad08
commit
ff6f27f1e3
|
@ -0,0 +1,27 @@
|
||||||
|
import requests
|
||||||
|
import urllib.parse as safer
|
||||||
|
def encode(target):
|
||||||
|
temp = "?"
|
||||||
|
for i in target:
|
||||||
|
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(args):
|
||||||
|
return requests.get("http://localhost:8080/{}".format(encode(args))).content.decode()
|
||||||
|
|
||||||
|
def patch(args):
|
||||||
|
print(encode(args))
|
||||||
|
requests.patch("http://localhost:8080/{}".format(encode(args)))
|
||||||
|
|
|
@ -0,0 +1,134 @@
|
||||||
|
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()
|
||||||
|
|
||||||
|
#https://www.justserv2.l--n.de
|
||||||
|
httpd = http.server.ThreadingHTTPServer(('localhost', 8080 ), JSRequestHandler)
|
||||||
|
threading.Thread(target=httpd.serve_forever).start()
|
||||||
|
container.mainloop()
|
|
@ -0,0 +1,19 @@
|
||||||
|
import urllib.parse as safer
|
||||||
|
def encode(target):
|
||||||
|
temp = "?"
|
||||||
|
for i in target:
|
||||||
|
temp = temp + i + "=" + target[i] + "&"
|
||||||
|
|
||||||
|
temp = temp[:-1]
|
||||||
|
return safer.quote(temp)
|
||||||
|
|
||||||
|
def decode(target):
|
||||||
|
target = safer.unquote(target)
|
||||||
|
print(target)
|
||||||
|
out = {}
|
||||||
|
target = target[1:]
|
||||||
|
args = target.split("&")
|
||||||
|
for i in args:
|
||||||
|
temp = i.split("=")
|
||||||
|
out[temp[0]] = temp[1]
|
||||||
|
return out
|
Loading…
Reference in New Issue