* @param srgs $num
* @return array
*/
-function execPcp($command, $extra_args)
+function execPcp($command, $extra_args = array())
{
$pcpStatus = array (
'0' => 'SUCCESS',
$args .= " -{$arg_name} {$val}";
}
- } else {
+ } elseif ($param) {
$args = " " . PCP_TIMEOUT.
" " . $param['hostname'] .
" " . $param['pcp_port'] .
break;
case 'PCP_START_PGPOOL':
- $configOption = ' -f ' . _PGPOOL2_CONFIG_FILE .
- ' -F ' . _PGPOOL2_PASSWORD_FILE;
-
- if(isPipe($num)) {
- $cmdOption = $configOption . $num . ' > /dev/null &';
- } else {
- $cmdOption = $configOption . $num . ' 2>&1 &';
- }
-
- /* we should not check pid file here.
- * let pgpool handle bogus pid file
- * if(DoesPgpoolPidExist()) {
- * return array('FAIL'=> '');
- * }
- */
- $cmd = _PGPOOL2_COMMAND . $cmdOption;
+ $args = _setStartArgs();
+ $cmd = _PGPOOL2_COMMAND . $args;
+ pr($cmd);
$ret = exec($cmd, $output, $return_var);
if ($return_var == 0) {
return array($pcpStatus[$return_var] => $output);
break;
case 'PCP_RELOAD_PGPOOL':
- $cmdOption = $num;
- $cmdOption = $cmdOption .
- ' -f ' . _PGPOOL2_CONFIG_FILE .
- ' -F ' . _PGPOOL2_PASSWORD_FILE . ' reload';
- $cmd = _PGPOOL2_COMMAND . $cmdOption . ' 2>&1 &';
+ $args = _setStartArgs();
+ $cmd = _PGPOOL2_COMMAND . $args. ' reload 2>&1 &';
$ret = exec($cmd, $output, $return_var);
if ($return_var == 0) {
return array($pcpStatus[$return_var] => $output);
break;
case 'PCP_STOP_PGPOOL':
+ $args .= " {$_POST['stop_mode']}";
$cmd = _PGPOOL2_PCP_DIR . '/pcp_stop_pgpool' . $args;
$ret = exec($cmd, $output, $return_var);
break;
function isSuperUser($user_name)
{
$params = readConfigParams(array('port'));
+
+ // Try to connect the backend by login user
$conn = openDBConnection(array(
'port' => $params['port'],
'dbname' => 'template1',
'password' => $_SESSION[SESSION_LOGIN_USER_PASSWORD],
));
- if ($conn == FALSE) {
- return NULL;
+ // Try to connect health check user
+ if ($conn === FALSE) {
+ $params = readConfigParams(array('port', 'health_check_user', 'health_check_password'));
+ $conn = openDBConnection(array(
+ 'port' => $params['port'],
+ 'dbname' => 'template1',
+ 'user' => $params['health_check_user'],
+ 'password' => $params['health_check_password']
+ ));
}
+ if ($conn === FALSE) { return NULL; }
$result = pg_query($conn, "SELECT usesuper FROM pg_user WHERE usename = '{$user_name}'");
if (! pg_result_status($result) == PGSQL_TUPLES_OK) {
/** Modify start options */
function _setStartArgs()
{
- $args = ' ';
+ $args = array();
+
+ $args[] = "-f ". _PGPOOL2_CONFIG_FILE;
+ $args[] = "-F ". _PGPOOL2_PASSWORD_FILE;
+
+ foreach ($_POST as $key => $value) {
+ switch ($key) {
+ case 'c':
+ case 'D':
+ case 'd':
+ case 'C':
+ case 'n':
+ if ($value == 'on') {
+ $args[] = "-{$key}";
+ }
- if (isset($_POST['c'])) {
- $args = $args . "-c ";
- }
- if (isset($_POST['D'])) {
- $args = $args . "-D ";
- }
- if (isset($_POST['d'])) {
- $args = $args . "-d ";
- }
- if (isset($_POST['n'])) {
- $pgpoolLog = _PGPOOL2_LOG_FILE;
- if ($pgpoolLog == '') {
- $logDir = readLogDir();
- $pgpoolLog = "$logDir/pgpool.log";
- }
- if (isPipe($pgpoolLog)) {
- $args = "$args -n 2>&1 $pgpoolLog ";
- } else {
- $args = "$args -n > $pgpoolLog ";
+ if ($key == 'n') {
+ $pgpoolLog = _PGPOOL2_LOG_FILE;
+ if ($pgpoolLog == '') {
+ $logDir = readLogDir();
+ $pgpoolLog = "$logDir/pgpool.log";
+ }
+ if (isPipe($pgpoolLog)) {
+ $args[] = "2>&1 > $pgpoolLog &";
+ } else {
+ $args[] = "> $pgpoolLog &";
+ }
+ }
+ break;
}
}
- if (isset($_POST['C'])) {
- $args = $args . "-C ";
- }
+
+ $args = ' ' . implode(' ', $args);
return $args;
}
global $tpl;
$rtn = FALSE;
- $args = _setStartArgs();
- $result = execPcp('PCP_START_PGPOOL', $args);
- if (!array_key_exists('SUCCESS', $result)) {
+ $result = execPcp('PCP_START_PGPOOL');
+ if (! array_key_exists('SUCCESS', $result)) {
$pgpoolStatus = 'pgpool start failed.';
$pgpoolMessage = $result;