Commit Graph

2351 Commits

Author SHA1 Message Date
Hintay 10867218d4 feat: migrate legacy recovery codes (#1684) 2026-05-21 16:31:41 +08:00
Hintay a57ba39d1e fix: prevent websocket cleanup leaks 2026-05-21 06:24:10 +09:00
Hintay 7db6b97925 fix: support OpenWrt 25 install script (#1658) 2026-05-21 05:31:46 +09:00
Hintay 56389cba93 fix: avoid version mismatch warning for unknown node versions 2026-05-21 04:42:44 +09:00
Hintay 56305136de ci: trigger build for docker resource changes 2026-05-21 04:10:07 +09:00
Hintay 054295adac fix(docker): preserve forwarded proto/host in container nginx
When the official docker image is fronted by another reverse proxy that
terminates TLS, the container's inner nginx overwrote X-Forwarded-Proto
with its own $scheme (= http, because it listens on plain 80), breaking
CheckWebSocketOrigin's same-origin check on https deployments behind
e.g. Cloudflare or a host nginx.
Trust the inbound X-Forwarded-Proto/Host when present; fall back to
$scheme/$http_host only on direct connections.
2026-05-21 01:52:50 +09:00
Jacky aa0bf7324e fix: normalize DNS provider env values (#1682)
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-05-20 16:54:34 +08:00
0xJacky 94a93f6eab ci: pin docs packageManager to pnpm v10
The packageManager field in docs/package.json took precedence over the
corepack prepare step, causing pnpm v11 to be used in the documents
workflow despite the pin.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 17:44:49 +08:00
0xJacky d537eee739 ci: pin pnpm to v10 in documents workflow
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 17:40:02 +08:00
0xJacky 6c86e5a594 chore: prepare v2.3.11 v2.3.11 2026-05-17 17:31:06 +08:00
lucaszhu-hue d87e7785ad feat: integrate Atlas Cloud provider (#1674) 2026-05-15 23:47:54 +08:00
0xJacky 32c1fadc0c fix(dashboard): stabilize realtime chart timestamps 2026-05-15 21:06:56 +08:00
renovate[bot] 8fa0c2bbf4 chore(deps): update dependency macos to v26 (#1670)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-15 20:22:01 +08:00
0xJacky fc7150c153 chore(docker): use latest nginx base 2026-05-15 20:18:24 +08:00
0xJacky 5fc038f2e9 fix(docker): inline nginx base image setup 2026-05-14 19:20:22 +08:00
0xJacky a455e59026 fix: resolve websocket base from page url 2026-05-14 15:59:44 +08:00
0xJacky 4f489c123c fix(deps): allow browserslist database updates 2026-05-13 17:01:17 +08:00
0xJacky c28fb16d51 fix: preserve proxy path for websocket urls 2026-05-13 13:30:32 +08:00
0xJacky ae2c830cd6 docs: add maintenance template configuration 2026-05-13 08:51:06 +08:00
enwikuna 4d0dcb92b6 Add support for custom Nginx maintenance templates (NGINX_UI_NGINX_MAINTENANCE_TEMPLATE / Settings > Nginx) (#1416)
* Add MaintenanceTemplate field to Nginx settings

* Add optional maintenance_template to NginxSettings

* Implement custom maintenance template handling

Add support for custom maintenance HTML template.

* Add maintenance template path input to Nginx settings

* Update maintenance template input in NginxSettings

* Refactor maintenance template file handling

* Add filepath import to maintenance.go

* Update placeholder for maintenance template input
2026-05-13 08:39:48 +08:00
0xJacky f40fe5a86d chore(devcontainer): use official nginx packages 2026-05-13 08:38:21 +08:00
0xJacky 0f0fa1c083 feat(cert): add ACME CA directory presets 2026-05-13 08:38:21 +08:00
0xJacky 6859e18d4b fix(cert): migrate ACME client to lego v5 2026-05-13 08:38:20 +08:00
renovate[bot] ef1763406a chore(deps): update pnpm to v11 (#1663)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-13 08:24:51 +08:00
Jacky 98bb8903f2 fix(cert): normalize legacy key types (#1667) 2026-05-13 08:23:20 +08:00
0xJacky 4948fba874 Merge remote-tracking branch 'origin/dev' into dev 2026-05-12 15:02:59 +00:00
0xJacky c7c67c5a6b fix(ci): configure pnpm build approvals 2026-05-12 14:59:46 +00:00
renovate[bot] 110e620afb chore(deps): update ghcr.io/devcontainers/features/node docker tag to v2 (#1654)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-12 22:58:56 +08:00
0xJacky 1af0b71b5d Merge remote-tracking branch 'origin/dev' into dev 2026-05-12 14:58:07 +00:00
0xJacky 3f04b3e776 fix(cert): normalize legacy key types 2026-05-12 14:52:25 +00:00
0xJacky 86ba59cbe4 feat(site): add batch status actions
Add secure batch enable and disable site APIs, wire the site list selection toolbar to them, and refresh translation catalogs for the new UI strings.
2026-05-12 12:51:57 +00:00
Jacky da0cf170f2 docs: add Atlas Cloud sponsor (#1665) 2026-05-12 19:58:51 +08:00
Jacky ba2bbe3ac2 fix: resolve concurrent map iteration and map write crash in sitecheck (#1661)
Fixed fatal error 'concurrent map iteration and map write' that caused
nginx-ui nodes to crash and become unresponsive.

The issue occurred when the sitecheck CollectSites() method iterated over
site.IndexedSites while the cache scanner's scanForSite() was concurrently
modifying the same map. This race condition caused sporadic crashes.

Solution:
- Added GetAllIndexedSites() function in internal/site/index.go that safely
  returns a snapshot copy of the IndexedSites map while holding the read lock
- Modified CollectSites() in internal/sitecheck/checker.go to use this
  thread-safe function instead of directly accessing the global map

Fixes #1673

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-05-06 11:28:57 +08:00
renovate[bot] 078a6764bd chore(deps): update all non-major dependencies (#1659)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-04 11:13:21 +08:00
Carm a98bd9216b feat(cert): Optimize certificate application operations. (#1657)
* feat(cert): Optimize certificate application operations. #1602

* chore(lang): Add language context for new DNS application

* chore(lang): Add language context for new DNS application
2026-05-04 11:13:12 +08:00
0xJacky 0662353420 chore: prepare v2.3.10 v2.3.10 2026-04-28 12:36:18 +08:00
0xJacky 432a791cad chore: update translations 2026-04-28 03:55:36 +00:00
0xJacky 0301578295 fix(notification): render external notification placeholders 2026-04-28 09:05:52 +08:00
0xJacky 30908f3c28 chore: prepare v2.3.9 v2.3.9 2026-04-27 12:22:46 +08:00
0xJacky 4e4174d89a fix(backup): require secure session for restore 2026-04-27 11:53:31 +08:00
0xJacky fd61e8ea6f fix(config): restrict executable nginx directives 2026-04-27 11:32:04 +08:00
Adamthereal 61185c26f4 test(middleware): add CSWSH hardening cases for CheckWebSocketOrigin (#1647)
Locks in the v2.3.5 origin-validation fix for CVE-2026-34403 / GHSA-78mf-482w-62qj
with named regression cases for every bypass class documented in the advisory:
subdomain confusion, suffix confusion, scheme downgrade, port mismatch, default-
port normalization, ws/wss scheme equivalence, case-insensitive host, IPv6 literal,
RFC 7239 Forwarded parsing, multi-valued X-Forwarded-Host, scheme-only / malformed
origin rejection, node_secret query fallback, empty-secret regression, trailing-
slash tolerance on configured trusted origins.

17 table-driven subtests in a new file; zero production code changes; no new
dependencies.

Co-authored-by: Panguard AI <support@panguard.ai>
2026-04-22 09:33:50 +08:00
0xJacky 3e411d38dd Harden config write paths 2026-04-21 22:40:50 +08:00
0xJacky 7864e378f5 chore: prepare v2.3.8 v2.3.8 2026-04-21 15:15:12 +08:00
0xJacky 28652c0f04 docs: document install secret locations 2026-04-21 14:03:29 +08:00
renovate[bot] 171bb52998 chore(deps): update pnpm.catalog.default uuid to v14 (#1643)
* Throttle auto cert retries and expose renewal errors

* chore(deps): update pnpm.catalog.default uuid to v14

---------

Co-authored-by: 0xJacky <me@jackyu.cn>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-20 23:52:15 +08:00
0xJacky d25c9975d6 fix(analytic): avoid websocket keepalive race 2026-04-20 23:50:45 +08:00
0xJacky 57b6f982ec fix: preserve forwarded host for docker websocket checks 2026-04-20 23:39:22 +08:00
0xJacky 899c9f1995 fix(cert): throttle auto-renew retries and expose renewal errors 2026-04-20 23:19:50 +08:00
0xJacky 05e544c8f5 fix(upstream): separate http and websocket routes 2026-04-19 11:50:08 +08:00