sharktide commited on
Commit
aa3c1b1
·
verified ·
1 Parent(s): 36edf9d

Update server/index.js

Browse files
Files changed (1) hide show
  1. server/index.js +13 -3
server/index.js CHANGED
@@ -145,6 +145,18 @@ function respondTextUploadTooLarge(res) {
145
  }
146
 
147
  async function verifyTurnstileToken(token, remoteIp) {
 
 
 
 
 
 
 
 
 
 
 
 
148
  const secret = process.env.TURNSTILE_SECRET_KEY;
149
  if (!token || !secret) throw new Error('Missing token or server not configured');
150
 
@@ -154,7 +166,7 @@ async function verifyTurnstileToken(token, remoteIp) {
154
  if (remoteIp) params.append('remoteip', remoteIp);
155
 
156
  const controller = new AbortController();
157
- const timeout = setTimeout(() => controller.abort(), 30000); // 30s
158
 
159
  try {
160
  const res = await fetch('https://challenges.cloudflare.com/turnstile/v0/siteverify', {
@@ -169,8 +181,6 @@ async function verifyTurnstileToken(token, remoteIp) {
169
  }
170
  }
171
 
172
-
173
-
174
  function loadStoredSHA() {
175
  try {
176
  if (!fs.existsSync(DATA_DIR)) fs.mkdirSync(DATA_DIR, { recursive: true });
 
145
  }
146
 
147
  async function verifyTurnstileToken(token, remoteIp) {
148
+ for (let attempt = 1; attempt <= 2; attempt++) {
149
+ try {
150
+ return await verifyOnce(token, remoteIp);
151
+ } catch (e) {
152
+ const isTimeout = e?.name === 'AbortError' || e?.cause?.code === 'UND_ERR_CONNECT_TIMEOUT';
153
+ if (!isTimeout || attempt === 2) throw e;
154
+ await new Promise(r => setTimeout(r, 500 * attempt));
155
+ }
156
+ }
157
+ }
158
+
159
+ async function verifyOnce(token, remoteIp) {
160
  const secret = process.env.TURNSTILE_SECRET_KEY;
161
  if (!token || !secret) throw new Error('Missing token or server not configured');
162
 
 
166
  if (remoteIp) params.append('remoteip', remoteIp);
167
 
168
  const controller = new AbortController();
169
+ const timeout = setTimeout(() => controller.abort(), 30000);
170
 
171
  try {
172
  const res = await fetch('https://challenges.cloudflare.com/turnstile/v0/siteverify', {
 
181
  }
182
  }
183
 
 
 
184
  function loadStoredSHA() {
185
  try {
186
  if (!fs.existsSync(DATA_DIR)) fs.mkdirSync(DATA_DIR, { recursive: true });