File size: 4,427 Bytes
a757bd3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
102
103
104
105
106
107
# coding: utf-8
# -------------------------------------------------------------------
# 宝塔Linux面板
# -------------------------------------------------------------------
# Copyright (c) 2015-2017 宝塔软件(http:#bt.cn) All rights reserved.
# -------------------------------------------------------------------
# Author: baozi <baozi@bt.cn>
# -------------------------------------------------------------------
# 服务配置模块
# ------------------------------
import re

from mod.base.web_conf import IpRestrict, Referer, NginxGzipMgr, NginxStaticCacheMgr
from mod.base import json_response, list_args
import public


class main(IpRestrict, Referer):   # 继承并使用同ip黑白名单限制
    def __init__(self):
        IpRestrict.__init__(self, config_prefix="")
        Referer.__init__(self, config_prefix="")

    @staticmethod
    def set_nginx_gzip(get):
        if public.get_webserver() != "nginx":
            return json_response(False, '当前Web服务器非Nginx,不支持设置')
        site_name = get.get('site_name/s', '')
        if not site_name:
            return json_response(False, '请指定站点名称')
        args = NginxGzipMgr.check_gzip_args(get)
        if isinstance(args, str):
            return json_response(False, args)
        ret = NginxGzipMgr().set_gzip(site_name, **args)
        if ret:
            return json_response(False, ret)

        return json_response(True, '设置成功')

    @staticmethod
    def remove_nginx_gzip(get):
        if public.get_webserver() != "nginx":
            return json_response(False, '当前Web服务器非Nginx,不支持设置')
        site_name = get.get('site_name/s', '')
        ret = NginxGzipMgr().remove_gzip(site_name)
        if ret:
            return json_response(False, ret)
        return json_response(True, '关闭成功')

    @staticmethod
    def get_nginx_gzip(get):
        if public.get_webserver() != "nginx":
            return json_response(False, '当前Web服务器非Nginx,不支持设置')
        site_name = get.get('site_name/s', '')
        ret, err = NginxGzipMgr().read_gzip(site_name)
        if err:
            return json_response(False, err)
        return json_response(True, '获取成功', data=ret)

    @staticmethod
    def set_nginx_static_cache(get):
        if public.get_webserver() != "nginx":
            return json_response(False, '当前Web服务器非Nginx,不支持设置')

        suffix = list_args(get, 'suffix')
        old_suffix = list_args(get, 'old_suffix')
        time_out = get.get('time_out/s', '')
        site_name = get.get('site_name/s', '')
        suffix = [i for i in suffix if i.strip() and not re.search(r"\s",  i)]
        old_suffix = [i for i in old_suffix if i.strip() and not re.search(r"\s",  i)]
        if not suffix or not site_name:
            return json_response(False, '请填写缓存后缀')
        if not re.match(r"^\d+[smhd]$", time_out):
            return json_response(False, '请填写正确的缓存时间')
        nsc = NginxStaticCacheMgr()
        err = nsc.can_set_cache(site_name)
        if err:
            return json_response(False, err)
        ret = nsc.set_cache(site_name, old_suffix, suffix, time_out)
        if ret:
            return json_response(False, ret)
        return json_response(True, '设置成功')

    @staticmethod
    def remove_nginx_static_cache(get):
        if public.get_webserver() != "nginx":
            return json_response(False, '当前Web服务器非Nginx,不支持设置')
        site_name = get.get('site_name/s', '')
        suffix = list_args(get, 'suffix')
        suffix = [i for i in suffix if i.strip() and not re.search(r"\s",  i)]
        if not suffix or not site_name:
            return json_response(False, '请填写缓存后缀')
        ret = NginxStaticCacheMgr().remove_cache(site_name, suffix)
        if ret:
            return json_response(False, ret)
        return json_response(True, '删除成功')

    @staticmethod
    def get_nginx_static_cache(get):
        if public.get_webserver() != "nginx":
            return json_response(False, '当前Web服务器非Nginx,不支持设置')
        site_name = get.get('site_name/s', '')
        if not site_name:
            return json_response(False, '请填写站点名称')
        ret = NginxStaticCacheMgr().read_cache(site_name)
        return json_response(True, '获取成功', data=ret)