diff --git a/app.py b/app.py index d1e9568..165aad1 100644 --- a/app.py +++ b/app.py @@ -2,9 +2,10 @@ from fastapi import FastAPI, Request, HTTPException from fastapi.responses import HTMLResponse from fastapi.staticfiles import StaticFiles from fastapi.templating import Jinja2Templates +from sqlmodel import Field, Session, SQLModel, create_engine, select import json -from ordinateur import ordinateur +from models import ordinateur app = FastAPI() @@ -15,6 +16,15 @@ app.mount("/static", StaticFiles(directory="static"), name="static") templates = Jinja2Templates(directory="templates") +# Code above omitted + +sqlite_file_name = "database.db" +sqlite_url = f"sqlite:///{sqlite_file_name}" + +connect_args = {"check_same_thread": False} +engine = create_engine(sqlite_url, connect_args=connect_args) + +# Code below omitted @app.get("/ordi1", response_class=HTMLResponse) async def get_ordi1_info(request: Request): @@ -35,31 +45,37 @@ async def receive_info(request: Request): except json.JSONDecodeError: raise HTTPException(status_code=400, detail="Invalid JSON") + + # Debug + hardware = data.get('HARDWARE',{}) + software = data.get('SOFTWARE',{}) + print("Infos reçues :", data) - ordi1.mb_serial = data['HARDWARE']['mb_serial'] - ordi1.hostname = data['HARDWARE']['hostname'] - ordi1.cpu = data['HARDWARE']['cpu'] - ordi1.cpu_id = data['HARDWARE']['cpu_id'] - ordi1.memory_mb = data['HARDWARE']['memory_mb'] - ordi1.ram_size = data['HARDWARE']['ram_size'] - ordi1.ram_gen = data['HARDWARE']['ram_gen'] - ordi1.sizes = data['HARDWARE']['sizes'] - ordi1.cpu_freq_min = data['HARDWARE']['cpu_freq_min'] - ordi1.cpu_freq_cur = data['HARDWARE']['cpu_freq_cur'] - ordi1.cpu_freq_max = data['HARDWARE']['cpu_freq_max'] - ordi1.gpu_model = data['HARDWARE']['gpu_model'] - ordi1.chassis_serial = data['HARDWARE']['chassis_serial'] - ordi1.cpu_cores_nb = data['HARDWARE']['cpu_cores_nb'] - ordi1.cpu_threads_nb = data['HARDWARE']['cpu_threads_nb'] - ordi1.ram_number = data['HARDWARE']['ram_number'] - ordi1.ram_slots_nb = data['HARDWARE']['ram_slots_nb'] - ordi1.os = data['SOFTWARE']['os'] - ordi1.arch = data['SOFTWARE']['arch'] - ordi1.desktop = data['SOFTWARE']['desktop'] - ordi1.wm = data['SOFTWARE']['wm'] - ordi1.kernel = data['SOFTWARE']['kernel'] - ordi1.mac_adresse = data['SOFTWARE']['mac_adresse'] + ordi1.mb_serial = hardware.get("mb_serial", "") + ordi1.hostname = hardware.get("hostname", "") + ordi1.cpu = hardware.get("cpu", "") + ordi1.cpu_id = hardware.get("cpu_id", "") + ordi1.memory_mb = hardware.get("memory_mb", "") + ordi1.ram_size = hardware.get("ram_size", "") + ordi1.ram_gen = hardware.get("ram_gen", "") + ordi1.sizes = hardware.get("sizes", "") + ordi1.cpu_freq_min = hardware.get("cpu_freq_min", "") + ordi1.cpu_freq_cur = hardware.get("cpu_freq_cur", "") + ordi1.cpu_freq_max = hardware.get("cpu_freq_max", "") + ordi1.gpu_model = hardware.get("gpu_model", "") + ordi1.chassis_serial = hardware.get("chassis_serial", "") + ordi1.cpu_cores_nb = hardware.get("cpu_cores_nb", "") + ordi1.cpu_threads_nb = hardware.get("cpu_threads_nb", "") + ordi1.ram_number = hardware.get("ram_number", "") + ordi1.ram_slots_nb = hardware.get("ram_slots_nb", "") + ordi1.mac_adresse = hardware.get("mac_adress", "") + + ordi1.os = software.get("os", "") + ordi1.arch = software.get("arch", "") + ordi1.desktop = software.get("desktop", "") + ordi1.wm = software.get("wm", "") + ordi1.kernel = software.get("kernel", "") #Test print(f"Le serial de la mb est {ordi1.mb_serial}") diff --git a/grabber.sh b/grabber.sh index 6c616eb..7a60c48 100755 --- a/grabber.sh +++ b/grabber.sh @@ -82,15 +82,16 @@ json_data=$(jq -n \ cpu_cores_nb:$cpu_cores_nb, cpu_threads_nb:$cpu_threads_nb, ram_number:$ram_number, - ram_slots_nb:$ram_slots_nb + ram_slots_nb:$ram_slots_nb, + mac_adresse:$mac_adresse, }, + SOFTWARE: { os:$os, arch:$arch, desktop:$desktop, wm:$wm, kernel:$kernel, - mac_adresse:$mac_adresse } }') @@ -200,6 +201,7 @@ hardware() { echo "CPU_THREADS_NUMBER=$CPU_THREADS_NUMBER" echo "RAM_NUMBER=$RAM_NUMBER" echo "RAM_SLOTS_NUMBER=$RAM_SLOTS_NUMBER" + echo "MAC_ADRESSE=$MAC_ADRESSE" sizes=$(lsblk -dnb |grep -v loop |grep -v boot |tr -s " " |cut -d \ -f4) STOCKAGE_TOTAL=0 diff --git a/models.py b/models.py new file mode 100644 index 0000000..641f6ab --- /dev/null +++ b/models.py @@ -0,0 +1,98 @@ +#!/usr/bin/python3 +import configparser +import requests +from sqlmodel import Field, Session, SQLModel, create_engine, select + +class ordinateur(SQLModel, table=True): + id: int | None = Field(default=None, primary_key=True) + hostname: str = Field(index=True) + cpu: str = Field(index=True) + cpu_freq_min: str = Field(index=True) + cpu_freq_cur: str = Field(index=True) + cpu_freq_max: str = Field(index=True) + cpu_id: str = Field(index=True) + mb_serial: str = Field(index=True) + ram_size: str = Field(index=True) + ram_gen: str = Field(index=True) + sizes: str = Field(index=True) + memory_mb: str = Field(index=True) + gpu_model: str = Field(index=True) + chassis_serial: str = Field(index=True) + cpu_cores_nb: str = Field(index=True) + cpu_threads_nb: str = Field(index=True) + ram_number: str = Field(index=True) + ram_slots_nb: str = Field(index=True) + stockage_total: str = Field(index=True) + mac_adresse: str = Field(index=True) + + os: str = Field(index=True) + arch: str = Field(index=True) + desktop: str = Field(index=True) + wm: str = Field(index=True) + kernel: str = Field(index=True) + + +''' + def reload(self): + r = requests.get("http://localhost:8000/summary.txt") + r.raise_for_status() + print(type(r.content.decode("utf-8"))) + + sum=configparser.ConfigParser() + sum.read_string(r.content.decode("utf-8")) + #sum.read("/opt/grabber/summary.txt") + + if "CPU" in sum['HARDWARE']: + self.cpu = sum['HARDWARE']['CPU'] + + if "CPU_SERIAL" in sum['HARDWARE']: + self.cpu_serial = sum['HARDWARE']['CPU_SERIAL'] + + if "CPU_FREQ" in sum['HARDWARE']: + self.cpu_freq = sum['HARDWARE']['CPU_FREQ'] + + if "CPU_ID" in sum['HARDWARE']: + self.cpu_id = sum['HARDWARE']['CPU_ID'] + + if "RAM" in sum['HARDWARE']: + self.ram = sum['HARDWARE']['RAM'] + + if "RAM_GEN" in sum['HARDWARE']: + self.ram_gen = sum['HARDWARE']['RAM_GEN'] + + if "STOCKAGE_TOTAL" in sum['HARDWARE']: + self.stockage_total = sum['HARDWARE']['STOCKAGE_TOTAL'] + + if "OS" in sum['SOFTWARE']: + self.os = sum['SOFTWARE']['OS'] + + if "ARCH" in sum['SOFTWARE']: + self.arch = sum['SOFTWARE']['ARCH'] + + if "DESKTOP" in sum['SOFTWARE']: + self.desktop = sum['SOFTWARE']['DESKTOP'] + + if "WM" in sum['SOFTWARE']: + self.wm = sum['SOFTWARE']['WM'] + + if "KERNEL" in sum['SOFTWARE']: + self.kernel = sum['SOFTWARE']['KERNEL'] + + def __init__(self): + self.reload() +''' + +def shutdown(): + return +def status(self): + return +def link_to_user(self,user): + return +def remove_user_access(self): + return +def show_users(self): + return + +#sum=configparser.ConfigParser() +#sum.read("/opt/grabber/summary.txt") +#sum.sections