# ************ CVE Search Proxy ************
@router.route('/cve-search/{path:path}', methods=['OPTIONS', 'HEAD', 'GET', 'POST', 'PUT', 'PATCH', 'DELETE'])
async def proxy_cve_search_api(req: Request) -> Response:
"""代理CVE Search API接口
具体CVE Search接口文档可访问docker-compose 启动的cve-search实例,通过对应的接口进行访问
如:接口文档地址: https://127.0.0.1[:expose_port]/api_docs
"""
path = req.path_params.get('path')
query = str(req.query_params)
headers = req.headers
method = req.method
# Get request body
try:
body = await req.body()
except Exception as e:
return Response(status_code=400, content=f'get request body info error: {e}')
q = '?' + query if query else ''
cve_search_url = settings.CVE_SEARCH_API_URL + '/' + path + q
# print(cve_search_url)
# Proxy Request
async with aiohttp.ClientSession() as session:
async with session.request(
method, cve_search_url, data=body, headers=headers, ssl=settings.CVE_SEARCH_PROXY_SSL_VERIFY
) as resp:
# print('proxy response status:', resp.status, resp.content)
content = await resp.content.read()
return Response(content=content, status_code=resp.status, headers=dict(resp.headers))