diff options
author | Paradox <none@none> | 2010-01-02 19:19:42 -0500 |
---|---|---|
committer | Paradox <none@none> | 2010-01-02 19:19:42 -0500 |
commit | 073235ef1ba32ec1151812f4c34c72c6a3bbe6f0 (patch) | |
tree | e7a2f0e660690376c4f2f79ab1e03e613df12419 /contrib/conf_merge | |
parent | 0e18bc37c2e391baf540d78126d8f05ec9573f63 (diff) |
PHP script for merging new changes with your existing conf file automatically.
--HG--
branch : trunk
Diffstat (limited to 'contrib/conf_merge')
-rw-r--r-- | contrib/conf_merge/README | 6 | ||||
-rw-r--r-- | contrib/conf_merge/index.php | 40 | ||||
-rw-r--r-- | contrib/conf_merge/merge.php | 159 |
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"; +} +?> |