* feat: enhance archiving and extraction capabilities with additional compression formats and ownership preservation
* feat: enhance archiving and extraction capabilities with additional compression formats and ownership preservation
* feat: enhance archiving and extraction capabilities with additional compression formats and ownership preservation
Port forwarding no longer shares the filter client. FilterClient keeps only
filter capabilities, and forwarding gets its own adapter, service and boot
replay:
- utils/firewall/forwarding holds the provider adapters. firewalld uses native
forward-port, ufw and iptables share the NAT implementation moved out of
client/iptables/forward.go.
- service/forwarding.go owns base info, search, operate, enable and replay.
The API keeps its routes and dispatches on name/type/operate.
- init/firewall replays forwarding through that service instead of loading NAT
rule files inline.
Also adds 1PANEL_FORWARD to the IptablesOp name enum: the frontend already
sends {"name":"1PANEL_FORWARD","operate":"init-forward"} and the validator
rejected it with 400 before reaching the service. Besides that, the only
observable difference is that a forward-tab search no longer triggers the
port/address record cleanup goroutine on the side.
* feat: support dynamic module build for OpenResty
* feat: add dynamic module build page for OpenResty
* refactor: drop auto fallback, gate dynamic build by version support
- remove auto-to-static fallback; dynamic build failure now reports the
error and hints switching to static build manually
- gate dynamic builds on module support files (Dockerfile.modules +
module.catalog.json) instead of version numbers, expose
dynamicSupported in the modules API
- collect repeated path/status/operate strings into constants
- move nginx module regex patterns into utils/re with semantic helpers
- reorganize nginx_module.go around the main build flows and inline
single-use thin helpers
* feat: limit nginx module build mode options by version support
- build mode radio offers only dynamic and static (auto maps to dynamic
for legacy data)
- disable the dynamic option with a hint when the installed OpenResty
version lacks dynamic build support
* feat: complete i18n for nginx module pages
Fill in the new nginx module keys for all eleven language files
(translations other than zh/en are draft machine translations).
* feat: probe dynamic module support on load and drop the auto build mode
- probe each non-static module's configure params when loading the
module list and report dynamicSupport=supported/unsupported up front
- normalize the legacy auto build mode to dynamic
* feat: clarify module build modes in the UI
- build drawer lists dynamic modules (tagged, hot-reload) and static
modules (tagged, full rebuild + container restart) separately
- disable the dynamic option per module when its params do not support
dynamic build, distinct from the version gate hint
- drop the auto build mode wording everywhere and sync all eleven
language files
* feat: clarify purpose of the nginx module build drawer
- add a purpose hint explaining dynamic (hot reload) vs static (full
rebuild + container restart)
- drop the per-module mode tags now that section headers carry the
semantics
- allow submitting with zero dynamic modules selected when static
modules are present, so static-only users can trigger a build
* feat: pass apt mirror through to dynamic module builds
The mirror selected in the build dialog (or CONTAINER_PACKAGE_URL in the
app env as fallback) is now forwarded as a build arg so the module
builder uses the same apt source as the static build path. test-builder
gains a --mirror option.
* feat: add Lao translations for nginx module pages