1
0
Эх сурвалжийг харах

cfworker 和节点切换细节小调整

zjcqoo 6 жил өмнө
parent
commit
0f3f856506

+ 11 - 16
cf-worker/index.js

@@ -4,14 +4,14 @@
  */
 'use strict'
 
-const JS_VER = 2
+const JS_VER = 3
 
 const PREFLIGHT_INIT = {
   status: 204,
   headers: new Headers({
     'access-control-allow-origin': '*',
     'access-control-allow-methods': 'GET,POST,PUT,PATCH,TRACE,DELETE,HEAD,OPTIONS',
-    'access-control-allow-headers': '--raw-info,--level,--url,--referer,--cookie,--origin,--ext,--aceh,--ver,--type,--mode,accept,accept-charset,accept-encoding,accept-language,accept-datetime,authorization,cache-control,content-length,content-type,date,if-match,if-modified-since,if-none-match,if-range,if-unmodified-since,max-forwards,pragma,range,te,upgrade,upgrade-insecure-requests,x-requested-with,chrome-proxy',
+    'access-control-allow-headers': '--raw-info,--level,--url,--referer,--cookie,--origin,--ext,--aceh,--ver,--type,--mode,accept,accept-charset,accept-encoding,accept-language,accept-datetime,authorization,cache-control,content-length,content-type,date,if-match,if-modified-since,if-none-match,if-range,if-unmodified-since,max-forwards,pragma,range,te,upgrade,upgrade-insecure-requests,x-requested-with,chrome-proxy,purpose',
     'access-control-max-age': '1728000',
   }),
 }
@@ -68,7 +68,7 @@ async function handler(req) {
       acehOld = true
       break
     case 'raw-info':
-      [rawSvr, rawLen, rawEtag] = v.split(/[,|]/)
+      [rawSvr, rawLen, rawEtag] = v.split('|')
       break
     case 'level':
     case 'mode':
@@ -86,14 +86,12 @@ async function handler(req) {
       break
     }
   }
-
   if (extHdrs) {
     for (const [k, v] of pairs(extHdrs)) {
       reqHdrNew.set(k, v)
     }
   }
-
-  return tryUrl(urlObj, req.method, reqHdrNew, acehOld, rawLen, 0)
+  return proxy(urlObj, req.method, reqHdrNew, acehOld, rawLen, 0)
 }
 
 
@@ -102,13 +100,10 @@ async function handler(req) {
  * @param {URL} urlObj 
  * @param {string} method 
  * @param {Headers} headers 
- * @param {number} retryNum 
+ * @param {number} retryTimes 
  */
-async function tryUrl(urlObj, method, headers, acehOld, rawLen, retryNum) {
-  // proxy
+async function proxy(urlObj, method, headers, acehOld, rawLen, retryTimes) {
   const res = await fetch(urlObj.href, {method, headers})
-
-  // header filter
   const resHdrOld = res.headers
   const resHdrNew = new Headers(resHdrOld)
 
@@ -161,10 +156,10 @@ async function tryUrl(urlObj, method, headers, acehOld, rawLen, retryNum) {
   let body = res.body
 
   if (badLen) {
-    if (retryNum < 1) {
+    if (retryTimes < 1) {
       urlObj = await parseYtVideoRedir(urlObj, newLen, res)
       if (urlObj) {
-        return tryUrl(urlObj, method, headers, acehOld, rawLen, retryNum + 1)
+        return proxy(urlObj, method, headers, acehOld, rawLen, retryTimes + 1)
       }
     }
     status = 400
@@ -172,7 +167,7 @@ async function tryUrl(urlObj, method, headers, acehOld, rawLen, retryNum) {
     resHdrNew.set('cache-control', 'no-cache')
   }
 
-  resHdrNew.set('--retry', retryNum)
+  resHdrNew.set('--retry', retryTimes)
   resHdrNew.set('--ver', JS_VER)
 
   return new Response(body, {
@@ -186,10 +181,10 @@ async function tryUrl(urlObj, method, headers, acehOld, rawLen, retryNum) {
  * @param {URL} urlObj 
  */
 function isYtUrl(urlObj) {
-  const m =
+  return (
     urlObj.host.endsWith('.googlevideo.com') &&
     urlObj.pathname.startsWith('/videoplayback')
-  return m
+  )
 }
 
 /**

+ 2 - 2
lua/http-enc-res-hdr.lua

@@ -90,8 +90,8 @@ local function nodeSwitched()
   local addr = ngx.var.upstream_addr or ''
   local etag = ngx.header['etag'] or ''
   local last = ngx.header['last-modified'] or ''
-  -- TODO: , -> ,,
-  local info = addr .. ',' .. resLenStr .. ',' .. etag .. ',' .. last
+
+  local info = addr .. '|' .. resLenStr .. '|' .. etag .. '|' .. last
 
   -- clear all res headers
   local h, err = ngx.resp.get_headers()