TrikozikGames commited on
Commit
0485ea0
·
verified ·
1 Parent(s): ef07796

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +68 -121
app.py CHANGED
@@ -2,18 +2,30 @@ from fastapi import FastAPI, Response
2
  from fastapi.responses import HTMLResponse
3
  import time
4
  import uvicorn
 
 
5
 
6
  app = FastAPI()
7
  start_time = time.time()
8
 
9
- # Готовый HTML интерфейс
 
 
 
 
 
 
 
 
 
 
10
  CYBERPUNK_HTML = """
11
  <!DOCTYPE html>
12
  <html lang="ru">
13
  <head>
14
  <meta charset="UTF-8">
15
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
16
- <title>CYBERNET // SERVER MONITOR</title>
17
  <style>
18
  @import url('https://fonts.googleapis.com/css2?family=Share+Tech+Mono&display=swap');
19
 
@@ -150,7 +162,7 @@ CYBERPUNK_HTML = """
150
  height: 100%;
151
  background: var(--neon-cyan);
152
  width: 0%;
153
- transition: width 0.5s ease-in-out;
154
  }
155
 
156
  .terminal {
@@ -176,67 +188,57 @@ CYBERPUNK_HTML = """
176
  <body>
177
  <div class="container">
178
  <header>
179
- <h1 id="main-title">CYBERNET // CORE_WATCH_v2.5</h1>
180
  <button class="lang-btn" id="lang-toggle" onclick="toggleLang()">EN</button>
181
  </header>
182
 
183
  <div class="grid">
184
  <div class="card">
185
- <div class="card-title" id="t-sys">> SESSION_INFO</div>
186
  <ul class="spec-list">
187
  <li><span id="t-uptime">Время аптайма:</span><span id="uptime">00h 00m 00s</span></li>
188
- <li><span id="t-status">Статус ядра:</span><span style="color: #00ff66 !important; text-shadow: 0 0 5px #00ff66;">ACTIVE</span></li>
189
- <li><span id="t-node">Локация ноды:</span><span>SPAIN_NET</span></li>
190
  </ul>
191
  </div>
192
 
193
  <div class="card">
194
- <div class="card-title" id="t-cpu">> HARDWARE_CPU</div>
195
  <ul class="spec-list">
196
- <li><span id="t-cpuname">Процессор:</span><span>Intel Core i5-10600K</span></li>
197
- <li><span id="t-cores">Ядра / Потоки:</span><span>6 / 12 @ 4.8GHz</span></li>
198
- <li><span id="t-cpuload">Нагрузка ядра:</span><span id="cpu-val">0%</span></li>
199
  </ul>
200
  <div class="progress-bar"><div class="progress-fill" id="cpu-bar"></div></div>
201
  </div>
202
 
203
  <div class="card">
204
- <div class="card-title" id="t-mem">> MEMORY_NET</div>
205
  <ul class="spec-list">
206
- <li><span id="t-ram">ОЗУ Общая:</span><span>32 GB RAM (Kingston FURY)</span></li>
207
- <li><span id="t-gpu">Видеокарта:</span><span>NVIDIA GTX 1660 Ti</span></li>
208
- <li><span id="t-vram">Видеопамять:</span><span>6 GB GDDR6</span></li>
209
  </ul>
210
- <div class="progress-bar"><div class="progress-fill" id="ram-bar" style="background: var(--neon-magenta); width: 34%;"></div></div>
211
  </div>
212
 
213
  <div class="card">
214
- <div class="card-title" id="t-net">> NETWORK_TARGET</div>
215
  <ul class="spec-list">
216
- <li><span>IP Локальный:</span><span>192.168.1.105</span></li>
217
- <li><span>DNS Сервер:</span><span>1.1.1.1 // 8.8.8.8</span></li>
218
- <li><span id="t-port">Порт шлюза:</span><span>7860 (SECURE)</span></li>
219
- </ul>
220
- </div>
221
-
222
- <div class="card">
223
- <div class="card-title" id="t-store">> STORAGE_DRIVES</div>
224
- <ul class="spec-list">
225
- <li><span>SSD (System Drive):</span><span>480 GB</span></li>
226
- <li><span>HDD (Data Volume):</span><span>1000 GB (1 TB)</span></li>
227
- <li><span id="t-fs">Разметка / ФС:</span><span>GPT / NTFS</span></li>
228
  </ul>
229
  </div>
230
  </div>
231
 
232
  <div class="terminal" id="term-logs">
233
- [SYS] Инициализация матрицы мониторинга CyberNet...<br>
234
- [NET] Сеть стабильна. Защита контейнера активна.<br>
235
- [OK] Бот UptimeRobot подключен к скрытому эндпоинту.<br>
236
  </div>
237
 
238
  <div class="footer">
239
- HOST: HF_DOCKER_CONTAINER // ACCESS_LEVEL: NETRUNNER_OVERRIDE
240
  </div>
241
  </div>
242
 
@@ -245,42 +247,36 @@ CYBERPUNK_HTML = """
245
 
246
  const dictionary = {
247
  RU: {
248
- title: "CYBERNET // МОНИТОРИНГ_СИСТЕМЫ",
249
- sys: "> ИНФОРМАЦИЯ_СЕССИИ",
250
  uptime: "Время аптайма:",
251
  status: "Статус ядра:",
252
- node: "Локация ноды:",
253
- cpu: "> ХАРАКТЕРИСТИКИ_ЦП",
254
- cpuname: "Процессор:",
255
- cores: "Ядра / Потоки:",
256
- cpuload: "Нагрузка ядра:",
257
- mem: "> СЕТЬ_ПАМЯТИ",
258
- ram: "ОЗУ Общая:",
259
- gpu: "Видеокарта:",
260
- vram: "Видеопамять:",
261
- net: "> СЕТЕВЫЕ_ПАРАМЕТРЫ",
262
- port: "Порт шлюза:",
263
- store: "> НАКОПИТЕЛИ_ДАННЫХ",
264
- fs: "Разметка / ФС:"
265
  },
266
  EN: {
267
- title: "CYBERNET // SYSTEM_WATCH_DOG",
268
- sys: "> SESSION_INFO",
269
  uptime: "Uptime Counter:",
270
  status: "Core Status:",
271
- node: "Node Location:",
272
- cpu: "> HARDWARE_CPU",
273
- cpuname: "CPU Name:",
274
- cores: "Cores / Threads:",
275
- cpuload: "Core Load:",
276
- mem: "> MEMORY_NET",
277
  ram: "Total RAM:",
278
- gpu: "Graphics GPU:",
279
- vram: "VRAM Volume:",
280
- net: "> NETWORK_TARGET",
281
- port: "Gateway Port:",
282
- store: "> STORAGE_DRIVES",
283
- fs: "Partition / FS:"
284
  }
285
  };
286
 
@@ -300,12 +296,7 @@ CYBERPUNK_HTML = """
300
  document.getElementById('t-cpuload').innerText = d.cpuload;
301
  document.getElementById('t-mem').innerText = d.mem;
302
  document.getElementById('t-ram').innerText = d.ram;
303
- document.getElementById('t-gpu').innerText = d.gpu;
304
- document.getElementById('t-vram').innerText = d.vram;
305
- document.getElementById('t-net').innerText = d.net;
306
- document.getElementById('t-port').innerText = d.port;
307
  document.getElementById('t-store').innerText = d.store;
308
- document.getElementById('t-fs').innerText = d.fs;
309
  }
310
 
311
  async function updateStats() {
@@ -313,61 +304,17 @@ CYBERPUNK_HTML = """
313
  let currentPath = window.location.pathname;
314
  if (!currentPath.endsWith('/')) currentPath += '/';
315
 
316
- let res = await fetch(currentPath + 'api/stats');
317
  let data = await res.json();
318
 
319
  document.getElementById('uptime').innerText = data.uptime;
 
 
 
 
320
 
321
- let fakeCpu = Math.floor(Math.random() * (38 - 12 + 1)) + 12;
322
- document.getElementById('cpu-val').innerText = fakeCpu + '%';
323
- document.getElementById('cpu-bar').style.width = fakeCpu + '%';
324
- } catch (e) {
325
- console.log("Error matrix reading...");
326
- }
327
- }
328
-
329
- const terminalPhrases = [
330
- "[OK] Проверка UptimeRobot: Статус 200 Принят.",
331
- "[SYS] Оптимизация фоновых задач Windows / Docker активна.",
332
- "[NET] Сканирование шлюзов... Атак не обнаружено.",
333
- "[SYS] Пакеты синхронизированы с центральным процессором.",
334
- "[OK] ОЗУ очищена. Задержка подсети минимальна."
335
- ];
336
-
337
- function updateTerminal() {
338
- const term = document.getElementById('term-logs');
339
- const randomPhrase = terminalPhrases[Math.floor(Math.random() * terminalPhrases.length)];
340
- term.innerHTML += randomPhrase + "<br>";
341
- term.scrollTop = term.scrollHeight;
342
- if (term.innerHTML.split("<br>").length > 6) {
343
- term.innerHTML = term.innerHTML.split("<br>").slice(1).join("<br>");
344
- }
345
- }
346
-
347
- setInterval(updateStats, 2000);
348
- setInterval(updateTerminal, 5000);
349
- updateStats();
350
- </script>
351
- </body>
352
- </html>
353
- """
354
-
355
- @app.get("/", response_class=HTMLResponse)
356
- def read_root():
357
- return HTMLResponse(content=CYBERPUNK_HTML, status_code=200)
358
-
359
- @app.get("/api/stats")
360
- def get_stats():
361
- uptime_seconds = int(time.time() - start_time)
362
- hours, remainder = divmod(uptime_seconds, 3600)
363
- minutes, seconds = divmod(remainder, 60)
364
- uptime_string = f"{hours:02d}h {minutes:02d}m {seconds:02d}s"
365
- return {"uptime": uptime_string}
366
-
367
- @app.api_route("/my_secret_ping_9912", methods=["GET", "HEAD", "POST"])
368
- def ping():
369
- return Response(content="Status: OK", media_type="text/plain")
370
-
371
- if __name__ == "__main__":
372
- uvicorn.run(app, host="0.0.0.0", port=7860)
373
-
 
2
  from fastapi.responses import HTMLResponse
3
  import time
4
  import uvicorn
5
+ import os
6
+ import psutil
7
 
8
  app = FastAPI()
9
  start_time = time.time()
10
 
11
+ def get_cpu_model():
12
+ try:
13
+ with open("/proc/cpuinfo", "r") as f:
14
+ for line in f:
15
+ if "model name" in line:
16
+ return line.split(":")[1].strip()
17
+ except:
18
+ pass
19
+ return "Virtual vCPU"
20
+
21
+ # Полный HTML-интерфейс, запрашивающий реальные системные метрики
22
  CYBERPUNK_HTML = """
