From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id BC40C61A41 for ; Mon, 7 Sep 2020 14:57:21 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id B08EBB128 for ; Mon, 7 Sep 2020 14:56:51 +0200 (CEST) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [212.186.127.180]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS id 341F5B10A for ; Mon, 7 Sep 2020 14:56:50 +0200 (CEST) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id EA90544A86 for ; Mon, 7 Sep 2020 14:56:49 +0200 (CEST) From: Thomas Lamprecht To: pbs-devel@lists.proxmox.com Date: Mon, 7 Sep 2020 14:56:42 +0200 Message-Id: <20200907125642.30604-3-t.lamprecht@proxmox.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200907125642.30604-1-t.lamprecht@proxmox.com> References: <20200907125642.30604-1-t.lamprecht@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL -0.167 Adjusted score from AWL reputation of From: address KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment RCVD_IN_DNSWL_MED -2.3 Sender listed at https://www.dnswl.org/, medium trust SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: [pbs-devel] [PATCH backup 2/2] ui: add translation support X-BeenThere: pbs-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Backup Server development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 Sep 2020 12:57:21 -0000 Signed-off-by: Thomas Lamprecht --- debian/control | 1 + debian/control.in | 1 + src/bin/proxmox-backup-proxy.rs | 1 + src/server/rest.rs | 32 ++++++++++++++++++++++++-------- www/index.hbs | 4 ++++ 5 files changed, 31 insertions(+), 8 deletions(-) diff --git a/debian/control b/debian/control index e523d4d2..460cac6e 100644 --- a/debian/control +++ b/debian/control @@ -103,6 +103,7 @@ Depends: fonts-font-awesome, libjs-extjs (>= 6.0.1), libzstd1 (>= 1.3.8), lvm2, + pbs-i18n, proxmox-backup-docs, proxmox-mini-journalreader, proxmox-widget-toolkit (>= 2.2-4), diff --git a/debian/control.in b/debian/control.in index 31641a3b..8e2312d3 100644 --- a/debian/control.in +++ b/debian/control.in @@ -4,6 +4,7 @@ Depends: fonts-font-awesome, libjs-extjs (>= 6.0.1), libzstd1 (>= 1.3.8), lvm2, + pbs-i18n, proxmox-backup-docs, proxmox-mini-journalreader, proxmox-widget-toolkit (>= 2.2-4), diff --git a/src/bin/proxmox-backup-proxy.rs b/src/bin/proxmox-backup-proxy.rs index 2b43c5ac..75065e6f 100644 --- a/src/bin/proxmox-backup-proxy.rs +++ b/src/bin/proxmox-backup-proxy.rs @@ -53,6 +53,7 @@ async fn run() -> Result<(), Error> { config.add_alias("extjs", "/usr/share/javascript/extjs"); config.add_alias("fontawesome", "/usr/share/fonts-font-awesome"); config.add_alias("xtermjs", "/usr/share/pve-xtermjs"); + config.add_alias("locale", "/usr/share/pbs-i18n"); config.add_alias("widgettoolkit", "/usr/share/javascript/proxmox-widget-toolkit"); config.add_alias("css", "/usr/share/javascript/proxmox-backup/css"); config.add_alias("docs", "/usr/share/doc/proxmox-backup/html"); diff --git a/src/server/rest.rs b/src/server/rest.rs index 70c8b2c1..5577116b 100644 --- a/src/server/rest.rs +++ b/src/server/rest.rs @@ -313,7 +313,13 @@ pub async fn handle_api_request, token: Option, api: &Arc, parts: Parts) -> Response { +fn get_index( + userid: Option, + token: Option, + language: Option, + api: &Arc, + parts: Parts, +) -> Response { let nodename = proxmox::tools::nodename(); let userid = userid.as_ref().map(|u| u.as_str()).unwrap_or(""); @@ -333,10 +339,18 @@ fn get_index(userid: Option, token: Option, api: &Arc } } + let mut lang = String::from(""); + if let Some(language) = language { + if Path::new(&format!("/usr/share/pbs-i18n/pbs-lang-{}.js", language)).exists() { + lang = language; + } + } + let data = json!({ "NodeName": nodename, "UserName": userid, "CSRFPreventionToken": token, + "language": lang, "debug": debug, }); @@ -441,12 +455,14 @@ async fn handle_static_file_download(filename: PathBuf) -> Result (Option, Option) { +fn extract_auth_data(headers: &http::HeaderMap) -> (Option, Option, Option) { let mut ticket = None; + let mut language = None; if let Some(raw_cookie) = headers.get("COOKIE") { if let Ok(cookie) = raw_cookie.to_str() { ticket = tools::extract_cookie(cookie, "PBSAuthCookie"); + language = tools::extract_cookie(cookie, "PBSLangCookie"); } } @@ -455,7 +471,7 @@ fn extract_auth_data(headers: &http::HeaderMap) -> (Option, Option None, }; - (ticket, token) + (ticket, token, language) } fn check_auth( @@ -526,7 +542,7 @@ pub async fn handle_request(api: Arc, req: Request) -> Result rpcenv.set_user(Some(userid.to_string())), Err(err) => { @@ -573,20 +589,20 @@ pub async fn handle_request(api: Arc, req: Request) -> Result { let new_token = assemble_csrf_prevention_token(csrf_secret(), &userid); - return Ok(get_index(Some(userid), Some(new_token), &api, parts)); + return Ok(get_index(Some(userid), Some(new_token), language, &api, parts)); } _ => { tokio::time::delay_until(Instant::from_std(delay_unauth_time)).await; - return Ok(get_index(None, None, &api, parts)); + return Ok(get_index(None, None, language, &api, parts)); } } } else { - return Ok(get_index(None, None, &api, parts)); + return Ok(get_index(None, None, language, &api, parts)); } } else { let filename = api.find_alias(&components); diff --git a/www/index.hbs b/www/index.hbs index 11e4baa9..fc5afb4a 100644 --- a/www/index.hbs +++ b/www/index.hbs @@ -12,7 +12,11 @@ + {{#if language}} + + {{else}} + {{/if}} {{#if debug}} -- 2.27.0