From 039b461dea2948c53e25a57f77246e2cc1ed1666 Mon Sep 17 00:00:00 2001
From: vogelor <vogelor@ispconfig3>
Date: Tue, 29 Mar 2011 08:14:28 -0400
Subject: [PATCH] rescue-module: now rescue of mysql works fine, even if the admin wanted to NOT rescue mysql
---
server/server.php | 51 +++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 43 insertions(+), 8 deletions(-)
diff --git a/server/server.php b/server/server.php
index 6a3499f..c171d48 100644
--- a/server/server.php
+++ b/server/server.php
@@ -1,7 +1,7 @@
<?php
/*
- Copyright (c) 2007, Till Brehm, projektfarm Gmbh
+ Copyright (c) 2007-2011, Till Brehm, projektfarm Gmbh
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
@@ -54,33 +54,68 @@
* Try to Load the server configuration from the master-db
*/
if ($app->dbmaster->connect()) {
- // get the dalaog_id of the last performed record
$server_db_record = $app->dbmaster->queryOneRecord("SELECT * FROM server WHERE server_id = " . $conf['server_id']);
+
$conf['last_datalog_id'] = (int) $server_db_record['updated'];
$conf['mirror_server_id'] = (int) $server_db_record['mirror_server_id'];
+
// Load the ini_parser
$app->uses('ini_parser');
+
// Get server configuration
$conf['serverconfig'] = $app->ini_parser->parse_ini_string(stripslashes($server_db_record['config']));
+
// Set the loglevel
$conf['log_priority'] = intval($conf['serverconfig']['server']['loglevel']);
+ // we do not need this variable anymore
unset($server_db_record);
+
+ /*
+ * Save the rescue-config, maybe we need it (because the database is down)
+ */
+ $tmp['serverconfig']['server']['loglevel'] = $conf['log_priority'];
+ $tmp['serverconfig']['rescue'] = $conf['serverconfig']['rescue'];
+ file_put_contents(dirname(__FILE__) . "/temp/rescue_module_serverconfig.ser.txt", serialize($tmp));
+ unset($tmp);
+
+ // protect the file
+ chmod(dirname(__FILE__) . "/temp/rescue_module_serverconfig.ser.txt", 0600);
+
} else {
/*
* The master-db is not available.
* Problem: because we need to start the rescue-module (to rescue the DB if this IS the
* server, the master-db is running at) we have to initialize some config...
*/
- $conf['last_datalog_id'] = intval('9223372036854775807'); // maxint at 32 and 64 bit systems
- $conf['mirror_server_id'] = 0; // no mirror
- // Set the loglevel to warning
- $conf['log_priority'] = LOGLEVEL_WARN;
+
+ /*
+ * If there is a temp-file with the data we could get from the database, then we use it
+ */
+ $tmp = array();
+ if (file_exists(dirname(__FILE__) . "/temp/rescue_module_serverconfig.ser.txt")){
+ $tmp = unserialize(file_get_contents(dirname(__FILE__) . "/temp/rescue_module_serverconfig.ser.txt"));
+ }
+
+ // maxint at 32 and 64 bit systems
+ $conf['last_datalog_id'] = intval('9223372036854775807');
+
+ // no mirror
+ $conf['mirror_server_id'] = 0;
+
+ // Set the loglevel
+ $conf['log_priority'] = (isset($tmp['serverconfig']['server']['loglevel']))? $tmp['serverconfig']['server']['loglevel'] : LOGLEVEL_ERROR;
/*
* Set the configuration to rescue the database
*/
- $conf['serverconfig']['rescue']['try_rescue'] = 'y';
- $conf['serverconfig']['rescue']['do_not_try_rescue_mysql'] = 'n';
+ if (isset($tmp['serverconfig']['rescue'])){
+ $conf['serverconfig']['rescue'] = $tmp['serverconfig']['rescue'];
+ }
+ else{
+ $conf['serverconfig']['rescue']['try_rescue'] = 'n';
+ }
+ // we do not need this variable anymore
+ unset($tmp);
}
--
Gitblit v1.9.1