somratpro Claude Sonnet 4.6 commited on
Commit
65662cc
·
1 Parent(s): e624c11

fix: proxy googleapis.com through Cloudflare and fix fetch duplex for POST streaming

Browse files

- Add googleapis.com to default CLOUDFLARE_PROXY_DOMAINS so Gemini API
calls route through CF Worker instead of going direct (HF blocks direct
connections to generativelanguage.googleapis.com)
- Fix duplex:"half" placement in patched fetch — must be a fetch() init
option not a Request constructor option; Node.js/undici only reads it
from fetch opts, causing POST streaming bodies to fail immediately

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

Files changed (2) hide show
  1. cloudflare-proxy.js +6 -6
  2. start.sh +1 -1
cloudflare-proxy.js CHANGED
@@ -177,16 +177,16 @@ if (PROXY_URL) {
177
  const proxiedUrl = new URL(url.pathname + url.search, proxy);
178
 
179
  if (request) {
180
- const newInit = {
181
  method: request.method,
182
  headers: mergedHeaders,
183
- body: request.body,
184
  redirect: request.redirect,
185
- duplex: "half",
186
  };
187
- // If body is null/undefined, don't set duplex as some Node versions throw
188
- if (!request.body) delete newInit.duplex;
189
- return originalFetch(new Request(proxiedUrl, newInit));
 
 
190
  }
191
 
192
  const newInit = {
 
177
  const proxiedUrl = new URL(url.pathname + url.search, proxy);
178
 
179
  if (request) {
180
+ const fetchOpts = {
181
  method: request.method,
182
  headers: mergedHeaders,
 
183
  redirect: request.redirect,
 
184
  };
185
+ if (request.body) {
186
+ fetchOpts.body = request.body;
187
+ fetchOpts.duplex = "half";
188
+ }
189
+ return originalFetch(String(proxiedUrl), fetchOpts);
190
  }
191
 
192
  const newInit = {
start.sh CHANGED
@@ -157,7 +157,7 @@ CLOUDFLARE_WORKERS_TOKEN="${CLOUDFLARE_WORKERS_TOKEN:-${CLOUDFLARE_API_TOKEN:-}}
157
  export CLOUDFLARE_WORKERS_TOKEN
158
  CF_PROXY_ENV_FILE="/tmp/huggingclaw-cloudflare-proxy.env"
159
  if [ -n "${CLOUDFLARE_WORKERS_TOKEN:-}" ] || [ -n "${CLOUDFLARE_PROXY_URL:-}" ]; then
160
- export CLOUDFLARE_PROXY_DOMAINS="${CLOUDFLARE_PROXY_DOMAINS:-api.telegram.org,web.whatsapp.com}"
161
  export CLOUDFLARE_PROXY_DEBUG="${CLOUDFLARE_PROXY_DEBUG:-true}"
162
  echo "☁️ Preparing Cloudflare outbound proxy..."
163
  python3 /home/node/app/cloudflare-proxy-setup.py || true
 
157
  export CLOUDFLARE_WORKERS_TOKEN
158
  CF_PROXY_ENV_FILE="/tmp/huggingclaw-cloudflare-proxy.env"
159
  if [ -n "${CLOUDFLARE_WORKERS_TOKEN:-}" ] || [ -n "${CLOUDFLARE_PROXY_URL:-}" ]; then
160
+ export CLOUDFLARE_PROXY_DOMAINS="${CLOUDFLARE_PROXY_DOMAINS:-api.telegram.org,web.whatsapp.com,googleapis.com}"
161
  export CLOUDFLARE_PROXY_DEBUG="${CLOUDFLARE_PROXY_DEBUG:-true}"
162
  echo "☁️ Preparing Cloudflare outbound proxy..."
163
  python3 /home/node/app/cloudflare-proxy-setup.py || true