parent
d130bedea6
commit
0331af549d
|
|
@ -0,0 +1 @@
|
||||||
|
.idea
|
||||||
|
|
@ -247,7 +247,7 @@ function amh_module_admin()
|
||||||
|
|
||||||
elif [ "$action" == 'del' ]; then
|
elif [ "$action" == 'del' ]; then
|
||||||
php ${module_dir}hyproxy-cli.php --action='del' --server_name=${domain}
|
php ${module_dir}hyproxy-cli.php --action='del' --server_name=${domain}
|
||||||
rm -f "$domain_conf" && echo "[OK] successfully delete $domain HYProxy.";
|
echo "[OK] successfully delete $domain HYProxy.";
|
||||||
amh nginx reload;
|
amh nginx reload;
|
||||||
elif [ "$action" == 'start' ]; then
|
elif [ "$action" == 'start' ]; then
|
||||||
php ${module_dir}hyproxy-cli.php --action='edit' --server_name=${domain} --field_name='status' --value='start';
|
php ${module_dir}hyproxy-cli.php --action='edit' --server_name=${domain} --field_name='status' --value='start';
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
#禁用反向代理缓存模板
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
listen [::]:80;
|
||||||
|
server_name {$server_name};
|
||||||
|
index {$index};
|
||||||
|
|
||||||
|
location / {
|
||||||
|
default_type text/html;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header Host {$header_host};
|
||||||
|
proxy_pass {$proxy_pass};
|
||||||
|
}
|
||||||
|
|
||||||
|
access_log {$logs_path}.access.log combined; #access_log end
|
||||||
|
error_log {$logs_path}.error.log crit; #error_log end
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,26 @@
|
||||||
|
#启用反向代理缓存模板
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
listen [::]:80;
|
||||||
|
server_name {$server_name};
|
||||||
|
index {$index};
|
||||||
|
|
||||||
|
location / {
|
||||||
|
default_type text/html;
|
||||||
|
proxy_cache hyproxy;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header Host {$header_host};
|
||||||
|
proxy_pass {$proxy_pass};
|
||||||
|
if ($http_Cache_Control = "no-cache") {
|
||||||
|
rewrite ^(.*)$ /purge$1 last;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
location ~ /purge(/.*){
|
||||||
|
proxy_cache_purge hyproxy $scheme://$host$1$is_args$args;
|
||||||
|
}
|
||||||
|
|
||||||
|
access_log {$logs_path}.access.log combined; #access_log end
|
||||||
|
error_log {$logs_path}.error.log crit; #error_log end
|
||||||
|
}
|
||||||
578
hyproxy-cli.php
578
hyproxy-cli.php
|
|
@ -1,278 +1,322 @@
|
||||||
<?php
|
<?php
|
||||||
/*
|
/**
|
||||||
* HYPorxy CLI 文件
|
* HYPorxy CLI 文件
|
||||||
* 依赖PDO 、InnoDB
|
* 依赖PDO 、InnoDB
|
||||||
* 需要安装PDO_MYSQL-1.0.2插件
|
* 需要安装PDO_MYSQL-1.0.2插件
|
||||||
* 需要打开InnoDB支持
|
* 需要打开InnoDB支持
|
||||||
*/
|
*/
|
||||||
if (PHP_SAPI !== "cli") {
|
if (PHP_SAPI !== "cli") {
|
||||||
header('HTTP/1.1 404 Not Found');
|
header('HTTP/1.1 404 Not Found');
|
||||||
header("status: 404 Not Found");
|
header("status: 404 Not Found");
|
||||||
die();
|
die();
|
||||||
}
|
|
||||||
define ('AMH_ROOT', '/home/wwwroot/index/web' . DIRECTORY_SEPARATOR); // AHM根目录
|
|
||||||
define ('AMH_Amysql', AMH_ROOT . 'Amysql' . DIRECTORY_SEPARATOR); // 系统目录
|
|
||||||
define ('_HYProxy', dirname(__FILE__) . DIRECTORY_SEPARATOR); // HYProxy插件根目录
|
|
||||||
define ('_HYCONF', '/usr/local/nginx/conf/hyproxy' . DIRECTORY_SEPARATOR); // HY Nginx conf目录
|
|
||||||
|
|
||||||
require_once(AMH_Amysql . 'Config.php'); //加载配置参数
|
|
||||||
require_once(_HYProxy . 'Class/medoo.php'); //加载medoo数据库类库
|
|
||||||
|
|
||||||
$HYConfig = array(
|
|
||||||
'database_type' => 'mysql',
|
|
||||||
'database_name' => $Config['DBname'],
|
|
||||||
'server' => 'localhost',
|
|
||||||
'username' => $Config['User'],
|
|
||||||
'password' => $Config['Password'],
|
|
||||||
'charset' => 'utf8'
|
|
||||||
);
|
|
||||||
$medoo = new medoo($HYConfig);
|
|
||||||
|
|
||||||
$opt = array(
|
|
||||||
'action:',
|
|
||||||
'proxy_status::',//状态
|
|
||||||
'server_name::',//域名
|
|
||||||
'proxy_pass::',//后端
|
|
||||||
'field_name::',//字段名
|
|
||||||
'value::',//字段内容
|
|
||||||
);
|
|
||||||
$param = getopt('', $opt);
|
|
||||||
//print_r($param);
|
|
||||||
switch ($param['action']) {
|
|
||||||
case 'list':
|
|
||||||
echo hyproxy_list($param['proxy_status']);
|
|
||||||
break;
|
|
||||||
case 'make':
|
|
||||||
echo hyproxy_make($param['server_name']);
|
|
||||||
break;
|
|
||||||
case 'add':
|
|
||||||
echo hyproxy_add($param['server_name'],$param['proxy_pass']);
|
|
||||||
break;
|
|
||||||
case 'edit':
|
|
||||||
echo hyproxy_edit($param['server_name'],$param['field_name'],$param['value']);
|
|
||||||
break;
|
|
||||||
case 'del':
|
|
||||||
echo hyproxy_del($param['server_name']);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
echo 'error action';
|
|
||||||
}
|
|
||||||
|
|
||||||
function hyproxy_list($proxy_status){//done 列出站点列表ID,域名,状态
|
|
||||||
global $medoo;
|
|
||||||
empty($proxy_status) && $proxy_status = 'start';
|
|
||||||
|
|
||||||
$table = 'module_hyproxy';
|
|
||||||
$columns = array('hyproxy_id','server_name','status');
|
|
||||||
$where = array('status'=>$proxy_status);
|
|
||||||
$data = $medoo->select($table,$columns,$where);
|
|
||||||
$res = '';
|
|
||||||
foreach ($data as &$value) {
|
|
||||||
$res.=sprintf("%d,%s,%s\n",$value['hyproxy_id'],$value['server_name'],$value['status']);
|
|
||||||
}
|
|
||||||
return $res;
|
|
||||||
}
|
|
||||||
|
|
||||||
function hyproxy_make($server_name){//done
|
|
||||||
global $medoo;
|
|
||||||
$table = 'module_hyproxy';
|
|
||||||
$columns = '*';
|
|
||||||
$where = '';
|
|
||||||
if (!empty($server_name)) {//指定域名
|
|
||||||
$where = array('server_name'=>trim($server_name));
|
|
||||||
}
|
|
||||||
$data = $medoo->select($table,$columns,$where);
|
|
||||||
$res = '';
|
|
||||||
if (empty($data)) {
|
|
||||||
$res = "[ERROR] The server_name does not exist.\n";
|
|
||||||
} else {
|
|
||||||
if (empty($server_name)) {
|
|
||||||
hy_deldir(_HYCONF);//删除所有
|
|
||||||
}
|
}
|
||||||
foreach ($data as &$value) {
|
define('DS', DIRECTORY_SEPARATOR); // 目录分隔符
|
||||||
if (!empty($value['proxy_cache'])) {
|
define('AMH_ROOT', '/home/wwwroot/index/web' . DS); // AHM根目录
|
||||||
$nginx = sprintf('server {
|
define('AMH_AMYSQL', AMH_ROOT . 'Amysql' . DS); // 系统目录
|
||||||
listen 80;
|
define('_HYPROXY', dirname(__FILE__) . DS); // HYProxy插件根目录
|
||||||
listen [::]:80;
|
define('_HYCONF', '/usr/local/nginx/conf/hyproxy' . DS); // HYProxy Nginx conf目录
|
||||||
server_name %s;
|
define('_HYLOGS', '/usr/local/nginx/logs' . DS); // HYProxy Nginx logs目录
|
||||||
index %s;
|
|
||||||
|
|
||||||
location / {
|
require_once(AMH_AMYSQL . 'Config.php'); //加载配置参数
|
||||||
default_type text/html;
|
require_once(_HYPROXY . 'Class/medoo.php'); //加载medoo数据库类库
|
||||||
proxy_cache hyproxy;
|
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
||||||
proxy_set_header Host %s;
|
|
||||||
proxy_pass %s;
|
|
||||||
if ($http_Cache_Control = "no-cache") {
|
|
||||||
rewrite ^(.*)$ /purge$1 last;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
location ~ /purge(/.*){
|
|
||||||
proxy_cache_purge hyproxy $scheme://$host$1$is_args$args;
|
|
||||||
}
|
|
||||||
access_log /usr/local/nginx/logs/%s.access.log combined; #access_log end
|
|
||||||
error_log /usr/local/nginx/logs/%s.error.log crit; #error_log end
|
|
||||||
}',$value['server_name'],$value['index'],$value['header_host'],$value['proxy_pass'],$value['server_name'],$value['server_name']);
|
|
||||||
} else {
|
|
||||||
$nginx = sprintf('server {
|
|
||||||
listen 80;
|
|
||||||
listen [::]:80;
|
|
||||||
server_name %s;
|
|
||||||
index %s;
|
|
||||||
|
|
||||||
location / {
|
$HYConfig = array(
|
||||||
default_type text/html;
|
'database_type' => 'mysql',
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
'database_name' => $Config['DBname'],
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
'server' => 'localhost',
|
||||||
proxy_set_header Host %s;
|
'username' => $Config['User'],
|
||||||
proxy_pass %s;
|
'password' => $Config['Password'],
|
||||||
}
|
'charset' => 'utf8'
|
||||||
access_log /usr/local/nginx/logs/%s.access.log combined; #access_log end
|
|
||||||
error_log /usr/local/nginx/logs/%s.error.log crit; #error_log end
|
|
||||||
}',$value['server_name'],$value['index'],$value['header_host'],$value['proxy_pass'],$value['server_name'],$value['server_name']);
|
|
||||||
}
|
|
||||||
if ($value['status']=='start') {
|
|
||||||
$filebytes = file_put_contents(_HYCONF.$value['server_name'].'.conf', $nginx); //写入内容
|
|
||||||
} else {
|
|
||||||
$filebytes = unlink(_HYCONF.$value['server_name'].'.conf');//删除
|
|
||||||
}
|
|
||||||
|
|
||||||
if($filebytes){
|
|
||||||
$res.=sprintf("[OK] %s conf make is done.\n",$value['server_name']);
|
|
||||||
}else{
|
|
||||||
$res.=sprintf("[ERROR] %s conf make is error.\n",$value['server_name']);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $res;
|
|
||||||
}
|
|
||||||
|
|
||||||
function hyproxy_add($server_name,$proxy_pass=''){//done
|
|
||||||
if (empty($server_name)) {
|
|
||||||
return "[ERROR] The server_name is empty.\n";//不能为空
|
|
||||||
}
|
|
||||||
|
|
||||||
$res = '';
|
|
||||||
global $medoo;
|
|
||||||
$table = 'module_hyproxy';
|
|
||||||
$columns = '*';
|
|
||||||
$where = array('server_name'=>trim($server_name));
|
|
||||||
$proxy = $medoo->get($table, $columns, $where);
|
|
||||||
|
|
||||||
if ($proxy) {
|
|
||||||
return "[ERROR] The server_name is exist.\n";//已存在
|
|
||||||
} else {
|
|
||||||
empty($proxy_pass) && $proxy_pass = 'http://'.$server_name;
|
|
||||||
if(!preg_match('/^http(s)?:\\/\\/.+/',$proxy_pass)){
|
|
||||||
$proxy_pass = 'http://'.$proxy_pass;
|
|
||||||
}
|
|
||||||
$data = array(
|
|
||||||
'server_name' => $server_name,
|
|
||||||
'`index`' => 'index.php index.html index.htm',//index是保留字段
|
|
||||||
'header_host' => '$host',
|
|
||||||
'proxy_pass' => $proxy_pass,
|
|
||||||
'proxy_cache' => 1,
|
|
||||||
'status' => 'start',
|
|
||||||
'time' => time()
|
|
||||||
);
|
);
|
||||||
$mysqlres = $medoo->insert($table, $data);
|
$medoo = new medoo($HYConfig);
|
||||||
if ($mysqlres) {
|
|
||||||
$res = "[OK] Proxy add success.\n";
|
|
||||||
$res.= hyproxy_make($server_name);
|
|
||||||
}else {
|
|
||||||
$res = "[ERROR] Proxy add error.\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $res;
|
|
||||||
}
|
|
||||||
|
|
||||||
function hyproxy_edit($server_name,$field_name='',$value=''){//done
|
|
||||||
if (empty($server_name)) {
|
|
||||||
return "[ERROR] The server_name is empty.\n";//不能为空
|
|
||||||
}
|
|
||||||
if (empty($field_name)) {
|
|
||||||
return "[ERROR] The field_name is empty.\n";//不能为空
|
|
||||||
}
|
|
||||||
$value = trim($value);
|
|
||||||
$res = '';
|
|
||||||
global $medoo;
|
|
||||||
$table = 'module_hyproxy';
|
|
||||||
$columns = '*';
|
|
||||||
$where = array('server_name'=>trim($server_name));
|
|
||||||
$proxy = $medoo->get($table, $columns, $where);
|
|
||||||
|
|
||||||
if (empty($proxy)) {
|
|
||||||
return "[ERROR] The server_name is not exist.\n";//不存在
|
|
||||||
} else {
|
|
||||||
if ($field_name=='proxy_pass') {
|
|
||||||
empty($value) && $value = 'http://'.$server_name;
|
|
||||||
if(!preg_match('/^http(s)?:\\/\\/.+/',$value)){
|
|
||||||
$value = 'http://'.$value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ($field_name=='header_host') {
|
|
||||||
empty($value) && $value = '$host';
|
|
||||||
}
|
|
||||||
$data = array(
|
|
||||||
$field_name => $value,
|
|
||||||
'time' => time()
|
|
||||||
);
|
|
||||||
$mysqlres = $medoo->update($table, $data,array('hyproxy_id'=>$proxy['hyproxy_id']));
|
|
||||||
if ($mysqlres) {
|
|
||||||
$res = "[OK] Proxy edit success.\n";
|
|
||||||
$res.= hyproxy_make($server_name);
|
|
||||||
}else {
|
|
||||||
$res = "[ERROR] Proxy edit error.\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $res;
|
|
||||||
}
|
|
||||||
|
|
||||||
function hyproxy_del($server_name){
|
|
||||||
if (empty($server_name)) {
|
|
||||||
return "[ERROR] The server_name is empty.\n";//不能为空
|
|
||||||
}
|
|
||||||
|
|
||||||
$res = '';
|
$opt = array(
|
||||||
global $medoo;
|
'action:',
|
||||||
$table = 'module_hyproxy';
|
'proxy_status::',//状态
|
||||||
$columns = '*';
|
'server_name::',//域名
|
||||||
$where = array('server_name'=>trim($server_name));
|
'proxy_pass::',//后端
|
||||||
$proxy = $medoo->get($table, $columns, $where);
|
'field_name::',//字段名
|
||||||
if (empty($proxy)) {
|
'value::',//字段内容
|
||||||
return "[ERROR] The server_name is not exist.\n";//不存在
|
);
|
||||||
} else {
|
$param = getopt('', $opt);
|
||||||
$mysqlres = $medoo->delete($table, $where);
|
//print_r($param);
|
||||||
if ($mysqlres) {
|
switch ($param['action']) {
|
||||||
$res = "[OK] Proxy del success.\n";
|
case 'list':
|
||||||
}else {
|
echo hyproxy_list($param['proxy_status']);
|
||||||
$res = "[ERROR] Proxy del error.\n";
|
break;
|
||||||
|
case 'make':
|
||||||
|
echo hyproxy_make($param['server_name']);
|
||||||
|
break;
|
||||||
|
case 'add':
|
||||||
|
echo hyproxy_add($param['server_name'], $param['proxy_pass']);
|
||||||
|
break;
|
||||||
|
case 'edit':
|
||||||
|
echo hyproxy_edit($param['server_name'], $param['field_name'], $param['value']);
|
||||||
|
break;
|
||||||
|
case 'del':
|
||||||
|
echo hyproxy_del($param['server_name']);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
echo 'error action';
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return $res;
|
|
||||||
}
|
|
||||||
|
|
||||||
function hy_deldir($path) {
|
/**
|
||||||
//如果是目录则继续
|
* 列出站点列表ID,域名,状态
|
||||||
if (is_dir($path)) {
|
* @param $proxy_status
|
||||||
//扫描一个文件夹内的所有文件夹和文件并返回数组
|
* @return string
|
||||||
$p = scandir($path);
|
*/
|
||||||
foreach ($p as $val) {
|
function hyproxy_list($proxy_status)
|
||||||
//排除目录中的.和..
|
{
|
||||||
if ($val != "." && $val != "..") {
|
global $medoo;
|
||||||
//如果是目录则递归子目录,继续操作
|
empty($proxy_status) && $proxy_status = 'start';
|
||||||
if (is_dir($path . $val)) {
|
|
||||||
//子目录中操作删除文件夹和文件
|
$table = 'module_hyproxy';
|
||||||
deldir($path . $val . '/');
|
$columns = array('hyproxy_id','server_name','status');
|
||||||
//目录清空后删除空文件夹
|
$where = array('status'=>$proxy_status);
|
||||||
@rmdir($path . $val . '/');
|
$list = $medoo->select($table, $columns, $where);
|
||||||
|
$res = '';
|
||||||
|
foreach ($list as $row) {
|
||||||
|
$res.=sprintf("%d,%s,%s\n", $row['hyproxy_id'], $row['server_name'], $row['status']);
|
||||||
|
}
|
||||||
|
return $res;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生成nginx配置文件
|
||||||
|
* @param $server_name
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
function hyproxy_make($server_name)
|
||||||
|
{
|
||||||
|
global $medoo;
|
||||||
|
$table = 'module_hyproxy';
|
||||||
|
$columns = '*';
|
||||||
|
$where = '';
|
||||||
|
if (!empty($server_name)) {//指定域名
|
||||||
|
$where = array('server_name'=>trim($server_name));
|
||||||
|
}
|
||||||
|
$list = $medoo->select($table, $columns, $where);
|
||||||
|
$res = '';
|
||||||
|
if (empty($list)) {
|
||||||
|
$res = "[ERROR] The server_name does not exist.\n";
|
||||||
} else {
|
} else {
|
||||||
//如果是文件直接删除
|
if (empty($server_name)) {
|
||||||
unlink($path . $val);
|
hy_deldir(_HYCONF);//删除所有
|
||||||
|
}
|
||||||
|
foreach ($list as $row) {
|
||||||
|
$filebytes = false;
|
||||||
|
$conf = hy_build_nginx_conf($row);
|
||||||
|
if (!$row['status']=='start') {
|
||||||
|
$filebytes = unlink(_HYCONF.$row['server_name'].'.conf');//删除
|
||||||
|
} elseif (!empty($conf)) {
|
||||||
|
$filebytes = file_put_contents(_HYCONF.$row['server_name'].'.conf', $conf); //写入内容
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($filebytes) {
|
||||||
|
$res.=sprintf("[OK] %s conf make is done.\n", $row['server_name']);
|
||||||
|
} else {
|
||||||
|
$res.=sprintf("[ERROR] %s conf make is error.\n", $row['server_name']);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
return $res;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新建反向代理
|
||||||
|
* @param $server_name
|
||||||
|
* @param string $proxy_pass
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
function hyproxy_add($server_name, $proxy_pass = '')
|
||||||
|
{
|
||||||
|
if (empty($server_name)) {
|
||||||
|
return "[ERROR] The server_name is empty.\n";//不能为空
|
||||||
|
}
|
||||||
|
|
||||||
|
$res = '';
|
||||||
|
global $medoo;
|
||||||
|
$table = 'module_hyproxy';
|
||||||
|
$columns = '*';
|
||||||
|
$where = array('server_name'=>trim($server_name));
|
||||||
|
$proxy = $medoo->get($table, $columns, $where);
|
||||||
|
|
||||||
|
if ($proxy) {
|
||||||
|
return "[ERROR] The server_name is exist.\n";//已存在
|
||||||
|
} else {
|
||||||
|
empty($proxy_pass) && $proxy_pass = 'http://'.$server_name;
|
||||||
|
if (!preg_match('/^http(s)?:\\/\\/.+/', $proxy_pass)) {
|
||||||
|
$proxy_pass = 'http://'.$proxy_pass;
|
||||||
|
}
|
||||||
|
$data = array(
|
||||||
|
'server_name' => $server_name,
|
||||||
|
'`index`' => 'index.php index.html index.htm',//index是保留字段
|
||||||
|
'header_host' => '$host',
|
||||||
|
'proxy_pass' => $proxy_pass,
|
||||||
|
'proxy_cache' => 1,
|
||||||
|
'status' => 'start',
|
||||||
|
'time' => time()
|
||||||
|
);
|
||||||
|
$mysqlres = $medoo->insert($table, $data);
|
||||||
|
if ($mysqlres) {
|
||||||
|
$res = "[OK] Proxy add success.\n";
|
||||||
|
$res.= hyproxy_make($server_name);
|
||||||
|
} else {
|
||||||
|
$res = "[ERROR] Proxy add error.\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $res;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改反向代理参数
|
||||||
|
* @param $server_name
|
||||||
|
* @param string $field_name
|
||||||
|
* @param string $value
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
function hyproxy_edit($server_name, $field_name = '', $value = '')
|
||||||
|
{
|
||||||
|
if (empty($server_name)) {
|
||||||
|
return "[ERROR] The server_name is empty.\n";//不能为空
|
||||||
|
}
|
||||||
|
if (empty($field_name)) {
|
||||||
|
return "[ERROR] The field_name is empty.\n";//不能为空
|
||||||
|
}
|
||||||
|
$value = trim($value);
|
||||||
|
$res = '';
|
||||||
|
global $medoo;
|
||||||
|
$table = 'module_hyproxy';
|
||||||
|
$columns = '*';
|
||||||
|
$where = array('server_name'=>trim($server_name));
|
||||||
|
$proxy = $medoo->get($table, $columns, $where);
|
||||||
|
|
||||||
|
if (empty($proxy)) {
|
||||||
|
return "[ERROR] The server_name is not exist.\n";//不存在
|
||||||
|
} else {
|
||||||
|
if ($field_name=='proxy_pass') {
|
||||||
|
empty($value) && $value = 'http://'.$server_name;
|
||||||
|
if (!preg_match('/^http(s)?:\\/\\/.+/', $value)) {
|
||||||
|
$value = 'http://'.$value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($field_name=='header_host') {
|
||||||
|
empty($value) && $value = '$host';
|
||||||
|
}
|
||||||
|
$data = array(
|
||||||
|
$field_name => $value,
|
||||||
|
'time' => time()
|
||||||
|
);
|
||||||
|
$mysqlres = $medoo->update($table, $data, array('hyproxy_id'=>$proxy['hyproxy_id']));
|
||||||
|
if ($mysqlres) {
|
||||||
|
$res = "[OK] Proxy edit success.\n";
|
||||||
|
$res.= hyproxy_make($server_name);
|
||||||
|
} else {
|
||||||
|
$res = "[ERROR] Proxy edit error.\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $res;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除反向代理
|
||||||
|
* @param $server_name
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
function hyproxy_del($server_name)
|
||||||
|
{
|
||||||
|
if (empty($server_name)) {
|
||||||
|
return "[ERROR] The server_name is empty.\n";//不能为空
|
||||||
|
}
|
||||||
|
|
||||||
|
$res = '';
|
||||||
|
global $medoo;
|
||||||
|
$table = 'module_hyproxy';
|
||||||
|
$columns = '*';
|
||||||
|
$where = array('server_name'=>trim($server_name));
|
||||||
|
$proxy = $medoo->get($table, $columns, $where);
|
||||||
|
if (empty($proxy)) {
|
||||||
|
return "[ERROR] The server_name is not exist.\n";//不存在
|
||||||
|
} else {
|
||||||
|
$mysqlres = $medoo->delete($table, $where);
|
||||||
|
if ($mysqlres) {
|
||||||
|
$res = "[OK] Proxy del success.\n";
|
||||||
|
} else {
|
||||||
|
$res = "[ERROR] Proxy del error.\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
unlink(_HYCONF . $server_name . '.conf');//删除配置文件
|
||||||
|
unlink(_HYLOGS . $server_name . '.access.log');//删除日志文件
|
||||||
|
unlink(_HYLOGS . $server_name . '.error.log');//删除日志文件
|
||||||
|
return $res;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除目录和子目录
|
||||||
|
* @param $path
|
||||||
|
*/
|
||||||
|
function hy_deldir($path)
|
||||||
|
{
|
||||||
|
//如果是目录则继续
|
||||||
|
if (is_dir($path)) {
|
||||||
|
//扫描一个文件夹内的所有文件夹和文件并返回数组
|
||||||
|
$p = scandir($path);
|
||||||
|
foreach ($p as $val) {
|
||||||
|
//排除目录中的.和..
|
||||||
|
if ($val != "." && $val != "..") {
|
||||||
|
//如果是目录则递归子目录,继续操作
|
||||||
|
if (is_dir($path . $val)) {
|
||||||
|
//子目录中操作删除文件夹和文件
|
||||||
|
deldir($path . $val . '/');
|
||||||
|
//目录清空后删除空文件夹
|
||||||
|
@rmdir($path . $val . '/');
|
||||||
|
} else {
|
||||||
|
//如果是文件直接删除
|
||||||
|
unlink($path . $val);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据传入数据构建nginx配置内容
|
||||||
|
* @param $row
|
||||||
|
*/
|
||||||
|
function hy_build_nginx_conf($row)
|
||||||
|
{
|
||||||
|
//开启反向代理缓存模板
|
||||||
|
$proxy_cache_template_path = _HYPROXY . 'conf' . DS . 'proxy_cache_template.conf';
|
||||||
|
$proxy_cache_template = '';
|
||||||
|
if (file_exists($proxy_cache_template_path)) {
|
||||||
|
$proxy_cache_template = file_get_contents($proxy_cache_template_path);
|
||||||
|
}
|
||||||
|
//禁用反向代理缓存模板
|
||||||
|
$no_cache_template_path = _HYPROXY . 'conf' . DS . 'no_cache_template.conf';
|
||||||
|
$no_cache_template = '';
|
||||||
|
if (file_exists($no_cache_template_path)) {
|
||||||
|
$no_cache_template = file_get_contents($no_cache_template_path);
|
||||||
|
}
|
||||||
|
|
||||||
|
$conf = false;
|
||||||
|
if (!empty($row)) {
|
||||||
|
$row['logs_path'] = _HYLOGS . $row['server_name'];
|
||||||
|
|
||||||
|
//判断使用哪个模板
|
||||||
|
$template = false;
|
||||||
|
if (!empty($row['proxy_cache']) && !empty($proxy_cache_template)) {
|
||||||
|
$template = $proxy_cache_template;
|
||||||
|
} elseif (!empty($no_cache_template)) {
|
||||||
|
$template = $no_cache_template;
|
||||||
|
}
|
||||||
|
|
||||||
|
//模板有效的话,进行遍历数组替换模板变量
|
||||||
|
if ($template) {
|
||||||
|
foreach ($row as $k => $v) {
|
||||||
|
$template=str_replace('{$'.$k.'}', $v, $template);
|
||||||
|
}
|
||||||
|
$conf = $template;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $conf;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
Loading…
Reference in New Issue