diff --git a/kibana-opendistro/config/custom_welcome/security-login.style.css b/kibana-opendistro/config/custom_welcome/security-login.style.css new file mode 100644 index 00000000..6648df2b --- /dev/null +++ b/kibana-opendistro/config/custom_welcome/security-login.style.css @@ -0,0 +1,118 @@ +#security-login-app .content { + background: url(./wazuh_wazuh_bg.svg) !important; + width: 100% !important; + height: 100% !important; + background-size: cover !important; +} + +.app-wrapper { + left: 0; +} + +.global-nav.is-global-nav-open+.app-wrapper { + left: 0; +} + +.btn-default { + background-color: #00a9e5!important; + border-color: #00a0e5!important; + color: #ffffff; + padding: 8px; +} + +.btn-default:hover { + background-color: #00a9e5!important; + border-color: #00a0e5!important; + color: #ffffff; +} + +.brand-image-container { + text-align: center; +} + +.brand-image { + display: none; +} + +.login-wrapper { + position: absolute; + width: 430px; + top: 55px; + border-radius: 1px; + padding: 1em; +} + +.login-wrapper .login-title { + text-align: center; + padding-bottom: 10px; + color: #ffffff !important; + font-size: 35px !important; + font-weight: 300; +} + +.login-wrapper .login-subtitle { + text-align: center; + padding-bottom: 15px; + color: #ffffff !important; + font-size: 16px !important; +} + +.login-wrapper .login-form { + padding: 16px; + box-shadow: 0 2px 2px -1px rgba(152, 162, 179, 0.3), 0 1px 5px -2px rgba(152, 162, 179, 0.3); + background-color: #FFF; + border: 1px solid #D3DAE6; + border-radius: 4px; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + margin-top: 32px; +} + +.login-wrapper .login-form .input-group { + margin-bottom: 1em; +} + +.login-wrapper .login-form .kuiTextInput { + cursor: initial; +} + +.login-wrapper .login-form .kuiTextInput:invalid:not(.ng-touched) { + border-color: #D9D9D9; +} + +.login-wrapper .login-form .kuiTextInput.has-error { + border-color: #A30000; +} + +.login-wrapper .login-form .btn-login { + width: 100%; +} + +.login-wrapper .error-message { + color: #b4251d; + font-size: 14px; + margin-top: 16px; + margin-bottom: 0; + background-color: #f8e9e9; + padding: 8px; + font-weight: 400; + border-left: 2px solid #BD271E; +} + +.loginWelcome__logo { + display: inline-block; + width: 80px; + height: 80px; + line-height: 80px; + text-align: center; + background-color: #FFF; + border-radius: 100%; + padding: 16px; + box-shadow: 0 6px 12px -1px rgba(152, 162, 179, 0.2), 0 4px 4px -1px rgba(152, 162, 179, 0.2), 0 2px 2px 0 rgba(152, 162, 179, 0.2); + margin-bottom: 32px; +} + +.loginWelcome__logo { + background: url(./wazuh_logo_circle.svg) center center no-repeat !important; +} \ No newline at end of file diff --git a/kibana-opendistro/config/custom_welcome/template.js.hbs b/kibana-opendistro/config/custom_welcome/template.js.hbs new file mode 100644 index 00000000..54255bca --- /dev/null +++ b/kibana-opendistro/config/custom_welcome/template.js.hbs @@ -0,0 +1,112 @@ +var kbnCsp = JSON.parse(document.querySelector('kbn-csp').getAttribute('data')); +window.__kbnStrictCsp__ = kbnCsp.strictCsp; +window.__kbnDarkMode__ = {{darkMode}}; +window.__kbnPublicPath__ = {{publicPathMap}}; + +if (window.__kbnStrictCsp__ && window.__kbnCspNotEnforced__) { + var legacyBrowserError = document.getElementById('kbn_legacy_browser_error'); + legacyBrowserError.style.display = 'flex'; +} else { + if (!window.__kbnCspNotEnforced__ && window.console) { + window.console.log("^ A single error about an inline script not firing due to content security policy is expected!"); + } + var loadingMessage = document.getElementById('kbn_loading_message'); + loadingMessage.style.display = 'flex'; + + window.onload = function () { + //WAZUH + var interval = setInterval(() => { + var title = document.getElementsByClassName('login-title'); + if ((title || []).length) { + clearInterval(interval); + title[0].textContent = "Welcome to Wazuh"; + var subtitle = document.getElementsByClassName('login-subtitle'); + subtitle[0].textContent = "The Open Source Security Platform"; + var logo = document.getElementsByClassName('brand-image-container'); + $(logo).append(''); + } + }) + // + + function failure() { + // make subsequent calls to failure() noop + failure = function () {}; + + var err = document.createElement('h1'); + err.style['color'] = 'white'; + err.style['font-family'] = 'monospace'; + err.style['text-align'] = 'center'; + err.style['background'] = '#F44336'; + err.style['padding'] = '25px'; + err.innerText = document.querySelector('[data-error-message]').dataset.errorMessage; + + document.body.innerHTML = err.outerHTML; + } + +var stylesheetTarget = document.querySelector('head meta[name="add-styles-here"]') + function loadStyleSheet(url, cb) { + var dom = document.createElement('link'); + dom.rel = 'stylesheet'; + dom.type = 'text/css'; + dom.href = url; + dom.addEventListener('error', failure); + dom.addEventListener('load', cb); + document.head.insertBefore(dom, stylesheetTarget); + } + + var scriptsTarget = document.querySelector('head meta[name="add-scripts-here"]') + function loadScript(url, cb) { + var dom = document.createElement('script'); + {{!-- NOTE: async = false is used to trigger async-download/ordered-execution as outlined here: https://www.html5rocks.com/en/tutorials/speed/script-loading/ --}} + dom.async = false; + dom.src = url; + dom.addEventListener('error', failure); + dom.addEventListener('load', cb); + document.head.insertBefore(dom, scriptsTarget); + } + + function load(urls, cb) { + var pending = urls.length; + urls.forEach(function (url) { + var innerCb = function () { + pending = pending - 1; + if (pending === 0 && typeof cb === 'function') { + cb(); + } + } + + if (typeof url !== 'string') { + load(url, innerCb); + } else if (url.slice(-4) === '.css') { + loadStyleSheet(url, innerCb); + } else { + loadScript(url, innerCb); + } + }); + } + + load([ + {{#each jsDependencyPaths}} + '{{this}}', + {{/each}} + ], function () { + {{#unless legacyBundlePath}} + if (!__kbnBundles__ || !__kbnBundles__['entry/core'] || typeof __kbnBundles__['entry/core'].__kbnBootstrap__ !== 'function') { + console.error('entry/core bundle did not load correctly'); + failure(); + } else { + __kbnBundles__['entry/core'].__kbnBootstrap__() + } + {{/unless}} + + load([ + {{#if legacyBundlePath}} + '{{legacyBundlePath}}', + {{/if}} + {{#each styleSheetPaths}} + '{{this}}', + {{/each}} + ]); + }); + } +} \ No newline at end of file diff --git a/kibana-opendistro/config/custom_welcome/wazuh_logo_circle.svg b/kibana-opendistro/config/custom_welcome/wazuh_logo_circle.svg new file mode 100644 index 00000000..45a61d74 --- /dev/null +++ b/kibana-opendistro/config/custom_welcome/wazuh_logo_circle.svg @@ -0,0 +1 @@ +wazuh_logo_circle \ No newline at end of file diff --git a/kibana-opendistro/config/custom_welcome/wazuh_wazuh_bg.svg b/kibana-opendistro/config/custom_welcome/wazuh_wazuh_bg.svg new file mode 100644 index 00000000..0c49c5c6 --- /dev/null +++ b/kibana-opendistro/config/custom_welcome/wazuh_wazuh_bg.svg @@ -0,0 +1 @@ +wazuh_wazuh_bg \ No newline at end of file