#!/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