commit 7f09944bf51531e7f340ee735ae166942d13b19e Author: Madeline McWhorter Date: Wed Jun 10 21:05:51 2026 -0500 initial commit: diff --git a/api.py b/api.py new file mode 100644 index 0000000..4ce4d23 --- /dev/null +++ b/api.py @@ -0,0 +1,9 @@ +from flask import Flask + +app = Flask("RecForever.API") + +@app.route("/api") +def apiRoot(): + pass + +app.run(port=9902) \ No newline at end of file diff --git a/app.py b/app.py new file mode 100644 index 0000000..908f5db --- /dev/null +++ b/app.py @@ -0,0 +1,46 @@ +import subprocess +import atexit +import sys +import time + +trackedProcesses : list = [] + +def cleanup(): + print("\n[MainServer] Cleaning up server processes") + for proc in trackedProcesses: + if proc.poll() is None: + print(f"[MainServer] Terming server subroutine {proc.pid}") + proc.terminate() + + time.sleep(0.5) + + for proc in trackedProcesses: + if proc.poll() is None: + print(f"[MainServer] Forcekilling leftover process {proc.pid}") + proc.kill() + +atexit.register(cleanup) + +def main(): + try: + ns = subprocess.Popen([sys.executable, 'nameserver.py']) + trackedProcesses.append(ns) + api =subprocess.Popen([sys.executable, 'api.py']) + trackedProcesses.append(api) + auth =subprocess.Popen([sys.executable, 'auth.py']) + trackedProcesses.append(auth) + cdn =subprocess.Popen([sys.executable, 'cdn.py']) + trackedProcesses.append(cdn) + + while True: + # make it run forever without doing anything (it should still output the individual servers outputs) + pass + + + except KeyboardInterrupt: + print("\n[MainServer] Server closing!") + finally: + sys.exit(0) + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/auth.py b/auth.py new file mode 100644 index 0000000..707cfcb --- /dev/null +++ b/auth.py @@ -0,0 +1,15 @@ +from flask import Flask, request, jsonify +players = { + "Dev": "Dev123" +} +app = Flask("RecForever.Auth") +@app.route("/login/byuid", methods=['POST']) +def login(): + data = request.get_json() + username = data.get('username') + password = data.get('password') + if players[username] == password: + return jsonify({"status": "ok"}), 200 + else: + return jsonify({"status": "forbidden"}), 403 +app.run(port=9904) \ No newline at end of file diff --git a/cdn.py b/cdn.py new file mode 100644 index 0000000..fce12a9 --- /dev/null +++ b/cdn.py @@ -0,0 +1,17 @@ +import http.server +import socketserver +import functools + +port = 9903 +db = "db" + +Handler = functools.partial( + http.server.SimpleHTTPRequestHandler, + directory=db +) + +with socketserver.TCPServer(("", port), Handler) as httpd: + try: + httpd.serve_forever() + except KeyboardInterrupt: + httpd.server_close() diff --git a/db/images/person.png b/db/images/person.png new file mode 100644 index 0000000..3527fd5 Binary files /dev/null and b/db/images/person.png differ diff --git a/db/spaces/DormRoom.scn b/db/spaces/DormRoom.scn new file mode 100644 index 0000000..bc3d107 Binary files /dev/null and b/db/spaces/DormRoom.scn differ diff --git a/nameserver.py b/nameserver.py new file mode 100644 index 0000000..bebe243 --- /dev/null +++ b/nameserver.py @@ -0,0 +1,9 @@ +from flask import Flask, make_response, jsonify + +app = Flask("RecForever.NamerServer") + +@app.route("/") +def root(): + return jsonify({"api": "127.0.0.1:9902", "cdn": "127.0.0.1:9903", "auth": "127.0.0.1:9904"}) + +app.run(port=9901) \ No newline at end of file