Commit graph

618 commits

Author SHA1 Message Date
Alireza Ahmadi
3b86cb62bb update packages 2026-08-31 19:06:40 +02:00
Alireza Ahmadi
22c0aea842
Merge pull request #1240 from alireza0/singbox-1.14
Some checks are pending
Release S-UI / build-frontend (push) Waiting to run
Release S-UI / build-386 (push) Blocked by required conditions
Release S-UI / build-amd64 (push) Blocked by required conditions
Release S-UI / build-armv5 (push) Blocked by required conditions
Release S-UI / build-armv6 (push) Blocked by required conditions
Release S-UI / build-armv7 (push) Blocked by required conditions
Release S-UI / build-arm64 (push) Blocked by required conditions
Release S-UI / build-s390x (push) Blocked by required conditions
Build S-UI for Windows / build-frontend (push) Waiting to run
Build S-UI for Windows / build-windows-amd64 (push) Blocked by required conditions
Build S-UI for Windows / build-windows-arm64 (push) Blocked by required conditions
Singbox 1.14
2026-08-31 17:16:00 +02:00
Alireza Ahmadi
a8d5975fd2 Sing-Box v1.14.0 2026-08-31 14:06:23 +02:00
Alireza Ahmadi
bb42d56013 Sing-Box v1.14.0-rc.5 2026-08-31 14:06:23 +02:00
Alireza Ahmadi
df1337d590 remove depricated options 2026-08-31 14:06:23 +02:00
Alireza Ahmadi
97a69bef2a http http2 quic fields 2026-08-31 14:06:23 +02:00
Alireza Ahmadi
4202af9b17 other migrations to 1.14 2026-08-31 14:06:23 +02:00
Alireza Ahmadi
91ff2e72d0 upgrade acme to ca provider 2026-08-31 14:06:23 +02:00
Alireza Ahmadi
2951532c94 new endpoints + mtls 2026-08-31 14:06:23 +02:00
Alireza Ahmadi
e7cb21d74b Sing-Box v1.14.0-rc.4 2026-08-31 14:06:23 +02:00
Alireza Ahmadi
a5c6102359 core: cover the new 1.14 protocols with config tests
Starts snell v5 and v6 inbounds, a snell outbound and an oom-killer service;
bridge gets construct-only coverage since creating its tun needs privileges.

Also bumps the frontend submodule to the UI for these protocols.
2026-08-31 14:06:23 +02:00
Alireza Ahmadi
2a0a240ecd core: register the protocols added in sing-box 1.14
Adds every new 1.14 type to the registries, following upstream's include
package: the build-tagged ones get the same stub pair s-ui already uses for
naive and tailscale, so a build without the tag reports which tag is missing
instead of failing to parse.

- inbound: snell, cloudflared
- outbound: snell, bridge
- endpoint: openconnect, openvpn (client and server)
- dns transport: mdns, resolved, openconnect, openvpn
- service: api, oom-killer, usbip (server and client)

with_cloudflared, with_openconnect, with_openvpn and with_usbip are added to
build.sh, the Dockerfile and both release workflows. Verified the linux
amd64/arm64 and windows amd64 cross-builds CI ships.

Registry tests now assert the full expected type set rather than just
certificate providers, and the box tests write their cache file to a temp
directory instead of leaving core/cache.db behind.
2026-08-31 14:06:23 +02:00
Alireza Ahmadi
ebaeea6d9b frontend: bump to the 1.14 option shapes
Points the submodule at s-ui-frontend singbox-1.14, which stops emitting
tls.acme, rule-set download_detour and dns.independent_cache.
2026-08-31 14:06:23 +02:00
Alireza Ahmadi
f41da0dfdd database: migrate options deprecated in sing-box 1.14
One-shot migration over the stored config and TLS rows, guarded by a setting
so it runs once:

- dns.independent_cache is dropped (1.14 reads it only to warn; the value is
  never passed to the DNS client)
- experimental.cache_file.store_rdrc becomes store_dns
- route.rule_set[].download_detour becomes the http_client 1.14 builds for it
- inline tls.acme becomes tls.certificate_provider with type "acme"

Legacy DNS address filters and the `strategy` DNS rule action are NOT migrated
automatically. Converting them means inserting evaluate rules and reordering,
which changes how names resolve, so they are logged with the upstream
migration link for the operator to handle.

