mirror of
https://github.com/lkddi/Xboard.git
synced 2026-04-14 19:40:53 +08:00
feat: Refactor uTLS & Multiplex Support, Node Status Push Optimization
- Server/ServerSave/Server.php: Unified utls and multiplex schema, validation, and defaults for vmess/vless/trojan/mieru protocols, enabling more flexible protocol configuration. - Protocols (SingBox/ClashMeta/Shadowrocket/Stash/General): All protocol generators now support utls (client-fingerprint/fp) and multiplex options. Removed getRandFingerprint, replaced with getTlsFingerprint supporting random/custom fingerprints. - Helper.php: Refactored TLS fingerprint utility to support object/string/random input. - ServerService: Abstracted updateMetrics method to unify HTTP/WS node status caching logic. - NodeWebSocketServer: Improved node connection, status push, and full sync logic; adjusted log levels; clarified push logic. - ServerController: Reused ServerService for node metrics handling, reducing code duplication. - Docs: Improved aapanel installation docs, added fix for empty admin dashboard.
This commit is contained in:
@@ -126,19 +126,55 @@ class Server extends Model
|
||||
'rate_time_enable' => 'boolean',
|
||||
];
|
||||
|
||||
private const MULTIPLEX_CONFIGURATION = [
|
||||
'multiplex' => [
|
||||
'type' => 'object',
|
||||
'fields' => [
|
||||
'enabled' => ['type' => 'boolean', 'default' => false],
|
||||
'protocol' => ['type' => 'string', 'default' => 'yamux'],
|
||||
'max_connections' => ['type' => 'integer', 'default' => null],
|
||||
// 'min_streams' => ['type' => 'integer', 'default' => null],
|
||||
// 'max_streams' => ['type' => 'integer', 'default' => null],
|
||||
'padding' => ['type' => 'boolean', 'default' => false],
|
||||
'brutal' => [
|
||||
'type' => 'object',
|
||||
'fields' => [
|
||||
'enabled' => ['type' => 'boolean', 'default' => false],
|
||||
'up_mbps' => ['type' => 'integer', 'default' => null],
|
||||
'down_mbps' => ['type' => 'integer', 'default' => null],
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
];
|
||||
|
||||
private const UTLS_CONFIGURATION = [
|
||||
'utls' => [
|
||||
'type' => 'object',
|
||||
'fields' => [
|
||||
'enabled' => ['type' => 'boolean', 'default' => false],
|
||||
'fingerprint' => ['type' => 'string', 'default' => 'chrome'],
|
||||
]
|
||||
]
|
||||
];
|
||||
|
||||
private const PROTOCOL_CONFIGURATIONS = [
|
||||
self::TYPE_TROJAN => [
|
||||
'allow_insecure' => ['type' => 'boolean', 'default' => false],
|
||||
'server_name' => ['type' => 'string', 'default' => null],
|
||||
'network' => ['type' => 'string', 'default' => null],
|
||||
'network_settings' => ['type' => 'array', 'default' => null]
|
||||
'network_settings' => ['type' => 'array', 'default' => null],
|
||||
'server_name' => ['type' => 'string', 'default' => null],
|
||||
'allow_insecure' => ['type' => 'boolean', 'default' => false],
|
||||
...self::MULTIPLEX_CONFIGURATION,
|
||||
...self::UTLS_CONFIGURATION
|
||||
],
|
||||
self::TYPE_VMESS => [
|
||||
'tls' => ['type' => 'integer', 'default' => 0],
|
||||
'network' => ['type' => 'string', 'default' => null],
|
||||
'rules' => ['type' => 'array', 'default' => null],
|
||||
'network_settings' => ['type' => 'array', 'default' => null],
|
||||
'tls_settings' => ['type' => 'array', 'default' => null]
|
||||
'tls_settings' => ['type' => 'array', 'default' => null],
|
||||
...self::MULTIPLEX_CONFIGURATION,
|
||||
...self::UTLS_CONFIGURATION
|
||||
],
|
||||
self::TYPE_VLESS => [
|
||||
'tls' => ['type' => 'integer', 'default' => 0],
|
||||
@@ -156,7 +192,9 @@ class Server extends Model
|
||||
'private_key' => ['type' => 'string', 'default' => null],
|
||||
'short_id' => ['type' => 'string', 'default' => null]
|
||||
]
|
||||
]
|
||||
],
|
||||
...self::MULTIPLEX_CONFIGURATION,
|
||||
...self::UTLS_CONFIGURATION
|
||||
],
|
||||
self::TYPE_SHADOWSOCKS => [
|
||||
'cipher' => ['type' => 'string', 'default' => null],
|
||||
@@ -251,8 +289,9 @@ class Server extends Model
|
||||
]
|
||||
],
|
||||
self::TYPE_MIERU => [
|
||||
'transport' => ['type' => 'string', 'default' => 'tcp'],
|
||||
'multiplexing' => ['type' => 'string', 'default' => 'MULTIPLEXING_LOW']
|
||||
'transport' => ['type' => 'string', 'default' => 'TCP'],
|
||||
'traffic_pattern' => ['type' => 'string', 'default' => ''],
|
||||
...self::MULTIPLEX_CONFIGURATION,
|
||||
]
|
||||
];
|
||||
|
||||
|
||||
Reference in New Issue
Block a user