Spaces:
Running
Running
import { bingapiChat, bingapiImage, bingapiModel, bingapiModels } from '../../cloudflare/src/bingapi.js' | |
export const config = { | |
runtime: 'edge', | |
supportsResponseStreaming: true, | |
}; | |
/** | |
* 随机整数 [min,max) | |
* @param {number} min | |
* @param {number} max | |
* @returns | |
*/ | |
const getRandomInt = (min, max) => Math.floor(Math.random() * (max - min)) + min; | |
/** | |
* 生成随机字符串 | |
* @param {number} e | |
* @returns | |
*/ | |
const randomString = (e) => { | |
e = e || 32; | |
const t = "ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678_-+"; | |
var n = ""; | |
for (let i = 0; i < e; i++) n += t.charAt(getRandomInt(0, t.length)); | |
return n; | |
} | |
export default function ChatHandler(request) { | |
const CUSTOM_OPTIONS = { | |
BYPASS_SERVER: 'https://bypass.zklcdc.xyz', | |
APIKEY: process.env.APIKEY, | |
Go_Proxy_BingAI_BLANK_API_KEY: process.env.Go_Proxy_BingAI_BLANK_API_KEY, | |
KievRPSSecAuth: process.env.USER_KievRPSSecAuth || '', | |
_RwBf: process.env.USER_RwBf || '', | |
MUID: process.env.USER_MUID || '', | |
_U: process.env.Go_Proxy_BingAI_USER_TOKEN || '', | |
} | |
const cookie = request.headers.get('Cookie') || ''; | |
let cookies = cookie; | |
if (!cookie.includes('KievRPSSecAuth=')) { | |
if (CUSTOM_OPTIONS.KievRPSSecAuth.length !== 0) { | |
cookies += '; KievRPSSecAuth=' + CUSTOM_OPTIONS.KievRPSSecAuth; | |
} else { | |
cookies += '; KievRPSSecAuth=' + randomString(512); | |
} | |
} | |
if (!cookie.includes('_RwBf=')) { | |
if (CUSTOM_OPTIONS._RwBf.length !== 0) { | |
cookies += '; _RwBf=' + CUSTOM_OPTIONS._RwBf | |
} | |
} | |
if (!cookie.includes('MUID=')) { | |
if (CUSTOM_OPTIONS.MUID.length !== 0) { | |
cookies += '; MUID=' + CUSTOM_OPTIONS.MUID | |
} | |
} | |
if (!cookie.includes('_U=')) { | |
if (CUSTOM_OPTIONS._U.length !== 0) { | |
const _Us = CUSTOM_OPTIONS._U.split(','); | |
console.log(_Us[getRandomInt(0, _Us.length)]) | |
cookies += '; _U=' + _Us[getRandomInt(0, _Us.length)]; | |
} | |
} | |
CUSTOM_OPTIONS.cookie = cookies; | |
if (!CUSTOM_OPTIONS.Go_Proxy_BingAI_BLANK_API_KEY && CUSTOM_OPTIONS.APIKEY == '') { | |
CUSTOM_OPTIONS.APIKEY = 'sk-' + crypto.randomUUID().replace(/-/g, ''); | |
} | |
const currentUrl = new URL(request.url); | |
if ((currentUrl.pathname.startsWith('/v1/models/')) || (currentUrl.pathname.startsWith('/api/v1/models/'))) { | |
return bingapiModel(request, CUSTOM_OPTIONS); | |
} | |
if ((currentUrl.pathname === '/v1/models') || (currentUrl.pathname === '/api/v1/models')) { | |
return bingapiModels(request, CUSTOM_OPTIONS); | |
} | |
if ((currentUrl.pathname === '/v1/chat/completions') || (currentUrl.pathname === '/api/v1/chat/completions')) { | |
if (request.method == 'OPTIONS') { | |
return Response.json({ code: 200, message: 'OPTIONS', data: null }, { | |
headers: { | |
"Allow": "POST, OPTIONS", | |
"Access-Control-Allow-Origin": "*", | |
"Access-Control-Allow-Methods": "POST, OPTIONS", | |
"Access-Control-Allow-Headers": "Content-Type, Authorization, Cookie", | |
} | |
}); | |
} | |
if (request.method != 'POST') { | |
return Response.json({ code: 405, message: 'Method Not Allowed', data: null }, { status: 405 }); | |
} | |
return bingapiChat(request, CUSTOM_OPTIONS); | |
} | |
if (currentUrl.pathname.startsWith('/v1/images/generations') || currentUrl.pathname.startsWith('/api/v1/images/generations')) { | |
if (request.method == 'OPTIONS') { | |
return Response.json({ code: 200, message: 'OPTIONS', data: null }, { | |
headers: { | |
"Allow": "POST, OPTIONS", | |
"Access-Control-Allow-Origin": "*", | |
"Access-Control-Allow-Methods": "POST, OPTIONS", | |
"Access-Control-Allow-Headers": "Content-Type, Authorization, Cookie", | |
} | |
}); | |
} | |
if (request.method != 'POST') { | |
return Response.json({ code: 405, message: 'Method Not Allowed', data: null }, { status: 405 }); | |
} | |
return bingapiImage(request, Object.assign({ cookie: cookie }, CUSTOM_OPTIONS)); | |
} | |
return Response.json({ code: 404, message: 'API No Found', data: null }, { status: 404 }); | |
} |