mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2026-01-31 18:11:54 +08:00
sync atx api
This commit is contained in:
@@ -25,6 +25,8 @@ from aiohttp.web import Response
|
|||||||
|
|
||||||
from ....plugins.atx import BaseAtx
|
from ....plugins.atx import BaseAtx
|
||||||
|
|
||||||
|
from ....validators.basic import valid_bool
|
||||||
|
|
||||||
from ....validators.kvm import valid_atx_power_action
|
from ....validators.kvm import valid_atx_power_action
|
||||||
from ....validators.kvm import valid_atx_button
|
from ....validators.kvm import valid_atx_button
|
||||||
|
|
||||||
@@ -46,20 +48,22 @@ class AtxApi:
|
|||||||
@exposed_http("POST", "/atx/power")
|
@exposed_http("POST", "/atx/power")
|
||||||
async def __power_handler(self, request: Request) -> Response:
|
async def __power_handler(self, request: Request) -> Response:
|
||||||
action = valid_atx_power_action(request.query.get("action"))
|
action = valid_atx_power_action(request.query.get("action"))
|
||||||
|
wait = valid_bool(request.query.get("wait", "0"))
|
||||||
processing = await ({
|
processing = await ({
|
||||||
"on": self.__atx.power_on,
|
"on": self.__atx.power_on,
|
||||||
"off": self.__atx.power_off,
|
"off": self.__atx.power_off,
|
||||||
"off_hard": self.__atx.power_off_hard,
|
"off_hard": self.__atx.power_off_hard,
|
||||||
"reset_hard": self.__atx.power_reset_hard,
|
"reset_hard": self.__atx.power_reset_hard,
|
||||||
}[action])()
|
}[action])(wait)
|
||||||
return make_json_response({"processing": processing})
|
return make_json_response({"processing": processing})
|
||||||
|
|
||||||
@exposed_http("POST", "/atx/click")
|
@exposed_http("POST", "/atx/click")
|
||||||
async def __click_handler(self, request: Request) -> Response:
|
async def __click_handler(self, request: Request) -> Response:
|
||||||
button = valid_atx_button(request.query.get("button"))
|
button = valid_atx_button(request.query.get("button"))
|
||||||
|
wait = valid_bool(request.query.get("wait", "0"))
|
||||||
await ({
|
await ({
|
||||||
"power": self.__atx.click_power,
|
"power": self.__atx.click_power,
|
||||||
"power_long": self.__atx.click_power_long,
|
"power_long": self.__atx.click_power_long,
|
||||||
"reset": self.__atx.click_reset,
|
"reset": self.__atx.click_reset,
|
||||||
}[button])()
|
}[button])(wait)
|
||||||
return make_json_response()
|
return make_json_response()
|
||||||
|
|||||||
@@ -59,27 +59,27 @@ class BaseAtx(BasePlugin):
|
|||||||
|
|
||||||
# =====
|
# =====
|
||||||
|
|
||||||
async def power_on(self) -> bool:
|
async def power_on(self, wait: bool) -> bool:
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
async def power_off(self) -> bool:
|
async def power_off(self, wait: bool) -> bool:
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
async def power_off_hard(self) -> bool:
|
async def power_off_hard(self, wait: bool) -> bool:
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
async def power_reset_hard(self) -> bool:
|
async def power_reset_hard(self, wait: bool) -> bool:
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
# =====
|
# =====
|
||||||
|
|
||||||
async def click_power(self) -> None:
|
async def click_power(self, wait: bool) -> None:
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
async def click_power_long(self) -> None:
|
async def click_power_long(self, wait: bool) -> None:
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
async def click_reset(self) -> None:
|
async def click_reset(self, wait: bool) -> None:
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -54,25 +54,12 @@ class Plugin(BaseAtx):
|
|||||||
|
|
||||||
# =====
|
# =====
|
||||||
|
|
||||||
async def power_on(self) -> bool:
|
async def __stub_power(self, wait: bool) -> bool:
|
||||||
raise AtxDisabledError()
|
raise AtxDisabledError()
|
||||||
|
|
||||||
async def power_off(self) -> bool:
|
power_on = power_off = power_off_hard = power_reset_hard = __stub_power
|
||||||
|
|
||||||
|
async def __stub_click(self, wait: bool) -> None:
|
||||||
raise AtxDisabledError()
|
raise AtxDisabledError()
|
||||||
|
|
||||||
async def power_off_hard(self) -> bool:
|
click_power = click_power_long = click_reset = __stub_click
|
||||||
raise AtxDisabledError()
|
|
||||||
|
|
||||||
async def power_reset_hard(self) -> bool:
|
|
||||||
raise AtxDisabledError()
|
|
||||||
|
|
||||||
# =====
|
|
||||||
|
|
||||||
async def click_power(self) -> None:
|
|
||||||
raise AtxDisabledError()
|
|
||||||
|
|
||||||
async def click_power_long(self) -> None:
|
|
||||||
raise AtxDisabledError()
|
|
||||||
|
|
||||||
async def click_reset(self) -> None:
|
|
||||||
raise AtxDisabledError()
|
|
||||||
|
|||||||
@@ -130,40 +130,40 @@ class Plugin(BaseAtx): # pylint: disable=too-many-instance-attributes
|
|||||||
|
|
||||||
# =====
|
# =====
|
||||||
|
|
||||||
async def power_on(self) -> bool:
|
async def power_on(self, wait: bool) -> bool:
|
||||||
if not (await self.__get_power()):
|
if not (await self.__get_power()):
|
||||||
await self.click_power()
|
await self.click_power(wait)
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
async def power_off(self) -> bool:
|
async def power_off(self, wait: bool) -> bool:
|
||||||
if (await self.__get_power()):
|
if (await self.__get_power()):
|
||||||
await self.click_power()
|
await self.click_power(wait)
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
async def power_off_hard(self) -> bool:
|
async def power_off_hard(self, wait: bool) -> bool:
|
||||||
if (await self.__get_power()):
|
if (await self.__get_power()):
|
||||||
await self.click_power_long()
|
await self.click_power_long(wait)
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
async def power_reset_hard(self) -> bool:
|
async def power_reset_hard(self, wait: bool) -> bool:
|
||||||
if (await self.__get_power()):
|
if (await self.__get_power()):
|
||||||
await self.click_reset()
|
await self.click_reset(wait)
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
# =====
|
# =====
|
||||||
|
|
||||||
async def click_power(self) -> None:
|
async def click_power(self, wait: bool) -> None:
|
||||||
await self.__click("power", self.__power_switch_pin, self.__click_delay)
|
await self.__click("power", self.__power_switch_pin, self.__click_delay, wait)
|
||||||
|
|
||||||
async def click_power_long(self) -> None:
|
async def click_power_long(self, wait: bool) -> None:
|
||||||
await self.__click("power_long", self.__power_switch_pin, self.__long_click_delay)
|
await self.__click("power_long", self.__power_switch_pin, self.__long_click_delay, wait)
|
||||||
|
|
||||||
async def click_reset(self) -> None:
|
async def click_reset(self, wait: bool) -> None:
|
||||||
await self.__click("reset", self.__reset_switch_pin, self.__click_delay)
|
await self.__click("reset", self.__reset_switch_pin, self.__click_delay, wait)
|
||||||
|
|
||||||
# =====
|
# =====
|
||||||
|
|
||||||
@@ -171,11 +171,15 @@ class Plugin(BaseAtx): # pylint: disable=too-many-instance-attributes
|
|||||||
return (await self.get_state())["leds"]["power"]
|
return (await self.get_state())["leds"]["power"]
|
||||||
|
|
||||||
@aiotools.atomic
|
@aiotools.atomic
|
||||||
async def __click(self, name: str, pin: int, delay: float) -> None:
|
async def __click(self, name: str, pin: int, delay: float, wait: bool) -> None:
|
||||||
await aiotools.run_region_task(
|
if wait:
|
||||||
"Can't perform ATX click or operation was not completed",
|
async with self.__region:
|
||||||
self.__region, self.__inner_click, name, pin, delay,
|
await self.__inner_click(name, pin, delay)
|
||||||
)
|
else:
|
||||||
|
await aiotools.run_region_task(
|
||||||
|
"Can't perform ATX click or operation was not completed",
|
||||||
|
self.__region, self.__inner_click, name, pin, delay,
|
||||||
|
)
|
||||||
|
|
||||||
@aiotools.atomic
|
@aiotools.atomic
|
||||||
async def __inner_click(self, name: str, pin: int, delay: float) -> None:
|
async def __inner_click(self, name: str, pin: int, delay: float) -> None:
|
||||||
|
|||||||
Reference in New Issue
Block a user