Compare commits
9 Commits
1d00d5f4f5
...
9949179997
| Author | SHA1 | Date | |
|---|---|---|---|
|
9949179997
|
|||
|
6a072724f2
|
|||
|
b79f3f3387
|
|||
|
a494b606a5
|
|||
|
90094e9c43
|
|||
|
4285da4fa8
|
|||
|
14450ba70d
|
|||
|
5a4b5ddd82
|
|||
|
2964ac7644
|
@@ -4,14 +4,17 @@ import logging as lg
|
||||
|
||||
if __name__ == "__main__":
|
||||
from judas_server.web.web_server import JudasWebServer
|
||||
from judas_server.backend import BackendServer
|
||||
|
||||
lg.basicConfig(
|
||||
level=lg.DEBUG,
|
||||
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
|
||||
)
|
||||
|
||||
server = JudasWebServer(secret_key="dildo")
|
||||
server.run(
|
||||
backend_server = BackendServer()
|
||||
|
||||
web_server = JudasWebServer(backend=backend_server, secret_key="dildo")
|
||||
web_server.run(
|
||||
host="0.0.0.0",
|
||||
port=5000,
|
||||
)
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
from .server import BackendServer
|
||||
|
||||
__all__ = ["BackendServer"]
|
||||
|
||||
48
src/judas_server/backend/server.py
Normal file
48
src/judas_server/backend/server.py
Normal file
@@ -0,0 +1,48 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Any
|
||||
|
||||
import logging as lg
|
||||
import random as rn
|
||||
import threading
|
||||
import time
|
||||
|
||||
|
||||
class BackendServer:
|
||||
def __init__(self) -> None:
|
||||
self.logger: lg.Logger = lg.getLogger(
|
||||
f"{__name__}.{self.__class__.__name__}"
|
||||
)
|
||||
self.logger.debug("Initializing Server...")
|
||||
|
||||
# TODO: add socket logic here
|
||||
|
||||
self.clients: dict[str, dict[str, dict[str, Any]]] = {
|
||||
"C_01": {
|
||||
"one_time": {
|
||||
"hostname": "mock-host",
|
||||
"platform": "windows 11",
|
||||
"cpu_info": "i7",
|
||||
},
|
||||
"polled": {"cpu_usage": 0, "mem_usage": 0},
|
||||
"ondemand": {},
|
||||
}
|
||||
}
|
||||
|
||||
self.running: bool = False
|
||||
|
||||
def start_polling(self) -> None:
|
||||
self.running = True
|
||||
|
||||
def _poll_loop(self) -> None:
|
||||
while self.running:
|
||||
for client in self.clients.values():
|
||||
client["polled"]["cpu"] = round(rn.uniform(0, 100), 1)
|
||||
client["polled"]["ram"] = round(rn.uniform(0, 100), 1)
|
||||
time.sleep(1)
|
||||
|
||||
def get_client_data(
|
||||
self, client_id: str
|
||||
) -> dict[str, dict[str, Any]] | None:
|
||||
return self.clients.get(client_id, None)
|
||||
@@ -1,12 +1,15 @@
|
||||
<!DOCTYPE html>
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>judas panel - details</title>
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
|
||||
</head>
|
||||
<body>
|
||||
<link
|
||||
rel="stylesheet"
|
||||
href="{{ url_for('static', filename='css/style.css') }}"
|
||||
/>
|
||||
</head>
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
<header>
|
||||
<h1><a href="{{ url_for('index.index') }}">judas</a></h1>
|
||||
@@ -16,7 +19,11 @@
|
||||
<div class="button-container">
|
||||
<p><a href="{{ url_for('panel') }}" class="link">Back to Panel</a></p>
|
||||
<h2>{{ pc.id }}</h2>
|
||||
<p><a href="{{ url_for('stream', pc_id=pc.id) }}" class="link">View Stream</a></p>
|
||||
<p>
|
||||
<a href="{{ url_for('stream', pc_id=pc.id) }}" class="link"
|
||||
>View Stream</a
|
||||
>
|
||||
</p>
|
||||
</div>
|
||||
<table class="center-table details-table">
|
||||
<tbody>
|
||||
@@ -32,5 +39,6 @@
|
||||
</table>
|
||||
</main>
|
||||
</div>
|
||||
</body>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
@@ -3,30 +3,39 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import logging as lg
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
from flask import Flask
|
||||
from flask_login import LoginManager
|
||||
|
||||
from judas_server.web.user import load_user
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from judas_server.backend import BackendServer
|
||||
|
||||
|
||||
class JudasWebServer:
|
||||
def __init__(self, secret_key: str) -> None:
|
||||
def __init__(self, backend: BackendServer, secret_key: str) -> None:
|
||||
self.logger: lg.Logger = lg.getLogger(
|
||||
f"{__name__}.{self.__class__.__name__}"
|
||||
)
|
||||
self.logger.debug("Initializing JudasWebServer...")
|
||||
|
||||
self.backend: BackendServer = backend
|
||||
|
||||
self.app: Flask = Flask(
|
||||
__name__, static_folder="static", template_folder="templates"
|
||||
)
|
||||
self.app.secret_key = secret_key
|
||||
|
||||
self.app.config["WEB_SERVER"] = self
|
||||
self.app.config["BACKEND"] = self.backend
|
||||
|
||||
# hard-code password
|
||||
self.app.config["PASSWORD"] = "123"
|
||||
|
||||
# extensions
|
||||
self.login_manager: LoginManager = LoginManager()
|
||||
self.app.config["LoginManager"] = self.login_manager
|
||||
|
||||
self.configure_extensions()
|
||||
self.init_routes()
|
||||
|
||||
Reference in New Issue
Block a user