mirror of
https://github.com/letian1650/N3RD.git
synced 2025-01-24 19:45:01 +08:00
45 lines
1.9 KiB
Python
45 lines
1.9 KiB
Python
#!/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}') |