from fastapi import FastAPI,Depends import mysql.connector from datetime import datetime import Classes.main_classes as CL ## Importiert Classes import uvicorn import logging import auth from fastapi.security.api_key import APIKey logging.basicConfig(level=logging.DEBUG) # add this line logger = logging.getLogger("foo") ## uvicorn.exe main:app --reload Startet den API-Server def database(query,name,user): # server.start() # print(f"{filename}-SSH Server start Port:{ssh_tunnel.server_port()}") mydb = mysql.connector.connect( host="172.17.1.21", port=3306, user="root", password="N53yBCswuawzBzS445VNAhWVMs3N59Gb9szEsrzXRBzarDqpdETpQeyt5v5CGe", database="" + name, auth_plugin='mysql_native_password', ) mydb.connect() # print(f"{filename}-SQL Server Connect") # print(f"{filename}-{query}") cursor = mydb.cursor() if "SELECT" in query: if user: cursor.execute(query, user) return cursor.fetchone() else: cursor.execute(query, user) # print(f"{filename}- Inside SELECT ALL") return cursor.fetchall() if "SHOW" in query: cursor.execute(query) return cursor.fetchall() if "INSERT" in query: cursor.execute(query,user) mydb.commit() if "UPDATE" in query: cursor.execute(query,user) mydb.commit() mydb.close() app = FastAPI() @app.post("/ping") async def ping(ping: CL.CL_Ping_Set,api_key: APIKey = Depends(auth.get_api_key)): database(f"INSERT INTO `Ping-Server` VALUES ('{datetime.now()}','{ping.name}','{ping.ipaddress}')","Stines-GmbH","") return f"ADD Ping from {ping.name} to Server" ## Get Database from Server @app.post("/dbget") async def database_get(get: CL.CL_Database_get): get_database = database("SHOW DATABASES","","") if get.name in f"({get_database},)": return True else: return False @app.post("/cpu_info") async def cpu_info(get: CL.CL_CPUinfo): return database(f"SELECT `Prozessor-Anzahl` FROM `CPU-Liste` WHERE `CPU-Name`='{get.name}'","Stines-GmbH","") @app.post("/systeminfo_set") async def systeminfo_set(get: CL.CL_Systeminfo_set): database(f"UPDATE `Kunden-Server` SET RAM={get.ram}, Prozessor={get.prozessor}, CPU='{get.cpu}',single_free_hdd='{get.single_free_hdd}',single_used_hdd='{get.single_used_hdd}',single_total_hdd='{get.single_total_hdd}',total_free_hdd='{get.total_free_hdd}',total_used_hdd='{get.total_used_hdd}',total_total_hdd='{get.total_total_hdd}' WHERE `IP-Adresse`='{get.ipaddress}'","Stines-GmbH","") return f"Server was UPDATE RAM={get.ram}, Prozessor={get.prozessor}, CPU={get.cpu}, IP-Adresse={get.ipaddress}" @app.post("/systeminfo_get") async def systeminfo_set(get: CL.CL_Systeminfo_get): return database("SELECT * FROM `Stines-GmbH`.`Kunden-Server` WHERE `IP-Adresse` = ""'{}'""".format(get.ipaddress),"","") ## Startet den API-Server if __name__ == '__main__': uvicorn.run("main:app", host='0.0.0.0', port=80, reload=True, log_level="debug")