mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2026-01-29 00:51:53 +08:00
more validation
This commit is contained in:
@@ -81,7 +81,9 @@ from ..validators.kvm import valid_stream_fps
|
|||||||
from ..validators.kvm import valid_stream_resolution
|
from ..validators.kvm import valid_stream_resolution
|
||||||
from ..validators.kvm import valid_hid_key
|
from ..validators.kvm import valid_hid_key
|
||||||
from ..validators.kvm import valid_hid_mouse_move
|
from ..validators.kvm import valid_hid_mouse_move
|
||||||
|
from ..validators.kvm import valid_ugpio_driver
|
||||||
from ..validators.kvm import valid_ugpio_mode
|
from ..validators.kvm import valid_ugpio_mode
|
||||||
|
from ..validators.kvm import valid_ugpio_channel
|
||||||
from ..validators.kvm import valid_ugpio_view_table
|
from ..validators.kvm import valid_ugpio_view_table
|
||||||
|
|
||||||
from ..validators.hw import valid_gpio_pin
|
from ..validators.hw import valid_gpio_pin
|
||||||
@@ -181,6 +183,7 @@ def _patch_dynamic( # pylint: disable=too-many-locals
|
|||||||
"gpio": {},
|
"gpio": {},
|
||||||
**tools.rget(raw_config, "kvmd", "gpio", "drivers"),
|
**tools.rget(raw_config, "kvmd", "gpio", "drivers"),
|
||||||
}.items():
|
}.items():
|
||||||
|
driver = valid_ugpio_driver(driver)
|
||||||
driver_type = valid_stripped_string_not_empty(params.get("type", "gpio"))
|
driver_type = valid_stripped_string_not_empty(params.get("type", "gpio"))
|
||||||
scheme["kvmd"]["gpio"]["drivers"][driver] = {
|
scheme["kvmd"]["gpio"]["drivers"][driver] = {
|
||||||
"type": Option(driver_type, type=valid_stripped_string_not_empty),
|
"type": Option(driver_type, type=valid_stripped_string_not_empty),
|
||||||
@@ -188,29 +191,25 @@ def _patch_dynamic( # pylint: disable=too-many-locals
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (channel, params) in tools.rget(raw_config, "kvmd", "gpio", "scheme").items():
|
for (channel, params) in tools.rget(raw_config, "kvmd", "gpio", "scheme").items():
|
||||||
try:
|
channel = valid_ugpio_channel(channel)
|
||||||
mode = valid_ugpio_mode(params.get("mode", ""))
|
mode = valid_ugpio_mode(params.get("mode", ""))
|
||||||
except Exception:
|
scheme["kvmd"]["gpio"]["scheme"][channel] = {
|
||||||
pass
|
|
||||||
finally:
|
|
||||||
ch_scheme: Dict = {
|
|
||||||
"driver": Option("gpio"),
|
"driver": Option("gpio"),
|
||||||
"pin": Option(-1, type=valid_gpio_pin),
|
"pin": Option(-1, type=valid_gpio_pin),
|
||||||
"mode": Option("", type=valid_ugpio_mode),
|
"mode": Option("", type=valid_ugpio_mode),
|
||||||
"inverted": Option(False, type=valid_bool),
|
"inverted": Option(False, type=valid_bool),
|
||||||
}
|
**({
|
||||||
if mode == "output":
|
|
||||||
ch_scheme.update({
|
|
||||||
"busy_delay": Option(0.2, type=valid_float_f01),
|
"busy_delay": Option(0.2, type=valid_float_f01),
|
||||||
"initial": Option(False, type=(lambda arg: (None if arg is None else valid_bool(arg)))),
|
"initial": Option(False, type=(lambda arg: (None if arg is None else valid_bool(arg)))),
|
||||||
"switch": Option(True, type=valid_bool),
|
"switch": Option(True, type=valid_bool),
|
||||||
"pulse": {
|
"pulse": { # type: ignore
|
||||||
"delay": Option(0.1, type=valid_float_f0),
|
"delay": Option(0.1, type=valid_float_f0),
|
||||||
"min_delay": Option(0.1, type=valid_float_f01),
|
"min_delay": Option(0.1, type=valid_float_f01),
|
||||||
"max_delay": Option(0.1, type=valid_float_f01),
|
"max_delay": Option(0.1, type=valid_float_f01),
|
||||||
},
|
},
|
||||||
})
|
} if mode == "output" else {})
|
||||||
scheme["kvmd"]["gpio"]["scheme"][channel] = ch_scheme
|
}
|
||||||
|
|
||||||
rebuild = True
|
rebuild = True
|
||||||
|
|
||||||
return rebuild
|
return rebuild
|
||||||
|
|||||||
@@ -91,6 +91,10 @@ def valid_hid_mouse_wheel(arg: Any) -> int:
|
|||||||
|
|
||||||
|
|
||||||
# =====
|
# =====
|
||||||
|
def valid_ugpio_driver(arg: Any) -> str:
|
||||||
|
return check_re_match(arg, "GPIO driver", r"^[a-zA-Z_][a-zA-Z0-9_-]*$")[:255]
|
||||||
|
|
||||||
|
|
||||||
def valid_ugpio_mode(arg: Any) -> str:
|
def valid_ugpio_mode(arg: Any) -> str:
|
||||||
return check_string_in_list(arg, "GPIO mode", ["input", "output"])
|
return check_string_in_list(arg, "GPIO mode", ["input", "output"])
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user