备份AMProxy的旧反向代理

Signed-off-by: HITSword <admin@huayizhiyun.com>
master
HITSword 2020-01-12 19:30:10 +08:00
parent f81df14fde
commit e4877e246d
1 changed files with 82 additions and 0 deletions

View File

@ -69,6 +69,9 @@
case 'restore':
echo hyproxy_restore($param['bak_name']);
break;
case 'amproxy_bak' :
echo hyproxy_amproxy_bak();
break;
default:
echo 'error action';
}
@ -359,6 +362,55 @@
}
}
/**
* 备份AMProxy的反向代理
* @return string
*/
function hyproxy_amproxy_bak()
{
$dir = '/usr/local/nginx/conf/proxy/';
if (is_dir($dir)) {
$list = scandir($dir);
foreach ($list as $row) {
unset($conf, $data);
//排除目录中的.和..
if ($row != "." && $row != ".." && is_file($dir.$row)) {
$conf = file_get_contents($dir.$row);
$data = array(
'server_name' => trim(hy_get_body($conf, 'server_name', ';', 1)),
'index' => 'index.php index.html index.htm',//index是保留字段
'header_host' => '$host',
'proxy_pass' => trim(hy_get_body($conf, 'proxy_pass', ';', 1)),
'proxy_cache' => 1,
'status' => 'start',
'time' => time()
);
if (trim(hy_get_body($conf, 'proxy_set_header Host ', ';', 1)) != $data['server_name']) {
$data['header_host'] = trim(hy_get_body($conf, 'proxy_set_header Host ', ';', 1));
}
$proxy[] = $data;
}
}
}
if (!empty($proxy)) {
if (!is_dir(_HYBAKS)) {
mkdir(_HYBAKS, 0755);
}
$filebytes = false;
$filename = _HYBAKS . 'AMProxy' .date("Y-m-d-H:i:s") . '.bak';
$filebytes = file_put_contents($filename, json_encode($proxy));//写入内容
if ($filebytes) {
$res="[OK] AMProxy proxy backup success.\n";
} else {
$res="[ERROR] AMProxy proxy backup error.\n";
}
} else {
$res = '[ERROR] No AMProxy.';
}
return $res;
}
/**
* 删除目录和子目录
* @param $path
@ -426,3 +478,33 @@
}
return $conf;
}
/**
* 输入始末关键词提取主要内容
* @param $str string 提取前内容
* @param $start string 开始关键词
* @param $end string 结束关键词
* @param $option int 选项 1:不包含前后关键词 2:包含前关键词 3:包含后关键词 其他(默认):包含前后关键词
* @return string
*/
function hy_get_body($str, $start, $end, $option)
{
$str_array=explode($start, $str);
$tem=$str_array[1];
if (empty($end)) {
return $tem;
} else {
$str_array=explode($end, $tem);
if ($option==1) {
return $str_array[0];
}
if ($option==2) {
return $start.$str_array[0];
}
if ($option==3) {
return $str_array[0].$end;
} else {
return $start.$str_array[0].$end;
}
}
}