--- /dev/null
+#!/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
+
+
+