Repository navigation
Releases: getmikan/Citrus
Releases · getmikan/Citrus
Release list
v1.0.0-beta.2
What's Changed
BUG & Fix
- 0480209 fix: bound the AnyTLS padding scheme and number parsing; bump compress and dhcp by @Nemu-x
- 349af19 fix: the embedded shadowsocks listener can't be closed (MetaCubeX#3314) by @token
- 5043060 fix(limits): a late close of a user over its quota spares its new connections by @Nemu-x
- 6f96a9f Merge pull request #113 from getmikan/fix/codeql-backlog by @Nemu-x
- 8caa5b2 fix(tuic): a CONNECT to a 255-byte domain no longer panics the server by @Nemu-x
- 94b13ae fix: dialer-proxy cycle check takes quadratic time and memory (MetaCubeX#3315) by @token
- c2dc03a Merge pull request #116 from getmikan/fix/quota-reset-race by @Nemu-x
- df1b07a fix: a sub-millisecond URL test is reported as a failure (MetaCubeX#3316) by @token
Maintenance
- 12d1577 Merge pull request #117 from getmikan/chore/upstream-sync-20261017 by @Nemu-x
- 165e0ad docs(changelog): #108, #110 and #111 by @Nemu-x
- 1b45297 chore(deps): getmikan/tls with lazy raw input and WaitRead by @Nemu-x
- 4009d71 chore(deps): go mod tidy after the upstream sync by @github-actions[bot]
- 99e2d59 docs(changelog): #112-#131 and the forks for v1.0.0-beta.2 by @Nemu-x
- bd282d9 Merge pull request #112 from getmikan/docs/changelog-110-111 by @Nemu-x
- be80545 Merge pull request #132 from getmikan/docs/changelog-beta2 by @Nemu-x
- cb7eee4 Merge pull request #123 from getmikan/deps/smux-fork by @Nemu-x
- d5baaa0 chore: check out shell scripts and Dockerfiles with LF line endings by @Nemu-x
- e67018a Merge pull request #120 from getmikan/fix/inbound-data-races by @Nemu-x
- f761b23 chore(deps): use the getmikan/smux fork by @Nemu-x
Full Changelog: v1.0.0-beta.1...v1.0.0-beta.2
v1.0.0-beta.1
What's Changed
- 01b0b30 feat(listener): xhttp server-max-header-bytes, tests for CDN uploads by @Nemu-x
- 0f5cb92 feat(api): /inbounds/{name}/users to list, replace, add, change and remove inbound users by @Nemu-x
- 10b9afc feat(authevent): add a process-global handler for rejected authentication by @Nemu-x
- 12bc74b Merge pull request #44 from getmikan/feat/user-limits by @Nemu-x
- 1538cce Merge pull request #31 from getmikan/feat/dns-serve-stale by @Nemu-x
- 1a28484 Merge pull request #32 from getmikan/feat/trusted-proxy-header by @Nemu-x
- 1e710b6 feat(statistic): per-user traffic accounting for inbound users by @Nemu-x
- 1effb03 feat: make tunnel TCP connection timeout configurable by @bg246070
- 21a8ee2 Merge pull request #20 from getmikan/feat/xhttp-server-cdn by @Nemu-x
- 24b6327 feat(dns): serve-expired is opt-in in Citrus, bounds, docs, tests by @Nemu-x
- 2b886ab feat(metrics): Prometheus /metrics and /healthz, /readyz probes on the controller by @Nemu-x
- 2c0c70a Merge pull request #10 from getmikan/feat/reality-server-pq by @Nemu-x
- 2d03e12 feat(dns): DNSCrypt v2 resolver for sdns:// stamps by @Nemu-x
- 2f9c9e2 feat: add fallback to TrustTunnel inbound by @GetsuNoKaze
- 3123463 Merge pull request #21 from getmikan/feat/h2-caddy-settings by @Nemu-x
- 31dc389 Merge pull request #47 from getmikan/feat/metrics by @Nemu-x
- 33a12ff Merge pull request #63 from getmikan/feat/dnscrypt-resolver by @Nemu-x
- 3af85fb feat(reality): server mldsa65-seed, require-x25519mlkem768 and client version range by @Nemu-x
- 45833a7 feat: add trusted-proxy-header for vless/trojan listener by @MakostaDev
- 461e691 Merge pull request #68 from getmikan/feat/unix-socket-listeners by @Nemu-x
- 473b8fb feat: user-limits config section and /limits/users API by @Nemu-x
- 58f12a2 Merge pull request #29 from getmikan/feat/tcp-connect-timeout by @Nemu-x
- 6d39030 feat(api): GET /events, a push stream of core events by @Nemu-x
- 719dfc6 Merge pull request #19 from getmikan/feat/ech-xray-parity by @Nemu-x
- 73a5031 feat(log): log-format text|json and log-timestamp-format by @Nemu-x
- 74f14ce feat(provider): skip proxies of removed protocols instead of failing the provider by @Nemu-x
- 7585a53 feat(http): HTTP/2 inbounds send the SETTINGS frame Caddy sends by @Nemu-x
- 7ac7eca feat(listener): TCP stream listeners can listen on a unix socket by @Nemu-x
- 846b3d1 feat(api): PUT /rules replaces the rules at runtime by @Nemu-x
- 89f7f40 Merge pull request #70 from getmikan/feat/event-stream by @Nemu-x
- 8d97eb8 feat(group): chain groups for cascades, with a health check that names the failed hop by @Nemu-x
- 8ef480f Merge pull request #41 from getmikan/feat/ss2022-multi-user by @Nemu-x
- 9173c35 feat(convert): parse Xray vcn, ech, pqv and spx link params by @Nemu-x
- 9183b06 feat(sniffer): sniff every destination of a UDP session, not just the first by @Nemu-x
- 9710dee feat(sniffer): sniffer.skip-threshold by @Nemu-x
- 97f6690 feat(xhttp): default to Xray-core's XMUX when reuse-settings is empty by @Nemu-x
- 993e642 feat(hysteria2, masque): disable-mtu-discovery option by @Nemu-x
- 99f777c feat(log): show the sniffed domain next to the IP in connection logs by @Nemu-x
- 9ab0058 feat(authevent): report unknown VLESS UUIDs, wrong Trojan passwords and rejected Sudoku handshakes by @Nemu-x
- 9c9b085 feat(reality): X25519MLKEM768 by default, client-version and mldsa65-verify by @Nemu-x
- a0d66cc feat(api): report the Go memory limit in /memory and /metrics by @Nemu-x
- a611cb7 Merge pull request #1 from GetsuNoKaze/citrus/trusttunnel-fallback by @Nemu-x
- a78f95c feat(authevent): report rejected auth on TrustTunnel, REALITY, AnyTLS, TUIC v5 and Hysteria2 by @Nemu-x
- a93079f feat(tls): comma-separated fingerprint pins and name-cert-verify names by @Nemu-x
- afad849 Merge pull request #71 from getmikan/feat/trusttunnel-client-timers by @Nemu-x
- b4f32b6 Merge pull request #34 from getmikan/feat/xhttp-default-xmux by @Nemu-x
- b70bbc9 feat(statistic): per-user limits enforced in the tunnel by @Nemu-x
- b7b653a Merge pull request #64 from getmikan/feat/api-put-rules by @Nemu-x
- b93dc59 Merge pull request #73 from getmikan/feat/cascade-chains by @Nemu-x
- bc4e843 feat: configure serving expired DNS cache entries by @ayanamist
- c6fabc3 feat(ech): ech-opts query-server, Xray echConfigList DNS forms in links by @Nemu-x
- c70959e feat(xhttp): server accepts packet-up uploads with any method, like Xray-core by @Nemu-x
- c75cec8 feat(tls): real Firefox 148 and Safari 26.3 parrots from the getmikan/utls fork by @Nemu-x
- c91a184 feat(sniffer): detect BitTorrent DHT messages over UDP by @Nemu-x
- c91f5b9 feat(ech): accept Xray echServerKeys (plain base64, several keys) in ech-key by @Nemu-x
- cafecc9 feat(listener): change inbound users at runtime without recreating the listener by @Nemu-x
- d3d835d Merge pull request #5 from getmikan/feat/authevent by @Nemu-x
- d413740 Merge pull request #43 from getmikan/feat/inbound-users-api by @Nemu-x
- d641574 Merge pull request #33 from getmikan/feat/bittorrent-sniffer by @Nemu-x
- dff9504 feat(openvpn): tls-version-min for the control channel by @Nemu-x
- e912415 Merge pull request #42 from getmikan/feat/user-stats by @Nemu-x
- eb21994 feat(trusttunnel): per-proxy HTTP/2 session timers by @Nemu-x
- f33eaeb feat: add BitTorrent sniffer and PROTOCOL rule by @artyfarty
- f9d5b66 feat(shadowsocks): multi-user Shadowsocks 2022 inbound (EIH) with per-user IN-USER by @Nemu-x
- fe9cc3f feat(config): reject VMess configs clearly and skip vmess:// share links by @Nemu-x
- ff0d829 Merge pull request #8 from getmikan/feat/xray-reality-pq by @Nemu-x
BUG & Fix
- 063baca Merge pull request #92 from getmikan/fix/quic-assoc-state by @Nemu-x
- 07bae81 fix(listener): require TLS 1.2 or newer on TLS inbounds and the controller by @Nemu-x
- 0906f57 fix(tunnel): bound tcp-connect-timeout to 100..600000 ms, docs by @Nemu-x
- 092a2e5 fix(geodata): bound GEO downloads and replace files atomically by @Nemu-x
- 0ad6427 fix(sudoku): cap streams per multiplex session and stop parking a goroutine per OPEN by @Nemu-x
- 0b0d0fb fix(listener): bound the pre-auth handshake of VLESS, Trojan, AnyTLS and TrustTunnel by @Nemu-x
- 0b1d1dd fix(sniffer): detect uTP by its ST_SYN only and rule out WireGuard by @Nemu-x
- 0be4a89 fix(xhttp): treat zero ranges as unset, like Xray-core by @Nemu-x
- 11e4d3a Merge pull request #15 from getmikan/fix/hardening by @Nemu-x
- 11eeab9 fix(provider): log only the name of a skipped proxy by @Nemu-x
- 1354387 fix(dns): redact DoH userinfo in logs and errors by @Nemu-x
- 13aaec1 Merge pull request #94 from getmikan/fix/log-redaction by @Nemu-x
- 1588db1 Merge pull request #9 from getmikan/fix/xhttp-cdn-xray by @Nemu-x
- 16350d7 fix(geodata): validate varint lengths in the memconservative decoder by @Nemu-x
- 1a01f1c fix(quic): bound TUIC fragment reassembly and ShadowQUIC unbound association state by @Nemu-x
- 1ea76a7 fix(hosts): bound domain mapping chains, and the core resolver follows them by @Nemu-x
- 1fdcba7 fix(provider): redact the health-check URL in debug logs by @Nemu-x
- 213c366 Merge pull request #103 from getmikan/fix/dns-listener-limits by @Nemu-x
- 22969ef fix(direct): dial the address the IP rules checked by @Nemu-x
- 2377246 fix(outbound): SSH host-key warning and opt-out, OpenVPN server identity checks by @Nemu-x
- 2423265 Merge pull request #84 from getmikan/fix/handshake-deadlines-snell-ss by @Nemu-x
- 26ac9f5 fix(reality): max-time-difference is in milliseconds, like Xray's maxTimeDiff by @Nemu-x
- 26e6554 fix(xhttp): default to Xray-core's xmux when reuse-settings is empty by @Nemu-x
- 2791101 fix(xhttp): don't wait for each packet-up response before the next POST by @Nemu-x
- 27cbff2 fix(sudoku): bound the handshake replay cache whatever user hashes clients send by @Nemu-x
- 2ab0bc5 fix(vless): cap VLESS Encryption frames at 16640 like Xray by @Nemu-x
- 2ab424c fix(hysteria2): verify the https masquerade upstream certificate by @Nemu-x
- 2af04d4 Merge pull request #111 from getmikan/fix/codeql-alerts by @Nemu-x
- 31ef5ea Merge pull request #22 from getmikan/fix/bounded-parallel-dial by @Nemu-x
- 34ff37c fix(tailscale): dialer-proxy no longer breaks the start, and no UDP goes around it by @Nemu-x
- 365fac3 fix(xhttp): a passed deadline no longer closes an idle conn by @Nemu-x
- 378200e Merge pull request #104 from getmikan/fix/realm-events-close by @Nemu-x
- 389b167 Merge pull request #89 from getmikan/fix/ntp-and-dns-cache by @Nemu-x
- 3af28f9 fix(auth): revoke global authentication sessions on reload; refuse empty usernames by @Nemu-x
- 3b8394e fix(statistic): never close an expiring user before expire-at by @Nemu-x
- 3d7b5f4 Merge pull request #72 from getmikan/fix/inbound-test-races by @Nemu-x
- 3fda308 Merge pull request #93 from getmikan/fix/udp-nat-key by @Nemu-x
- 3fe611c Merge pull request #96 from getmikan/fix/realm-trust-and-logs by @Nemu-x
- 4062a7d fix(tun): compare every field when deciding whether a reload restarts TUN by @Nemu-x
- 40f695d fix(mmdb): no panic on an IP without a record in an ipinfo ASN database by @Nemu-x
- 41273e1 Merge pull request #46 from getmikan/fix/user-stats-mux-undercount by @Nemu-x
- 438d334 fix(xhttp): cap and time out sessions that bring no upload data by @Nemu-x
- 43f2561 Merge pull request #23 from getmikan/fix/direct-checked-ip by @Nemu-x
- 447676f Merge pull request #36 from getmikan/fix/authevent-fallback by @Nemu-x
- 4607d46 fix(quic): bounded stream limits for TUIC, ShadowQUIC and TrustTunnel, and a pre-auth budget for TUIC by @Nemu-x
- 49750cf Merge pull request #86 from getmikan/fix/session-revocation by @Nemu-x
- 4978187 Merge pull request #60 from getmikan/fix/hosts-domain-mapping by @Nemu-x
- 4aae1f0 Merge pull request #17 from getmikan/fix/shadowtls-wildcard-ssrf by @Nemu-x
- 4e9f9ce Merge pull request #77 from getmik...
Citrus v0.0.0
What's Changed
BUG & Fix
- 1354e52 fix: unpassed loadbalance test by @wwqgtxx
- 8010193 fix: bound doh dials so ones the query gave up on cannot pile up (MetaCubeX#3274) by @Cassian433
- e4dd968 fix: keep fake-ip allocation state when cloning the pool on reload (MetaCubeX#3283) by @younes Beriane
Maintenance
- 9f053c4 chore: lazy init wireguard device and stack by @wwqgtxx
- bc76c13 chore: update mieru version (MetaCubeX#3304) by @enfein
Full Changelog: v1.19.32...v0.0.0