Commit Graph

378 Commits

Author SHA1 Message Date
asukassa
9d125527cb
fix: reindex device IP array before JSON encoding (#1045) 2026-08-30 01:07:37 +08:00
JW-3154
e074bef702
fix(Shadowrocket.php): add missing bandwidth params for Hysteria2 (#1031)
* fix(Shadowrocket): add missing bandwidth params for Hysteria2

Fixes a critical issue where Hysteria 2 silently downgrades to non-Brutal congestion control (BBR/Reno) on Shadowrocket clients.

* Refactor bandwidth parameters assignment

Update bandwidth parameters to only include positive values.

---------

Co-authored-by: Xboard <147830212+cedar2025@users.noreply.github.com>
2026-08-30 00:55:14 +08:00
yootus
c9ef5768e0 fix(order): calculate invitation commission after balance deduction (#1020)
Calculate invitation commission from the amount remaining after balance deductions, preventing duplicate commission on internally credited payments.
2026-08-30 00:39:20 +08:00
JW-3154
60ba57142b
fix (General.php): VLESS parsing issue (#1017)
Replace urlencode with rawurlencode to prevent spaces from being improperly converted to '+' in node names (e.g., 'HKG 01' becoming 'HKG+01'). 

A tiny one-line change that significantly improves the UX.
2026-08-07 21:44:44 +08:00
JW-3154
6141430a88 Fix TUIC congestion control at Shadowrocket.php (#968)
Fixes an issue where the TUIC congestion_control parameter was not being passed to clients on Shadowrocket. This PR adds the missing parameter to the URL query string, fetching it from $protocol_settings with a default and safe fallback to 'cubic', ensuring panel configurations are properly respected by the client.
2026-06-06 11:11:01 +08:00
socksprox
34bb1fdbcf Rename v2_order.refund_amount to surplus_credit (#967)
The old name was misleading — this column tracks surplus credit returned
to the user's internal balance during plan upgrades, not a payment
gateway refund. The new name aligns with the existing surplus_amount
and surplus_order_ids naming convention.

Co-authored-by: socksprox <info@shadowfly.net>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-02 11:49:58 +08:00
xboard
8f66a9af94 feat: add admin user plugin hooks
Added hooks:

- admin.user.fetch.query

- admin.user.transform

- admin.user.detail

- admin.user.update.rules

- admin.user.update.messages

- admin.user.update.params

- admin.user.update.before

- admin.user.update.after

- admin.user.secret.reset

- admin.user.destroy.before

- admin.user.destroy.after
2026-05-26 02:23:23 +08:00
xboard
4e9dfd6018 fix(security): harden registration email code validation 2026-05-22 22:05:33 +08:00
xboard
1eb085d4c0 fix(security): harden password reset email code validation 2026-05-22 21:52:34 +08:00
socksprox
f2ac5db4bd feat(sing-box): include/exclude outbound tags with safe regex and fallback (#916)
- Add optional include/exclude patterns on selector/urltest outbounds (stripped before client)
- Safe preg_match: bare patterns use ~ delimiter with escape; delimited regex supported; invalid patterns logged, no throw
- Add fallback when filtering yields empty outbounds (string or ordered list: exact tag or pattern)
- Prevents broken routing when dynamic node sets match no filter

Made-with: Cursor

Co-authored-by: socksprox <info@shadowfly.net>
2026-05-03 10:06:30 +08:00
xboard
3b0b42c51d refactor(middleware): split V2 server middleware to drop node_type 2026-04-23 19:24:34 +08:00
xboard
0fa4b4e0fc fix(security): prevent payment gateway credentials leakage via OrderResource 2026-04-23 10:26:35 +08:00
xboard
66861500c3 fix(deploy): make install/update redis-independent and clean stale octane state
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-19 23:23:27 +08:00
xboard
3f82b00972 refactor: all-in-one docker deployment with auto-tuned resources and per-mode compose templates 2026-04-19 21:18:15 +08:00
xboard
135164056a fix: restore stripped protocol_settings fields for tuic/mieru/vmess 2026-04-19 00:45:47 +08:00
xboard
a9cae6dc19 refactor: core plugins to plugins-core 2026-04-18 23:31:59 +08:00
xboard
4431641197 fix: unify Trojan server_name/allow_insecure to tls_settings across all protocols 2026-04-18 21:00:21 +08:00
xboard
e0f41257db feat(admin): batch node-machine binding & frontend update 2026-04-18 19:38:31 +08:00
xboard
8131bf4748 fix: ticket reply_status semantics, N+1 query, and admin reply auto-reopen 2026-04-18 16:40:21 +08:00
xboard
775590dc21 fix: Shadowrocket Trojan whitelist bug and xhttp support 2026-04-18 16:07:22 +08:00
xboard
d406e440a7 feat: email template management with DB override, modern mail redesign 2026-04-18 15:41:23 +08:00
xboard
a7fae4cc6d fix: batchUpdate use model instance to trigger observer 2026-04-18 04:26:25 +08:00
xboard
f5ff15e415 fix: dedup device IPs, reset stale online_count on disconnect and scheduled cleanup (#886) 2026-04-18 02:57:55 +08:00
xboard
7652882fe5 feat: add xhttp subscriptions, network monitoring, chart legend toggle and ticket sender labels 2026-04-18 02:02:06 +08:00
xboard
8e35be3097 fix(plugin): improve plugin install and uninstall migration handling 2026-04-17 23:11:03 +08:00
xboard
b9f3bc29dc fix: support both GET and POST for handshake endpoint (backward compatibility) 2026-04-17 20:59:48 +08:00
Xboard
2671cd3f2d Update installer URL to use 'dev' branch 2026-04-17 12:54:22 +08:00
xboard
83b43e8664 feat: show install command on machine creation 2026-04-17 06:47:05 +08:00
xboard
6796b70179 feat: machine mode, ECH subscriptions, batch ops & security hardening 2026-04-17 03:02:53 +08:00
yootus
299a69cd51 QuantumultX下发Anytls节点 (#880)
QuantumultX最新版本支持Anytls了,做适配
2026-04-16 19:31:24 +08:00
xboard
a0f6b324a4 fix: reset traffic stats when copying server nodes 2026-04-11 20:24:43 +08:00
Valentin Lobstein
cf5cece77f Fix: CVE-2026-39912 - Magic link token leak in loginWithMailLink (#873)
The loginWithMailLink endpoint returns the magic login link in the
HTTP response body, allowing unauthenticated account takeover.

The fix returns true instead of the link. The email delivery is
the authentication factor.

Bug inherited from V2Board commit 9b707aaf (2022-06-27).
2026-04-10 02:44:20 +08:00
xboard
f7118ab0bd fix: stop sending VLESS decryption when encryption is disabled 2026-04-08 11:05:55 +08:00
yootus
7af8d3be47 Loon和Surfboard适配anytls (#854)
* Loon适配anytls

* Surfboard适配anytls

Surfboard适配anytls
2026-04-02 15:47:41 +08:00
NFamou
06ff341290 Merge pull request #856 from NFamou/master
支持Surfboard下发SS2022
2026-04-02 15:46:55 +08:00
Xboard
f0af3b6832 Revert "feat: Track user traffic per node (server_id)" 2026-03-30 18:17:27 +08:00
xboard
209e862374 feat: add Vless Encryption support 2026-03-30 17:03:37 +08:00
Xboard
0ea23b24c9 Merge pull request #755 from socksprox/feat/server-id-stat-user
feat: Track user traffic per node (server_id)
2026-03-30 13:55:11 +08:00
Xboard
df4e143cf5 Merge pull request #689 from socksprox/fix-user-generation-multiple-prefix
Fix user generation with email_prefix to support multiple users
2026-03-30 13:32:46 +08:00
Xboard
da3fa92e6d Merge pull request #786 from lithromantic/master
Add sha256salt hashing option in password verification
2026-03-30 13:05:39 +08:00
xboard
1e7fa93f99 feat: node traffic limit & batch operations
- Traffic monitoring with transfer_enable limit
- Batch delete nodes
- Reset traffic (single/batch)
2026-03-30 02:50:56 +08:00
xboard
dbfb2f1376 fix: escape Telegram Markdown special characters 2026-03-30 01:46:56 +08:00
xboard
7cd1fb185b Revert "fix: escape Telegram Markdown special characters (fix #450)"
This reverts commit e10ec47140.
2026-03-29 17:48:49 +08:00
lithromantic
cafc6902d6 Merge branch 'cedar2025:master' into master 2026-03-29 00:00:34 +01:00
Xboard
ed6ffbd878 Merge pull request #832 from Dlphine/fix/raw-array-access-data-get
fix: replace raw array access with data_get() to prevent Undefined array key
2026-03-28 17:38:44 +08:00
xboard
e10ec47140 fix: escape Telegram Markdown special characters (fix #450) 2026-03-28 09:10:54 +08:00
xboard
a8aee3e992 feat: revoke other sessions when changing password (fix #414) 2026-03-28 08:31:24 +08:00
xboard
7af0764031 feat: implement email case-insensitive queries (fix #318) 2026-03-28 07:09:21 +08:00
Dlphine
62981bc2e8 fix: replace raw array access with data_get() to prevent Undefined array key
- Migrate $protocol_settings['key'] to data_get($protocol_settings, 'key') across General, SingBox, Shadowrocket, Surfboard, QuantumultX
- Prevents PHP 8 Undefined array key fatal errors when optional protocol_settings fields are missing
- Same class of bug that caused #735
2026-03-27 13:51:28 +08:00
xboard
c8ef04d55f fix: use ServerService::getServer() for node lookup in WebSocket 2026-03-26 03:51:58 +08:00