platform info

This commit is contained in:
Devaev Maxim 2018-07-23 03:22:08 +03:00
parent 434d16d523
commit c07f811c87
7 changed files with 72 additions and 0 deletions

View File

@ -6,6 +6,10 @@ parse = (?P<major>\d+)\.(?P<minor>\d+)(\.(?P<patch>\d+)(\-(?P<release>[a-z]+))?)
serialize =
{major}.{minor}
[bumpversion:file:kvmd/server.py]
search = __version__ = "{current_version}"
replace = __version__ = "{new_version}"
[bumpversion:file:setup.py]
search = version="{current_version}"
replace = version="{new_version}"

View File

@ -12,6 +12,10 @@ from .server import Server
from . import gpio
# =====
from .server import __version__ # noqa: F401
# =====
def main() -> None:
config = init()

View File

@ -1,6 +1,8 @@
import os
import signal
import asyncio
import platform
import functools
import json
import time
@ -26,6 +28,21 @@ from .streamer import Streamer
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:
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.router.add_get("/info", self.__info_handler)
app.router.add_get("/ws", self.__ws_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)
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:
logger = get_logger(0)
ws = aiohttp.web.WebSocketResponse(heartbeat=self.__heartbeat)

View File

@ -258,3 +258,27 @@ div#msd-progress span#msd-progress-value {
display: inline-block;
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);
}

View File

@ -160,5 +160,10 @@
<img src="/streamer/?action=stream" id="stream-image" class="stream-image-inactive" alt="Loading..." />
</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>
</html>

View File

@ -1,5 +1,6 @@
function main () {
window.onclick = ui.windowClickHandler;
session.loadKvmdVersion();
session.startPoller();
stream.startPoller();
}

View File

@ -3,6 +3,18 @@ var session = new function() {
var __ping_timer = null;
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() {
__ws = new WebSocket("ws://" + location.host + "/kvmd/ws");
__ws.onopen = __wsOpenHandler;