83 lines
3.0 KiB
Python
83 lines
3.0 KiB
Python
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=8000, reload=True, log_level="debug") |