From 919aa672714b0ea5a3154312406a5b86745741e2 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Thu, 22 Dec 2022 13:02:46 +0000 Subject: [PATCH] Customisable login logo --- daemon.py | 6 ++++-- theme/henge/login.png | Bin 0 -> 12156 bytes webapp_login.py | 9 +++++++-- 3 files changed, 11 insertions(+), 4 deletions(-) create mode 100644 theme/henge/login.png diff --git a/daemon.py b/daemon.py index 391d0cca1..ac6958631 100644 --- a/daemon.py +++ b/daemon.py @@ -16263,7 +16263,8 @@ class PubServer(BaseHTTPRequestHandler): self.server.http_prefix, self.server.domain_full, self.server.system_language, - False, ua_str).encode('utf-8') + False, ua_str, + self.server.theme_name).encode('utf-8') msglen = len(msg) self._logout_headers('text/html', msglen, calling_domain) self._write(msg) @@ -18029,7 +18030,8 @@ class PubServer(BaseHTTPRequestHandler): self.server.http_prefix, self.server.domain_full, self.server.system_language, - True, ua_str).encode('utf-8') + True, ua_str, + self.server.theme_name).encode('utf-8') msglen = len(msg) self._login_headers('text/html', msglen, calling_domain) self._write(msg) diff --git a/theme/henge/login.png b/theme/henge/login.png new file mode 100644 index 0000000000000000000000000000000000000000..ad76c80bb0b76df3f4a926aea61b86eeb42f7291 GIT binary patch literal 12156 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 literal 0 HcmV?d00001 diff --git a/webapp_login.py b/webapp_login.py index fe0057377..62b16e243 100644 --- a/webapp_login.py +++ b/webapp_login.py @@ -61,7 +61,8 @@ def html_login(translate: {}, http_prefix: str, domain: str, system_language: str, autocomplete: bool, - ua_str: str) -> str: + ua_str: str, + theme_name: str) -> str: """Shows the login screen """ accounts = no_of_accounts(base_dir) @@ -97,7 +98,11 @@ def html_login(translate: {}, if not login_image_filename: login_image_filename = base_dir + '/accounts/' + login_image - copyfile(base_dir + '/img/login.png', login_image_filename) + source_image = base_dir + '/img/login.png' + theme_image = base_dir + '/theme/' + theme_name + '/login.png' + if os.path.isfile(theme_image): + source_image = theme_image + copyfile(source_image, login_image_filename) text_mode_logo = get_text_mode_logo(base_dir) text_mode_logo_html = html_keyboard_navigation(text_mode_logo, {}, {})