diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d344ba6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +config.json diff --git a/README.md b/README.md index 24732c3..40994e1 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ Change `CONFIG_DB_CONNECT` with your PostgreSQL config string, and `CONFIG_LISTE ## Run - python3 getblocks.py + python3 mtapi.py ## Use diff --git a/getblocks.py b/mtapi.py similarity index 87% rename from getblocks.py rename to mtapi.py index 6a9e38a..a2e55e0 100644 --- a/getblocks.py +++ b/mtapi.py @@ -2,9 +2,21 @@ import cbor, gzip, json, lzma, psycopg2, re, socket, time -CONFIG_DB_CONNECT = "host=127.0.0.1 port=5432 user=minetest password=PASSWORD dbname=minetest-world" -CONFIG_LISTEN = ("0.0.0.0", 8060) +DEFAULT_CONFIG = { + "db_blocks": { + "type": "postgre", + "info_postgre": { + "connect": "host=127.0.0.1 port=5432 user=minetest password=PASSWORD dbname=minetest-world" + } + }, + "server": { + "listen_addr": "0.0.0.0", + "listen_port": 8060, + "write_passwords": [] + } +} +CONFIG_PATH = "config.json" RECBUF = 1024 AVAILABLE_FORMATS = {"json": "text/json", "cbor": "application/cbor"} @@ -35,8 +47,17 @@ def send_response(client, code, resp, resp_format, resp_compression): client.close() if __name__ == "__main__": - conn = psycopg2.connect(CONFIG_DB_CONNECT) + # Read config + config_file = open(CONFIG_PATH, "r") + config = json.load(config_file) + config_file.close() + + # Open DB + if config["db_blocks"]["type"] == "postgre": + conn = psycopg2.connect(CONFIG_DB_CONNECT) + + # Start server server_addr = CONFIG_LISTEN if ":" in server_addr[0]: # IPv6 sock = socket.socket(socket.AF_INET6, socket.SOCK_STREAM) @@ -44,10 +65,12 @@ if __name__ == "__main__": sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) sock.settimeout(5) + server_addr = (config["server"]["listen_addr"], config["server"]["listen_port"]) sock.bind(server_addr) sock.listen(1) print("Server started at "+str(server_addr)) + # Listen while True: try: client, addr = sock.accept()