From 9adcf583066a327f7386f80aa2e52638522c1c96 Mon Sep 17 00:00:00 2001
From: tbrehm <t.brehm@ispconfig.org>
Date: Tue, 27 Oct 2009 13:17:11 -0400
Subject: [PATCH] Added: FS#687 - Add a replication and mirroring mode for server settings 

---
 interface/web/sites/form/ftp_user.tform.php            |    2 
 interface/web/dns/form/dns_soa.tform.php               |    2 
 interface/web/mail/form/mail_transport.tform.php       |    2 
 interface/web/admin/form/server.tform.php              |    6 +
 interface/web/mail/form/mail_domain.tform.php          |    2 
 interface/web/admin/templates/server_edit_services.htm |  134 ++++++++++++++------------
 interface/web/sites/form/cron.tform.php                |    2 
 interface/web/mail/form/mail_get.tform.php             |    2 
 interface/web/mail/form/mail_blacklist.tform.php       |    2 
 interface/web/mail/form/mail_content_filter.tform.php  |    2 
 interface/web/sites/form/web_aliasdomain.tform.php     |    2 
 server/lib/classes/modules.inc.php                     |    7 +
 interface/web/mail/form/spamfilter_whitelist.tform.php |    2 
 server/server.php                                      |   12 ++
 interface/web/mail/form/spamfilter_users.tform.php     |    2 
 interface/web/sites/form/database.tform.php            |    2 
 interface/web/admin/server_edit.php                    |   37 +++++++
 interface/web/sites/form/shell_user.tform.php          |    2 
 interface/web/sites/form/web_subdomain.tform.php       |    2 
 interface/web/admin/lib/lang/en_server.lng             |   22 ++--
 interface/web/mail/form/spamfilter_blacklist.tform.php |    2 
 interface/web/sites/form/web_domain.tform.php          |    2 
 22 files changed, 155 insertions(+), 95 deletions(-)

diff --git a/interface/web/admin/form/server.tform.php b/interface/web/admin/form/server.tform.php
index 87b1c18..20947c8 100644
--- a/interface/web/admin/form/server.tform.php
+++ b/interface/web/admin/form/server.tform.php
@@ -102,6 +102,12 @@
 			'default'	=> '0',
 			'value'		=> array(0 => 0,1 => 1)
 		),
