- address the live device by ddns and call /cmd via bare axios
- write the response body once on timeout (was written twice)
- group results by outcome and show stderr in the detail dialog
- default user to root, minimum wait 1s, warn on long/streaming commands
Signed-off-by: GL.iNet-Yongping.Xie <yongping.xie@gl-inet.com>
Coturn image defaults to nobody and cannot read the bind-mounted
entrypoint on stricter hosts (e.g. NAS), causing Permission denied.
The allowed-peer-ip=0.0.0.0/0 CIDR is rejected by coturn as well.
Signed-off-by: GL.iNet-Yongping.Xie <yongping.xie@gl-inet.com>
Only emit offline for devices that came online, debounce online/offline
per device within 30s, and drop the INFO log that printed the server token.
Signed-off-by: GL.iNet-Yongping.Xie <yongping.xie@gl-inet.com>
Quote $TOKEN in the rtty watchdog so an empty token no longer consumes -d
(empty MAC), and reject empty-MAC registrations before the devices upsert
to avoid the UNIQUE constraint failure.
Signed-off-by: GL.iNet-Yongping.Xie <yongping.xie@gl-inet.com>
Use the configured IP whenever it is set, regardless of how the UI was
reached, so the device script no longer falls back to HOSTNAME="localhost".
Signed-off-by: GL.iNet-Yongping.Xie <yongping.xie@gl-inet.com>
Form validation messages and imperative t() toasts (e.g. delete-user
success) no longer stay stuck in the previous language.
Signed-off-by: GL.iNet-Yongping.Xie <yongping.xie@gl-inet.com>
Route button labels through the project's vue-i18n; the upstream
fallback only knew en/zh and crashed the footer in de/es/fr/ja/ko.
Signed-off-by: GL.iNet-Yongping.Xie <yongping.xie@gl-inet.com>
Skip device online/offline email notifications for 60s after startup
to prevent inbox flooding from reconnect storms. Mirrors the existing
device-log grace window. Remote access notifications are unaffected.
Signed-off-by: GL.iNet-Yongping.Xie <yongping.xie@gl-inet.com>
- Rename debug-cn to debug-dev-server for generic naming
- Use DEBUG_DEV_SERVER_IP environment variable instead of hardcoded IP
- Derive host, path, and dir from IP and user variables
Signed-off-by: GL.iNet-Yongping.Xie <yongping.xie@gl-inet.com>
- Add Popconfirm to ant-design-vue component registration to fix recipient removal
- Set device name column width to 200px for balanced table layout
Signed-off-by: GL.iNet-Yongping.Xie <yongping.xie@gl-inet.com>
- SMTP config with TLS/STARTTLS/plain support and test email
- Notification rules for device online, offline, and remote access
- Recipient management with add/remove endpoints
- Async email sending via goroutines to avoid blocking device runtime
- Admin settings page with SMTP, rules, and recipients sections
- Bell icon added to sidebar menu
- i18n support for all 7 languages
Signed-off-by: GL.iNet-Yongping.Xie <yongping.xie@gl-inet.com>
- Add locale files for Japanese, Korean, German, French, and Spanish
- Extend language enum and options beyond gl-web-main's zh/en
- Register all locales in i18n and ant-design-vue config
- Auto-detect browser language for all supported locales
- Add language switcher to header after login
Signed-off-by: GL.iNet-Yongping.Xie <yongping.xie@gl-inet.com>
- Record device online/offline, remote SSH, Web and Control sessions
- Add device_event_logs table with MAC, event type and time range indexes
- Distinguish remote_control vs remote_web by device client type
- Admin-only log page with device/access tabs, duration column and filters
- Permission-gated sidebar entry (device_log.read)
Signed-off-by: GL.iNet-Yongping.Xie <yongping.xie@gl-inet.com>
- Personal Center page with profile editing and last-login info
- TOTP-based two-factor authentication with QR code setup
- 30-day trusted-device cookie to skip 2FA on familiar browsers
- Friendly browser/OS labels for the trusted device list
Signed-off-by: GL.iNet-Yongping.Xie <yongping.xie@gl-inet.com>
- Commented out the deprecated configuration line in `docker-compose/.env.example`
- Removed the associated service from Docker Compose files as it is no longer required