tor-hs: add validation
authorSergey Ponomarev <redacted>
Tue, 6 Feb 2024 22:15:52 +0000 (00:15 +0200)
committerJosef Schlehofer <redacted>
Tue, 20 May 2025 11:20:46 +0000 (13:20 +0200)
Signed-off-by: Sergey Ponomarev <redacted>
net/tor-hs/files/tor-hs.init

index 2c4bb5e57953a9930957193e78fc0d69709cf3ed..eb909480fd62d2684fda4e29551e024fd5238594 100755 (executable)
@@ -92,14 +92,36 @@ parse_common_conf() {
 
 start_service() {
        config_load tor-hs
+       validate_common_section || {
+               echo "validation failed"
+               return 1
+       }
        # clean config
        echo -n "" > "$TORRC_FILE"
        # load common config
        parse_common_conf
        # load hs service
-       config_foreach parse_hs_conf hidden-service
+       config_foreach validate_hidden_service_section hidden-service parse_hs_conf
        # update tor config
        config_tor
        # load and run tor-hs hooks
        config_foreach parse_hs_conf_hooks hidden-service
 }
+
+validate_common_section() {
+       uci_validate_section tor-hs tor-hs common \
+               'GenConf:string:/etc/tor/torrc_generated' \
+               'HSDir:string:/etc/tor/hidden_service' \
+               'RestartTor:bool:1' \
+               'UpdateTorConf:bool:1'
+}
+
+validate_hidden_service_section() {
+       uci_load_validate tor-hs hidden-service "$1" "$2" \
+               'Name:string(1)' \
+               'Description:string' \
+               'Enabled:bool:0' \
+               'IPv4:host:127.0.0.1' \
+               'PublicLocalPort:list(string)' \
+               'HookScript:string'
+}
git clone https://git.99rst.org/PROJECT