main
8
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
8af3d34589 | docs: fix website URLs (/guide not /docs/guide) | ||
|
|
7bdf35ba5b |
docs: point technical guides at 3m-ui.top; keep docs/readme/
Full documentation lives on the VitePress site (zh + en). Repository docs/*.md are short stubs with links. Multilingual README files remain under docs/readme/. Offline AI install prompts (.txt) are retained. |
||
|
|
3bb1abe43a | docs: document POST /users/quick in OpenAPI and user guides | ||
|
|
79e6c778a1 | chore: remove HWID feature (subscription device binding) | ||
|
|
e89750f9d0 |
docs: align README/OpenAPI with per-node traffic, limits, backups
- docs/node-traffic.md; feature tables; installation backup cleanup note
- OpenAPI: traffic_multiplier, GET /users/{id}/node-traffic
docs: align README/OpenAPI with per-node traffic, limits, backups
- docs/node-traffic.md; feature tables; installation backup cleanup note
- OpenAPI: traffic_multiplier, GET /users/{id}/node-traffic
docs: align README/OpenAPI with per-node traffic, limits, backups
- docs/node-traffic.md; feature tables; installation backup cleanup note
- OpenAPI: traffic_multiplier, GET /users/{id}/node-traffic
docs: align README/OpenAPI with per-node traffic, limits, backups
- docs/node-traffic.md; feature tables; installation backup cleanup note
- OpenAPI: traffic_multiplier, GET /users/{id}/node-traffic
docs: align README/OpenAPI with per-node traffic, limits, backups
- docs/node-traffic.md; feature tables; installation backup cleanup note
- OpenAPI: traffic_multiplier, GET /users/{id}/node-traffic
docs: align README/OpenAPI with per-node traffic, limits, backups
- docs/node-traffic.md; feature tables; installation backup cleanup note
- OpenAPI: traffic_multiplier, GET /users/{id}/node-traffic
docs: align README/OpenAPI with per-node traffic, limits, backups
- docs/node-traffic.md; feature tables; installation backup cleanup note
- OpenAPI: traffic_multiplier, GET /users/{id}/node-traffic
docs: align README/OpenAPI with per-node traffic, limits, backups
- docs/node-traffic.md; feature tables; installation backup cleanup note
- OpenAPI: traffic_multiplier, GET /users/{id}/node-traffic
docs: align README/OpenAPI with per-node traffic, limits, backups
- docs/node-traffic.md; feature tables; installation backup cleanup note
- OpenAPI: traffic_multiplier, GET /users/{id}/node-traffic
docs: align README/OpenAPI with per-node traffic, limits, backups
- docs/node-traffic.md; feature tables; installation backup cleanup note
- OpenAPI: traffic_multiplier, GET /users/{id}/node-traffic
docs: align README/OpenAPI with per-node traffic, limits, backups
- docs/node-traffic.md; feature tables; installation backup cleanup note
- OpenAPI: traffic_multiplier, GET /users/{id}/node-traffic
docs: align README/OpenAPI with per-node traffic, limits, backups
- docs/node-traffic.md; feature tables; installation backup cleanup note
- OpenAPI: traffic_multiplier, GET /users/{id}/node-traffic
|
||
|
|
aab6c17745 |
fix(hwid): more reliable device registration + client header aliases
- Upsert on (proxy_user_id, hwid); log registered/seen for diagnosis - Accept x-device-id / x-hardware-id / ?hwid= aliases - Response x-hwid-limit for v2rayTUN when limit active - Docs: which clients actually send HWID (Clash stock does not) fix(hwid): more reliable device registration + client header aliases - Upsert on (proxy_user_id, hwid); log registered/seen for diagnosis - Accept x-device-id / x-hardware-id / ?hwid= aliases - Response x-hwid-limit for v2rayTUN when limit active - Docs: which clients actually send HWID (Clash stock does not) fix(hwid): more reliable device registration + client header aliases - Upsert on (proxy_user_id, hwid); log registered/seen for diagnosis - Accept x-device-id / x-hardware-id / ?hwid= aliases - Response x-hwid-limit for v2rayTUN when limit active - Docs: which clients actually send HWID (Clash stock does not) fix(hwid): more reliable device registration + client header aliases - Upsert on (proxy_user_id, hwid); log registered/seen for diagnosis - Accept x-device-id / x-hardware-id / ?hwid= aliases - Response x-hwid-limit for v2rayTUN when limit active - Docs: which clients actually send HWID (Clash stock does not) fix(hwid): more reliable device registration + client header aliases - Upsert on (proxy_user_id, hwid); log registered/seen for diagnosis - Accept x-device-id / x-hardware-id / ?hwid= aliases - Response x-hwid-limit for v2rayTUN when limit active - Docs: which clients actually send HWID (Clash stock does not) fix(hwid): more reliable device registration + client header aliases - Upsert on (proxy_user_id, hwid); log registered/seen for diagnosis - Accept x-device-id / x-hardware-id / ?hwid= aliases - Response x-hwid-limit for v2rayTUN when limit active - Docs: which clients actually send HWID (Clash stock does not) fix(hwid): more reliable device registration + client header aliases - Upsert on (proxy_user_id, hwid); log registered/seen for diagnosis - Accept x-device-id / x-hardware-id / ?hwid= aliases - Response x-hwid-limit for v2rayTUN when limit active - Docs: which clients actually send HWID (Clash stock does not) fix(hwid): more reliable device registration + client header aliases - Upsert on (proxy_user_id, hwid); log registered/seen for diagnosis - Accept x-device-id / x-hardware-id / ?hwid= aliases - Response x-hwid-limit for v2rayTUN when limit active - Docs: which clients actually send HWID (Clash stock does not) fix(hwid): more reliable device registration + client header aliases - Upsert on (proxy_user_id, hwid); log registered/seen for diagnosis - Accept x-device-id / x-hardware-id / ?hwid= aliases - Response x-hwid-limit for v2rayTUN when limit active - Docs: which clients actually send HWID (Clash stock does not) fix(hwid): more reliable device registration + client header aliases - Upsert on (proxy_user_id, hwid); log registered/seen for diagnosis - Accept x-device-id / x-hardware-id / ?hwid= aliases - Response x-hwid-limit for v2rayTUN when limit active - Docs: which clients actually send HWID (Clash stock does not) fix(hwid): more reliable device registration + client header aliases - Upsert on (proxy_user_id, hwid); log registered/seen for diagnosis - Accept x-device-id / x-hardware-id / ?hwid= aliases - Response x-hwid-limit for v2rayTUN when limit active - Docs: which clients actually send HWID (Clash stock does not) fix(hwid): more reliable device registration + client header aliases - Upsert on (proxy_user_id, hwid); log registered/seen for diagnosis - Accept x-device-id / x-hardware-id / ?hwid= aliases - Response x-hwid-limit for v2rayTUN when limit active - Docs: which clients actually send HWID (Clash stock does not) |
||
|
|
fa1744eef7 |
fix(hwid): never 500 subscriptions; fail-open tracking when unlimited
Root cause: hwid_limit=0 still tried to INSERT/UPDATE devices; any DB error returned 500 and blocked the whole subscription (Happ always sends x-hwid). - limit<=0: best-effort track only, never deny - limit>0: require x-hwid; deny only when over device cap - Accept broader client HWID strings (4–128, strip controls) - Router: only 403 for MaxDevices/Required; ignore other errors fix(hwid): never 500 subscriptions; fail-open tracking when unlimited Root cause: hwid_limit=0 still tried to INSERT/UPDATE devices; any DB error returned 500 and blocked the whole subscription (Happ always sends x-hwid). - limit<=0: best-effort track only, never deny - limit>0: require x-hwid; deny only when over device cap - Accept broader client HWID strings (4–128, strip controls) - Router: only 403 for MaxDevices/Required; ignore other errors fix(hwid): never 500 subscriptions; fail-open tracking when unlimited Root cause: hwid_limit=0 still tried to INSERT/UPDATE devices; any DB error returned 500 and blocked the whole subscription (Happ always sends x-hwid). - limit<=0: best-effort track only, never deny - limit>0: require x-hwid; deny only when over device cap - Accept broader client HWID strings (4–128, strip controls) - Router: only 403 for MaxDevices/Required; ignore other errors fix(hwid): never 500 subscriptions; fail-open tracking when unlimited Root cause: hwid_limit=0 still tried to INSERT/UPDATE devices; any DB error returned 500 and blocked the whole subscription (Happ always sends x-hwid). - limit<=0: best-effort track only, never deny - limit>0: require x-hwid; deny only when over device cap - Accept broader client HWID strings (4–128, strip controls) - Router: only 403 for MaxDevices/Required; ignore other errors fix(hwid): never 500 subscriptions; fail-open tracking when unlimited Root cause: hwid_limit=0 still tried to INSERT/UPDATE devices; any DB error returned 500 and blocked the whole subscription (Happ always sends x-hwid). - limit<=0: best-effort track only, never deny - limit>0: require x-hwid; deny only when over device cap - Accept broader client HWID strings (4–128, strip controls) - Router: only 403 for MaxDevices/Required; ignore other errors fix(hwid): never 500 subscriptions; fail-open tracking when unlimited Root cause: hwid_limit=0 still tried to INSERT/UPDATE devices; any DB error returned 500 and blocked the whole subscription (Happ always sends x-hwid). - limit<=0: best-effort track only, never deny - limit>0: require x-hwid; deny only when over device cap - Accept broader client HWID strings (4–128, strip controls) - Router: only 403 for MaxDevices/Required; ignore other errors fix(hwid): never 500 subscriptions; fail-open tracking when unlimited Root cause: hwid_limit=0 still tried to INSERT/UPDATE devices; any DB error returned 500 and blocked the whole subscription (Happ always sends x-hwid). - limit<=0: best-effort track only, never deny - limit>0: require x-hwid; deny only when over device cap - Accept broader client HWID strings (4–128, strip controls) - Router: only 403 for MaxDevices/Required; ignore other errors fix(hwid): never 500 subscriptions; fail-open tracking when unlimited Root cause: hwid_limit=0 still tried to INSERT/UPDATE devices; any DB error returned 500 and blocked the whole subscription (Happ always sends x-hwid). - limit<=0: best-effort track only, never deny - limit>0: require x-hwid; deny only when over device cap - Accept broader client HWID strings (4–128, strip controls) - Router: only 403 for MaxDevices/Required; ignore other errors fix(hwid): never 500 subscriptions; fail-open tracking when unlimited Root cause: hwid_limit=0 still tried to INSERT/UPDATE devices; any DB error returned 500 and blocked the whole subscription (Happ always sends x-hwid). - limit<=0: best-effort track only, never deny - limit>0: require x-hwid; deny only when over device cap - Accept broader client HWID strings (4–128, strip controls) - Router: only 403 for MaxDevices/Required; ignore other errors fix(hwid): never 500 subscriptions; fail-open tracking when unlimited Root cause: hwid_limit=0 still tried to INSERT/UPDATE devices; any DB error returned 500 and blocked the whole subscription (Happ always sends x-hwid). - limit<=0: best-effort track only, never deny - limit>0: require x-hwid; deny only when over device cap - Accept broader client HWID strings (4–128, strip controls) - Router: only 403 for MaxDevices/Required; ignore other errors fix(hwid): never 500 subscriptions; fail-open tracking when unlimited Root cause: hwid_limit=0 still tried to INSERT/UPDATE devices; any DB error returned 500 and blocked the whole subscription (Happ always sends x-hwid). - limit<=0: best-effort track only, never deny - limit>0: require x-hwid; deny only when over device cap - Accept broader client HWID strings (4–128, strip controls) - Router: only 403 for MaxDevices/Required; ignore other errors fix(hwid): never 500 subscriptions; fail-open tracking when unlimited Root cause: hwid_limit=0 still tried to INSERT/UPDATE devices; any DB error returned 500 and blocked the whole subscription (Happ always sends x-hwid). - limit<=0: best-effort track only, never deny - limit>0: require x-hwid; deny only when over device cap - Accept broader client HWID strings (4–128, strip controls) - Router: only 403 for MaxDevices/Required; ignore other errors |
||
|
|
b6996ae2fb |
docs: align README, OpenAPI, and docs with current limits/certs/subs
- Feature tables: IP 5s poll, HWID require x-hwid, sub_pull_limit, batch cert - docs/users-limits.md, batch-certificate.md, subscription-formats.md - OpenAPI ProxyUser + POST /nodes/batch/certificate docs: align README, OpenAPI, and docs with current limits/certs/subs - Feature tables: IP 5s poll, HWID require x-hwid, sub_pull_limit, batch cert - docs/users-limits.md, batch-certificate.md, subscription-formats.md - OpenAPI ProxyUser + POST /nodes/batch/certificate docs: align README, OpenAPI, and docs with current limits/certs/subs - Feature tables: IP 5s poll, HWID require x-hwid, sub_pull_limit, batch cert - docs/users-limits.md, batch-certificate.md, subscription-formats.md - OpenAPI ProxyUser + POST /nodes/batch/certificate docs: align README, OpenAPI, and docs with current limits/certs/subs - Feature tables: IP 5s poll, HWID require x-hwid, sub_pull_limit, batch cert - docs/users-limits.md, batch-certificate.md, subscription-formats.md - OpenAPI ProxyUser + POST /nodes/batch/certificate docs: align README, OpenAPI, and docs with current limits/certs/subs - Feature tables: IP 5s poll, HWID require x-hwid, sub_pull_limit, batch cert - docs/users-limits.md, batch-certificate.md, subscription-formats.md - OpenAPI ProxyUser + POST /nodes/batch/certificate docs: align README, OpenAPI, and docs with current limits/certs/subs - Feature tables: IP 5s poll, HWID require x-hwid, sub_pull_limit, batch cert - docs/users-limits.md, batch-certificate.md, subscription-formats.md - OpenAPI ProxyUser + POST /nodes/batch/certificate docs: align README, OpenAPI, and docs with current limits/certs/subs - Feature tables: IP 5s poll, HWID require x-hwid, sub_pull_limit, batch cert - docs/users-limits.md, batch-certificate.md, subscription-formats.md - OpenAPI ProxyUser + POST /nodes/batch/certificate docs: align README, OpenAPI, and docs with current limits/certs/subs - Feature tables: IP 5s poll, HWID require x-hwid, sub_pull_limit, batch cert - docs/users-limits.md, batch-certificate.md, subscription-formats.md - OpenAPI ProxyUser + POST /nodes/batch/certificate docs: align README, OpenAPI, and docs with current limits/certs/subs - Feature tables: IP 5s poll, HWID require x-hwid, sub_pull_limit, batch cert - docs/users-limits.md, batch-certificate.md, subscription-formats.md - OpenAPI ProxyUser + POST /nodes/batch/certificate docs: align README, OpenAPI, and docs with current limits/certs/subs - Feature tables: IP 5s poll, HWID require x-hwid, sub_pull_limit, batch cert - docs/users-limits.md, batch-certificate.md, subscription-formats.md - OpenAPI ProxyUser + POST /nodes/batch/certificate docs: align README, OpenAPI, and docs with current limits/certs/subs - Feature tables: IP 5s poll, HWID require x-hwid, sub_pull_limit, batch cert - docs/users-limits.md, batch-certificate.md, subscription-formats.md - OpenAPI ProxyUser + POST /nodes/batch/certificate docs: align README, OpenAPI, and docs with current limits/certs/subs - Feature tables: IP 5s poll, HWID require x-hwid, sub_pull_limit, batch cert - docs/users-limits.md, batch-certificate.md, subscription-formats.md - OpenAPI ProxyUser + POST /nodes/batch/certificate |