cns.init 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. #!/bin/sh
  2. ### BEGIN INIT INFO
  3. # Provides: cns
  4. # Required-Start: $all
  5. # Required-Stop: $all
  6. # Default-Start: 2 3 4 5
  7. # Default-Stop: 0 1 6
  8. # Short-Description: Start cns daemon at boot time
  9. # Description: Start cns daemon at boot time
  10. ### END INIT INFO
  11. START=99
  12. usage()
  13. {
  14. if type systemctl && [ -z "$(systemctl --failed|grep -q 'Host is down')" ]; then
  15. us="systemctl [start|stop|status|restart] cns.service"
  16. else
  17. if [ "$0" = '/etc/rc.common' ]; then
  18. us="/etc/init.d/cns [start|stop|status|restart]"\
  19. else
  20. us="$0 [start|stop|status|restart]"
  21. fi
  22. fi &>/dev/null
  23. echo "Usage:
  24. $us
  25. Config file is /opt/cns/cns.json"
  26. }
  27. status()
  28. {
  29. {
  30. grep -q cns /proc/`cat "/opt/cns/run.pid" 2>/dev/null`/comm 2>/dev/null && \
  31. echo "cns is running..." || \
  32. echo "cns is stopped..."
  33. } 2>/dev/null
  34. }
  35. start()
  36. {
  37. status | grep running && return 0
  38. echo -n "Starting cns:"
  39. for server_port in 8000 ; do
  40. iptables -I INPUT -p 6 --dport $server_port -m comment --comment "cns server port" -j ACCEPT
  41. ip6tables -I INPUT -p 6 --dport $server_port -m comment --comment "cns server port" -j ACCEPT
  42. done 2>/dev/null
  43. cd "/opt/cns"
  44. ./cns -json=cns.json -daemon >/dev/null
  45. sleep 1
  46. grep -q cns /proc/`cat /opt/cns/run.pid 2>/dev/null`/comm && \
  47. echo -e "\033[60G[\033[32m OK \033[0m]" || \
  48. echo -e "\033[60G[\033[31mFAILED\033[0m]"
  49. }
  50. stop()
  51. {
  52. for server_port in 8000 ; do
  53. while iptables -D INPUT -p 6 --dport $server_port -m comment --comment "cns server port" -j ACCEPT; do :;done
  54. while ip6tables -D INPUT -p 6 --dport $server_port -m comment --comment "cns server port" -j ACCEPT; do :;done
  55. done 2>/dev/null
  56. status | grep stopped && return 0
  57. echo -n "Stopping cns:"
  58. kill `cat /opt/cns/run.pid 2>/dev/null` 2>/dev/null
  59. sleep 1
  60. grep -q cns /proc/`cat /opt/cns/run.pid`/comm 2>/dev/null && \
  61. echo -e "\033[60G[\033[31mFAILED\033[0m]" || \
  62. echo -e "\033[60G[\033[32m OK \033[0m]"
  63. }
  64. restart()
  65. {
  66. stop
  67. start
  68. }
  69. systemdStart()
  70. {
  71. status | grep running && return 0
  72. cd "/opt/cns"
  73. for server_port in 8000 ; do
  74. iptables -I INPUT -p 6 --dport $server_port -m comment --comment "cns server port" -j ACCEPT
  75. ip6tables -I INPUT -p 6 --dport $server_port -m comment --comment "cns server port" -j ACCEPT
  76. done 2>/dev/null
  77. ./cns -json=cns.json >/dev/null
  78. }
  79. systemdRestart()
  80. {
  81. stop
  82. systemdStart
  83. }
  84. ${1:-usage} 2>/dev/null