Viewing file: ei.php (2.49 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php define('CONFIG_FILE', 'ei_config.php'); define('MYSQL_CONFIG', 'ei_my.cnf');
if (!($config = file_get_contents(CONFIG_FILE))) exit("Can't read " . CONFIG_FILES . "\n");
if (!($config = json_decode($config, true))) exit("Can't decode " . CONFIG_FILE . "\n");
$prefix = $config['prefix']; $suffix = $config['suffix']; $params = $config['params']; $db = $config['sql'];
foreach ($config['files'] as $file) { replace_params($file, $prefix, $suffix, $params, $db); }
if (!empty($config['sql'])) { $database = $config['sql']['dbname']; $username = $config['sql']['dbuser']; $password = $config['sql']['dbpass']; file_put_contents(MYSQL_CONFIG, <<<MYSQL [client] user=$username password=$password MYSQL); foreach ($config['sql']['files'] as $sql_file) { replace_params($sql_file, $prefix, $suffix, $params, $db);
$cmd = sprintf("mysql --defaults-file=%s %s < %s 2>&1", MYSQL_CONFIG, $database, $sql_file); $output = []; $ret = 0; exec($cmd, $output, $ret);
if ($ret !== 0) { echo "mysql dump insert failure\n"; } else { //unlink(MYSQL_CONFIG); //unlink($sql_file); } } }
//unlink(CONFIG_FILE);
function replace_params($file, $prefix, $suffix, $params, $db) { $file = './' . $file; echo "replacing $file\n"; if (!($content = file_get_contents($file))) { echo "Can't read $file\n"; return false; }
$vars = [];
foreach ($db as $k => $v) { // db details if (is_string($v)) $params[$k] = ['value' => $v]; }
//print_r($params); //replace vars in vars foreach ($params as $k1 => $v1) { foreach ($params as $k2 => $v2) { $params[$k2]['value'] = str_replace($prefix . $k1 . $suffix, $v1['value'], $params[$k2]['value']); } }
//print_r($params); //calculate values foreach ($params as $k => $v) { $vars[$k] = escape(@$v['escape'], param($k, $v)); }
//print_r($vars);
foreach ($vars as $k => $v) $content = str_replace($prefix . $k . $suffix, $v, $content);
file_put_contents($file, $content); }
function param($k, $v) { $options = !empty($v['options']) ? $v['options'] : []; $ret = $v['value']; foreach ($options as $option) { switch ($option) { case 'eval': $ret = eval($ret); break; case 'md5': $ret = md5($v['value']); break; //case 'hidden': //default: // $ret = $v['value']; } }
return $ret; }
function escape_single_quotes($value) { return addcslashes($value, "'"); }
function escape_double_quotes($value) { return addcslashes($value, '"'); }
function escape($func, $value) { return $func ? $func($value) : $value; }
|