Skip to content

Commit ed88fd6

Browse files
feat: Add new finalmask params to hosts
1 parent bdcc743 commit ed88fd6

5 files changed

Lines changed: 746 additions & 132 deletions

File tree

app/models/host.py

Lines changed: 53 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,15 @@ class FinalMaskTcpType(str, Enum):
9191

9292
class FinalMaskUdpType(str, Enum):
9393
header_custom = "header-custom"
94+
mkcp_legacy = "mkcp-legacy"
95+
noise = "noise"
96+
salamander = "salamander"
97+
sudoku = "sudoku"
98+
xdns = "xdns"
99+
xicmp = "xicmp"
100+
realm = "realm"
101+
102+
# Legacy aliases
94103
header_dns = "header-dns"
95104
header_dtls = "header-dtls"
96105
header_srtp = "header-srtp"
@@ -99,11 +108,6 @@ class FinalMaskUdpType(str, Enum):
99108
header_wireguard = "header-wireguard"
100109
mkcp_original = "mkcp-original"
101110
mkcp_aes128gcm = "mkcp-aes128gcm"
102-
noise = "noise"
103-
salamander = "salamander"
104-
sudoku = "sudoku"
105-
xdns = "xdns"
106-
xicmp = "xicmp"
107111

108112

109113
class FinalMaskQuicCongestion(str, Enum):
@@ -136,21 +140,52 @@ class FinalMaskSudokuSettings(FinalMaskPasswordSettings):
136140
padding_max: int | None = Field(default=None, alias="paddingMax")
137141

138142

143+
class FinalMaskXmcProfile(FinalMaskBaseModel):
144+
username: str
145+
uuid: str
146+
textures_value: str = Field(alias="texturesValue")
147+
textures_signature: str = Field(alias="texturesSignature")
148+
149+
139150
class FinalMaskXmcSettings(FinalMaskBaseModel):
140151
hostname: str | None = Field(default=None)
141-
usernames: list[str] | None = Field(default=None)
142152
password: str | None = Field(default=None)
153+
profiles: list[FinalMaskXmcProfile] | None = Field(default=None)
154+
usernames: list[str] | None = Field(default=None)
143155

144156

145157
class FinalMaskDomainSettings(FinalMaskBaseModel):
146158
domain: str | None = Field(default=None)
147159

148160

161+
class FinalMaskXdnsSettings(FinalMaskBaseModel):
162+
domains: list[str] | None = Field(default=None)
163+
resolvers: list[str] | None = Field(default=None)
164+
domain: str | None = Field(default=None)
165+
166+
149167
class FinalMaskXicmpSettings(FinalMaskBaseModel):
168+
dgram: bool | None = Field(default=None)
169+
ips: list[str] | None = Field(default=None)
150170
listen_ip: str | None = Field(default=None, alias="listenIp")
151171
id: int | None = Field(default=None)
152172

153173

174+
class FinalMaskSalamanderSettings(FinalMaskPasswordSettings):
175+
packet_size: Any | None = Field(default=None, alias="packetSize")
176+
177+
178+
class FinalMaskRealmSettings(FinalMaskBaseModel):
179+
url: str | None = Field(default=None)
180+
stun_servers: list[str] | None = Field(default=None, alias="stunServers")
181+
tls_config: dict[str, Any] | None = Field(default=None, alias="tlsConfig")
182+
183+
184+
class FinalMaskMkcpLegacySettings(FinalMaskBaseModel):
185+
header: str | None = Field(default=None)
186+
value: str | None = Field(default=None)
187+
188+
154189
class FinalMaskNoiseSettings(FinalMaskBaseModel):
155190
reset: int | None = Field(default=None)
156191
noise: list[XrayNoiseSettings] | None = Field(default=None)
@@ -164,8 +199,9 @@ class FinalMaskUdpHop(FinalMaskBaseModel):
164199
class FinalMaskQuicParams(FinalMaskBaseModel):
165200
congestion: FinalMaskQuicCongestion | None = Field(default=None)
166201
debug: bool | None = Field(default=None)
167-
brutal_up: str | int | None = Field(default=None, alias="brutalUp")
168-
brutal_down: str | int | None = Field(default=None, alias="brutalDown")
202+
bbr_profile: str | None = Field(default=None, alias="bbrProfile")
203+
brutal_up: str | int | float | None = Field(default=None, alias="brutalUp")
204+
brutal_down: str | int | float | None = Field(default=None, alias="brutalDown")
169205
udp_hop: FinalMaskUdpHop | None = Field(default=None, alias="udpHop")
170206
init_stream_receive_window: int | None = Field(default=None, alias="initStreamReceiveWindow")
171207
max_stream_receive_window: int | None = Field(default=None, alias="maxStreamReceiveWindow")
@@ -189,8 +225,12 @@ class FinalMaskQuicParams(FinalMaskBaseModel):
189225
| FinalMaskPasswordSettings
190226
| FinalMaskSudokuSettings
191227
| FinalMaskDomainSettings
228+
| FinalMaskXdnsSettings
192229
| FinalMaskXicmpSettings
193230
| FinalMaskNoiseSettings
231+
| FinalMaskSalamanderSettings
232+
| FinalMaskRealmSettings
233+
| FinalMaskMkcpLegacySettings
194234
| dict[str, Any]
195235
)
196236

@@ -204,7 +244,8 @@ class FinalMaskQuicParams(FinalMaskBaseModel):
204244

205245
FINAL_MASK_UDP_SETTINGS_MODELS = {
206246
FinalMaskUdpType.header_custom: FinalMaskUdpHeaderCustomSettings,
207-
FinalMaskUdpType.header_dns: FinalMaskDomainSettings,
247+
FinalMaskUdpType.mkcp_legacy: FinalMaskMkcpLegacySettings,
248+
FinalMaskUdpType.header_dns: FinalMaskXdnsSettings,
208249
FinalMaskUdpType.header_dtls: FinalMaskPasswordSettings,
209250
FinalMaskUdpType.header_srtp: FinalMaskPasswordSettings,
210251
FinalMaskUdpType.header_utp: FinalMaskPasswordSettings,
@@ -213,10 +254,11 @@ class FinalMaskQuicParams(FinalMaskBaseModel):
213254
FinalMaskUdpType.mkcp_original: FinalMaskPasswordSettings,
214255
FinalMaskUdpType.mkcp_aes128gcm: FinalMaskPasswordSettings,
215256
FinalMaskUdpType.noise: FinalMaskNoiseSettings,
216-
FinalMaskUdpType.salamander: FinalMaskPasswordSettings,
257+
FinalMaskUdpType.salamander: FinalMaskSalamanderSettings,
217258
FinalMaskUdpType.sudoku: FinalMaskSudokuSettings,
218-
FinalMaskUdpType.xdns: FinalMaskDomainSettings,
259+
FinalMaskUdpType.xdns: FinalMaskXdnsSettings,
219260
FinalMaskUdpType.xicmp: FinalMaskXicmpSettings,
261+
FinalMaskUdpType.realm: FinalMaskRealmSettings,
220262
}
221263

222264

0 commit comments

Comments
 (0)