mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-08-16 16:20:59 +00:00
fix(sub): serve a copy-only page when a subscription URL is opened in a browser (#6183)
* fix(sub): show copy-only page for browser subscription visits Browser navigation to /sub previously rendered the normal subscription page, which exposed subscription material in page data or raw base64 depending on request headers. Keep VPN clients on the raw subscription body, but classify browser document requests and return a neutral static copy-only HTML page with no embedded share links or page data. This preserves the C1 LimitIP parser fix in the same master candidate while avoiding a DE rollback of the browser subscription UX. * fix(sub): keep the themed page for an explicit html request Only implicit browser navigation is downgraded to the copy-only page. An operator who appends html=1 or view=html already holds the URL, so the themed subscription page keeps rendering for them and serveSubPage stays in use. * fix(sub): keep browser pages copy-only
This commit is contained in:
@@ -2075,5 +2075,8 @@
|
||||
"statusFailed": "فشل",
|
||||
"statusDown": "غير متصل",
|
||||
"statusUp": "متصل"
|
||||
}
|
||||
},
|
||||
"subCopyPageTitle": "رابط الاشتراك",
|
||||
"subCopyPageHeading": "هذا رابط اشتراك",
|
||||
"subCopyPageInstructions": "لا حاجة لفتحه في المتصفح. انسخ عنوان هذه الصفحة والصقه في التطبيق."
|
||||
}
|
||||
|
||||
@@ -2075,5 +2075,8 @@
|
||||
"statusFailed": "FAILED",
|
||||
"statusDown": "DOWN",
|
||||
"statusUp": "UP"
|
||||
}
|
||||
},
|
||||
"subCopyPageTitle": "Subscription link",
|
||||
"subCopyPageHeading": "This is a subscription link",
|
||||
"subCopyPageInstructions": "You do not need to open it in a browser. Copy this page address and paste it into the app."
|
||||
}
|
||||
|
||||
@@ -2075,5 +2075,8 @@
|
||||
"statusFailed": "FALLIDO",
|
||||
"statusDown": "CAÍDO",
|
||||
"statusUp": "ACTIVO"
|
||||
}
|
||||
},
|
||||
"subCopyPageTitle": "Enlace de suscripción",
|
||||
"subCopyPageHeading": "Este es un enlace de suscripción",
|
||||
"subCopyPageInstructions": "No necesita abrirlo en el navegador. Copie la dirección de esta página y péguela en la aplicación."
|
||||
}
|
||||
|
||||
@@ -2075,5 +2075,8 @@
|
||||
"statusFailed": "ناموفق",
|
||||
"statusDown": "قطع",
|
||||
"statusUp": "وصل"
|
||||
}
|
||||
},
|
||||
"subCopyPageTitle": "پیوند اشتراک",
|
||||
"subCopyPageHeading": "این یک پیوند اشتراک است",
|
||||
"subCopyPageInstructions": "نیازی نیست آن را در مرورگر باز کنید. نشانی این صفحه را کپی و در برنامه جایگذاری کنید."
|
||||
}
|
||||
|
||||
@@ -2075,5 +2075,8 @@
|
||||
"statusFailed": "GAGAL",
|
||||
"statusDown": "MATI",
|
||||
"statusUp": "AKTIF"
|
||||
}
|
||||
},
|
||||
"subCopyPageTitle": "Tautan langganan",
|
||||
"subCopyPageHeading": "Ini adalah tautan langganan",
|
||||
"subCopyPageInstructions": "Anda tidak perlu membukanya di browser. Salin alamat halaman ini dan tempelkan ke aplikasi."
|
||||
}
|
||||
|
||||
@@ -2075,5 +2075,8 @@
|
||||
"statusFailed": "失敗",
|
||||
"statusDown": "ダウン",
|
||||
"statusUp": "アップ"
|
||||
}
|
||||
},
|
||||
"subCopyPageTitle": "サブスクリプションリンク",
|
||||
"subCopyPageHeading": "これはサブスクリプションリンクです",
|
||||
"subCopyPageInstructions": "ブラウザーで開く必要はありません。このページのアドレスをコピーしてアプリに貼り付けてください。"
|
||||
}
|
||||
|
||||
@@ -2075,5 +2075,8 @@
|
||||
"statusFailed": "FALHOU",
|
||||
"statusDown": "INATIVO",
|
||||
"statusUp": "ATIVO"
|
||||
}
|
||||
},
|
||||
"subCopyPageTitle": "Link de assinatura",
|
||||
"subCopyPageHeading": "Este é um link de assinatura",
|
||||
"subCopyPageInstructions": "Não é necessário abri-lo no navegador. Copie o endereço desta página e cole-o no aplicativo."
|
||||
}
|
||||
|
||||
@@ -2075,5 +2075,8 @@
|
||||
"statusFailed": "НЕУДАЧНО",
|
||||
"statusDown": "НЕДОСТУПЕН",
|
||||
"statusUp": "РАБОТАЕТ"
|
||||
}
|
||||
},
|
||||
"subCopyPageTitle": "Ссылка подписки",
|
||||
"subCopyPageHeading": "Это ссылка подписки",
|
||||
"subCopyPageInstructions": "Открывать её в браузере не нужно. Скопируйте адрес этой страницы и вставьте его в приложение."
|
||||
}
|
||||
|
||||
@@ -2075,5 +2075,8 @@
|
||||
"statusFailed": "BAŞARISIZ",
|
||||
"statusDown": "ÇEVRİMDIŞI",
|
||||
"statusUp": "ÇEVRİMİÇİ"
|
||||
}
|
||||
},
|
||||
"subCopyPageTitle": "Abonelik bağlantısı",
|
||||
"subCopyPageHeading": "Bu bir abonelik bağlantısıdır",
|
||||
"subCopyPageInstructions": "Tarayıcıda açmanız gerekmez. Bu sayfanın adresini kopyalayıp uygulamaya yapıştırın."
|
||||
}
|
||||
|
||||
@@ -2075,5 +2075,8 @@
|
||||
"statusFailed": "НЕВДАЛО",
|
||||
"statusDown": "НЕДОСТУПНО",
|
||||
"statusUp": "ДОСТУПНО"
|
||||
}
|
||||
},
|
||||
"subCopyPageTitle": "Посилання підписки",
|
||||
"subCopyPageHeading": "Це посилання підписки",
|
||||
"subCopyPageInstructions": "Відкривати його в браузері не потрібно. Скопіюйте адресу цієї сторінки та вставте її в застосунок."
|
||||
}
|
||||
|
||||
@@ -2075,5 +2075,8 @@
|
||||
"statusFailed": "THẤT BẠI",
|
||||
"statusDown": "NGỪNG HOẠT ĐỘNG",
|
||||
"statusUp": "HOẠT ĐỘNG"
|
||||
}
|
||||
},
|
||||
"subCopyPageTitle": "Liên kết đăng ký",
|
||||
"subCopyPageHeading": "Đây là liên kết đăng ký",
|
||||
"subCopyPageInstructions": "Bạn không cần mở liên kết trong trình duyệt. Hãy sao chép địa chỉ trang này và dán vào ứng dụng."
|
||||
}
|
||||
|
||||
@@ -2075,5 +2075,8 @@
|
||||
"statusFailed": "失败",
|
||||
"statusDown": "断开",
|
||||
"statusUp": "恢复"
|
||||
}
|
||||
},
|
||||
"subCopyPageTitle": "订阅链接",
|
||||
"subCopyPageHeading": "这是一个订阅链接",
|
||||
"subCopyPageInstructions": "无需在浏览器中打开。请复制此页面地址并粘贴到应用中。"
|
||||
}
|
||||
|
||||
@@ -2075,5 +2075,8 @@
|
||||
"statusFailed": "失敗",
|
||||
"statusDown": "中斷",
|
||||
"statusUp": "恢復"
|
||||
}
|
||||
},
|
||||
"subCopyPageTitle": "訂閱連結",
|
||||
"subCopyPageHeading": "這是訂閱連結",
|
||||
"subCopyPageInstructions": "無需在瀏覽器中開啟。請複製此頁面位址並貼到應用程式中。"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user