Read slave DB configuration file
static public getDBSlaveConf ( $choice = NULL ) : DBmysql | ||
$choice | integer, host number (default NULL) | |
Résultat | DBmysql | object |
/** * Print the config form for slave DB * * @return Nothing (display) **/ function showFormDBSlave() { global $DB, $CFG_GLPI, $DBslave; if (!Config::canUpdate()) { return false; } echo "<form name='form' action=\"" . Toolbox::getItemTypeFormURL(__CLASS__) . "\" method='post'>"; echo "<div class='center' id='tabsbody'>"; echo "<input type='hidden' name='_dbslave_status' value='1'>"; echo "<table class='tab_cadre_fixe'>"; $active = DBConnection::isDBSlaveActive(); echo "<tr class='tab_bg_2'><th colspan='4'>" . _n('Mysql replica', 'Mysql replicas', Session::getPluralNumber()) . "</th></tr>"; $DBslave = DBConnection::getDBSlaveConf(); if (is_array($DBslave->dbhost)) { $host = implode(' ', $DBslave->dbhost); } else { $host = $DBslave->dbhost; } echo "<tr class='tab_bg_2'>"; echo "<td>" . __('Mysql server') . "</td>"; echo "<td><input type='text' name='_dbreplicate_dbhost' size='40' value='{$host}'></td>"; echo "<td>" . __('Database') . "</td>"; echo "<td><input type='text' name='_dbreplicate_dbdefault' value='" . $DBslave->dbdefault . "'>"; echo "</td></tr>"; echo "<tr class='tab_bg_2'>"; echo "<td>" . __('Mysql user') . "</td>"; echo "<td><input type='text' name='_dbreplicate_dbuser' value='" . $DBslave->dbuser . "'></td>"; echo "<td>" . __('Mysql password') . "</td>"; echo "<td><input type='password' name='_dbreplicate_dbpassword' value='" . rawurldecode($DBslave->dbpassword) . "'>"; echo "</td></tr>"; echo "<tr class='tab_bg_2'>"; echo "<td>" . __('Use the slave for the search engine') . "</td><td>"; $values = array(0 => __('Never'), 1 => __('If synced (all changes)'), 2 => __('If synced (current user changes)'), 3 => __('If synced or read-only account'), 4 => __('Always')); Dropdown::showFromArray('use_slave_for_search', $values, array('value' => $CFG_GLPI["use_slave_for_search"])); echo "<td colspan='2'> </td>"; echo "</tr>"; if ($DBslave->connected && !$DB->isSlave()) { echo "<tr class='tab_bg_2'><td colspan='4' class='center'>"; DBConnection::showAllReplicateDelay(); echo "</td></tr>"; } echo "<tr class='tab_bg_2'><td colspan='4' class='center'>"; echo "<input type='submit' name='update' class='submit' value=\"" . _sx('button', 'Save') . "\">"; echo "</td></tr>"; echo "</table></div>"; Html::closeForm(); }
* @brief */ define('DO_NOT_CHECK_HTTP_REFERER', 1); include './inc/includes.php'; // Force in normal mode $_SESSION['glpi_use_mode'] = Session::NORMAL_MODE; // Need to be used using : // check_http -H servername -u /glpi/status.php -s GLPI_OK // Plain text content header('Content-type: text/plain'); $ok_master = true; $ok_slave = true; $ok = true; // Check slave server connection if (DBConnection::isDBSlaveActive()) { $DBslave = DBConnection::getDBSlaveConf(); if (is_array($DBslave->dbhost)) { $hosts = $DBslave->dbhost; } else { $hosts = array($DBslave->dbhost); } foreach ($hosts as $num => $name) { $diff = DBConnection::getReplicateDelay($num); if (abs($diff) > 1000000000) { echo "GLPI_DBSLAVE_{$num}_OFFLINE\n"; $ok_slave = false; } else { if (abs($diff) > HOUR_TIMESTAMP) { echo "GLPI_DBSLAVE_{$num}_PROBLEM\n"; $ok_slave = false; } else {
/** * Print the config form for slave DB * * @return Nothing (display) **/ function showFormDBSlave() { global $DB, $LANG, $CFG_GLPI, $DBSlave; if (!haveRight("config", "w")) { return false; } echo "<form name='form' action=\"" . getItemTypeFormURL(__CLASS__) . "\" method='post'>"; echo "<div class='center' id='tabsbody'>"; echo "<input type='hidden' name='id' value='" . $CFG_GLPI["id"] . "'>"; echo "<input type='hidden' name='_dbslave_status' value='1'>"; echo "<table class='tab_cadre_fixe'>"; $active = DBConnection::isDBSlaveActive(); echo "<tr class='tab_bg_2'><th colspan='4'>" . $LANG['setup'][800] . "</th></tr>"; $DBSlave = DBConnection::getDBSlaveConf(); if (is_array($DBSlave->dbhost)) { $host = implode(' ', $DBSlave->dbhost); } else { $host = $DBSlave->dbhost; } echo "<tr class='tab_bg_2'>"; echo "<td>" . $LANG['install'][30] . " :</td>"; echo "<td><input type='text' name='_dbreplicate_dbhost' size='40' value='{$host}'></td>"; echo "<td>" . $LANG['setup'][802] . " :</td>"; echo "<td><input type='text' name='_dbreplicate_dbdefault' value='" . $DBSlave->dbdefault . "'>"; echo "</td></tr>"; echo "<tr class='tab_bg_2'>"; echo "<td>" . $LANG['install'][31] . " :</td>"; echo "<td><input type='text' name='_dbreplicate_dbuser' value='" . $DBSlave->dbuser . "'></td>"; echo "<td>" . $LANG['install'][32] . " :</td>"; echo "<td><input type='password' name='_dbreplicate_dbpassword' value='" . $DBSlave->dbpassword . "'>"; echo "</td></tr>"; echo "<tr class='tab_bg_2'>"; echo "<td>" . $LANG['setup'][804] . " :</td><td>"; Dropdown::showYesNo("use_slave_for_search", $CFG_GLPI["use_slave_for_search"]); echo "<td colspan='2'> </td>"; echo "</tr>"; if ($DBSlave->connected && !$DB->isSlave()) { echo "<tr class='tab_bg_2'><td colspan='4' class='center'>"; DBConnection::showAllReplicateDelay(); echo "</td></tr>"; } echo "<tr class='tab_bg_2'><td colspan='4' class='center'>"; echo "<input type='submit' name='update' class='submit' value=\"" . $LANG['buttons'][2] . "\">"; echo "</td></tr>"; echo "</table></div>"; echo "</form>"; }
/** * This method return GLPI status (same as status.php) * * @param $params array of option : ignored * @param $protocol the communication protocol used * * @return an response ready to be encode **/ static function methodStatus($params, $protocol) { global $DB; if (isset($params['help'])) { return array('help' => 'bool,optional'); } $resp = array(); $ok_master = true; $ok_slave = true; $ok = true; // Check slave server connection if (DBConnection::isDBSlaveActive()) { $DBslave = DBConnection::getDBSlaveConf(); if (is_array($DBslave->dbhost)) { $hosts = $DBslave->dbhost; } else { $hosts = array($DBslave->dbhost); } foreach ($hosts as $num => $name) { $diff = DBConnection::getReplicateDelay($num); if ($diff > 1000000000) { $resp['slavedb_' . $num] = "offline"; $ok_slave = false; } else { if ($diff) { $resp['slavedb_' . $num] = $diff; if ($diff > HOUR_TIMESTAMP) { $ok_slave = false; } } else { $resp['slavedb_' . $num] = "ok"; } } } } else { $resp['slavedb'] = "not configured"; } // Check main server connection if (DBConnection::establishDBConnection(false, true, false)) { $resp['maindb'] = "ok"; } else { $resp['slavedb'] = "offline"; $ok_master = false; } // Slave and master ok; $ok = $ok_slave && $ok_master; // Check session dir (usefull when NFS mounted)) if (is_dir(GLPI_SESSION_DIR) && is_writable(GLPI_SESSION_DIR)) { $resp['sessiondir'] = "ok"; } else { $resp['sessiondir'] = "not writable"; $ok = false; } // Reestablished DB connection if (($ok_master || $ok_slave) && DBConnection::establishDBConnection(false, false, false)) { // Check Auth connections $auth = new Auth(); $auth->getAuthMethods(); $ldap_methods = $auth->authtypes["ldap"]; if (count($ldap_methods)) { foreach ($ldap_methods as $method) { if ($method['is_active']) { if (AuthLdap::tryToConnectToServer($method, $method["rootdn"], Toolbox::decrypt($method["rootdn_passwd"], GLPIKEY))) { $resp['LDAP_' . $method['name']] = "ok"; } else { $resp['LDAP_' . $method['name']] = "offline"; $ok = false; } } } } } if ($ok) { $resp['glpi'] = "ok"; } else { $resp['glpi'] = "error"; } return $resp; }
function plugin_item_add_update_timezones_dbconnection(Config $parm) { $slaveDB = DBConnection::getDBSlaveConf(); if ($slaveDB) { $host = $slaveDB->dbhost; $user = $slaveDB->dbuser; $password = $slaveDB->dbpassword; $DBname = $slaveDB->dbdefault; unset($slaveDB); timezones_createSlaveConnectionFile($host, $user, $password, $DBname) or Toolbox::logInFile('php-errors', "timezones: Can't create config_db_slave.php\n"); } }