+		'mirror_server_id' => array (
+			'datatype'	=> 'INTEGER',
+			'formtype'	=> 'TEXT',
+			'default'	=> '',
+			'value'		=> ''
+		),
 		/*
 		'update' => array (
 			'datatype'	=> 'INTEGER',
diff --git a/interface/web/admin/lib/lang/en_server.lng b/interface/web/admin/lib/lang/en_server.lng
index dcd498b..dcd46c5 100644
--- a/interface/web/admin/lib/lang/en_server.lng
+++ b/interface/web/admin/lib/lang/en_server.lng
@@ -1,11 +1,13 @@
-<?php
-$wb["config_txt"] = 'config';
-$wb["server_name_txt"] = 'Servername';
-$wb["mail_server_txt"] = 'Mailserver';
-$wb["web_server_txt"] = 'Webserver';
-$wb["dns_server_txt"] = 'DNS-Server';
-$wb["file_server_txt"] = 'Fileserver';
-$wb["db_server_txt"] = 'DB-Server';
-$wb["vserver_server_txt"] = 'VServer-Server';
-$wb["active_txt"] = 'Active';
+<?php
+$wb["config_txt"] = 'config';
+$wb["server_name_txt"] = 'Servername';
+$wb["mail_server_txt"] = 'Mailserver';
+$wb["web_server_txt"] = 'Webserver';
+$wb["dns_server_txt"] = 'DNS-Server';
+$wb["file_server_txt"] = 'Fileserver';
+$wb["db_server_txt"] = 'DB-Server';
+$wb["vserver_server_txt"] = 'VServer-Server';
+$wb["active_txt"] = 'Active';
+$wb["mirror_server_id_txt"] = 'Is mirror of Server';
+$wb["- None -"] = '- None -';
 ?>
\ No newline at end of file
diff --git a/interface/web/admin/server_edit.php b/interface/web/admin/server_edit.php
index ea8dd89..a132af2 100644
--- a/interface/web/admin/server_edit.php
+++ b/interface/web/admin/server_edit.php
@@ -46,8 +46,41 @@
 
 // Loading classes
 $app->uses('tpl,tform,tform_actions');
+$app->load('tform_actions');
 
-// let tform_actions handle the page
-$app->tform_actions->onLoad();
+class page_action extends tform_actions {
+
+	function onShowEnd() {
+		global $app, $conf;
+		
+		// Getting Servers 
+		$sql = "SELECT server_id,server_name FROM server WHERE 1 ORDER BY server_name";
+		$mirror_servers = $app->db->queryAllRecords($sql);
+		$mirror_server_select = '<option value="0">'.$app->tform->lng('- None -').'</option>';
+		if(is_array($mirror_servers)) {
+			foreach( $mirror_servers as $mirror_server) {
+				$selected = ($mirror_server["server_id"] == $this->dataRecord['mirror_server_id'])?'SELECTED':'';
+				$mirror_server_select .= "<option value='$mirror_server[server_id]' $selected>$mirror_server[server_name]</option>\r\n";
+			}
+		}
+		$app->tpl->setVar("mirror_server_id",$mirror_server_select);
+		
+		parent::onShowEnd();
+	}
+	
+	function onSubmit() {
+		global $app;
+		
+		//* We do not want to mirror the the server itself
+		if($this->id == $this->dataRecord['mirror_server_id']) $this->dataRecord['mirror_server_id'] = 0;
+		
+		parent::onSubmit();
+		
+	}
+
+}
+
+$page = new page_action;
+$page->onLoad();
 
 ?>
\ No newline at end of file
diff --git a/interface/web/admin/templates/server_edit_services.htm b/interface/web/admin/templates/server_edit_services.htm
index c5a3be6..8eca290 100644
--- a/interface/web/admin/templates/server_edit_services.htm
+++ b/interface/web/admin/templates/server_edit_services.htm
@@ -1,64 +1,70 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_server">
-  
-  <div class="pnl_formsarea">
-    <fieldset class="inlineLabels">
-      <div class="ctrlHolder">
-      	<label for="server_name">{tmpl_var name='server_name_txt'}</label>
-        <input name="server_name" id="server_name" value="{tmpl_var name='server_name'}" size="30" maxlength="255" type="text" class="textInput" />
-			</div>
-      <div class="ctrlHolder">
-				<p class="label">{tmpl_var name='mail_server_txt'}</p>
-					<div class="multiField">
-						{tmpl_var name='mail_server'}
-					</div>
-			</div>
-      <div class="ctrlHolder">
-				<p class="label">{tmpl_var name='web_server_txt'}</p>
-					<div class="multiField">
-						{tmpl_var name='web_server'}
-					</div>
-			</div>
-      <div class="ctrlHolder">
-				<p class="label">{tmpl_var name='dns_server_txt'}</p>
-					<div class="multiField">
-						{tmpl_var name='dns_server'}
-					</div>
-			</div>
-      <div class="ctrlHolder">
-				<p class="label">{tmpl_var name='file_server_txt'}</p>
-					<div class="multiField">
-						{tmpl_var name='file_server'}
-					</div>
-			</div>
-      <div class="ctrlHolder">
-				<p class="label">{tmpl_var name='db_server_txt'}</p>
-					<div class="multiField">
-						{tmpl_var name='db_server'}
-					</div>
-			</div>
-      <div class="ctrlHolder">
-				<p class="label">{tmpl_var name='vserver_server_txt'}</p>
-					<div class="multiField">
-						{tmpl_var name='vserver_server'}
-					</div>
-			</div>
-      <div class="ctrlHolder">
-      	<label for="active">{tmpl_var name='active_txt'}</label>
-        <select name="active" id="active" class="selectInput formLengthBool">
-					{tmpl_var name='active'}
-				</select>
-      </div>
-    </fieldset>
-
-    <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
-    <div class="buttonHolder buttons">
-      <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','admin/server_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
-      <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('admin/server_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
-    </div>
-  </div>
-  
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_server">
+  
+  <div class="pnl_formsarea">
+    <fieldset class="inlineLabels">
+      <div class="ctrlHolder">
+      	<label for="server_name">{tmpl_var name='server_name_txt'}</label>
+        <input name="server_name" id="server_name" value="{tmpl_var name='server_name'}" size="30" maxlength="255" type="text" class="textInput" />
+			</div>
+      <div class="ctrlHolder">
+				<p class="label">{tmpl_var name='mail_server_txt'}</p>
+					<div class="multiField">
+						{tmpl_var name='mail_server'}
+					</div>
+			</div>
+      <div class="ctrlHolder">
+				<p class="label">{tmpl_var name='web_server_txt'}</p>
+					<div class="multiField">
+						{tmpl_var name='web_server'}
+					</div>
+			</div>
+      <div class="ctrlHolder">
+				<p class="label">{tmpl_var name='dns_server_txt'}</p>
+					<div class="multiField">
+						{tmpl_var name='dns_server'}
+					</div>
+			</div>
+      <div class="ctrlHolder">
+				<p class="label">{tmpl_var name='file_server_txt'}</p>
+					<div class="multiField">
+						{tmpl_var name='file_server'}
+					</div>
+			</div>
+      <div class="ctrlHolder">
+				<p class="label">{tmpl_var name='db_server_txt'}</p>
+					<div class="multiField">
+						{tmpl_var name='db_server'}
+					</div>
+			</div>
+      <div class="ctrlHolder">
+				<p class="label">{tmpl_var name='vserver_server_txt'}</p>
+					<div class="multiField">
+						{tmpl_var name='vserver_server'}
+					</div>
+			</div>
+	  <div class="ctrlHolder">
+		<label for="mirror_server_id">{tmpl_var name='mirror_server_id_txt'}</label>
+        <select name="mirror_server_id" id="server_id" class="selectInput">
+		  {tmpl_var name='mirror_server_id'}
+		</select>
+      </div>
+      <div class="ctrlHolder">
+      	<label for="active">{tmpl_var name='active_txt'}</label>
+        <select name="active" id="active" class="selectInput formLengthBool">
+					{tmpl_var name='active'}
+				</select>
+      </div>
+    </fieldset>
+
+    <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+    <div class="buttonHolder buttons">
+      <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','admin/server_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+      <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('admin/server_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+    </div>
+  </div>
+  
+</div>
diff --git a/interface/web/dns/form/dns_soa.tform.php b/interface/web/dns/form/dns_soa.tform.php
index 1a688ea..adbd628 100644
--- a/interface/web/dns/form/dns_soa.tform.php
+++ b/interface/web/dns/form/dns_soa.tform.php
@@ -62,7 +62,7 @@
 			'datatype'	=> 'INTEGER',
 			'formtype'	=> 'SELECT',
 			'datasource'	=> array ( 	'type'	=> 'SQL',
-										'querystring' => 'SELECT server_id,server_name FROM server WHERE dns_server = 1 AND {AUTHSQL} ORDER BY server_name',
+										'querystring' => 'SELECT server_id,server_name FROM server WHERE mirror_server_id = 0 AND dns_server = 1 AND {AUTHSQL} ORDER BY server_name',
 										'keyfield'=> 'server_id',
 										'valuefield'=> 'server_name'
 									 ),
diff --git a/interface/web/mail/form/mail_blacklist.tform.php b/interface/web/mail/form/mail_blacklist.tform.php
index a349680..df63f7f 100644
--- a/interface/web/mail/form/mail_blacklist.tform.php
+++ b/interface/web/mail/form/mail_blacklist.tform.php
@@ -63,7 +63,7 @@
 			'formtype'	=> 'SELECT',
 			'default'	=> '',
 			'datasource'	=> array ( 	'type'	=> 'SQL',
-										'querystring' => 'SELECT server_id,server_name FROM server WHERE {AUTHSQL} ORDER BY server_name',
+										'querystring' => 'SELECT server_id,server_name FROM server WHERE mirror_server_id = 0 AND {AUTHSQL} ORDER BY server_name',
 										'keyfield'=> 'server_id',
 										'valuefield'=> 'server_name'
 									 ),
diff --git a/interface/web/mail/form/mail_content_filter.tform.php b/interface/web/mail/form/mail_content_filter.tform.php
index c41def6..a838e0a 100644
--- a/interface/web/mail/form/mail_content_filter.tform.php
+++ b/interface/web/mail/form/mail_content_filter.tform.php
@@ -63,7 +63,7 @@
 			'formtype'	=> 'SELECT',
 			'default'	=> '',
 			'datasource'	=> array ( 	'type'	=> 'SQL',
-										'querystring' => 'SELECT server_id,server_name FROM server WHERE {AUTHSQL} ORDER BY server_name',
+										'querystring' => 'SELECT server_id,server_name FROM server WHERE mirror_server_id = 0 AND {AUTHSQL} ORDER BY server_name',
 										'keyfield'=> 'server_id',
 										'valuefield'=> 'server_name'
 									 ),
diff --git a/interface/web/mail/form/mail_domain.tform.php b/interface/web/mail/form/mail_domain.tform.php
index 69cc478..4ccd184 100644
--- a/interface/web/mail/form/mail_domain.tform.php
+++ b/interface/web/mail/form/mail_domain.tform.php
@@ -63,7 +63,7 @@
 			'formtype'	=> 'SELECT',
 			'default'	=> '',
 			'datasource'	=> array ( 	'type'	=> 'SQL',
-										'querystring' => 'SELECT server_id,server_name FROM server WHERE mail_server = 1 AND {AUTHSQL} ORDER BY server_name',
+										'querystring' => 'SELECT server_id,server_name FROM server WHERE mail_server = 1 AND mirror_server_id = 0 AND {AUTHSQL} ORDER BY server_name',
 										'keyfield'=> 'server_id',
 										'valuefield'=> 'server_name'
 									 ),
diff --git a/interface/web/mail/form/mail_get.tform.php b/interface/web/mail/form/mail_get.tform.php
index 3de9b10..634094d 100644
--- a/interface/web/mail/form/mail_get.tform.php
+++ b/interface/web/mail/form/mail_get.tform.php
@@ -63,7 +63,7 @@
 			'formtype'	=> 'SELECT',
 			'default'	=> '',
 			'datasource'	=> array ( 	'type'	=> 'SQL',
-										'querystring' => 'SELECT server_id,server_name FROM server WHERE {AUTHSQL} ORDER BY server_name',
+										'querystring' => 'SELECT server_id,server_name FROM server WHERE mirror_server_id = 0 AND {AUTHSQL} ORDER BY server_name',
 										'keyfield'=> 'server_id',
 										'valuefield'=> 'server_name'
 									 ),
diff --git a/interface/web/mail/form/mail_transport.tform.php b/interface/web/mail/form/mail_transport.tform.php
index 12dbdac..4930099 100644
--- a/interface/web/mail/form/mail_transport.tform.php
+++ b/interface/web/mail/form/mail_transport.tform.php
@@ -63,7 +63,7 @@
 			'formtype'	=> 'SELECT',
 			'default'	=> '',
 			'datasource'	=> array ( 	'type'	=> 'SQL',
-										'querystring' => 'SELECT server_id,server_name FROM server WHERE {AUTHSQL} ORDER BY server_name',
+										'querystring' => 'SELECT server_id,server_name FROM server WHERE mirror_server_id = 0 AND {AUTHSQL} ORDER BY server_name',
 										'keyfield'=> 'server_id',
 										'valuefield'=> 'server_name'
 									 ),
diff --git a/interface/web/mail/form/spamfilter_blacklist.tform.php b/interface/web/mail/form/spamfilter_blacklist.tform.php
index af22089..a51addb 100644
--- a/interface/web/mail/form/spamfilter_blacklist.tform.php
+++ b/interface/web/mail/form/spamfilter_blacklist.tform.php
@@ -63,7 +63,7 @@
 			'formtype'	=> 'SELECT',
 			'default'	=> '',
 			'datasource'	=> array ( 	'type'	=> 'SQL',
-										'querystring' => 'SELECT server_id,server_name FROM server WHERE {AUTHSQL} ORDER BY server_name',
+										'querystring' => 'SELECT server_id,server_name FROM server WHERE mirror_server_id = 0 AND {AUTHSQL} ORDER BY server_name',
 										'keyfield'=> 'server_id',
 										'valuefield'=> 'server_name'
 									 ),
diff --git a/interface/web/mail/form/spamfilter_users.tform.php b/interface/web/mail/form/spamfilter_users.tform.php
index fd9e456..c3fd0fd 100644
--- a/interface/web/mail/form/spamfilter_users.tform.php
+++ b/interface/web/mail/form/spamfilter_users.tform.php
@@ -63,7 +63,7 @@
 			'formtype'	=> 'SELECT',
 			'default'	=> '',
 			'datasource'	=> array ( 	'type'	=> 'SQL',
-										'querystring' => 'SELECT server_id,server_name FROM server WHERE {AUTHSQL} ORDER BY server_name',
+										'querystring' => 'SELECT server_id,server_name FROM server WHERE mirror_server_id = 0 AND {AUTHSQL} ORDER BY server_name',
 										'keyfield'=> 'server_id',
 										'valuefield'=> 'server_name'
 									 ),
diff --git a/interface/web/mail/form/spamfilter_whitelist.tform.php b/interface/web/mail/form/spamfilter_whitelist.tform.php
index 0273419..4d476a7 100644
--- a/interface/web/mail/form/spamfilter_whitelist.tform.php
+++ b/interface/web/mail/form/spamfilter_whitelist.tform.php
@@ -63,7 +63,7 @@
 			'formtype'	=> 'SELECT',
 			'default'	=> '',
 			'datasource'	=> array ( 	'type'	=> 'SQL',
-										'querystring' => 'SELECT server_id,server_name FROM server WHERE {AUTHSQL} ORDER BY server_name',
+										'querystring' => 'SELECT server_id,server_name FROM server WHERE mirror_server_id = 0 AND {AUTHSQL} ORDER BY server_name',
 										'keyfield'=> 'server_id',
 										'valuefield'=> 'server_name'
 									 ),
diff --git a/interface/web/sites/form/cron.tform.php b/interface/web/sites/form/cron.tform.php
index 4f9f8dd..fc63548 100644
--- a/interface/web/sites/form/cron.tform.php
+++ b/interface/web/sites/form/cron.tform.php
@@ -62,7 +62,7 @@
 			'datatype'	=> 'INTEGER',
 			'formtype'	=> 'SELECT',
 			'datasource'	=> array ( 	'type'	=> 'SQL',
-										'querystring' => 'SELECT server_id,server_name FROM server WHERE web_server = 1 AND {AUTHSQL} ORDER BY server_name',
+										'querystring' => 'SELECT server_id,server_name FROM server WHERE mirror_server_id = 0 AND web_server = 1 AND {AUTHSQL} ORDER BY server_name',
 										'keyfield'=> 'server_id',
 										'valuefield'=> 'server_name'
 									 ),
diff --git a/interface/web/sites/form/database.tform.php b/interface/web/sites/form/database.tform.php
index 3a7a947..be6998a 100644
--- a/interface/web/sites/form/database.tform.php
+++ b/interface/web/sites/form/database.tform.php
@@ -63,7 +63,7 @@
 			'formtype'	=> 'SELECT',
 			'default'	=> '',
 			'datasource'	=> array ( 	'type'	=> 'SQL',
-										'querystring' => 'SELECT server_id,server_name FROM server WHERE {AUTHSQL} AND db_server = 1 ORDER BY server_name',
+										'querystring' => 'SELECT server_id,server_name FROM server WHERE mirror_server_id = 0 AND {AUTHSQL} AND db_server = 1 ORDER BY server_name',
 										'keyfield'=> 'server_id',
 										'valuefield'=> 'server_name'
 									 ),
diff --git a/interface/web/sites/form/ftp_user.tform.php b/interface/web/sites/form/ftp_user.tform.php
index add5c72..6077dee 100644
--- a/interface/web/sites/form/ftp_user.tform.php
+++ b/interface/web/sites/form/ftp_user.tform.php
@@ -63,7 +63,7 @@
 			'formtype'	=> 'SELECT',
 			'default'	=> '',
 			'datasource'	=> array ( 	'type'	=> 'SQL',
-										'querystring' => 'SELECT server_id,server_name FROM server WHERE {AUTHSQL} ORDER BY server_name',
+										'querystring' => 'SELECT server_id,server_name FROM server WHERE mirror_server_id = 0 AND {AUTHSQL} ORDER BY server_name',
 										'keyfield'=> 'server_id',
 										'valuefield'=> 'server_name'
 									 ),
diff --git a/interface/web/sites/form/shell_user.tform.php b/interface/web/sites/form/shell_user.tform.php
index 0f692e3..0b009bb 100644
--- a/interface/web/sites/form/shell_user.tform.php
+++ b/interface/web/sites/form/shell_user.tform.php
@@ -63,7 +63,7 @@
 			'formtype'	=> 'SELECT',
 			'default'	=> '',
 			'datasource'	=> array ( 	'type'	=> 'SQL',
-										'querystring' => 'SELECT server_id,server_name FROM server WHERE {AUTHSQL} ORDER BY server_name',
+										'querystring' => 'SELECT server_id,server_name FROM server WHERE mirror_server_id = 0 AND {AUTHSQL} ORDER BY server_name',
 										'keyfield'=> 'server_id',
 										'valuefield'=> 'server_name'
 									 ),
diff --git a/interface/web/sites/form/web_aliasdomain.tform.php b/interface/web/sites/form/web_aliasdomain.tform.php
index f69e16d..815a373 100644
--- a/interface/web/sites/form/web_aliasdomain.tform.php
+++ b/interface/web/sites/form/web_aliasdomain.tform.php
@@ -63,7 +63,7 @@
 			'formtype'	=> 'SELECT',
 			'default'	=> '',
 			'datasource'	=> array ( 	'type'	=> 'SQL',
-										'querystring' => 'SELECT server_id,server_name FROM server WHERE {AUTHSQL} ORDER BY server_name',
+										'querystring' => 'SELECT server_id,server_name FROM server WHERE mirror_server_id = 0 AND {AUTHSQL} ORDER BY server_name',
 										'keyfield'=> 'server_id',
 										'valuefield'=> 'server_name'
 									 ),
diff --git a/interface/web/sites/form/web_domain.tform.php b/interface/web/sites/form/web_domain.tform.php
index eadc2d7..b1da593 100644
--- a/interface/web/sites/form/web_domain.tform.php
+++ b/interface/web/sites/form/web_domain.tform.php
@@ -72,7 +72,7 @@
 			'formtype'	=> 'SELECT',
 			'default'	=> '',
 			'datasource'	=> array ( 	'type'	=> 'SQL',
-										'querystring' => 'SELECT server_id,server_name FROM server WHERE web_server = 1 AND {AUTHSQL} ORDER BY server_name',
+										'querystring' => 'SELECT server_id,server_name FROM server WHERE mirror_server_id = 0 AND web_server = 1 AND {AUTHSQL} ORDER BY server_name',
 										'keyfield'=> 'server_id',
 										'valuefield'=> 'server_name'
 									 ),
diff --git a/interface/web/sites/form/web_subdomain.tform.php b/interface/web/sites/form/web_subdomain.tform.php
index 271e9a1..cc209ff 100644
--- a/interface/web/sites/form/web_subdomain.tform.php
+++ b/interface/web/sites/form/web_subdomain.tform.php
@@ -63,7 +63,7 @@
 			'formtype'	=> 'SELECT',
 			'default'	=> '',
 			'datasource'	=> array ( 	'type'	=> 'SQL',
-										'querystring' => 'SELECT server_id,server_name FROM server WHERE {AUTHSQL} ORDER BY server_name',
+										'querystring' => 'SELECT server_id,server_name FROM server WHERE mirror_server_id = 0 AND {AUTHSQL} ORDER BY server_name',
 										'keyfield'=> 'server_id',
 										'valuefield'=> 'server_name'
 									 ),
diff --git a/server/lib/classes/modules.inc.php b/server/lib/classes/modules.inc.php
index 8df5b64..56fd408 100644
--- a/server/lib/classes/modules.inc.php
+++ b/server/lib/classes/modules.inc.php
@@ -84,7 +84,12 @@
 		
 		//* If its a multiserver setup
 		if($app->db->dbHost != $app->dbmaster->dbHost) {
-			$sql = "SELECT * FROM sys_datalog WHERE datalog_id > ".$conf['last_datalog_id']." AND (server_id = ".$conf["server_id"]." OR server_id = 0) ORDER BY datalog_id";
+			if($conf["mirror_server_id"] > 0) {
+				$sql = "SELECT * FROM sys_datalog WHERE datalog_id > ".$conf['last_datalog_id']." AND (server_id = ".$conf["server_id"]." OR server_id = ".$conf["mirror_server_id"]." OR server_id = 0) ORDER BY datalog_id";
+			} else {
+				$sql = "SELECT * FROM sys_datalog WHERE datalog_id > ".$conf['last_datalog_id']." AND (server_id = ".$conf["server_id"]." OR server_id = 0) ORDER BY datalog_id";
+			}
+			
 			$records = $app->dbmaster->queryAllRecords($sql);
 			foreach($records as $d) {
 				
diff --git a/server/server.php b/server/server.php
index 97604e2..61a809f 100644
--- a/server/server.php
+++ b/server/server.php
@@ -53,14 +53,17 @@
 //* Load the server configuration
 if($app->dbmaster->connect()) {
 	// get the dalaog_id of the last performed record
-	$server_db_record = $app->dbmaster->queryOneRecord("SELECT updated, config FROM server WHERE server_id = ".$conf["server_id"]);
+	$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"]);
+	
+	unset($server_db_record);
 }
 
 
@@ -89,7 +92,12 @@
 if($app->db->connect() && $app->dbmaster->connect()) {
 
 	// Check if there is anything to update
-	$tmp_rec = $app->dbmaster->queryOneRecord("SELECT count(server_id) as number from sys_datalog WHERE datalog_id > ".$conf['last_datalog_id']." AND (server_id = ".$conf["server_id"]." OR server_id = 0)");
+	if($conf["mirror_server_id"] > 0) {
+		$tmp_rec = $app->dbmaster->queryOneRecord("SELECT count(server_id) as number from sys_datalog WHERE datalog_id > ".$conf['last_datalog_id']." AND (server_id = ".$conf["server_id"]." OR server_id = ".$conf["mirror_server_id"]." OR server_id = 0)");
+	} else {
+		$tmp_rec = $app->dbmaster->queryOneRecord("SELECT count(server_id) as number from sys_datalog WHERE datalog_id > ".$conf['last_datalog_id']." AND (server_id = ".$conf["server_id"]." OR server_id = 0)");
+	}
+	
 	$tmp_num_records = $tmp_rec["number"];
 	unset($tmp_rec);
 

--
Gitblit v1.9.1