Files
MyIP/.env.example
T
Claude 96525d2fc7 Chore: trim the branch — leftovers, redundancy, comments
A pass over every file the branch touched, after the iOS animation hunt
left tries and reverts behind it. Removed what nothing reaches: the
view-transition rule for a transition no code starts, an unreachable
guard in the transition hook, a no-op KeepAlive key branch, a sign-in
guard the menu already enforces, usage-dialog wrappers that only
forwarded to the store, a duplicated modifier-click check and card
filter (isPlainClick / listedTools), a test that hand-rolled
listedTools, a drawer-era fixture parameter. auth-flow.js folded into
auth-redirect.js. Comments cut to what the code cannot say itself —
file headers of a few lines, the measured iOS reasons, non-obvious
orderings — and stale ones fixed (Nav under KeepAlive, Home.vue
reusing DEFAULT_META, "from Nav", enabledCards). AGENTS.md sections
tightened to the code as it is now.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013GbLTGMZ45MV78qd2tHoco
2026-10-05 16:50:16 +00:00

83 lines
3.6 KiB
Bash

# Server
BACKEND_PORT="11966"
FRONTEND_PORT="18966"
ALLOWED_DOMAINS=""
# THIRD-PARTY APIs
GOOGLE_MAP_API_KEY=""
IPINFO_API_KEY=""
CLOUDFLARE_API_KEY=""
IPAPIIS_API_KEY=""
IP2LOCATION_API_KEY=""
RIPESTAT_SOURCE_APP=""
# Shareable diagnostic reports — stored in Cloudflare Workers KV. Both values
# below must be set (together with CLOUDFLARE_API_KEY, which additionally
# needs the "Workers KV Storage: Edit" permission) or the share-link feature
# stays hidden. CLOUDFLARE_KV_NAMESPACE_ID is the namespace's hex ID from the
# dashboard, not its name.
CLOUDFLARE_ACCOUNT_ID=""
CLOUDFLARE_KV_NAMESPACE_ID=""
# MaxMind — GeoLite2 is downloaded only when both are set
MAXMIND_ACCOUNT_ID=""
MAXMIND_LICENSE_KEY=""
# Offline datasets (MaxMind, CAIDA, PeeringDB): missing ones download at boot;
# all are re-checked daily at DATASET_UPDATE_CRON (server-local time) unless
# DATASET_AUTO_UPDATE is "false"
DATASET_AUTO_UPDATE="true"
DATASET_UPDATE_CRON="30 4 * * *"
# SITE
VITE_SITE_URL="https://ipcheck.ing"
# DOCS SITE — origin of the GitBook docs site powering the in-app
# assistant and the Help Center link. Empty disables both.
VITE_DOCS_URL=""
# EARTH ONLINE — full URL of the pulse backend (trailing slashes stripped).
# Empty hides the social parts (status feed / visitor map / visit beacon) at
# build time, like Sentry. The outage feed is independent — it only needs
# CLOUDFLARE_API_KEY above.
VITE_PULSE_BEACON_URL=""
# CURL API
VITE_CURL_IPV4_DOMAIN=""
VITE_CURL_IPV6_DOMAIN=""
VITE_CURL_IPV64_DOMAIN=""
# Firebase Auth — optional; sign-in is offered when API key, auth domain and
# project id are all set. VITE_FIREBASE_AUTH_DOMAIN is the browsers' login
# domain (e.g. "auth.ipcheck.ing"); each OAuth provider's callback URL is
# https://<that domain>/__/auth/handler.
# VITE_FIREBASE_PWA_AUTH_DOMAIN — optional, installed PWA only: the site's own
# host (e.g. "ipcheck.ing"), served by the /__/auth proxy. Add it to Firebase
# Authentication → Authorized domains and https://<it>/__/auth/handler to
# Google's OAuth client; GitHub (one callback) is then hidden in the PWA.
VITE_FIREBASE_API_KEY=""
VITE_FIREBASE_AUTH_DOMAIN=""
VITE_FIREBASE_PWA_AUTH_DOMAIN=""
VITE_FIREBASE_PROJECT_ID=""
# Google Analytics
VITE_GOOGLE_ANALYTICS_ID=""
# Security related
# SECURITY_BLACKLIST_LOG_FILE_PATH: opt-in on-disk ledger of rate-limited IPs
# (e.g. "logs/blacklist-ip.log"). Empty = no file; the event is always logged
# via the shared logger either way (and mirrored to Sentry when configured).
SECURITY_BLACKLIST_LOG_FILE_PATH=""
SECURITY_RATE_LIMIT=""
SECURITY_DELAY_AFTER=""
# Sentry — all optional; leave empty and no Sentry code ships or runs at all.
# VITE_SENTRY_DSN_FRONTEND: frontend DSN (build-time; baked into the bundle;
# also read by the backend at runtime as the allowlist for /api/monitoring,
# the first-party tunnel that relays envelopes past ad blockers)
# SENTRY_DSN_BACKEND: backend DSN (runtime; read by sentry-instrument.js)
# SENTRY_ENVIRONMENT: backend environment tag — unset means "production",
# set "development" on dev machines (frontend tags itself automatically)
# SENTRY_ORG / SENTRY_PROJECT_FRONTEND / SENTRY_AUTH_TOKEN: source-map upload
# at build time only — the token is a secret, never exposed to the browser
VITE_SENTRY_DSN_FRONTEND=""
SENTRY_DSN_BACKEND=""
SENTRY_ENVIRONMENT=""
SENTRY_ORG=""
SENTRY_PROJECT_FRONTEND=""
SENTRY_AUTH_TOKEN=""
# Logging — LOG_LEVEL: debug/info/warn/error (default info)
# LOG_FORMAT: "json" for log shippers, anything else = pretty
# LOG_HTTP: "true" to enable per-request /api logging (off by default)
LOG_LEVEL=""
LOG_FORMAT=""
LOG_HTTP=""