From 9dfafd5d480f3530968e0508dd53007fc9bfc7a6 Mon Sep 17 00:00:00 2001 From: hjdhnx Date: Tue, 6 Dec 2022 10:32:05 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=A4=96=E9=83=A8=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E7=8E=AF=E5=A2=83=E5=8F=98=E9=87=8F=E7=9A=84=E6=96=B9?= =?UTF-8?q?=E6=B3=95=E7=A4=BA=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- base/rules.db | Bin 155648 -> 155648 bytes controllers/admin.py | 13 ++++- js/version.txt | 2 +- ...57\345\242\203\345\217\230\351\207\217.py" | 48 ++++++++++++++++++ readme.md | 2 + utils/env.py | 17 ++++++- utils/web.py | 1 + 7 files changed, 80 insertions(+), 3 deletions(-) create mode 100644 "py/\345\244\226\351\203\250\346\233\264\346\226\260\347\216\257\345\242\203\345\217\230\351\207\217.py" diff --git a/base/rules.db b/base/rules.db index eb231fc420d91b680112ae26f657c5561227605f..fb49499917ed6bc5ae9af2f2cb91b58268ab3c07 100644 GIT binary patch delta 111 zcmV-#0FeKHzzKlB36L8BIguPg0XeZ?rhfsulLvq}0lTr0VFMxwlmP1h6N61fPF8y& zVrgt?Ut@1?YiVU7I)P3c1ppI+8I$9Ks2?mMbY*jNUuAA~B03`GwTtMlmFJGH<)VY- RkC^F)kAsSYw~B-TcH87uE%pEa delta 53 zcmV-50LuS>zzKlB36L8BG?5%b0W`5-rhft3lLvq}0o$>Wn*#`eE*u2_6M|Wj!-J@U Li-fm}gaLKi3Q!cN diff --git a/controllers/admin.py b/controllers/admin.py index 0054512..12f4829 100644 --- a/controllers/admin.py +++ b/controllers/admin.py @@ -14,7 +14,7 @@ from utils.log import logger import shutil from utils.update import getLocalVer,getOnlineVer,download_new_version,download_lives,copy_to_update from utils import parser -from utils.env import get_env +from utils.env import get_env,update_env from utils.web import getParmas,verfy_token from js.rules import getRules,getCacheCount from utils.parser import runJScode @@ -69,6 +69,17 @@ def admin_save_conf(): # 管理员界面 res_id = lsg.setItem(key,value) return R.success(f'修改成功,记录ID为:{res_id}') +@admin.route('/update_env',methods=['POST']) +def admin_update_env(): # 更新环境变量中的某个值 + if not verfy_token(): + # return render_template('login.html') + return R.error('请登录后再试') + key = getParmas('key') + value = getParmas('value') + print(f'key:{key},value:{value}') + ENV = update_env(key,value) + return R.success(f'修改成功,最新的完整ENV见data',data=ENV) + @admin.route("/view/",methods=['GET']) def admin_view_rule(name): diff --git a/js/version.txt b/js/version.txt index 53d5ca2..20624d1 100644 --- a/js/version.txt +++ b/js/version.txt @@ -1 +1 @@ -3.9.30 \ No newline at end of file +3.9.30beta1 \ No newline at end of file diff --git "a/py/\345\244\226\351\203\250\346\233\264\346\226\260\347\216\257\345\242\203\345\217\230\351\207\217.py" "b/py/\345\244\226\351\203\250\346\233\264\346\226\260\347\216\257\345\242\203\345\217\230\351\207\217.py" new file mode 100644 index 0000000..c4ea381 --- /dev/null +++ "b/py/\345\244\226\351\203\250\346\233\264\346\226\260\347\216\257\345\242\203\345\217\230\351\207\217.py" @@ -0,0 +1,48 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# File : 外部更新环境变量.py +# Author: DaShenHan&道长-----先苦后甜,任凭晚风拂柳颜------ +# Date : 2022/12/6 + +import requests + +class Drpy: + def __init__(self,url,username='admin',password='drpy'): + s = requests.session() + data = { + 'username': username, + 'password': password, + } + print(data) + login_api = f'{url.rstrip("/")}/admin/login' + try: + r = s.post(login_api, data=data) + print(r.cookies) + print(r.text) + self.env_api = f'{url.rstrip("/")}/admin/update_env' + self.s = s + print('drpy连接成功') + except: + self.s = None + print('drpy连接失败') + + + def update_env(self,key,value): + if not self.s: + exit('drpy未连接,无法进行操作') + else: + data = { + 'key':key, + 'value':value, + } + r = self.s.post(self.env_api,data=data) + jsonData = r.json() + if jsonData.get('code') == 200: + print('修改成功') + print(jsonData['data']) + else: + print('修改失败') + +if __name__ == '__main__': + drpy = Drpy('http://localhost:5705/') + drpy.update_env('test_env','测试环境变量') \ No newline at end of file diff --git a/readme.md b/readme.md index d7ff4ee..4383255 100644 --- a/readme.md +++ b/readme.md @@ -49,6 +49,8 @@ [dockerfile教程](https://blog.csdn.net/qq_46158060/article/details/125718218) [获取本地设备信息](https://blog.csdn.net/cui_yonghua/article/details/125508991) [获取本地设备信息](https://m.jb51.net/article/140716.htm) +###### 2022/12/6 +- [X] 增加外部更新环境变量的方法,详情参考 /py/外部更新环境变量.py,可以自行用js等其他语言实现调用 ###### 2022/12/4 - [X] 修复js1 post搜索时未传递规则请求头信息bug - [X] alist.js更新,增加了首页推荐 diff --git a/utils/env.py b/utils/env.py index 6e1c410..fd9149f 100644 --- a/utils/env.py +++ b/utils/env.py @@ -30,4 +30,19 @@ def get_env(): if ENV: env.update(ENV) # print(env) - return env \ No newline at end of file + return env + +def update_env(env_key:str,env_value:str): + lsg = storage_service() + env = lsg.getItem('ENV') + ENV = {} + try: + ENV = ujson.loads(env) + except: + env = '{}' + if env_key: + ENV[env_key] = env_value + new_env = ujson.dumps(ENV,ensure_ascii=False) + print(new_env) + lsg.setItem('ENV',new_env) + return ENV \ No newline at end of file diff --git a/utils/web.py b/utils/web.py index 2dbf275..d88528f 100644 --- a/utils/web.py +++ b/utils/web.py @@ -18,6 +18,7 @@ def getParmas(key=None,value=''): :return: """ content_type = request.headers.get('Content-Type') + # print(content_type) args = {} if request.method == 'POST': if 'application/x-www-form-urlencoded' in content_type or 'multipart/form-data' in content_type: -- GitLab