mirror of
https://github.com/mail-in-a-box/mailinabox.git
synced 2025-04-03 00:07:05 +00:00
134 lines
3.2 KiB
PHP
134 lines
3.2 KiB
PHP
<?php
|
|
#####
|
|
##### This file is part of Mail-in-a-Box-LDAP which is released under the
|
|
##### terms of the GNU Affero General Public License as published by the
|
|
##### Free Software Foundation, either version 3 of the License, or (at
|
|
##### your option) any later version. See file LICENSE or go to
|
|
##### https://github.com/downtownallday/mailinabox-ldap for full license
|
|
##### details.
|
|
#####
|
|
|
|
|
|
#
|
|
# Edit a Nextcloud or other config.php file
|
|
#
|
|
# Specify the path to config.php as the first argument.
|
|
#
|
|
# Specify the name of the config variable as the second argument.
|
|
#
|
|
# Subsequent arguments specify the name and value pairs of elements to
|
|
# change or add. Each element of the pair are separate
|
|
# arguments. Arrays should be specified as "array(...)".
|
|
#
|
|
# Names may be preceeded with '+' to indicate that the value should be
|
|
# added, but not modify an existing value if it already exists.
|
|
#
|
|
# For example, to set dbhost to 'localhost' and trusted_domains to an
|
|
# array of values:
|
|
#
|
|
# php editconfig.php /usr/local/lib/roundcubemail/config/config.inc.php config dbhost localhost trusted_domains "array(0=>'localhost',1=>'127.0.0.1')"
|
|
#
|
|
# The original file is MODIFIED in-place!!!
|
|
#
|
|
|
|
require($argv[1]);
|
|
$config_var_name = $argv[2];
|
|
$configref = &$$config_var_name;
|
|
|
|
$dry_run = false;
|
|
|
|
function print_array($v, $level, $fp) {
|
|
fwrite($fp, "array (\n");
|
|
|
|
if ((array) $v !== $v) {
|
|
foreach($v as $kv) {
|
|
fwrite($fp, $kv . ",");
|
|
}
|
|
}
|
|
else {
|
|
foreach($v as $key => $kv) {
|
|
fwrite($fp,str_repeat(' ', $level));
|
|
if (is_string($key)) {
|
|
fwrite($fp,"'" . $key . "' => ");
|
|
}
|
|
else {
|
|
fwrite($fp,$key . " => ");
|
|
}
|
|
|
|
if (is_array($kv)) {
|
|
print_array($kv, $level+1, $fp);
|
|
}
|
|
else if (is_string($kv)) {
|
|
fwrite($fp,"'" . $kv . "',\n");
|
|
}
|
|
else if (is_bool($kv)) {
|
|
fwrite($fp, ($kv ? 'true' : 'false') . ",\n");
|
|
}
|
|
else {
|
|
fwrite($fp,$kv . ",\n");
|
|
}
|
|
}
|
|
}
|
|
fwrite($fp,str_repeat(' ', $level-1));
|
|
fwrite($fp,")");
|
|
if ($level>1) fwrite($fp,",\n");
|
|
}
|
|
|
|
|
|
for($i=3; $i<count($argv); $i+=2) {
|
|
$overwrite = true;
|
|
|
|
$name=$argv[$i];
|
|
if (substr($name,0,1) == "+") {
|
|
$overwrite = false;
|
|
$name=substr($name,1);
|
|
}
|
|
|
|
$value=$argv[$i+1];
|
|
if(substr($value,0,5) == "array") {
|
|
$value = eval('return ' . $value . ';');
|
|
}
|
|
else if (substr($value,0,8) == "constant") {
|
|
$value = eval('return ' . $value . ';');
|
|
}
|
|
else if (is_numeric($value)) {
|
|
if (strstr($value, ".") === FALSE) $value = intval($value);
|
|
else $value = floatval($value);
|
|
}
|
|
else if ($value == "true") {
|
|
$value = true;
|
|
}
|
|
else if ($value == "false") {
|
|
$value = false;
|
|
}
|
|
|
|
if ($overwrite || ! array_key_exists($name, $configref)) {
|
|
$configref[$name] = $value;
|
|
}
|
|
}
|
|
|
|
|
|
if ($dry_run) {
|
|
$fp = STDOUT;
|
|
} else {
|
|
$fp = fopen($argv[1] . ".new", "w");
|
|
}
|
|
|
|
fwrite($fp, "<?php\n");
|
|
fwrite($fp, "\$$config_var_name=");
|
|
print_array($configref, 1, $fp);
|
|
fwrite($fp, ";\n");
|
|
fwrite($fp, "?>\n");
|
|
fclose($fp);
|
|
|
|
# ok - rename
|
|
if (! $dry_run) {
|
|
if (file_exists($argv[1] . ".old")) {
|
|
unlink($argv[1] . ".old");
|
|
}
|
|
rename($argv[1], $argv[1] . ".old");
|
|
rename($argv[1] . ".new", $argv[1]);
|
|
}
|
|
|
|
?>
|