- Replace synchronous file operations with async aiofiles
- Implement concurrent data gathering using asyncio.gather()
- Move API calls to thread pool executor
- Add LRU cache for config file reads
- Optimize parsing functions for single-pass processing
- Reduce measurement intervals for faster response times
- Add system uptime and boot time display
- Track total network traffic since last reboot from /proc/net/dev
- Separate system traffic (since reboot) from user traffic (all-time)
- Add human-readable uptime formatting
- Enhance output with clear traffic categorization
Introduces a new 'unlimited_user' flag for users. When set to true, the user is exempt from the concurrent IP limit enforcement by `limit.sh`.
- `core/scripts/hysteria2/add_user.py`:
- Adds an optional `unlimited_user` argument (defaults to false).
- Stores the `unlimited_user` boolean in the `users.json` file when adding a user.
- `core/scripts/hysteria2/limit.sh`:
- Modifies `check_ip_limit` function to first check the `unlimited_user` flag for the connecting user in `users.json`.
- If the flag is true, the script bypasses the IP limit check for that user.
- Uses `jq` for reliable parsing and includes a `grep` fallback for systems without `jq`.
- Existing users without the flag are treated as limited (default behavior).
Introduces a dedicated system for managing a list of external nodes, each with a unique name and IP address. This feature is designed for multi-node deployments.
Refactored normalsub.py to use the user's password as the identifier in the subscription URL path instead of the username, enhancing privacy by making user enumeration harder.
Previously, when the IP4 variable contained a domain name instead of an actual IP address, the SNI validation would fail and force the use of self-signed certificates. This update adds detection and resolution of domain names in the IP4 variable, ensuring proper DNS comparison when checking if the SNI domain points to the server.