From 7424f27cf30065a1308aa3ba4d75ea82c0af4af9 Mon Sep 17 00:00:00 2001 From: wxiaoguang Date: Fri, 10 May 2024 20:07:01 +0800 Subject: Check if reverse proxy is correctly configured (#30890) Follow #27011 Follow #30885 --------- Co-authored-by: silverwind Co-authored-by: Giteabot --- web_src/js/features/admin/selfcheck.js | 31 +++++++++++++++++++++++++++++++ web_src/js/features/common-global.js | 2 +- 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 web_src/js/features/admin/selfcheck.js (limited to 'web_src/js/features') diff --git a/web_src/js/features/admin/selfcheck.js b/web_src/js/features/admin/selfcheck.js new file mode 100644 index 0000000000..699395b363 --- /dev/null +++ b/web_src/js/features/admin/selfcheck.js @@ -0,0 +1,31 @@ +import {toggleElem} from '../../utils/dom.js'; +import {POST} from '../../modules/fetch.js'; + +const {appSubUrl} = window.config; + +export async function initAdminSelfCheck() { + const elCheckByFrontend = document.querySelector('#self-check-by-frontend'); + if (!elCheckByFrontend) return; + + const elContent = document.querySelector('.page-content.admin .admin-setting-content'); + + // send frontend self-check request + const resp = await POST(`${appSubUrl}/admin/self_check`, { + data: new URLSearchParams({ + location_origin: window.location.origin, + now: Date.now(), // TODO: check time difference between server and client + }), + }); + const json = await resp.json(); + toggleElem(elCheckByFrontend, Boolean(json.problems?.length)); + for (const problem of json.problems ?? []) { + const elProblem = document.createElement('div'); + elProblem.classList.add('ui', 'warning', 'message'); + elProblem.textContent = problem; + elCheckByFrontend.append(elProblem); + } + + // only show the "no problem" if there is no visible "self-check-problem" + const hasProblem = Boolean(elContent.querySelectorAll('.self-check-problem:not(.tw-hidden)').length); + toggleElem(elContent.querySelector('.self-check-no-problem'), !hasProblem); +} diff --git a/web_src/js/features/common-global.js b/web_src/js/features/common-global.js index 5b8673105d..3b021d4485 100644 --- a/web_src/js/features/common-global.js +++ b/web_src/js/features/common-global.js @@ -451,5 +451,5 @@ export function checkAppUrl() { return; } showGlobalErrorMessage(`Your ROOT_URL in app.ini is "${appUrl}", it's unlikely matching the site you are visiting. -Mismatched ROOT_URL config causes wrong URL links for web UI/mail content/webhook notification/OAuth2 sign-in.`); +Mismatched ROOT_URL config causes wrong URL links for web UI/mail content/webhook notification/OAuth2 sign-in.`, 'warning'); } -- cgit v1.2.3