Use Heroicons for all UI icons (industry-standard icon library)
This commit is contained in:
parent
9c208de59b
commit
2f0e622002
|
|
@ -0,0 +1 @@
|
|||
{"users": {"admin": "14910ed21c660593256286cb49e038d78f16869a5e5576edfde0ef5e4a3785ef"}}
|
||||
68
server.log
68
server.log
|
|
@ -7,3 +7,71 @@ INFO: 127.0.0.1:45996 - "GET / HTTP/1.1" 200 OK
|
|||
INFO: 127.0.0.1:46010 - "GET / HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:51612 - "GET / HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:51616 - "GET / HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:61482 - "GET / HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:63590 - "GET /favicon.ico HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /favicon.ico HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "POST /api/setup/test-http HTTP/1.1" 200 OK
|
||||
2026-02-20 18:18:15,427 - fan_controller - INFO - Loaded config from /home/devmatrix/projects/fan-controller-v2/data/config.json
|
||||
2026-02-20 18:18:15,428 - fan_controller - INFO - Saved config to /home/devmatrix/projects/fan-controller-v2/data/config.json
|
||||
2026-02-20 18:18:15,600 - fan_controller - INFO - Connected to IPMI at 192.168.5.191
|
||||
2026-02-20 18:18:15,601 - fan_controller - INFO - HTTP sensor client initialized for http://192.168.5.200:8888
|
||||
/home/devmatrix/projects/fan-controller-v2/web_server.py:152: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC).
|
||||
self._sessions[token] = (username, datetime.utcnow() + timedelta(days=7))
|
||||
INFO: 192.168.5.30:60302 - "POST /api/setup HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET / HTTP/1.1" 200 OK
|
||||
/home/devmatrix/projects/fan-controller-v2/web_server.py:159: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC).
|
||||
if datetime.utcnow() > expiry:
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
INFO: 192.168.5.30:60302 - "GET /api/status HTTP/1.1" 200 OK
|
||||
|
|
|
|||
|
|
@ -476,11 +476,11 @@ def get_html(theme="dark"):
|
|||
<div class="container">
|
||||
<header>
|
||||
<div class="header-top">
|
||||
<h1><span class="icon-svg"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M14 14.76V3.5a2.5 2.5 0 0 0-5 0v11.26a4.5 4.5 0 1 0 5 0z"/><circle cx="11.5" cy="18.5" r="2" fill="currentColor"/></svg></span>IPMI Controller</h1>
|
||||
<h1><span class="icon-svg"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14 4h-4v7.35A4 4 0 1 0 14 16V4z"/></svg></span>IPMI Controller</h1>
|
||||
<div class="header-actions">
|
||||
<button class="secondary small" onclick="toggleTheme()"><span class="icon-svg"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><circle cx="12" cy="12" r="4"/><path d="M12 2v2m0 16v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2m16 0h2M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41" stroke-linecap="round"/></svg></span>Theme</button>
|
||||
<button class="secondary small" onclick="showPasswordModal()"><span class="icon-svg"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><rect x="5" y="11" width="14" height="10" rx="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4" stroke-linecap="round"/></svg></span>Password</button>
|
||||
<button class="secondary small" onclick="logout()"><span class="icon-svg"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4" stroke-linecap="round" stroke-linejoin="round"/><path d="M16 17l5-5-5-5" stroke-linecap="round" stroke-linejoin="round"/><path d="M21 12H9" stroke-linecap="round" stroke-linejoin="round"/></svg></span>Logout</button>
|
||||
<button class="secondary small" onclick="toggleTheme()"><span class="icon-svg"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="4"/><path d="M12 2v2m0 16v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2m16 0h2M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41"/></svg></span>Theme</button>
|
||||
<button class="secondary small" onclick="showPasswordModal()"><span class="icon-svg"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="5" y="11" width="14" height="10" rx="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4"/></svg></span>Password</button>
|
||||
<button class="secondary small" onclick="logout()"><span class="icon-svg"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"/><path d="M16 17l5-5-5-5"/><path d="M21 12H9"/></svg></span>Logout</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue