Dateien hochladen nach „“

master
Justus Jan Nico Wolff 2022-10-30 14:50:18 +01:00
parent 7fadccad08
commit ff6f27f1e3
4 changed files with 181 additions and 0 deletions

27
communicate.py 100644
View File

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

134
main.py 100644
View File

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

19
querytools.py 100644
View File

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

1
states 100644
View File

@ -0,0 +1 @@
{'test': {"test2": 1}}