#!/bin/sh grepzt() { [ -f "$ZEROTIER_HOME/$ZT_PID_FILE" -a -n "$(cat "$ZEROTIER_HOME/$ZT_PID_FILE" 2>/dev/null)" -a -d "/proc/$(cat "$ZEROTIER_HOME/$ZT_PID_FILE" 2>/dev/null)" ] return $? } mkztfile() { file=$1 mode=$2 content=$3 mkdir -p "$ZEROTIER_HOME" echo "$content" > "$ZEROTIER_HOME/$file" chmod "$mode" "$ZEROTIER_HOME/$file" } if [ "x$ZEROTIER_API_SECRET" != "x" ] then mkztfile authtoken.secret 0600 "$ZEROTIER_API_SECRET" fi if [ "x$ZEROTIER_IDENTITY_PUBLIC" != "x" ] then mkztfile identity.public 0644 "$ZEROTIER_IDENTITY_PUBLIC" fi if [ "x$ZEROTIER_IDENTITY_SECRET" != "x" ] then mkztfile identity.secret 0600 "$ZEROTIER_IDENTITY_SECRET" fi mkztfile "$ZT_PORT_FILE" 0600 "9993" killzerotier() { log "Killing zerotier" kill $(cat "$ZEROTIER_HOME/$ZT_PID_FILE" 2>/dev/null) exit 0 } log_header() { echo -n "\r=>" } log_detail_header() { echo -n "\r===>" } log() { echo "$(log_header)" "$@" } log_params() { title=$1 shift log "$title" "[$@]" } log_detail() { echo "$(log_detail_header)" "$@" } log_detail_params() { title=$1 shift log_detail "$title" "[$@]" } trap killzerotier INT TERM log "Configuring networks to join" mkdir -p "$ZEROTIER_HOME/networks.d" log_params "Joining networks from command line:" $@ for i in "$@" do log_detail_params "Configuring join:" "$i" touch "$ZEROTIER_HOME/networks.d/${i}.conf" done if [ "x$ZEROTIER_JOIN_NETWORKS" != "x" ] then log_params "Joining networks from environment:" $ZEROTIER_JOIN_NETWORKS for i in $ZEROTIER_JOIN_NETWORKS do log_detail_params "Configuring join:" "$i" touch "$ZEROTIER_HOME/networks.d/${i}.conf" done fi log "Starting ZeroTier" nohup "$ZT_DAEMON" & while ! grepzt do log_detail "ZeroTier hasn't started, waiting a second" if [ -f nohup.out ] then tail -n 10 nohup.out fi sleep 1 done log_params "Writing healthcheck for networks:" $@ cat >/healthcheck.sh <