diff --git a/hyproxy-cli.php b/hyproxy-cli.php index 2593e62..41fb3fe 100644 --- a/hyproxy-cli.php +++ b/hyproxy-cli.php @@ -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; + } + } + }