aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--contrib/conf_merge/README6
-rw-r--r--contrib/conf_merge/index.php40
-rw-r--r--contrib/conf_merge/merge.php159
3 files changed, 205 insertions, 0 deletions
diff --git a/contrib/conf_merge/README b/contrib/conf_merge/README
new file mode 100644
index 00000000000..3d027b7ad42
--- /dev/null
+++ b/contrib/conf_merge/README
@@ -0,0 +1,6 @@
+This is a PHP script for merging a new .dist file with your existing .conf file (trinitycore and trinityrealm)
+It should also work with mangos dist/conf files as well.
+
+It uses sessions so it is multi user safe, it adds any options that are removed to the bottom of the file,
+commented out, just in case it removes something it shouldn't,
+and, if you add all of your custom patch configs below "# Custom" they will be copied exactly as they are.
diff --git a/contrib/conf_merge/index.php b/contrib/conf_merge/index.php
new file mode 100644
index 00000000000..537937caf64
--- /dev/null
+++ b/contrib/conf_merge/index.php
@@ -0,0 +1,40 @@
+<?php
+/*
+ * Project Name: Config File Merge For Mangos/Trinity Server
+ * Date: 01.01.2010 inital version (0.0.1a)
+ * Author: Paradox
+ * Copyright: Paradox
+ * Email: iamparadox@netscape.net (paypal email)
+ * License: GNU General Public License v2(GPL)
+ */
+?>
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
+<FORM enctype="multipart/form-data" ACTION="merge.php" METHOD="POST">
+Dist File
+<br />
+<INPUT name="File1" TYPE="file">
+<br />
+Current Conf File
+<br />
+<INPUT name="File2" TYPE="file">
+<br />
+<INPUT TYPE=RADIO NAME="eol" VALUE="0" CHECKED >Win32 -
+<INPUT TYPE=RADIO NAME="eol" VALUE="1" >UNIX/Linux
+<br />
+<INPUT TYPE="submit" VALUE="Submit">
+<br />
+If you have any custom settings, such as from patches,
+<br />
+make sure they are at the bottom of the file following
+<br />
+this block (add it if it's not there)
+<br />
+###############################################################################
+<br />
+# Custom
+<br />
+###############################################################################
+<br />
+<br />
+
+</FORM>
diff --git a/contrib/conf_merge/merge.php b/contrib/conf_merge/merge.php
new file mode 100644
index 00000000000..6d8bedbaa08
--- /dev/null
+++ b/contrib/conf_merge/merge.php
@@ -0,0 +1,159 @@
+<?php
+/*
+ * Project Name: Config File Merge For Mangos/Trinity Server
+ * Date: 01.01.2010 inital version (0.0.1a)
+ * Author: Paradox
+ * Copyright: Paradox
+ * Email: iamparadox@netscape.net (paypal email)
+ * License: GNU General Public License v2(GPL)
+ */
+if (!empty($_FILES['File1']) && !empty($_FILES['File2']))
+{
+ session_id();
+ session_start();
+ $basedir = "merge";
+ $eol = "\r\n";
+ if ($_POST['eol'])
+ $eol = "\n";
+ else
+ $eol = "\r\n";
+ if (!file_exists($basedir))
+ mkdir($basedir);
+ if (!file_exists($basedir."/".session_id()))
+ mkdir($basedir."/".session_id());
+ $upload1 = $basedir."/".session_id()."/".basename($_FILES['File1']['name']);
+ $upload2 = $basedir."/".session_id()."/".basename($_FILES['File2']['name']);
+ $newconfig = $basedir."/".session_id()."/trinitycore.conf.merged";
+ $out_file = fopen($newconfig, w);
+ $success = false;
+ if (move_uploaded_file($_FILES['File1']['tmp_name'], $upload1))
+ {
+ $success = true;
+ }
+ else
+ {
+ $success = false;
+ }
+ if (move_uploaded_file($_FILES['File2']['tmp_name'], $upload2))
+ {
+ $success = true;
+ }
+ else
+ {
+ $success = false;
+ }
+
+ if ($success)
+ {
+ $custom_found = false;
+ $in_file1 = fopen($upload1,r);
+ $in_file2 = fopen($upload2,r);
+ $array1 = array();
+ $array2 = array();
+ $line = trim(fgets($in_file1));
+ while (!feof($in_file1))
+ {
+ if ((substr($line,0,1) != '#' && substr($line,0,1) != ''))
+ {
+ list($key, $val) = explode("=",$line);
+ $key = trim($key);
+ $val = trim($val);
+ $array1[$key] = $val;
+ }
+ $line = trim(fgets($in_file1));
+ }
+ $line = trim(fgets($in_file2));
+ while (!feof($in_file2) && !$custom_found)
+ {
+ if (substr($line,0,1) != '#' && substr($line,0,1) != '')
+ {
+ list($key, $val) = explode("=",$line);
+ $key = trim($key);
+ $val = trim($val);
+ $array2[$key] = $val;
+ }
+ if (strtolower($line) == "# custom")
+ $custom_found = true;
+ else
+ $line = trim(fgets($in_file2));
+ }
+ fclose($in_file1);
+ foreach($array2 as $k => $v)
+ {
+ if (array_key_exists($k, $array1))
+ {
+ $array1[$k] = $v;
+ unset($array2[$k]);
+ }
+ }
+ $in_file1 = fopen($upload1,r);
+ $line = trim(fgets($in_file1));
+ while (!feof($in_file1))
+ {
+ if (substr($line,0,1) != '#' && substr($line,0,1) != '')
+ {
+ $array = array();
+ while (substr($line,0,1) != '#' && substr($line,0,1) != '')
+ {
+ list($key, $val) = explode("=",$line);
+ $key = trim($key);
+ $val = trim($val);
+ $array[$key] = $val;
+ $line = trim(fgets($in_file1));
+ }
+ foreach($array as $k => $v)
+ {
+ if (array_key_exists($k, $array1))
+ fwrite($out_file, $k."=".$array1[$k].$eol);
+ else
+ continue;
+ }
+ unset($array);
+ if (!feof($in_file1))
+ fwrite($out_file, $line.$eol);
+ }
+ else
+ fwrite($out_file, $line.$eol);
+ $line = trim(fgets($in_file1));
+ }
+ if ($custom_found)
+ {
+ fwrite($out_file, $eol);
+ fwrite($out_file, "###############################################################################".$eol);
+ fwrite($out_file, "# Custom".$eol);
+ $line = trim(fgets($in_file2));
+ while (!feof($in_file2))
+ {
+ fwrite($out_file, $line.$eol);
+ $line = trim(fgets($in_file2));
+ }
+ }
+ $first = true;
+ foreach($array2 as $k => $v)
+ {
+ if ($first)
+ {
+ fwrite($out_file, $eol);
+ fwrite($out_file, "###############################################################################".$eol);
+ fwrite($out_file, "# The Following values were removed from the config.".$eol);
+ $first = false;
+ }
+ fwrite($out_file, "# ".$k."=".$v.$eol);
+ }
+ unset($array1);
+ unset($array2);
+ fclose($in_file1);
+ fclose($in_file2);
+ fclose($out_file);
+ unlink($upload1);
+ unlink($upload2);
+
+ echo "Process done";
+ echo "<br /><a href=".$newconfig.">Click here to retrieve your merged conf</a>";
+ }
+}
+else
+{
+ echo "An error has occurred";
+}
+?>