|
@@ -0,0 +1,72 @@
|
|
|
|
|
+import time,re,hashlib
|
|
|
|
|
+from config import load_config,md5,conf
|
|
|
|
|
+import config
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+def get_file_md5(file_name):
|
|
|
|
|
+ """
|
|
|
|
|
+ 计算文件的md5
|
|
|
|
|
+ :param file_name:
|
|
|
|
|
+ :return m.hexdigest():
|
|
|
|
|
+ """
|
|
|
|
|
+ m = hashlib.md5() #创建md5对象
|
|
|
|
|
+ with open(file_name,'rb') as fobj:
|
|
|
|
|
+ while True:
|
|
|
|
|
+ data = fobj.read(1024)
|
|
|
|
|
+ if not data:
|
|
|
|
|
+ break
|
|
|
|
|
+ m.update(data) #更新md5对象
|
|
|
|
|
+
|
|
|
|
|
+ return m.hexdigest() #返回md5值
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+def time_checker(f):
|
|
|
|
|
+ # print(args[0]())
|
|
|
|
|
+ def wrapTheFunction(self, *args, **kwargs):
|
|
|
|
|
+ global md5 # 从config.py拿来一个全局变量md5 默认是False
|
|
|
|
|
+ if md5 == None:
|
|
|
|
|
+ _config = conf()
|
|
|
|
|
+ elif md5 == get_file_md5("./config.json"):
|
|
|
|
|
+ _config = conf()
|
|
|
|
|
+ # chat_time_module = _config["chat_time_module"]
|
|
|
|
|
+ # chat_start_time = _config["chat_start_time"]
|
|
|
|
|
+ # chat_stopt_time = _config["chat_stop_time"]
|
|
|
|
|
+ else:
|
|
|
|
|
+ print("检测到配置文件变化")
|
|
|
|
|
+ _config = load_config() # 启动时间支持热更改 修改config.json文件后即可生效
|
|
|
|
|
+ md5 = get_file_md5("./config.json")
|
|
|
|
|
+ # config.md5 = get_file_md5("./config.json")
|
|
|
|
|
+
|
|
|
|
|
+ chat_time_module = _config["chat_time_module"]
|
|
|
|
|
+ chat_start_time = _config["chat_start_time"]
|
|
|
|
|
+ chat_stopt_time = _config["chat_stop_time"]
|
|
|
|
|
+ # print(md5,chat_time_module,chat_start_time,chat_stopt_time)
|
|
|
|
|
+
|
|
|
|
|
+ if chat_time_module:
|
|
|
|
|
+ time_regex = re.compile(r'^([01]?[0-9]|2[0-4])(:)([0-5][0-9])$') #时间匹配,包含24:00
|
|
|
|
|
+
|
|
|
|
|
+ starttime_format_check = time_regex.match(chat_start_time) # 检查停止时间格式
|
|
|
|
|
+ stoptime_format_check = time_regex.match(chat_stopt_time) # 检查停止时间格式
|
|
|
|
|
+ chat_time_check = chat_start_time < chat_stopt_time # 确定启动时间<停止时间
|
|
|
|
|
+
|
|
|
|
|
+ if starttime_format_check and stoptime_format_check and chat_time_check:
|
|
|
|
|
+ # print('服务启动时间:{}'.format(CHAT_START_TIME))
|
|
|
|
|
+ # print('服务结束时间:{}'.format(CHAT_STOP_TIME))
|
|
|
|
|
+ if chat_start_time>"23:59":
|
|
|
|
|
+ print('启动时间可能存在问题,请修改')
|
|
|
|
|
+ else:
|
|
|
|
|
+ print("时间格式不正确,请在config.json中修改您的CHAT_START_TIME/CHAT_STOP_TIME,否则可能会影响您正常使用,程序正在自动退出")
|
|
|
|
|
+
|
|
|
|
|
+ now_time = time.strftime("%H:%M", time.localtime())
|
|
|
|
|
+ if chat_start_time <= now_time <= chat_stopt_time:
|
|
|
|
|
+ # print("在服务时间内")
|
|
|
|
|
+ # 正常请求并返回
|
|
|
|
|
+ f(self, *args, **kwargs)
|
|
|
|
|
+ return None
|
|
|
|
|
+ else:
|
|
|
|
|
+ print('不在服务时间内,禁止访问')
|
|
|
|
|
+ return None
|
|
|
|
|
+ else:
|
|
|
|
|
+ f(self, *args, **kwargs)
|
|
|
|
|
+ return wrapTheFunction
|
|
|
|
|
+
|