138 lines
2.7 KiB
Bash
138 lines
2.7 KiB
Bash
#!/bin/bash
|
|
#
|
|
### BEGIN INIT INFO
|
|
# Provides: ogp_agent
|
|
# Required-Start: $all
|
|
# Required-Stop: $all
|
|
# Should-Start: $all
|
|
# Should-Stop: $all
|
|
# Default-Start: 2 3 4 5
|
|
# Default-Stop: 0 1 6
|
|
# Short-Description: Start and stop the OGP Agent
|
|
# Description: Start and stop the OGP Agent
|
|
### END INIT INFO
|
|
#
|
|
|
|
agent_dir=OGP_AGENT_DIR
|
|
agent_user=OGP_USER
|
|
|
|
#
|
|
# main()
|
|
#
|
|
|
|
if [ "X`whoami`" != "Xroot" ]
|
|
then
|
|
exit 1
|
|
fi
|
|
|
|
start() {
|
|
if [ -e "$agent_dir/ogp_agent_run.pid" ]
|
|
then
|
|
pid=$(cat $agent_dir/ogp_agent_run.pid)
|
|
out=$(kill -0 $pid > /dev/null 2>&1)
|
|
if [ $? == 0 ]
|
|
then
|
|
return 1
|
|
fi
|
|
fi
|
|
|
|
# Lets the agent user to use sudo to enable FTP accounts and use renice and taskset.
|
|
if [ "$( groups $agent_user | grep "\bsudo\b" )" == "" ]
|
|
then
|
|
if [ "$( egrep -i "^sudo" /etc/group )" == "" ]
|
|
then
|
|
groupadd sudo >/dev/null 2>&1
|
|
fi
|
|
usermod -aG sudo $agent_user >/dev/null 2>&1
|
|
fi
|
|
|
|
user_id=$(id -u $agent_user)
|
|
group_id=$(id -g $agent_user)
|
|
out=$(chown -Rf $user_id:$group_id $agent_dir >/dev/null 2>&1)
|
|
|
|
# Lets the agent user to attach screens.
|
|
if [ "$(groups $agent_user|grep -o "\stty\s")" == "" ]
|
|
then
|
|
usermod -aG tty $agent_user >/dev/null 2>&1
|
|
fi
|
|
|
|
out=$(chmod g+rw /dev/pts/* >/dev/null 2>&1)
|
|
out=$(chmod g+rw /dev/tty* >/dev/null 2>&1)
|
|
|
|
# Check the FTP status
|
|
if [ -f "/etc/init.d/pure-ftpd" ] && [ -d "/etc/pure-ftpd/conf" ]
|
|
then
|
|
echo no > /etc/pure-ftpd/conf/PAMAuthentication
|
|
echo no > /etc/pure-ftpd/conf/UnixAuthentication
|
|
echo yes > /etc/pure-ftpd/conf/CreateHomeDir
|
|
|
|
if [ ! -f /etc/pure-ftpd/pureftpd.passwd ]
|
|
then
|
|
touch /etc/pure-ftpd/pureftpd.passwd
|
|
fi
|
|
|
|
if [ ! -f /etc/pureftpd.passwd ]
|
|
then
|
|
ln -s /etc/pure-ftpd/pureftpd.passwd /etc/pureftpd.passwd
|
|
fi
|
|
|
|
if [ ! -f /etc/pure-ftpd/auth/50pure ]
|
|
then
|
|
ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/50pure
|
|
fi
|
|
|
|
if [ ! -f /etc/pureftpd.pdb ]
|
|
then
|
|
ln -s /etc/pure-ftpd/pureftpd.pdb /etc/pureftpd.pdb
|
|
fi
|
|
out=$(pure-pw mkdb >/dev/null 2>&1)
|
|
out=$(service pure-ftpd force-reload >/dev/null 2>&1)
|
|
fi
|
|
|
|
cd $agent_dir
|
|
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)
|
|
return 0
|
|
}
|
|
|
|
stop() {
|
|
if [ -e "$agent_dir/ogp_agent_run.pid" ]
|
|
then
|
|
pid=$(cat $agent_dir/ogp_agent_run.pid)
|
|
kill -0 $pid > /dev/null 2>&1
|
|
if [ $? == 0 ]
|
|
then
|
|
kill $pid >/dev/null 2>&1
|
|
return $?
|
|
fi
|
|
else
|
|
return 1
|
|
fi
|
|
return 0
|
|
}
|
|
|
|
case "${1:-''}" in
|
|
'start')
|
|
start
|
|
RETVAL=$?
|
|
;;
|
|
'stop')
|
|
stop
|
|
RETVAL=$?
|
|
;;
|
|
'restart')
|
|
stop
|
|
sleep 1
|
|
start
|
|
RETVAL=$?
|
|
;;
|
|
*)
|
|
echo "Usage: service ogp_agent start|stop|restart"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
if [ ! -z "$RETVAL" ]; then
|
|
exit $RETVAL
|
|
else
|
|
exit 1
|
|
fi
|