You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
chore: redact val.town from code and docs, rename exit-node script
The val.town founder asked us not to promote using their service. This
commit removes every val.town reference from the codebase and rewrites
the exit-node guides to be platform-agnostic.
Changes:
- Renamed assets/exit_node/valtown.ts → assets/exit_node/exit_node.ts.
TypeScript itself is unchanged — same web-standard Request/Response/
fetch API that runs on any serverless runtime.
- Rewrote assets/exit_node/README.md and README.fa.md to recommend
Deno Deploy as the primary host for users who want a free serverless
TS endpoint, with fly.io and your-own-VPS as alternatives. CF Workers
is explicitly called out as not-helpful (CF outbound is still on
CF's flagged IP space).
- Updated all val.town mentions in source comments (src/config.rs,
src/domain_fronter.rs, src/bin/ui.rs) to neutral wording.
- Updated config.exit-node.example.json `_comment` strings and the
example URL.
- Updated main README.md FAQ entries (Persian + English) and
docs/guide.md / docs/guide.fa.md.
- Old changelog files (v1.9.4 / v1.9.5 / v1.9.9) had val.town mentions
retroactively replaced too — same redaction principle.
- Bumped to v1.9.10 with a changelog noting the rename + Telegram
channel brief format from earlier today.
Users who already have an exit node deployed (on whichever host they
picked) don't need to change anything — the wire protocol is identical
and the renamed script is byte-identical to the old one.
Tests: 179 lib + 35 tunnel-node green.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: README.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -154,7 +154,7 @@ If something doesn't work:
154
154
155
155
**YouTube videos don't play.** YouTube's video chunks come from `googlevideo.com`, which Apps Script can't reach (Google blocks Apps Script from accessing Google's own video CDN). The page itself loads fine; only video playback is affected. Fix: Full Tunnel + VPS, or add `.googlevideo.com` to `passthrough_hosts` in your config (browser hits it directly, but on Iran ISPs it's still throttled).
156
156
157
-
**ChatGPT / Claude / Grok shows a Cloudflare CAPTCHA.** Cloudflare flags Google datacenter IPs as bots. Fix: set up an **exit node**(a free 5-minute thing on val.town that bridges Apps Script → val.town → claude.ai). See [`assets/exit_node/README.md`](assets/exit_node/README.md).
157
+
**ChatGPT / Claude / Grok shows a Cloudflare CAPTCHA.** Cloudflare flags Google datacenter IPs as bots. Fix: set up an **exit node**— a small TypeScript handler you deploy on a serverless host (Deno Deploy, fly.io, your own VPS) that bridges Apps Script → your exit node → claude.ai. See [`assets/exit_node/README.md`](assets/exit_node/README.md).
158
158
159
159
**Telegram is unstable.** Telegram uses MTProto, which Apps Script doesn't speak. Pair with [xray](https://github.com/XTLS/Xray-core) on your machine — see [Telegram via xray in the full guide](docs/guide.md#telegram-via-xray).
160
160
@@ -324,7 +324,7 @@ System Settings → Network → Wi-Fi → Details → **Proxies** → هر دو
324
324
325
325
**ویدیوی یوتیوب پخش نمیشود.** chunkهای ویدیوی یوتیوب از `googlevideo.com` میآیند و Apps Script نمیتواند به آن برسد (گوگل اجازهٔ دسترسی Apps Script به CDN ویدیوی خودش را نمیدهد). صفحهٔ خود یوتیوب لود میشود، فقط پخش ویدیو تحت تأثیر است. راهحل: Full Tunnel + VPS، یا `.googlevideo.com` را به `passthrough_hosts` در کانفیگت اضافه کن (مرورگر مستقیم میرود اما روی ISP ایران throttle میخورد).
326
326
327
-
**ChatGPT / Claude / Grok کپچای Cloudflare نشان میدهد.** Cloudflare آیپیهای دیتاسنتر گوگل را بهعنوان bot شناسایی میکند. راهحل: یک **exit node** راهاندازی کن (پنج دقیقه روی val.town رایگان — پل بین Apps Script و سایت Cloudflare). [`assets/exit_node/README.fa.md`](assets/exit_node/README.fa.md).
327
+
**ChatGPT / Claude / Grok کپچای Cloudflare نشان میدهد.** Cloudflare آیپیهای دیتاسنتر گوگل را بهعنوان bot شناسایی میکند. راهحل: یک **exit node** راهاندازی کن — یک handler کوچک TypeScript که روی یک host serverless (Deno Deploy، fly.io، VPS شخصی) deploy میکنی و پل میسازه از Apps Script به سایت Cloudflare. [`assets/exit_node/README.fa.md`](assets/exit_node/README.fa.md).
328
328
329
329
**تلگرام پایدار نیست.** تلگرام از MTProto استفاده میکند که Apps Script نمیفهمد. روی کامپیوترت با [xray](https://github.com/XTLS/Xray-core) جفتش کن — [بخش تلگرام در راهنمای کامل](docs/guide.fa.md#تلگرام-با-xray).
اسکریپت یک فایل self-contained است. هر host که میتوانید signup کنید +
91
+
بهاش اعتماد دارید رو انتخاب کنید:
92
+
93
+
| Host | توضیحات |
94
+
|---|---|
95
+
|**Deno Deploy** ([deno.com/deploy](https://deno.com/deploy)) | free tier برای personal use کافی است. با `deployctl deploy --prod exit_node.ts` یا GitHub Actions deploy کنید. همان web-standard API. |
96
+
|**fly.io**| free tier با محدودیت. handler رو در یک server thin بستهبندی کنید (`Deno.serve(handler)` برای Deno یا یک Express wrapper برای Node) + Dockerfile اضافه کنید. IP دائم، region جغرافیایی قابل انتخاب. |
97
+
|**VPS شخصی خودت**|`deno run --allow-net wrapper.ts` که `wrapper.ts` کارش `Deno.serve({ port: 8443 }, handler)` است. حداکثر کنترل، ~۳-۵ دلار در ماه. |
98
+
|**Cloudflare Workers**|**کمک نمیکنه.** CF Workers از IP space خود CF خروج میکنن، که CF anti-bot هنوز بهعنوان worker-internal flag میکنه. |
99
+
100
+
برای اکثر کاربرانی که مسیر local رو اجرا میکنن، Deno Deploy
101
+
سریعترین setup است. برای deployment طولانیمدت تحت کنترل کامل
102
+
خودت، VPS کوچک شخصی ایدهآل است.
103
+
83
104
## انتخاب `selective` vs `full`
84
105
85
106
| Mode | چی میکنه | کی استفاده کنید |
86
107
|---|---|---|
87
108
|`selective` (default) | فقط hosts در `hosts` از طریق exit node میرن؛ بقیه از مسیر Apps Script عادی | توصیه میشه. exit-node hop ~۲۰۰-۵۰۰ms به هر request اضافه میکنه — برای سایتهایی reserve کنید که نیاز به non-Google IP دارن. |
88
-
|`full`| همهی requestها از طریق exit node میرن | فقط زمانی که کل workload شما CF-anti-bot affected است، یا exit node خود از Apps Script سریعتر روی مسیر شبکه شما (rare). budget runtime val.town رو برای سایتهایی که نیاز ندارن میسوزونه. |
109
+
|`full`| همهی requestها از طریق exit node میرن | فقط زمانی که کل workload شما CF-anti-bot affected است، یا exit node خود سریعتر روی مسیر شبکه شما (rare). budget runtime host رو برای سایتهایی که نیاز ندارن میسوزونه. |
89
110
90
111
## رفتار در صورت failure
91
112
@@ -98,39 +119,25 @@ exit node down شما رو fully offline نمیکنه.
98
119
99
120
## Security model
100
121
101
-
PSK تنها چیز است که مانع میشه val.town endpoint یک public open proxy
122
+
PSK تنها چیز است که مانع میشه endpoint deployed یک public open proxy
102
123
بشه. مثل password برخورد کنید:
103
124
104
-
-**commit نکنید** PSK رو به source control. منبع val.town بهطور
105
-
default برای account شما private است؛ همانطور نگه دارید.
125
+
-**commit نکنید** PSK رو به source control. اکثر hostها بهطور default
126
+
کد deployed رو private نگه میدارن؛ همانطور نگه دارید.
106
127
-**publicly share نکنید** PSK رو. هر کسی که هم URL هم PSK رو داره
107
-
میتونه quota val.town شما رو بهعنوان proxy خود استفاده کنه.
108
-
-**rotate** اگر leak مشکوک هست. PSK رو در val.town source تغییر بدید،
109
-
save کنید، سپس `psk` در `config.json` mhrv-rs رو update + restart.
128
+
میتونه quota host شما رو بهعنوان proxy خود استفاده کنه.
129
+
-**rotate** اگر leak مشکوک هست. PSK رو در source deployed تغییر بدید،
130
+
redeploy کنید، سپس `psk` در `config.json` mhrv-rs رو update + restart.
110
131
111
-
اسکریپت val.town شامل **loop guard**هم هست (refuse میکنه fetch host
112
-
خود) + **placeholder check** (در صورت `PSK === "CHANGE_ME_TO_A_STRONG_SECRET"`
132
+
اسکریپت همچنین شامل **loop guard** هست (refuse میکنه fetch host خود)
133
+
+**placeholder check** (در صورت `PSK === "CHANGE_ME_TO_A_STRONG_SECRET"`
113
134
return 503 میکنه) تا یک fresh deploy بدون setup نتونه بهطور
114
135
accidentally بهعنوان open relay سرو بشه.
115
136
116
-
## پلتفرمهای جایگزین
117
-
118
-
اسکریپت `valtown.ts` plain TypeScript است که از web-standard APIs
119
-
(`Request`، `Response`، `fetch`) استفاده میکنه. اجرا میشه روی:
120
-
121
-
-**val.town** — سادهترین، free tier کافی برای personal use
122
-
-**Deno Deploy** — API مشابه؛ deploy با `deployctl`
123
-
-**fly.io** — نیاز به `Dockerfile` wrapper؛ region geographic ثابت
124
-
-**Cloudflare Workers** — کمک نمیکنه (CF Workers از IP space خود CF
125
-
خروج میکنن، که CF anti-bot هنوز بهعنوان worker-internal flag میکنه)
126
-
127
-
برای اکثر کاربران، val.town انتخاب درست است. Deno Deploy اگر option
128
-
non-val.town برای redundancy میخواید.
129
-
130
137
## چرا default-on نیست
131
138
132
139
- ۲۰۰-۵۰۰ms به هر request اضافه میکنه (hop اضافی)
133
-
- budget bandwidth free-tier val.town رو میسوزونه
140
+
- budget bandwidth free-tier host رو میسوزونه
134
141
- برای سایتهایی که CF anti-bot ندارن benefit نداره
135
142
- Setup یک account جداگانه روی پلتفرم third-party میخواد
0 commit comments