webui / tool_server.py
Nerdur's picture
Upload 3 files
720200d verified
Raw
History Blame Contribute Delete
1.93 kB
"""
tool_server.py — Mini HTTP server za WebUI toolove
Servira /preset-creator i ostale admin alate na portu 8081
Radi kao sidecar uz Open WebUI (port 8080)
"""
from http.server import HTTPServer, BaseHTTPRequestHandler
import os
HTML_DIR = "/app/tools"
class ToolHandler(BaseHTTPRequestHandler):
def log_message(self, format, *args):
# Tiši logovi
pass
def do_GET(self):
path = self.path.split("?")[0].rstrip("/")
if path == "" or path == "/":
self.redirect("/preset-creator")
return
if path == "/preset-creator":
self.serve_file("preset_creator.html", "text/html; charset=utf-8")
return
# 404
self.send_response(404)
self.send_header("Content-Type", "text/plain; charset=utf-8")
self.end_headers()
self.wfile.write(b"404 Not Found")
def redirect(self, location):
self.send_response(302)
self.send_header("Location", location)
self.end_headers()
def serve_file(self, filename, content_type):
filepath = os.path.join(HTML_DIR, filename)
if not os.path.exists(filepath):
self.send_response(404)
self.send_header("Content-Type", "text/plain")
self.end_headers()
self.wfile.write(f"File not found: {filename}".encode())
return
with open(filepath, "rb") as f:
data = f.read()
self.send_response(200)
self.send_header("Content-Type", content_type)
self.send_header("Content-Length", str(len(data)))
self.end_headers()
self.wfile.write(data)
if __name__ == "__main__":
port = int(os.environ.get("TOOLS_PORT", 8081))
server = HTTPServer(("0.0.0.0", port), ToolHandler)
print(f"✅ Tool server pokrenut na portu {port}")
print(f" → http://localhost:{port}/preset-creator")
server.serve_forever()