tor-hs: add new package
[feed/packages.git] / net / tor-hs / files / tor_rpcd.sh
diff --git a/net/tor-hs/files/tor_rpcd.sh b/net/tor-hs/files/tor_rpcd.sh
new file mode 100755 (executable)
index 0000000..bfcd788
--- /dev/null
@@ -0,0 +1,69 @@
+#!/bin/sh
+
+. /lib/functions.sh
+
+get_onion_hostname() {
+       local name="$1"
+       config_get hs_dir common HSDir
+       if [ -f "$hs_dir/$name/hostname" ]; then
+              cat "$hs_dir/$name/hostname"
+       fi
+}
+
+get_port_list() {
+       local config="$1"
+       config_get ports "$config" PublicLocalPort
+       tmp="$(echo $ports |sed "s| |','|g")"
+       echo -ne "['$tmp']"
+}
+
+parse_hs_conf() {
+       local name description public_port local_port enable_bool public_local_port ipv4
+       local config="$1"
+       local custom="$2"
+
+       config_get name "$config" Name
+       config_get description "$config" Description
+
+       config_get_bool enable_hs "$config" Enabled 0
+       config_get ipv4 "$config" IPv4
+
+       hostname="$(get_onion_hostname $name)"
+       port_list="$(get_port_list $config)"
+       echo "{"
+       echo \"name\":\"$name\",
+       echo \"description\":\"$description\",
+       echo \"enabled\":\"$enable_hs\",
+       echo \"ipv4\":\"$ipv4\",
+       echo \"hostname\":\"$hostname\",
+       echo \"ports\":$port_list
+       echo "},"
+}
+
+get_tor_hs_list() {
+       config_load tor-hs
+       echo "{"
+       echo '"hs-list":['
+       config_foreach parse_hs_conf hidden-service
+       echo "]"
+       echo "}"
+}
+
+
+
+case "$1" in
+       list)
+               echo '{ "list-hs": { } }'
+       ;;
+       call)
+               case "$2" in
+                       list-hs)
+                               # return json object
+                               get_tor_hs_list
+                       ;;
+               esac
+       ;;
+esac
+
+
+