proxy.php
1.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
<?php
error_reporting(E_ALL);
ini_set("display_errors","off");
/**
 * TODO:: 这个文件请用root执行
 * 这个文件请加ip白名单访问
 */
function sign(){
    return md5('fob.guaidong007'.date('ym').$_REQUEST['rand_str'].'=');
}
if($_SERVER['AUTH_VERIFY'] != sign()){
    http_response_code(500);
    echo 'auth error';
    exit(1);
}
$body = file_get_contents("php://input");
$body = base64_decode($body);
$body = json_decode($body, true);
define('CONF_FILNAME','/www/server/panel/vhost/nginx/tcp/mail.conf');
/**
 * 保存配置
 * @param $body
 * @return int
 * @author:dc
 * @time 2025/4/14 22:54
 */
//server {
//    listen 10087;  # 监听的端口
//    proxy_pass smtp.gmail.com:465;
//}
function saveconfig($body){
    $config = [];
    foreach ($body['proxys'] as $port=>$domain){
        $config[] = "server {
    listen {$port};
    proxy_pass {$domain};
}";
    }
    $config = implode("\n",$config);
    if(@file_put_contents(CONF_FILNAME,$config)){
        return 200;
    }
    return 500;
}
/**
 * 重启nginx服务
 * @return int
 * @author:dc
 * @time 2025/4/14 22:54
 */
function reload(){
    exec("nginx -s reload",$ret,$code);
    return $code===0?200:500;
}
/**
 * 检查端口监听状态
 * @param $body
 * @author:dc
 * @time 2025/4/14 22:53
 */
function check_prot($body){
    $ports = $body['prots'];
    foreach ($ports as $port){
        exec("netstat -ano | grep :$port",$ret,$code);
        echo $port;
        echo ":";
        if(count($ret)>=1){
            echo "1";
        }else{
            echo "0";
        }
        echo "\n";
    }
}
echo call_user_func($body['action'],$body);
return 0;