123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- #!/bin/sh
- grepzt() {
- [ -f /var/lib/zerotier-one/zerotier-one.pid -a -n "$(cat /var/lib/zerotier-one/zerotier-one.pid 2>/dev/null)" -a -d "/proc/$(cat /var/lib/zerotier-one/zerotier-one.pid 2>/dev/null)" ]
- return $?
- }
- mkztfile() {
- file=$1
- mode=$2
- content=$3
- mkdir -p /var/lib/zerotier-one
- echo "$content" > "/var/lib/zerotier-one/$file"
- chmod "$mode" "/var/lib/zerotier-one/$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 zerotier-one.port 0600 "9993"
- killzerotier() {
- log "Killing zerotier"
- kill $(cat /var/lib/zerotier-one/zerotier-one.pid 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 /var/lib/zerotier-one/networks.d
- log_params "Joining networks from command line:" $@
- for i in "$@"
- do
- log_detail_params "Configuring join:" "$i"
- touch "/var/lib/zerotier-one/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 "/var/lib/zerotier-one/networks.d/${i}.conf"
- done
- fi
- log "Starting ZeroTier"
- nohup /usr/sbin/zerotier-one &
- 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 <<EOF
- #!/bin/bash
- for i in $@ $ZEROTIER_JOIN_NETWORKS
- do
- [ "\$(zerotier-cli get \$i status)" = "OK" ] || exit 1
- done
- EOF
- chmod +x /healthcheck.sh
- log_params "zerotier-cli info:" "$(zerotier-cli info)"
- log "Sleeping infinitely"
- while true
- do
- sleep 1
- done
|