123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- #!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- # File : common_api.py
- # Author: DaShenHan&道长-----先苦后甜,任凭晚风拂柳颜------
- # Author's Blog: https://blog.csdn.net/qq_32394351
- # Date : 2023/3/22
- from utils import parser
- from utils.env import get_env
- from base.R import R
- from flask import request,redirect
- from utils.log import logger
- def js_render(name):
- if not name or not name.split('.')[-1] in ['js','txt','py','json']:
- return R.error(f'非法猥亵,未指定文件名。必须包含js|txt|json|py')
- try:
- env = get_env()
- # print(env)
- if env.get('js_proxy'):
- js_proxy = env['js_proxy']
- burl = request.base_url
- if '=>' in js_proxy:
- oldsrc = js_proxy.split('=>')[0]
- if oldsrc in burl:
- newsrc = js_proxy.split('=>')[1]
- # print(f'js1源代理已启用,全局替换{oldsrc}为{newsrc}')
- rurl = burl.replace(oldsrc, newsrc)
- if burl != rurl:
- jscode = parser.getJs(name, 'js')
- # rjscode = render_template_string(jscode, env=env)
- rjscode = jscode
- for k in env:
- # print(f'${k}', f'{env[k]}')
- if f'${k}' in rjscode:
- rjscode = rjscode.replace(f'${k}', f'{env[k]}')
- # rjscode = render_template_string(jscode, **env)
- if rjscode.strip() == jscode.strip(): # 无需渲染才代理
- return redirect(rurl)
- else:
- logger.info(f'{name}由于存在环境变量无法被依赖代理')
- return parser.toJs(name,'js',env)
- except Exception as e:
- return R.error(f'非法猥亵\n{e}')
|