Location: PHPKode > projects > web-cp - Web Hosting Control Panel > webcp/server/webcp-init.php
#!/usr/bin/php -q
<?#
#
# This header lets the init script be detected by redhat-config-services.
#
# putting php's <? opening before # makes chkconfig unable to parse some
# of the header data. This should be fixed in chkconfig.
#
# run 'chkconfig --add webcp' to enable it.
#
# chkconfig: - 85 15
# description: Starts and stops the webcp and webcp httpd daemons.
# processname: webcp.php
# processname: webcp-httpd.php
# pidfile: /var/run/webcp/webcp.pid
# pidfile: /var/run/webcp/webcp-httpd.pid
# config:  /home/webcp/web/config.inc.php

	/*
	// File:	webcp-init.php
	// Purpose:	Starts and stops the webcp and webcp httpd daemons.
	// Creation:	2003-06-04
	// Author:	Jonathan Haskins <hide@address.com>
	*/

error_reporting(E_ALL);
$install_dir = '/home/webcp';
include("$install_dir/web/config.inc.php");

$args = trim(next($_SERVER['argv']));
switch($args) {
	case 'start':
		$status = start();
		break;
	case 'stop':
		$status = stop();
		break;
	case 'restart':
		$status = restart();
		break;
	case 'reload':
		$status = reload();
		break;
	case 'status':
		$status = status();
		break;
	default:
		echo "usage: webcp (start|stop|restart|reload|status|help)\n\n";
		echo "start			- start web://cp\n";
		echo "stop			- stop web://cp\n";
		echo "restart			- restart web://cp\n";
		echo "reload			- reload the configuration file (not functional)\n";
		echo "status			- shows whether web://cp is running or not\n";
		echo "help			- display this help notice\n\n";
		$status = 0;
		break;
}

/* work around for weird status returns in php < 4.3 */ 
if ($status == 0) {
	return(0);
} else {
	exit(1);
}

function start() {
	global $cfg, $install_dir;
	$status = 0;

	echo 'Starting web://cp daemon:				';
	if (($pid = get_pid($cfg['pid'])) && is_running($pid)) {
		echo "[ OK ]\n";
	} else {
		exec("$install_dir/server/webcp.php -d > /dev/null", $webcp_output, $webcp_return);
		if ($webcp_return !== 0) {
			$status = 1;
			echo "[ FAILED ]\n";
		} else {
			echo "[ OK ]\n";
		}
	}

	if ($cfg['httpd_mode'] == 'webcp') {
		echo 'Starting web://cp http daemon:				';
		if (($pid = get_pid($cfg['httpd_pid'])) && is_running($pid)) {
			echo "[ OK ]\n";
		} else {
			exec("$install_dir/server/webcp-httpd.php -d > /dev/null", $httpd_output, $httpd_return);
			if ($httpd_return !== 0) {
				$status = 1;
				echo "[ FAILED ]\n";
			} else {
				echo "[ OK ]\n";
			}
		}
	}
	return $status;
}

function stop() {
	global $cfg;
	$status = 0;

	if ($cfg['httpd_mode'] == 'webcp') {
		echo 'Stopping web://cp http daemon:				';
		if ($pid = get_pid($cfg['httpd_pid'])) {
			if (!posix_kill($pid, 15)) {
				$status = 1;
				echo "[ FAILED ]\n";
			} else {
				echo "[ OK ]\n";
			}
		} else {
			$status = 1;
			echo "[ FAILED ]\n";
		}
	}

	echo 'Stopping web://cp daemon:				';
	if ($pid = get_pid($cfg['pid'])) {
		if (!posix_kill($pid, 15)) {
			$status = 1;
			echo "[ FAILED ]\n";
		} else {
			echo "[ OK ]\n";
		}
	} else {
		$status = 1;
		echo "[ FAILED ]\n";
	}
	return $status;
}

function restart() {
	$status1 = stop();
	sleep(1);
	$status2 = start();

	return $status1 + $status2 == 0 ? 0 : 1;
}

function reload() {
	global $cfg;
	$status = 0;
	
	if ($cfg['httpd_mode'] == 'webcp') {
		echo 'Reloading web://cp http daemon:				';
		if ($pid = get_pid($cfg['httpd_pid'])) {
			if (!posix_kill($pid, 1)) {
				$status = 1;
				echo "[ FAILED ]\n";
			} else {
				echo "[ OK ]\n";
			}
		} else {
			$status = 1;
			echo "[ FAILED ]\n";
		}
	}
	return $status;
}

function status() {
	global $cfg;

	$output = "web://cp is stopped\n";
	if (($pid = get_pid($cfg['pid'])) && is_running($pid)) $webcp_pid = $pid;
	if (($pid = get_pid($cfg['httpd_pid'])) && is_running($pid)) $httpd_pid = $pid;

	if (isset($webcp_pid) || isset($httpd_pid)) {
		$output = 'web://cp (pid';
		if (isset($webcp_pid)) $output .= " $webcp_pid";
		if (isset($httpd_pid)) $output .= " $httpd_pid";
		$output .= ") is running...\n";
	}
	echo $output;
	return 0;
}

function get_pid($pid_file) {
	if (is_readable($pid_file) && !is_dir($pid_file)) {
		return trim(implode('', file($pid_file)));
	} else {
		return false;
	}
}

function is_running($pid) {
	if ($pid > 0 && posix_kill($pid, 0)) {
		return true;
	} else {
		return false;
	}
}
?>
Return current item: web-cp - Web Hosting Control Panel