Skip to content

Commit a438d9b

Browse files
sazidclaude
andcommitted
Add domain whitelist documentation for firewall/proxy configuration
Comprehensive list of all external domains Zeuz Node needs access to, covering package managers, browser downloads, WebDrivers, GCP, Snowflake, Android SDK, OCR models, and optional test-runtime services. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent e6c16c6 commit a438d9b

1 file changed

Lines changed: 385 additions & 0 deletions

File tree

docs/DOMAIN_WHITELIST.md

Lines changed: 385 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,385 @@
1+
# Domain Whitelist for Zeuz Node
2+
3+
Domain whitelist for organizations running Zeuz Node behind a firewall or proxy. Covers all
4+
external network dependencies: package managers, browser downloads, driver binaries, cloud
5+
services, and runtime APIs used by the framework and its sub-applications.
6+
7+
> **Source**: [Zeuz_Python_Node](https://github.com/AutomationSolutionz/Zeuz_Python_Node)
8+
> repository analysis — `pyproject.toml`, `Apps/`, `Framework/install_handler/`, and
9+
> runtime code in `Framework/Built_In_Automation/`.
10+
11+
---
12+
13+
## Table of Contents
14+
15+
- [Core Package Managers](#core-package-managers)
16+
- [GitHub / Source Hosting](#github--source-hosting)
17+
- [Go Module Proxy](#go-module-proxy)
18+
- [Browser Downloads & WebDrivers](#browser-downloads--webdrivers)
19+
- [Mobile Testing (Appium / Android / iOS)](#mobile-testing-appium--android--ios)
20+
- [Google Cloud Platform](#google-cloud-platform)
21+
- [Snowflake](#snowflake)
22+
- [OCR Models (EasyOCR / PyTorch)](#ocr-models-easyocr--pytorch)
23+
- [Temporary Email Services](#temporary-email-services)
24+
- [Chrome Extension Downloads](#chrome-extension-downloads)
25+
- [Security Testing Tools](#security-testing-tools)
26+
- [mitmproxy](#mitmproxy)
27+
- [Zeuz Server](#zeuz-server)
28+
- [TLS / Certificate Validation](#tls--certificate-validation)
29+
- [Consolidated List](#consolidated-list)
30+
31+
---
32+
33+
## Core Package Managers
34+
35+
### Python (uv / pip / PyPI)
36+
37+
| Domain | Purpose |
38+
|--------|---------|
39+
| `pypi.org` | Package index |
40+
| `pypi.python.org` | Legacy package index |
41+
| `files.pythonhosted.org` | Package file downloads |
42+
| `python.org` | Python installer downloads |
43+
| `astral.sh` | `uv` package manager website |
44+
45+
The `uv` binary itself is downloaded from GitHub releases (`github.com/astral-sh/uv`).
46+
47+
### Node.js / npm
48+
49+
| Domain | Purpose |
50+
|--------|---------|
51+
| `nodejs.org` | Node.js binary downloads (used by `nodejs_appium_installer.py`) |
52+
| `registry.npmjs.org` | npm package registry (Appium server, AI Recorder 2 deps) |
53+
54+
**Note**: No Yarn domains needed. The project uses npm exclusively.
55+
56+
### Go Modules (node_runner)
57+
58+
| Domain | Purpose |
59+
|--------|---------|
60+
| `proxy.golang.org` | Go module proxy (default) |
61+
| `sum.golang.org` | Go checksum database |
62+
| `storage.googleapis.com` | Go module/binary storage |
63+
64+
The `Apps/node_runner/` Go app has no external dependencies currently (`go.mod` has zero
65+
`require` directives), but Go tooling still contacts these for builds.
66+
67+
---
68+
69+
## GitHub / Source Hosting
70+
71+
| Domain | Purpose |
72+
|--------|---------|
73+
| `github.com` | Repo cloning, release downloads, `uv` binary, PyGetWindow fork, Arachni, WebDriverAgent |
74+
| `api.github.com` | GitHub API (Arachni latest release lookup) |
75+
| `raw.githubusercontent.com` | Raw file downloads (inspector.exe for Windows) |
76+
| `codeload.github.com` | Archive downloads (PyGetWindow zip) |
77+
| `objects.githubusercontent.com` | Release asset downloads |
78+
| `github-releases.githubusercontent.com` | Release binary downloads (EasyOCR models, uv, etc.) |
79+
80+
Referenced repos:
81+
- `AutomationSolutionz/PyGetWindow-0.0.5` — custom fork (zip source install)
82+
- `AutomationSolutionz/Zeuz_Python_Node_Setup` — inspector.exe
83+
- `AutomationSolutionz/InstallerHelperFiles` — poppler_win.zip
84+
- `JaidedAI/EasyOCR` — OCR model weights
85+
- `Arachni/arachni` — security scanner releases
86+
- `appium/WebDriverAgent` — iOS WebDriver cloning
87+
- `astral-sh/uv` — uv binary releases
88+
89+
---
90+
91+
## Browser Downloads & WebDrivers
92+
93+
### Playwright Browsers
94+
95+
| Domain | Purpose |
96+
|--------|---------|
97+
| `playwright.azureedge.net` | Playwright browser binaries (Chromium, Firefox, WebKit) |
98+
99+
### Selenium / WebDriver Manager
100+
101+
| Domain | Purpose |
102+
|--------|---------|
103+
| `googlechromelabs.github.io` | Chrome for Testing version JSON (last-known-good, known-good-versions) |
104+
| `storage.googleapis.com` | ChromeDriver binary downloads |
105+
| `edgedl.me.gvt1.com` | ChromeDriver alternative CDN |
106+
| `msedgedriver.azureedge.net` | Edge WebDriver downloads |
107+
108+
WebDriver Manager also uses GitHub releases for GeckoDriver (covered by `github.com` above).
109+
110+
### Browser Installers (install_handler)
111+
112+
| Domain | Purpose |
113+
|--------|---------|
114+
| `go.microsoft.com` | Edge browser installer redirects |
115+
| `download.mozilla.org` | Firefox installer downloads |
116+
117+
The `go.microsoft.com` URLs redirect to Microsoft CDN domains — you may also need:
118+
- `msedge.sf.dl.delivery.mp.microsoft.com`
119+
- `officecdn-microsoft-com.akamaized.net`
120+
121+
(Exact redirect targets vary by region.)
122+
123+
---
124+
125+
## Mobile Testing (Appium / Android / iOS)
126+
127+
### Android SDK & JDK
128+
129+
| Domain | Purpose |
130+
|--------|---------|
131+
| `dl.google.com` | Android SDK command-line tools |
132+
| `download.oracle.com` | Oracle JDK 21 downloads |
133+
| `api.adoptium.net` | Eclipse Temurin JDK API (alternative JDK source) |
134+
| `github.com` | Adoptium release binary downloads (redirects to `objects.githubusercontent.com`) |
135+
136+
### iOS
137+
138+
| Domain | Purpose |
139+
|--------|---------|
140+
| `github.com` | WebDriverAgent cloning (`appium/WebDriverAgent`) |
141+
142+
### Appium Server
143+
144+
Appium is installed via npm — covered by `registry.npmjs.org` above. The Appium Python
145+
client communicates only with the local Appium server instance.
146+
147+
---
148+
149+
## Google Cloud Platform
150+
151+
Required by `google-cloud-bigquery`, `google-cloud-bigquery-storage`, and
152+
`google-cloud-storage` dependencies.
153+
154+
| Domain | Purpose |
155+
|--------|---------|
156+
| `storage.googleapis.com` | Cloud Storage API + general Google CDN |
157+
| `bigquery.googleapis.com` | BigQuery API |
158+
| `bigquerystorage.googleapis.com` | BigQuery Storage API |
159+
| `oauth2.googleapis.com` | OAuth 2.0 token endpoint |
160+
| `accounts.google.com` | Google account authentication |
161+
| `www.googleapis.com` | Google API discovery + legacy endpoints |
162+
163+
---
164+
165+
## Snowflake
166+
167+
Required by `snowflake-connector-python`.
168+
169+
| Domain | Purpose |
170+
|--------|---------|
171+
| `*.snowflakecomputing.com` | Snowflake account endpoints |
172+
| `ocsp.snowflakecomputing.com` | Snowflake OCSP certificate validation |
173+
174+
> **Recommendation**: Replace `*` with your organization's specific Snowflake account
175+
> subdomain (e.g., `myorg.snowflakecomputing.com`) for tighter control.
176+
177+
---
178+
179+
## OCR Models (EasyOCR / PyTorch)
180+
181+
The bundled EasyOCR module downloads pre-trained models at runtime.
182+
183+
| Domain | Purpose |
184+
|--------|---------|
185+
| `github.com` | EasyOCR model releases (`JaidedAI/EasyOCR`) |
186+
| `github-releases.githubusercontent.com` | Model zip file downloads |
187+
| `download.pytorch.org` | PyTorch pre-trained ResNet weights (DBNet backbone) |
188+
189+
Models are downloaded on first use and cached locally in the model storage directory.
190+
191+
---
192+
193+
## Temporary Email Services
194+
195+
Used by the `utility.py` random/temporary email actions during test execution.
196+
197+
| Domain | Purpose |
198+
|--------|---------|
199+
| `www.1secmail.com` | 1secmail temporary email API |
200+
| `www.developermail.com` | DeveloperMail temporary email API |
201+
202+
These are only needed if your test cases use the temporary email actions.
203+
204+
---
205+
206+
## Chrome Extension Downloads
207+
208+
Used by Selenium actions that install Chrome extensions during testing.
209+
210+
| Domain | Purpose |
211+
|--------|---------|
212+
| `clients2.google.com` | Chrome Web Store CRX download API |
213+
| `www.crx4chrome.com` | Alternative CRX download source |
214+
215+
Only needed if test cases install Chrome extensions.
216+
217+
---
218+
219+
## Security Testing Tools
220+
221+
Used by the optional security testing module.
222+
223+
| Domain | Purpose |
224+
|--------|---------|
225+
| `api.github.com` | Arachni latest release lookup |
226+
| `github.com` | Arachni binary download |
227+
228+
Nmap and Nikto are expected to be pre-installed locally (no download domains needed at
229+
runtime). Strawberry Perl (`strawberryperl.com`) is referenced only in error messages
230+
directing users to manual installation.
231+
232+
---
233+
234+
## mitmproxy
235+
236+
| Domain | Purpose |
237+
|--------|---------|
238+
| `snapshots.mitmproxy.org` | mitmproxy binary/snapshot downloads |
239+
240+
---
241+
242+
## Zeuz Server
243+
244+
Your organization's Zeuz Server instance. This is the primary runtime dependency — the node
245+
polls it for test cases and uploads results.
246+
247+
| Domain | Purpose |
248+
|--------|---------|
249+
| `*.zeuz.ai` | Zeuz Server (replace with your org's server domain) |
250+
251+
> **Note**: Replace with your actual server domain. The node connects to endpoints like
252+
> `/api/v1/`, `/create_step_report/`, `/create_report_log_api/`, etc.
253+
254+
---
255+
256+
## TLS / Certificate Validation
257+
258+
OCSP and CRL endpoints required for TLS certificate chain validation.
259+
260+
| Domain | Purpose |
261+
|--------|---------|
262+
| `ocsp.digicert.com` | DigiCert OCSP responder |
263+
| `ocsp.sectigo.com` | Sectigo OCSP responder |
264+
| `crl.sectigo.com` | Sectigo CRL distribution |
265+
| `ocsp.pki.goog` | Google Trust Services OCSP |
266+
| `crl.pki.goog` | Google Trust Services CRL |
267+
| `ocsp.r2m01.amazontrust.com` | Amazon Trust OCSP (PyPI, npm) |
268+
269+
---
270+
271+
## Consolidated List
272+
273+
Flat list for firewall/proxy configuration. All entries are HTTPS (port 443) unless noted.
274+
275+
```
276+
# ── Package Managers ──────────────────────────────────────────
277+
pypi.org
278+
pypi.python.org
279+
files.pythonhosted.org
280+
python.org
281+
astral.sh
282+
nodejs.org
283+
registry.npmjs.org
284+
285+
# ── Go Module Proxy ──────────────────────────────────────────
286+
proxy.golang.org
287+
sum.golang.org
288+
289+
# ── GitHub ────────────────────────────────────────────────────
290+
github.com
291+
api.github.com
292+
raw.githubusercontent.com
293+
codeload.github.com
294+
objects.githubusercontent.com
295+
github-releases.githubusercontent.com
296+
297+
# ── Playwright Browsers ──────────────────────────────────────
298+
playwright.azureedge.net
299+
300+
# ── Selenium / WebDrivers ────────────────────────────────────
301+
googlechromelabs.github.io
302+
storage.googleapis.com
303+
edgedl.me.gvt1.com
304+
msedgedriver.azureedge.net
305+
306+
# ── Browser Installers ───────────────────────────────────────
307+
go.microsoft.com
308+
download.mozilla.org
309+
310+
# ── Android SDK / JDK ────────────────────────────────────────
311+
dl.google.com
312+
download.oracle.com
313+
api.adoptium.net
314+
315+
# ── Google Cloud Platform ─────────────────────────────────────
316+
bigquery.googleapis.com
317+
bigquerystorage.googleapis.com
318+
oauth2.googleapis.com
319+
accounts.google.com
320+
www.googleapis.com
321+
322+
# ── Snowflake ─────────────────────────────────────────────────
323+
*.snowflakecomputing.com
324+
325+
# ── OCR Models ────────────────────────────────────────────────
326+
download.pytorch.org
327+
328+
# ── Temp Email (test runtime, optional) ───────────────────────
329+
www.1secmail.com
330+
www.developermail.com
331+
332+
# ── Chrome Extensions (test runtime, optional) ────────────────
333+
clients2.google.com
334+
www.crx4chrome.com
335+
336+
# ── mitmproxy ─────────────────────────────────────────────────
337+
snapshots.mitmproxy.org
338+
339+
# ── Zeuz Server (replace with your domain) ────────────────────
340+
*.zeuz.ai
341+
342+
# ── TLS / OCSP / CRL ─────────────────────────────────────────
343+
ocsp.digicert.com
344+
ocsp.sectigo.com
345+
crl.sectigo.com
346+
ocsp.pki.goog
347+
crl.pki.goog
348+
ocsp.r2m01.amazontrust.com
349+
```
350+
351+
---
352+
353+
## Apps/ Sub-Application Analysis
354+
355+
| App | Type | External Dependencies |
356+
|-----|------|----------------------|
357+
| `Apps/Web/AI_Recorder_2/` | React (Vite + TypeScript) Chrome extension | npm packages only (antd, react, bootstrap, jquery) — all from `registry.npmjs.org` |
358+
| `Apps/Web/aiplugin/` | Vanilla JS Chrome extension | No external downloads — static assets only |
359+
| `Apps/node_runner/` | Go CLI (no external deps) | Zero `require` in `go.mod` — Go proxy needed only for toolchain |
360+
| `Apps/lorust/` | Pre-built binaries | No runtime downloads — binaries are vendored |
361+
| `Apps/desktop-recorder/` | Python script | No external downloads |
362+
| `Apps/Authenticator/` | Utility | No external downloads |
363+
364+
No Electron dependency was found in any sub-application.
365+
366+
---
367+
368+
## Notes
369+
370+
1. **Conditional domains**: Temp email, Chrome extension, and security testing domains are
371+
only needed if your test cases use those features. Mark them as optional in your firewall
372+
rules if you want a minimal whitelist.
373+
374+
2. **Snowflake wildcard**: Scope `*.snowflakecomputing.com` to your specific account
375+
subdomain if your security policy requires it.
376+
377+
3. **Microsoft Edge redirects**: `go.microsoft.com` redirects through Microsoft CDN domains
378+
that vary by region. Monitor your proxy logs during first Edge installation to capture the
379+
exact CDN domains needed.
380+
381+
4. **PyTorch models**: `download.pytorch.org` is only needed on first EasyOCR use. Models
382+
are cached locally after download.
383+
384+
5. **Port requirements**: All domains use HTTPS (port 443). No HTTP-only (port 80)
385+
dependencies were found in the codebase.

0 commit comments

Comments
 (0)