23
  <!DOCTYPE html>
24
  <html lang="ru">
25
  <head>
26
  <meta charset="UTF-8">
27
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
28
+ <title>CYBERNET // REAL SERVER MONITOR</title>
29
  <style>
30
  @import url('https://fonts.googleapis.com/css2?family=Share+Tech+Mono&display=swap');
31
 
 
162
  height: 100%;
163
  background: var(--neon-cyan);
164
  width: 0%;
165
+ transition: width 0.3s ease-in-out;
166
  }
167
 
168
  .terminal {
 
188
  <body>
189
  <div class="container">
190
  <header>
191
+ <h1 id="main-title">REAL HF SERVER // MONITOR_v3.0</h1>
192
  <button class="lang-btn" id="lang-toggle" onclick="toggleLang()">EN</button>
193
  </header>
194
 
195
  <div class="grid">
196
  <div class="card">
197
+ <div class="card-title" id="t-sys">> CLOUD_SESSION</div>
198
  <ul class="spec-list">
199
  <li><span id="t-uptime">Время аптайма:</span><span id="uptime">00h 00m 00s</span></li>
200
+ <li><span id="t-status">Статус ядра:</span><span style="color: #00ff66 !important; text-shadow: 0 0 5px #00ff66;">ONLINE</span></li>
201
+ <li><span id="t-node">Тип ОС:</span><span>Linux (Ubuntu)</span></li>
202
  </ul>
203
  </div>
204
 
205
  <div class="card">
206
+ <div class="card-title" id="t-cpu">> REAL_HF_CPU</div>
207
  <ul class="spec-list">
208
+ <li><span id="t-cpuname">Модель ЦП:</span><span id="cpu-model" style="font-size:0.9rem;">Loading...</span></li>
209
+ <li><span id="t-cores">Доступно ядер:</span><span id="cpu-cores">0</span></li>
210
+ <li><span id="t-cpuload">Загрузка ЦП:</span><span id="cpu-val">0%</span></li>
211
  </ul>
212
  <div class="progress-bar"><div class="progress-fill" id="cpu-bar"></div></div>
213
  </div>
214
 
215
  <div class="card">
216
+ <div class="card-title" id="t-mem">> REAL_HF_RAM</div>
217
  <ul class="spec-list">
218
+ <li><span id="t-ram">Всего памяти:</span><span id="ram-total">0 GB</span></li>
219
+ <li><span id="t-ram-used">Занято ОЗУ:</span><span id="ram-used">0 GB</span></li>
220
+ <li><span id="t-ram-pct">Процент:</span><span id="ram-val">0%</span></li>
221
  </ul>
222
+ <div class="progress-bar"><div class="progress-fill" id="ram-bar" style="background: var(--neon-magenta);"></div></div>
223
  </div>
224
 
225
  <div class="card">
226
+ <div class="card-title" id="t-store">> CONTAINER_STORAGE</div>
227
  <ul class="spec-list">
228
+ <li><span>Всего на Диске:</span><span id="disk-total">0 GB</span></li>
229
+ <li><span>Свободно места:</span><span id="disk-free">0 GB</span></li>
230
+ <li><span>Занято под проект:</span><span id="disk-used">0 GB</span></li>
 
 
 
 
 
 
 
 
 
231
  </ul>
232
  </div>
233
  </div>
234
 
235
  <div class="terminal" id="term-logs">
236
+ [SYS] Подключение к подсистеме Linux выполнено...<br>
237
+ [OK] Чтение файлов /proc/cpuinfo и метрик psutil запущено.<br>
 
238
  </div>
239
 
240
  <div class="footer">
241
+ ENVIRONMENT: HUGGING_FACE_SPACES_DOCKER // API: FASTAPI // PORT: 7860
242
  </div>
243
  </div>
244
 
 
247
 
248
  const dictionary = {
249
  RU: {
250
+ title: "REAL HF SERVER // MONITOR_v3.0",
251
+ sys: "> ИНФОРМАЦИЯ_ОБЛАКА",
252
  uptime: "Время аптайма:",
253
  status: "Статус ядра:",
254
+ node: "Тип ОС:",
255
+ cpu: "> РЕАЛЬНЫЙ_ЦП_HF",
256
+ cpuname: "Модель ЦП:",
257
+ cores: "Доступно ядер:",
258
+ cpuload: "Загрузка ЦП:",
259
+ mem: "> РЕАЛЬНАЯ_ОЗУ_HF",
260
+ ram: "Всего памяти:",
261
+ ram_used: "Занято ОЗУ:",
262
+ ram_pct: "Процент:",
263
+ store: "> ДИСК_КОНТЕЙНЕРА"
 
 
 
264
  },
265
  EN: {
266
+ title: "REAL HF SERVER // MONITOR_v3.0",
267
+ sys: "> CLOUD_SESSION",
268
  uptime: "Uptime Counter:",
269
  status: "Core Status:",
270
+ node: "OS Type:",
271
+ cpu: "> REAL_HF_CPU",
272
+ cpuname: "CPU Model:",
273
+ cores: "Available Cores:",
274
+ cpuload: "CPU Load:",
275
+ mem: "> REAL_HF_RAM",
276
  ram: "Total RAM:",
277
+ ram_used: "Used RAM:",
278
+ ram_pct: "Percentage:",
279
+ store: "> CONTAINER_STORAGE"
 
 
 
280
  }
281
  };
282
 
 
296
  document.getElementById('t-cpuload').innerText = d.cpuload;
297
  document.getElementById('t-mem').innerText = d.mem;
298
  document.getElementById('t-ram').innerText = d.ram;
 
 
 
 
299
  document.getElementById('t-store').innerText = d.store;
 
300
  }
301
 
302
  async function updateStats() {
 
304
  let currentPath = window.location.pathname;
305
  if (!currentPath.endsWith('/')) currentPath += '/';
306
 
307
+ let res = await fetch(currentPath + 'api/real_specs');
308
  let data = await res.json();
309
 
310
  document.getElementById('uptime').innerText = data.uptime;
311
+ document.getElementById('cpu-model').innerText = data.cpu_model;
312
+ document.getElementById('cpu-cores').innerText = data.cpu_cores;
313
+ document.getElementById('cpu-val').innerText = data.cpu_usage + '%';
314
+ document.getElementById('cpu-bar').style.width = data.cpu_usage + '%';
315
 
316
+ document.getElementById('ram-total').innerText = data.ram_total + ' GB';
317
+ document.getElementById('ram-used').innerText = data.ram_used + ' GB';
318
+ document.getElementById('ram-val').innerText = data.ram_percent + '%';
319
+ document.getElementById('
320
+