diff --git a/base/rules.db b/base/rules.db index eb231fc420d91b680112ae26f657c5561227605f..fb49499917ed6bc5ae9af2f2cb91b58268ab3c07 100644 Binary files a/base/rules.db and b/base/rules.db differ diff --git a/controllers/admin.py b/controllers/admin.py index 0054512469533fb967d5a8c65905730ef1843d33..12f48291d1faf1757a873be6a46ecd8eda9d8034 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 53d5ca26a386f91c5ec5bd85eb7e707a09bacd85..20624d16b3e202a75fdaae790c005f7a1a399846 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 0000000000000000000000000000000000000000..c4ea381793b08e606d17abe423899f926422ed6a --- /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 d7ff4ee56f83ba4bab964e75d1ad47b7174c4244..438325502eb3224287624f56164308278ca93dca 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 6e1c41092d970e94e54574fc1a02cb26e13132f1..fd9149f3617b1831620d7a27effb0fa5f3654fdb 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 2dbf275ea6fc184ec65553e69a41b915247233b4..d88528f213b0da7a1ca0f48008205017066554d7 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: