3x-ui/internal/database
MHSanaei 62423cacd1 feat(xray): update xray-core to v26.9.30 and adapt panel
Bump xtls/xray-core to b26a91de4f (v26.9.30) and the three binary pins
(DockerInit.sh, release.yml Linux + Windows) in lockstep. No deleted
symbols; the sing and sing-shadowsocks indirect deps drop out with the
SS2022 rewrite.

XDNS finalmask (#6718) replaced its string lists with objects: domains
are {name, types, edns0, lenLimit, labelLimit} and client resolvers
{type, settings.addr}. The loader no longer parses the old lists, so a
single stored xdns mask keeps the whole core from starting. The new leaf
package internal/util/maskcompat converts them: "name[:type]" becomes a
domain and "name[:type]+udp://addr" a domain plus a udp resolver. A bare
name maps to TXT, the type legacy clients queried by default, and each
converted domain keeps the 1232-byte EDNS0 the old code always used
(without it the server caps answers at 512). It runs from:
- the XdnsFinalmaskObjectsFix seeder, over inbound streams, hosts, the
  xray template, the global sub-JSON mask and cached subscription
  outbounds;
- inbound save (normalizeStreamSettings) and GetXrayConfig, for rows
  that never went through the seeder;
- both link importers, since fm= from an older panel carries the lists.
The finalmask form edits the object shape (every key needs a registered
field, or the finalmask watch drops it on save) and lifts legacy masks
on open. The udp-mask golden fixture moves to the object shape, which
TestGoldenStreamFixturesBuildInXray now builds through the core. The
wire format changed as well, so pre-upgrade clients need the new core.

WireGuard outbound (#6771) dropped settings.domainStrategy and the
remoteDNS "local" mode. The endpoint lookup now follows
sockopt.domainStrategy and in-tunnel targets the outbound's
targetStrategy. The old key is silently ignored, which undid the
IPv4-first endpoint lookup the WARP outbound depends on (#5205), and
"local" now panics the core at startup because remoteDNS goes through
netip.MustParseAddr. The WireguardDomainStrategyFix seeder moves a stored
family preference to both keys (a value already set wins) and turns
"local" into targetStrategy; the outbound form lifts legacy rows the same
way and drops its select, the WARP modal writes the new placement, and
the inbound form loses a field the server never read.
ValidateOutboundConfig now refuses a non-IP remoteDNS entry, which
conf.Build() lets through, on template save and for outbound
subscriptions.

Noise finalmask items accept type "exp" (#6862), a tag expression. The
form offers it for noise items only: header-custom items go through the
core's PraseByteSlice, which refuses it.

TUN gained autoSystemDnsToGateway (Linux) and autoSystemWfpBlockLeak
(Windows). Both pass through the settings schema so a value set in JSON
survives the next form save.

MASQUE (inbound, outbound, transport) and the XDRIVE transport are new
protocols the panel does not offer yet; their new loader refusals only
cover configs the panel never generates. The FakeDNS IPv6 pool default,
the SS2022 rewrite (same gRPC account; emails are now deduped
case-insensitively, as the panel already does), the restored udphop
interval default and the rest change no panel-facing config.
2026-10-02 13:54:39 +02:00
..
dbtest perf(tests): copy a migrated template DB instead of migrating per test 2026-09-27 03:04:50 +02:00
model fix(traffic): make a client reset reach every counter enforcing its quota 2026-09-28 02:56:53 +02:00
api_token_timestamp_test.go feat(api): scoped, optionally expiring API tokens (#6201) 2026-08-15 15:31:49 +02:00
backup_test.go chore: refresh dependencies and modernize Go test idioms 2026-07-30 03:14:22 +02:00
client_email_lower_index_test.go perf(clients): write client_inbounds deltas and check identity from the clients table 2026-08-20 04:09:57 +02:00
client_hwid_schema_test.go feat(sub): add per-client subscription HWID limits (#5802) 2026-08-15 16:50:20 +02:00
client_weekly_renew_migration_test.go feat(clients): add calendar weekly renewal and schedule previews (#6524) 2026-09-26 22:59:23 +02:00
client_weekly_renew_postgres_test.go feat(clients): add calendar weekly renewal and schedule previews (#6524) 2026-09-26 22:59:23 +02:00
db.go feat(xray): update xray-core to v26.9.30 and adapt panel 2026-10-02 13:54:39 +02:00
db_permissions_test.go fix(database): keep the SQLite store owner-only (#6390) 2026-09-03 16:37:35 +02:00
db_reopen_test.go fix(database): close the pool a second InitDB replaces 2026-09-27 15:32:17 +02:00
db_seed_test.go fix(sub): randomize fresh panel subscription paths (#6375) 2026-09-03 16:34:37 +02:00
db_settled_test.go
dialect.go fix(node): stop stale expiry sync from undoing client extensions (#6228) (#6231) 2026-08-23 23:17:56 +02:00
dns_outbound_legacy_keys_migration_test.go fix(xray): migrate the dns outbound off its legacy nonIPQuery and blockTypes (#6519) 2026-09-14 12:30:23 +02:00
dns_outbound_qtype_zero_test.go fix(xray): stop a lone dns qType 0 from matching every query 2026-09-15 16:00:05 +02:00
dump_sqlite.go fix(database): keep the SQLite store owner-only (#6390) 2026-09-03 16:37:35 +02:00
dump_sqlite_test.go
fail2ban_state_test.go fix(database): keep IP limits when the fail2ban probe is inconclusive (#6176) 2026-08-14 20:12:07 +02:00
freedom_domain_strategy_migration_test.go fix(xray): read an outbound protocol id the way the core does (#6521) 2026-09-14 19:52:27 +03:00
freedom_finalrules_migration_test.go fix(db): harden unrestricted freedom outbounds (#6184) 2026-08-14 20:07:30 +02:00
host_migration_test.go fix(mtproto): use hosts for public share links (#6369) 2026-09-08 15:36:57 +02:00
host_test.go feat(hosts): bulk-add multiple hosts to multiple inbounds (#5677) 2026-07-08 23:35:20 +02:00
inbound_dedupe_test.go
inbound_exclude_from_sub_migration_test.go feat(inbound): excludeFromSub hides links without disabling (#6463) 2026-09-27 12:26:37 +02:00
inbound_port_unique_migration_test.go fix(database): drop the legacy UNIQUE constraint on inbounds.port 2026-07-11 22:48:56 +02:00
index_tags_test.go
journal_mode_test.go fix(database): create SQLite backup snapshots online (#6137) 2026-07-29 21:04:55 +02:00
migrate_data.go fix(traffic): make a client reset reach every counter enforcing its quota 2026-09-28 02:56:53 +02:00
migrate_data_test.go fix(database): make cross-db migration lossless, transactional, and pre-checked 2026-07-12 20:14:07 +02:00
migration_models_test.go fix(database): make cross-db migration lossless, transactional, and pre-checked 2026-07-12 20:14:07 +02:00
mtproto_migration_test.go
outbound_removed_keys_migration_test.go feat(xray): update xray-core to v26.9.8 and adapt panel 2026-09-08 13:49:32 +02:00
prepare_sqlite_test.go fix(database): make cross-db migration lossless, transactional, and pre-checked 2026-07-12 20:14:07 +02:00
reality_finalmask_migration_test.go Bug-label issue sweep: 16 fixes (#6083) 2026-07-23 15:34:42 +02:00
removed_cipher_migration_test.go feat(xray): update xray-core to v26.7.11 and adapt panel 2026-07-12 00:30:47 +02:00
rewriter_protocol_case_test.go fix(xray): read an outbound protocol id the way the core does (#6521) 2026-09-14 19:52:27 +03:00
seeder_fastpath_test.go Repo-wide self-correcting audit: 54 verified bug fixes (#5970) 2026-07-17 00:33:06 +02:00
settings_index_test.go
traffic_overflow_repair_test.go
wireguard_domain_strategy_migration_test.go feat(xray): update xray-core to v26.9.30 and adapt panel 2026-10-02 13:54:39 +02:00
wireguard_migration_test.go
xdns_finalmask_migration_test.go feat(xray): update xray-core to v26.9.30 and adapt panel 2026-10-02 13:54:39 +02:00