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