ogp_agent.init.dbn 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. #!/bin/bash
  2. #
  3. ### BEGIN INIT INFO
  4. # Provides: ogp_agent
  5. # Required-Start: $all
  6. # Required-Stop: $all
  7. # Should-Start: $all
  8. # Should-Stop: $all
  9. # Default-Start: 2 3 4 5
  10. # Default-Stop: 0 1 6
  11. # Short-Description: Start and stop the OGP Agent
  12. # Description: Start and stop the OGP Agent
  13. ### END INIT INFO
  14. #
  15. agent_dir=OGP_AGENT_DIR
  16. agent_user=OGP_USER
  17. #
  18. # main()
  19. #
  20. if [ "X`whoami`" != "Xroot" ]
  21. then
  22. exit 1
  23. fi
  24. start() {
  25. if [ -e "$agent_dir/ogp_agent_run.pid" ]
  26. then
  27. pid=$(cat $agent_dir/ogp_agent_run.pid)
  28. out=$(kill -0 $pid > /dev/null 2>&1)
  29. if [ $? == 0 ]
  30. then
  31. return 1
  32. fi
  33. fi
  34. # Lets the agent user to use sudo to enable FTP accounts and use renice and taskset.
  35. if [ "$( groups $agent_user | grep "\bsudo\b" )" == "" ]
  36. then
  37. if [ "$( egrep -i "^sudo" /etc/group )" == "" ]
  38. then
  39. groupadd sudo >/dev/null 2>&1
  40. fi
  41. usermod -aG sudo $agent_user >/dev/null 2>&1
  42. fi
  43. user_id=$(id -u $agent_user)
  44. group_id=$(id -g $agent_user)
  45. out=$(chown -Rf $user_id:$group_id $agent_dir >/dev/null 2>&1)
  46. # Lets the agent user to attach screens.
  47. if [ "$(groups $agent_user|grep -o "\stty\s")" == "" ]
  48. then
  49. usermod -aG tty $agent_user >/dev/null 2>&1
  50. fi
  51. out=$(chmod g+rw /dev/pts/* >/dev/null 2>&1)
  52. out=$(chmod g+rw /dev/tty* >/dev/null 2>&1)
  53. # Check the FTP status
  54. if [ -f "/etc/init.d/pure-ftpd" ] && [ -d "/etc/pure-ftpd/conf" ]
  55. then
  56. echo no > /etc/pure-ftpd/conf/PAMAuthentication
  57. echo no > /etc/pure-ftpd/conf/UnixAuthentication
  58. echo yes > /etc/pure-ftpd/conf/CreateHomeDir
  59. if [ ! -f /etc/pure-ftpd/pureftpd.passwd ]
  60. then
  61. touch /etc/pure-ftpd/pureftpd.passwd
  62. fi
  63. if [ ! -f /etc/pureftpd.passwd ]
  64. then
  65. ln -s /etc/pure-ftpd/pureftpd.passwd /etc/pureftpd.passwd
  66. fi
  67. if [ ! -f /etc/pure-ftpd/auth/50pure ]
  68. then
  69. ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/50pure
  70. fi
  71. if [ ! -f /etc/pureftpd.pdb ]
  72. then
  73. ln -s /etc/pure-ftpd/pureftpd.pdb /etc/pureftpd.pdb
  74. fi
  75. out=$(pure-pw mkdb >/dev/null 2>&1)
  76. out=$(service pure-ftpd force-reload >/dev/null 2>&1)
  77. fi
  78. cd $agent_dir
  79. out=$(su -c "screen -d -m -t ogp_agent -c ogp_screenrc -S ogp_agent ./ogp_agent_run -pidfile ogp_agent_run.pid" $agent_user >/dev/null 2>&1)
  80. return 0
  81. }
  82. stop() {
  83. if [ -e "$agent_dir/ogp_agent_run.pid" ]
  84. then
  85. pid=$(cat $agent_dir/ogp_agent_run.pid)
  86. kill -0 $pid > /dev/null 2>&1
  87. if [ $? == 0 ]
  88. then
  89. kill $pid >/dev/null 2>&1
  90. return $?
  91. fi
  92. else
  93. return 1
  94. fi
  95. return 0
  96. }
  97. case "${1:-''}" in
  98. 'start')
  99. start
  100. RETVAL=$?
  101. ;;
  102. 'stop')
  103. stop
  104. RETVAL=$?
  105. ;;
  106. 'restart')
  107. stop
  108. sleep 1
  109. start
  110. RETVAL=$?
  111. ;;
  112. *)
  113. echo "Usage: service ogp_agent start|stop|restart"
  114. exit 1
  115. ;;
  116. esac
  117. if [ ! -z "$RETVAL" ]; then
  118. exit $RETVAL
  119. else
  120. exit 1
  121. fi