mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-11-12 16:15:02 +03:00
feat(panel): add sponsor slots fed from sponsors.sanaei.dev
Monthly sponsor placements need to change without cutting a panel release. Panels now read 3X/sponsors.json from the MHSanaei/sponsors repo (GitHub Pages on sponsors.sanaei.dev) and show active sponsors in four slots: an overview banner, a rotating sidebar card (max three), the login page and a new Sponsors page that also lists open placements. An entry shows only while enable is not false and until is in the future; links must be https and logos are png/webp/jpg by name only. The list is cached for an hour and the last good copy survives upstream failures; logos are proxied through /sponsors/logo/:name with failures cached, so CSP stays 'self' and admin browsers never reach a third party. Admins can hide a slot for 24h. Under XUI_DEBUG the panel reads a sibling ../sponsors/3X checkout so edits can be previewed before push.
This commit is contained in:
@@ -23,16 +23,17 @@ and an entry for a removed route documents an endpoint that 404s. This test
|
||||
constructs the real router and diffs it against the registry both ways.
|
||||
|
||||
Scope: everything under /panel/api/ plus the session-auth surface the
|
||||
registry also documents (/login, /logout, /csrf-token, /getTwoFactorEnable,
|
||||
/ws). SPA page routes are UI, not API, and stay out; registry paths that
|
||||
start with "/{" describe the standalone subscription server, which this
|
||||
engine does not serve.
|
||||
registry also documents (/login, /logout, /csrf-token, /sponsors,
|
||||
/getTwoFactorEnable, /ws). SPA page routes are UI, not API, and stay out;
|
||||
registry paths that start with "/{" describe the standalone subscription
|
||||
server, which this engine does not serve.
|
||||
*/
|
||||
|
||||
var contractExtraRoutes = map[string]bool{
|
||||
"POST /login": true,
|
||||
"POST /logout": true,
|
||||
"GET /csrf-token": true,
|
||||
"GET /sponsors": true,
|
||||
"POST /getTwoFactorEnable": true,
|
||||
"GET /ws": true,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user