diff options
author | Nozomi Anzai | 2010-07-22 05:17:48 +0000 |
---|---|---|
committer | Nozomi Anzai | 2010-07-22 05:17:48 +0000 |
commit | 8d0551f2539daaf89ead62388a776ce6a16a1624 (patch) | |
tree | 52292a1b94834899960c68cc9018b3c1174eb74b | |
parent | 006d65c44b4bc2c30d2370ae6452dcc3080c66c3 (diff) |
Add new start option "-D".
Change the vaild range of client_idle_limit_in_recovery (Now -1 became valid).
Add new pgpool-II parameters for pgpool-II 2.4:
master_slave_sub_mode, delay_threshold,
log_standby_delay, debug_level, failover_if_affected_tuples_mismatch
Fix some table headers to use <thead></thead>
-rw-r--r-- | config.php | 20 | ||||
-rw-r--r-- | definePgpoolConfParam.php | 22 | ||||
-rw-r--r-- | lang/en.lang.php | 7 | ||||
-rw-r--r-- | lang/fr.lang.php | 6 | ||||
-rw-r--r-- | lang/ja.lang.php | 8 | ||||
-rw-r--r-- | login.php | 3 | ||||
-rw-r--r-- | queryCache.php | 2 | ||||
-rw-r--r-- | status.php | 7 | ||||
-rw-r--r-- | templates/config.tpl | 150 | ||||
-rw-r--r-- | templates/nodeStatus.tpl | 10 | ||||
-rw-r--r-- | templates/pgconfig.tpl | 41 | ||||
-rw-r--r-- | templates/procInfo.tpl | 2 | ||||
-rw-r--r-- | templates/status.tpl | 24 | ||||
-rw-r--r-- | version.php | 2 |
14 files changed, 230 insertions, 74 deletions
@@ -68,6 +68,11 @@ if( defined('_PGPOOL2_CMD_OPTION_C')) else $errors['c'] = $message['errNoDefined']; +if( defined('_PGPOOL2_CMD_OPTION_LARGE_D')) + $params['D'] = _PGPOOL2_CMD_OPTION_LARGE_D; +else + $errors['D'] = $message['errNoDefined']; + if( defined('_PGPOOL2_CMD_OPTION_D')) $params['d'] = _PGPOOL2_CMD_OPTION_D; else @@ -150,6 +155,13 @@ switch ( $action ) { $params[$key] = 0; } + $key = 'D'; + if(isset($_POST[$key])) { + $params[$key] = 1; + } else { + $params[$key] = 0; + } + $key = 'd'; if(isset($_POST[$key])) { $params[$key] = 1; @@ -201,7 +213,7 @@ switch ( $action ) { } else { $errors[$key] = $message['errNoDefined']; } - if(!ereg("^[0-9a-zA-Z\._\-]+$", $params[$key])) { + if(!preg_match("/^[0-9a-zA-Z\._\-]+$/", $params[$key])) { $errors[$key] = $message['errIllegalHostname']; } @@ -256,6 +268,9 @@ switch ( $action ) { $str = 'define(\'_PGPOOL2_CMD_OPTION_C\', \'' . $params['c'] . '\');' . "\n"; fputs($fp, $str); + $str = 'define(\'_PGPOOL2_CMD_OPTION_LARGE_D\', \'' . $params['D'] . '\');' . "\n"; + fputs($fp, $str); + $str = 'define(\'_PGPOOL2_CMD_OPTION_D\', \'' . $params['d'] . '\');' . "\n"; fputs($fp, $str); @@ -282,6 +297,9 @@ switch ( $action ) { fclose($fp); $tpl->assign('status', 'success'); + + } else { + $tpl->assign('errors', $errors); } /** diff --git a/definePgpoolConfParam.php b/definePgpoolConfParam.php index f1aeb2f..ba7449f 100644 --- a/definePgpoolConfParam.php +++ b/definePgpoolConfParam.php @@ -144,6 +144,22 @@ $key = 'master_slave_mode'; $pgpoolConfigParam[$key]['type'] ='B'; $pgpoolConfigParam[$key]['default'] =false; +$key = 'master_slave_sub_mode'; +$pgpoolConfigParam[$key]['type'] ='C'; +$pgpoolConfigParam[$key]['default'] ='slony'; +$pgpoolConfigParam[$key]['regexp'] = "^[slony|stream]+$"; + +$key = 'delay_threshold'; +$pgpoolConfigParam[$key]['type'] ='N'; +$pgpoolConfigParam[$key]['default'] = 0; +$pgpoolConfigParam[$key]['min'] = 0; +$pgpoolConfigParam[$key]['max'] = 65535; + +$key = 'log_standby_delay'; +$pgpoolConfigParam[$key]['type'] ='C'; +$pgpoolConfigParam[$key]['default'] ='none'; +$pgpoolConfigParam[$key]['regexp'] = "^[always|if_over_threshold|none]+$"; + $key = 'connection_cache'; $pgpoolConfigParam[$key]['type'] ='B'; $pgpoolConfigParam[$key]['default'] =true; @@ -305,13 +321,17 @@ $pgpoolConfigParam[$key]['regexp'] = ".*"; $key = 'client_idle_limit_in_recovery'; $pgpoolConfigParam[$key]['type'] ='N'; $pgpoolConfigParam[$key]['default'] ='0'; -$pgpoolConfigParam[$key]['min'] = 0; +$pgpoolConfigParam[$key]['min'] = -1; $pgpoolConfigParam[$key]['max'] = 65535; $key = 'fail_over_on_backend_error'; $pgpoolConfigParam[$key]['type'] ='B'; $pgpoolConfigParam[$key]['default'] =true; +$key = 'failover_if_affected_tuples_mismatch'; +$pgpoolConfigParam[$key]['type'] ='B'; +$pgpoolConfigParam[$key]['default'] =false; + $key = 'log_per_node_statement'; $pgpoolConfigParam[$key]['type'] ='B'; $pgpoolConfigParam[$key]['default'] =false; diff --git a/lang/en.lang.php b/lang/en.lang.php index 0a8bf1a..24a0122 100644 --- a/lang/en.lang.php +++ b/lang/en.lang.php @@ -37,13 +37,15 @@ $message = array( 'descAuthentication_timeout' => 'Maximum time in seconds to complete client authentication', 'descConnection_cache' => 'If true, cache connections to PostgreSQL', 'descConnection_life_time' => 'Life time for each idle connection in seconds', + 'descDelay_threshold' => 'If the standby server delays more than delay_threshold, any query goes to the primary only', 'descEnable_pool_hba' => 'Use host-based authentication', 'descEnable_query_cache' => 'Perform query cache', 'descFailover_command' => 'Command to be executed when detaching a node', 'descFailback_command' => 'Command to be executed when attaching a node', + 'descFailover_if_affected_tuples_mismatch' => 'Fail over due to disagreement with the number of affected tuples in UPDATE/DELETE', 'descFail_over_on_backend_error' => 'Fail over when socket communication error to backend occurs', 'descClient_idle_limit_in_recovery' => 'Timeout in seconds while waiting for a query from a client in on line recovery', - 'descHealth_check_period' => 'Specifies the interval for next health checking. 0 means no health checking', + 'descHealth_check_period' => 'Specifies the interval for next health checking. 0 means no health checking. -1 means no wait, and 0 means wait forever', 'descHealth_check_timeout' => 'Pgpool does "health check" periodically to detect PostgreSQL servers down, network communication problems or as such', 'descHealth_check_user' => 'PostgreSQL user name for the health checking', 'descIgnore_leading_white_space' => 'If true, ignore leading white spaces of each query while pgpool judges if the query is a SELECT so that it can be load balanced', @@ -52,12 +54,14 @@ $message = array( 'descLoad_balance_mode' => 'Perform load balancing for SELECT', 'descLobj_lock_table' => 'Specifies table name lock used when rewriting lo_create in replication mode', 'descLog_connections' => 'If true, incoming connections will be printed to the log', + 'descLog_standby_delay' => 'Freqency to log the standby delay', 'descLog_hostname' => 'If true, client\'s hostname will be shown in ps status and in a connection log if log_connections is true', 'descLog_statement' => 'If true, print all statements to the log', 'descLogdir' => 'The directory name to store pgpool\'s log files', 'descLog_per_node_statement' => 'If true, print all statements to the log per DB node', 'descPid_file_name' => 'The pid file name', 'descMaster_slave_mode' => 'Run in master/slave mode', + 'descMaster_slave_sub_mode' => 'The way to replicare in Master/slave mode', 'descMax_pool' => 'Number of connection pools each pgpool server process are keeping', 'descNum_init_children' => 'Number of pgpool processes initially forked', 'descParallel_mode' => 'Run in parallel mode', @@ -125,6 +129,7 @@ $message = array( 'strCmdC' => 'Clears query cache', 'strCmdD' => 'Debug mode', 'strCmdDesc' => 'If it is a blank, this option is ignored.', + 'strCmdLargeD' => 'Discard pgpool_status file', 'strCmdM' => 'Stop mode', 'strCmdN' => 'Don\'t run in daemon mode', 'strCmdPcpFile' => 'pcp.conf', diff --git a/lang/fr.lang.php b/lang/fr.lang.php index 7088040..d78c541 100644 --- a/lang/fr.lang.php +++ b/lang/fr.lang.php @@ -49,6 +49,7 @@ $message = array( 'descInsert_lock' => ' Si vous répliquez une table possédant une colonne de type SERIAL, quelque fois, la valeur de serial ne sera pas identique parmi les serveurs', 'descListen_addresses' => 'Spécifie les adresses à écouter pour les connexions TCP/IP', 'descLoad_balance_mode' => 'Réalise une répartition de charge pour les requêtes SELECT', + 'descLobj_lock_table' => 'ラージオブジェクトのレプリケーションでロック管理に使うためのテーブル名', 'descLog_connections' => 'Si true, les connexions entrantes seront tracées dans les journaux applicatifs', 'descLog_hostname' => 'Si true, le nom de l\'hôte sera affiché dans le statut ps et dans le journal applicatif si log_connections is true', 'descLog_statement' => 'Si vrai, trace toutes les requêtes dans les journaux', @@ -75,6 +76,11 @@ $message = array( 'descReplication_timeout' => 'Dans le mode de réplication non strict, il y un risque de verrou mortel', 'descReset_query_list' => 'Commandes SQL séparées par des points-virgules à exécuter à la fin de la session', 'descSocket_dir' => 'Le répertoire socket de connexion de pgpool', + 'descSsl' => 'pgpool-IIとバックエンドの間のSSL接続', + 'descSsl_ca_cert' => 'opensslの-CAFileに指定するパス', + 'descSsl_ca_cert_dir' => 'opensslの-CApathに指定するディレクトリパス', + 'descSsl_cert' => 'フロントエンドとの接続に使用する公開x509証明書のフルパス', + 'descSsl_key' => 'フロントエンドとの接続に使用するプライベートキーファイルのフルパス', 'descSystem_db_dbname' => 'Le nom de la base de données système', 'descSystem_db_hostname' => 'Nom du serveur du système de bases de données', 'descSystem_db_password' => 'Mot de passe pour se connecter au système de bases de données', diff --git a/lang/ja.lang.php b/lang/ja.lang.php index ad3a3a9..162cd74 100644 --- a/lang/ja.lang.php +++ b/lang/ja.lang.php @@ -37,10 +37,12 @@ $message = array( 'descAuthentication_timeout' => 'クライアント認証のタイムアウト時間(秒)', 'descConnection_cache' => 'コネクションキャッシュ機能の有無', 'descConnection_life_time' => 'コネクションプール中のコネクションの有効期間(秒)', + 'descDelay_threshold' => '許容するスタンバイサーバの遅延時間(秒)', 'descEnable_pool_hba' => 'クライアント認証機能の有無', 'descEnable_query_cache' => 'クエリキャッシュ機能の有無', 'descFailover_command' => 'ノード切り離し時に起動するコマンド', 'descFailback_command' => 'ノード復帰時に起動するコマンド', + 'descFailover_if_affected_tuples_mismatch' => '更新行数が一致しないときにフェイルオーバ', 'descFail_over_on_backend_error' => 'DBノードへのソケット通信エラー時にフェイルオーバ', 'descHealth_check_period' => 'ヘルスチェックを行う間隔(秒)', 'descHealth_check_timeout' => 'ヘルスチェックが長時間待たされるのを防ぐためのタイムアウト値(秒)', @@ -52,11 +54,13 @@ $message = array( 'descLobj_lock_table' => 'ラージオブジェクトのレプリケーションでロック管理に使うためのテーブル名', 'descLog_connections' => '受信した接続のログを出力', 'descLog_hostname' => 'クライアントのホスト名を"ps"ステータスに出力', + 'descLog_standby_delay' => 'スタンバイサーバの遅延をログに記録する', 'descLog_statement' => 'SQL文をログ出力', 'descLogdir' => 'pgpoolの各種ログファイルを格納するディレクトリ', 'descLog_per_node_statement' => 'DBノード毎にSQL文をログ出力', 'descPid_file_name' => 'pidファイルの名前', 'descMaster_slave_mode' => 'マスタ/スレーブモードでpgpoolを運転', + 'descMaster_slave_sub_mode' => 'マスタ/スレーブモードの伝播方法', 'descMax_pool' => 'pgpoolの各サーバプロセスがキープするPostgreSQLへの最大コネクション数', 'descNum_init_children' => 'preforkするpgpoolのサーバプロセス数', 'descParallel_mode' => 'パラレルモードでpgpoolを運転', @@ -115,6 +119,9 @@ $message = array( 'msgStopPgpool' => 'pgpoolを停止してよいですか?', 'msgUpdateComplete' => '更新は正常に終了しました', 'msgUpdateFailed' => '更新に失敗しました', + 'msgDetachConfirm' => 'このノードを切断してよいですか?', + 'msgReturnConfirm', 'このノードを復帰させてよいですか?', + 'msgRecoveryConfirm', 'このノードをリカバリしますか?', 'strAdd' => '追加', 'strAdminPassword' => '管理者パスワード', 'strBack' => '戻る', @@ -125,6 +132,7 @@ $message = array( 'strCmdC' => 'クエリキャッシュクリア', 'strCmdD' => 'デバッグモード', 'strCmdDesc' => '空白の場合には無視', + 'strCmdLargeD' => 'pgpool_status を無視', 'strCmdM' => '停止モード', 'strCmdN' => '非デーモンモード', 'strCmdPcpFile' => 'pcp.conf', @@ -59,7 +59,7 @@ if($success == false) { if($fp != null) { while( !feof($fp) ) { $line = fgets($fp); - if( ereg($regexp, $line) ) { + if( preg_match("/$regexp/", $line) ) { $_SESSION[SESSION_LOGIN_USER] = $username; $_SESSION[SESSION_LOGIN_USER_PASSWORD] = $password; $success = true; @@ -88,6 +88,7 @@ if(DoesPgpoolPidExist()) { } $tpl->assign('c', _PGPOOL2_CMD_OPTION_C); +$tpl->assign('D', _PGPOOL2_CMD_OPTION_LARGE_D); $tpl->assign('d', _PGPOOL2_CMD_OPTION_D); $tpl->assign('m', _PGPOOL2_CMD_OPTION_M); $tpl->assign('n', _PGPOOL2_CMD_OPTION_N); diff --git a/queryCache.php b/queryCache.php index 83f6ed1..5c82f18 100644 --- a/queryCache.php +++ b/queryCache.php @@ -74,7 +74,7 @@ if($conn == false) { $errorCode = 'e2001'; $tpl->assign('errorCode', $errorCode); $tpl->display('error.tpl'); -# exit(); + exit(); } if($action == 'delete') { @@ -52,6 +52,7 @@ if(isset($_POST['action'])) { */ $tpl->assign('c', _PGPOOL2_CMD_OPTION_C); +$tpl->assign('D', _PGPOOL2_CMD_OPTION_LARGE_D); $tpl->assign('d', _PGPOOL2_CMD_OPTION_D); $tpl->assign('m', _PGPOOL2_CMD_OPTION_M); $tpl->assign('n', _PGPOOL2_CMD_OPTION_N); @@ -67,6 +68,9 @@ switch ($action) { if(isset($_POST['c'])) { $args = $args . "-c "; } + if(isset($_POST['D'])) { + $args = $args . "-D "; + } if(isset($_POST['d'])) { $args = $args . "-d "; } @@ -164,6 +168,9 @@ switch ($action) { if(isset($_POST['c'])) { $args = $args . "-c "; } + if(isset($_POST['D'])) { + $args = $args . "-D "; + } if(isset($_POST['d'])) { $args = $args . "-d "; } diff --git a/templates/config.tpl b/templates/config.tpl index 7bbee9d..9fee43d 100644 --- a/templates/config.tpl +++ b/templates/config.tpl @@ -53,104 +53,134 @@ </td> </tr> <tr> - <th><label>{$message.strPgConfFile|escape}</label> + {if $errors.pgpool_config_file != null}<th class="error">{else}<th>{/if} + <label>{$message.strPgConfFile|escape}</label> (string)</th> <td><input type="text" name="pgpool_config_file" size="50" value="{$params.pgpool_config_file|escape}" /> - {if $errors.pgpool_config_file != ''} - <br />{$errors.pgpool_config_file|escape} - {/if} - </td></tr> + {if $errors.pgpool_config_file != ''} + <br />{$errors.pgpool_config_file|escape} + {/if} + </td></tr> <tr> - <th><label>{$message.strPasswordFile|escape}</label> + {if $errors.password_file != null}<th class="error">{else}<th>{/if} + <label>{$message.strPasswordFile|escape}</label> (string)</th> <td><input type="text" name="password_file" size="50" value="{$params.password_file|escape}" /> - {if $errors.password_file != ''} - <br />{$errors.password_file|escape} - {/if} - </td></tr> + {if $errors.password_file != ''} + <br />{$errors.password_file|escape} + {/if} + </td></tr> <tr> - <th><label>{$message.strPgpoolCommand|escape}</label> + {if $errors.pgpool_command != null}<th class="error">{else}<th>{/if} + <label>{$message.strPgpoolCommand|escape}</label> (string)</th> <td><input type="text" name="pgpool_command" size="50" value="{$params.pgpool_command|escape}" /> - {if $errors.pgpool_command != ''} - <br />{$errors.pgpool_command|escape} - {/if} - </td></tr> + {if $errors.pgpool_command != ''} + <br />{$errors.pgpool_command|escape} + {/if} + </td></tr> <tr> <th colspan="2"><label>{$message.strPgpoolCommandOption|escape}</label> (string)</th></tr> - <tr><td>{$message.strCmdC|escape}(-c)</td> + <tr><td>{$message.strCmdC|escape}(-c)</td> + <td> {if $params.c == 1} - <td><input type="checkbox" name="c" checked="checked" /></td> + <input type="checkbox" name="c" checked="checked" /> {else} - <td><input type="checkbox" name="c" /></td> + <input type="checkbox" name="c" /> + {/if} + {if $errors.c != ''} + <br />{$errors.c|escape} {/if} - </tr> - <tr><td>{$message.strCmdN|escape}(-n)</td> + </td></tr> + <tr><td>{$message.strCmdLargeD|escape}(-D)</td> + <td> + {if $params.d == 1} + <input type="checkbox" name="D" checked="checked" /> + {else} + <input type="checkbox" name="D" /> + {/if} + {if $errors.D != ''} + <br />{$errors.D|escape} + {/if} + </td></tr> + <tr><td>{$message.strCmdN|escape}(-n)</td> + <td> {if $params.n == 1} - <td><input type="checkbox" name="n" checked="checked" /></td> + <input type="checkbox" name="n" checked="checked" /> {else} - <td><input type="checkbox" name="n" /></td> + <input type="checkbox" name="n" /> {/if} - </tr> - <tr><td>{$message.strCmdD|escape}(-d)</td> + {if $errors.n != ''} + <br />{$errors.n|escape} + {/if} + </td></tr> + <tr><td>{$message.strCmdD|escape}(-d)</td> + <td> {if $params.d == 1} - <td><input type="checkbox" name="d" checked="checked" /></td> + <input type="checkbox" name="d" checked="checked" /> {else} - <td><input type="checkbox" name="d" /></td> + <input type="checkbox" name="d" /> + {/if} + {if $errors.d != ''} + <br />{$errors.d|escape} {/if} - </tr> - <tr><td>{$message.strCmdM|escape}(-m)</td><td><select name="m"> + </td></tr> + <tr><td>{$message.strCmdM|escape}(-m)</td><td><select name="m"> {if $params.m == 's'} - <option value="s" selected="selected">smart</optgroup> - <option value="f">fast</optgroup> - <option value="i">immediate</optgroup> + <option value="s" selected="selected">smart</option> + <option value="f">fast</option> + <option value="i">immediate</option> {elseif $params.m == 'f'} - <option value="s">smart</optgroup> - <option value="f" selected="selected">fast</optgroup> - <option value="i">immediate</optgroup> + <option value="s">smart</option> + <option value="f" selected="selected">fast</option> + <option value="i">immediate</option> {elseif $params.m == 'i'} - <option value="s">smart</optgroup> - <option value="f">fast</optgroup> - <option value="i" selected="selected">immediate</optgroup> + <option value="s">smart</option> + <option value="f">fast</option> + <option value="i" selected="selected">immediate</option> {else} - <option value="s">smart</optgroup> - <option value="f">fast</optgroup> - <option value="i">immediate</optgroup> + <option value="s">smart</option> + <option value="f">fast</option> + <option value="i">immediate</option> {/if} </td></tr> <tr> - <th><label>{$message.strPgpoolLogFile|escape}</label> + {if $errors.pgpool_logfile != null}<th class="error">{else}<th>{/if} + <label>{$message.strPgpoolLogFile|escape}</label> (string)</th> <td><input type="text" name="pgpool_logfile" size="50" value="{$params.pgpool_logfile|escape}" /> - {if $errors.pgpool_logfile != ''} - <br />{$errors.pgpool_logfile|escape} - {/if} - </td></tr> + {if $errors.pgpool_logfile != ''} + <br />{$errors.pgpool_logfile|escape} + {/if} + </td></tr> <tr> - <th><label>{$message.strPcpDir|escape}</label> + {if $errors.pcp_client_dir != null}<th class="error">{else}<th>{/if} + <label>{$message.strPcpDir|escape}</label> (string)</th> <td><input type="text" name="pcp_client_dir" size="50" value="{$params.pcp_client_dir|escape}" /> - {if $errors.pcp_client_dir != ''} - <br />{$errors.pcp_client_dir|escape} - {/if} - </td></tr> + {if $errors.pcp_client_dir != ''} + <br />{$errors.pcp_client_dir|escape} + {/if} + </td></tr> <tr> - <th><label>{$message.strPcpHostName|escape}</label> + {if $errors.pcp_hostname != null}<th class="error">{else}<th>{/if} + <label>{$message.strPcpHostName|escape}</label> (string)</th> <td><input type="text" name="pcp_hostname" size="50" value="{$params.pcp_hostname|escape}" /> - {if $errors.pcp_hostname != ''} - <br />{$errors.pcp_hostname|escape} - {/if} - </td></tr> + {if $errors.pcp_hostname != ''} + <br />{$errors.pcp_hostname|escape} + {/if} + </td></tr> <tr> - <th><label>{$message.strPcpRefreshTime|escape}</label> + {if $errors.pcp_refresh_time != null}<th class="error">{else}<th>{/if} + <label>{$message.strPcpRefreshTime|escape}</label> (integer) </th><td><input type="text" name="pcp_refresh_time" size="50" value="{$params.pcp_refresh_time|escape}" /> - {if $errors.pcp_refresh_time != ''} - <br />{$errors.pcp_refresh_time|escape} - {/if} - </td></tr> + {if $errors.pcp_refresh_time != ''} + <br />{$errors.pcp_refresh_time|escape} + {/if} + </td></tr> </tbody> </table> </form> diff --git a/templates/nodeStatus.tpl b/templates/nodeStatus.tpl index 2e54670..45f0c60 100644 --- a/templates/nodeStatus.tpl +++ b/templates/nodeStatus.tpl @@ -9,6 +9,7 @@ <h3>{$message.strNodeInfo|escape}</h3> {if $nodeCount > 0} <table> + <thead> <tr> <th><label>{$message.strIPaddress|escape}</label></th> <th><label>{$message.strPort|escape}</label></th> @@ -17,7 +18,8 @@ <th><label>{$message.strWeight|escape}</label></th> {/if} <th></th> - </tr> + </tr> + </thead> {section name=num loop=$nodeInfo} {if ($smarty.section.num.index+1) % 2 == 0} <tr class="even"> @@ -40,11 +42,11 @@ {/if} <td> {if $nodeInfo[num][4] == 'disconnect'} - <input type="button" name="command" onclick="sendCommand('detach', {$smarty.section.num.index|escape})" value="{$message.strDisconnect|escape}" /> + <input type="button" name="command" onclick="sendCommand('detach', {$smarty.section.num.index|escape}, '{$message.msgDetachConfirm|escape}')" value="{$message.strDisconnect|escape}" /> {elseif $nodeInfo[num][4] == 'return'} - <input type="button" name="command" onclick="sendCommand('return', {$smarty.section.num.index|escape})" value="{$message.strReturn|escape}" /> + <input type="button" name="command" onclick="sendCommand('return', {$smarty.section.num.index|escape}, '{$message.msgReturnConfirm|escape}')" value="{$message.strReturn|escape}" /> {elseif $nodeInfo[num][4] == 'recovery'} - <input type="button" name="command" onclick="sendCommand('recovery', {$smarty.section.num.index|escape})" value="{$message.strRecovery|escape}" /> + <input type="button" name="command" onclick="sendCommand('recovery', {$smarty.section.num.index|escape}, '{$message.msgRecoveryConfirm|escape}')" value="{$message.strRecovery|escape}" /> {/if} </td> </tr> diff --git a/templates/pgconfig.tpl b/templates/pgconfig.tpl index 8e5ce94..f11a49f 100644 --- a/templates/pgconfig.tpl +++ b/templates/pgconfig.tpl @@ -512,6 +512,18 @@ function cancelNode() { {else} <td><input type="checkbox" name="fail_over_on_backend_error" id="fail_over_on_backend_error" value="false" /></td> {/if} </tr> + <tr> {if $error.replication_stop_on_mismatch != null} + <th class="error"><label>{$message.descFailover_if_affected_tuples_mismatch|escape}</label> + <br />failover_if_affected_tuples_mismatch</th> + {else} + <th><label>{$message.descFailover_if_affected_tuples_mismatch|escape}</label> + <br />failover_if_affected_tuples_mismatch</th> + {/if} + {if $params.failover_if_affected_tuples_mismatch == 'true'} + <td><input type="checkbox" name="failover_if_affected_tuples_mismatch" id="failover_if_affected_tuples_mismatch" value="true" checked="checked" /></td> + {else} + <td><input type="checkbox" name="failover_if_affected_tuples_mismatch" id="failover_if_affected_tuples_mismatch" value="false" /></td> + {/if} </tr> <tr> {if $error.replicate_select != null} <th class="error"><label>{$message.descReplicate_select|escape}</label> @@ -825,6 +837,35 @@ function cancelNode() { {else} <td><input type="checkbox" name="master_slave_mode" id="master_slave_mode" value="false" /></td> {/if} </tr> + <tr> {if $error.master_slave_sub_mode != null} + <th class="error"><label>{$message.descMaster_slave_sub_mode|escape}</label> + <br />master_slave_sub_mode *</th> + {else} + <th><label>{$message.descMaster_slave_sub_mode|escape}</label><br />master_slave_sub_mode *</th> + {/if} + <td><select name="master_slave_sub_mode" id="master_slave_sub_mode"> + <option value="slony" {if $params.master_slave_sub_mode == 'slony'}selected{/if}>slony</option> + <option value="stream" {if $params.master_slave_sub_mode == 'stream'}selected{/if}>stream</option> + </select></td> + </tr> + <tr> {if $error.delay_threshold != null} + <th class="error"><label>{$message.descDelay_threshold|escape}</label><br />delay_threshold</th> + {else} + <th><label>{$message.descDelay_threshold|escape}</label><br />delay_threshold</th> + {/if} + <td><input type="text" name="delay_threshold" id="delay_threshold" value="{$params.delay_threshold|escape}" /></td> + </tr> + <tr> {if $error.log_standby_delay != null} + <th class="error"><label>{$message.descLog_standby_delay|escape}</label><br />log_standby_delay</th> + {else} + <th><label>{$message.descLog_standby_delay|escape}</label><br />log_standby_delay</th> + {/if} + <td><select name="log_standby_delay" id="log_standby_delay"> + <option value="always" {if $params.log_standby_delay == 'always'}selected{/if}>always</option> + <option value="if_over_threshold" {if $params.log_standby_delay == 'if_over_threshold'}selected{/if}>if_over_threshold</option> + <option value="none" {if $params.log_standby_delay == 'none'}selected{/if}>none</option> + </select></td> + </tr> <tr> {if $error.portinsert_lock!= null} <th class="error"><label>{$message.descInsert_lock|escape}</label> <br />insert_lock</th> diff --git a/templates/procInfo.tpl b/templates/procInfo.tpl index 3221ae4..0022737 100644 --- a/templates/procInfo.tpl +++ b/templates/procInfo.tpl @@ -8,6 +8,7 @@ <body> <h3>{$message.strProcInfo|escape}</h3> <table> + <thead> <tr> <td><label>{$message.strProcId|escape}</label></td> <td><label>{$message.strDbName|escape}</label><br /><label>{$message.strConnUser|escape}</label></td> @@ -15,6 +16,7 @@ <td><label>{$message.strProtocolMajorVersion|escape}</label><br /><label>{$message.strProtocolNinorVersion|escape}</label></td> <td><label>{$message.strConnUsed|escape}</label></td> </tr> + </thead> {foreach name=proc key=num item=value from=$procInfo} {foreach name=data item=data from=$value} {if $smarty.foreach.data.first == true} diff --git a/templates/status.tpl b/templates/status.tpl index 336fed4..b1ae2e7 100644 --- a/templates/status.tpl +++ b/templates/status.tpl @@ -77,10 +77,12 @@ function timer(interval) { setTimeout("reload()",interval); } -function sendCommand(command, nodeNumber){ - document.Command.action.value= command; - document.Command.nodeNumber.value= nodeNumber; - document.Command.submit(); +function sendCommand(command, nodeNumber, message){ + if (window.confirm(message)) { + document.Command.action.value= command; + document.Command.nodeNumber.value= nodeNumber; + document.Command.submit(); + } } function startPgpool() { @@ -208,6 +210,13 @@ function changeView(chView){ <td><input type="checkbox" name="c" /></td> {/if} </tr> + <tr><td>{$message.strCmdLargeD|escape}(-D)</td> + {if $n == 1} + <td><input type="checkbox" name="D" checked="checked" /></td> + {else} + <td><input type="checkbox" name="D" /></td> + {/if} + </tr> <tr><td>{$message.strCmdN|escape}(-n)</td> {if $n == 1} <td><input type="checkbox" name="n" checked="checked" /></td> @@ -284,6 +293,13 @@ function changeView(chView){ <td><input type="checkbox" name="c" /></td> {/if} </tr> + <tr><td>{$message.strCmdLargeD|escape}(-D)</td> + {if $n == 1} + <td><input type="checkbox" name="D" checked="checked" /></td> + {else} + <td><input type="checkbox" name="D" /></td> + {/if} + </tr> <tr><td>{$message.strCmdN|escape}(-n)</td> {if $n == 1} <td><input type="checkbox" name="n" checked="checked" /></td> diff --git a/version.php b/version.php index 6083f74..d5c6bfd 100644 --- a/version.php +++ b/version.php @@ -23,6 +23,6 @@ * @version SVN: $Id$
*/
-$version = '2.3';
+$version = '2.4';
?>
|