Refactored the aiohttp authentication server to be a purely read-only service. Removed all file write operations from the authentication logic to eliminate disk I/O and reduce CPU overhead during connection attempts.
The responsibility for persistently blocking users by writing to `users.json` is now fully delegated to the external scheduler service, allowing the auth server to function as a faster, more efficient gatekeeper.
- 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).