Initial commit: InfoUser Monitor with FastAPI, agent, Docker, JWT auth, notifications, filters and CSV export
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
from typing import Optional, List
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
class UserCreate(BaseModel):
|
||||
username: str
|
||||
password: str
|
||||
|
||||
|
||||
class UserOut(BaseModel):
|
||||
id: int
|
||||
username: str
|
||||
role: str
|
||||
created_at: Optional[datetime]
|
||||
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
|
||||
class Token(BaseModel):
|
||||
access_token: str
|
||||
refresh_token: str
|
||||
token_type: str = "bearer"
|
||||
|
||||
|
||||
class TokenRefresh(BaseModel):
|
||||
refresh_token: str
|
||||
|
||||
|
||||
class LoginPayload(BaseModel):
|
||||
username: str
|
||||
password: str
|
||||
|
||||
|
||||
class HeartbeatPayload(BaseModel):
|
||||
hostname: str
|
||||
username: str
|
||||
os_info: Optional[str] = None
|
||||
local_ip: Optional[str] = None
|
||||
public_ip: Optional[str] = None
|
||||
uptime_sec: int
|
||||
cpu_percent: float
|
||||
ram_percent: float
|
||||
ram_total_gb: Optional[float] = None
|
||||
disk_info: Optional[List[dict]] = None
|
||||
cpu_temp: Optional[float] = None
|
||||
load_avg: Optional[str] = None
|
||||
processes: Optional[List[dict]] = None
|
||||
|
||||
|
||||
class HeartbeatOut(BaseModel):
|
||||
id: int
|
||||
timestamp: datetime
|
||||
username: Optional[str]
|
||||
local_ip: Optional[str]
|
||||
cpu_percent: Optional[float]
|
||||
ram_percent: Optional[float]
|
||||
cpu_temp: Optional[float]
|
||||
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
|
||||
class ComputerOut(BaseModel):
|
||||
id: int
|
||||
hostname: str
|
||||
os_info: Optional[str]
|
||||
first_seen: Optional[datetime]
|
||||
last_seen: Optional[datetime]
|
||||
status: str
|
||||
current_user: Optional[str]
|
||||
current_ip: Optional[str]
|
||||
current_cpu_percent: Optional[float]
|
||||
current_ram_percent: Optional[float]
|
||||
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
|
||||
class ComputerDetailOut(ComputerOut):
|
||||
heartbeats: List[HeartbeatOut] = []
|
||||
|
||||
|
||||
class NotificationOut(BaseModel):
|
||||
id: int
|
||||
computer_id: Optional[int]
|
||||
type: str
|
||||
title: str
|
||||
message: str
|
||||
is_read: bool
|
||||
sent_at: Optional[datetime]
|
||||
read_at: Optional[datetime]
|
||||
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
Reference in New Issue
Block a user