Tests cover each rewrite, that unrelated options survive, that a config with
nothing to migrate is left byte-identical, and that the migrated shapes build
a box with no deprecation warning.
2026-08-31 14:06:23 +02:00
Alireza Ahmadi
8089e95a5e core: register ACME and Tailscale certificate providers
The 1.14 upgrade wired up a certificate provider registry with only
origin_ca, so `tls.certificate_provider: {"type": "acme"}` failed to parse
with "unknown certificate provider type". Register ACME and Tailscale too,
behind the same build tags upstream uses, with stubs that report a helpful
error when the tag is absent.

This is what `tls.acme` migrates to in 1.14: the same fields move under
certificate_provider with `type: "acme"`, which parses clean with no
deprecation warning.
2026-08-31 14:06:23 +02:00
Alireza Ahmadi
6f046508db core: add config compatibility test for the 1.14 upgrade
Starts a real box for each config in testdata/configs and logs the
deprecation notes it triggers. Covers the eight re-copied protocol inbounds
plus the option shapes s-ui's UI can emit that 1.14 deprecates.

Confirms no config s-ui produces fails to start under 1.14; the deprecated
ones warn and keep working.
2026-08-31 14:06:23 +02:00
Alireza Ahmadi
afe16b4d2d Sing-Box v1.14.0-rc.2: compile-level upgrade
Re-sync core/protocol/* from upstream (they were verbatim copies), re-fork
core/box.go onto the new upstream box.go, and adapt to changed APIs:

- adapter.ConnectionTracker gained RoutedFlow; add no-op impls to both trackers
- log.ObservableFactory gained AttachPlatformWriter; add no-op impl
- box.Context now takes a CertificateProviderRegistry; wire one up with
  the origin_ca provider
- box.go now depends on debug*.go; copy them from upstream
- hysteria inbound moved QUIC option building into quic.go; copy it

Deps: sing v0.9.0-beta.4, sing-quic v0.7.0-beta.4, sing-tun v0.9.0-beta.2.

Runtime behaviour is not yet validated and config migration for options
deprecated in 1.14 is not done, so this is not ready for main.
2026-08-31 14:06:23 +02:00
LiGaAmG
bb4baebb13
fix(hysteria2): preserve user identity across hot updates (#1231)
* fix(hysteria2): use stable user identity on hot updates

Replace Service[int] (position-based) with Service[string] (name-based)
so that existing sessions retain a correct stable identity when the user
list changes via UpdateUsers. Remove the now-redundant userNameList field.

Fixes panic: runtime error: index out of range after user deletion,
and wrong username attribution when list positions shift.

* fix(hysteria2): gofmt struct field alignment after userNameList removal

* fix: extend stable user identity fix to hysteria, tuic, trojan, vless, vmess

The same Service[int] → Service[string] bug fixed for hysteria2 in the
previous commit affects all five remaining inbound protocols. When users
are deleted or reordered, integer position-based identity causes panics
(index out of range) and wrong username attribution in logs and traffic
stats.

Apply the same fix across hysteria v1, tuic, trojan, vless, and vmess:
- Service[int] → Service[string] in all five inbound structs
- Pass user.Name as the stable identity instead of the list index
- Remove the now-unnecessary cached `users []option.*User` fields from
  trojan, vless, and vmess structs (they existed solely to map indexes
  back to names)
- UpdateUsers helpers rebuilt to pass names, keeping auth/password
  fields unchanged

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* ci: add go vet + gofmt check for patched protocols

* fix: gofmt struct field alignment in hysteria and tuic inbound

* fix: address review feedback on stable-identity PR

Three fixes from maintainer review:

1. Logging regression (trojan/vless/vmess): when a client has no name,
   the old code fell back to the index as a log label; the new code was
   emitting `[] inbound connection`. Align with the hysteria2 pattern:
   omit the `[name]` prefix entirely when name is empty.

2. Duplicate/empty client names: trojan's Service.UpdateUsers rejects a
   repeated identity, so two clients with the same name on the same
   inbound would make UpdateUsers fail. vmess silently overwrites the
   earlier entry. vless misattributes flow. Add server-side validation
   in ClientService.Save (new, edit, addbulk) that rejects empty names
   and names already in use on any shared inbound within the same tx.

3. Remove .github/workflows/check.yml: the workflow only triggered on
   the feature branch, so it would be permanently dead after merge.

* fix: make client name validation global and trim whitespace

* ci: temporarily re-add check workflow for CI verification

* ci: remove temporary check workflow

* validate client names on bulk save paths too

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Alireza Ahmadi <alireza7@gmail.com>
2026-08-31 13:57:48 +02:00
Alireza Ahmadi
88bde26fcf cert issue by CF token #1237
Some checks failed
Release S-UI / build-frontend (push) Has been cancelled
Build S-UI for Windows / build-frontend (push) Has been cancelled
Release S-UI / build-386 (push) Has been cancelled
Release S-UI / build-amd64 (push) Has been cancelled
Release S-UI / build-armv5 (push) Has been cancelled
Release S-UI / build-armv6 (push) Has been cancelled
Release S-UI / build-armv7 (push) Has been cancelled
Release S-UI / build-arm64 (push) Has been cancelled
Release S-UI / build-s390x (push) Has been cancelled
Build S-UI for Windows / build-windows-amd64 (push) Has been cancelled
Build S-UI for Windows / build-windows-arm64 (push) Has been cancelled
2026-08-26 13:07:40 +02:00
Alireza Ahmadi
44d3510303 README: telegram bot #1230 2026-08-25 21:32:58 +02:00
dactDMA
1900fd937d
Trim surrounding whitespace from settings before validation (#1229)
* TrimSpace

* delete TrimSpace test
2026-08-23 21:36:06 +02:00
Alireza Ahmadi
08807ac1a3 catch untar error #1225 2026-08-21 23:21:50 +02:00
Alireza Ahmadi
d60db10b91 fix ipv6 on panel uri 2026-08-20 17:17:32 +02:00
Alireza Ahmadi
2c553b79ff fix alpine service #1225 2026-08-20 17:16:19 +02:00
Alireza Ahmadi
1e93f2c297 sub: add client remark #1228 2026-08-20 17:10:52 +02:00
Alireza Ahmadi
b0cc985371 clash sub: udp option #1227 2026-08-20 16:50:51 +02:00
Alireza Ahmadi
a6b293a152 Sing-Box v1.13.19 2026-08-20 16:43:51 +02:00
Alireza Ahmadi
eafb9911cd Go v1.26.7 2026-08-20 16:37:12 +02:00
Alireza Ahmadi
0cefd07d21 fix ipv6 in link and sub #1220 2026-08-12 14:58:33 +02:00
Alireza Ahmadi
1ca4fc80f9 v1.5.5 2026-08-09 18:16:41 +02:00
Alireza Ahmadi
b24c419ceb fix db lock #1209 2026-08-09 18:16:30 +02:00
dependabot[bot]
4a463074ee
Bump google.golang.org/grpc from 1.79.3 to 1.82.1 (#1207)
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.79.3 to 1.82.1.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.79.3...v1.82.1)

---
updated-dependencies:
- dependency-name: google.golang.org/grpc
  dependency-version: 1.82.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-09 17:10:19 +02:00
Alireza Ahmadi
eb3d11a83c naive links based on network #1211 2026-08-09 15:18:22 +02:00
Alireza Ahmadi
4c1e2016f4 Sing-Box v1.13.18 and Go v1.26.5 2026-08-09 14:42:01 +02:00
Alireza Ahmadi
56fa964dcc v1.5.4
Some checks failed
Release S-UI / build-frontend (push) Has been cancelled
Build S-UI for Windows / build-frontend (push) Has been cancelled
Release S-UI / build-386 (push) Has been cancelled
Release S-UI / build-amd64 (push) Has been cancelled
Release S-UI / build-armv5 (push) Has been cancelled
Release S-UI / build-armv6 (push) Has been cancelled
Release S-UI / build-armv7 (push) Has been cancelled
Release S-UI / build-arm64 (push) Has been cancelled
Release S-UI / build-s390x (push) Has been cancelled
Build S-UI for Windows / build-windows-amd64 (push) Has been cancelled
Build S-UI for Windows / build-windows-arm64 (push) Has been cancelled
2026-07-19 19:03:23 +02:00
Alireza Ahmadi
2aba3161eb SS plugin share link #1194
Co-authored-by: rqzbeh <78313022+rqzbeh@users.noreply.github.com>
2026-07-19 11:57:42 +02:00
Alireza Ahmadi
24ce6d25a5 fix tls nil pointer #1198
Some checks failed
Release S-UI / build-frontend (push) Has been cancelled
Build S-UI for Windows / build-frontend (push) Has been cancelled
Release S-UI / build-386 (push) Has been cancelled
Release S-UI / build-amd64 (push) Has been cancelled
Release S-UI / build-armv5 (push) Has been cancelled
Release S-UI / build-armv6 (push) Has been cancelled
Release S-UI / build-armv7 (push) Has been cancelled
Release S-UI / build-arm64 (push) Has been cancelled
Release S-UI / build-s390x (push) Has been cancelled
Build S-UI for Windows / build-windows-amd64 (push) Has been cancelled
Build S-UI for Windows / build-windows-arm64 (push) Has been cancelled
2026-07-17 22:19:01 +02:00
Alireza Ahmadi
40394ebe4c support alpine + multi language install #1195 2026-07-17 20:28:35 +02:00
Alireza Ahmadi
cec2d6e05b server os aware frontend #1189 2026-07-17 18:05:13 +02:00
Alireza Ahmadi
0f4e29a95e add auto early_data to link #1193 2026-07-17 17:45:24 +02:00
Alireza Ahmadi
88b674388e fix clash based header #1184 2026-07-17 17:19:00 +02:00
Alireza Ahmadi
2be943e5d8 fix user disconneciton on each change
Some checks failed
Release S-UI / build-frontend (push) Has been cancelled
Build S-UI for Windows / build-frontend (push) Has been cancelled
Release S-UI / build-386 (push) Has been cancelled
Release S-UI / build-amd64 (push) Has been cancelled
Release S-UI / build-armv5 (push) Has been cancelled
Release S-UI / build-armv6 (push) Has been cancelled
Release S-UI / build-armv7 (push) Has been cancelled
Release S-UI / build-arm64 (push) Has been cancelled
Release S-UI / build-s390x (push) Has been cancelled
Build S-UI for Windows / build-windows-amd64 (push) Has been cancelled
Build S-UI for Windows / build-windows-arm64 (push) Has been cancelled
Fixing quic based authentication problem causes users to be disconnected on each changes on inbound or users

#1136 #1085 and same
2026-07-10 22:22:35 +02:00
Rouzbeh†
99e9d65c89 Fix Clash proxy group expansion (#1182)
Co-authored-by: rqzbeh <198332733+rqzbeh@users.noreply.github.com>
2026-07-10 20:55:00 +02:00
Rouzbeh†
78885b0332 Fix Shadowsocks 2022 user lookup (#1181)
Co-authored-by: rqzbeh <198332733+rqzbeh@users.noreply.github.com>
2026-07-10 20:47:01 +02:00
Alireza Ahmadi
843c640ba4 v1.5.3 2026-07-04 17:22:04 +02:00
Alireza Ahmadi
655a159394 [subclash] support optional default groups and inject all #1155
Some checks failed
Release S-UI / build-frontend (push) Has been cancelled
Build S-UI for Windows / build-frontend (push) Has been cancelled
Release S-UI / build-386 (push) Has been cancelled
Release S-UI / build-amd64 (push) Has been cancelled
Release S-UI / build-armv5 (push) Has been cancelled
Release S-UI / build-armv6 (push) Has been cancelled
Release S-UI / build-armv7 (push) Has been cancelled
Release S-UI / build-arm64 (push) Has been cancelled
Release S-UI / build-s390x (push) Has been cancelled
Build S-UI for Windows / build-windows-amd64 (push) Has been cancelled
Build S-UI for Windows / build-windows-arm64 (push) Has been cancelled
2026-07-04 15:36:19 +02:00
Alireza Ahmadi
bb81281e30 timezone independancy from OS #1166 2026-07-04 14:28:51 +02:00
Alireza Ahmadi
3d3a78bc71 fix pinSHA256 on hy links #1093 2026-07-04 14:20:31 +02:00
Alireza Ahmadi
6cdc7b25a2 v1.5.2
Some checks failed
Release S-UI / build-frontend (push) Has been cancelled
Build S-UI for Windows / build-frontend (push) Has been cancelled
Release S-UI / build-386 (push) Has been cancelled
Release S-UI / build-amd64 (push) Has been cancelled
Release S-UI / build-armv5 (push) Has been cancelled
Release S-UI / build-armv6 (push) Has been cancelled
Release S-UI / build-armv7 (push) Has been cancelled
Release S-UI / build-arm64 (push) Has been cancelled
Release S-UI / build-s390x (push) Has been cancelled
Build S-UI for Windows / build-windows-amd64 (push) Has been cancelled
Build S-UI for Windows / build-windows-arm64 (push) Has been cancelled
2026-07-03 00:35:13 +02:00
Alireza Ahmadi
b9ff0d9626 hashed panel password #1159 2026-07-03 00:31:59 +02:00