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