_all($sql); } // 取得反代网站 function hyproxy_get($name){//OK $sql = "SELECT * FROM module_hyproxy WHERE `server_name` = '$name'"; return $this -> _row($sql); } // 增加反代网站 function hyproxy_add($server_name, $proxy_pass){//OK $server_name = trim($server_name); $proxy_pass = trim($proxy_pass); $proxy = $this->hyproxy_get($server_name); if ($proxy) { return array( 'status' => 'error' , 'notice' => '绑定域名已存在,请删除旧记录或更换域名。' ); } 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', 'header_host' => '$host', 'proxy_pass' => $proxy_pass, 'proxy_cache' => 1, 'status' => 'start', 'time' => time() ); $res = $this -> _insert('module_hyproxy', $data); if ($res) { $cmd = "amh module HYProxy-1.0 admin make,$server_name"; $cmd = Functions::trim_cmd($cmd); shell_exec($cmd); return array( 'status' => 'success' , 'notice' => $server_name.' : HYProxy域名增加成功。' ); }else { return array( 'status' => 'error' , 'notice' => $server_name.' : HYProxy域名增加失败。' ); } } } // 编辑反代网站 function hyproxy_edit(){//OK $server_name = trim($_POST['server_name']); if ($_POST['index']!=$_POST['index_hidden']) {//默认首页 $data['index'] = empty($_POST['index']) ? 'index.php index.html index.htm' : trim($_POST['index']); } if ($_POST['header_host']!=$_POST['header_host_hidden']) {//Host头 $data['header_host'] = empty($_POST['header_host']) ? '$host' : trim($_POST['header_host']); } if ($_POST['proxy_pass']!=$_POST['proxy_pass_hidden']) {//后端地址 $data['proxy_pass'] = trim($_POST['proxy_pass']); empty($data['proxy_pass']) && $data['proxy_pass'] = 'http://'.$server_name; if(!preg_match('/^http(s)?:\\/\\/.+/',$data['proxy_pass'])){ $data['proxy_pass'] = 'http://'.$data['proxy_pass']; } } $data['time'] = time();//时间戳 $where = sprintf("WHERE `server_name` = '%s'",$server_name);//查询条件 $res = $this -> _update('module_hyproxy',$data,$where); if ($res) { $cmd = "amh module HYProxy-1.0 admin make,$server_name"; $cmd = Functions::trim_cmd($cmd); shell_exec($cmd); return array( 'status' => 'success' , 'notice' => $server_name.' : HYProxy域名修改成功。' ); }else { return array( 'status' => 'error' , 'notice' => $server_name.' : HYProxy域名修改失败。' ); } } // 删除反代网站 function hyproxy_del($del_name){//OK $del_name = trim($del_name); $cmd = "amh module HYProxy-1.0 admin del,$del_name"; $cmd = Functions::trim_cmd($cmd); $result = $this->hyclear_result(shell_exec($cmd)); if (strpos($result, '[ERROR]') === false){ return array( 'status' => 'success' , 'notice' => $del_name.' : HYProxy域名删除成功。' ); }else{ return array( 'status' => 'error' , 'notice' => $del_name.' : HYProxy域名删除失败。' ); } } // 状态 function hyproxy_run($run_name, $g){//OK $run_zh = array( 'start' => '启动', 'stop' => '停止' ); $data['status'] = $g; $data['time'] = time();//时间戳 $where = sprintf("WHERE `server_name` = '%s'",$run_name);//查询条件 $res = $this -> _update('module_hyproxy',$data,$where); if ($res) { $cmd = "amh module HYProxy-1.0 admin make,$run_name"; $cmd = Functions::trim_cmd($cmd); shell_exec($cmd); return array( 'status' => 'success' , 'notice' => $run_name . ' : HYProxy域名' . $run_zh[$g] . '成功。' ); }else { return array( 'status' => 'error' , 'notice' => $run_name . ' : HYProxy域名' . $run_zh[$g] . '失败。' ); } } // 缓存状态 function hyproxy_run_cache($run_name, $g){//OK $run_zh = array( '1' => '启动', '0' => '停止' ); $data['proxy_cache'] = $g; $data['time'] = time();//时间戳 $where = sprintf("WHERE `server_name` = '%s'",$run_name);//查询条件 $res = $this -> _update('module_hyproxy',$data,$where); if ($res) { $cmd = "amh module HYProxy-1.0 admin make,$run_name"; $cmd = Functions::trim_cmd($cmd); shell_exec($cmd); return array( 'status' => 'success' , 'notice' => $run_name . ' : HYProxy域名缓存' . $run_zh[$g] . '成功。' ); }else { return array( 'status' => 'error' , 'notice' => $run_name . ' : HYProxy域名缓存' . $run_zh[$g] . '失败。' ); } } // ********************************************************* // 取得缓存 function get_hyproxy_cache(){ $name = trim($name); $cmd = "amh cat_nginx"; $cmd = Functions::trim_cmd($cmd); $result = trim(shell_exec($cmd), "\n"); $result = Functions::trim_result($result); preg_match("/hyproxy_cache levels=(.*)keys_zone=hyproxy:(.*)inactive=(.*)max_size=(.*);/", $result, $arr); preg_match("/proxy_cache_valid 200 304(.*);/", $result, $arr2); $data['levels'] = $arr[1]; $data['keys_zone'] = $arr[2]; $data['inactive'] = $arr[3]; $data['max_size'] = $arr[4]; $data['valid'] = $arr2[1]; foreach ($data as $key=>$val) $data[$key] = trim($val); return $data; } // 保存缓存 function save_hyproxy_cache(){ $run_name = trim($run_name); $cmd = "amh module HYProxy-1.0 admin cache,{$_POST['levels']},{$_POST['keys_zone']},{$_POST['max_size']},{$_POST['valid']},{$_POST['inactive']}"; $cmd = Functions::trim_cmd($cmd); exec($cmd, $tmp, $status); Return !$status; } // ********************************************************* // 取得缓存索引 function get_hyproxy_cache_index(){ // $sql = "SELECT count(*) FROM module_hyproxy GROUP BY hyproxy_type "; $sql = "SELECT * FROM module_hyproxy_cache"; $result = $this -> _query($sql); while ($rs = mysql_fetch_assoc($result)) { $url_info = parse_url($rs['hyproxy_key']); if (isset($url_info['host']) && !empty($url_info['host'])) { ++$data[$url_info['host']]['all']['sum']; $data[$url_info['host']]['all']['size'] += $rs['hyproxy_size']; ++$data[$url_info['host']][$rs['hyproxy_type']]['sum']; $data[$url_info['host']][$rs['hyproxy_type']]['size'] += $rs['hyproxy_size']; } } Return $data; } // 创建缓存索引 function create_hyproxy_cache_index(){ $val = (int)$_POST['cache_index_time_val']; $type = array('1' => 60*24, '2' => 60, '3' => 1); $area = array('1' => '-', '2' => '+'); $val = isset($type[$_POST['cache_index_time_type']]) ? $val * $type[$_POST['cache_index_time_type']] : $val * $type[1]; // 时间类型 $val = isset($area[$_POST['cache_index_time_type']]) ? $area[$_POST['cache_index_time_area']] . $val : '-' . $val; // 时间范围 $mode = $_POST['cache_index_time_mode'] == '2' ? 'truncate' : ''; $cmd = "amh module HYProxy-1.0 admin cache-index,$val,$mode"; $cmd = Functions::trim_cmd($cmd); exec($cmd, $tmp, $status); Return !$status; } // ********************************************************* // 取得缓存列表 function get_hyproxy_cache_list($page = 1, $page_sum = 20){ $where = ''; if (isset($_GET['cache_key']) && !empty($_GET['cache_key'])) { $_GET['cache_key'] = trim($_GET['cache_key']); $where .= " AND hyproxy_key LIKE '{$_GET['cache_key']}'"; } if (isset($_GET['cache_type']) && $_GET['cache_type'] != 'all') $where .= " AND hyproxy_type LIKE '{$_GET['cache_type']}'"; $limit = ' LIMIT ' . ($page-1)*$page_sum . ' , ' . $page_sum; $sql = "SELECT * FROM module_hyproxy_cache WHERE 1 $where"; $sum = $this -> _sum($sql); $sql = "SELECT * FROM module_hyproxy_cache WHERE 1 $where $limit"; Return array('data' => $this -> _all($sql), 'sum' => $sum); } // 删除缓存 function hyproxy_cache_delete() { $url_param = (isset($_POST['cache_key']) && !empty($_POST['cache_key'])) ? $_POST['cache_key'] : '-all'; $file_type = (isset($_POST['cache_type']) && !empty($_POST['cache_type']) && $_POST['cache_type'] != 'all') ? $_POST['cache_type'] : '-all'; $cmd = "amh module HYProxy-1.0 admin cache-delete,$url_param,$file_type"; $cmd = Functions::trim_cmd($cmd); exec($cmd, $tmp, $status); Return !$status; } }