zerotier.init (1408B)
1 #!/bin/sh /etc/rc.common 2 3 START=90 4 5 USE_PROCD=1 6 7 LIST_SEP=" 8 " 9 ZT_COMMAND=/usr/bin/zerotier-one 10 11 section_enabled() { 12 config_get_bool enabled "$1" 'enabled' 0 13 [ $enabled -gt 0 ] 14 } 15 16 start_instance() { 17 local cfg="$1" 18 local port secret interface 19 local ARGS="" 20 21 section_enabled "$cfg" || return 1 22 23 mkdir -p /var/lib/zerotier-one/networks.d/ 24 25 config_get_bool port $cfg 'port' 26 config_get secret $cfg 'secret' 27 config_get interface $cfg 'interface' 28 29 if [ -n "$port" ]; then 30 ARGS="$ARGS -p$port" 31 fi 32 33 if [ "$secret" = "generate" ]; then 34 echo "Generate secret - please wait..." 35 local tmp="/tmp/zt.$cfg.secret" 36 zerotier-idtool generate "$tmp" > /dev/null 37 secret="$(cat $tmp)" 38 rm "$tmp" 39 40 uci set zerotier.$cfg.secret="$secret" 41 uci commit zerotier 42 fi 43 44 if [ -n "$secret" ]; then 45 echo "$secret" > /var/lib/zerotier-one/identity.secret 46 #make sure there is not previous dentity.public 47 rm -f /var/lib/zerotier-one/identity.public 48 fi 49 50 add_join() { 51 #an (empty) config file will cause ZT to join a network 52 touch /var/lib/zerotier-one/networks.d/$1.conf 53 } 54 55 config_list_foreach $cfg 'join' add_join 56 57 procd_open_instance 58 procd_add_reload_interface_trigger "$interface" 59 procd_set_param command $ZT_COMMAND $ARGS 60 procd_close_instance 61 } 62 63 service_triggers() { 64 procd_add_reload_trigger zerotier 65 } 66 67 start_service() { 68 config_load 'zerotier' 69 config_foreach start_instance 'zerotier' 70 }