mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2026-02-02 11:01:53 +08:00
moved kvmd to the root
This commit is contained in:
0
kvmd/extras/__init__.py
Normal file
0
kvmd/extras/__init__.py
Normal file
37
kvmd/extras/cleanup/__init__.py
Normal file
37
kvmd/extras/cleanup/__init__.py
Normal file
@@ -0,0 +1,37 @@
|
||||
import os
|
||||
import subprocess
|
||||
import time
|
||||
|
||||
from ...application import init
|
||||
from ...logging import get_logger
|
||||
|
||||
from ... import gpio
|
||||
|
||||
|
||||
# =====
|
||||
def main() -> None:
|
||||
config = init()
|
||||
logger = get_logger(0)
|
||||
|
||||
logger.info("Cleaning up ...")
|
||||
with gpio.bcm():
|
||||
for (name, pin) in [
|
||||
("atx_power_switch", config["atx"]["pinout"]["power_switch"]),
|
||||
("atx_reset_switch", config["atx"]["pinout"]["reset_switch"]),
|
||||
("streamer_cap", config["streamer"]["pinout"]["cap"]),
|
||||
("streamer_conv", config["streamer"]["pinout"]["conv"]),
|
||||
]:
|
||||
if pin > 0:
|
||||
logger.info("Writing value=0 to pin=%d (%s)", pin, name)
|
||||
gpio.set_output(pin, initial=False)
|
||||
|
||||
streamer = os.path.basename(config["streamer"]["cmd"][0])
|
||||
logger.info("Trying to find and kill %r ...", streamer)
|
||||
try:
|
||||
subprocess.check_output(["killall", streamer], stderr=subprocess.STDOUT)
|
||||
time.sleep(3)
|
||||
subprocess.check_output(["killall", "-9", streamer], stderr=subprocess.STDOUT)
|
||||
except subprocess.CalledProcessError:
|
||||
pass
|
||||
|
||||
logger.info("Bye-bye")
|
||||
2
kvmd/extras/cleanup/__main__.py
Normal file
2
kvmd/extras/cleanup/__main__.py
Normal file
@@ -0,0 +1,2 @@
|
||||
from . import main
|
||||
main()
|
||||
50
kvmd/extras/wscli/__init__.py
Normal file
50
kvmd/extras/wscli/__init__.py
Normal file
@@ -0,0 +1,50 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
|
||||
import sys
|
||||
import signal
|
||||
import asyncio
|
||||
import argparse
|
||||
import time
|
||||
|
||||
import aiohttp
|
||||
|
||||
|
||||
# =====
|
||||
async def _run_client(loop: asyncio.AbstractEventLoop, url: str) -> None:
|
||||
def stdin_callback() -> None:
|
||||
line = sys.stdin.buffer.readline().decode()
|
||||
if line:
|
||||
asyncio.ensure_future(ws.send_str(line), loop=loop)
|
||||
else:
|
||||
loop.stop()
|
||||
|
||||
loop.add_reader(sys.stdin.fileno(), stdin_callback)
|
||||
|
||||
async def dispatch() -> None:
|
||||
while True:
|
||||
msg = await ws.receive()
|
||||
if msg.type == aiohttp.WSMsgType.TEXT:
|
||||
print("[%.5f] Received: %s" % (time.time(), msg.data.strip()))
|
||||
else:
|
||||
if msg.type == aiohttp.WSMsgType.CLOSE:
|
||||
await ws.close()
|
||||
elif msg.type == aiohttp.WSMsgType.ERROR:
|
||||
print("[%.5f] Error during receive: %s" % (time.time(), ws.exception()))
|
||||
elif msg.type == aiohttp.WSMsgType.CLOSED:
|
||||
pass
|
||||
break
|
||||
|
||||
async with aiohttp.ClientSession().ws_connect(url) as ws:
|
||||
await dispatch()
|
||||
|
||||
|
||||
def main() -> None:
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("-u", "--url", default="http://localhost:8081/ws")
|
||||
options = parser.parse_args()
|
||||
|
||||
loop = asyncio.get_event_loop()
|
||||
loop.add_signal_handler(signal.SIGINT, loop.stop)
|
||||
loop.create_task(_run_client(loop, options.url))
|
||||
loop.run_forever()
|
||||
2
kvmd/extras/wscli/__main__.py
Normal file
2
kvmd/extras/wscli/__main__.py
Normal file
@@ -0,0 +1,2 @@
|
||||
from . import main
|
||||
main()
|
||||
Reference in New Issue
Block a user