You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

3 lines
6.6 KiB
JavaScript

(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[510],{2067:e=>{"use strict";e.exports=require("node:async_hooks")},6195:e=>{"use strict";e.exports=require("node:buffer")},727:(e,t,n)=>{"use strict";n.r(t),n.d(t,{ComponentMod:()=>F,default:()=>L});var r={};n.r(r),n.d(r,{GET:()=>R,POST:()=>v,preferredRegion:()=>j,runtime:()=>H});var o={};n.r(o),n.d(o,{headerHooks:()=>G,originalPathname:()=>q,patchFetch:()=>z,requestAsyncStorage:()=>D,routeModule:()=>B,serverHooks:()=>X,staticGenerationAsyncStorage:()=>W,staticGenerationBailout:()=>$});var a=n(7875),i=n(8381),s=n(2251),l=n(9845),c=n(9579),u=n(7736),d=n(1480),p=n(572),h=n(5577);let f=Uint8Array,y=Uint32Array,g=Math.pow,k=new y(8),w=[],A=new y(64);function b(e){return(e-(0|e))*g(2,32)|0}let m=2,T=0;for(;T<64;){let e=!0;for(let t=2;t<=m/2;t++)m%t==0&&(e=!1);e&&(T<8&&(k[T]=b(g(m,.5))),w[T]=b(g(m,1/3)),T++),m++}let C=!!new f(new y([1]).buffer)[0];function x(e){return C?e>>>24|(e>>>16&255)<<8|(65280&e)<<8|e<<24:e}function S(e,t){return e>>>t|e<<32-t}function K(e){let t;let n=k.slice(),r=e.length,o=8*r,a=512-(o+64)%512-1+o+65,i=new f(a/8),s=new y(i.buffer);i.set(e,0),i[r]=128,s[s.length-1]=x(o);for(let e=0;e<a/32;e+=16){let r=n.slice();for(t=0;t<64;t++){let n;if(t<16)n=x(s[e+t]);else{let e=A[t-15],r=A[t-2];n=A[t-7]+A[t-16]+(S(e,7)^S(e,18)^e>>>3)+(S(r,17)^S(r,19)^r>>>10)}A[t]=n|=0;let o=(S(r[4],6)^S(r[4],11)^S(r[4],25))+(r[4]&r[5]^~r[4]&r[6])+r[7]+n+w[t],a=(S(r[0],2)^S(r[0],13)^S(r[0],22))+(r[0]&r[1]^r[2]&(r[0]^r[1]));for(let e=7;e>0;e--)r[e]=r[e-1];r[0]=o+a|0,r[4]=r[4]+o|0}for(t=0;t<8;t++)n[t]=n[t]+r[t]|0}return new f(new y(n.map(function(e){return x(e)})).buffer)}let U=new TextEncoder;function E(e){return e.reduce((e,t)=>{let n="00"+t.toString(16);return e+n.substring(n.length-2)},"")}function P(e){return E(K(U.encode(e)))}function _(e,t,n){let r=function(e,t){if(e.length>64&&(e=K(e)),e.length<64){let t=new Uint8Array(64);t.set(e,0),e=t}let n=new Uint8Array(64),r=new Uint8Array(64);for(let t=0;t<64;t++)n[t]=54^e[t],r[t]=92^e[t];let o=new Uint8Array(t.length+64);o.set(n,0),o.set(t,64);let a=new Uint8Array(96);return a.set(r,0),a.set(K(o),64),K(a)}("string"==typeof t?U.encode(t):t,"string"==typeof e?U.encode(e):e);return"hex"==n?E(r).toString():r}async function I(e,t,n){let r="hunyuan.tencentcloudapi.com",o="hunyuan",a="ChatCompletions",i=Math.floor(Date.now()/1e3),s=function(e){let t=new Date(1e3*e),n=t.getUTCFullYear(),r=("0"+(t.getUTCMonth()+1)).slice(-2),o=("0"+t.getUTCDate()).slice(-2);return`${n}-${r}-${o}`}(i),l=P(e),c="application/json",u=`content-type:${c}
host:`+r+"\nx-tc-action:"+a.toLowerCase()+"\n",d="content-type;host;x-tc-action",p=["POST","/","",u,d,l].join("\n"),h="TC3-HMAC-SHA256",f=P(p),y=s+"/"+o+"/tc3_request",g=_(s,"TC3"+n),k=_(o,g),w=_("tc3_request",k),A=_(h+"\n"+i+"\n"+y+"\n"+f,w,"hex");return{Authorization:h+" Credential="+t+"/"+y+", SignedHeaders="+d+", Signature="+A,"Content-Type":c,Host:r,"X-TC-Action":a,"X-TC-Timestamp":i.toString(),"X-TC-Version":"2023-09-01","X-TC-Region":""}}let M=(0,c.g)();async function O(e,{params:t}){if(console.log("[Tencent Route] params ",t),"OPTIONS"===e.method)return p.xk.json({body:"OK"},{status:200});let n=(0,h.I)(e,u.k8.Hunyuan);if(n.error)return p.xk.json(n,{status:401});try{return await N(e)}catch(e){return console.error("[Tencent] ",e),p.xk.json((0,d.B)(e))}}let R=O,v=O,H="edge",j=["arn1","bom1","cdg1","cle1","cpt1","dub1","fra1","gru1","hnd1","iad1","icn1","kix1","lhr1","pdx1","sfo1","sin1","syd1"];async function N(e){let t=new AbortController,n=M.tencentUrl||u.Mo;n.startsWith("http")||(n=`https://${n}`),n.endsWith("/")&&(n=n.slice(0,-1)),console.log("[Base Url]",n);let r=setTimeout(()=>{t.abort()},6e5),o=n,a=await e.text(),i={headers:await I(a,M.tencentSecretId,M.tencentSecretKey),method:e.method,body:a,redirect:"manual",duplex:"half",signal:t.signal};try{let e=await fetch(o,i),t=new Headers(e.headers);return t.delete("www-authenticate"),t.set("X-Accel-Buffering","no"),new Response(e.body,{status:e.status,statusText:e.statusText,headers:t})}finally{clearTimeout(r)}}let B=new i.AppRouteRouteModule({definition:{kind:s.x.APP_ROUTE,page:"/api/tencent/route",pathname:"/api/tencent",filename:"route",bundlePath:"app/api/tencent/route"},resolvedPagePath:"D:\\NextWeb\\app\\api\\tencent\\route.ts",nextConfigOutput:"standalone",userland:r}),{requestAsyncStorage:D,staticGenerationAsyncStorage:W,serverHooks:X,headerHooks:G,staticGenerationBailout:$}=B,q="/api/tencent/route";function z(){return(0,l.XH)({serverHooks:X,staticGenerationAsyncStorage:W})}let F=o,L=a.a.wrap(B)},5577:(e,t,n)=>{"use strict";n.d(t,{I:()=>s});var r=n(9579),o=n(5045),a=n.n(o),i=n(7736);function s(e,t){let{accessCode:n,apiKey:o}=function(e){let t=e.trim().replaceAll("Bearer ","").trim(),n=!t.startsWith(i.TW);return{accessCode:n?"":t.slice(i.TW.length),apiKey:n?t:""}}(e.headers.get("Authorization")??""),s=a().hash(n??"").trim(),l=(0,r.g)();if(console.log("[Auth] allowed hashed codes: ",[...l.codes]),console.log("[Auth] got access code:",n),console.log("[Auth] hashed access code:",s),console.log("[User IP] ",function(e){let t=e.ip??e.headers.get("x-real-ip"),n=e.headers.get("x-forwarded-for");return!t&&n&&(t=n.split(",").at(0)??""),t}(e)),console.log("[Time] ",new Date().toLocaleString()),l.needCode&&!l.codes.has(s)&&!o)return{error:!0,msg:n?"wrong access code":"empty access code"};if(l.hideUserApiKey&&o)return{error:!0,msg:"you are not allowed to access with your own api key"};if(o)console.log("[Auth] use user api key");else{let n;let o=(0,r.g)();switch(t){case i.k8.Stability:n=o.stabilityApiKey;break;case i.k8.GeminiPro:n=o.googleApiKey;break;case i.k8.Claude:n=o.anthropicApiKey;break;case i.k8.Doubao:n=o.bytedanceApiKey;break;case i.k8.Ernie:n=o.baiduApiKey;break;case i.k8.Qwen:n=o.alibabaApiKey;break;case i.k8.Moonshot:n=o.moonshotApiKey;break;case i.k8.Iflytek:n=o.iflytekApiKey+":"+o.iflytekApiSecret;break;case i.k8.DeepSeek:n=o.deepseekApiKey;break;case i.k8.XAI:n=o.xaiApiKey;break;case i.k8.ChatGLM:n=o.chatglmApiKey;break;case i.k8.SiliconFlow:n=o.siliconFlowApiKey;break;case i.k8.GPT:default:n=e.nextUrl.pathname.includes("azure/deployments")?o.azureApiKey:o.apiKey}n?(console.log("[Auth] use system api key"),e.headers.set("Authorization",`Bearer ${n}`)):console.log("[Auth] admin did not provide an api key")}return{error:!1}}},1480:(e,t,n)=>{"use strict";function r(e){let t=e;return("string"!=typeof e&&(e=JSON.stringify(e,null," ")),"{}"===e)?t.toString():e.startsWith("```json")?e:["```json",e,"```"].join("\n")}n.d(t,{B:()=>r})}},e=>{var t=t=>e(e.s=t);e.O(0,[297,45,579],()=>t(727));var n=e.O();(_ENTRIES="undefined"==typeof _ENTRIES?{}:_ENTRIES)["middleware_app/api/tencent/route"]=n}]);
//# sourceMappingURL=route.js.map