From 41399353ed5f48a2ab40a5235450dfc97f1d41a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Ribeiro?= Date: Thu, 16 Jul 2020 19:57:10 -0300 Subject: [PATCH 01/16] Base 2.0.1-alpha --- README.md | 6 +++--- VERSION | 2 +- resources/js/app.js | 18 ++++++++++++++++++ resources/js/classes/NagmapReborn.js | 22 ++++++++++++---------- 4 files changed, 34 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index cca8fb0..3785d49 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ Making it possible to easily and visually identify the status of what is monitor Nagmap Reborn is based on Nagmap project developed by [Marcel Hecko](https://github.com/hecko). ## v2.0.0 -This version brings significant logical changes, being a break-point in the API compatibility between v1.x.x and v2.x.x; +This version brings significant logical changes, being a break-point in the API compatibility between v1.x.x and v2.x.x. With these changes it was possible to achieve the following objectives: @@ -20,9 +20,9 @@ With these changes it was possible to achieve the following objectives: ## Installation Download the latest version from the [release page](https://github.com/jocafamaka/nagmapReborn/releases). -In the file [INSTALL.md](https://github.com/jocafamaka/nagmapReborn/blob/master/INSTALL.md) you will find complete instructions for installing and configuring the project. +Follow the instructions contained in the [INSTALL.md](https://github.com/jocafamaka/nagmapReborn/blob/master/INSTALL.md) file, there you will find find complete instructions for installing and configuring the project. -### Migrating from v1.6.x to 2.0.0 +### Migrating from v1.6.x to v2.0.0 [See here](https://github.com/jocafamaka/nagmapReborn/wiki/Migrating-from-v1.6.x-to-v2.x.x) a detailed guide of all the changes made and what actions are necessary for version migration! ## Compatibility diff --git a/VERSION b/VERSION index 359a5b9..020df05 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.0.0 \ No newline at end of file +2.0.1-alpha \ No newline at end of file diff --git a/resources/js/app.js b/resources/js/app.js index db08a9e..6feaa64 100644 --- a/resources/js/app.js +++ b/resources/js/app.js @@ -85,6 +85,15 @@ function coverHanlder() { $("#cover").remove() }, 500); + Swal.fire({ + heightAuto: false, + icon: "warning", + title: 'Nagmap Reborn v' + config.ngRebornVersion, + html: i18next.t('not_released'), + footer: `${i18next.t('last_stable')}`, + confirmButtonText: 'OK' + }); + window.nagmapReborn.checkNgRebornUpdate(); _u("Showing map"); @@ -135,6 +144,15 @@ function coverHanlder() { } _u("Showing error cover"); + + Swal.fire({ + heightAuto: false, + icon: "warning", + title: 'Nagmap Reborn v' + config.ngRebornVersion || "2.0.1-alpha", + html: i18next.t('not_released'), + footer: `${i18next.t('last_stable') || 'Get the last stable version'}`, + confirmButtonText: 'OK' + }); } } diff --git a/resources/js/classes/NagmapReborn.js b/resources/js/classes/NagmapReborn.js index d9771ae..9f99df9 100644 --- a/resources/js/classes/NagmapReborn.js +++ b/resources/js/classes/NagmapReborn.js @@ -412,15 +412,17 @@ class NagmapReborn { * @return undefined */ search() { - let query = $('#filter_str').val().toLowerCase(); - let selector = (config.cbMode == 1 ? '#filterPrepend .changesBarLine' : '#changesbar .changesBarLine'); - $(selector).each((i, el) => { - if ($(el).text().toLowerCase().indexOf(query) === -1) { - $(el).closest(selector).hide(); - } else { - $(el).closest(selector).show(); - } - }); + if (config.cbFilter) { + let query = $('#filter_str').val().toLowerCase(); + let selector = (config.cbMode == 1 ? '#filterPrepend .changesBarLine' : '#changesbar .changesBarLine'); + $(selector).each((i, el) => { + if ($(el).text().toLowerCase().indexOf(query) === -1) { + $(el).closest(selector).hide(); + } else { + $(el).closest(selector).show(); + } + }); + } }; /** @@ -484,7 +486,7 @@ class NagmapReborn { */ checkNgRebornUpdate() { this._u("Checking for updates."); - axios.get("https://raw.githubusercontent.com/jocafamaka/nagmapReborn/master/VERSION") + axios.get("https://raw.githubusercontent.com/jocafamaka/nagmapReborn/developing/VERSION") .then(response => { if (config.ngRebornVersion != null && (config.ngRebornVersion != response.data)) { Swal.fire({ From 8eb7ec296448ef625683310c2169446dbc03762b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Ribeiro?= Date: Sat, 18 Jul 2020 13:58:25 -0300 Subject: [PATCH 02/16] Update ConfigLoader.php --- src/NagmapReborn/ConfigLoader.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/NagmapReborn/ConfigLoader.php b/src/NagmapReborn/ConfigLoader.php index fe7ca6c..e771275 100644 --- a/src/NagmapReborn/ConfigLoader.php +++ b/src/NagmapReborn/ConfigLoader.php @@ -55,8 +55,8 @@ function config($key, $default = null) } } - putenv("NGR_NGREBORN.VERSION=" . @file_get_contents(NGR_DOCUMENT_ROOT . "/VERSION")); - putenv("NGR_NGREBORN.DOMAIN=" . @file_get_contents(NGR_DOCUMENT_ROOT . "/resources/reporter/DOMAIN")); + putenv("NGR_ngreborn.version=" . @file_get_contents(NGR_DOCUMENT_ROOT . "/VERSION")); + putenv("NGR_ngreborn.domain=" . @file_get_contents(NGR_DOCUMENT_ROOT . "/resources/reporter/DOMAIN")); define("CONFIG_LOAD", true); } From f3cf90a4ad9f660d2a6574337fc3369341f43a65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Ribeiro?= Date: Thu, 13 Aug 2020 20:23:02 -0300 Subject: [PATCH 03/16] No hostgroup fix #30 --- resources/js/classes/Host.js | 5 ++--- src/NagmapReborn/marker.php | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/resources/js/classes/Host.js b/resources/js/classes/Host.js index de49a07..2c6cece 100644 --- a/resources/js/classes/Host.js +++ b/resources/js/classes/Host.js @@ -42,9 +42,8 @@ class Host { let hostgroups = ""; let parents = ""; - data.hostgroups.forEach(e => { - hostgroups += `${e}
`; - }); + if (data.hostgroups) + data.hostgroups.forEach(e => { hostgroups += `${e}
`; }); if (data.parents) { data.parents.forEach(e => { diff --git a/src/NagmapReborn/marker.php b/src/NagmapReborn/marker.php index 6f8352f..afab962 100644 --- a/src/NagmapReborn/marker.php +++ b/src/NagmapReborn/marker.php @@ -69,7 +69,7 @@ if (config('ngreborn.filter_hostgroup')) { foreach ($hosts as $host) { - if (!in_array(config('ngreborn.filter_hostgroup'), $hosts[$host["host_name"]]['hostgroups'])) { + if (isset($hosts[$host["host_name"]]['hostgroups']) && !in_array(config('ngreborn.filter_hostgroup'), $hosts[$host["host_name"]]['hostgroups'])) { unset($hosts[$host["host_name"]]); } } From 3aecb765afaed783e66b66d0844af4c183821032 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Ribeiro?= Date: Sun, 30 Aug 2020 11:55:32 -0300 Subject: [PATCH 04/16] Typo changes --- index.php | 8 ++-- initializer.php | 36 ++++++++------- resources/js/app.js | 4 +- resources/js/classes/Host.js | 4 +- resources/js/classes/NagmapReborn.js | 67 ++++++++++++++-------------- resources/js/classes/Utils.js | 4 +- 6 files changed, 63 insertions(+), 60 deletions(-) diff --git a/index.php b/index.php index 4105cf1..fb70277 100644 --- a/index.php +++ b/index.php @@ -65,16 +65,16 @@ var config = {}, _paq = [], i18nConfig = {}, - generalStatus = 0, tp = null, tooLong = null, alertAudio = null, - waitConfigInterval, - _u, + realTime = true, firstRadial = 1, + generalStatus = 0, secondRadial = 44, direction = "up", - realTime = true, + waitConfigInterval, + _u, STATUS = { GENERAL: { accessDenied: -4, diff --git a/initializer.php b/initializer.php index aa95dc1..0b9fc66 100644 --- a/initializer.php +++ b/initializer.php @@ -18,7 +18,7 @@ if (isset($nagios_cfg_file)) return jsonResponse(['error' => ["It looks like you just updated Nagmap Reborn, see here the changes that are necessary for version migration."]], 400); else - return jsonResponse(['error' => [sprintf("%s.json does not exist in the languages folder! Please set the proper LANG option in Nagmap Reborn config file!", config('ngreborn.language'))]], 400); + return jsonResponse(['error' => [sprintf("%s.json does not exist in the languages folder! Please set the proper ngreborn.language option in Nagmap Reborn config file!", config('ngreborn.language'))]], 400); } // Load language @@ -144,16 +144,20 @@ requiredAuth(config('security.use_auth'), config('security.user'), config('security.user_pass'), L::class); return jsonResponse([ - "ngRebornVersion" => config('ngreborn.version'), + "ngr_version" => config('ngreborn.version'), "debug" => config('general.debug'), - "mapCenter" => [$centre[0], $centre[1]], - "mapDefaultZoom" => config('map.zoom'), - "mapTiles" => (config('map.style') == "" ? "//{s}.tile.osm.org/{z}/{x}/{y}.png" : config('map.style')), "locale" => config('ngreborn.language'), - "cbMode" => config('ngreborn.changes_bar.mode'), - "cbSize" => config('ngreborn.changes_bar.size'), - "cbFilter" => config('ngreborn.changes_bar.filter'), - "cbFontSize" => config('ngreborn.changes_bar.font_size'), + "map" => [ + "center" => [$centre[0], $centre[1]], + "default_zoom" => config('map.zoom'), + "tiles" => config('map.style') + ], + "changes_bar" => [ + "mode" => config('ngreborn.changes_bar.mode'), + "size" => config('ngreborn.changes_bar.size'), + "filter" => config('ngreborn.changes_bar.filter'), + "fonte_size" => config('ngreborn.changes_bar.font_size') + ], "priorities" => [ 'unknown' => config('ngreborn.priorities.unknown'), 'up' => config('ngreborn.priorities.up'), @@ -161,16 +165,16 @@ 'critical' => config('ngreborn.priorities.critical'), 'down' => config('ngreborn.priorities.down') ], - "soundAlert" => config('ngreborn.play_sound'), - "updateAnimation" => config('ngreborn.update_animation'), + "sound_alert" => config('ngreborn.play_sound'), + "update_animation" => config('ngreborn.update_animation'), "defaultIconStyle" => config('ngreborn.default_icon_style'), "icons" => json_decode(@file_get_contents(NGR_DOCUMENT_ROOT . "/resources/icons/icons.json")), - "showLines" => config('ngreborn.lines'), - "updateTime" => config('ngreborn.time_update'), - "secKey" => config('security.key'), - "defaultAuth" => checkDefaultAuth(config('security.use_auth'), config('security.user'), config('security.user_pass')), + "show_lines" => config('ngreborn.lines'), + "update_time" => config('ngreborn.time_update'), + "secret_key" => config('security.key'), + "default_auth" => checkDefaultAuth(config('security.use_auth'), config('security.user'), config('security.user_pass')), "reporting" => config('ngreborn.reporting'), "domain" => config('ngreborn.domain'), - "initialHosts" => (isset($final_hosts) ? $final_hosts : []), + "initial_hosts" => (isset($final_hosts) ? $final_hosts : []), "translation" => json_decode(file_get_contents(NGR_DOCUMENT_ROOT . "/resources/langs/" . config('ngreborn.language') . ".json")) ]); diff --git a/resources/js/app.js b/resources/js/app.js index 6feaa64..0ad5492 100644 --- a/resources/js/app.js +++ b/resources/js/app.js @@ -88,7 +88,7 @@ function coverHanlder() { Swal.fire({ heightAuto: false, icon: "warning", - title: 'Nagmap Reborn v' + config.ngRebornVersion, + title: 'Nagmap Reborn v' + config.ngr_version, html: i18next.t('not_released'), footer: `${i18next.t('last_stable')}`, confirmButtonText: 'OK' @@ -148,7 +148,7 @@ function coverHanlder() { Swal.fire({ heightAuto: false, icon: "warning", - title: 'Nagmap Reborn v' + config.ngRebornVersion || "2.0.1-alpha", + title: 'Nagmap Reborn v' + config.ngr_version || "2.0.1-alpha", html: i18next.t('not_released'), footer: `${i18next.t('last_stable') || 'Get the last stable version'}`, confirmButtonText: 'OK' diff --git a/resources/js/classes/Host.js b/resources/js/classes/Host.js index 2c6cece..f3de68b 100644 --- a/resources/js/classes/Host.js +++ b/resources/js/classes/Host.js @@ -62,7 +62,7 @@ class Host {
${data.nagios_host_name}
- + @@ -93,7 +93,7 @@ class Host { line.setStyle({ color: color }); }); - if (config.updateAnimation) { + if (config.update_animation) { if (this.marker.isBouncing()) this.marker.stopBouncing(); else diff --git a/resources/js/classes/NagmapReborn.js b/resources/js/classes/NagmapReborn.js index 9f99df9..6ef2b55 100644 --- a/resources/js/classes/NagmapReborn.js +++ b/resources/js/classes/NagmapReborn.js @@ -52,7 +52,7 @@ class NagmapReborn { nagmapReborn.search(); }); - if (config.soundAlert) + if (config.sound_alert) config.alertSound = new Audio('resources/alert.mp3'); window.generalStatus = STATUS.GENERAL.finished; @@ -61,7 +61,7 @@ class NagmapReborn { setInterval(() => { nagmapReborn.updateStatus(); - }, config.updateTime * 1000); + }, config.update_time * 1000); this._u('Nagmap Reborn was successfully initialized.'); @@ -76,26 +76,25 @@ class NagmapReborn { */ insertMap() { - if (config.cbMode) { - if (!config.cbSize || config.cbSize > 50 || config.cbSize < 25) { - config.cbSize = (config.cbSize > 50) ? 50 : 25; + if (config.changes_bar.mode) { + if (!config.changes_bar.size || config.changes_bar.size > 50 || config.changes_bar.size < 25) { + config.changes_bar.size = (config.changes_bar.size > 50) ? 50 : 25; } - if (config.cbMode !== 3) { - $("#map").css("height", `${100 - config.cbSize}%`, "important"); + if (config.changes_bar.mode !== 3) { + $("#map").css("height", `${100 - config.changes_bar.size}%`, "important"); } else { - $("#map").addClass("mapdb3").css("width", `${100 - config.cbSize}%`, "important").css("float", "left", "important"); + $("#map").addClass("mapdb3").css("width", `${100 - config.changes_bar.size}%`, "important").css("float", "left", "important"); } } window.map = L.map('map', { zoomControl: false - }).setView(config.mapCenter, config.mapDefaultZoom); + }).setView(config.map.center, config.map.default_zoom); + + L.tileLayer((config.map.tiles || "//{s}.tile.osm.org/{z}/{x}/{y}.png"), { + attribution: '© OpenStreetMap contributors.' + }).addTo(window.map); - if (config.mapTiles) { - L.tileLayer(config.mapTiles, { - attribution: '© OpenStreetMap contributors.' - }).addTo(window.map); - } } /** @@ -103,22 +102,22 @@ class NagmapReborn { * @return undefined */ createExtras() { - if (config.cbMode) { + if (config.changes_bar.mode) { this._u('Creating and loading ChangesBar.'); - $("#changesbar").css("font-size", `${config.cbFontSize}px`, "important"); + $("#changesbar").css("font-size", `${config.changes_bar.font_size}px`, "important"); - if (config.cbMode !== 3) { - $("#changesbar").css("height", `${config.cbSize}%`, "important").css("display", "block", "important"); + if (config.changes_bar.mode !== 3) { + $("#changesbar").css("height", `${config.changes_bar.size}%`, "important").css("display", "block", "important"); } else { $("#changesbar").addClass("db3").css("height", "100%", "important").css("display", "block", "important"); } - if (config.cbFilter) { + if (config.changes_bar.filter) { $("#filter").html(`
- +
@@ -212,8 +211,8 @@ class NagmapReborn { getHosts() { let tempHosts = []; - for (let h in config.initialHosts) - tempHosts[h] = new Host(h, config.initialHosts[h], this.icons, this.oms); + for (let h in config.initial_hosts) + tempHosts[h] = new Host(h, config.initial_hosts[h], this.icons, this.oms); return tempHosts; } @@ -223,7 +222,7 @@ class NagmapReborn { * @return undefined */ createLines() { - if (config.showLines) { + if (config.show_lines) { for (let h in this.hosts) { let lineColor = "#A9ABAE"; @@ -260,7 +259,7 @@ class NagmapReborn { * @return undefined */ initChangesBar() { - if (config.cbMode && config.cbMode != 1) { + if (config.changes_bar.mode && config.changes_bar.mode != 1) { for (let h in this.hosts) { let status; if (this.hosts[h].currentStatus == STATUS.HOSTS.warning) { @@ -306,7 +305,7 @@ class NagmapReborn { zIndex = config.priorities.down; time = 20; color = "#c92a2a"; - if (config.soundAlert) + if (config.sound_alert) config.alertSound.play(); } @@ -321,8 +320,8 @@ class NagmapReborn { * @return undefined */ updateChangesBar(host, hostName, newData) { - if (config.cbMode) { - if (config.cbMode == 1) { + if (config.changes_bar.mode) { + if (config.changes_bar.mode == 1) { if (newData.status != host.currentStatus) { let status = "unknown", @@ -354,7 +353,7 @@ class NagmapReborn { oldStatus = "down"; } - $((config.cbFilter ? '#filterPrepend' : '#changesbar')).prepend(`
${Utils.now()} - ${host.alias}: ${i18next.t(oldStatus)} → ${i18next.t(status)}
`); + $((config.changes_bar.filter ? '#filterPrepend' : '#changesbar')).prepend(`
${Utils.now()} - ${host.alias}: ${i18next.t(oldStatus)} → ${i18next.t(status)}
`); setTimeout((el) => { el.css('max-height', "100px"); @@ -412,9 +411,9 @@ class NagmapReborn { * @return undefined */ search() { - if (config.cbFilter) { + if (config.changes_bar.filter) { let query = $('#filter_str').val().toLowerCase(); - let selector = (config.cbMode == 1 ? '#filterPrepend .changesBarLine' : '#changesbar .changesBarLine'); + let selector = (config.changes_bar.mode == 1 ? '#filterPrepend .changesBarLine' : '#changesbar .changesBarLine'); $(selector).each((i, el) => { if ($(el).text().toLowerCase().indexOf(query) === -1) { $(el).closest(selector).hide(); @@ -437,7 +436,7 @@ class NagmapReborn { } let params = new URLSearchParams(); - params.append('key', config.secKey); + params.append('key', config.secret_key); params.append('hosts', JSON.stringify(hosts)); axios.post(`update.php?${Utils.getFullQueryString()}`, params) @@ -488,7 +487,7 @@ class NagmapReborn { this._u("Checking for updates."); axios.get("https://raw.githubusercontent.com/jocafamaka/nagmapReborn/developing/VERSION") .then(response => { - if (config.ngRebornVersion != null && (config.ngRebornVersion != response.data)) { + if (config.ngr_version != null && (config.ngr_version != response.data)) { Swal.fire({ heightAuto: false, icon: 'info', @@ -517,7 +516,7 @@ class NagmapReborn { * @return undefined */ checkDefaultAuth() { - if (config.defaultAuth) { + if (config.default_auth) { Swal.fire({ heightAuto: false, icon: 'warning', @@ -538,7 +537,7 @@ class NagmapReborn { // }).then(() => { var _paq = window._paq || []; - _paq.push(["setDocumentTitle", document.domain + "/" + document.title]); _paq.push(["setCustomVariable", 1, "versao", config.ngRebornVersion, "visit"]); _paq.push(["trackPageView"]); _paq.push(["enableLinkTracking"]); (function () { var u = `https://${config.domain}/analytics/`; _paq.push(["setTrackerUrl", u + "piwik.php"]); _paq.push(["setSiteId", "2"]); var d = document, g = d.createElement("script"), s = d.getElementsByTagName("script")[0]; g.type = "text/javascript"; g.async = true; g.defer = true; g.src = u + "piwik.js"; s.parentNode.insertBefore(g, s); })(); + _paq.push(["setDocumentTitle", document.domain + "/" + document.title]); _paq.push(["setCustomVariable", 1, "versao", config.ngr_version, "visit"]); _paq.push(["trackPageView"]); _paq.push(["enableLinkTracking"]); (function () { var u = `https://${config.domain}/analytics/`; _paq.push(["setTrackerUrl", u + "piwik.php"]); _paq.push(["setSiteId", "2"]); var d = document, g = d.createElement("script"), s = d.getElementsByTagName("script")[0]; g.type = "text/javascript"; g.async = true; g.defer = true; g.src = u + "piwik.js"; s.parentNode.insertBefore(g, s); })(); }); } } diff --git a/resources/js/classes/Utils.js b/resources/js/classes/Utils.js index 75e1740..a441963 100644 --- a/resources/js/classes/Utils.js +++ b/resources/js/classes/Utils.js @@ -75,9 +75,9 @@ class Utils { icon: type, title: msg, toast: true, - position: (config.cbMode == 3) ? 'top-start' : 'top-end', + position: (config.changes_bar.mode == 3) ? 'top-start' : 'top-end', showConfirmButton: false, - timer: (config.updateTime * 1000), + timer: (config.update_time * 1000), timerProgressBar: true, customClass: { popup: 'sw2Custom' From 588b79b31f74091375f0b980bd007c1457f50aff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Ribeiro?= Date: Sun, 30 Aug 2020 12:26:16 -0300 Subject: [PATCH 05/16] Events order change Load internationalization library before loading settings, allowing better translation of error messages. --- index.php | 17 +++- resources/js/app.js | 155 +++++++++++++++++-------------------- resources/langs/en-US.json | 1 + resources/langs/fr-FR.json | 1 + resources/langs/pt-BR.json | 1 + 5 files changed, 92 insertions(+), 83 deletions(-) diff --git a/index.php b/index.php index fb70277..4eecf06 100644 --- a/index.php +++ b/index.php @@ -64,7 +64,6 @@ // Setting initial parameters. var config = {}, _paq = [], - i18nConfig = {}, tp = null, tooLong = null, alertAudio = null, @@ -90,6 +89,22 @@ critical: 2, down: 3 } + }, + i18nConfig = { + lng: "", + fallbackLng: 'en-US', + debug: , + resources: { + "en-US": { + translation: + }, + "pt-BR": { + translation: + }, + "fr-FR": { + translation: + }, + } }; diff --git a/resources/js/app.js b/resources/js/app.js index 0ad5492..2437934 100644 --- a/resources/js/app.js +++ b/resources/js/app.js @@ -16,28 +16,58 @@ _u = function consoleDebug(msg, ok = true) { } } -axios.get(`initializer.php?${Utils.getFullQueryString()}`) - .then(function (response) { - window.config = response.data; - i18nConfig = { - lng: config.locale, - debug: config.debug, - resources: { - [`${config.locale}`]: { - translation: config.translation - } - } - }; - - init(); - }) - .catch(function (error) { - Utils.initErrorHandler(error.response.data.error || error); - if (error.response.status == 401) - window.generalStatus = STATUS.GENERAL.accessDenied; - coverHanlder(); +_u("Starting translation library."); + +i18next.init(i18nConfig).then(function (t) { + _u("Displaying loading message."); + + jqueryI18next.init(i18next, $, { + tName: 't', + i18nName: 'i18n', + handleName: 'localize', + selectorAttr: 'data-i18n', + targetAttr: 'i18n-target', + optionsAttr: 'i18n-options', + useOptionsAttr: false, + parseDefaultValueFromContent: true + }); + + $(document).localize(); + + tp = new Typed("#cover_msg", { + strings: [i18next.t('wait', { + t: `${i18next.t('load')}...` + }), i18next.t('wait', { + t: `${i18next.t('cr_map')}...` + }), i18next.t('wait', { + t: `${i18next.t('cr_hosts')}...` + }), i18next.t('wait', { + t: `${i18next.t('cr_markers')}...` + }), i18next.t('wait', { + t: `${i18next.t('cr_lines')}...` + })], + typeSpeed: 35, + startDelay: 1800, + backSpeed: 40, + backDelay: 2000, + loop: true, + showCursor: true, + cursorChar: " ", }); + axios.get(`initializer.php?${Utils.getFullQueryString()}`) + .then(function (response) { + window.config = response.data; + init(); + }) + .catch(function (error) { + Utils.initErrorHandler(error.response.data.error || error); + if (error.response.status == 401) + window.generalStatus = STATUS.GENERAL.accessDenied; + coverHanlder(); + }); +}); + // Check compatibility with ES6 try { (eval("let foo = () => {};")); @@ -85,13 +115,13 @@ function coverHanlder() { $("#cover").remove() }, 500); - Swal.fire({ - heightAuto: false, - icon: "warning", - title: 'Nagmap Reborn v' + config.ngr_version, - html: i18next.t('not_released'), - footer: `${i18next.t('last_stable')}`, - confirmButtonText: 'OK' + Swal.fire({ + heightAuto: false, + icon: "warning", + title: 'Nagmap Reborn v' + config.ngr_version, + html: i18next.t('not_released'), + footer: `${i18next.t('last_stable')}`, + confirmButtonText: 'OK' }); window.nagmapReborn.checkNgRebornUpdate(); @@ -128,7 +158,7 @@ function coverHanlder() { // coverMsgUp('cover_error', true); if (window.generalStatus === STATUS.GENERAL.accessDenied) - $("#cover_msg_error").html("Access denied!"); + $("#cover_msg_error").html(i18next.t('accessDeniedShort') || "Access denied!"); if (window.generalStatus === STATUS.GENERAL.generealError) $("#cover_msg_error").html(i18next.t('cover_error') || 'An error has occurred!'); @@ -145,13 +175,13 @@ function coverHanlder() { _u("Showing error cover"); - Swal.fire({ - heightAuto: false, - icon: "warning", - title: 'Nagmap Reborn v' + config.ngr_version || "2.0.1-alpha", - html: i18next.t('not_released'), - footer: `${i18next.t('last_stable') || 'Get the last stable version'}`, - confirmButtonText: 'OK' + Swal.fire({ + heightAuto: false, + icon: "warning", + title: 'Nagmap Reborn v' + config.ngr_version || "2.0.1-alpha", + html: i18next.t('not_released'), + footer: `${i18next.t('last_stable') || 'Get the last stable version'}`, + confirmButtonText: 'OK' }); } } @@ -179,55 +209,16 @@ function init() { marker.unbindPopup(); } - _u("Starting translation library."); - - i18next.init(i18nConfig).then(function (t) { - _u("Displaying loading message."); + setTimeout(function () { + coverHanlder(); + tooLong = setTimeout(function () { + window.generalStatus = STATUS.GENERAL.tooLong + }, 50000); + }, 1950); - jqueryI18next.init(i18next, $, { - tName: 't', - i18nName: 'i18n', - handleName: 'localize', - selectorAttr: 'data-i18n', - targetAttr: 'i18n-target', - optionsAttr: 'i18n-options', - useOptionsAttr: false, - parseDefaultValueFromContent: true - }); - - $(document).localize(); - - tp = new Typed("#cover_msg", { - strings: [i18next.t('wait', { - t: `${i18next.t('load')}...` - }), i18next.t('wait', { - t: `${i18next.t('cr_map')}...` - }), i18next.t('wait', { - t: `${i18next.t('cr_hosts')}...` - }), i18next.t('wait', { - t: `${i18next.t('cr_markers')}...` - }), i18next.t('wait', { - t: `${i18next.t('cr_lines')}...` - })], - typeSpeed: 35, - startDelay: 1800, - backSpeed: 40, - backDelay: 2000, - loop: true, - showCursor: true, - cursorChar: " ", - }); - setTimeout(function () { - coverHanlder(); - tooLong = setTimeout(function () { - window.generalStatus = STATUS.GENERAL.tooLong - }, 50000); - }, 1950); - - _u("Initializing Nagmap Reborn class."); + _u("Initializing Nagmap Reborn class."); - window.nagmapReborn = new NagmapReborn(); - }); + window.nagmapReborn = new NagmapReborn(); } catch (e) { Utils.initErrorHandler(e); diff --git a/resources/langs/en-US.json b/resources/langs/en-US.json index 21df5d1..3ec6274 100644 --- a/resources/langs/en-US.json +++ b/resources/langs/en-US.json @@ -12,6 +12,7 @@ "updateErrorChanges": "This type of error is usually related to the following problem: Host modifications, addition, removal or editing of names have occurred, in this case update the page.", "updateErrorSolved": "Issue solved, the statuses displayed are in real time.", "accessDenied": "Access denied, incorrect username and/or password! Reload the page and try again.", + "accessDeniedShort": "Access denied!", "alias": "Alias", "hostG": "Hostgroups", "newVersion": "Update available", diff --git a/resources/langs/fr-FR.json b/resources/langs/fr-FR.json index f85eab9..4bea945 100644 --- a/resources/langs/fr-FR.json +++ b/resources/langs/fr-FR.json @@ -12,6 +12,7 @@ "updateErrorChanges": "Ce type d'erreur est généralement lié au problème suivant: Des modifications de l'hôte, l'ajout, la suppression ou la modification de noms ont eu lieu. Dans ce cas, mettez à jour la page.", "updateErrorSolved": "Problème résolu, les statuts affichés le sont en temps réel.", "accessDenied": "Accès refusé, nom d'utilisateur et / ou mot de passe incorrect! Rechargez la page et réessayez.", + "accessDeniedShort": "Accès refusé!", "alias": "Alias", "hostG": "Groupes d'hôtes", "newVersion": "Mise à jour disponible", diff --git a/resources/langs/pt-BR.json b/resources/langs/pt-BR.json index 20e0a78..edc6dda 100644 --- a/resources/langs/pt-BR.json +++ b/resources/langs/pt-BR.json @@ -12,6 +12,7 @@ "updateErrorChanges": "Esse tipo de erro está normalmente relacionado ao seguinte problema: Aconteceu modificações nos hosts, adição, remoção ou edição de nomes, nesses caso atualize a página.", "updateErrorSolved": "Problema resolvido, os status exibidos estão em tempo real.", "accessDenied": "Acesso negado, usuário e/ou senha incorretos! Recarregue a página e tente novamente.", + "accessDeniedShort": "Acesso negado!", "alias": "Aliás", "hostG": "Grupo de hosts", "newVersion": "Atualização disponível", From 72d662690616ecf94e404b9a61f07525b01b8831 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Ribeiro?= <36747646+jocafamaka@users.noreply.github.com> Date: Fri, 2 Oct 2020 08:42:13 -0300 Subject: [PATCH 06/16] Update DOMAIN --- resources/reporter/DOMAIN | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/reporter/DOMAIN b/resources/reporter/DOMAIN index da36856..fc662cb 100644 --- a/resources/reporter/DOMAIN +++ b/resources/reporter/DOMAIN @@ -1 +1 @@ -nagmapreborn.online \ No newline at end of file +ngreborn.online From e29c5dc86bc511e7cf5f536a9330b2e7e4dd1beb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Ribeiro?= Date: Fri, 2 Oct 2020 08:52:32 -0300 Subject: [PATCH 07/16] Update DOMAIN --- resources/reporter/DOMAIN | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/reporter/DOMAIN b/resources/reporter/DOMAIN index fc662cb..6b44050 100644 --- a/resources/reporter/DOMAIN +++ b/resources/reporter/DOMAIN @@ -1 +1 @@ -ngreborn.online +ngreborn.online \ No newline at end of file From 859ddf722031ad5c67e24751e305bdf04bc3469d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Ribeiro?= Date: Sun, 13 Jun 2021 16:24:06 -0300 Subject: [PATCH 08/16] Dynamic Styles | Overwrite panel | Better granularity - Implemented icon filters to use multiple styles at the same time; - Separation of icon customization in another file, preventing overwriting during update; - Initial implementation of the supercrite panel, which facilitated the generation of custom URLs; - Improved granularity of JS classes; - Jump to version 2.1.0 due to new features --- .gitignore | 4 +- config.php.example | 4 +- index.php | 11 ++ initializer.php | 6 + resources/css/style.css | 21 ++- resources/icons/example_custom_icons.json | 37 +++++ resources/icons/icons.json | 8 +- resources/js/app.js | 3 +- resources/js/classes/Host.js | 133 ++++++++++++----- resources/js/classes/NagmapReborn.js | 170 +++++++++------------- resources/langs/en-US.json | 6 +- resources/langs/fr-FR.json | 6 +- resources/langs/pt-BR.json | 6 +- src/NagmapReborn/marker.php | 7 + 14 files changed, 273 insertions(+), 149 deletions(-) create mode 100644 resources/icons/example_custom_icons.json diff --git a/.gitignore b/.gitignore index 3e78a38..fd3895f 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,6 @@ tests/ features/ storage/ *.old -cache/*.php \ No newline at end of file +cache/*.php +.vs/ +custom_icons.json \ No newline at end of file diff --git a/config.php.example b/config.php.example index aa478c2..feba7e1 100644 --- a/config.php.example +++ b/config.php.example @@ -111,13 +111,15 @@ return [ 'play_sound' => 1, // Defines if icons will be animated when the host status is updated. + // Disable for best performance when there are many hosts (500+) // 0 = NO. // 1 = YES. 'update_animation' => 1, // The default icon style to be used when there is no specific definition; // Pre-existing options: marker_retro, marker_shadow, marker_border, wifi_border_dark, wifi_border_light, router_border_dark, router_border_light - // This option can be overridden by the definitions contained in resources/icons/icons.json + // This option can be overridden by the definitions contained in resources/icons/custom_icons.json + // Read more: https://github.com/jocafamaka/nagmapReborn/wiki/About-icons-styles 'default_icon_style' => "marker_shadow", // Show lines between hosts and their parents. diff --git a/index.php b/index.php index 4eecf06..a9573c6 100644 --- a/index.php +++ b/index.php @@ -31,6 +31,10 @@ + +
@@ -88,6 +92,13 @@ warning: 1, critical: 2, down: 3 + }, + COLORS: { + up: "#007F00", + warning: "#FFFF00", + critical: "#D25700", + down: "#C92A2A", + unknown: "#A9ABAE" } }, i18nConfig = { diff --git a/initializer.php b/initializer.php index 0b9fc66..a976ac9 100644 --- a/initializer.php +++ b/initializer.php @@ -111,6 +111,9 @@ // SECURITY +if (!is_int(config('security.allow_overwrite')) || (config('security.allow_overwrite') < 0) || (config('security.allow_overwrite') > 1)) + $fails[] = L::config_error("security.allow_overwrite", config('security.allow_overwrite')); + if (!is_string(config('security.key'))) $fails[] = L::config_error("security.key", config('security.key')); @@ -169,12 +172,15 @@ "update_animation" => config('ngreborn.update_animation'), "defaultIconStyle" => config('ngreborn.default_icon_style'), "icons" => json_decode(@file_get_contents(NGR_DOCUMENT_ROOT . "/resources/icons/icons.json")), + "custom_icons" => json_decode(@file_get_contents(NGR_DOCUMENT_ROOT . "/resources/icons/custom_icons.json")), "show_lines" => config('ngreborn.lines'), "update_time" => config('ngreborn.time_update'), "secret_key" => config('security.key'), + "allow_overwrite" => config('security.allow_overwrite'), "default_auth" => checkDefaultAuth(config('security.use_auth'), config('security.user'), config('security.user_pass')), "reporting" => config('ngreborn.reporting'), "domain" => config('ngreborn.domain'), "initial_hosts" => (isset($final_hosts) ? $final_hosts : []), + "hostgroups" => (isset($hostgroups_list) ? $hostgroups_list : []), "translation" => json_decode(file_get_contents(NGR_DOCUMENT_ROOT . "/resources/langs/" . config('ngreborn.language') . ".json")) ]); diff --git a/resources/css/style.css b/resources/css/style.css index d2215b3..331fb6a 100644 --- a/resources/css/style.css +++ b/resources/css/style.css @@ -229,7 +229,7 @@ hr { top: 15px; } -.modal { +#modal_error.modal { z-index: 3002 !important; border-radius: 10px !important; /* opacity: 0.5 !important; */ @@ -238,11 +238,26 @@ hr { text-shadow: 2px 2px 4px #000 !important; } -.modal-footer { +#modal_error .modal-footer { background-color: #00000021 !important; } -.modal-close { +#modal_error .modal-close { + color: #fff !important; +} + +#modal_overwrite.modal { + z-index: 3002 !important; + border-radius: 10px !important; + background: #ffffffd4 !important; + color: #000 !important; +} + +#modal_overwrite .modal-footer { + background-color: #00000021 !important; +} + +#modal_overwrite .modal-close { color: #fff !important; } diff --git a/resources/icons/example_custom_icons.json b/resources/icons/example_custom_icons.json new file mode 100644 index 0000000..71fb231 --- /dev/null +++ b/resources/icons/example_custom_icons.json @@ -0,0 +1,37 @@ +{ + "// READ": "For this to work make the necessary changes, rename this file to custom_icons.json and then you can delete this lines", + "// DOCS": "https://github.com/jocafamaka/nagmapReborn/wiki/About-icons-styles", + + "names": { + "THE EXACT NAME OF A HOST": "Name of a style where. You can use one of the pre-existing styles too, see in icons.json" + }, + + "hostgroups": { + "THE EXACT NAME OF A HOSTGROUP": "Name of a other style where" + }, + + "styles": { + "some_custom_style": { + "grey": { + "iconUrl": "some_custom_style/Grey.png", + "iconSize": [29, 43] + }, + "green": { + "iconUrl": "some_custom_style/Green.png", + "iconSize": [29, 43] + }, + "yellow": { + "iconUrl": "some_custom_style/Yellow.png", + "iconSize": [29, 43] + }, + "orange": { + "iconUrl": "some_custom_style/Orange.png", + "iconSize": [29, 43] + }, + "red": { + "iconUrl": "some_custom_style/Red.png", + "iconSize": [29, 43] + } + } + } +} \ No newline at end of file diff --git a/resources/icons/icons.json b/resources/icons/icons.json index c76d912..2a3c432 100644 --- a/resources/icons/icons.json +++ b/resources/icons/icons.json @@ -1,6 +1,6 @@ { - "names": {}, - "hostgroups": {}, + "// WARNING !" : "Do not set customization on this file as it is overwritten with every update!", + "// WARNING !!" : "Define the customizations in the custom_icons.json file", "styles": { "marker_retro": { @@ -164,5 +164,7 @@ } } - } + }, + "names": {}, + "hostgroups": {} } \ No newline at end of file diff --git a/resources/js/app.js b/resources/js/app.js index 2437934..c623821 100644 --- a/resources/js/app.js +++ b/resources/js/app.js @@ -138,8 +138,7 @@ function coverHanlder() { // In case of error it displays the error page else { // Stop the typed - if (tp) - tp.stop(); + if (tp) tp.stop(); // Stop the marker animation $("#marker_circle").css("animation-iteration-count", 0).css("fill", "#663333"); diff --git a/resources/js/classes/Host.js b/resources/js/classes/Host.js index f3de68b..7f2c51f 100644 --- a/resources/js/classes/Host.js +++ b/resources/js/classes/Host.js @@ -5,37 +5,39 @@ ******************************************************************************************/ class Host { - constructor(h, data, icons, oms) { + constructor(h, data, oms) { this._u(`Creating host {${h}} at {${data.latlng}}.`); this.alias = data.alias; + this.hostName = data.host_name; this.latlng = new L.latLng((data.latlng).split(",")); this.currentStatus = data.status; - this.marker = this.createMarker(data, icons, oms); this.parents = data.parents; + this.hostgroups = data.hostgroups; + this.iconStyle = this.getIconStyle(); + this.marker = this.createMarker(data, oms); this.lines = []; } /** * Responsible for creating the host marker and infoWindow. - * @return Marker mark - */ - createMarker(data, icons, oms) { - - let icon = icons.grey; + * @return Marker mark + */ + createMarker(data, oms) { + let icon = config.icons.styles[this.iconStyle].grey; let zIndex = (config.priorities.unknown * 1000); if (this.currentStatus === STATUS.HOSTS.up) { - icon = icons.green; + icon = config.icons.styles[this.iconStyle].green; zIndex = (config.priorities.up * 1000); } else if (this.currentStatus === STATUS.HOSTS.warning) { - icon = icons.yellow; + icon = config.icons.styles[this.iconStyle].yellow; zIndex = (config.priorities.warning * 1000); } else if (this.currentStatus === STATUS.HOSTS.critical) { - icon = icons.orange; + icon = config.icons.styles[this.iconStyle].orange; zIndex = (config.priorities.critical * 1000); } else if (this.currentStatus === STATUS.HOSTS.down) { - icon = icons.red; + icon = config.icons.styles[this.iconStyle].red; zIndex = (config.priorities.down * 1000); } @@ -78,33 +80,96 @@ class Host { } /** - * Responsible for update a host icon and lines. - * @return undefined - */ - updateStatus(icon, time, zIndex, color) { - - this.marker.setIcon(icon); - this.marker.setZIndexOffset(zIndex * 1000); - - if (typeof this.marker._omsData != 'undefined') - this.marker._omsData.usualZindex = zIndex * 1000; - - this.lines.forEach(line => { - line.setStyle({ color: color }); - }); - - if (config.update_animation) { - if (this.marker.isBouncing()) - this.marker.stopBouncing(); - else - this.marker.bounce(time); + * Responsible for update a host icon and lines. + * @return undefined + */ + updateStatus(newStatus) { + if (this.currentStatus != newStatus) { + _u(`Update {${this.alias}} to status {${newStatus}}`); + + let time = 1; + let color = STATUS.COLORS.unknown; + let zIndex = config.priorities.unknown; + let icon = config.icons.styles[this.iconStyle].grey; + + if (newStatus === STATUS.HOSTS.up) { + icon = config.icons.styles[this.iconStyle].green; + zIndex = config.priorities.up; + color = STATUS.COLORS.up; + } else if (newStatus === STATUS.HOSTS.warning) { + icon = config.icons.styles[this.iconStyle].yellow; + zIndex = config.priorities.warning; + color = STATUS.COLORS.warning; + } else if (newStatus === STATUS.HOSTS.critical) { + icon = config.icons.styles[this.iconStyle].orange; + zIndex = config.priorities.critical; + color = STATUS.COLORS.critical; + } else if (newStatus === STATUS.HOSTS.down) { + icon = config.icons.styles[this.iconStyle].red; + zIndex = config.priorities.down; + color = STATUS.COLORS.down; + time = 20; + if (config.sound_alert) + config.alertSound.play(); + } + + this.currentStatus = newStatus; + this.marker.setIcon(icon); + this.marker.setZIndexOffset(zIndex * 1000); + + if (typeof this.marker._omsData != 'undefined') + this.marker._omsData.usualZindex = zIndex * 1000; + + this.lines.forEach(line => { + line.setStyle({ color: color }); + }); + + if (config.update_animation) { + if (this.marker.isBouncing()) + this.marker.stopBouncing(); + else + this.marker.bounce(time); + } + } + } + + /** + * Define the host icon style + * @returns string + */ + getIconStyle() { + let iconStyle = config.defaultIconStyle; + + if (this.hostgroups) { + for (let i = 0; i < this.hostgroups.length; ++i) { + if (this.hostgroups[i] in config.icons.hostgroups) { + iconStyle = config.icons.hostgroups[this.hostgroups[i]]; + break; + } + } } + + if (this.hostName in config.icons.names) { + iconStyle = config.icons.names[this.hostName]; + } + + if (!(iconStyle in config.icons.styles)) { + _u(i18next.t("load_icon_style_error", { t: iconStyle }), false); + + if (!config.icons.styles.hasOwnProperty(config.defaultIconStyle)) { + _u(i18next.t("load_icon_style_error", { t: config.defaultIconStyle }), false); + config.defaultIconStyle = "marker_shadow"; + } else + iconStyle = config.defaultIconStyle; + } + + return iconStyle; } /** - * Decorator to debug console. - * @return undefined - */ + * Decorator to debug console. + * @return undefined + */ _u(msg) { _u(`(${this.constructor.name}): ${msg}`); } diff --git a/resources/js/classes/NagmapReborn.js b/resources/js/classes/NagmapReborn.js index 6ef2b55..f5c4372 100644 --- a/resources/js/classes/NagmapReborn.js +++ b/resources/js/classes/NagmapReborn.js @@ -17,8 +17,8 @@ class NagmapReborn { this.createExtras(); this._u('Extras finished.'); - this._u('Creating and loading all icons'); - this.icons = this.getIcons(); + this._u('Creating and loading all icons styles'); + this.loadIcons(); this._u('Icons finished.'); this._u('Creating and loading OMS instance'); @@ -44,12 +44,12 @@ class NagmapReborn { this._u("Final touches."); this.initChangesBar(); let cred = $("div.leaflet-control-attribution.leaflet-control").first(); - cred.html("Nagmap Reborn Server monitoring | " + cred.html()); + cred.html("Nagmap Reborn - Server monitoring | " + cred.html()); this.initReporting(); $('#filter_str').keyup(() => { - nagmapReborn.search(); + this.search(); }); if (config.sound_alert) @@ -60,7 +60,7 @@ class NagmapReborn { // justAnErro(); setInterval(() => { - nagmapReborn.updateStatus(); + this.updateStatus(); }, config.update_time * 1000); this._u('Nagmap Reborn was successfully initialized.'); @@ -121,7 +121,7 @@ class NagmapReborn {
- +
@@ -146,62 +146,75 @@ class NagmapReborn { cursorborder: "0px", }); } + + if (config.allow_overwrite) { + this._u('Creating and loading overwrite panel.'); + $("#debug").append(` + subtitles${i18next.t('overwrite_pnl')} + `); + } } /** * Responsible for load all defined icons. * @return Object icons */ - getIcons() { + loadIcons() { if (config.icons == null) { // this._u("Unable to load icon styles, please make sure that resources/icons/icons.json exists and is a valid json.", false); throw i18next.t("load_icons_error") || "Unable to load icon styles, please make sure that resources/icons/icons.json exists and is a valid json."; } - if (!config.icons.styles.hasOwnProperty(config.defaultIconStyle)) { - this._u(i18next.t("load_icon_style_error", { t: config.defaultIconStyle }), false); - config.defaultIconStyle = "marker_shadow"; + if (config.custom_icons != null) { + this._u(i18next.t("load_custom_icons") || "Loading custom icon definitions from custom_icons.json file.Unable to load icon styles, please make sure that resources/icons/icons.json exists and is a valid json."); + Object.assign(config.icons, config.custom_icons); } let icons = {}; - icons.red = L.icon({ - iconUrl: "resources/icons/styles/" + config.icons.styles[config.defaultIconStyle].red.iconUrl, - iconSize: config.icons.styles[config.defaultIconStyle].red.iconSize, - iconAnchor: (config.icons.styles[config.defaultIconStyle].red.iconAnchor || [Math.floor((parseInt(config.icons.styles[config.defaultIconStyle].red.iconSize[0]) / 2)), parseInt(config.icons.styles[config.defaultIconStyle].red.iconSize[1]) - 1]), - popupAnchor: (config.icons.styles[config.defaultIconStyle].red.popupAnchor || [0, -(parseInt(config.icons.styles[config.defaultIconStyle].red.iconSize[1]) - 1)]) - }); - - icons.green = L.icon({ - iconUrl: "resources/icons/styles/" + config.icons.styles[config.defaultIconStyle].green.iconUrl, - iconSize: config.icons.styles[config.defaultIconStyle].green.iconSize, - iconAnchor: (config.icons.styles[config.defaultIconStyle].green.iconAnchor || [Math.floor((parseInt(config.icons.styles[config.defaultIconStyle].green.iconSize[0]) / 2)), parseInt(config.icons.styles[config.defaultIconStyle].green.iconSize[1]) - 1]), - popupAnchor: (config.icons.styles[config.defaultIconStyle].green.popupAnchor || [0, -(parseInt(config.icons.styles[config.defaultIconStyle].green.iconSize[1]) - 1)]) - }); - - icons.orange = L.icon({ - iconUrl: "resources/icons/styles/" + config.icons.styles[config.defaultIconStyle].orange.iconUrl, - iconSize: config.icons.styles[config.defaultIconStyle].orange.iconSize, - iconAnchor: (config.icons.styles[config.defaultIconStyle].orange.iconAnchor || [Math.floor((parseInt(config.icons.styles[config.defaultIconStyle].orange.iconSize[0]) / 2)), parseInt(config.icons.styles[config.defaultIconStyle].orange.iconSize[1]) - 1]), - popupAnchor: (config.icons.styles[config.defaultIconStyle].orange.popupAnchor || [0, -(parseInt(config.icons.styles[config.defaultIconStyle].orange.iconSize[1]) - 1)]) - }); - - icons.yellow = L.icon({ - iconUrl: "resources/icons/styles/" + config.icons.styles[config.defaultIconStyle].yellow.iconUrl, - iconSize: config.icons.styles[config.defaultIconStyle].yellow.iconSize, - iconAnchor: (config.icons.styles[config.defaultIconStyle].yellow.iconAnchor || [Math.floor((parseInt(config.icons.styles[config.defaultIconStyle].yellow.iconSize[0]) / 2)), parseInt(config.icons.styles[config.defaultIconStyle].yellow.iconSize[1]) - 1]), - popupAnchor: (config.icons.styles[config.defaultIconStyle].yellow.popupAnchor || [0, -(parseInt(config.icons.styles[config.defaultIconStyle].yellow.iconSize[1]) - 1)]) - }); - - icons.grey = L.icon({ - iconUrl: "resources/icons/styles/" + config.icons.styles[config.defaultIconStyle].grey.iconUrl, - iconSize: config.icons.styles[config.defaultIconStyle].grey.iconSize, - iconAnchor: (config.icons.styles[config.defaultIconStyle].grey.iconAnchor || [Math.floor((parseInt(config.icons.styles[config.defaultIconStyle].grey.iconSize[0]) / 2)), parseInt(config.icons.styles[config.defaultIconStyle].grey.iconSize[1]) - 1]), - popupAnchor: (config.icons.styles[config.defaultIconStyle].grey.popupAnchor || [0, -(parseInt(config.icons.styles[config.defaultIconStyle].grey.iconSize[1]) - 1)]) - }); - - return icons; + for (let style_name in config.icons.styles) { + this._u("Style: " + style_name); + + icons[style_name] = { + "red": L.icon({ + iconUrl: "resources/icons/styles/" + config.icons.styles[style_name].red.iconUrl, + iconSize: config.icons.styles[style_name].red.iconSize, + iconAnchor: (config.icons.styles[style_name].red.iconAnchor || [Math.floor((parseInt(config.icons.styles[style_name].red.iconSize[0]) / 2)), parseInt(config.icons.styles[style_name].red.iconSize[1]) - 1]), + popupAnchor: (config.icons.styles[style_name].red.popupAnchor || [0, -(parseInt(config.icons.styles[style_name].red.iconSize[1]) - 1)]) + }), + + "green": L.icon({ + iconUrl: "resources/icons/styles/" + config.icons.styles[style_name].green.iconUrl, + iconSize: config.icons.styles[style_name].green.iconSize, + iconAnchor: (config.icons.styles[style_name].green.iconAnchor || [Math.floor((parseInt(config.icons.styles[style_name].green.iconSize[0]) / 2)), parseInt(config.icons.styles[style_name].green.iconSize[1]) - 1]), + popupAnchor: (config.icons.styles[style_name].green.popupAnchor || [0, -(parseInt(config.icons.styles[style_name].green.iconSize[1]) - 1)]) + }), + + "orange": L.icon({ + iconUrl: "resources/icons/styles/" + config.icons.styles[style_name].orange.iconUrl, + iconSize: config.icons.styles[style_name].orange.iconSize, + iconAnchor: (config.icons.styles[style_name].orange.iconAnchor || [Math.floor((parseInt(config.icons.styles[style_name].orange.iconSize[0]) / 2)), parseInt(config.icons.styles[style_name].orange.iconSize[1]) - 1]), + popupAnchor: (config.icons.styles[style_name].orange.popupAnchor || [0, -(parseInt(config.icons.styles[style_name].orange.iconSize[1]) - 1)]) + }), + + "yellow": L.icon({ + iconUrl: "resources/icons/styles/" + config.icons.styles[style_name].yellow.iconUrl, + iconSize: config.icons.styles[style_name].yellow.iconSize, + iconAnchor: (config.icons.styles[style_name].yellow.iconAnchor || [Math.floor((parseInt(config.icons.styles[style_name].yellow.iconSize[0]) / 2)), parseInt(config.icons.styles[style_name].yellow.iconSize[1]) - 1]), + popupAnchor: (config.icons.styles[style_name].yellow.popupAnchor || [0, -(parseInt(config.icons.styles[style_name].yellow.iconSize[1]) - 1)]) + }), + + "grey": L.icon({ + iconUrl: "resources/icons/styles/" + config.icons.styles[style_name].grey.iconUrl, + iconSize: config.icons.styles[style_name].grey.iconSize, + iconAnchor: (config.icons.styles[style_name].grey.iconAnchor || [Math.floor((parseInt(config.icons.styles[style_name].grey.iconSize[0]) / 2)), parseInt(config.icons.styles[style_name].grey.iconSize[1]) - 1]), + popupAnchor: (config.icons.styles[style_name].grey.popupAnchor || [0, -(parseInt(config.icons.styles[style_name].grey.iconSize[1]) - 1)]) + }) + } + } + + config.icons.styles = icons; } /** @@ -212,7 +225,7 @@ class NagmapReborn { let tempHosts = []; for (let h in config.initial_hosts) - tempHosts[h] = new Host(h, config.initial_hosts[h], this.icons, this.oms); + tempHosts[h] = new Host(h, config.initial_hosts[h], this.oms); return tempHosts; } @@ -225,16 +238,16 @@ class NagmapReborn { if (config.show_lines) { for (let h in this.hosts) { - let lineColor = "#A9ABAE"; + let lineColor = STATUS.COLORS.unknown; if (this.hosts[h].currentStatus === STATUS.HOSTS.up) { - lineColor = "#007f00"; + lineColor = STATUS.COLORS.up; } else if (this.hosts[h].currentStatus === STATUS.HOSTS.warning) { - lineColor = "#ffff00"; + lineColor = STATUS.COLORS.warning; } else if (this.hosts[h].currentStatus === STATUS.HOSTS.critical) { - lineColor = "#d25700"; + lineColor = STATUS.COLORS.critical; } else if (this.hosts[h].currentStatus === STATUS.HOSTS.down) { - lineColor = "#c92a2a"; + lineColor = STATUS.COLORS.down; } if (this.hosts[h].parents) { @@ -277,44 +290,6 @@ class NagmapReborn { } } - /** - * Responsible for update a host status, icon and lines. - * @return undefined - */ - updateHost(host, newStatus) { - _u(`(Host): Update {${host}} to status {${newStatus}}`); - let icon = this.icons.grey; - let time = 1; - let color = "#A9ABAE"; - let zIndex = config.priorities.unknown; - - if (newStatus === STATUS.HOSTS.up) { - icon = this.icons.green; - zIndex = config.priorities.up; - color = "#007f00"; - } else if (newStatus === STATUS.HOSTS.warning) { - icon = this.icons.yellow; - zIndex = config.priorities.warning; - color = "#ffff00"; - } else if (newStatus === STATUS.HOSTS.critical) { - icon = this.icons.orange; - zIndex = config.priorities.critical; - color = "#d25700"; - } else if (newStatus === STATUS.HOSTS.down) { - icon = this.icons.red; - zIndex = config.priorities.down; - time = 20; - color = "#c92a2a"; - if (config.sound_alert) - config.alertSound.play(); - } - - if (host in nagmapReborn.hosts) { - nagmapReborn.hosts[host].updateStatus(icon, time, zIndex, color); - nagmapReborn.hosts[host].currentStatus = newStatus; - } - } - /** * Responsible for update a host info on changesBar. * @return undefined @@ -402,7 +377,7 @@ class NagmapReborn { $(`#${hostName}-${status}`).html(`${host.alias} - ${i18next.t('timePrefix')} ${newData.time} ${i18next.t('timeSuffix')}`); } } - nagmapReborn.search(); + this.search(); } } @@ -431,8 +406,8 @@ class NagmapReborn { updateStatus() { this._u("Update status called."); let hosts = []; - for (let h in nagmapReborn.hosts) { - hosts.push([h, nagmapReborn.hosts[h].currentStatus]) + for (let h in this.hosts) { + hosts.push([h, this.hosts[h].currentStatus]) } let params = new URLSearchParams(); @@ -454,12 +429,9 @@ class NagmapReborn { } let hosts = response.data.hosts; for (let [hostName, data] of Object.entries(hosts)) { - if (hostName in nagmapReborn.hosts) { - nagmapReborn.updateChangesBar(nagmapReborn.hosts[hostName], hostName, data); - - if (nagmapReborn.hosts[hostName].currentStatus != data.status) { - nagmapReborn.updateHost(hostName, data.status); - } + if (hostName in this.hosts) { + this.updateChangesBar(this.hosts[hostName], hostName, data); + this.hosts[hostName].updateStatus(data.status); } } }) diff --git a/resources/langs/en-US.json b/resources/langs/en-US.json index 3ec6274..39ebd07 100644 --- a/resources/langs/en-US.json +++ b/resources/langs/en-US.json @@ -103,11 +103,13 @@ "too_long": "This is taking too long, please refresh the page!", "too_long_details": "This error occurs when the initialization takes more than 50 seconds to complete, in this situation it is recommended to enable the debug to obtain the complete step-by-step report of the startup.", "as_filter": "Use as filter", - "not_released": "This is a rc (release candidate) version, it already has all the functionality of the final version, but it may contain minor bugs.

Its use is recommended only for testing and early users.

For use in production the stable version should be adopted.", + "not_released": "This is an alpha version, ie a version with features at an early stage of development and may contain serious runtime errors!

Its use is recommended for testing only.

For production use adopt the stable version.", "last_stable": "Get the latest stable version.", "details": "Details", "unsupported_browser": "warning this browser is not compatible with NagmapReborn, please upgrade your browser or use a more modern one!", "ngr_init_error": "Failed to initialize class!", "load_icons_error": "Unable to load icon styles, please make sure that resources/icons/icons.json exists and is a valid json.", - "load_icon_style_error": "Could not find the ({{t}}) style, a fallback will be used." + "load_icon_style_error": "Could not find the ({{t}}) style, a fallback will be used.", + "load_custom_icons": "Loading custom icon definitions from custom_icons.json file.", + "overwrite_pnl": "Overwrite" } \ No newline at end of file diff --git a/resources/langs/fr-FR.json b/resources/langs/fr-FR.json index 4bea945..183c39d 100644 --- a/resources/langs/fr-FR.json +++ b/resources/langs/fr-FR.json @@ -103,11 +103,13 @@ "too_long": "Cela prend trop de temps, veuillez rafraîchir la page!", "too_long_details": "Cette erreur se produit lorsque l'initialisation prend plus de 50 secondes pour se terminer, dans cette situation, il est recommandé d'activer le débogage pour obtenir le rapport étape par étape complet du démarrage.", "as_filter": "Utiliser comme filtre", - "not_released": "Il s'agit d'une version rc (release candidate), elle possède déjà toutes les fonctionnalités de la version finale, mais elle peut contenir des bugs mineurs.

Son utilisation est recommandée uniquement pour les tests et les premiers utilisateurs.

Pour une utilisation en production, la version stable doit être adoptée.", + "not_released": "Il s'agit d'une version alpha, c'est-à-dire une version avec des fonctionnalités à un stade précoce de développement et pouvant contenir de graves erreurs d'exécution !

Son utilisation est recommandée uniquement pour les tests.

Pour une utilisation en production, adoptez la version stable version.", "last_stable": "Obtenez la dernière version stable.", "details": "Détails", "unsupported_browser": "warning ce navigateur n'est pas compatible avec NagmapReborn, veuillez mettre à jour votre navigateur ou utiliser un plus moderne!", "ngr_init_error": "Impossible d'initialiser la classe!", "load_icons_error": "Impossible de charger les styles d'icônes, veuillez vous assurer que resources/icons/icons.json existe et est un json valide.", - "load_icon_style_error": "Impossible de trouver le style ({{t}}), une solution de repli sera utilisée." + "load_icon_style_error": "Impossible de trouver le style ({{t}}), une solution de repli sera utilisée.", + "load_custom_icons": "Chargement des définitions d'icônes personnalisées à partir du fichier custom_icons.json", + "overwrite_pnl": "Écraser" } \ No newline at end of file diff --git a/resources/langs/pt-BR.json b/resources/langs/pt-BR.json index edc6dda..9e5e5f2 100644 --- a/resources/langs/pt-BR.json +++ b/resources/langs/pt-BR.json @@ -103,11 +103,13 @@ "too_long": "Isto está demorando demais, por favor recarregue a página!", "too_long_details": "Este erro ocorre quando a inicialização demora de mais de 50 segundos para ser concluída, nessa situação é recomendável habilitar o debug para obter o relatório completo passo-a-passo da inicialização.", "as_filter": "Usar como filtro", - "not_released": "Essa é uma versão rc (release candidate), ela já possiu todas fucionalidades da versão final, porém pode conter bugs leves.

Seu uso é recomendado somente para teste.

Para uso em produção deve ser adotada a versão estável.", + "not_released": "Essa é uma versão alpha, ou seja uma versão com funcionalidades em um estágio inicial de desenvolvimento, podendo conter erros graves de execução!

Seu uso é recomendado somente para teste.

Para uso em produção deve ser adotada a versão estável.", "last_stable": "Obtenha a última versão estável.", "details": "Detalhes", "unsupported_browser": "warning Esse navegador não é compátivel com Nagmap Reborn, por favor atualize seu navegador ou utilize um mais moderno!", "ngr_init_error": "Falha ao inicializar a classe!", "load_icons_error": "Não foi possível carregar os estilos dos ícones, verifique se o resources/icons/icons.json existe e é um json válido.", - "load_icon_style_error": "Não foi possível encontrar o estilo ({{t}}), um fallback será usado." + "load_icon_style_error": "Não foi possível encontrar o estilo ({{t}}), um fallback será usado.", + "load_custom_icons": "Carregando definições personalizadas de icones do arquivo custom_icons.json", + "overwrite_pnl": "Sobrescrever" } \ No newline at end of file diff --git a/src/NagmapReborn/marker.php b/src/NagmapReborn/marker.php index afab962..9450207 100644 --- a/src/NagmapReborn/marker.php +++ b/src/NagmapReborn/marker.php @@ -4,6 +4,9 @@ // Get list of all Nagios configuration files into an array $files = getConfigFiles(); +// List of hostgroups +$hostgroups_list = []; + // Read content of all Nagios configuration files into one huge array foreach ($files as $file) { if (file_exists($file)) @@ -55,6 +58,10 @@ $hostgroups = explode(',', $value); foreach ($hostgroups as $hostgroup) { $hosts[$hostname]['hostgroups'][] = $hostgroup; + + if (!in_array($hostgroup, $hostgroups_list)) { + $hostgroups_list[] = $hostgroup; + } } }; // another few information we are interested in - this is a user-defined nagios variable From 15e4c105f834584b9cee003436834a2db018346c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Ribeiro?= Date: Sun, 13 Jun 2021 16:26:25 -0300 Subject: [PATCH 09/16] Bump version --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 020df05..2702b2a 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.0.1-alpha \ No newline at end of file +2.1.0-alpha \ No newline at end of file From 3119cadfb66102ad4f6b201ee9d94f8ccbb9715f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Ribeiro?= Date: Sat, 17 Jul 2021 14:50:04 -0300 Subject: [PATCH 10/16] New Icon Style | Corrections - New icon style: server -- borderless -- with dark border -- with light border - Correction in the transfer of customized icon settings, in some situations the transfer caused loss of information; - Other minor repairs; --- initializer.php | 2 +- resources/icons/example_custom_icons.json | 10 +-- resources/icons/icons.json | 74 ++++++++++++++++++ resources/icons/styles/server/Green.png | Bin 0 -> 3653 bytes resources/icons/styles/server/Green_dark.png | Bin 0 -> 3727 bytes resources/icons/styles/server/Green_light.png | Bin 0 -> 3722 bytes resources/icons/styles/server/Grey.png | Bin 0 -> 3627 bytes resources/icons/styles/server/Grey_dark.png | Bin 0 -> 3640 bytes resources/icons/styles/server/Grey_light.png | Bin 0 -> 3633 bytes resources/icons/styles/server/Orange.png | Bin 0 -> 3677 bytes resources/icons/styles/server/Orange_dark.png | Bin 0 -> 3699 bytes .../icons/styles/server/Orange_light.png | Bin 0 -> 3688 bytes resources/icons/styles/server/Red.png | Bin 0 -> 3648 bytes resources/icons/styles/server/Red_dark.png | Bin 0 -> 3664 bytes resources/icons/styles/server/Red_light.png | Bin 0 -> 3678 bytes resources/icons/styles/server/Yellow.png | Bin 0 -> 3675 bytes resources/icons/styles/server/Yellow_dark.png | Bin 0 -> 3715 bytes .../icons/styles/server/Yellow_light.png | Bin 0 -> 3687 bytes resources/js/app.js | 2 +- resources/js/classes/NagmapReborn.js | 10 ++- src/NagmapReborn/Helper.php | 2 +- 21 files changed, 91 insertions(+), 9 deletions(-) create mode 100644 resources/icons/styles/server/Green.png create mode 100644 resources/icons/styles/server/Green_dark.png create mode 100644 resources/icons/styles/server/Green_light.png create mode 100644 resources/icons/styles/server/Grey.png create mode 100644 resources/icons/styles/server/Grey_dark.png create mode 100644 resources/icons/styles/server/Grey_light.png create mode 100644 resources/icons/styles/server/Orange.png create mode 100644 resources/icons/styles/server/Orange_dark.png create mode 100644 resources/icons/styles/server/Orange_light.png create mode 100644 resources/icons/styles/server/Red.png create mode 100644 resources/icons/styles/server/Red_dark.png create mode 100644 resources/icons/styles/server/Red_light.png create mode 100644 resources/icons/styles/server/Yellow.png create mode 100644 resources/icons/styles/server/Yellow_dark.png create mode 100644 resources/icons/styles/server/Yellow_light.png diff --git a/initializer.php b/initializer.php index a976ac9..27326aa 100644 --- a/initializer.php +++ b/initializer.php @@ -23,7 +23,7 @@ // Load language require_once(NGR_DOCUMENT_ROOT . "/src/NagmapReborn/i18n.class.php"); -$i18n = new i18n(NGR_DOCUMENT_ROOT . "/resources/langs/" . config('ngreborn.language') . ".json", NGR_DOCUMENT_ROOT . "/cache/"); +$i18n = new i18n(NGR_DOCUMENT_ROOT . "/resources/langs/" . config('ngreborn.language') . ".json", NGR_DOCUMENT_ROOT . "/cache"); $i18n->init(); $fails = []; diff --git a/resources/icons/example_custom_icons.json b/resources/icons/example_custom_icons.json index 71fb231..b93e4f8 100644 --- a/resources/icons/example_custom_icons.json +++ b/resources/icons/example_custom_icons.json @@ -13,23 +13,23 @@ "styles": { "some_custom_style": { "grey": { - "iconUrl": "some_custom_style/Grey.png", + "iconUrl": "custom_style_folder/Grey.png", "iconSize": [29, 43] }, "green": { - "iconUrl": "some_custom_style/Green.png", + "iconUrl": "custom_style_folder/Green.png", "iconSize": [29, 43] }, "yellow": { - "iconUrl": "some_custom_style/Yellow.png", + "iconUrl": "custom_style_folder/Yellow.png", "iconSize": [29, 43] }, "orange": { - "iconUrl": "some_custom_style/Orange.png", + "iconUrl": "custom_style_folder/Orange.png", "iconSize": [29, 43] }, "red": { - "iconUrl": "some_custom_style/Red.png", + "iconUrl": "custom_style_folder/Red.png", "iconSize": [29, 43] } } diff --git a/resources/icons/icons.json b/resources/icons/icons.json index 2a3c432..2763948 100644 --- a/resources/icons/icons.json +++ b/resources/icons/icons.json @@ -162,6 +162,80 @@ "iconUrl": "router/Red_light.png", "iconSize": [46, 29] } + }, + + "server": { + "grey": { + "iconUrl": "server/Grey.png", + "iconSize": [32, 46], + "iconAnchor": [16, 43.7] + }, + "green": { + "iconUrl": "server/Green.png", + "iconSize": [32, 46], + "iconAnchor": [16, 43.7] + }, + "yellow": { + "iconUrl": "server/Yellow.png", + "iconSize": [32, 46], + "iconAnchor": [16, 43.7] + }, + "orange": { + "iconUrl": "server/Orange.png", + "iconSize": [32, 46], + "iconAnchor": [16, 43.7] + }, + "red": { + "iconUrl": "server/Red.png", + "iconSize": [32, 46], + "iconAnchor": [16, 43.7] + } + }, + + "server_border_light": { + "grey": { + "iconUrl": "server/Grey_light.png", + "iconSize": [33, 46] + }, + "green": { + "iconUrl": "server/Green_light.png", + "iconSize": [33, 46] + }, + "yellow": { + "iconUrl": "server/Yellow_light.png", + "iconSize": [33, 46] + }, + "orange": { + "iconUrl": "server/Orange_light.png", + "iconSize": [33, 46] + }, + "red": { + "iconUrl": "server/Red_light.png", + "iconSize": [33, 46] + } + }, + + "server_border_dark": { + "grey": { + "iconUrl": "server/Grey_dark.png", + "iconSize": [33, 46] + }, + "green": { + "iconUrl": "server/Green_dark.png", + "iconSize": [33, 46] + }, + "yellow": { + "iconUrl": "server/Yellow_dark.png", + "iconSize": [33, 46] + }, + "orange": { + "iconUrl": "server/Orange_dark.png", + "iconSize": [33, 46] + }, + "red": { + "iconUrl": "server/Red_dark.png", + "iconSize": [33, 46] + } } }, diff --git a/resources/icons/styles/server/Green.png b/resources/icons/styles/server/Green.png new file mode 100644 index 0000000000000000000000000000000000000000..c31c4ccd1473ef855989d514dfd492276ac74059 GIT binary patch literal 3653 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 XTv%x5&%L5q00000NkvXXu0mjfau@Mg literal 0 HcmV?d00001 diff --git a/resources/icons/styles/server/Green_dark.png b/resources/icons/styles/server/Green_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..19eea6d33f2a56ccaa73d21d25ded01d8aaf6caf GIT binary patch literal 3727 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 literal 0 HcmV?d00001 diff --git a/resources/icons/styles/server/Green_light.png b/resources/icons/styles/server/Green_light.png new file mode 100644 index 0000000000000000000000000000000000000000..be7f8ebe624e973d91b2d5742421c6d88b9abf04 GIT binary patch literal 3722 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 literal 0 HcmV?d00001 diff --git a/resources/icons/styles/server/Grey.png b/resources/icons/styles/server/Grey.png new file mode 100644 index 0000000000000000000000000000000000000000..4dc02089bbad8fac273db2b0831b8fa3c2a559ec GIT binary patch literal 3627 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 KMNUMnLSTY#jOu#; literal 0 HcmV?d00001 diff --git a/resources/icons/styles/server/Grey_light.png b/resources/icons/styles/server/Grey_light.png new file mode 100644 index 0000000000000000000000000000000000000000..ff717646a1d720e6fdeadd071ae50bef17df3cf2 GIT binary patch literal 3633 zcmV-14$kq3P)f6Xi@@54ZTQ_E-Enz5K6$1 z03tR-RB%L5k){YTDBysjLy@r}iiH7DvFijGMAUI`6dRUFWUU$Bym{}eS9UO(Z2>7`&z9wUXbV-Il z#&6`Y8GKGQ04S2&F6MJnWNa;Ck|;8QE#r9r;7G||@X{|>%+C|c55>;RS}qbKr-&IQ zTvLXPlM{>K&(BTgi^a?^4mXV>;xX8n8Ce|RasXz}{8imI52H3ZN4bf ze_i~WlJ|C&UW9+{8AKoW!}eExnGFE2re(F+`iE_46#!l90Z_aBhs|Iw0E)7{bq;-T z9=d#9QpDmcXDh4R++0fmpKB>E=%LdZt9g z$j;($`3&Zthxi`{{&gM}5&R^+h%b~yM9Zd3AWW9ETgVfL1(`yIK=_}U_z%PWq}jQa ziQ4!P(3V&Nr6C$XejWfQDiI(Fdt@un?|lo#M+5oIi_w{wo%_#%{(V=tO#a9gB!7-$ zM?^BX5>d|Vn*3S!?g~$*UQipUP zL&zMmg;!4Do9IA%up=Rh?=qPj=x&RGBx1dpI68aT- z2O}^EromdU5o`ssU{5#*j)WJ%$?!5bA1;Eoz?EiTr=n?cd`V|I)p<|3O zju?MT93~aB0<#&j8`F+Cg&D?-VWzQItUA^l>xvDRIYI4MQ`g1<+DyrL=EogS06Xii({|v`U^zjmmKqDIK93(F5q| z^fLNk`gQs{RV`IdRle#b)i%{Ds;|}NsClUI)k@Ub)kf6bsWa4l)YH_rsduU0(?DsM zX@qO!YV6TCtMPOWZH~(v?wpc2hv(eZgf-1HBQ#fN?$aF5oYvCT^3%%Fs?s{6^;Da# z?V+8jy+iwi_M{F~$4y6|vqR^k&SQoO!;_KDsATjprgSxR{dFa}^}2()GkV5)QF?`X z?Rxk03HmJkB>f%wz4}uIItC#I1qQ7Kw+-=zEW;GTU55RJuZ@h2VvIHzbs0S}Rx=JT z&Npr~zH34@aW`3J(qMAU6l2OVO*7qXdf5y%vo}jIt1%lghs_<#1?IcWhb_<+P8LFo z28$a^64R5J!)#@aTGB0pEekEXET35!SjAgyv+B3{Xl-wuZrx~o$A)4PXj5p@WAm%6 znJw40#`fA=@?77!tLJvleQsxN$G6*KchjC~A7a13zSsVPgQJ7Uq0M2^(ZDg$vDWbh zi^d9LZDyT!LOXdmt#&%*^w!zIS?qk+`4<X~g?%562@eae34a)26HyS+zks@6 z$%2*zuOhu7%OdYYnM6sVdZQJi6QY}=U&naIl*dS8tzuWkUW(I*6U24LW8oFzvR(TOpMEs5_rp_~TJ^wNN(wM(bC zZ0;`Z6P^ce2XB(^$}i_nB)KM)Cp}7bP2Qe7nc|*Ok@8f)7E}wKr~0SXrM^xJP1~RL zDLp2=Jp-4Km~m7{5vB?IGPN`FGKaIwvx>8%%bb_(Ts9>N5;bK**^9Ef#WdN^)PTf9 zvR*Qp{o-l7TcBI8wqSIn=gRt3(5j`Y zdRObOE?Pal#&6AmwS={4Ykw%TE-Wv6xh`g1Pmxy9nxe7we(PI{6^cd0H#WFzsN0Cz zDA+i-Y3`<~O&?2mB^OJrODjs>Z{}{k_?699m0x|@lC)*8%%N=0R?Jr6*6Z8cw;d=~ zF3&F?+a9vLa|dHb$&Qyhm+ZVyVOLSNi?B>BD~E ze(8aT1AWbo&CM;EEoH56tE6@EV8X%6-*|u1-NtOIZ>P7H9s-9XhaP{M`0e$>L5F*f zu#U8SXZT%h2eqT56Y5;vIn|ZYCGC#u9zGg)w718lr{jCe@An_mJyvsE<#^c%!il02 zpHAkVoIaIx>gnm^(__6$dheWxJ#(!uyl?Pq(Ao3ne9xWf_v}A;-u3*k3(gmgUSwVD zy5w-FbHIL};|Kd6ItCpEJBJ*Hx-UCj?irppeBz4xmD5+fub#UWaP88_{E^}7QP*$Y zNVp-r$-DXJR{E{yw{vdK+*xxMeYfPE(!GlNn)e%iH2tw%>L5Kn>ODH}V8MesW8ASP zKV|>)e!S=*`C-L`&P4Mg+egPHeJ3wJUif(YN!F8@r^P=j|6Kdbc>FRj6+1Ql zT=e|YubW?}zu5oM?q%B5CTXv81)srF~&zQh8S;r3g5shLkLmgTd4PNqlS1zL>dHz(v(8G z+ihvL&P==8-OkK*ciS3F{E|&)XU}}|&CJ?z$T7cS_|c0f(j@|KP_YwIyfM@3aZtyUv9!EhMBA|fs+3h7AV z4z;9MW}{|;vZ7d)qXVxUtrsuvE*bUfAPtHa7wvXne)%?k5!7_%8$lFX(`g#pC>RPE zZKYVW7zx*BX6>g#dw7NoInTH7o({2|9H#fdRBGlScU9fccV**ME3eYc6AbsUwY#ogoh8u4;UteBcdYb*o<3~B@b})Wl z{DB~d#$uo-%RWbu-3cQW*k+n_g5GUn>gIe?fo3H7c8H?XXs{e9{e74G4*2~5`lt$!Ku`C!j#Md^ z$>n+pUSSZl2MWgoxLWZF@RI?Z%eA`eC^!;i(Xn>01xipOCu38u%xOB zA3lEaz7!9@+2r$=uOJ>D9!X74uXKHwoq%7}lcPi9erA3F_yz_nHhmWnK@sab7y|f% zDmEOa1TaMu&hxI`3nvIiqvR4eL5nG(y#f-EBk>6AP^(rg_c$uVN9l6a(Q#-sUQO2< z^xY?%fD$o2b%V+myy)EtPLGfhaeR0{`2;Q{Aj7NefQ2iCLYt^ormz*kLRnSG)h}F4 zpXlcMqGuvl|L@q9m^`pPQ@ipBw`HnZTuq-KU%z7${h5suHYgFSujl_h@wY&U2t}em zg6u-QTR5&KhT_-yBESwX7zmVJJYV(pCrA%~9C+dnZs2buN~E<700000NkvXXu0mjf Dw=mAw literal 0 HcmV?d00001 diff --git a/resources/icons/styles/server/Orange.png b/resources/icons/styles/server/Orange.png new file mode 100644 index 0000000000000000000000000000000000000000..b090cb6ee6a0a6d572f8df4d2346d296b0287f42 GIT binary patch literal 3677 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 S1EPBX0000f6Xi@@54ZTQ_E-Enz5K6$1 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 literal 0 HcmV?d00001 diff --git a/resources/icons/styles/server/Yellow.png b/resources/icons/styles/server/Yellow.png new file mode 100644 index 0000000000000000000000000000000000000000..32bfcfa535b912a51500a0f791e5dcb3c4507716 GIT binary patch literal 3675 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 literal 0 HcmV?d00001 diff --git a/resources/icons/styles/server/Yellow_light.png b/resources/icons/styles/server/Yellow_light.png new file mode 100644 index 0000000000000000000000000000000000000000..8c43f2333983d51503f9298e6746701db5fb3a8a GIT binary patch literal 3687 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 { + // console.log("NODE: ", node); //#DEBUG# + if (config.custom_icons.hasOwnProperty(node)) { + for (let subnode in config.custom_icons[node]) { + // console.log("SUBNODE: ", subnode); //#DEBUG# + config.icons[node][subnode] = config.custom_icons[node][subnode]; + } + } + }); } let icons = {}; diff --git a/src/NagmapReborn/Helper.php b/src/NagmapReborn/Helper.php index 903968c..0b9a7df 100644 --- a/src/NagmapReborn/Helper.php +++ b/src/NagmapReborn/Helper.php @@ -15,7 +15,7 @@ function requiredAuth($useAuth, $user, $userPass, $L) $is_not_authenticated = (empty($_SERVER['PHP_AUTH_USER']) || empty($_SERVER['PHP_AUTH_PW']) || $_SERVER['PHP_AUTH_USER'] != $user || - $_SERVER['PHP_AUTH_PW'] != $userPass); + $_SERVER['PHP_AUTH_PW'] != $userPass); if ($is_not_authenticated) { header('HTTP/1.1 401 Authorization Required'); header('WWW-Authenticate: Basic realm="Access denied"'); From 6dee20bc66987f5115d2ac325e63f1322fbda2cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Ribeiro?= Date: Tue, 20 Jul 2021 17:05:10 -0300 Subject: [PATCH 11/16] Icons rework - Standardization of icon variations (borderless, dark border, light border); - Changed router icons; - Reorganization of folders; --- config.php.example | 15 +- resources/icons/icons.json | 131 ++++++++++++------ .../Green.png => marker/Green_border.png} | Bin .../Green.png => marker/Green_retro.png} | Bin .../Green.png => marker/Green_shadow.png} | Bin .../Grey.png => marker/Grey_border.png} | Bin .../{retro/Grey.png => marker/Grey_retro.png} | Bin .../Grey.png => marker/Grey_shadow.png} | Bin .../Orange.png => marker/Orange_border.png} | Bin .../Orange.png => marker/Orange_retro.png} | Bin .../Orange.png => marker/Orange_shadow.png} | Bin .../{border/Red.png => marker/Red_border.png} | Bin .../{retro/Red.png => marker/Red_retro.png} | Bin .../{shadow/Red.png => marker/Red_shadow.png} | Bin .../Yellow.png => marker/Yellow_border.png} | Bin .../Yellow.png => marker/Yellow_retro.png} | Bin .../Yellow.png => marker/Yellow_shadow.png} | Bin resources/icons/styles/router/Green.png | Bin 0 -> 4472 bytes resources/icons/styles/router/Green_dark.png | Bin 4156 -> 4870 bytes resources/icons/styles/router/Green_light.png | Bin 4147 -> 5303 bytes resources/icons/styles/router/Grey.png | Bin 0 -> 4481 bytes resources/icons/styles/router/Grey_dark.png | Bin 4111 -> 4874 bytes resources/icons/styles/router/Grey_light.png | Bin 4097 -> 5296 bytes resources/icons/styles/router/Orange.png | Bin 0 -> 4553 bytes resources/icons/styles/router/Orange_dark.png | Bin 4145 -> 4948 bytes .../icons/styles/router/Orange_light.png | Bin 4161 -> 5383 bytes resources/icons/styles/router/Red.png | Bin 0 -> 4546 bytes resources/icons/styles/router/Red_dark.png | Bin 4133 -> 4931 bytes resources/icons/styles/router/Red_light.png | Bin 4138 -> 5316 bytes resources/icons/styles/router/Yellow.png | Bin 0 -> 4584 bytes resources/icons/styles/router/Yellow_dark.png | Bin 4127 -> 4980 bytes .../icons/styles/router/Yellow_light.png | Bin 4143 -> 5377 bytes resources/icons/styles/server/Green.png | Bin 3653 -> 3528 bytes resources/icons/styles/server/Green_dark.png | Bin 3727 -> 3750 bytes resources/icons/styles/server/Green_light.png | Bin 3722 -> 3926 bytes resources/icons/styles/server/Grey.png | Bin 3627 -> 3488 bytes resources/icons/styles/server/Grey_dark.png | Bin 3640 -> 3703 bytes resources/icons/styles/server/Grey_light.png | Bin 3633 -> 3858 bytes resources/icons/styles/server/Orange.png | Bin 3677 -> 3572 bytes resources/icons/styles/server/Orange_dark.png | Bin 3699 -> 3744 bytes .../icons/styles/server/Orange_light.png | Bin 3688 -> 3936 bytes resources/icons/styles/server/Red.png | Bin 3648 -> 3538 bytes resources/icons/styles/server/Red_dark.png | Bin 3664 -> 3729 bytes resources/icons/styles/server/Red_light.png | Bin 3678 -> 3886 bytes resources/icons/styles/server/Yellow.png | Bin 3675 -> 3591 bytes resources/icons/styles/server/Yellow_dark.png | Bin 3715 -> 3734 bytes .../icons/styles/server/Yellow_light.png | Bin 3687 -> 3920 bytes resources/icons/styles/wifi/Green.png | Bin 0 -> 4122 bytes resources/icons/styles/wifi/Green_dark.png | Bin 5357 -> 4710 bytes resources/icons/styles/wifi/Green_light.png | Bin 5332 -> 5216 bytes resources/icons/styles/wifi/Grey.png | Bin 0 -> 4155 bytes resources/icons/styles/wifi/Grey_dark.png | Bin 5234 -> 4833 bytes resources/icons/styles/wifi/Grey_light.png | Bin 5246 -> 5127 bytes resources/icons/styles/wifi/Orange.png | Bin 0 -> 4183 bytes resources/icons/styles/wifi/Orange_dark.png | Bin 5315 -> 4852 bytes resources/icons/styles/wifi/Orange_light.png | Bin 5365 -> 5244 bytes resources/icons/styles/wifi/Red.png | Bin 0 -> 4159 bytes resources/icons/styles/wifi/Red_dark.png | Bin 5312 -> 4788 bytes resources/icons/styles/wifi/Red_light.png | Bin 5310 -> 5177 bytes resources/icons/styles/wifi/Yellow.png | Bin 0 -> 4227 bytes resources/icons/styles/wifi/Yellow_dark.png | Bin 5232 -> 4869 bytes resources/icons/styles/wifi/Yellow_light.png | Bin 5331 -> 5215 bytes 62 files changed, 95 insertions(+), 51 deletions(-) rename resources/icons/styles/{border/Green.png => marker/Green_border.png} (100%) rename resources/icons/styles/{retro/Green.png => marker/Green_retro.png} (100%) rename resources/icons/styles/{shadow/Green.png => marker/Green_shadow.png} (100%) rename resources/icons/styles/{border/Grey.png => marker/Grey_border.png} (100%) rename resources/icons/styles/{retro/Grey.png => marker/Grey_retro.png} (100%) rename resources/icons/styles/{shadow/Grey.png => marker/Grey_shadow.png} (100%) rename resources/icons/styles/{border/Orange.png => marker/Orange_border.png} (100%) rename resources/icons/styles/{retro/Orange.png => marker/Orange_retro.png} (100%) rename resources/icons/styles/{shadow/Orange.png => marker/Orange_shadow.png} (100%) rename resources/icons/styles/{border/Red.png => marker/Red_border.png} (100%) rename resources/icons/styles/{retro/Red.png => marker/Red_retro.png} (100%) rename resources/icons/styles/{shadow/Red.png => marker/Red_shadow.png} (100%) rename resources/icons/styles/{border/Yellow.png => marker/Yellow_border.png} (100%) rename resources/icons/styles/{retro/Yellow.png => marker/Yellow_retro.png} (100%) rename resources/icons/styles/{shadow/Yellow.png => marker/Yellow_shadow.png} (100%) create mode 100644 resources/icons/styles/router/Green.png create mode 100644 resources/icons/styles/router/Grey.png create mode 100644 resources/icons/styles/router/Orange.png create mode 100644 resources/icons/styles/router/Red.png create mode 100644 resources/icons/styles/router/Yellow.png create mode 100644 resources/icons/styles/wifi/Green.png create mode 100644 resources/icons/styles/wifi/Grey.png create mode 100644 resources/icons/styles/wifi/Orange.png create mode 100644 resources/icons/styles/wifi/Red.png create mode 100644 resources/icons/styles/wifi/Yellow.png diff --git a/config.php.example b/config.php.example index feba7e1..f9b6ada 100644 --- a/config.php.example +++ b/config.php.example @@ -33,21 +33,21 @@ return [ 'user_pass' => "ngradmin", ], 'map' => [ - // Set to the centre of your map (lat,long) + // Set the centre of your map (lat,long) 'centre' => "-6.469293, -50.913464", // Default zoom level of the map 'zoom' => 6.2, // Leaflet styles/tiles. - // Use a provider of images / vectors other than OpenStreetMap. + // Use a provider of images/vectors other than OpenStreetMap. // You can see several for free here: // (http://leaflet-extras.github.io/leaflet-providers/preview/) // Some of these need a token to access. Put the full link. + // For example: https://cartodb-basemaps-{s}.global.ssl.fastly.net/dark_nolabels/{z}/{x}/{y}{r}.png // How to use the Mapbox styles: // https://github.com/jocafamaka/nagmapReborn/wiki/How-to-use-the-Mapbox-styles%3F // Leave blank to use the default. - // For example: https://cartodb-basemaps-{s}.global.ssl.fastly.net/dark_nolabels/{z}/{x}/{y}{r}.png 'style' => "", ], 'ngreborn' => [ @@ -85,7 +85,7 @@ return [ // Font size in pixels used in ChangesBar. (use only numbers) 'font_size' => 20, - // Includes a field at the top of ChanesBar to filter the information displayed regardless of usage mode. + // Includes a field at the top of ChangesBar to filter the information displayed regardless of usage mode. // Useful when there are a lot of hosts. // 0 = NO. // 1 = YES. @@ -102,7 +102,7 @@ return [ 'down' => 5 ], - // Play alert when a server"s status changes to down? + // Play alert when a host's status changes to down? // To change the alert sound, simply replace the file "alert.mp3" in the resources folder // In some browsers it is necessary for user to interact with the page before it emits a sound, // so an initial interaction is required for the alert to be played. @@ -117,7 +117,10 @@ return [ 'update_animation' => 1, // The default icon style to be used when there is no specific definition; - // Pre-existing options: marker_retro, marker_shadow, marker_border, wifi_border_dark, wifi_border_light, router_border_dark, router_border_light + // Pre-existing options: marker_retro, marker_shadow, marker_border, + // wifi, wifi_border_dark, wifi_border_light, + // router, router_border_dark, router_border_light + // server, server_border_dark, server_border_light // This option can be overridden by the definitions contained in resources/icons/custom_icons.json // Read more: https://github.com/jocafamaka/nagmapReborn/wiki/About-icons-styles 'default_icon_style' => "marker_shadow", diff --git a/resources/icons/icons.json b/resources/icons/icons.json index 2763948..d2e1c90 100644 --- a/resources/icons/icons.json +++ b/resources/icons/icons.json @@ -5,73 +5,96 @@ "styles": { "marker_retro": { "grey": { - "iconUrl": "retro/Grey.png", + "iconUrl": "marker/Grey_retro.png", "iconSize": [29, 43] }, "green": { - "iconUrl": "retro/Green.png", + "iconUrl": "marker/Green_retro.png", "iconSize": [29, 43] }, "yellow": { - "iconUrl": "retro/Yellow.png", + "iconUrl": "marker/Yellow_retro.png", "iconSize": [29, 43] }, "orange": { - "iconUrl": "retro/Orange.png", + "iconUrl": "marker/Orange_retro.png", "iconSize": [29, 43] }, "red": { - "iconUrl": "retro/Red.png", + "iconUrl": "marker/Red_retro.png", "iconSize": [29, 43] } }, "marker_shadow": { "grey": { - "iconUrl": "shadow/Grey.png", + "iconUrl": "marker/Grey_shadow.png", "iconSize": [29, 43] }, "green": { - "iconUrl": "shadow/Green.png", + "iconUrl": "marker/Green_shadow.png", "iconSize": [29, 43] }, "yellow": { - "iconUrl": "shadow/Yellow.png", + "iconUrl": "marker/Yellow_shadow.png", "iconSize": [29, 43] }, "orange": { - "iconUrl": "shadow/Orange.png", + "iconUrl": "marker/Orange_shadow.png", "iconSize": [29, 43] }, "red": { - "iconUrl": "shadow/Red.png", + "iconUrl": "marker/Red_shadow.png", "iconSize": [29, 43] } }, "marker_border": { "grey": { - "iconUrl": "border/Grey.png", + "iconUrl": "marker/Grey_border.png", "iconSize": [29, 43] }, "green": { - "iconUrl": "border/Green.png", + "iconUrl": "marker/Green_border.png", "iconSize": [29, 43] }, "yellow": { - "iconUrl": "border/Yellow.png", + "iconUrl": "marker/Yellow_border.png", "iconSize": [29, 43] }, "orange": { - "iconUrl": "border/Orange.png", + "iconUrl": "marker/Orange_border.png", "iconSize": [29, 43] }, "red": { - "iconUrl": "border/Red.png", + "iconUrl": "marker/Red_border.png", "iconSize": [29, 43] } }, + "wifi": { + "grey": { + "iconUrl": "wifi/Grey.png", + "iconSize": [40, 32] + }, + "green": { + "iconUrl": "wifi/Green.png", + "iconSize": [40, 32] + }, + "yellow": { + "iconUrl": "wifi/Yellow.png", + "iconSize": [40, 32] + }, + "orange": { + "iconUrl": "wifi/Orange.png", + "iconSize": [40, 32] + }, + "red": { + "iconUrl": "wifi/Red.png", + "iconSize": [40, 32] + } + }, + "wifi_border_dark": { "grey": { "iconUrl": "wifi/Grey_dark.png", @@ -118,123 +141,141 @@ } }, + "router": { + "grey": { + "iconUrl": "router/Grey.png", + "iconSize": [40, 27] + }, + "green": { + "iconUrl": "router/Green.png", + "iconSize": [40, 27] + }, + "yellow": { + "iconUrl": "router/Yellow.png", + "iconSize": [40, 27] + }, + "orange": { + "iconUrl": "router/Orange.png", + "iconSize": [40, 27] + }, + "red": { + "iconUrl": "router/Red.png", + "iconSize": [40, 27] + } + }, + "router_border_dark": { "grey": { "iconUrl": "router/Grey_dark.png", - "iconSize": [46, 29] + "iconSize": [42, 29] }, "green": { "iconUrl": "router/Green_dark.png", - "iconSize": [46, 29] + "iconSize": [42, 29] }, "yellow": { "iconUrl": "router/Yellow_dark.png", - "iconSize": [46, 29] + "iconSize": [42, 29] }, "orange": { "iconUrl": "router/Orange_dark.png", - "iconSize": [46, 29] + "iconSize": [42, 29] }, "red": { "iconUrl": "router/Red_dark.png", - "iconSize": [46, 29] + "iconSize": [42, 29] } }, "router_border_light": { "grey": { "iconUrl": "router/Grey_light.png", - "iconSize": [46, 29] + "iconSize": [44, 31] }, "green": { "iconUrl": "router/Green_light.png", - "iconSize": [46, 29] + "iconSize": [44, 31] }, "yellow": { "iconUrl": "router/Yellow_light.png", - "iconSize": [46, 29] + "iconSize": [44, 31] }, "orange": { "iconUrl": "router/Orange_light.png", - "iconSize": [46, 29] + "iconSize": [44, 31] }, "red": { "iconUrl": "router/Red_light.png", - "iconSize": [46, 29] + "iconSize": [44, 31] } }, "server": { "grey": { "iconUrl": "server/Grey.png", - "iconSize": [32, 46], - "iconAnchor": [16, 43.7] + "iconSize": [31, 44] }, "green": { "iconUrl": "server/Green.png", - "iconSize": [32, 46], - "iconAnchor": [16, 43.7] + "iconSize": [32, 44] }, "yellow": { "iconUrl": "server/Yellow.png", - "iconSize": [32, 46], - "iconAnchor": [16, 43.7] + "iconSize": [32, 44] }, "orange": { "iconUrl": "server/Orange.png", - "iconSize": [32, 46], - "iconAnchor": [16, 43.7] + "iconSize": [32, 44] }, "red": { "iconUrl": "server/Red.png", - "iconSize": [32, 46], - "iconAnchor": [16, 43.7] + "iconSize": [32, 44] } }, "server_border_light": { "grey": { "iconUrl": "server/Grey_light.png", - "iconSize": [33, 46] + "iconSize": [35, 49] }, "green": { "iconUrl": "server/Green_light.png", - "iconSize": [33, 46] + "iconSize": [35, 49] }, "yellow": { "iconUrl": "server/Yellow_light.png", - "iconSize": [33, 46] + "iconSize": [35, 49] }, "orange": { "iconUrl": "server/Orange_light.png", - "iconSize": [33, 46] + "iconSize": [35, 49] }, "red": { "iconUrl": "server/Red_light.png", - "iconSize": [33, 46] + "iconSize": [35, 49] } }, "server_border_dark": { "grey": { "iconUrl": "server/Grey_dark.png", - "iconSize": [33, 46] + "iconSize": [33, 47] }, "green": { "iconUrl": "server/Green_dark.png", - "iconSize": [33, 46] + "iconSize": [33, 47] }, "yellow": { "iconUrl": "server/Yellow_dark.png", - "iconSize": [33, 46] + "iconSize": [33, 47] }, "orange": { "iconUrl": "server/Orange_dark.png", - "iconSize": [33, 46] + "iconSize": [33, 47] }, "red": { "iconUrl": "server/Red_dark.png", - "iconSize": [33, 46] + "iconSize": [33, 47] } } diff --git a/resources/icons/styles/border/Green.png b/resources/icons/styles/marker/Green_border.png similarity index 100% rename from resources/icons/styles/border/Green.png rename to resources/icons/styles/marker/Green_border.png diff --git a/resources/icons/styles/retro/Green.png b/resources/icons/styles/marker/Green_retro.png similarity index 100% rename from resources/icons/styles/retro/Green.png rename to resources/icons/styles/marker/Green_retro.png diff --git a/resources/icons/styles/shadow/Green.png b/resources/icons/styles/marker/Green_shadow.png similarity index 100% rename from resources/icons/styles/shadow/Green.png rename to resources/icons/styles/marker/Green_shadow.png diff --git a/resources/icons/styles/border/Grey.png b/resources/icons/styles/marker/Grey_border.png similarity index 100% rename from resources/icons/styles/border/Grey.png rename to resources/icons/styles/marker/Grey_border.png diff --git a/resources/icons/styles/retro/Grey.png b/resources/icons/styles/marker/Grey_retro.png similarity index 100% rename from resources/icons/styles/retro/Grey.png rename to resources/icons/styles/marker/Grey_retro.png diff --git a/resources/icons/styles/shadow/Grey.png b/resources/icons/styles/marker/Grey_shadow.png similarity index 100% rename from resources/icons/styles/shadow/Grey.png rename to resources/icons/styles/marker/Grey_shadow.png diff --git a/resources/icons/styles/border/Orange.png b/resources/icons/styles/marker/Orange_border.png similarity index 100% rename from resources/icons/styles/border/Orange.png rename to resources/icons/styles/marker/Orange_border.png diff --git a/resources/icons/styles/retro/Orange.png b/resources/icons/styles/marker/Orange_retro.png similarity index 100% rename from resources/icons/styles/retro/Orange.png rename to resources/icons/styles/marker/Orange_retro.png diff --git a/resources/icons/styles/shadow/Orange.png b/resources/icons/styles/marker/Orange_shadow.png similarity index 100% rename from resources/icons/styles/shadow/Orange.png rename to resources/icons/styles/marker/Orange_shadow.png diff --git a/resources/icons/styles/border/Red.png b/resources/icons/styles/marker/Red_border.png similarity index 100% rename from resources/icons/styles/border/Red.png rename to resources/icons/styles/marker/Red_border.png diff --git a/resources/icons/styles/retro/Red.png b/resources/icons/styles/marker/Red_retro.png similarity index 100% rename from resources/icons/styles/retro/Red.png rename to resources/icons/styles/marker/Red_retro.png diff --git a/resources/icons/styles/shadow/Red.png b/resources/icons/styles/marker/Red_shadow.png similarity index 100% rename from resources/icons/styles/shadow/Red.png rename to resources/icons/styles/marker/Red_shadow.png diff --git a/resources/icons/styles/border/Yellow.png b/resources/icons/styles/marker/Yellow_border.png similarity index 100% rename from resources/icons/styles/border/Yellow.png rename to resources/icons/styles/marker/Yellow_border.png diff --git a/resources/icons/styles/retro/Yellow.png b/resources/icons/styles/marker/Yellow_retro.png similarity index 100% rename from resources/icons/styles/retro/Yellow.png rename to resources/icons/styles/marker/Yellow_retro.png diff --git a/resources/icons/styles/shadow/Yellow.png b/resources/icons/styles/marker/Yellow_shadow.png similarity index 100% rename from resources/icons/styles/shadow/Yellow.png rename to resources/icons/styles/marker/Yellow_shadow.png diff --git a/resources/icons/styles/router/Green.png b/resources/icons/styles/router/Green.png new file mode 100644 index 0000000000000000000000000000000000000000..156995deb31a9f00b86e1907f58d6bdd8d378d3b GIT binary patch literal 4472 zcmV-;5r^)HP)f6Xi@@54ZTQ_E-Enz5K6$1 z03tR-RB%L5k){YTDBysjLy@r}iiH7DvFijGMAUI`6dRUFWUU$Bym{}eS9UO(Z2>7`&z9wUXbV-Il z#&6`Y8GKGQ04S2&F6MJnWNa;Ck|;8QE#r9r;7G||@X{|>%+C|c55>;RS}qbKr-&IQ zTvLXPlM{>K&(BTgi^a?^4mXV>;xX8n8Ce|RasXz}{8imI52H3ZN4bf ze_i~WlJ|C&UW9+{8AKoW!}eExnGFE2re(F+`iE_46#!l90Z_aBhs|Iw0E)7{bq;-T z9=d#9QpDmcXDh4R++0fmpKB>E=%LdZt9g z$j;($`3&Zthxi`{{&gM}5&R^+h%b~yM9Zd3AWW9ETgVfL1(`yIK=_}U_z%PWq}jQa ziQ4!P(3V&Nr6C$XejWfQDiI(Fdt@un?|lo#M+5oIi_w{wo%_#%{(V=tO#a9gB!7-$ zM?^BX5>d|Vn*3S!?g~$*UQipUP zL&zMmg;!4Do9IA%up=Rh?=qPj=x&RGBx1dpI68aT- z2O}^EromdU5o`ssU{5#*j)WJ%$?!5bA1;Eoz?EiTr=n?cd`V|I)p<|3O zju?MT93~aB0<#&j8`F+Cg&D?-VWzQItUA^l>xvDRIYI4MQ`g1<+DyrL=EogS06Xii({|v`U^zjmmKqDIK93(F5q| z^fLNk`gQs{RV`IdRle#b)i%{Ds;|}NsClUI)k@Ub)kf6bsWa4l)YH_rsduU0(?DsM zX@qO!YV6TCtMPOWZH~(v?wpc2hv(eZgf-1HBQ#fN?$aF5oYvCT^3%%Fs?s{6^;Da# z?V+8jy+iwi_M{F~$4y6|vqR^k&SQoO!;_KDsATjprgSxR{dFa}^}2()GkV5)QF?`X z?Rxk03HmJkB>f%wz4}uIItC#I1qQ7Kw+-=zEW;GTU55RJuZ@h2VvIHzbs0S}Rx=JT z&Npr~zH34@aW`3J(qMAU6l2OVO*7qXdf5y%vo}jIt1%lghs_<#1?IcWhb_<+P8LFo z28$a^64R5J!)#@aTGB0pEekEXET35!SjAgyv+B3{Xl-wuZrx~o$A)4PXj5p@WAm%6 znJw40#`fA=@?77!tLJvleQsxN$G6*KchjC~A7a13zSsVPgQJ7Uq0M2^(ZDg$vDWbh zi^d9LZDyT!LOXdmt#&%*^w!zIS?qk+`4<X~g?%562@eae34a)26HyS+zks@6 z$%2*zuOhu7%OdYYnM6sVdZQJi6QY}=U&naIl*dS8tzuWkUW(I*6U24LW8oFzvR(TOpMEs5_rp_~TJ^wNN(wM(bC zZ0;`Z6P^ce2XB(^$}i_nB)KM)Cp}7bP2Qe7nc|*Ok@8f)7E}wKr~0SXrM^xJP1~RL zDLp2=Jp-4Km~m7{5vB?IGPN`FGKaIwvx>8%%bb_(Ts9>N5;bK**^9Ef#WdN^)PTf9 zvR*Qp{o-l7TcBI8wqSIn=gRt3(5j`Y zdRObOE?Pal#&6AmwS={4Ykw%TE-Wv6xh`g1Pmxy9nxe7we(PI{6^cd0H#WFzsN0Cz zDA+i-Y3`<~O&?2mB^OJrODjs>Z{}{k_?699m0x|@lC)*8%%N=0R?Jr6*6Z8cw;d=~ zF3&F?+a9vLa|dHb$&Qyhm+ZVyVOLSNi?B>BD~E ze(8aT1AWbo&CM;EEoH56tE6@EV8X%6-*|u1-NtOIZ>P7H9s-9XhaP{M`0e$>L5F*f zu#U8SXZT%h2eqT56Y5;vIn|ZYCGC#u9zGg)w718lr{jCe@An_mJyvsE<#^c%!il02 zpHAkVoIaIx>gnm^(__6$dheWxJ#(!uyl?Pq(Ao3ne9xWf_v}A;-u3*k3(gmgUSwVD zy5w-FbHIL};|Kd6ItCpEJBJ*Hx-UCj?irppeBz4xmD5+fub#UWaP88_{E^}7QP*$Y zNVp-r$-DXJR{E{yw{vdK+*xxMeYfPE(!GlNn)e%iH2tw%>L5Kn>ODH}V8MesW8ASP zKV|>)e!S=*`C-L`&P4Mg+egPHeJ3wJUif(YN!F8@r^P=j|6Kdbc>FRj6+1Ql zT=e|YubW?}zu5oM?q%R#-EL`Zfzo#sT2K*<5hG}$Mgd7Q!C#`HK_W3|f`%B{Y(f1eRcVcc5Rn9< z@r}k9gG78pR1_!>Tlxfx*vD?S`@XO7%(T1iwp$Ad@k=H%_ueyS&YU^tJ98;x3^?j` zE$$@D5^P`p!xB2bp%?`LP5<}Uk|c10=ct~r&g-2=}rj$@SSljgqXOA z_LP93TLDZ8fxer7j_>N9HZo!3j1oyf?)AA%4_}B%!$sKy+(zjqz0Ga+Ww@vAjT=vE z?vvMC>?$0@R6q&b{Pc;9pSOsW>t9>BTrD^_exB~X1%v0V11;tex)!^&$qzoCPugpayr8q#3XOy- znWR|_rV|OMNtr!FnXOAU9j!gvUwLzih3R3FgtTUjTz9L#5oq*IgNEh-(QLqoNlbe{ z(p{$|)wAc=rjI_(W@Rd}uid%ofq35c?=m?`s#gOfvhT`^tqR*JPDDaMq_+RmW51SV zD6HM@X5iH^0SWlKZv`3S%Uyg5B$}x7i_r$;41n}C`*UxZeP6UwR^VE zq_T9#Xqli4;2Cp0#K*1zS78T|JZ(Jah<0h#8Y%#IXzCD_=ThPA^!3NhXwIv%@re^>ZhlI?$G3V13)N1FGl86_BMWaXR2s!FfiH=WsJYT%T+q z(VK=vu)yRZ%##zZmN>5<B0|5XMad z8OhI)-!B@cb8axN@C*$z4eU(|#7Af2MJx=8Ye*QxZxx}VIC>6%1 zrlU+w@kvk|ff<+LWE~l-ktyg_HPF8puf`T|l^g@=oRUZ>@Y15AXOfF?@A5mj-E$Vl z@eEn#tS-^G*LmIJajZr1A%O*RY+#{C7Jl5Wq7I=a2|b<%;op~lZW`b;tw^mCmw6ql z%ILrX94!!niY%ii&H?rIrj96Y?$MdOJPFBv1)g9EdX~4GiEli9wZI&Rj#WTHPiK?y z!Xt_a(oEJeq#6dOxLe?DGH|A>>mV~7f3~CANK?zLwq7N&W?swf71z7Y#fB0000< KMNUMnLSTYUJdW!C literal 0 HcmV?d00001 diff --git a/resources/icons/styles/router/Green_dark.png b/resources/icons/styles/router/Green_dark.png index 74d0dc53da915d6e96d17bbf3c6c02611a34df90..8610f3e9f573bf82d87e6de539f6b19ca13d0380 100644 GIT binary patch delta 2247 zcmV;&2srn=AciI(iBL{Q4GJ0x0000DNk~Le0000g0000T2nGNE0js;t*s&p63V#T7 zNkli zH?1hGNKjvZpjMSC;HeKqq7N0SloB9A&T#u>e3bS^`WyH=?Ffa=#C!hzs`*nF=&1sz zf5*-2Q-^>8A#8E%+d@h*Em)m91b(FuXkR39K6vh_*Z71bOJc#q`L_w>dvvt6wh)Cx72!Yh6)b zjBukibZM(4;P5U0F3C)7Jr7r;l`Dp-554BAJ86ULx?e{+faSoh!qt5p=p`&MMA=% z0N0&fD+WtigzWB^uqKy^>n`WLr{g8Cdan^Il6m)|&vUOga~GwgB1qkO z?7?{E63KxXGSTsR^D`&UPc^e0W&Ri1e`V~dfO6>F3u3Rfwtu!}nf^S$+CTdsF5TE}Jy%?fd=&Xthu*3M_a|i_-%7oXiS_4sO3~@Z zlh4i6SoTba^MCxD4fpNH&^(wLg5VC^1?A~!KGf6l!qFbvN7@sSNaPaj2)B>Kdp@hl z3NSpcwpt2_$u{BO1UXo9Rm`R0<*+tiF9O2uUCi4k)ieltb;XCB4GqOqJz+nbJ4sNj zw`5$fWl}J8x3FBcr9`9!(N76%?k~Z@HUI=S3p|Wc1Szs@OMV?Xr zXLrsnR3A8NkuR@2IOm7R;KkFlH`;%$BOGRnUG?YUMe+YzVO75Y#@&%1uVVsJjN6y- z@p4C~{g3H=fgde41tIC&IZQJoLE*9=N(R5Mtbe5Tz5apzzh-ChE~+ou|6_b`2J9EA z5cA{Mb9JyxmU3g|TtyGLg>HClO;!IkGBT21OR`G0OMST%3Wb^|NY9`P9|KClX1T*< zl%snEF!}jZuv{uIM-nWmqVZ|WikUi3ut<%Q3FKfVTt9Tgv zjh&soZ_D1Hb?&Lx4nWI`UEur|Mz@mwlWtir3=9k`?Lk&-c7v zUA^}(Xe(tIq%f1(JWC?2*gea*fPjgpQGff|R$~!Wo_5q&!hBwu|{r?f1-CUV%0A;2T za;rU&bwCf`St}uH&(w#}7gZORa8Y_spVB@Z%Az zEjt>_z&eY;vs{*|3GBKGHmZQ+K`uacuZe)j{W#p-2uZkzskwnAd|`Y zPd2SK^IwVBTB3wI-Cn>!g=xDB(t!S)Dn;Id%#ON{cdzgp#9+NLV|rnGyv47TsLss4 z6b((hlGtBCb?M8%^i>dnqMM6YxX6bTv;Pc!EjZdu<88Hk|MzE`9bic6*KT0RlotxG z-@eJz)Um#ikvUPB)@$q!IDhm1Xpn)tVtPGKCLSq+l@cAkYNQF1!Ke7ZKal{}eM%XiK4%PzXEICsE_0*c-Q+UUzZ2xDX5vqVJ|)I0;y? z_~OR~pRI4snE=mjyi&@V2{fsLV`&u}u@#dU#!ZaoD=6`?s_U1Bh8%`sn{COZ{{q|T Vy8F1#W#|9^002ovPDHLkV1h-ERgwSz delta 1527 zcmVa>QmnLQ= zYOQ8ywrnzq$;@UJjGO4PnQR!{tPzSZl@9^2rJaD#35!yT%16K7J$LZFE3}1{m2JPK zy}Re`{oU`qd+xcrGAzpiL2|O90Dop+FlZYXl98#_v+!;LXNPUuwgZ!vrkK3`;}0+w zjE9A*Abrf`rxi-&LDuBPFFUjWOb31zFr}p>PzoipXs};){yt{FzIe3MYonI3FF-Dr z3+Mw1#Y87mXdI<7$fzs?lrpWE4AXo= zNAi5*nX%+kUwPt`YE07?)PDh>clVVUZ32fZs$ET zHC6H9)vM~7eP^m+<&k2)i8(yD(^+ut+<8{1JdoGh+uOvGXJow0HnugxE7fIScRB(l zCV2kiVpuMcKu5<-O?r9;Y}xX*kc^=dUx!ZTwarHsMeL48gTv6%bAJcu>cO%VztpGw zSwViTGKyJIVIf!XH_wx!v$Ri6PQF2$GFY(N?Ih89xMD&=f`nlttNkSs2%IjxUa#?1 zH)~ihrsVD2ySK5tygVSKYu2oV8#jInak*SJujE8A&TwNzMFsc@yxuTo9S2iOGw}}M z7y_^4At92fix=zRg@2=4;i+{pAmwpYo56_gj2&3ettGR_(fB9vb@}0q;BYwuA|{x$ zTOsFo1&P}s$YsDZnUZ6nxx2edUitkeiz4RGXC8qn^=Y_$yCX@VP;_Xu+EoR3<_~fObigQ@qh90Ql_WpE@Wk81%;SH zXJ;o(d2bmU9D@G-e$pc_3}ll`B_Z_wHRFlgWZcdg;<-oWsE>=KlSGJPfyIF)aAMBhL%g>2wO-BRP+d zI~UmTM(p@&%zwtr+b}q&w^}XR(QC&RYUp!5$>B~YWLmdwEs?8K2VuZG;;U&;5FuF( zp#t&xtgLJ^o^nnb481#Xd+<4`UWH?v{05`@&W?_D8YM`){7K&ewnd(3{6Ul?41THj zoE}Qr+uL{Gb!K}?iej5yul;U8;ba3{woIt5u0AFzDt{`1{>Q`c=2yGGY#CoN!5l~* zIW-@ESSW&#eHX~CBT%VS-{K%1cR1|1zau<^lZ{y_l{O_NCS{R5lpyn1ISf4wPJ9mp zHm4n)JG=?jC1k=Gr4sh<-!CgDC^V#|rZwAa)^+Ir7AhPU-Dx6H2(f9{%7YGEDc&Y7v z3zx~F@$4kx%VA+*G>wXigruZI-cF{EATn}k?S2aY>8q8)L3eJ}Xf!$)JZ){Nt*!l4tyVL+xw&{8|NjYhI$hA#)&>Iu0~qFA doAC@|{|hlopqwROgNy(G002ovPDHLkV1kA6-Y5V7 diff --git a/resources/icons/styles/router/Green_light.png b/resources/icons/styles/router/Green_light.png index c6341551fff7f450ac20ef1a780cb41b5fcd2af8..752876f2e6c48f8a5034345f822e07dacbdbfe0f 100644 GIT binary patch delta 2683 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 delta 1518 zcmV*&n)y{^i`% z1UHmyPXBV7TcT#JFikY>3pS&J4VZvH1cFfn=J+m#7PesvUB8~^K6r11KH$}r`Ac5j zx#!+{?(d#=?z#6qil%8Ga5x-ln16#3zR_`LL--1QVrIB5G$|E|A9+XoX&S41(mOE%anTG;gEWy8CeDYPE>% zFq5)Hxr!8?__mL?!}y%R=GGPm8JY-i`t%v5a{vC<7L~~)DUnFzkE4vuDSuom-DGUL zo|}W+Zdam0x{wa)2mSo~`WgOnE@{<%ekkcr)0q2YJ1lUi^1Jtae0<6%i^Z}bGeebh zJ12~HqKz>CsmkOd*KgFGqSP6xA>yOx>T%x2ES}%`oROhHys{k7)w7(5o0f7ND^sk( z_01>i&YlGdDb!&3>E&o(yMG?e&n&QP%}mdbV2mz14;Dc|K~Qz=Y8`$jjjNuEP^Z&b zlAoJ*Vk%M!zh|u#Y?y^IS*h0M=Fx8*IG~~^>K11lqkv9Ur-ME_93I$B9vde3YeyKI z5p}@#nduG9^*=*-dAXRl#gU$p3T*;Dryv}h{p{@Od4LZS(?V8|z<*W7U|v=bvf6~m zuEu|rN~P&!D&B%bA|bCo+(L11aBx**WMr~XL)hPm(b2$HH_t5?HL9ys)%E8qD?MUb z{lhgF8yoYBi;J`J8Yhe~*6VfW&cR}dmk$%u_aQs$1ri-3Fhsn@WilB_(qJrj67FIL zPoUSz*zmL9DqS_tIDh)>Z&Eq1GaPKw|9E7Wz-+aEr7(^R;D-bB;sBc%<7l{1m6pCP zK&t?oRqwH37Q<#EByEoejVd$xW0>dy3)pl9ER>J&OvR4w@PpVPs@PO2s}E3sX~5UVkynB0l~Z=FLS*dwU18 zw6s8CVj|!^3C+#Tpin5l-(Lz%O~PeYEPCSb1~}u1iJO^+g+h_Q$q5O<<=cI|?#5RF zlt!b0SMpzmN?nE5jDA(215AE1)cWvn6|SmpP$%}1Z3pJ4eME3exo#~Tj-7aD`U1re zFAcsFs&QEq2Y&_z-dnEWqTiDo?l9cjsxDtyckJjpw6lYrV-aGF~Zq(M|2~Y}mv!bBS{NIzjP=6TA_rQ>{8hph;0GB(-t|NN; z(82S0TJ5LkycAzw-+31phB(=nasRwEJUsktQ9&V7VJ?UT{q!UXp6#WN3ai5gL%9(U zBMF1!$3B8jj(;4CH?iK};NZrgp`mSZx!l4K$FMkqq+fk;dp1l?PJ(1Z5cDVbgLuXS zt3|$yv44kww%{1gE7SAKG+$3v=dL9hC&qiXeGF`Pd5Y<@LQeJ$ShHqL+K)BYXOQnj z+?uuIvd58DDwU9_QG4Q`l?PspT7GGP`no#Urr8R(c=PaF=TAItEiBsQ``O7;5FN7# zFsA-*s%|iuObl^tem+yih0FX3aJ#NyEWw>S{eN6pE|QfbQA^#20491LDS8mB)pc*jOk%d>CYM8I64N@!DYf7noA8 UOj^92NB{r;07*qoM6N<$g2Z*_MgRZ+ diff --git a/resources/icons/styles/router/Grey.png b/resources/icons/styles/router/Grey.png new file mode 100644 index 0000000000000000000000000000000000000000..63f9271183a22b460ad3839f88860594962239f7 GIT binary patch literal 4481 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 TLKBXz00000NkvXXu0mjf-dej0 literal 0 HcmV?d00001 diff --git a/resources/icons/styles/router/Grey_dark.png b/resources/icons/styles/router/Grey_dark.png index 1287e1639c2dff8c006f07d2c85aaa75a8b7afc9..c050e4b2b57eec8e93094b0a9b39be8dbb4a619a 100644 GIT binary patch delta 2251 zcmV;+2sHPPAc`g-iBL{Q4GJ0x0000DNk~Le0000g0000T2nGNE0js;t*s&p63V#TB zNkl43q6+Z91JDX>VcPF+JXW}JGQz!O}?W_e=AV?xmi&WIm+E&VtgsPwt zs`3K`DHRb^{Zpx|Nl~Evg{Tm!0!1yzDQauac%02iZO2Qz$IEz|@horNyvI4$p2>_e zu}vfp-{|ViJ@?&n&prENnx+Av!GBrzu_i!vo7c0O=B(aX_uFQ-+x=`~BgAAGe)XFR zT1W3FFhKydr}GBir3w;=S{!BqDzH|s=hVwDy>yZmh)8(v(k}!?XE>eC1}2Cfsv3OX z)9(2lBYrQq`OAd2asD<-@Ku-zm=fmyneWEuQ2Y3fBw;$H1J3ir4}Pq{oFqW<2i}f$x2mcNe}A#T>3p)uee$DlXc3y+?&Kyl9&bM0*w~D^f=d@K^fP*i z7ED=YF3)0c0pv&&a`Fp6FG+k;^S9j&uGq@Q9_NI?-aAn0aDc^XU!M2CmhwvI?z{<% z2nj0?x_kOSK$A;K1QKfk$+%MKEFOKp5S;#(%a=`GJ9;cEfR^zE!hff&truB;e?Of; z+@Y?v?uaOA-@>T{UFJh{nYSLM$Jg_=R=rZUe?R1BJs{Nsh~w7leWP%*<*z+qIePf| z_3IOyX?1mV_EU`~X9_L4q|O%u3((g!0&zt_C5TW~SqVCwp6mbvJzWsTCn=|5*KVjO zFUH}n#BKM;KEJNfljaIBVp$RR?hvi^DsR&j4rw)m`aW;2+I+> z3^gzVcW%wBsn1jhssB+em=V0Ek3Q3Us3<+S(^1 zrh9+WPN#LFg`ro*S7j2^^e{9s3iG4=fAaX+pTUUZu9W6d2~<^88SGYjGoEx1Z&QP$ zJfLvJ6oj-P6zOA4RsP)8(Qz%)VM%AKsi`S5>hzyfKY47^_g?-Xh(e~ z{^X5cLfgMuV1IUO;4CJY*V35ouirP_+C@N{;B6roXAaVAa%^o_+e;vhSD1MLr2vPzUH5t;Dcz{xp`>^ z9on-Uic3na;T|2UJMwheD!D{qaS0z3QB+l;kq90j@PA-f>8Gi1nqGZF%D2< zf8d2Vls3E=$Oh9K`Gig#W7nRi` zYb9SM$FP{iS^+*nBpmm`Id>)_geN1&3EtoO&CBR#ny?gh8 zAU%cteVFNud$WtnbQ=mbf(<(?i^U9C1|1lfghK>LpfF$BOKcUaFmhalupEbQREEIf zB7X$t=3r)G6c)yZB1$aU4w~>!1=RQ2+uLtERFIXo#~bG}Q9N(5*iWF{#Gk$SYq07c z(c5sF4l}6?HZvoEkBVweI-En~xj5Pu2=`CO71&skRc1~8e;d>zfji}^~>njh27 z!rUxRqRB%UgRPjM1>wFDvW*fn>~hec3%q*QAA0q`{)2%?G<=As{d%YK#R}&WZynmZ zJ)>eM#g~*hl5;w6bnq_B&-SOiM}n4OOC#a?R2nE5tIMs70qYXwPm9gIL_+~ng@4S1 zvfL~vYihFot>x2esK{gJ+hWaz>jcVU|key!y6TO|g8M!?b&fDQR*tX39h72Z5#pL)Xetr1UXhu_3 zvLQ^;va+DKY%3R5jz+kq7v|@9Wq&7-MyXO+C@ArAD+Lb(7rEtv3rp#TsuPcUh6Q2} zOBf-p%YwZ8JjlzortedgrdYC9FZXymVY6HT2&%p zEP4@GS!$$A40vfy^wVpA7)o*wRGGRJG|hT8t%8gKJ>+Cw?h~f}f5oz~1Qyq{KMZ%> zIGta;8*jNT<^Ip0phWljZUKG({GDOxYQ;Qd_I&o)2RU1}AKF%wv*xGBe;d?D^o;vq zcCe=<4%$&~M@NWPCa>2U!hgqM`cL0af++snV9Tv9+*$zzCI&iq^cHA6Ak9rhG?*M2 zfY8)EpQgosl-lJG9%xDNg)8`INX${&Iw39`5G3s@=+^s?v`25vwwdfXV8}9q!C(X( z76FMqUNE1C=v3tN8vS@}BI3NH3002ovPDHLkV1jdmQS1N! delta 1482 zcmV;*1vUDLCXXN?iBL{Q4GJ0x0000DNk~Le0000k0000T2nGNE0isZDqOl=b3V#KD zNkll3^1nm4EUPLz!|oX*L%M$8f7(0Uqy?eFi0hYvaNkdl&YHIEQ7{ryT;?D@NarhlZQ1gzz; z?SB3p!otE{XIY`dREJQ=j-moJr=NZzA|f7t{>7Iu6BCnWqBD-9QN0{He8z-^hWe{i zsu-M5i*Hy{djlo(7y0}9f5TwI=T!JnUhZ~Q0gXm8$;lwA>;#mup_$CIo#`mgH{P@* zpIXb4Q#N86xuXt%L1SOp)PE+^_V)HT3xz@(`fp%r>Q6{YN_vD7mttJbduVvL?BfRy z8cXWx>Y)5eh0VkU^!5FcTvJoa%H^LX4h#%5^W;%cFSA`;o$&p&Dp+4%-!(DeQrTr- z7zVm~dK8h7QE=?oQ6bq-kFUc`XJSJ9o`{VxqE^#e0JnPZc@@8$Pk-C8f^1x69JWM- zom|D%JWr0!(z&#>lt4~tFRZPtQKB?+#h{=dF~f*sZ6y*2^y`Czg9=M^Tg-wnC9$BO zpeZLOXIDz&;}1ex+fOd&X@E#K23(&_bZwdy(z;DTH#OhY+xd}w*{q}TV} z{f0fSPQv{B0<^aM4Bg#bAu^e)OQ}@8$`ltD$2&VaL+YV7_e^Yx^78UmIOVRc5{zn7 zFg`wR7h)eDA0V-Tfq@dHukR^DM@QR**npm%9xmm*Wpwm841W&~(}-Mj8yXsdfB=6G ziA3=1neBN}Zh+MjhdscP2L=XkUjs;m0k|jcDsM*a2rvx|4UnJz2}q?2N0$GVRBYpMUTzDmn*qb945UXabSQ1%KK1qN8J`@sv}kQVnEdsIzKSi^4HZUcu;| zO(z+O5)>~-aQ*(1n7OlX5gg4(=ME*Eot+=xbtWq;OqMw~sI1yiIBlR#PQu3X=f84J zO-+T_*;%+z{{v{XT1$QH3L2xTx)y{^PH-mo6zw{KqJN^IYiPu;b-J~dR3$yUfTZi^wE5~7eejYqLJfOY(F~r2Y zcEr!m&y`$7TTxLdqF}zVvI5i7)Bm+jGtkA%-Q69ktE&yq++P8D(}r{_o1C2BpS``M zuy3CazSIoX{e4OH^z_1AUJ5faGuYm7<(6PE9Dgn>EWnEw{9gqa5=ESFnlg>%H@;jT z5OBnfF1J~@RO*d!)tP^Gb93WTFE39B2?^%QY5EABo{lZISvUzbh&2WgSt4_ExfS6o zUVGLg2En`ehvMIYSiEty(&==Ruo{g<$KYuzy`rMxeq&=J6BieU$MOH4aJ_yVIyyQ) ktshonm|uS%j~;7(0if%kvaZVpK>z>%07*qoM6N<$f||v_Z2$lO diff --git a/resources/icons/styles/router/Grey_light.png b/resources/icons/styles/router/Grey_light.png index cbe9590e6e338767f61e72bb4e39e9c130585401..b571d53e7dfe60f08006f6f6f02689f086466900 100644 GIT binary patch delta 2676 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 Wq7e{S(hWBN0000f6Xi@@54ZTQ_E-Enz5K6$1 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 literal 0 HcmV?d00001 diff --git a/resources/icons/styles/router/Red_dark.png b/resources/icons/styles/router/Red_dark.png index 2ba7eb7aca493f5a085de1070b2015d492b1d1a6..6901345537b06e322ff776f086ff72e0d45bc3e7 100644 GIT binary patch delta 2308 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 LNkvXXu0mjfL4Me< diff --git a/resources/icons/styles/router/Yellow.png b/resources/icons/styles/router/Yellow.png new file mode 100644 index 0000000000000000000000000000000000000000..8d68b091b58150f367e134ba2d17da61640cf359 GIT binary patch literal 4584 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 delta 1498 zcmV<01tt3QCZ8Z7iBL{Q4GJ0x0000DNk~Le0000k0000T2nGNE0isZDqOl=b3V#KT zNklF7=CZ>ZE4YlkK#HrJ~9UdI@#iE8Q>z2n3*L@wz&!Zkj1zd{_NNM zMU1QL2Y+Wqmds>k!R$l#!zGKxZD7!%=oAnXTiOW-b-E!Ph0903@7{CTUR!z#t!o#b zq&*+^oaa2}ocF%(IhPXz0SI(DeSZUlVYgc@aWuzk1p6R}*uTF8xXMcX^4YUjAR0%G z0C12192sLZKYd^_9Yg-VpETt)0BR@0?c3K3)(6coG<){wg|){BLkP^jB-v=z-49x= zmZ2T=`j=NMmb*$)U~|SLJ7{x4ggE5@89}gGtw>_lR?A^oVG0#YQvKwwva<5V@U`tm1^auPc0tumo|~}4XPi!_ zE3(^dM&Ju1Ckh@TN^rIp6%~ES+3ogeTB&wQHx9$$aLiH}WL4G!N(pHu%e2Hx4s+kZ+}o8CJzGAw6VHi`ZrIGz7MeSQ5U+_=W*deK5FD)b*; zyx7xuXXprUp3O-U6FjFPi~487nKM5MCex=o$HvC`MDnVtSA;QZFTmof0DfOe#3J|? zpy{m*(A+d+-nz94_U`?FC2JVK>4dkl_vwgZ@EAr%?*M&!u;jrXwSVbk-k>DkGKv_l zu%4+Tn-|H^SO%Aum){^pnJ)Nzbl)s-rnqIx7A40iYmy~mm_X2Gvzeuy#ViZ@l$~vD zZI=%oJeZQwy1E^3{ra`6U@+*FBqxe-hc6#GbO;hTUMa9L7xec#iFFXeU?j=2vXm?5 z&!2n2$&<&gHHK4*U)d{5571 z9G23Ga~_Yo1%Iv9wO+%7`$-OWEX&<&YHHTDw;#jFPNr31JaWM8$$r~lFwWsA=ak(( zb^yae!c~HvO@rhTed0G$%=7CcED?OA94i0{Z*O`{`a{Ydr z&GP-a!bt#?$=IIb$3K_v-n|-FqH`*%~}`0{;)X3=Uko2hFF`UZe;??b@~oV_+oCxm|xRfcuyR-0!q z>d29(&3}_|6tYY7cFL$OfZ2Q*=I7^k)YR0jU}*jcL-QV7ai+DeFC=7LVi4p71~*2m=EHFgZDiXTsq7c!u%)3$bj16pmG*6951J07*qoM6N<$g2>U> AX#fBK diff --git a/resources/icons/styles/router/Yellow_light.png b/resources/icons/styles/router/Yellow_light.png index 8a75a87f041d6e9de76d69a4c9535b733fbe1b0b..7a4e2bcb437a17b80a254f1679a4240cb795206d 100644 GIT binary patch delta 2758 zcmV;%3OV(!Ab~0&iBL{Q4GJ0x0000DNk~Le0000i0000V2nGNE0qboal(8XN3V#Z4 zNklU`Y0{;4!a(wjJm|CW_^MKLjBPp+7;JvcWB{S(O+nlp} zd2bG>b1>@{8QGJPIx#k?1#VG+syaRV9W$_L^XBC=?-Q>d7}@Ri7?n!(JUvFy_!;s^ z4yoy#z|=tc{CQI0XC|oGi+{uOfp&dL><-!L?9!p=KRc1RD2o$b*)WGDmdg{qF1DfD zB4K8N66gNwM0$z_8kHNFbJn2DbXXEJBYM1Qu!$oAImD0$s(x_cAbF$zV9U$Tlb=Nn z{RcW{mKKqoQ^UeXH8^%QfWBSxoUJI*GDG5+$1a$A7hlEJkB=z_3Tx zM-rL4^695zgpiPsz^JG~q3il}XYLm{n4Z{%K#c`$UEw%>NQ)gG>~Y7$#K>Or@pDN@ ziIAL}yzgLs{u6n7^AI+w9kXV;G48%zgaz54P>AU1RiUxfAK#x>qomM*)YOG|@uin6 zTCH}mLZLX~b0*c*)qn2FAJ*`TlBxg;pdabLl4Wj8nIs@SP6?Nb(n0XVnUkJ7S{)b{ zEh7GRz>)=(H2PiudU2TL(vqiVvJ zr>jt2>BJblf;JQ|GL-l68OKS;&pnQha`#pHq3)^z-_{rBEiojQFKo33<(na;zBwT7=4mPxtLRd%k8D z-hR0pZ~SR^D`XlCBtHN=lgVDr6CXnHiP+TyrK`!3Z^*hwWWg?%D>*AOy~KE+OkT$_ z>(e3|LPv0zJxv9zhNHmeymBv8J8|iXi;4)aEL{VEVmNh59a8h^urn`Zc4pfC8xau^ z{z8$_=zkT;NJ**tRE8gJ^oscMs9hcl3*j&?NsYo1y9}69?-!ugDP*C8>DO5ov2xuq z?XC|G#|mX86EaeUTI{doWrSrG7)$M_Yj9&mf(lJ-Zm889`FnVGO`FMZMKDnPM$LCRR4ldU#CWUoq*r`b}e50{gXut zlFG73sIz}FA9N#x`dp{eso&YOiQzMM^sqC9feP{c^f?rszN(4hw}LRHhydMNfei+O zj}^DXr-j7RC=9lHk+r`*3@d7nwrqu+=Q0q7MRW5un{uZY&MyB3V&n5 zYnj!=!NI|Z)JHLFv%D5KGchNg>{nX1IY1}hTAw;?jP8-@vx`L4;0;D#%qbI(3^k-4GnqQHg6Fkw6|ME1P7a|K}AOLP`b<0g0izKEt>%AR>*=mB)w0~J@x%>1i4V{!6H=)}F6b;ammXr#Um7o_CyM3X23+=tnnJK}$~$Y~bQU za9Uuc5AK16`tGzBu?fYA;t}%wz#$V=agdYeAr@>nBmn>hecpdo=1B19AC+ z2z}UCJid4_o_|}F(fs1G>NoTA^LK=XhPnr@8IqWTm8es z!&4}H*exchv$Hd?x~f`RUw;MHu3bZGOA9(XI;q#N${m~CPTd;MZhi{(g8~8q0uUY^ zhS0Du=tk-g6B~orxHue*gdg M07*qoM6N<$g830k#{d8T delta 1514 zcmV%Dz6|RiBL{Q4GJ0x0000DNk~Le0000k0000T2nGNE0isZDqOl=b3V#Kj zNkl#oXwGo#eVqFrY zq@=a_s|DK{Q|v(NAGOME%igdIP0{c}gjV(~4A4pkS%%?x?j2?rm^aJ=2l^#%-hJo2 z``z!Jd+xdS4$E;I5NI@-7+8i#B!8-BY3ZR0CxR9HajzO!tnn{6On@N*0s&Ys0aC+= zpT79z=j&Wj+?y+(GI%*mGHhaU5^#{Tng?mtZ-XE#ID~7hd%*kA%V|DPQeMXBD$It5 zgxbXO$u<~!bSS(`0=+*mPsdBhGFcnmC~sWYc&%$t>-#jnbjE# z?|fx>VIi<6p&Fl`H75hV>wnVwSqFSxh>naBV~m>ZhYrrp&QMxWUXSA>Gqmd?bZKcR zD>W(ke0-b=8ml@56YCHi85|Rzkjj0Soh@Zq_LiO;qkv016awWxjiL1U4HFYIRACTV zU4r=d9~(<66_A&gCn9dqM27E2AKl@Lkqx8bhIZI>vxi8fF)d^U34fer6sxj=kl7}r zY)F2`&dx59bj4B-i^b&jr%@>O_xIa+dU}QlCBphk7#)p#?^d}5qefa@TGnv2xOhWK z%PK2ibad3l-`{_Mmz*fZSZ|PDxdNsVFTeCj%rGyI=pcc?@RECZd66Uyt@Tqlqwa4= zd28($glWTX4ri(DDt~hH+ZZLT#ZSPOgGK{%BY3^Hl-p1Q_{c5EPsJ(ZigU#(Wd>&FQ3`q|k$rs(f`S?}&UUyu*% z?CcyI$;^OvvaM&!5sAlDHx?(qc1g@MBFrehecNl zHNGCoa9U(IIe$5s&73C3lWguV+;5luTC(%Z>C@opvH7$k1P@hKFh9Q|p}Ma2J~~s5 z+xesDU6Wqr6^<1Pap5|Oxe`c9Bl*(br*qRg8bM&(Amc4DkWCKG^GqD+3>1C@NBf#t z;bZ~Do>qVM$*1Dlni_b@8{pdIe^Bt>yjyCEf>T1#w|`1(#u~z7>8^_T=;IStlT%X8 zq4UD6t*!4G2`39PuAjFC2M3=|e=Uu^sIQs@TkDan7rX`xEa2u~2zm#7AwBa;`1#}YHA8XgT-*>WIrsbMW9kUXvvth>bYgR zVT0VNJ%0tG>oLRsp6{C#+Y)#_(TRHnHGFWw2NL360!K&3h~KJj&Z6GyxHPAb!`_PM z&`^k$#Xu$Rw(QYBdH}#?hXNYv>*1g*7I5+=9r{ERlGDw|}=c3=a=OUtho8?&0A9yLU@qWMl+- zd;7M`&IjIfI59B^ot-PEL_Ba%;Y#HMbaZs+?U<@4u~MnrQoCT`#KT0a4z8{)dJjZI zMCk2qZf^AM?!L8l!NM{1&}%K+++69k-F8#L)p%B QQ2+n{07*qoM6N<$f(Dt@^8f$< diff --git a/resources/icons/styles/server/Green.png b/resources/icons/styles/server/Green.png index c31c4ccd1473ef855989d514dfd492276ac74059..c478ad0f1af669154a1aec35a512a8ca24b911c4 100644 GIT binary patch delta 893 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 P00000NkvXXu0mjfG5!)i delta 1074 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 delta 972 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 diff --git a/resources/icons/styles/server/Grey_light.png b/resources/icons/styles/server/Grey_light.png index ff717646a1d720e6fdeadd071ae50bef17df3cf2..2908d50d661526170a1ffdc9ba4fe650a951feb5 100644 GIT binary patch delta 1227 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 en8ij!j^5wfxM{^ec6>6JPxeKA5QS#gO=K z^w}4|H=~hD0tFR8B6qOddjYyT?rhoZZg;lr78)?|OSaw4%zpEonX~7dDZ&^-sJ%^s zV@ym&SaiF)EjjYi$*7HjAY4b}W`Aoh0eUEnKNmN3P1Whf-)p<(#%!SWwxDEa(9fzg z#1e;am=e=0l`cRl(LGs4QfcTG>H%$R$6@);ex|`R%dM_pa_Fg(&+Z_$GYkXa!FX7C z>eJ+cMy1E2ULj*{J{Sh+jlouf%Bx)3eQYF=_%O76^vefx2mI*6=|GNAtkMWt#9`4}3R&&|+SQm1d=Gh`tp`?uM!wY^jMW=vjZwgAxiR+ z6s^Q7I{?e19Z7OnxjzQ>NVF!2%1%Oy6;|k>k%X>Zg4RZ#a-X2gMpO`;JmRdCOw6s@ zQldsP1If+yhJp!9N&4fo338=^Y%ok_=QIK}Rs6$ikSm#GgJmgeAW7*=hUMgrS!xECBUH*-!Q#fA)@b#1 zsL7HnVz-b*KpR*HPJeF^`#PJH?;|-cq$HXK49?@&sPm%?!SLw3^36LPfXe8?)O4TI zkq(ka%4OSxVxbXa2a19T)C#c}B#$s6VSRd_gKK$q53v<|QPJ5pQX+Yp1G$mZ6seCJ~Lbo{|X21yZiB kh6fX+F+DFB^5>K9FRWZ@XNIQCF8}}l07*qoM6N<$g4Rm-pa1{> diff --git a/resources/icons/styles/server/Orange_light.png b/resources/icons/styles/server/Orange_light.png index 7db2ffeb2c6e4af9b27e3dda3d93b18bb4a6bfc0..1850cd7ff5f5fc34b2f313292519a4fe92bbd13d 100644 GIT binary patch delta 1305 zcmV+!1?Kwb9N-=yiBL{Q4GJ0x0000DNk~Le0000Z0000n2nGNE0Vlv9U$G%t3V#I8 zNkl<1aB)F|neMiWS=mwV*|$B0@kAeDNi( zVnEXeQRss|XsOh{>O;}=rE3JWg_438O!PrFNy(<^?#`y0>}Gd%XS{c^JDIzCXJ#k6 zNsIU`!`!)Z=9_QsJ@=e@7OAQV_gzuCP9a| z3lK2ipcB8SrEh4GD|PgdPDN2pQdaVry@RET@c2JKNfCIilDvwJX#cmqzJ6LuGB7&O z$P!90bY%q)9xAT%c7MPFP?Vlt%4$j=*h#<3-{8~R#E2;fxdi4bbt5EjWPg^xcrEZe zZFG3wo%G|oTeZ_gB0QhZAK-cZkjcl%9LK$m3SU0-L&3y?fIE8WBj!XBocsAtIQZxu z%}$>ow+B&Qm&+@aUzf|~wSxuSsG-ph9-mvk5t~m|8l@J~+F{Am*c1R?z^mVwpN&@< zEhd(=!<30kL6B(jd-NOesDDHo1EcsS%ft6mPtV6w+BsKH zAg`!Q5$m`DqYT6Bas~t!L_T2^(mu>z~HP4u>yR5{ zbARD#WWek7&VM2-`HT4OP7WFB}`bWBBc}GoetZ72%QC0fGcA z+{Ox-i>0&-*WMz6SS&<1{OjDAhv`TJIyyQ+n=%xWk?ZhBB&M~ersMF$10B#L`YY@< zMND_+R@mLv1WTD5UaQ`UGQd)dF@~2=UguQF+~s2frWleY zn#7u87!$mSznF@-o=n4nL{Ev^?*`;{IeM{*(_H38hUz0e(`B-kV2a6PWk{uSbZ7bX zIw6$TW_Dt37TA9h3OsmB{vfLru(kqA05GzxM@1ZjyjkdjUe*Lt6V^=#i@wn1KfA P00000NkvXXu0mjf?^c6I delta 1055 zcmV+)1mOGN9_Sn)iBL{Q4GJ0x0000DNk~Le0000X0000k2nGNE0nxQUEU_V43V#FF zNkl8X;0Gq?ESwN@+WFX4~EFc4xM`y%0?NlIhOQ&V2LD*|X=&RLJFWfJ+z( z;5g1D6bHhx$(}NM&|L0kBd$ zNha}!;?!8d!s+8huaHS5j&;F_ek9gYnJjf6(PtAZY$fwQHcTmzqM3?hYOL2Vfkp`q zK~M2@wt}%a9Dvf77k>;zb|sd61;i^M z5LK8ZP`(8fffQ(4+nmtgbN~&K>szq*-ncwMSFjz7i^V8RFM&y*mkLTj60n9qN)`XG z4fK*(DU>-)CUDsD)hvF97z3pUrLbX z&YT$#uNj0O%gF2YLVs+e+Thiv74hn5uz}S^7bc~9T}RqU?uy0q5-NpEP#P!<6Oi3X zrQmprK*IVWT6;Z=<{t`>3YQ;M3s~&H58VXbbN?rH+95n~XfXT!LDlv&1)NQ?i;r>q z8R|qm)1JCdzPcWQFUuQZo%r$Wxj|@js9#^*Mf7wu!>TU~;eXf;9PM&x1W-l%_HRQp zq5dw?I96m#PEI~vN8uADp_3F=(9($T`Xibhkj27l&I;u~0!${Y-iDE=Fmj}$ya*by zct4w^Z|iD;z5OZ}(1Gftw}!l)Ec}|pBOmgu8ROY2w-=otoJ_Gakroge8@!I Ze*v*SdF_PL{lfqN002ovPDHLkV1nA@>8Ahy diff --git a/resources/icons/styles/server/Red.png b/resources/icons/styles/server/Red.png index 44401d3dc23f2fa6cb4149c227dbbc7528ba0505..91efbf9b5ed32a1d42ec05c2857659b09cd6b28a 100644 GIT binary patch delta 882 zcmV-&1C9K^9MT(*7YZy01^@s7bH9oiu_0Rue?dt^K~#90?N|R!(@+#X{k3kTP{v?@ zpn@@I)F>n>8lQuQ@j3k82k-@a15y4nkwg-s1T~B?=*CzbY`yiKcJ0>ou4_AnkoYC- z*3)~xdwT9U-@R9~EDJt8e_4kP#Lcy}Vok5AqGUq5C4h)ltuO;%5de;N47?!FyWn)e ze_QLU2_6UDYDbl>;p4Lx-Uzm#QPWjI4Etd`zW|~#uF(P1ZVQg*0WZ&Bwpu`lX+KDE zmU7fo@2Fxzd|+u4TYPGmfS z-lUT<0<$wML|SmB&&Kqib#AiEOfU(w=`s743)l&<;N;jCOi-&dhVx)HUYG?qJO4df=TEODR1Pj$d zT*$c`$l09t>=B^$A$WlR&s)sSxN<4#1klfB5OlOr5O_)wtO5saks-lkudw#QGzq=p zeo%@S^d+#>8-c0;>=?Le&LnWve_c^!kg{S(3lP;#nPUu=A3XLGxG+x70Pu>5i;F?j z`V))5U7t`7b2JVtxMdz01JuKzH8BZ1f~XZV3`Q-uE9^CnLDU`~2&Nw3<}sBA?^jmj zyf%d!U3FmV3x;KqSE8mU+DHed@}eJ>;LI@SHoX92+GO_~&n*l+iGxtBf0U^MW&6L; zIEBSb1~NItdp~jqQ2TBDN1^4yDj9Nsb-suyu6|%`M0yLbuLCS3EzTqu`4l8}AYYt! zPOSgR0lmEcKL;)qAqQkC5>}sm(Xim+=m5_PAc}son896Z!qMnQoHqluI1c=2)I&*# z{aD@)0-g;0JX~nijFkg8TqV|s=H==oVPSs379$@lJTRn)0OzM?&0@%bqy68Z9LOpX zNOH1ZS#bfeKr%Tf6m|Cc#ddq{-|w>DFlv zd{Wx<ez_qg~G|sD*K~oh+FU!kRdJY^=iIWfrbamx^ z9{{Ct;{LN2T?aS#a|lVIdEaWtT?bWF<(az+X)XgC84e{ry%VLmh&lGC&94CVYW^P#@H^d>-7&6R=eRzl_Qg#B8Iy^VF zDR3rwujnX&)~l~u-|?6A%??T1{0+%LkhIud-FQof;H&Y`!4C+AB}mQPBD0O61Cy^4 zje1SLbOP{@y`6C829v-@p7B%!f5PJ-W@BTMA%tMz>2tP%N~x}2Ug3KPTmrZB?uo!i z|MAH&kT`Q-Y;*THDAx4Lw}N3|61csfE&y5YT$AAZw7bTUs0gCO7FNkOy6pu76O+?+ z0wWu>OM|l!VksCFR#Nq`qY)A=5+rBldJjn{hBRhFD<3k3Q23kGzeO+S? z=OCI$+6fHEGEpEaPBRx*H;HaV#2|w7u)QOs7WA~fy}tR8%m@Dl?$V1m2&ct7lygVs@7oU^>8~XNBNq@)O@SiIWDnH!dZ52^rhpSt zRyXVRgc_2_nJUQMTs&yxf6!Myv#K0=E~`~f%?-#E&~7%MQ9HNU8r~DUEBdn_SHN}S z<_SoUBUCJza#(3@RGqE^fEe^1mf)n2yHM!{!x*sWuY%N6jl@pd-hE#=!4<$ln;Z?> zO@7^e8Qi=W81}4iWdd0LwL}vVgd;&;#Hyk~>DYb>A36rkP8#|(OA7pt0Z%dDc4Xjz z_1D7CG2r*e;RiP_24bXuh(zNf>CDsXSQ;A#7#m6dOyJGk-8@`lHSEMcOj}R?j02*3 P00000NkvXXu0mjf{ddx# diff --git a/resources/icons/styles/server/Red_dark.png b/resources/icons/styles/server/Red_dark.png index a9d2ee73045db8f193e8e6b47032ed3768a28ff0..992b21fac1e9bfc03498d9e94b533540d4579f79 100644 GIT binary patch delta 1097 zcmV-P1h)Io9FZL%iBL{Q4GJ0x0000DNk~Le0000Y0000l2nGNE0rB1_im@SD3V#Fu zNkl6E|tSFk?FtPcq)JwB?gVvB%Hfe17xh&71I=rh!7Ca21$X zU0waoPft&0-UPzm8l6uT^MFSeKYzY_1{m21qq7x0I%j8RuM!=v*Z>~2ythM+$}mhj zkB5$_sVVe1MVbVJx7kYbE#ebRpn*X)M^Z<{5WcRK>-6!XqTp`C@+?&sHp<<&O+3im zxMW^I;jJ@h1y`?E_~p5~8uTl52p|OLQ-iRxu@2HBqm-$)02?>~8-&6<;D3W0e$em< zHmKKRz1cFv1|vX-2JwTf^#ju2a9`4!EkisV1;Rjc^8WtXBMnMBRlQLeTIYf=Ky&fz z(M@e}J!WgW&KB4$Zi3N?YjB|&yM}KPF@Kc?mC^wwAV?0j zi=ZYMi7_J5w;Tyx3&xTKd7 zokH8w_nkZWe3l7^-$w=Yekjllp?Am%3(8ggE8PDcuY6ir;d8lM_)<2#{#;=>wgx>^ zI~5%U7;ydNNOgI>P`Jm(<8hJWWsa3Q+XKBoRTLQKzxDkjHh-7`$)REVEX-=Cz)1Ea zT-{J9?Zd=;s9ztzJvf#~fG7wJ?^*V`e zV~2hWq6$H0gMV5}O)m@tU^e7v=C;sO4IJ*16)eNBu-49c6C$4+gL;kJ{aWukh4tL( zD&#Cc6@uIc&&7Qi(3eM0%@>J@Ed)+~=GYDk6C*izcD<=$jPyyw|?P#2WvNHrB0y>Q56QPr5=t>eQ*RxF{1Y$2-#*^{Ag{= P00000NkvXXu0mjf^4kx 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 P00000NkvXXu0mjf5 diff --git a/resources/icons/styles/server/Yellow.png b/resources/icons/styles/server/Yellow.png index 32bfcfa535b912a51500a0f791e5dcb3c4507716..b4b86ab52a635d707a40cc4a7df468daaab252f2 100644 GIT binary patch delta 936 zcmV;Z16Tap9ETi`7YZy01^@s7bH9oiu_0Rue|AYkK~#90?O4lh(?ArxV^8d)P11&_ zFDkWCc~#JgO<5oWVhJisir`cD4)$!35E2`Zkk}x$ut7uuwW^AM(uNYXP180Hdxp7o z?Zolev6BY15=V6!kH=?@=iYl}9LhNdzL(#FBhdX~c69A0r1xq%Wb_(PY`ru?!7xpr ze=4;b5|oJJ=ob7aR~Wb)__4fZG#gm?j5~tW@Z*<}UN33Z$@O^#baG6Ek-T|yorsZC z0x7lSmcuHChQY0qY+3=jUNm8+Y!ACIuK}%WW=01G5=Cgk>URUiM-*Gv`wul(FS7PN z@aSF&sIRpR$IyY5bKk@R=H-|96EU%5e_D3w*{eeo`Pdqwu-pKQkOPHqn7>Gy8a^-M z^cy~wxr+(A!~Hu+5z^)bLI6~y`v7|eFm>KtCat-`~_l$W42>1aYOSrj6etq}=QU^GlwvlLQ-^w1z+e~sav zM*(B7Uq0weP}$w@O+kKKp8rfJ*#5oUnV_^;I*kf$T?1;i#n1x`e=u**iA;K^ zpM&GuK|#1>X@|kg6osjY=2R=3O!geaPWZBFKw-tU>y52CWNzw^8QPg3>1iboQ#v1R&_kPzII%Xhp% zz&hg0TTPgR3v(R=NXfXpsPqFTF9{dsG+{>Gr)?Mn3>Gg0Rt{)ho=8UYu~7HrfR@zk z9e)g9#11RoB<$LV>eae+^aCd^2fBUb?@53Nm;A@OK7(_@{sNT?5=NYAX|;X;0000< KMNUMnLSTaYK)Y}N delta 1020 zcmVXAxtfubUDVf!cW2ly)paYcv|R9ukgfu%xKTPhZ{B1xO3Y0{*L?HR^) z94{FscDg7BKFLw^^5&aw-aNl~6GR9BxzINa4WRvO-|1LXTxuG$4~z*o49n|^)3EZ> ze`ToE!7|i$64PJ<5|K57ZopIrG$!GB4$wvhL#d2)!=(uk&}LSJzd6-1$TD%xQqCka z=~-|=a}-6+(Dh-l2Af&z_JJq!5yPP!f;ogFvH87TlMM$oBFHyp&_e52fv%qbs^nwC zh~rZ%dMRE0jv}J8!TRyl+bZB<%3I`ve>)LNReS5VpQpl6Q$})SHwG5KYP@6_G_ALxF-V2ZC*~`@TBA4Uhr^2a{w~F>a zQ5=s38Svw`0*gyB+`A<~Jjz>Zu%~T$aDX`&V+@5YV_UVsx&oGCKD*;v5tAT2f0XuC zkSla1$Y=7w6+|N(^u;;D7)`Rh2?nL=+^{A=rAlD0+^90;-QWr)M-dDU83d)O$aLm7 z0`agjv6}>|v`kvnhn<#ojEx{C!R(CWSG7}tyU_auL3}Ng*j+=UlvZfj7P^^T-Am0O zPAhQ%@a|&``jb3dzbFD7o9I}4f8EIDG30izPM{$$fmX@vXcCykGoFlr6lU*;`H~5A z(GTZrmDi4PabJJ@BJdJC3EGu+Uj%0P*JBW2lbNr1kH(E(P79N#HINz6rDrq}$mE;kNX$ zPD%sM>ACZi2AAtR>}WvK_WkFz!fo@u@a&`}HbGZ<^V)dw{-HOq6PDLy__A!B=X0|X z^!Hh5dh7x&oJUZt(PFxbe_?z?a7@k=u(T?}_Kx$4gLw%E$L?6XK|oNg!i?y=e=;hJ zjyR`m5l|>%$ZWgsSk=aJI0%d$;@G#K6M9d;1SB@a)y&TXQh>s4cnnLXa4}@9AA%lT~2-g0000AxkZGQzG-8^`-0a;Y)jk)m9*xTFNK{Ujl&Y8W=E=Xjr z97o}C(a_b^g@&_ClYlTZY#9kTL@+zH4L1}Hn)e%PoAmyJ;ZR{CmSw5BOrz_U5zD%@ zbNo9otQqA-kPx29qoJ=nEa5r4Y{v8bOG`YdA6JPfujd;uTuJb!0CFnnSf zh#3)Ijtt?-3h;*l=7W{Q3Td#mx{fbLhKLY`Kqwo$PqJz{8TuIau5gC1*!T&N700n$h0-u_O=6V*asYsA4Ei2o1 z8{3yNxNLw)lCvlL_&+1EAb-jX_2o!V#{Z1vF+uX=rF-8XCD$&7>?HZZm=6Sr)13H6 zmGnjFxj_SC%@avO|C#nN*KbpR=T1*gPqkJJ_j-L9ty-9*KX&Zl#IyO!4A7G+AD+Lf zg_~FFt9YR)QxpNhKnp-sIDDaCNzBFcClRLJOK|CQ0E9~2yPio7w}0}muq2xV1j)M@ z5t6_3Su8RU2MVn~sOu04lEXJi5J9#S{Pv{I^Ki;faTs+(1vl7PpPcFomH?fmAYu z?+g0GSm!+}DFx;8Nq=oaE!9|26mzHrePZlfJS!;$CdnbK*fiCtrI9r5qfa_lB&jcf zF>T!`nm}{+PrU9Nk477qVDP@sD4wej?7Po$K+3T2eJ(Vu$Z%tPa(tX`YikQ0I9Rjz zc;q9;F~u!EC7|>6o$6QpvDhFl2tt)VES6P-D5>ybatnTH>wigm3y%x2fk>5%wtqD{ zlCFg?zbM1kggz-h%u3L{pMyx4Jdo{*5Hy|8l@HXX*0N$iKjXNqS$deQrN@AEuUJqB z4NhmNox-k!#to=KPWJdgDXv29tPnKS=s7~)t~lX;j+6qbkk)1nY6SZiAl3XS9!>?E zD&)s66%t9AB!BRQfZ^O93o*0>RmrRpP3W`2k;8T#s*v=WmSm~iq1(Uc6a&s-yYYAD z2+uLVmq{W||M*B3($UI6Q$6{{rpRf_xdV#>80}0I2}(p8>m^yIKT5WO#`_dtodWCx zEm^m6zBeL@mL_|*t^**6+AI>~!iGiS?@rcI&Pv4s3nNh^2Hqrgy>E=)E4nZK0Lw3J U8ofi&@Bjb+07*qoM6N<$g8ZonNdN!< delta 1083 zcmV-B1jPH69fKVqiBL{Q4GJ0x0000DNk~Le0000X0000k2nGNE0nxQUEU_V43V#Fg zNklrL8v*(Tduv)vn-$VpSAWgyM@J`XcxfeDlFKee#d^ zikwW=_sG6J!_$ z?Aw>dP{G7Rjz`A^den*GX|CF+D1XX+L{5IrI~^@pjc-3`bmQb#oo@64_4XI?1iFb6!|3)H-3z3F&Sb(%t@tBw=Q@(tjzfq;*~} zIDZ!cP2)yUb|lZUEoMHP` zA)LVyl|NC#KkWuE;dGFbwc#f6S65VT2lpI!7-nX9INhIQUL^B@G8tuI?8#JnU>bE` zDX}ey#W**;`A~+j*BYEVA%DU8c6+LwT-=iG+}z0|z!<~a4?E{7frrG6+5Bvr;MgSL zk<3LSX*iM%9XtrUt)n8eGCOmoj6|Sy;E+uJ#4fK`to!t%ERqB11nk{qpD(NQTWVAy zkww~+9FnnIndw?VsJfYlCaLdUBuu@@Q z5Pbe#U4j+ps#!&)Sbvg1?DrF}I!3{t8^kjMwvdWt4m6$4ft2r7$+kX@t6g^p9zC^% zBuWVo5GydwEcYerEL2FPVwr>yKZQo&5crKEG67kwGzwMa5V7^w7tR-UU%$4%wht`wm`uuv?NtfN`@J2kPI z{ly;(g7tkTY>62J);4ujnuxnhjf=li6Xf$#3H_l zP&9oL>_b&7rle5wQle1BrICVSNL92H(pJ)FLlV2U>}GFs^PJi4WM=p5>`Zpk7V!&1 z&Ytt{cfRwVfByfRMVh7oevZNo%zw_#zJ(HrM7o{7CsgVDWGpy@NMm$74=V@)0t#Go z;)%MW(Thx_BT70|RXu94VzQk>l@H&ZD}Y4`$5F@~bX-lG7o$H26tItM5P*mWFM?Jt)4O@sNel9sy zMPA7LyH;FhA!_7xJ6MRUIq^TGXxjkqn25F8wI6?xz$u8LyLwi>Zhs+a3)5qVs)(g1 zI&i4VF@YJ!PXo+f!G3y!6eJA%z76Akzgr?)K_+n`{v4ec8BxDG-vvRR*7#dh7#j}_ z4Zr>8i|C7!AHtav?g(JIR|u z%pggmRVWn8%gW^G#eb0moL|uNl);*EhC%Yjv;@}{RK0Dk)n*Xs#e6xXnBPC@a?JJH z30(WcmgMnA=u2=#^221&@X5N)byQv>*t7AuQy#ojabo@5_;2;mL=c*Y;LG zgU?|9YwvG9{D1E0*+?XE2g07{1tAXI;@S%N8`sZ7N`<~24#L6mDTTp*8@J}*>dXxE z_4P$s690`rD&+6eVai6K!Z6|G`O z%xqduk6sSPF(XUl1gW?Z;}*An05@|5Q0A8l`m>h! zKW6IT_VP?96w*E(J_XZrw?@FL&jLhxB6|B@)Pke&r%qX;00000NkvXXu0mjfu-atZ delta 1054 zcmV+(1mXM89_Jh(iBL{Q4GJ0x0000DNk~Le0000X0000k2nGNE0nxQUEU_V43V#FE zNklS|iutuMrZ^2!fS)%YO+rfs2I4(%e!Mabl8SB`e`bN>&I zTyZ(;Pcpk;aJeG2?drXq0+Q|y6}sB3c+F_y=r@(9-k5esK8$O^tmOwgo4H5^di=wB zJFpb=i2e?hFqhB-T&w{KS%IgSpEZ#ywwSQ8dFp!?T%$dJxTm_{}ENpYbvIz_%EvuPVh!w% zK*(2$KoKHjH*;CJ$%Qd32?sMKc5=ShH4&o!?*z4&eh?i~cN7y*+tjEym@(0FR)uq? z!uOR?;M4DVMU0Ml^Thv{*e`fQu-c!DM=RT55xSpfYuSJ2(008xM=BQguv-WOk}z)g Y3xf6Xi@@54ZTQ_E-Enz5K6$1 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 Y05P;4IGlp(FaQ7m07*qoM6N<$f+t_>b^rhX literal 0 HcmV?d00001 diff --git a/resources/icons/styles/wifi/Green_dark.png b/resources/icons/styles/wifi/Green_dark.png index b4d35e15e0d265de717fed4eee6cee563a52f4a1..2ea94345b11af96ca87cae5189289e18bae6f979 100644 GIT binary patch delta 2050 zcmV+d2>ti%Ddr@wdkTLC)k#D_RCt`VSb1y|*BSrb&dlDs7`!&V_5y5{Wt4iZgMYNSFQAKV42!$q9i)fT4lv<){s)i_-z#k2lalOXL zo?bigx$C`Vc4l6`H}-D5_JWs~e$sen-uvF~{oeP!<300~Qdoa1Jo{65cu%2+$m(39 z<@hyU>Z!J??A`WC|8KO$a5#L;7gA| zr~7s|68VPXoA-aq*mulyE;6UcNN59K4;B1Vea60#msa<5%1XYkXC84OYq#6|VDc+X zXY+##ODwhSQc^%{XlQWJ%~hf7y>&p+GFaajqQRR1U6Eq#qo1PEf%d{^Y7t=e$!5(w z_7m6p1EEkWk0v=Hb+>8?wqsX12**8+bgrR+_b0krJMe#L(GXGl$EfVZ_qxP^_IFAw z?oeUXsQh@%W81Y=;Z#?YN>h94p+>d=KMI9HzbsnJ*r|65w&Y^Tg8i1PIxoWTG?@CL zQ%lTKjvaL<=u!rxky%c+Xl5Lzcdv8DXCK{Uq!UI6gkk zh!vc)dS(|@YAhvfq*R+B-rZV{uM@b{FGqWNyR?6fo)R|9i}`OiJ5-0|9UZdeWm2Ii zazv>x*vM428`tqz&S~2%L}ss`A9XDrTM{rBjh@dlb~iWDe;!|x)XW3np( zvc}k(dU#_&UqV}B=6nKedQt;4UjAqt8>`s6<;*ZdFAtgB9{2d@1GOTx6`AM|oC^a# zJpBlU-ND(fZtkE0r{zWlR$v$i1gmjpSu~o%(de_ayW6G2_PUa`%k0F(bU0tNzkGlF zBv$Di=u-#9T<+<7e_>OC;qYP2o-WtLTY(h>cRX`n!xLjCFYL#!3k$nS`QgaI58Iyy zfh48l_}v!}4BUvZdT;HJb$;k4glT4f4S zK?mGKs<|w{c~ET&Yieq&^4EQ{6pw!kD3!PoZv+MwC5v(Z^I|X2_myZ^2KN z>KgFWRIRe@$A>6X1WL!Te+UgQKndxSBS}I9!p46$F%l^sildakT zbj6}0T5)0zGGcl12o|U#uC|T9&16qxBaMYfa5VMu*-`s zE&`9|ewxY+;#U5Q8;Kt?3c}}5huy8RlofYH+sdU zHCA@r(<`WEciJT8*Xh`%4}eeb)j ztInTOtMGkkvjbH0ajbtcpdX%zsFZdFB9Z6ZU2W6?prl|l zi)~e4J{MtUgEM!9phD@xw$sBG(>t9;*=fr+g7IRE1Fbnr~b0*>m8Lk1jdX4 zm-638c8jjs(vy1Lv%Xjlw>bIbjbMA_#%t_$i^Kfb?7x$_J{G~n5{t#IxH;!AH=1lz zYOO_mf`1x_O5ZH^j`V*aIKNdJ*gv&+LVkjNwiUlIQs7^bEFTVxjD%K#zhZ)Ui9{mr g;!o$@z*;Q-1tel#!R@x^(*OVf07*qoM6N<$f*cGGU;qFB delta 2703 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 JPDHLkV1l1!LZtuz diff --git a/resources/icons/styles/wifi/Green_light.png b/resources/icons/styles/wifi/Green_light.png index 6336b623ef016cbaae28227dc7036d257e259aff..9aeb5fdecc7cfae35d0e4c6e7245a9e2f2123147 100644 GIT binary patch delta 2560 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 jRU)d0yP%({>f6Xi@@54ZTQ_E-Enz5K6$1 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 Axc~qF diff --git a/resources/icons/styles/wifi/Orange.png b/resources/icons/styles/wifi/Orange.png new file mode 100644 index 0000000000000000000000000000000000000000..aed9144fe00ac503e640d33a98f82153e05149bd GIT binary patch literal 4183 zcmV-d5UB5oP)f6Xi@@54ZTQ_E-Enz5K6$1 z03tR-RB%L5k){YTDBysjLy@r}iiH7DvFijGMAUI`6dRUFWUU$Bym{}eS9UO(Z2>7`&z9wUXbV-Il z#&6`Y8GKGQ04S2&F6MJnWNa;Ck|;8QE#r9r;7G||@X{|>%+C|c55>;RS}qbKr-&IQ zTvLXPlM{>K&(BTgi^a?^4mXV>;xX8n8Ce|RasXz}{8imI52H3ZN4bf ze_i~WlJ|C&UW9+{8AKoW!}eExnGFE2re(F+`iE_46#!l90Z_aBhs|Iw0E)7{bq;-T z9=d#9QpDmcXDh4R++0fmpKB>E=%LdZt9g z$j;($`3&Zthxi`{{&gM}5&R^+h%b~yM9Zd3AWW9ETgVfL1(`yIK=_}U_z%PWq}jQa ziQ4!P(3V&Nr6C$XejWfQDiI(Fdt@un?|lo#M+5oIi_w{wo%_#%{(V=tO#a9gB!7-$ zM?^BX5>d|Vn*3S!?g~$*UQipUP zL&zMmg;!4Do9IA%up=Rh?=qPj=x&RGBx1dpI68aT- z2O}^EromdU5o`ssU{5#*j)WJ%$?!5bA1;Eoz?EiTr=n?cd`V|I)p<|3O zju?MT93~aB0<#&j8`F+Cg&D?-VWzQItUA^l>xvDRIYI4MQ`g1<+DyrL=EogS06Xii({|v`U^zjmmKqDIK93(F5q| z^fLNk`gQs{RV`IdRle#b)i%{Ds;|}NsClUI)k@Ub)kf6bsWa4l)YH_rsduU0(?DsM zX@qO!YV6TCtMPOWZH~(v?wpc2hv(eZgf-1HBQ#fN?$aF5oYvCT^3%%Fs?s{6^;Da# z?V+8jy+iwi_M{F~$4y6|vqR^k&SQoO!;_KDsATjprgSxR{dFa}^}2()GkV5)QF?`X z?Rxk03HmJkB>f%wz4}uIItC#I1qQ7Kw+-=zEW;GTU55RJuZ@h2VvIHzbs0S}Rx=JT z&Npr~zH34@aW`3J(qMAU6l2OVO*7qXdf5y%vo}jIt1%lghs_<#1?IcWhb_<+P8LFo z28$a^64R5J!)#@aTGB0pEekEXET35!SjAgyv+B3{Xl-wuZrx~o$A)4PXj5p@WAm%6 znJw40#`fA=@?77!tLJvleQsxN$G6*KchjC~A7a13zSsVPgQJ7Uq0M2^(ZDg$vDWbh zi^d9LZDyT!LOXdmt#&%*^w!zIS?qk+`4<X~g?%562@eae34a)26HyS+zks@6 z$%2*zuOhu7%OdYYnM6sVdZQJi6QY}=U&naIl*dS8tzuWkUW(I*6U24LW8oFzvR(TOpMEs5_rp_~TJ^wNN(wM(bC zZ0;`Z6P^ce2XB(^$}i_nB)KM)Cp}7bP2Qe7nc|*Ok@8f)7E}wKr~0SXrM^xJP1~RL zDLp2=Jp-4Km~m7{5vB?IGPN`FGKaIwvx>8%%bb_(Ts9>N5;bK**^9Ef#WdN^)PTf9 zvR*Qp{o-l7TcBI8wqSIn=gRt3(5j`Y zdRObOE?Pal#&6AmwS={4Ykw%TE-Wv6xh`g1Pmxy9nxe7we(PI{6^cd0H#WFzsN0Cz zDA+i-Y3`<~O&?2mB^OJrODjs>Z{}{k_?699m0x|@lC)*8%%N=0R?Jr6*6Z8cw;d=~ zF3&F?+a9vLa|dHb$&Qyhm+ZVyVOLSNi?B>BD~E ze(8aT1AWbo&CM;EEoH56tE6@EV8X%6-*|u1-NtOIZ>P7H9s-9XhaP{M`0e$>L5F*f zu#U8SXZT%h2eqT56Y5;vIn|ZYCGC#u9zGg)w718lr{jCe@An_mJyvsE<#^c%!il02 zpHAkVoIaIx>gnm^(__6$dheWxJ#(!uyl?Pq(Ao3ne9xWf_v}A;-u3*k3(gmgUSwVD zy5w-FbHIL};|Kd6ItCpEJBJ*Hx-UCj?irppeBz4xmD5+fub#UWaP88_{E^}7QP*$Y zNVp-r$-DXJR{E{yw{vdK+*xxMeYfPE(!GlNn)e%iH2tw%>L5Kn>ODH}V8MesW8ASP zKV|>)e!S=*`C-L`&P4Mg+egPHeJ3wJUif(YN!F8@r^P=j|6Kdbc>FRj6+1Ql zT=e|YubW?}zu5oM?q%PI}WPp6A*%+*CG+8hb10jaEe=rhlI~?eY;!MC80~k^<5JFT8fgnmE z2<`qb1`|{?;Uj@WjM286<3qy4fFHn^M8?*2Z|!^j?%R9iwS5~ew4CJj-gnQrzxzAq z-goYOt;q6BM=<_}I@}T_gW`=ABeL8e=$86K z?qK|kDJGP^qG~|*W=9~p(R7~M!$Xs%tUNbQR}Odh&Qe0^M$)PInQ2%(5d$zNgy;9z zV5;dde2lDBq=@&7BM_rmE}HpmCRvD5hj$Gj^dmGc_4fA7ox0}oP?q6v#CMod(hMWL ze`aN6c>+8$bX3DpBa%X=JttJmIVBTu*5EjfCP~&3XV9`ZCc~bSx>5@JmJ*J9Yw8RP zp46vPsItT1&k0X%7%=xYh~b*N@K}wbRmqz<5vi}{sdx!Z@os}4*DyYk|Va0Z0#UyNw{2wf~q0poWmcjXKn1YEtJv? zh~@^ujT))3^GBOi5)sdvgmNDe!wxa7O09wI4OHa-%X1Sw&t%^0K%5zDH+9)40Ix_M zoZmE<8aada?Do~YQ(aSB<+Vbf^MX2I*wZWo<6oPNH3eiMwsid{YJ;b^s}5_-yD(Yf zSYYD) zuzWc!%koZ{a_4!4JV-bt03d%BEU_I+hP^>C7>i^8MV=lo8e!UPI91l=fOnxBK?w{W z^gKmv+zDNQWEw_w2QZaPwb`BgHP)8X(sZ$<`%3?34P~Mz{6@4yph+5M=MqOtoPn`3 zPeN@6gSWF>cE8khoftMR40i$Sb(0X-klc?$e+_R;HHwgHkhjX4HgVkgIUX}GqdWl6 zHvqWvu7IJCENeNA$;bd1C@=G0=+~I{pqj6G%5*-WMzd+WuxZQZQKMUG(XDBICP z5$|KpKQcH5K$z73G}Sm~jDfBrouV0V?T7k>*d~ zaDBHZfLfNWvI3?87CRpnTZ)!nPj2G)hihsCNf6}eFJ4L(3)eEip?$s@n}fWJW-H1= zx%#F#o=n^Do*AVdDddnWr$1%qX~6{9b#W-%xSA?-3zAR?$Q3G+a1^w1Hon#1z!#E4 z+9$L|Z&)Un+&{0D3ij`DO|4TqEFbUpB+CVXEC=C~qR8!zK>U+&2}%*)Tby8je|$`( z7e71GDYDPGBKG&)7_hzBG|RIDj;=*nJcb!hDYu7x()3)EX4HkcB~ya9r%$BjA^S&G z$a7*KdfM38v+EH@ZK=BnH^?T8X8Y2OGJ>4+r$UtORAT7F!jRlYM$gG3`j}~D6Fx?B zWxnskRZ*!XN^^qvhzJer_wBL^N;`QqEAzr2n;pVAy?S>01$MNqVkHr2^zxK@b<{B$76Q@ljE8j|K_=RU4e8I- zS}ldWYY9iUQ<8UivLqnA43~&yAbedKOw66ocD~OQ=!`-2%6Q`}rJ3ttkGquPwvS`N zzC+paU&J!m5xmFIZWzP1N^m<_)HYk0+Y-U5V0*B$?VU%os@AQ0uDJQ5HUC=&(jC}KCX zJ;N$<>X<#E>*(gIJ+)4JA#R@H1FVnMJ*+KtD%9tW_0)A!WYkvc+bK$^NaKL zyTKarJFT$eW4^Nm@#45B`1(c@)trsfJ#wm4syX#Vfd`!(qU>uFnf{HlBXfri%E@%K zT3wB8ibzm?;FxqhgKC>gWn z;i)FIdI}S%QvCx32b&!rZq>aXfl#;@`d(Rtdf%^J-ro={9tQjx$RQDYkmue_(rC+p;9$lh9v z1f)1YY`19Nqbio;W-s`OtR`=ojPJ+Up)LuV?%aR5<>&*5M}yrf9&1xbX^%Eaj}<}f z=AZ=pS%XovV%>q7?L0@e2OIKgA~1flla$QCh6gsb-Czj_kco7|$5tdPze#zT(=VYr_LSAT2ok&v zhCzSq=YhhjgaqN?;nLRDR?`nA#O(O~s1U*L7pF_%#TX&n-Vy@(k|em)XoV8omlx_S zpQ&40v(SIGehD$Bd{poY*}_`4(nD3!_tjYd<&6aL|t!Fqn}5MIJb@9IEjmB<66w5}|7$Q#Z?K!AVA zBLDTjJ%USh=7}+DtR=TL1x5?-^VX9_AY?8HuYTJkic~7MQWT{}sdjCcDbdeO9n!~c zG%8hsDn2y$otv<+JwI+uTQzRQ*_xJ?oVA}g#<-kySWS8eU8D zDO`W3me}oc_irAO19umz(d0Kdl74@@p~Ge{+jnC#qhh5ZlAK`#H#Mxs#rhE9As2&E zwxy0>g3i@jh#BN#!kI-?t?ccWinPy<3Kd^9S~zIdc83gzkf5=tIhfSMb2S?SZ!!*{ zM&MDm@?82$(O@L6L(`PChGCXx%!c=XR?^x0TcZw#6w40m9FP~bSqEmqEi4t;~ zBUj9DL&G*;-)417%U*J54_bdf+#V?mO&`fl5v#6m2mxP7zdK_Dmr-3-XAnxNf47Fz>HR~{}j zS6@OwEqw&UW4LJkPi1+lrpo#y?J(N$%z6x;{-+xrJhD|`jFoc~RY`x_Y-$@#8!#?K zG{*(umXAfdPY?>IjI@!AZ_Y#?m@rc0k&~Pt1v7o&t(T<}CvTy2K|w*oo$=}t5O=eT zxWNN+ zor$}2rpEF?X~pfsxVe88NEm8!!3>#SkE?sZ2d@#h(S%~L*rkd4>GU?LuyDVlt=5b9&N-QtCU3}_>I-t80mtPFq?CUvFD*E3v}^UYwX2UB zit~;dO5#JA%sD9%Ua{kqW;k1Cy=r0EX?O12dDurl0?f>Nu-bp)Y|p~74jh-KoJsNn zYo_(@{{HZ@crht-yTM*GZAa%uZ5R98zb-cZ+`0?XMGMOxvW?6&g{{4DYM8pz5303&c3|~>^SjWYWB=H^P zM)>GU(`CH(Zt}MFfCMDy`IiH}q-ik*I*BPCmSwMDtZ32wM`t8T)de$y!LKJ@UTho+ zOZInJ9+|oESzB*at3pE)ai@o2lB;WJX{pT{$fAQ0&IdV`^`qobqq|01RCt`dSP4)RR~r7hXB-$pyb=ZDCMy`hK?F32RKU2g zAQ1sU@CdG25+y4bHF6j=1_KC)S7a+ItcuBQZCqDD#3K^K8#JO&cmOlp2GOWNL=bSM zr+feIfmsm(7Q3~7)uVgfd;Put{{M$u5CptPa`BIL|2xJNM)`lbVe-R0gYaWWlQemR zTWXj*d-e>2r*{RFvj@t`<}mUeF(V_RgoKG_j1!J=Z5nxbc{woAFfqXUAQ0zkB0qXG zi&3fU&RzdfIn~b9XK7hkS(*`Z>{z?1{QQg7gRX>ue_RQf{ZfRdX^@?La*#%&c_JS( z#_pYx80EDa(Mo?XW^yb$JP^LV(b%}?D_o6#8(SxvHwlj`Ag`z>Efi&=qlD|2hTWen zLso@=f;B9JrfMkW7cxd|h*VZqDorFNCJK=bIdE9tmP>Prv{9u}eR(r=dhDTjbeyUELyY>g@r{330aCaugrzZ&nroFZHMKdpo7ypJmOs?$_yDoR#Y;5f2up_7B|2#C1j*B#I>Q#?q`}GWijr6LJ z$z%|RR;%q;6;jClD|w#hepBD1PXB=e2W9?r?ijeEGa>p&cQVd}0uw@oheepTJP9{% z-q=T;xWowP;o&LVNE##ALzg+-_&LL{VC@!z9qE4#unGtdi=i(`gV5e6t?N#O;2-|< z;&1kGTH3ykw`@srl>kjmO#xnK02ySBZ_3>;eE4vDG_H{V_DQ3YNO!0i5r)q`TaDv8 zg1{AhEzOJj1wl4g0z7{Fm}H{SqwQ=>OiI<);~qhH_LzXW3(ePG#3&j^7699h-a}ei z%bR~>r+S|E5qy1p{-Z;Ys;Wvgq|5MimnZJnx^^M-=A+>9?)xaXd>(Rb1A*?z7b}Q~Vhv_1e|`vdf~T~(($9g2eVO&I4DA;u#^95V0AiW0y-w@F6vdq_PDNo%$s zIM@l+)*R~V>v7<~Ww^L_VsrRx0{VZGaX)uy18i+=I&~;qgY#Nv)L)P$6#ggR{GKna zT+BhBVlO3vzX4BZ;Z@+{PguyO1!6(?*Vw%I2rTmhA@F+0C#-@dZnFW9tTai~VN_HU zT3T9gz#|Y>QfEV->CsIE0wrtR>1FtC_G|biJ%f_%BzSpE$J*KJpx1L_j7EPELy2_x zI{Ds;qN1zO`Xlf4Y7n8V0js=6z}|mPTW;N!bj*n* ziJg^;^ds3+INUM3C=^1oAr~;O*%QY?)$?Fo07cShN>fSvluP*+F<4uPeJ4s_PGECA z?NQ&#WB%V2IFy!7Un$|{Ia_~pY_}J=?;+br;!`qU+{tpThd#OoT{ef|w6i*RwtWJH(F?pPzoZg6vRdoG0!@4eq4%Lp^=>n}D5k`t)f*k$95Pomv9f z_+?nMa1nX~>l09;QOi^=UScOlUKovM&tTQtehIL@`H*E0}U_k3YzH%^ST`#g{36jB*|GT2csw>UdbVs`Ay& z!rcgHGy9UYcM^0@Nw{Ouu%zG7#&Z24KjLp;Usb zF=4_4OmTCCY14lV=+)nY|K&=Lm|_Lt3KB4$?rjA>J!GqaUf45_*qb2x?bV)GQ${QsO1M$f;FElnb77||}5`*F&Qsqf{$cRzD zjEuwLoy31hRGc6jrks|*h+0cp;sow;V88v6uR9}+6{Ch?)!7s930Q#8+FCLA6^0#| zO_Y+;I8GZ|Sy|cC`CXSNCPuU9k!6&gik?!bjGPMLokw)lac%F8tAVkkY5^l zUegAeKOcdWcnm}Bt1VT{{O_! zZ>F_}jTT&fbeH}7F9l%EhG6H;uQ6i=Ie*Empp1<4121z{zZmR^sN!58vgW>855~*_ zLhJo5>oS`;IDh`UfnlD%*57mb%^)S`VA5RTBgcuZ;hvtJlovO_%E}5&O-q$gGRCt`VSP5K|)fWGMvoWmWAjRU#1w@ijF~CqnNfU8F z#GaNSZDweuR^r0)f*=wFQ!Ag6zLZc%6j4B9$w!hPI2tOD;zL=~XCgQn49g6&yz>n) zimbot{eQnR-}jw+@44rkd+#~t4o|Dq;%V^MA7!$OzNNlN)4_kdCfSeCzbw-+-%JsA zFrA#7m?>|{v_D;{+I-rd3FGxBGa@`(8}|GuJwyBVbM`#<$&XrB?8)w)pqH4FovkfO`~aaoCb%tAWA2WJxLR5L zDu=^4s_RHEOjejgGi|g0)2I`R=ghe%{nP@g!xN57j8%W5P=kme})Co{)v?#FL zimfp*nBeAywA56TMVg^_BNw%`wL+ecuP=A{t{nBfd-rfPIvAeIS(&+r9Bal}jEx&M zAl83a8!sXvLPNxy+dNKZmGft9a2=w+-nT^9_0?C1jf-Qt7~>vV$}~1MnwMbOgTz7_ zv#@B?YJq>CvYXW`%*@PWxfM#p<|wiJiBA3cQLR=lB(E${C=_Gc+S<4xk?1P*Pb1!e ze*Mj&wx*_jk-A`X!eQ9EEu4+ODm3o0v zsZ=po8Yp1bqaf5=KY@m{-+QJN`PY?Ds>pG}d02ln%?M&+j;{Ss;2@f13vd|`(L6=HrKhx+^XF?;AOtRw*}b>a;9ZtYwPy1FPc&@RI z|KP!c$0pD4^5VejvW_uItuBi@;5tTZ)M;o}y!5;PrJvAwxf_H-2JW;M_Un9e*1rcI zvfzJmxnp(uv5Z zD4I2jJ>_Fo%yTTe5@n&|SNysg*REebMn`aAPvd$O*a<$LU%o%Pl0EE)=yQ;DL&IVc zChu#^fY0+l(W{2d&CSmm85ymi*Xc5u%!YrW%6)n-AUEt22m}=a7DyT=&6_*dU)fNB zl`k1#iUS`aLk^nSwZn^Vw!ipoVe7gZjbfZFEW8*K6XV7n@*V}!F?-p2=FHQtOMXRK zfFW_jT_zIp8Qqp)iMBjSK6iCJ{GC!A9v&V`e%;hXAZhhaXNlda3*m$5%dkH;>EM4n zjE^hfd@Oz0e&hD!f;X(JtgLkco0^&iPj(%<>SDy;Zi6n>w&UQrHr%XN!P1Na-|<5D zj5p}gCtsL&*+IhUV^Osmc}V&1X{NIw1qS0Y6e^%=xvH6t`}_E$QS4Gj(NTqv*J>gVgb z$=JjMhmL=SlTn_KhIe-Xhhgw7nb^>@9Xamq*i$zi>Bo=b-#-@rLJPB2zbJq75uBcx z8O*-h4j-ni*lf|~f>@YxFkB_YhaV;^3gsCb ztTWT)Fcw#Csi4tlu2V4SI{s;a*DEXIN7{~9Imwm>xv?V&6T`5rhP47$Y{IcJW<8pf zS|l9Jk+WyLn?g@BXyAJ{t80JWqdYPqFE6iZYC{q=CdK=bv_*%bVL&%H?U&kb`5aG+yEy&KzmG#xX zUxBpqxBMWjyh6{g=;gZfxxHV3e|0?ktI?;$PolN8bqKA~>txVt$J2k(#%E?`;zng9 z8X6kVu2hnDC}VKhR1RGVXSXL+EEqa;C_Ftq@!FClb=KC_DHJ6S@p!xoe_BDRo5ZH3 zrcvo9POOfOjs{mD!=e|3c*Vs4zG5zXXHh4XVAjtR|0PO>JSWLArChN#McTHu{4Oxx z&ktK;V=t1yYe?bZ0V{t#^!2D9DfVG#NXU--tRvXJ%#3Q;t_kY@f!X5>bfnh& z2N6rhI-k7CyM3;>_?lcUcctynqF0cV`)J`SuWWZVsX%^k-=2Sx$u&4w)QV#l6?mlJ z!@L3vpj%7_~3>)>I}$6FqTa33k?Q6`r%NaO+&te&BP zi_@6V`Gv)|BO@c9Vbgu52ZgO9*myA0qk#L38mvufM0KMHcE`uVd4wF&4fh2LU@3oige7i5x;ZjPztn~cw|Pka z{)a{z8ykt8ot;{*APdSNL2=u*1+_&-52G?|E`2}ir`6Vc%rKL@X3PlWRvkroRPQ0b zKg^UE=;(pG40FAwV&~V1s>zclFQR$I5b@`0G}3~Cf*gB$d)1TUx}9R7P*_Wk-M=f% z#<|URYj1xbbPRdeqCwDiO}HjA#lCO8fxVX%>du~p z*xVc=sM=YzW)034<{{G01U^n3g&%t#+nL*fgHnG6rR9gtlXA)Z&EKzrWZ4P!FNffe zkhiEJ4NE$9Y$R3j@SZiR>EJsf`IFq-g!>~F)5bT3pOE%tJy5h=Ny;@L?u&SMdwW-B zW@L=0ym13AE-u_~WfS;xONDwXQRe}smfpJ?+4 zu}^CcGj75^0js*B~CjAbaE00000NkvXXu0mjfx+xsN delta 2711 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 R68ZoD002ovPDHLkV1oSNMjikF diff --git a/resources/icons/styles/wifi/Red.png b/resources/icons/styles/wifi/Red.png new file mode 100644 index 0000000000000000000000000000000000000000..a1781c396cb2d54da2146d669f9877e9510b6f73 GIT binary patch literal 4159 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 JPDHLkV1f(C_qYH6 literal 0 HcmV?d00001 diff --git a/resources/icons/styles/wifi/Red_dark.png b/resources/icons/styles/wifi/Red_dark.png index 902c813572d142a30d3f5f0e496802258e7e316a..9f5bbecf3fb842f74988238e3e2fe62af23fb78e 100644 GIT binary patch delta 2129 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 P00000NkvXXu0mjfCI2db diff --git a/resources/icons/styles/wifi/Red_light.png b/resources/icons/styles/wifi/Red_light.png index e3cccf2df32b2541fb36e1b6e18867d6012b9466..ed833704b1ab14257bf3646b8bb54c2bb8f2a514 100644 GIT binary patch delta 2521 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 N002ovPDHLkV1i65B>4aU diff --git a/resources/icons/styles/wifi/Yellow.png b/resources/icons/styles/wifi/Yellow.png new file mode 100644 index 0000000000000000000000000000000000000000..b38dfaf695c5a827dc9a24c6b3c718495a0be809 GIT binary patch literal 4227 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 Z{sRZjE0wbq6BYmf002ovPDHLkV1o4A8J_?E literal 0 HcmV?d00001 diff --git a/resources/icons/styles/wifi/Yellow_dark.png b/resources/icons/styles/wifi/Yellow_dark.png index 9b99cd29e74683ec4d7eb1eff9e213882cc065d8..ec45761b1d96c9b4cbd582ab27dc5ea9ffad0ef8 100644 GIT binary patch delta 2211 zcmV;U2weB@D1|1ldkTLDbV)=(RCt`lSP58DR~A0+y}TrlKtaR>NP=QjEK5=Rth;ri ztqwTWDWY|><5KIiRp%4ys5sWT&GfT&94qQj+^V+LvDS8~sOUf`mT|BysiL)#mw*cq zQ3)X=Z<%uwk_HnEjDFwz-*>rr_nrISbIv{YocoYTk^~Pz=KOzKAK`gpzD>CXHNAqh zri)f1`Q3Mz>hI1$6Jp2!4HTD}C{$~ z>G7E&8Wa?oDCcx<&MrFL%_Cn}JN9^5gpFHRShqnwq0(slhmY=RmD-+`u1EuhnT!Lo z3lCYX_zqqiAJl&=h)R&|LRo~g{v&z8hFoU5L2t3T-yJ^YX7tkfubZ@Uj~%jp=$`B` z(VyM^;9*3cB+i&(KcDlC9ZXdejLJ~iE3R;g7J`Leb&xo{;F+z7k)Wd7A}2<6Nl+J5 za@-5DSe@>W0fhvVi|eIG0G6E#l2if|^$r@;t5R=Cb25J#I4-@5R=bCx>Hdbx_2}p( zGCq_1p`WUwH5$z{j%!{TojU1sQKZwV*aY==!w2&N^K)&0LTR{5+gcdYcc|Iv4ud{I z+V%xn>keoa?y~B$9gUtHmoC%C<5SI)zd4U2^hVx}Y7aqt zY9N2*Ik#O%1fdpB|3oSAkQHi(C+O8_==1eBIBkiUzC z?@loXxvHuOxPQVU2{ET^S((!`t5WZHP!5zzSICft7+3y71dsCNm|j|V)-x}nK#;F zNuBnpWA*aYH;CW9^nT|jIly)7x|4t3JVr?Gfoh@N0(tnDR&=-_R;zKj;Ou$E?_xfL zSmb)3mNf(V@sZz_GUx^fO-c}6Kc{D|4H>2A`*aWbG}d;kSVG5E5fc1d$#oz-*|}?H zE$3t|sjgV+-a2-I``@z-Zcb<|XT0p`loe!ThT9seDftLt!;Yr2)8IF6FjOHbxOQIP@3L}+R!cyMUgteWb zZea?zjPEa?Y_Y{=D>j?W_n)|evC+|eKqgy`$!l!p%MLJJYzHyXmO#@;?&{LqUci=Z zX#m*2t0V0FoP{&zn5#IpmNS2uwvnRUW(Dzh^kZrIvsWkDb^8Cs{$7&jb>_86l^8(ipsCzq@Qz zr+2a7m0(^Sfr{FF6vQ&TX4dccMT-~M{j)U#t##I{&%cntty|Q2jIn>C5=H$$3j!z5 zv<2f*PD@fG9{HXan*&%Gqz&%RtEW$Oz`*Bx9OMLpS#{O2CYU$JK4{RWn7YWw$jtyRVWmmtGIV{ zdK+(;XLs&pxBfQE!NlrBxbPzlyZ5n;4UNB7Jp9b`yk#21-w!a`_x- z1;^X(%vmXkHD*|{AV;}1I|p_o#tUO7XF8mQ9sF7b|N2&T+RlITW2&pGZ~G`nfSEZT zyL|U^I<_S%T$iWm)1}=@7Y01N4@KHY0b2u&A+lz4M)1m-TB+ApN2-41exEVX|Ga={ z20vX?VWF~FOBX&oHZkv!?Z?VX0md98CyGEmxcwobodlC!aWEUV$TRWry+G>+RPg%s z>kasoI$`i=)&76Y8yex6p00&4w&3k-1(cLBhaI9gyRotHo=TooPNR7% zBm`DtyvfsFa>X0TcCu09hOd}Rrpwt&TeE5#6m$dg z6Zyz5azCSIr;JbMU&dQ+3%LRP1UT@CRX!>scpuJ*$DuRLt<7k2E%pX})qZp2IBUzE zYgcye)bdpC`qX);{^oJ`2_8#9+^$;eg3y!WaSP{TV(x*@b(mAXyl=6rzH{gL-T$kC lZeWZa!0sEsli+#~{{^rqiL>sJk-h)`002ovPDHLkV1o85UDW^p delta 2577 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 V{urV2rMv(D002ovPDHLkV1la}1l#}s delta 2676 zcmV-)3XApMDAOshdkTLFLPl4bE!^A7rEyjm6Vc8D$R&;2@`)V z!!Q>QhGzbX`X^$@h?3-%nGBJlF$qzTOPJ6x3RCzK3h|6-Q z=d;h=MdT`ulW3%Q@W27yd)QY^3w)c3Vu_8dZPUW2@%qU86}l1|8yk-2D^7FOX6{E% z{4ty3xcDZT^el04awGerM11tRWq=rwdj4=dVD-;SPW z)CK|Z!OUlZ;VNc(azM z$^=A}O7;Dz!=1v0dngG>y{Vfyk1OY%0M%xC)BU{o#GQXTImy>PK4IH7D4|pWCFQx; zo{#`1XJ^E2-i#Azmyo#W2vc3EWNTd9l7K+{6_+nvg8b-*hzwygwz6|b*jx*Fb~Yh>%C!)t?}rb1@>1#PeLKv$Z2v{d zs9kXP;0AxbA+?T<&P}q?WO=suY*LCHX8OKD(yB+&#$r-UD5IeyNtFr(baZtaKW~=H z5q+@Heq+78$yEXh4u3C za^|PT0zvDZJ;_8B#6`W0Wgkh=XYD$`#8|U#hq)_hX3{4S{F$&5j@%TU5WD)P^!W7+C~!3Q%kf=f$F4LW!3{IZE4%dpOlR>+fAy|aI= z2J}}UBRLmeOf|=r_~I8;RaGWNMn+GWQBJx#+h`c#IpXz_>9j z^Fh+KT70{(C)RI#Ksgi~<8bK8(5EesVkv&_|2YdGOP0X;QXDv)TQD~_hx3pxk$OBA z`*sInS3*q_e)Ot3TrVm@uU@?bk@J6+gc~>w_jo3J9OS8w<5@)*GN?C#zS)AgGhext zN)?6ud-M>rARX>rLCDIu28kGmT&IKYLe<4lLRNClIe(j9NhPdJn>NTeG7YIoR>(io zfY(7JA`#^TYxc7hXG;Hlyy zW{n$zm*jB=4qd{NCr{j{6+nNh1RKS_kav+K12-zeuGXF0s3l-uu3=v24l>x?9GaAt zl$3nlqeqXr*Y|6TWuh6(p7-wF<$IaGTEALY$bw)4Ns>auH0oDt`tlq(k{|A&&+YxW z1{;3T!S20#nOah`?a@k*EGMRF$U?|4EK0~i7TWLyg72FTuU)&QV{LzJZAWL?(6lqD z$&8+?)UnjSLXUaP4Jv?F4GpQodQZ?QF@x;vY{}rkgISvNqp2$ssGy(#xj8wArAk^< zT#T~PQoMLk1u3z|Q@P?qGMKe*4=YPcuy)nO#RV<{2MU2mP)1|h%a<>Iq&O;nF9s>$ ze?b1fjb2AExAmDln_PeU1g1_>VDk6|^t0k=Xe0XqtjbfBq;XhSsivj<=@KNTNIOs;WRIT$+l4uS*g5dXv5)M3kDRmF7|{0_ zW=(IvAXlYEnk;`UM=Y(Qd)sL^J38RE+`I|oubY_Pv&Npa%-lUovp)*C4J({Y8v9WOre64?pnv&^S3VHu^>tkhZp5I_gOfBqf z)dxR$${`?F7h>HJ!iB!Kiy>s~N3+>RY|+6piJ$m8jkMD+4?UbIQ>vSD;?!6rx@N=>${Cs^8749rV zVgG->3Vx1UOw1V~DfuvLY-~_ST|p_`?<_1VFh9hSp%f6UiOm1Co&Qz_8-XI7N;{%h z&*$puDy*^pPtsCTEoG8}SRdK4t@&u65_`5k!+-qza3U)UcJ}t4kwCkf Date: Thu, 23 Sep 2021 11:10:36 -0300 Subject: [PATCH 12/16] Update DOMAIN --- resources/reporter/DOMAIN | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/reporter/DOMAIN b/resources/reporter/DOMAIN index 6b44050..2faeae9 100644 --- a/resources/reporter/DOMAIN +++ b/resources/reporter/DOMAIN @@ -1 +1 @@ -ngreborn.online \ No newline at end of file +ngreborn.site \ No newline at end of file From 80f169ef8eedb4ccf737611b14b7c02b384d331b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Ribeiro?= Date: Mon, 19 Sep 2022 13:55:08 -0300 Subject: [PATCH 13/16] Update DOMAIN --- resources/reporter/DOMAIN | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/reporter/DOMAIN b/resources/reporter/DOMAIN index 2faeae9..6b44050 100644 --- a/resources/reporter/DOMAIN +++ b/resources/reporter/DOMAIN @@ -1 +1 @@ -ngreborn.site \ No newline at end of file +ngreborn.online \ No newline at end of file From fea156851d3030502ea9eb292a93afa0f6f43197 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Ribeiro?= Date: Sat, 6 May 2023 22:08:54 -0300 Subject: [PATCH 14/16] 2.1.0-rc --- README.md | 22 ++-------------------- VERSION | 2 +- config.php.example | 5 +++-- index.php | 4 ---- resources/icons/icons.json | 2 +- resources/js/classes/NagmapReborn.js | 11 ----------- 6 files changed, 7 insertions(+), 39 deletions(-) diff --git a/README.md b/README.md index 3785d49..45cf3b7 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ Making it possible to easily and visually identify the status of what is monitor Nagmap Reborn is based on Nagmap project developed by [Marcel Hecko](https://github.com/hecko). -## v2.0.0 +## v2.x.x This version brings significant logical changes, being a break-point in the API compatibility between v1.x.x and v2.x.x. With these changes it was possible to achieve the following objectives: @@ -34,13 +34,6 @@ Currently Nagmap Reborn can easily integrate directly with: It is possible to integrate with other systems that have the structure similar to these, if it worked with some other server monitoring system please let me know! -## Live preview (Coming soon) -

- - - -

- ## Contribution Contribution are always **welcome and recommended**! Here is how: @@ -56,15 +49,4 @@ You can [see here](https://github.com/jocafamaka/nagmapReborn/wiki/) the Wiki / ## Terms of use (Leaflet / OpenStreetMap) * By using this API Implementation, your are agreeing to be bound by Leaflet and OpenStreetMap Terms of Use. -* This app uses the OpenStreetMap's tiles. [See here](https://wiki.osmfoundation.org/wiki/Privacy_Policy) the privacy policy. - -## Donation -As an Information Systems student about to graduate me, I use my free time to bring updates and improvements to the project, without any financial purpose. - -So if you like this project, help me to continue development and free support, buy me a coffee: - -[![](https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=G6E995UWUM2J6&item_name=Buy+me+a+coffee¤cy_code=BRL&source=url) - -

- -

+* This app uses the OpenStreetMap's tiles. [See here](https://wiki.osmfoundation.org/wiki/Privacy_Policy) the privacy policy. \ No newline at end of file diff --git a/VERSION b/VERSION index 2702b2a..1b36fc8 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.1.0-alpha \ No newline at end of file +2.1.0-rc \ No newline at end of file diff --git a/config.php.example b/config.php.example index f9b6ada..48f873f 100644 --- a/config.php.example +++ b/config.php.example @@ -117,8 +117,9 @@ return [ 'update_animation' => 1, // The default icon style to be used when there is no specific definition; - // Pre-existing options: marker_retro, marker_shadow, marker_border, - // wifi, wifi_border_dark, wifi_border_light, + // Pre-existing options: + // marker_retro, marker_shadow, marker_border + // wifi, wifi_border_dark, wifi_border_light // router, router_border_dark, router_border_light // server, server_border_dark, server_border_light // This option can be overridden by the definitions contained in resources/icons/custom_icons.json diff --git a/index.php b/index.php index a9573c6..c0e23ae 100644 --- a/index.php +++ b/index.php @@ -31,10 +31,6 @@ - -
diff --git a/resources/icons/icons.json b/resources/icons/icons.json index d2e1c90..880def4 100644 --- a/resources/icons/icons.json +++ b/resources/icons/icons.json @@ -1,6 +1,6 @@ { "// WARNING !" : "Do not set customization on this file as it is overwritten with every update!", - "// WARNING !!" : "Define the customizations in the custom_icons.json file", + "// WARNING !!" : "See the example_custom_icons.json file", "styles": { "marker_retro": { diff --git a/resources/js/classes/NagmapReborn.js b/resources/js/classes/NagmapReborn.js index 568c90c..1478d0e 100644 --- a/resources/js/classes/NagmapReborn.js +++ b/resources/js/classes/NagmapReborn.js @@ -138,7 +138,6 @@ class NagmapReborn { $("#debug").html(` featured_play_list${i18next.t('debug_csl')} `); - /* assignment${i18next.t('debug_pg')} */ $("#console_text").niceScroll({ background: "rgba(0,0,0,0)", cursorcolor: "rgba(9, 255, 0,0.75)", @@ -146,13 +145,6 @@ class NagmapReborn { cursorborder: "0px", }); } - - if (config.allow_overwrite) { - this._u('Creating and loading overwrite panel.'); - $("#debug").append(` - subtitles${i18next.t('overwrite_pnl')} - `); - } } /** @@ -162,17 +154,14 @@ class NagmapReborn { loadIcons() { if (config.icons == null) { - // this._u("Unable to load icon styles, please make sure that resources/icons/icons.json exists and is a valid json.", false); throw i18next.t("load_icons_error") || "Unable to load icon styles, please make sure that resources/icons/icons.json exists and is a valid json."; } if (config.custom_icons != null) { this._u(i18next.t("load_custom_icons") || "Loading custom icon definitions from custom_icons.json file.Unable to load icon styles, please make sure that resources/icons/icons.json exists and is a valid json."); ["names", "hostgroups", "styles"].forEach(node => { - // console.log("NODE: ", node); //#DEBUG# if (config.custom_icons.hasOwnProperty(node)) { for (let subnode in config.custom_icons[node]) { - // console.log("SUBNODE: ", subnode); //#DEBUG# config.icons[node][subnode] = config.custom_icons[node][subnode]; } } From b04b89d1f753b124c97a2d0d2cd8e4fcd419e156 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Ribeiro?= Date: Wed, 10 May 2023 11:51:40 -0300 Subject: [PATCH 15/16] 2.1.0-rc2 --- VERSION | 2 +- config.php.example | 2 +- resources/icons/example_custom_icons.json | 37 +++++++++++++++++++---- resources/js/classes/Host.js | 12 +++++--- resources/js/classes/NagmapReborn.js | 9 +++++- 5 files changed, 49 insertions(+), 13 deletions(-) diff --git a/VERSION b/VERSION index 1b36fc8..0e58774 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.1.0-rc \ No newline at end of file +2.1.0-rc2 \ No newline at end of file diff --git a/config.php.example b/config.php.example index 48f873f..275a5b2 100644 --- a/config.php.example +++ b/config.php.example @@ -123,7 +123,7 @@ return [ // router, router_border_dark, router_border_light // server, server_border_dark, server_border_light // This option can be overridden by the definitions contained in resources/icons/custom_icons.json - // Read more: https://github.com/jocafamaka/nagmapReborn/wiki/About-icons-styles + // Read more: https://github.com/jocafamaka/nagmapReborn/wiki/About-icon-styles 'default_icon_style' => "marker_shadow", // Show lines between hosts and their parents. diff --git a/resources/icons/example_custom_icons.json b/resources/icons/example_custom_icons.json index b93e4f8..6e1eba4 100644 --- a/resources/icons/example_custom_icons.json +++ b/resources/icons/example_custom_icons.json @@ -1,15 +1,18 @@ { - "// READ": "For this to work make the necessary changes, rename this file to custom_icons.json and then you can delete this lines", - "// DOCS": "https://github.com/jocafamaka/nagmapReborn/wiki/About-icons-styles", - + "// READ": "For this to work make the necessary changes, rename this file to custom_icons.json and then you can delete all the lines starting with '//' and examples", + + "// DOCS: Dynamic icons": "https://github.com/jocafamaka/nagmapReborn/wiki/About-icon-styles#dynamic-icons", "names": { - "THE EXACT NAME OF A HOST": "Name of a style where. You can use one of the pre-existing styles too, see in icons.json" + "Exact name of a style here (pre-existing or custom)": "THE EXACT NAME OF A HOST", + "Exact name of other style here (pre-existing or custom)": ["THE EXACT NAME OF A HOST 1", "THE EXACT NAME OF A HOST 2"] }, "hostgroups": { - "THE EXACT NAME OF A HOSTGROUP": "Name of a other style where" + "Exact name of a style here (pre-existing or custom)": "THE EXACT NAME OF A HOSTGROUP", + "Exact name of other style here (pre-existing or custom)": ["THE EXACT NAME OF A HOSTGROUP 1", "THE EXACT NAME OF A HOSTGROUP 2"] }, - + + "// DOCS: Custom styles": "https://github.com/jocafamaka/nagmapReborn/wiki/About-icon-styles", "styles": { "some_custom_style": { "grey": { @@ -32,6 +35,28 @@ "iconUrl": "custom_style_folder/Red.png", "iconSize": [29, 43] } + }, + "another_custom_style": { + "grey": { + "iconUrl": "another_custom_style_folder/Grey.png", + "iconSize": [29, 43] + }, + "green": { + "iconUrl": "another_custom_style_folder/Green.png", + "iconSize": [29, 43] + }, + "yellow": { + "iconUrl": "another_custom_style_folder/Yellow.png", + "iconSize": [29, 43] + }, + "orange": { + "iconUrl": "another_custom_style_folder/Orange.png", + "iconSize": [29, 43] + }, + "red": { + "iconUrl": "another_custom_style_folder/Red.png", + "iconSize": [29, 43] + } } } } \ No newline at end of file diff --git a/resources/js/classes/Host.js b/resources/js/classes/Host.js index 7f2c51f..e02b445 100644 --- a/resources/js/classes/Host.js +++ b/resources/js/classes/Host.js @@ -138,9 +138,13 @@ class Host { * @returns string */ getIconStyle() { - let iconStyle = config.defaultIconStyle; + let iconStyle = null; - if (this.hostgroups) { + if (this.hostName in config.icons.names) { + iconStyle = config.icons.names[this.hostName]; + } + + if (iconStyle == null && this.hostgroups) { for (let i = 0; i < this.hostgroups.length; ++i) { if (this.hostgroups[i] in config.icons.hostgroups) { iconStyle = config.icons.hostgroups[this.hostgroups[i]]; @@ -149,8 +153,8 @@ class Host { } } - if (this.hostName in config.icons.names) { - iconStyle = config.icons.names[this.hostName]; + if (iconStyle == null) { + iconStyle = config.defaultIconStyle; } if (!(iconStyle in config.icons.styles)) { diff --git a/resources/js/classes/NagmapReborn.js b/resources/js/classes/NagmapReborn.js index 1478d0e..6415960 100644 --- a/resources/js/classes/NagmapReborn.js +++ b/resources/js/classes/NagmapReborn.js @@ -162,7 +162,14 @@ class NagmapReborn { ["names", "hostgroups", "styles"].forEach(node => { if (config.custom_icons.hasOwnProperty(node)) { for (let subnode in config.custom_icons[node]) { - config.icons[node][subnode] = config.custom_icons[node][subnode]; + if (Array.isArray(config.custom_icons[node][subnode])) { + config.custom_icons[node][subnode].forEach(subsubnode => { + config.icons[node][subsubnode] = subnode; + }) + } + else { + config.icons[node][config.custom_icons[node][subnode]] = subnode; + } } } }); From 34548e99b06c5d265ec04800b011b54807c90459 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Ribeiro?= Date: Wed, 10 May 2023 12:15:09 -0300 Subject: [PATCH 16/16] Release v2.1.0 (final) --- VERSION | 2 +- resources/js/app.js | 17 ----------------- resources/js/classes/NagmapReborn.js | 2 +- 3 files changed, 2 insertions(+), 19 deletions(-) diff --git a/VERSION b/VERSION index 0e58774..50aea0e 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.1.0-rc2 \ No newline at end of file +2.1.0 \ No newline at end of file diff --git a/resources/js/app.js b/resources/js/app.js index e683de8..5cab562 100644 --- a/resources/js/app.js +++ b/resources/js/app.js @@ -115,15 +115,6 @@ function coverHanlder() { $("#cover").remove() }, 500); - Swal.fire({ - heightAuto: false, - icon: "warning", - title: 'Nagmap Reborn v' + config.ngr_version, - html: i18next.t('not_released'), - footer: `${i18next.t('last_stable')}`, - confirmButtonText: 'OK' - }); - window.nagmapReborn.checkNgRebornUpdate(); _u("Showing map"); @@ -174,14 +165,6 @@ function coverHanlder() { _u("Showing error cover"); - Swal.fire({ - heightAuto: false, - icon: "warning", - title: 'Nagmap Reborn v' + config.ngr_version || "2.0.1-alpha", - html: i18next.t('not_released'), - footer: `${i18next.t('last_stable') || 'Get the last stable version'}`, - confirmButtonText: 'OK' - }); } } diff --git a/resources/js/classes/NagmapReborn.js b/resources/js/classes/NagmapReborn.js index 6415960..6fde909 100644 --- a/resources/js/classes/NagmapReborn.js +++ b/resources/js/classes/NagmapReborn.js @@ -461,7 +461,7 @@ class NagmapReborn { */ checkNgRebornUpdate() { this._u("Checking for updates."); - axios.get("https://raw.githubusercontent.com/jocafamaka/nagmapReborn/developing/VERSION") + axios.get("https://raw.githubusercontent.com/jocafamaka/nagmapReborn/master/VERSION") .then(response => { if (config.ngr_version != null && (config.ngr_version != response.data)) { Swal.fire({
${i18next.t('alias')}:${data.alias}
${i18next.t('alias')}:${data.alias}
${i18next.t('hostG')}:${hostgroups}
${i18next.t('address')}:${data.address} Link
${i18next.t('parent')}:${parents}