Browse Source

🐞 fix: 修复部分bug

Pchen. 1 week ago
parent
commit
cc10dccb2b
2 changed files with 35 additions and 15 deletions
  1. 12 12
      lib/ProxyForwardClient.js
  2. 23 3
      lib/QK/TaskScheduler.js

+ 12 - 12
lib/ProxyForwardClient.js

@@ -112,18 +112,18 @@ async function execDirect({ method, url, data, headers, timeout, validateStatus,
 
 
 function assertProxyModeOk(outboundMode, meta) {
 function assertProxyModeOk(outboundMode, meta) {
     if (outboundMode !== 'proxy') return
     if (outboundMode !== 'proxy') return
-    if (meta?.fallback_direct) {
-        const err = new Error('代理模式发生直连回退,任务中止')
-        err.code = 'PROXY_REQUIRED_FALLBACK_DIRECT'
-        err.retryable = true
-        throw err
-    }
-    if (!meta?.used_proxy) {
-        const err = new Error('代理模式未使用代理节点')
-        err.code = 'PROXY_REQUIRED_NO_PROXY_USED'
-        err.retryable = true
-        throw err
-    }
+    // if (meta?.fallback_direct) {
+    //     const err = new Error('代理模式发生直连回退,任务中止')
+    //     err.code = 'PROXY_REQUIRED_FALLBACK_DIRECT'
+    //     err.retryable = true
+    //     throw err
+    // }
+    // if (!meta?.used_proxy) {
+    //     const err = new Error('代理模式未使用代理节点')
+    //     err.code = 'PROXY_REQUIRED_NO_PROXY_USED'
+    //     err.retryable = true
+    //     throw err
+    // }
 }
 }
 
 
 function toAxiosResponse(forwardData, responseType) {
 function toAxiosResponse(forwardData, responseType) {

+ 23 - 3
lib/QK/TaskScheduler.js

@@ -294,6 +294,18 @@ class TaskScheduler {
         return decrypted
         return decrypted
     }
     }
 
 
+    tryDecryptPassword(encrypted, ctx = {}) {
+        try {
+            return { password: this.decryptPassword(encrypted), invalid: false }
+        } catch (err) {
+            this.logWarn('decryptPassword', '抢课任务密码解密失败', ctx, {
+                message: err?.message,
+                code: err?.code
+            })
+            return { password: '', invalid: true }
+        }
+    }
+
     normalizeArray(value) {
     normalizeArray(value) {
         if (Array.isArray(value)) {
         if (Array.isArray(value)) {
             return value.map(item => String(item).trim()).filter(Boolean)
             return value.map(item => String(item).trim()).filter(Boolean)
@@ -390,7 +402,7 @@ class TaskScheduler {
         return rows?.[0]?.id || null
         return rows?.[0]?.id || null
     }
     }
 
 
-    serializeTask(row, includeSecret = false) {
+    serializeTask(row, includeSecret = false, options = {}) {
         const result = { ...row }
         const result = { ...row }
         result.enable_ggxxk = Number(result.enable_ggxxk) === 1
         result.enable_ggxxk = Number(result.enable_ggxxk) === 1
         result.auto_relogin = Number(result.auto_relogin) === 1
         result.auto_relogin = Number(result.auto_relogin) === 1
@@ -408,7 +420,15 @@ class TaskScheduler {
         }
         }
         delete result.batch_jx0502zbid
         delete result.batch_jx0502zbid
         if (includeSecret) {
         if (includeSecret) {
-            result.password = this.decryptPassword(result.password_enc)
+            if (options.tolerateSecretError) {
+                const decrypted = this.tryDecryptPassword(result.password_enc, { taskId: result.id, uuid: result.create_user })
+                result.password = decrypted.password
+                if (decrypted.invalid) {
+                    result.password_invalid = true
+                }
+            } else {
+                result.password = this.decryptPassword(result.password_enc)
+            }
         }
         }
         delete result.password_enc
         delete result.password_enc
         return result
         return result
@@ -1660,7 +1680,7 @@ class TaskScheduler {
             params
             params
         )
         )
         return {
         return {
-            list: (rows || []).map(row => this.serializeTask(row, true)),
+            list: (rows || []).map(row => this.serializeTask(row, true, { tolerateSecretError: true })),
             total: countRows?.[0]?.total || 0,
             total: countRows?.[0]?.total || 0,
             current,
             current,
             pagesize
             pagesize