From bd802e6a50a391de87739972b5860ebafa302c17 Mon Sep 17 00:00:00 2001
From: Eric_Lee <xplzv@126.com>
Date: Tue, 9 Jun 2020 14:06:11 +0800
Subject: [PATCH] add logo urls (#4088)

---
 apps/jumpserver/conf.py            | 25 ++++++++++++++++++++++++-
 apps/jumpserver/settings/custom.py |  1 +
 apps/settings/api.py               |  3 ++-
 3 files changed, 27 insertions(+), 2 deletions(-)

diff --git a/apps/jumpserver/conf.py b/apps/jumpserver/conf.py
index 6a54ec251..13f25d492 100644
--- a/apps/jumpserver/conf.py
+++ b/apps/jumpserver/conf.py
@@ -16,6 +16,7 @@ import json
 import yaml
 from importlib import import_module
 from django.urls import reverse_lazy
+from django.contrib.staticfiles.templatetags.staticfiles import static
 from urllib.parse import urljoin, urlparse
 
 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
@@ -446,6 +447,29 @@ class DynamicConfig:
         except:
             return False
 
+    def LOGO_URLS(self):
+        logo_urls = {'logo_logout': static('img/logo.png'),
+                     'logo_index': static('img/logo_text.png'),
+                     'login_image': static('img/login_image.png'),
+                     'favicon': static('img/facio.ico')}
+        if not HAS_XPACK:
+            return logo_urls
+        try:
+            from xpack.plugins.interface.models import Interface
+            obj = Interface.interface()
+            if obj:
+                if obj.logo_logout:
+                    logo_urls.update({'logo_logout': obj.logo_logout.url})
+                if obj.logo_index:
+                    logo_urls.update({'logo_index': obj.logo_index.url})
+                if obj.login_image:
+                    logo_urls.update({'login_image': obj.login_image.url})
+                if obj.favicon:
+                    logo_urls.update({'favicon': obj.favicon.url})
+        except:
+            pass
+        return logo_urls
+
     def get_from_db(self, item):
         if self.db_setting is not None:
             value = self.db_setting.get(item)
@@ -641,4 +665,3 @@ class ConfigManager:
     @classmethod
     def get_dynamic_config(cls, config):
         return DynamicConfig(config)
-
diff --git a/apps/jumpserver/settings/custom.py b/apps/jumpserver/settings/custom.py
index 3bada5469..0be476d96 100644
--- a/apps/jumpserver/settings/custom.py
+++ b/apps/jumpserver/settings/custom.py
@@ -89,3 +89,4 @@ WINDOWS_SKIP_ALL_MANUAL_PASSWORD = CONFIG.WINDOWS_SKIP_ALL_MANUAL_PASSWORD
 # XPACK
 XPACK_LICENSE_IS_VALID = DYNAMIC.XPACK_LICENSE_IS_VALID
 
+LOGO_URLS = DYNAMIC.LOGO_URLS
diff --git a/apps/settings/api.py b/apps/settings/api.py
index e4fcb6098..974e31a4e 100644
--- a/apps/settings/api.py
+++ b/apps/settings/api.py
@@ -274,7 +274,8 @@ class PublicSettingApi(generics.RetrieveAPIView):
                 "XPACK_LICENSE_IS_VALID": settings.XPACK_LICENSE_IS_VALID,
                 "LOGIN_CONFIRM_ENABLE": settings.LOGIN_CONFIRM_ENABLE,
                 "SECURITY_VIEW_AUTH_NEED_MFA": settings.SECURITY_VIEW_AUTH_NEED_MFA,
-                "SECURITY_MFA_VERIFY_TTL": settings.SECURITY_MFA_VERIFY_TTL
+                "SECURITY_MFA_VERIFY_TTL": settings.SECURITY_MFA_VERIFY_TTL,
+                "LOGO_URLS": settings.LOGO_URLS
             }
         }
         return instance