mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2025-12-12 01:00:29 +08:00
platform info
This commit is contained in:
parent
434d16d523
commit
c07f811c87
@ -6,6 +6,10 @@ parse = (?P<major>\d+)\.(?P<minor>\d+)(\.(?P<patch>\d+)(\-(?P<release>[a-z]+))?)
|
|||||||
serialize =
|
serialize =
|
||||||
{major}.{minor}
|
{major}.{minor}
|
||||||
|
|
||||||
|
[bumpversion:file:kvmd/server.py]
|
||||||
|
search = __version__ = "{current_version}"
|
||||||
|
replace = __version__ = "{new_version}"
|
||||||
|
|
||||||
[bumpversion:file:setup.py]
|
[bumpversion:file:setup.py]
|
||||||
search = version="{current_version}"
|
search = version="{current_version}"
|
||||||
replace = version="{new_version}"
|
replace = version="{new_version}"
|
||||||
|
|||||||
@ -12,6 +12,10 @@ from .server import Server
|
|||||||
from . import gpio
|
from . import gpio
|
||||||
|
|
||||||
|
|
||||||
|
# =====
|
||||||
|
from .server import __version__ # noqa: F401
|
||||||
|
|
||||||
|
|
||||||
# =====
|
# =====
|
||||||
def main() -> None:
|
def main() -> None:
|
||||||
config = init()
|
config = init()
|
||||||
|
|||||||
@ -1,6 +1,8 @@
|
|||||||
import os
|
import os
|
||||||
import signal
|
import signal
|
||||||
import asyncio
|
import asyncio
|
||||||
|
import platform
|
||||||
|
import functools
|
||||||
import json
|
import json
|
||||||
import time
|
import time
|
||||||
|
|
||||||
@ -26,6 +28,21 @@ from .streamer import Streamer
|
|||||||
from .logging import get_logger
|
from .logging import get_logger
|
||||||
|
|
||||||
|
|
||||||
|
# =====
|
||||||
|
__version__ = "0.37"
|
||||||
|
|
||||||
|
|
||||||
|
@functools.lru_cache()
|
||||||
|
def _get_system_info() -> Dict[str, Dict[str, str]]:
|
||||||
|
return {
|
||||||
|
"version": {
|
||||||
|
"platform": platform.platform(),
|
||||||
|
"python": platform.python_version(),
|
||||||
|
"kvmd": __version__,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
# =====
|
# =====
|
||||||
def _system_task(method: Callable) -> Callable:
|
def _system_task(method: Callable) -> Callable:
|
||||||
async def wrap(self: "Server") -> None:
|
async def wrap(self: "Server") -> None:
|
||||||
@ -116,6 +133,8 @@ class Server: # pylint: disable=too-many-instance-attributes
|
|||||||
|
|
||||||
app = aiohttp.web.Application(loop=self.__loop)
|
app = aiohttp.web.Application(loop=self.__loop)
|
||||||
|
|
||||||
|
app.router.add_get("/info", self.__info_handler)
|
||||||
|
|
||||||
app.router.add_get("/ws", self.__ws_handler)
|
app.router.add_get("/ws", self.__ws_handler)
|
||||||
|
|
||||||
app.router.add_get("/hid", self.__hid_state_handler)
|
app.router.add_get("/hid", self.__hid_state_handler)
|
||||||
@ -142,6 +161,9 @@ class Server: # pylint: disable=too-many-instance-attributes
|
|||||||
|
|
||||||
aiohttp.web.run_app(app, host=host, port=port, print=self.__run_app_print)
|
aiohttp.web.run_app(app, host=host, port=port, print=self.__run_app_print)
|
||||||
|
|
||||||
|
async def __info_handler(self, _: aiohttp.web.Request) -> aiohttp.web.WebSocketResponse:
|
||||||
|
return _json(_get_system_info())
|
||||||
|
|
||||||
async def __ws_handler(self, request: aiohttp.web.Request) -> aiohttp.web.WebSocketResponse:
|
async def __ws_handler(self, request: aiohttp.web.Request) -> aiohttp.web.WebSocketResponse:
|
||||||
logger = get_logger(0)
|
logger = get_logger(0)
|
||||||
ws = aiohttp.web.WebSocketResponse(heartbeat=self.__heartbeat)
|
ws = aiohttp.web.WebSocketResponse(heartbeat=self.__heartbeat)
|
||||||
|
|||||||
@ -258,3 +258,27 @@ div#msd-progress span#msd-progress-value {
|
|||||||
display: inline-block;
|
display: inline-block;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ul#bottom {
|
||||||
|
list-style-type: none;
|
||||||
|
bottom: 0;
|
||||||
|
position: fixed;
|
||||||
|
width: 100%;
|
||||||
|
padding: 0;
|
||||||
|
font-size: 0.7em;
|
||||||
|
color: var(--fg-color-inactive);
|
||||||
|
z-index: -1;
|
||||||
|
}
|
||||||
|
ul#bottom li {
|
||||||
|
padding: 0 10px;
|
||||||
|
}
|
||||||
|
ul#bottom li.bottom-left {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
ul#bottom li.bottom-right {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
ul#bottom li a {
|
||||||
|
text-decoration: underline dotted;
|
||||||
|
color: var(--fg-color-inactive);
|
||||||
|
}
|
||||||
|
|||||||
@ -160,5 +160,10 @@
|
|||||||
<img src="/streamer/?action=stream" id="stream-image" class="stream-image-inactive" alt="Loading..." />
|
<img src="/streamer/?action=stream" id="stream-image" class="stream-image-inactive" alt="Loading..." />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<ul id="bottom">
|
||||||
|
<li id="kvmd-version" class="bottom-left"></li>
|
||||||
|
<li class="bottom-right"><a target="_blank" href="https://github.com/mdevaev/pi-kvm">Pi-KVM Project</a></li>
|
||||||
|
</ul>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
function main () {
|
function main () {
|
||||||
window.onclick = ui.windowClickHandler;
|
window.onclick = ui.windowClickHandler;
|
||||||
|
session.loadKvmdVersion();
|
||||||
session.startPoller();
|
session.startPoller();
|
||||||
stream.startPoller();
|
stream.startPoller();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,6 +3,18 @@ var session = new function() {
|
|||||||
var __ping_timer = null;
|
var __ping_timer = null;
|
||||||
var __missed_heartbeats = 0;
|
var __missed_heartbeats = 0;
|
||||||
|
|
||||||
|
this.loadKvmdVersion = function() {
|
||||||
|
var http = tools.makeRequest("GET", "/kvmd/info", function() {
|
||||||
|
if (http.readyState === 4) {
|
||||||
|
if (http.status === 200) {
|
||||||
|
$("kvmd-version").innerHTML = "kvmd " + JSON.parse(http.responseText).result.version.kvmd;
|
||||||
|
} else {
|
||||||
|
setTimeout(session.loadKvmdVersion, 1000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
this.startPoller = function() {
|
this.startPoller = function() {
|
||||||
__ws = new WebSocket("ws://" + location.host + "/kvmd/ws");
|
__ws = new WebSocket("ws://" + location.host + "/kvmd/ws");
|
||||||
__ws.onopen = __wsOpenHandler;
|
__ws.onopen = __wsOpenHandler;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user