2
0

entrypoint.sh.release 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. #!/bin/sh
  2. grepzt() {
  3. [ -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)" ]
  4. return $?
  5. }
  6. mkztfile() {
  7. file=$1
  8. mode=$2
  9. content=$3
  10. echo "creating $file"
  11. mkdir -p /var/lib/zerotier-one
  12. echo -n "$content" > "/var/lib/zerotier-one/$file"
  13. chmod "$mode" "/var/lib/zerotier-one/$file"
  14. }
  15. if [ "x$ZEROTIER_API_SECRET" != "x" ]
  16. then
  17. mkztfile authtoken.secret 0600 "$ZEROTIER_API_SECRET"
  18. mkztfile metricstoken.secret 0600 "$ZEROTIER_API_SECRET"
  19. fi
  20. if [ "x$ZEROTIER_IDENTITY_PUBLIC" != "x" ]
  21. then
  22. mkztfile identity.public 0644 "$ZEROTIER_IDENTITY_PUBLIC"
  23. fi
  24. if [ "x$ZEROTIER_IDENTITY_SECRET" != "x" ]
  25. then
  26. mkztfile identity.secret 0600 "$ZEROTIER_IDENTITY_SECRET"
  27. fi
  28. if [ "x$ZEROTIER_LOCAL_CONF" != "x" ]
  29. then
  30. mkztfile local.conf 0644 "$ZEROTIER_LOCAL_CONF"
  31. fi
  32. mkztfile zerotier-one.port 0600 "9993"
  33. killzerotier() {
  34. log "Killing zerotier"
  35. kill $(cat /var/lib/zerotier-one/zerotier-one.pid 2>/dev/null)
  36. exit 0
  37. }
  38. log_header() {
  39. echo -n "\r=>"
  40. }
  41. log_detail_header() {
  42. echo -n "\r===>"
  43. }
  44. log() {
  45. echo "$(log_header)" "$@"
  46. }
  47. log_params() {
  48. title=$1
  49. shift
  50. log "$title" "[$@]"
  51. }
  52. log_detail() {
  53. echo "$(log_detail_header)" "$@"
  54. }
  55. log_detail_params() {
  56. title=$1
  57. shift
  58. log_detail "$title" "[$@]"
  59. }
  60. trap killzerotier INT TERM
  61. log "Configuring networks to join"
  62. mkdir -p /var/lib/zerotier-one/networks.d
  63. log_params "Joining networks from command line:" $@
  64. for i in "$@"
  65. do
  66. log_detail_params "Configuring join:" "$i"
  67. touch "/var/lib/zerotier-one/networks.d/${i}.conf"
  68. done
  69. if [ "x$ZEROTIER_JOIN_NETWORKS" != "x" ]
  70. then
  71. log_params "Joining networks from environment:" $ZEROTIER_JOIN_NETWORKS
  72. for i in $ZEROTIER_JOIN_NETWORKS
  73. do
  74. log_detail_params "Configuring join:" "$i"
  75. touch "/var/lib/zerotier-one/networks.d/${i}.conf"
  76. done
  77. fi
  78. log "Starting ZeroTier"
  79. nohup /usr/sbin/zerotier-one &
  80. while ! grepzt
  81. do
  82. log_detail "ZeroTier hasn't started, waiting a second"
  83. if [ -f nohup.out ]
  84. then
  85. tail -n 10 nohup.out
  86. fi
  87. sleep 1
  88. done
  89. log_params "Writing healthcheck for networks:" $@
  90. cat >/healthcheck.sh <<EOF
  91. #!/bin/bash
  92. for i in $@ $ZEROTIER_JOIN_NETWORKS
  93. do
  94. [ "\$(zerotier-cli get \$i status)" = "OK" ] || exit 1
  95. done
  96. EOF
  97. chmod +x /healthcheck.sh
  98. log_params "zerotier-cli info:" "$(zerotier-cli info)"
  99. log "Sleeping infinitely"
  100. while true
  101. do
  102. sleep 1
  103. done