From eab7828bfe83c5c94a1372372a6cff7c9c2e7326 Mon Sep 17 00:00:00 2001 From: Mike Reeves Date: Mon, 9 Sep 2024 18:39:19 -0400 Subject: [PATCH 001/175] Formatting and add setting --- salt/nginx/defaults.yaml | 1 + salt/nginx/enabled.sls | 3 +++ salt/nginx/etc/nginx.conf | 49 ++++++++++++++++++++++++++++----------- salt/nginx/soc_nginx.yaml | 5 ++++ 4 files changed, 45 insertions(+), 13 deletions(-) diff --git a/salt/nginx/defaults.yaml b/salt/nginx/defaults.yaml index 088ba9257..3e36233e7 100644 --- a/salt/nginx/defaults.yaml +++ b/salt/nginx/defaults.yaml @@ -1,5 +1,6 @@ nginx: enabled: False + external_suricata: False ssl: replace_cert: False config: diff --git a/salt/nginx/enabled.sls b/salt/nginx/enabled.sls index 273fb65be..91ea0fd24 100644 --- a/salt/nginx/enabled.sls +++ b/salt/nginx/enabled.sls @@ -130,6 +130,9 @@ so-nginx: - /opt/so/conf/navigator/config.json:/opt/socore/html/navigator/assets/config.json:ro - /nsm/repo:/opt/socore/html/repo:ro - /nsm/rules:/nsm/rules:ro + {% if NGINXMERGED.external_suricata %} + - /opt/so/rules/nids/suri:/surirules:ro + {% endif %} {% endif %} {% if DOCKER.containers[container_config].custom_bind_mounts %} {% for BIND in DOCKER.containers[container_config].custom_bind_mounts %} diff --git a/salt/nginx/etc/nginx.conf b/salt/nginx/etc/nginx.conf index 52ea68daa..72ba07b89 100644 --- a/salt/nginx/etc/nginx.conf +++ b/salt/nginx/etc/nginx.conf @@ -116,6 +116,29 @@ http { autoindex_localtime on; } } + {%- if NGINXMERGED.external_suricata %} + server { + listen 7789 ssl http2; + server_name {{ GLOBALS.url_base }}; + root /surirules; + location / { + allow all; + sendfile on; + sendfile_max_chunk 1m; + autoindex on; + autoindex_exact_size off; + autoindex_format html; + autoindex_localtime on; + ssl_certificate "/etc/pki/nginx/server.crt"; + ssl_certificate_key "/etc/pki/nginx/server.key"; + ssl_session_cache shared:SSL:1m; + ssl_session_timeout 10m; + ssl_ciphers HIGH:!aNULL:!MD5; + ssl_prefer_server_ciphers on; + ssl_protocols TLSv1.2; + } + } + {%- endif %} server { listen 443 ssl http2; @@ -251,20 +274,20 @@ http { proxy_cookie_path /api/ /influxdb/api/; } - location /app/dashboards/ { - auth_request /auth/sessions/whoami; - rewrite /app/dashboards/(.*) /app/dashboards/$1 break; - proxy_pass http://{{ GLOBALS.manager }}:5601/app/; - proxy_read_timeout 300; - proxy_connect_timeout 300; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header Proxy ""; - proxy_set_header X-Forwarded-Proto $scheme; - } + location /app/dashboards/ { + auth_request /auth/sessions/whoami; + rewrite /app/dashboards/(.*) /app/dashboards/$1 break; + proxy_pass http://{{ GLOBALS.manager }}:5601/app/; + proxy_read_timeout 300; + proxy_connect_timeout 300; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Proxy ""; + proxy_set_header X-Forwarded-Proto $scheme; + } - location /kibana/ { + location /kibana/ { auth_request /auth/sessions/whoami; rewrite /kibana/(.*) /$1 break; proxy_pass http://{{ GLOBALS.manager }}:5601/; diff --git a/salt/nginx/soc_nginx.yaml b/salt/nginx/soc_nginx.yaml index 924a45ae9..56bbd888f 100644 --- a/salt/nginx/soc_nginx.yaml +++ b/salt/nginx/soc_nginx.yaml @@ -3,6 +3,11 @@ nginx: description: You can enable or disable Nginx. advanced: True helpLink: nginx.html + external_suricata: + description: Enable this to allow external access to Suricata Rulesets managed by Detections. + advanced: True + helplink: nginx.html + forcedType: bool ssl: replace_cert: description: Enable this if you would like to replace the Security Onion Certificate with your own. From 6e2c319e7e3a21b804c5b1c64f344b8b0b0fc9e0 Mon Sep 17 00:00:00 2001 From: Mike Reeves Date: Mon, 9 Sep 2024 19:42:04 -0400 Subject: [PATCH 002/175] Fix http2 declaration --- salt/nginx/etc/nginx.conf | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/salt/nginx/etc/nginx.conf b/salt/nginx/etc/nginx.conf index 72ba07b89..1c77426ef 100644 --- a/salt/nginx/etc/nginx.conf +++ b/salt/nginx/etc/nginx.conf @@ -84,7 +84,8 @@ http { } server { - listen 443 ssl http2 default_server; + listen 443 ssl default_server; + http2 on; server_name _; return 307 https://{{ GLOBALS.url_base }}$request_uri; @@ -118,17 +119,10 @@ http { } {%- if NGINXMERGED.external_suricata %} server { - listen 7789 ssl http2; + listen 7789 ssl; + http2 on; server_name {{ GLOBALS.url_base }}; root /surirules; - location / { - allow all; - sendfile on; - sendfile_max_chunk 1m; - autoindex on; - autoindex_exact_size off; - autoindex_format html; - autoindex_localtime on; ssl_certificate "/etc/pki/nginx/server.crt"; ssl_certificate_key "/etc/pki/nginx/server.key"; ssl_session_cache shared:SSL:1m; @@ -136,12 +130,21 @@ http { ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; ssl_protocols TLSv1.2; + location / { + allow all; + sendfile on; + sendfile_max_chunk 1m; + autoindex on; + autoindex_exact_size off; + autoindex_format html; + autoindex_localtime on; } } {%- endif %} server { - listen 443 ssl http2; + listen 443 ssl; + http2 on; server_name {{ GLOBALS.url_base }}; root /opt/socore/html; index index.html; From da5e91ee0370aad6650bb7272bfda3496aeea902 Mon Sep 17 00:00:00 2001 From: Mike Reeves Date: Tue, 10 Sep 2024 15:24:44 -0400 Subject: [PATCH 003/175] Update so-functions --- setup/so-functions | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup/so-functions b/setup/so-functions index 23b16156d..0c2cbf3e0 100755 --- a/setup/so-functions +++ b/setup/so-functions @@ -1330,8 +1330,8 @@ create_global() { echo " registry_host: '$HOSTNAME'" >> $global_pillar_file echo " endgamehost: '$ENDGAMEHOST'" >> $global_pillar_file - if [ "$install_type" = 'EVAL' ]; then - echo " pcapengine: SURICATA" >> $global_pillar_file + if [[ $is_standalone || $is_eval ]]; then + echo " pcapengine: SURICATA" >> $global_pillar_file fi } From 8b8737221d88edb239b5d226625b394fb9a4f980 Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Wed, 11 Sep 2024 09:28:17 -0400 Subject: [PATCH 004/175] mark specific settings as allowed to include Jinja --- salt/soc/soc_soc.yaml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/salt/soc/soc_soc.yaml b/salt/soc/soc_soc.yaml index 308044d50..760001120 100644 --- a/salt/soc/soc_soc.yaml +++ b/salt/soc/soc_soc.yaml @@ -117,6 +117,7 @@ soc: syntax: yaml helpLink: notifications.html forcedType: string + jinjaEscaped: True additionalSev1Alerters: title: "Notifications: Sev 1/Informational Alerters" description: "Specify specific alerters to use when alerting at the info severity level or higher. These alerters will be used unless overridden by higher severity alerter settings. Specify one alerter name (Ex: 'email') per line. Alerters refers to ElastAlert 2 alerters, as documented at https://elastalert2.readthedocs.io. A full update of the ElastAlert rule engine, via the Detections screen, is required in order to apply these changes. Requires a valid Security Onion license key." @@ -132,6 +133,7 @@ soc: syntax: yaml helpLink: notifications.html forcedType: string + jinjaEscaped: True additionalSev2Alerters: title: "Notifications: Sev 2/Low Alerters" description: "Specify specific alerters to use when alerting at the low severity level or higher. These alerters will be used unless overridden by higher severity alerter settings. Specify one alerter name (Ex: 'email') per line. Alerters refers to ElastAlert 2 alerters, as documented at https://elastalert2.readthedocs.io. A full update of the ElastAlert rule engine, via the Detections screen, is required in order to apply these changes. Requires a valid Security Onion license key." @@ -147,6 +149,7 @@ soc: syntax: yaml helpLink: notifications.html forcedType: string + jinjaEscaped: True additionalSev3Alerters: title: "Notifications: Sev 3/Medium Alerters" description: "Specify specific alerters to use when alerting at the medium severity level or higher. These alerters will be used unless overridden by higher severity alerter settings. Specify one alerter name (Ex: 'email') per line. Alerters refers to ElastAlert 2 alerters, as documented at https://elastalert2.readthedocs.io. A full update of the ElastAlert rule engine, via the Detections screen, is required in order to apply these changes. Requires a valid Security Onion license key." @@ -162,6 +165,7 @@ soc: syntax: yaml helpLink: notifications.html forcedType: string + jinjaEscaped: True additionalSev4Alerters: title: "Notifications: Sev 4/High Alerters" description: "Specify specific alerters to use when alerting at the high severity level or critical severity level. These alerters will be used unless overridden by critical severity alerter settings. Specify one alerter name (Ex: 'email') per line. Alerters refers to ElastAlert 2 alerters, as documented at https://elastalert2.readthedocs.io. A full update of the ElastAlert rule engine, via the Detections screen, is required in order to apply these changes. Requires a valid Security Onion license key." @@ -177,6 +181,7 @@ soc: syntax: yaml helpLink: notifications.html forcedType: string + jinjaEscaped: True additionalSev5Alerters: title: "Notifications: Sev 5/Critical Alerters" description: "Specify specific alerters to use when alerting at the critical severity level. Specify one alerter name (Ex: 'email') per line. Alerters refers to ElastAlert 2 alerters, as documented at https://elastalert2.readthedocs.io. A full update of the ElastAlert rule engine, via the Detections screen, is required in order to apply these changes. Requires a valid Security Onion license key." @@ -192,6 +197,7 @@ soc: syntax: yaml helpLink: notifications.html forcedType: string + jinjaEscaped: True additionalUserDefinedNotifications: customAlerters: description: "Specify custom notification alerters to use when the Sigma rule contains the following tag: so.alerters.customAlerters. This setting can be duplicated to create new custom alerter configurations. Specify one alerter name (Ex: 'email') per line. Alerters refers to ElastAlert 2 alerters, as documented at https://elastalert2.readthedocs.io. A full update of the ElastAlert rule engine, via the Detections screen, is required in order to apply these changes. Requires a valid Security Onion license key." @@ -208,6 +214,7 @@ soc: helpLink: notifications.html duplicates: True forcedType: string + jinjaEscaped: True autoEnabledSigmaRules: default: &autoEnabledSigmaRules description: 'Sigma rules to automatically enable on initial import. Format is $Ruleset+$Level - for example, for the core community ruleset and critical level rules: core+critical. These will be applied based on role if defined and default if not.' From 409612ff1f178d33582ff18d136dba5a5ea7a10d Mon Sep 17 00:00:00 2001 From: Wes Date: Wed, 11 Sep 2024 14:56:57 +0000 Subject: [PATCH 005/175] Add script to upgrade integrations --- .../sbin/so-elastic-fleet-integration-upgrade | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-upgrade diff --git a/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-upgrade b/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-upgrade new file mode 100644 index 000000000..1c94c5017 --- /dev/null +++ b/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-upgrade @@ -0,0 +1,52 @@ +#!/bin/bash +# Copyright Security Onion Solutions LLC and/or licensed to Security Onion Solutions LLC under one +# or more contributor license agreements. Licensed under the Elastic License 2.0 as shown at +# https://securityonion.net/license; you may not use this file except in compliance with the +# Elastic License 2.0. + +. /usr/sbin/so-elastic-fleet-common-2 + +RETURN_CODE=0 + +if [ ! -f /opt/so/state/eaintegrationupgrade.txt ]; then + # Let's snag a cookie from Kibana + SESSIONCOOKIE=$(curl -s -K /opt/so/conf/elasticsearch/curl.config -c - -X GET http://localhost:5601/ | grep sid | awk '{print $7}') + + # List agent policies + for AGENT_POLICY in $(elastic_fleet_agent_policy_names); do + IFS=$'\n' + for INTEGRATION in $(elastic_fleet_integration_policy_names "$AGENT_POLICY"); do + if ! [[ "$INTEGRATION" == "elastic-defend-endpoints" ]] && ! [[ "$INTEGRATION" == "fleet_server-"* ]]; then + echo "$INTEGRATION" + # Get package name so we know what package to look for when checking the current and latest available version + PACKAGE_NAME=$(elastic_fleet_integration_policy_package_name "$AGENT_POLICY" "$INTEGRATION") + # Get currently installed version of package + PACKAGE_VERSION=$(elastic_fleet_integration_policy_package_version "$AGENT_POLICY" "$INTEGRATION") + # Get latest available version of package + AVAILABLE_VERSION=$(elastic_fleet_package_latest_version_check "$PACKAGE_NAME") + INTEGRATION_ID=$(elastic_fleet_integration_id "$AGENT_POLICY" "$INTEGRATION" ) + if [[ "$PACKAGE_VERSION" != "$AVAILABLE_VERSION" ]]; then + # Dry run of upgrade + echo "Current $PACKAGE_NAME package version ($PACKAGE_VERSION) is not the same as the latest available package ($AVAILABLE_VERSION)..." + echo "Upgrading $INTEGRATION..." + echo "Starting dry run..." + DRYRUN_ERRORS=$(elastic_fleet_integration_policy_dryrun_upgrade "$INTEGRATION_ID" | jq .[].hasErrors) + # If no errors with dry run, proceed with actual upgrade + if [[ "$DRYRUN_ERRORS" == "false" ]]; then + echo "No errors detected. Proceeding with upgrade..." + elastic_fleet_integration_policy_upgrade "$INTEGRATION_ID" + else + echo "Errors detected. Stopping upgrade..." + exit 1 + fi + fi + fi + done + done + if [[ "$RETURN_CODE" != "1" ]]; then + touch /opt/so/state/eaintegrationupgrade.txt + fi + echo +else + exit $RETURN_CODE +fi From 5112f5c9ce97498fa7b057037f0faaf2ef1a932a Mon Sep 17 00:00:00 2001 From: Wes Date: Wed, 11 Sep 2024 14:58:01 +0000 Subject: [PATCH 006/175] Run upgrade during state apply --- salt/elasticfleet/enabled.sls | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/salt/elasticfleet/enabled.sls b/salt/elasticfleet/enabled.sls index af5e552eb..26738b688 100644 --- a/salt/elasticfleet/enabled.sls +++ b/salt/elasticfleet/enabled.sls @@ -142,6 +142,10 @@ so-elastic-agent-grid-upgrade: cmd.run: - name: /usr/sbin/so-elastic-agent-grid-upgrade - retry: True + +so-elastic-fleet-integration-upgrade: + cmd.run: + - name: /usr/sbin/so-elastic-fleet-integration-upgrade {% endif %} delete_so-elastic-fleet_so-status.disabled: From 061f42626c16c23761595cbdaf406a856d05ce54 Mon Sep 17 00:00:00 2001 From: Wes Date: Wed, 11 Sep 2024 15:00:55 +0000 Subject: [PATCH 007/175] Add functions to common --- .../tools/sbin/so-elastic-fleet-common | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/salt/elasticfleet/tools/sbin/so-elastic-fleet-common b/salt/elasticfleet/tools/sbin/so-elastic-fleet-common index 48ff3518a..d5b27c315 100644 --- a/salt/elasticfleet/tools/sbin/so-elastic-fleet-common +++ b/salt/elasticfleet/tools/sbin/so-elastic-fleet-common @@ -102,6 +102,38 @@ elastic_fleet_package_is_installed() { curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET -H 'kbn-xsrf: true' "localhost:5601/api/fleet/epm/packages/$PACKAGE" | jq -r '.item.status' } +elastic_fleet_agent_policy_names() { + curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/agent_policies" | jq -r .items[].name +} + +elastic_fleet_integration_policy_names() { + AGENT_POLICY=$1 + curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/agent_policies/$AGENT_POLICY" | jq -r .item.package_policies[].name +} + +elastic_fleet_integration_policy_package_name() { + AGENT_POLICY=$1 + INTEGRATION=$2 + curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/agent_policies/$AGENT_POLICY" | jq -r --arg INTEGRATION "$INTEGRATION" '.item.package_policies[] | select(.name==$INTEGRATION)| .package.name' +} + +elastic_fleet_integration_policy_package_version() { + AGENT_POLICY=$1 + INTEGRATION=$2 + curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/agent_policies/$AGENT_POLICY" | jq -r --arg INTEGRATION "$INTEGRATION" '.item.package_policies[] | select(.name==$INTEGRATION)| .package.version' +} + +elastic_fleet_integration_id() { + AGENT_POLICY=$1 + INTEGRATION=$2 + curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/agent_policies/$AGENT_POLICY" | jq -r --arg INTEGRATION "$INTEGRATION" '.item.package_policies[] | select(.name==$INTEGRATION)| .id' +} + +elastic_fleet_integration_policy_dryrun_upgrade() { + INTEGRATION_ID=$1 + curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -H "Content-Type: application/json" -H 'kbn-xsrf: true' -L -X POST "localhost:5601/api/fleet/package_policies/upgrade/dryrun" -d "{\"packagePolicyIds\":[\"$INTEGRATION_ID\"]}" +} + elastic_fleet_policy_create() { NAME=$1 From e4fa47f27e302434fdc6b67bff56847b1cd1898d Mon Sep 17 00:00:00 2001 From: Wes Date: Wed, 11 Sep 2024 15:01:30 +0000 Subject: [PATCH 008/175] Fix common source --- .../tools/sbin/so-elastic-fleet-integration-upgrade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-upgrade b/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-upgrade index 1c94c5017..496bfaa70 100644 --- a/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-upgrade +++ b/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-upgrade @@ -4,7 +4,7 @@ # https://securityonion.net/license; you may not use this file except in compliance with the # Elastic License 2.0. -. /usr/sbin/so-elastic-fleet-common-2 +. /usr/sbin/so-elastic-fleet-common RETURN_CODE=0 From f0e4e5236499b9a358f1c81250a9e42e1791e7c1 Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Wed, 11 Sep 2024 11:12:20 -0400 Subject: [PATCH 009/175] es sig pulled from es dir --- salt/common/tools/sbin/so-image-common | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/salt/common/tools/sbin/so-image-common b/salt/common/tools/sbin/so-image-common index bb827c0af..c57749570 100755 --- a/salt/common/tools/sbin/so-image-common +++ b/salt/common/tools/sbin/so-image-common @@ -159,9 +159,11 @@ update_docker_containers() { fi local highest_es_version=$(compare_es_versions "$v1" "$v2") local image=$i:$highest_es_version$IMAGE_TAG_SUFFIX + local sig_url=https://sigs.securityonion.net/es-$highest_es_version/$image.sig else # this is not an es container so use the so version for the version local image=$i:$VERSION$IMAGE_TAG_SUFFIX + local sig_url=https://sigs.securityonion.net/$VERSION/$image.sig fi # Pull down the trusted docker image run_check_net_err \ @@ -170,7 +172,7 @@ update_docker_containers() { # Get signature run_check_net_err \ - "curl --retry 5 --retry-delay 60 -A '$CURLTYPE/$CURRENTVERSION/$OS/$(uname -r)' https://sigs.securityonion.net/$VERSION/$image.sig --output $SIGNPATH/$image.sig" \ + "curl --retry 5 --retry-delay 60 -A '$CURLTYPE/$CURRENTVERSION/$OS/$(uname -r)' $sig_url --output $SIGNPATH/$image.sig" \ "Could not pull signature file for $image, please ensure connectivity to https://sigs.securityonion.net " \ noretry >> "$LOG_FILE" 2>&1 # Dump our hash values From f2bb54d99325736b81ad82482d39a82784163576 Mon Sep 17 00:00:00 2001 From: Wes Date: Wed, 11 Sep 2024 19:41:38 +0000 Subject: [PATCH 010/175] Add barracuda and imperva integrations --- salt/elasticfleet/defaults.yaml | 2 + salt/elasticsearch/defaults.yaml | 92 ++++++++++++++++++++++++++++++++ 2 files changed, 94 insertions(+) diff --git a/salt/elasticfleet/defaults.yaml b/salt/elasticfleet/defaults.yaml index 48b24809e..ad2a7cc91 100644 --- a/salt/elasticfleet/defaults.yaml +++ b/salt/elasticfleet/defaults.yaml @@ -36,6 +36,7 @@ elasticfleet: - aws - azure - barracuda + - barracuda_cloudgen_firewall - carbonblack_edr - cef - checkpoint @@ -66,6 +67,7 @@ elasticfleet: - http_endpoint - httpjson - iis + - imperva_cloud_waf - journald - juniper - juniper_srx diff --git a/salt/elasticsearch/defaults.yaml b/salt/elasticsearch/defaults.yaml index 15df57f4c..06f5392d8 100644 --- a/salt/elasticsearch/defaults.yaml +++ b/salt/elasticsearch/defaults.yaml @@ -2366,6 +2366,52 @@ elasticsearch: set_priority: priority: 50 min_age: 30d + so-logs-barracuda_cloudgen_firewall_x_log: + index_sorting: False + index_template: + ignore_missing_component_templates: + - logs-barracuda_cloudgen_firewall.log@custom + index_patterns: + - "logs-barracuda_cloudgen_firewall.log-*" + template: + settings: + index: + lifecycle: + name: so-logs-barracuda_cloudgen_firewall.log-logs + number_of_replicas: 0 + composed_of: + - "logs-barracuda_cloudgen_firewall.log@package" + - "logs-barracuda_cloudgen_firewall.log@custom" + - "so-fleet_globals-1" + - "so-fleet_agent_id_verification-1" + priority: 501 + data_stream: + hidden: false + allow_custom_routing: false + policy: + phases: + cold: + actions: + set_priority: + priority: 0 + min_age: 30d + delete: + actions: + delete: {} + min_age: 365d + hot: + actions: + rollover: + max_age: 30d + max_primary_shard_size: 50gb + set_priority: + priority: 100 + min_age: 0ms + warm: + actions: + set_priority: + priority: 50 + min_age: 30d so-logs-carbonblack_edr_x_log: index_sorting: false index_template: @@ -6556,6 +6602,52 @@ elasticsearch: set_priority: priority: 50 min_age: 30d + so-logs-imperva_cloud_waf_x_event: + index_sorting: False + index_template: + ignore_missing_component_templates: + - logs-imperva_cloud_waf.event@custom + index_patterns: + - "logs-imperva_cloud_waf.event-*" + template: + settings: + index: + lifecycle: + name: so-logs-imperva_cloud_waf.event-logs + number_of_replicas: 0 + composed_of: + - "logs-imperva_cloud_waf.event@package" + - "logs-imperva_cloud_waf.event@custom" + - "so-fleet_globals-1" + - "so-fleet_agent_id_verification-1" + priority: 501 + data_stream: + hidden: false + allow_custom_routing: false + policy: + phases: + cold: + actions: + set_priority: + priority: 0 + min_age: 30d + delete: + actions: + delete: {} + min_age: 365d + hot: + actions: + rollover: + max_age: 30d + max_primary_shard_size: 50gb + set_priority: + priority: 100 + min_age: 0ms + warm: + actions: + set_priority: + priority: 50 + min_age: 30d so-logs-juniper_srx_x_log: index_sorting: false index_template: From 602158aa560c926d79d016521a5706732ac1bb47 Mon Sep 17 00:00:00 2001 From: weslambert Date: Wed, 11 Sep 2024 15:52:23 -0400 Subject: [PATCH 011/175] Add annotations for barracuda and imperva --- salt/elasticsearch/soc_elasticsearch.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/salt/elasticsearch/soc_elasticsearch.yaml b/salt/elasticsearch/soc_elasticsearch.yaml index a4c350254..44244647b 100644 --- a/salt/elasticsearch/soc_elasticsearch.yaml +++ b/salt/elasticsearch/soc_elasticsearch.yaml @@ -381,6 +381,7 @@ elasticsearch: so-logs-azure_x_signinlogs: *indexSettings so-logs-azure_x_springcloudlogs: *indexSettings so-logs-barracuda_x_waf: *indexSettings + so-logs-barracuda_cloudgen_firewall_x_log: $indexSettings so-logs-cef_x_log: *indexSettings so-logs-cisco_asa_x_log: *indexSettings so-logs-cisco_ftd_x_log: *indexSettings @@ -435,6 +436,7 @@ elasticsearch: so-logs-httpjson_x_generic: *indexSettings so-logs-iis_x_access: *indexSettings so-logs-iis_x_error: *indexSettings + so-logs-imperva_cloud_waf_x_event: $indexSettings so-logs-juniper_x_junos: *indexSettings so-logs-juniper_x_netscreen: *indexSettings so-logs-juniper_x_srx: *indexSettings From 7f65d122a8b41c942862f1d4e8d9023ac7d00c66 Mon Sep 17 00:00:00 2001 From: weslambert Date: Wed, 11 Sep 2024 15:54:34 -0400 Subject: [PATCH 012/175] Remove echo --- .../elasticfleet/tools/sbin/so-elastic-fleet-integration-upgrade | 1 - 1 file changed, 1 deletion(-) diff --git a/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-upgrade b/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-upgrade index 496bfaa70..d7f4257a9 100644 --- a/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-upgrade +++ b/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-upgrade @@ -17,7 +17,6 @@ if [ ! -f /opt/so/state/eaintegrationupgrade.txt ]; then IFS=$'\n' for INTEGRATION in $(elastic_fleet_integration_policy_names "$AGENT_POLICY"); do if ! [[ "$INTEGRATION" == "elastic-defend-endpoints" ]] && ! [[ "$INTEGRATION" == "fleet_server-"* ]]; then - echo "$INTEGRATION" # Get package name so we know what package to look for when checking the current and latest available version PACKAGE_NAME=$(elastic_fleet_integration_policy_package_name "$AGENT_POLICY" "$INTEGRATION") # Get currently installed version of package From 24504dcc878c18468d592ff8311e472ca1a08d03 Mon Sep 17 00:00:00 2001 From: weslambert Date: Thu, 12 Sep 2024 10:54:13 -0400 Subject: [PATCH 013/175] Fix annotations typo --- salt/elasticsearch/soc_elasticsearch.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/salt/elasticsearch/soc_elasticsearch.yaml b/salt/elasticsearch/soc_elasticsearch.yaml index 44244647b..b489bfe78 100644 --- a/salt/elasticsearch/soc_elasticsearch.yaml +++ b/salt/elasticsearch/soc_elasticsearch.yaml @@ -381,7 +381,7 @@ elasticsearch: so-logs-azure_x_signinlogs: *indexSettings so-logs-azure_x_springcloudlogs: *indexSettings so-logs-barracuda_x_waf: *indexSettings - so-logs-barracuda_cloudgen_firewall_x_log: $indexSettings + so-logs-barracuda_cloudgen_firewall_x_log: *indexSettings so-logs-cef_x_log: *indexSettings so-logs-cisco_asa_x_log: *indexSettings so-logs-cisco_ftd_x_log: *indexSettings @@ -436,7 +436,7 @@ elasticsearch: so-logs-httpjson_x_generic: *indexSettings so-logs-iis_x_access: *indexSettings so-logs-iis_x_error: *indexSettings - so-logs-imperva_cloud_waf_x_event: $indexSettings + so-logs-imperva_cloud_waf_x_event: *indexSettings so-logs-juniper_x_junos: *indexSettings so-logs-juniper_x_netscreen: *indexSettings so-logs-juniper_x_srx: *indexSettings From 6518088de7ce990e3d8a575c26eb86ad3565bf69 Mon Sep 17 00:00:00 2001 From: Wes Date: Thu, 12 Sep 2024 15:30:11 +0000 Subject: [PATCH 014/175] Allow custom IDH skins --- salt/idh/config.sls | 23 + salt/idh/enabled.sls | 1 + .../http/custom/basicCustomLogin/403.html | 10 + .../http/custom/basicCustomLogin/404.html | 9 + .../http/custom/basicCustomLogin/index.html | 41 + .../skins/http/opencanary/basicLogin/403.html | 10 + .../skins/http/opencanary/basicLogin/404.html | 9 + .../http/opencanary/basicLogin/index.html | 41 + .../skins/http/opencanary/nasLogin/403.html | 10 + .../skins/http/opencanary/nasLogin/404.html | 9 + .../skins/http/opencanary/nasLogin/index.html | 36 + .../nasLogin/static/css/desktop.css | 1 + .../nasLogin/static/css/ext-all.css | 1 + .../opencanary/nasLogin/static/css/style.css | 1 + .../opencanary/nasLogin/static/css/ux-all.css | 11 + .../nasLogin/static/css/xtheme-gray.css | 1682 +++++++++++++++++ .../nasLogin/static/fonts/roboto.woff | Bin 0 -> 22172 bytes .../opencanary/nasLogin/static/img/02.jpg | Bin 0 -> 305783 bytes .../nasLogin/static/img/favicon.ico | Bin 0 -> 15086 bytes .../nasLogin/static/img/icon_dsm_16.png | Bin 0 -> 1191 bytes .../nasLogin/static/img/icon_dsm_32.png | Bin 0 -> 1351 bytes .../nasLogin/static/img/icon_dsm_48.png | Bin 0 -> 1603 bytes .../nasLogin/static/img/icon_dsm_64.png | Bin 0 -> 1706 bytes .../nasLogin/static/img/icon_dsm_96.png | Bin 0 -> 2123 bytes .../nasLogin/static/img/icon_tile.png | Bin 0 -> 2093 bytes .../images/Components/bt_dropdown.png | Bin 0 -> 1208 bytes .../images/Components/bt_grid_dropdown.png | Bin 0 -> 455 bytes .../images/Components/bt_pagebar.png | Bin 0 -> 4750 bytes .../images/Components/c_icon_general.png | Bin 0 -> 8754 bytes .../images/Components/category_expand.png | Bin 0 -> 907 bytes .../synohdpack/images/Components/checkbox.png | Bin 0 -> 3535 bytes .../images/Components/col-move-bottom.png | Bin 0 -> 1027 bytes .../images/Components/date_dropdown.png | Bin 0 -> 343 bytes .../images/Components/date_prev_next.png | Bin 0 -> 1374 bytes .../Components/dropdown_menu_parent.png | Bin 0 -> 344 bytes .../images/Components/dropdown_menu_tick.png | Bin 0 -> 823 bytes .../images/Components/fieldset_expand.png | Bin 0 -> 2729 bytes .../Components/icon_advanced_search.png | Bin 0 -> 1975 bytes .../images/Components/icon_error.png | Bin 0 -> 644 bytes .../images/Components/icon_filter.png | Bin 0 -> 372 bytes .../images/Components/icon_information.png | Bin 0 -> 3373 bytes .../images/Components/icon_loading.gif | Bin 0 -> 491 bytes .../images/Components/icon_search.png | Bin 0 -> 842 bytes .../images/Components/icon_search_clear.png | Bin 0 -> 6219 bytes .../images/Components/icon_success.png | Bin 0 -> 972 bytes .../images/Components/radio_button.png | Bin 0 -> 4979 bytes .../images/Components/shadow_category.png | Bin 0 -> 137 bytes .../images/Components/shadow_footbar.png | Bin 0 -> 138 bytes .../Components/superbox_button_cancel.png | Bin 0 -> 1649 bytes .../images/Components/tab_arrow.png | Bin 0 -> 501 bytes .../images/Components/tab_shadow.png | Bin 0 -> 1065 bytes .../images/Components/tree_arrow.png | Bin 0 -> 372 bytes .../synohdpack/images/Components/trigger.png | Bin 0 -> 517 bytes .../images/Components/trigger_date.png | Bin 0 -> 472 bytes .../images/tray_icon_device.png | Bin 0 -> 4156 bytes .../images/tray_icon_bgtask.gif | Bin 0 -> 5812 bytes .../images/tray_icon_bgtask.png | Bin 0 -> 928 bytes .../images/tray_icon_download.gif | Bin 0 -> 6810 bytes .../images/tray_icon_download.png | Bin 0 -> 1192 bytes .../images/tray_icon_upload.gif | Bin 0 -> 6658 bytes .../images/tray_icon_upload.png | Bin 0 -> 1129 bytes .../images/tray_icon_disk_port.png | Bin 0 -> 5685 bytes .../images/tray_icon_creating_thumbnail.gif | Bin 0 -> 3073 bytes .../images/tray_icon_creating_thumbnail.png | Bin 0 -> 2125 bytes .../images/dsm/resources/images/bt_bugs.png | Bin 0 -> 35658 bytes .../dsm/resources/images/bt_dsm_mobile.png | Bin 0 -> 27469 bytes .../images/components/icon_error.png | Bin 0 -> 2031 bytes .../images/components/icon_image_selector.png | Bin 0 -> 1748 bytes .../images/components/status_fail.png | Bin 0 -> 1372 bytes .../images/components/status_loading.gif | Bin 0 -> 1549 bytes .../images/components/status_success.png | Bin 0 -> 1322 bytes .../dsm/resources/images/desktop/add_one.png | Bin 0 -> 2537 bytes .../images/desktop/icon_app_category.png | Bin 0 -> 8458 bytes .../resources/images/desktop/spotlight.png | Bin 0 -> 11321 bytes .../images/desktop/taskbar_spinner.gif | Bin 0 -> 2164 bytes .../dsm/resources/images/dsm5_badge_num.png | Bin 0 -> 36970 bytes .../images/dsm5_notification_num.png | Bin 0 -> 21353 bytes .../images/dsmv5_wizard_bkg_v_01.png | Bin 0 -> 9530 bytes .../images/dsmv5_wizard_bkg_v_02.png | Bin 0 -> 63006 bytes .../images/dsm/resources/images/folder.png | Bin 0 -> 590 bytes .../dsm/resources/images/icon_drag_add.png | Bin 0 -> 2536 bytes .../dsm/resources/images/icon_drag_ban.png | Bin 0 -> 2388 bytes .../dsm/resources/images/icon_question.png | Bin 0 -> 3630 bytes .../dsm/resources/images/item_drag_status.png | Bin 0 -> 1637 bytes .../dsm/resources/images/login/dark/0.png | Bin 0 -> 1565 bytes .../dsm/resources/images/login/dark/1.png | Bin 0 -> 1165 bytes .../dsm/resources/images/login/dark/2.png | Bin 0 -> 1554 bytes .../dsm/resources/images/login/dark/3.png | Bin 0 -> 1704 bytes .../dsm/resources/images/login/dark/4.png | Bin 0 -> 1419 bytes .../dsm/resources/images/login/dark/5dot.png | Bin 0 -> 1589 bytes .../dsm/resources/images/login/dark/DSM.png | Bin 0 -> 2462 bytes .../dsm/resources/images/login/dark/beta.png | Bin 0 -> 1735 bytes .../images/login/dark/copyright_2014.png | Bin 0 -> 8323 bytes .../images/login/dark/copyright_2015.png | Bin 0 -> 8318 bytes .../resources/images/login/dark/synology.png | Bin 0 -> 7719 bytes .../dsm/resources/images/login/icon_phone.png | Bin 0 -> 698 bytes .../dsm/resources/images/login/icon_pw.png | Bin 0 -> 3913 bytes .../dsm/resources/images/login/icon_user.png | Bin 0 -> 3730 bytes .../dsm/resources/images/login/light/0.png | Bin 0 -> 834 bytes .../dsm/resources/images/login/light/1.png | Bin 0 -> 318 bytes .../dsm/resources/images/login/light/2.png | Bin 0 -> 780 bytes .../dsm/resources/images/login/light/3.png | Bin 0 -> 982 bytes .../dsm/resources/images/login/light/4.png | Bin 0 -> 680 bytes .../dsm/resources/images/login/light/5dot.png | Bin 0 -> 868 bytes .../dsm/resources/images/login/light/DSM.png | Bin 0 -> 2070 bytes .../dsm/resources/images/login/light/beta.png | Bin 0 -> 1162 bytes .../images/login/light/copyright_2014.png | Bin 0 -> 8323 bytes .../images/login/light/copyright_2015.png | Bin 0 -> 8318 bytes .../resources/images/login/light/synology.png | Bin 0 -> 8469 bytes .../login/login_bkg_highlight_bottom.png | Bin 0 -> 6772 bytes .../images/login/login_bkg_highlight_top.png | Bin 0 -> 8683 bytes .../weather/login_icon_weather_cloudy.png | Bin 0 -> 23041 bytes .../login/weather/login_icon_weather_cold.png | Bin 0 -> 33681 bytes .../login/weather/login_icon_weather_fog.png | Bin 0 -> 10119 bytes .../login/weather/login_icon_weather_hail.png | Bin 0 -> 27277 bytes .../login/weather/login_icon_weather_moon.png | Bin 0 -> 16586 bytes .../login_icon_weather_moon_clouds.png | Bin 0 -> 28148 bytes .../login/weather/login_icon_weather_rain.png | Bin 0 -> 28152 bytes .../login/weather/login_icon_weather_snow.png | Bin 0 -> 31584 bytes .../login/weather/login_icon_weather_sun.png | Bin 0 -> 21959 bytes .../weather/login_icon_weather_sun_clouds.png | Bin 0 -> 37181 bytes .../weather/login_icon_weather_thunder.png | Bin 0 -> 27481 bytes .../weather/login_icon_weather_tornado.png | Bin 0 -> 37188 bytes .../weather/login_icon_weather_windy.png | Bin 0 -> 22230 bytes .../images/module_list_icon/c_icon_CMS.png | Bin 0 -> 5229 bytes .../images/module_list_icon/c_icon_backup.png | Bin 0 -> 5973 bytes .../module_list_icon/c_icon_business.png | Bin 0 -> 3767 bytes .../module_list_icon/c_icon_community.png | Bin 0 -> 5282 bytes .../module_list_icon/c_icon_connect.png | Bin 0 -> 7444 bytes .../module_list_icon/c_icon_contact.png | Bin 0 -> 5907 bytes .../c_icon_directory_service.png | Bin 0 -> 4389 bytes .../module_list_icon/c_icon_dsm_apps.png | Bin 0 -> 5446 bytes .../module_list_icon/c_icon_expansion.png | Bin 0 -> 4339 bytes .../c_icon_external_devices.png | Bin 0 -> 4126 bytes .../module_list_icon/c_icon_file_services.png | Bin 0 -> 4867 bytes .../module_list_icon/c_icon_general.png | Bin 0 -> 8754 bytes .../images/module_list_icon/c_icon_groups.png | Bin 0 -> 7877 bytes .../c_icon_hardware_and_power.png | Bin 0 -> 5937 bytes .../c_icon_hdd_management.png | Bin 0 -> 6498 bytes .../module_list_icon/c_icon_hot_spare.png | Bin 0 -> 4823 bytes .../module_list_icon/c_icon_info_center.png | Bin 0 -> 8171 bytes .../module_list_icon/c_icon_installed.png | Bin 0 -> 4191 bytes .../module_list_icon/c_icon_iscsi_lun.png | Bin 0 -> 7993 bytes .../module_list_icon/c_icon_iscsi_target.png | Bin 0 -> 10534 bytes .../module_list_icon/c_icon_login_style.png | Bin 0 -> 8216 bytes .../module_list_icon/c_icon_media_library.png | Bin 0 -> 10244 bytes .../module_list_icon/c_icon_network.png | Bin 0 -> 5374 bytes .../module_list_icon/c_icon_networkmap.png | Bin 0 -> 5660 bytes .../module_list_icon/c_icon_notifications.png | Bin 0 -> 6352 bytes .../module_list_icon/c_icon_overview.png | Bin 0 -> 5299 bytes .../module_list_icon/c_icon_performance.png | Bin 0 -> 8245 bytes .../images/module_list_icon/c_icon_portal.png | Bin 0 -> 5136 bytes .../module_list_icon/c_icon_privilege.png | Bin 0 -> 4734 bytes .../module_list_icon/c_icon_process.png | Bin 0 -> 6985 bytes .../module_list_icon/c_icon_public_access.png | Bin 0 -> 10097 bytes .../module_list_icon/c_icon_purchases.png | Bin 0 -> 7973 bytes .../module_list_icon/c_icon_quickconnect.png | Bin 0 -> 6400 bytes .../module_list_icon/c_icon_raid_group.png | Bin 0 -> 3621 bytes .../module_list_icon/c_icon_recommend.png | Bin 0 -> 5128 bytes .../images/module_list_icon/c_icon_region.png | Bin 0 -> 9903 bytes .../module_list_icon/c_icon_security.png | Bin 0 -> 7168 bytes .../c_icon_shared_folders.png | Bin 0 -> 5473 bytes .../images/module_list_icon/c_icon_speed.png | Bin 0 -> 10382 bytes .../module_list_icon/c_icon_ssd_cache.png | Bin 0 -> 5255 bytes .../images/module_list_icon/c_icon_syslog.png | Bin 0 -> 5349 bytes .../c_icon_task_scheduler.png | Bin 0 -> 5984 bytes .../c_icon_terminal_and_SNMP.png | Bin 0 -> 4008 bytes .../c_icon_update_and_reset.png | Bin 0 -> 8440 bytes .../images/module_list_icon/c_icon_users.png | Bin 0 -> 5905 bytes .../module_list_icon/c_icon_utilities.png | Bin 0 -> 9565 bytes .../images/module_list_icon/c_icon_volume.png | Bin 0 -> 8423 bytes .../module_list_icon/c_icon_web_server.png | Bin 0 -> 9096 bytes .../module_list_icon/c_icon_wireless.png | Bin 0 -> 7619 bytes .../images/dsm/resources/images/rt_button.png | Bin 0 -> 7805 bytes .../dsm/resources/images/shadow_footbar.png | Bin 0 -> 138 bytes .../resources/images/taskbar/more_apps.png | Bin 0 -> 1915 bytes .../resources/images/taskbar/showdesktop.png | Bin 0 -> 1445 bytes .../resources/images/taskbar/taskbar_bg.png | Bin 0 -> 159 bytes .../resources/images/taskbar/taskbar_bt.png | Bin 0 -> 4445 bytes .../images/taskbar/taskbar_bt_apps.png | Bin 0 -> 10062 bytes .../taskbar/taskbar_bt_widgets_shadow.png | Bin 0 -> 506 bytes .../images/taskbar/taskbar_shadow.png | Bin 0 -> 132 bytes .../images/taskbar/taskbar_split.png | Bin 0 -> 183 bytes .../images/taskbar/tray_icon_notification.png | Bin 0 -> 6147 bytes .../images/taskbar/tray_icon_pilot_view.png | Bin 0 -> 6852 bytes .../images/taskbar/tray_icon_search.png | Bin 0 -> 7569 bytes .../images/taskbar/tray_icon_user_menu.png | Bin 0 -> 5077 bytes .../images/taskbar/tray_icon_widget.png | Bin 0 -> 10337 bytes .../images/taskbar/user_menu_about.png | Bin 0 -> 3622 bytes .../images/taskbar/user_menu_logout.png | Bin 0 -> 3876 bytes .../images/taskbar/user_menu_options.png | Bin 0 -> 5337 bytes .../images/taskbar/user_menu_restart.png | Bin 0 -> 4950 bytes .../images/taskbar/user_menu_shutdown.png | Bin 0 -> 5475 bytes .../images/widget_window/widget_rt_button.png | Bin 0 -> 9577 bytes .../dsm/resources/images/wizard_bkg_h.png | Bin 0 -> 50783 bytes .../images/scrollbar/scrollbar_black_h.png | Bin 0 -> 134 bytes .../images/scrollbar/scrollbar_black_v.png | Bin 0 -> 136 bytes .../images/scrollbar/scrollbar_white_h.png | Bin 0 -> 135 bytes .../images/scrollbar/scrollbar_white_v.png | Bin 0 -> 127 bytes .../opencanary/nasLogin/static/js/misc.js | 53 + 200 files changed, 1948 insertions(+) create mode 100644 salt/idh/skins/http/custom/basicCustomLogin/403.html create mode 100644 salt/idh/skins/http/custom/basicCustomLogin/404.html create mode 100644 salt/idh/skins/http/custom/basicCustomLogin/index.html create mode 100644 salt/idh/skins/http/opencanary/basicLogin/403.html create mode 100644 salt/idh/skins/http/opencanary/basicLogin/404.html create mode 100644 salt/idh/skins/http/opencanary/basicLogin/index.html create mode 100644 salt/idh/skins/http/opencanary/nasLogin/403.html create mode 100644 salt/idh/skins/http/opencanary/nasLogin/404.html create mode 100644 salt/idh/skins/http/opencanary/nasLogin/index.html create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/css/desktop.css create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/css/ext-all.css create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/css/style.css create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/css/ux-all.css create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/css/xtheme-gray.css create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/fonts/roboto.woff create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/02.jpg create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/favicon.ico create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/icon_dsm_16.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/icon_dsm_32.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/icon_dsm_48.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/icon_dsm_64.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/icon_dsm_96.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/icon_tile.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/bt_dropdown.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/bt_grid_dropdown.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/bt_pagebar.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/c_icon_general.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/category_expand.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/checkbox.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/col-move-bottom.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/date_dropdown.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/date_prev_next.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/dropdown_menu_parent.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/dropdown_menu_tick.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/fieldset_expand.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/icon_advanced_search.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/icon_error.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/icon_filter.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/icon_information.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/icon_loading.gif create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/icon_search.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/icon_search_clear.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/icon_success.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/radio_button.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/shadow_category.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/shadow_footbar.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/superbox_button_cancel.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/tab_arrow.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/tab_shadow.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/tree_arrow.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/trigger.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/trigger_date.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/modules/ExternalDevices/images/tray_icon_device.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/modules/FileTaskMonitor/images/tray_icon_bgtask.gif create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/modules/FileTaskMonitor/images/tray_icon_bgtask.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/modules/FileTaskMonitor/images/tray_icon_download.gif create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/modules/FileTaskMonitor/images/tray_icon_download.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/modules/FileTaskMonitor/images/tray_icon_upload.gif create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/modules/FileTaskMonitor/images/tray_icon_upload.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/modules/PollingTask/images/tray_icon_disk_port.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/modules/ThumbConvertProgress/images/tray_icon_creating_thumbnail.gif create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/modules/ThumbConvertProgress/images/tray_icon_creating_thumbnail.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/bt_bugs.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/bt_dsm_mobile.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/components/icon_error.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/components/icon_image_selector.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/components/status_fail.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/components/status_loading.gif create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/components/status_success.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/desktop/add_one.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/desktop/icon_app_category.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/desktop/spotlight.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/desktop/taskbar_spinner.gif create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/dsm5_badge_num.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/dsm5_notification_num.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/dsmv5_wizard_bkg_v_01.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/dsmv5_wizard_bkg_v_02.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/folder.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/icon_drag_add.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/icon_drag_ban.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/icon_question.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/item_drag_status.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/dark/0.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/dark/1.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/dark/2.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/dark/3.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/dark/4.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/dark/5dot.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/dark/DSM.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/dark/beta.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/dark/copyright_2014.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/dark/copyright_2015.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/dark/synology.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/icon_phone.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/icon_pw.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/icon_user.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/light/0.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/light/1.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/light/2.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/light/3.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/light/4.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/light/5dot.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/light/DSM.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/light/beta.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/light/copyright_2014.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/light/copyright_2015.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/light/synology.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/login_bkg_highlight_bottom.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/login_bkg_highlight_top.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_cloudy.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_cold.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_fog.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_hail.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_moon.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_moon_clouds.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_rain.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_snow.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_sun.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_sun_clouds.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_thunder.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_tornado.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_windy.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_CMS.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_backup.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_business.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_community.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_connect.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_contact.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_directory_service.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_dsm_apps.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_expansion.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_external_devices.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_file_services.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_general.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_groups.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_hardware_and_power.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_hdd_management.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_hot_spare.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_info_center.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_installed.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_iscsi_lun.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_iscsi_target.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_login_style.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_media_library.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_network.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_networkmap.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_notifications.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_overview.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_performance.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_portal.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_privilege.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_process.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_public_access.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_purchases.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_quickconnect.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_raid_group.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_recommend.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_region.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_security.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_shared_folders.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_speed.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_ssd_cache.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_syslog.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_task_scheduler.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_terminal_and_SNMP.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_update_and_reset.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_users.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_utilities.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_volume.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_web_server.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_wireless.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/rt_button.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/shadow_footbar.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/taskbar/more_apps.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/taskbar/showdesktop.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/taskbar/taskbar_bg.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/taskbar/taskbar_bt.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/taskbar/taskbar_bt_apps.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/taskbar/taskbar_bt_widgets_shadow.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/taskbar/taskbar_shadow.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/taskbar/taskbar_split.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/taskbar/tray_icon_notification.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/taskbar/tray_icon_pilot_view.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/taskbar/tray_icon_search.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/taskbar/tray_icon_user_menu.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/taskbar/tray_icon_widget.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/taskbar/user_menu_about.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/taskbar/user_menu_logout.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/taskbar/user_menu_options.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/taskbar/user_menu_restart.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/taskbar/user_menu_shutdown.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/widget_window/widget_rt_button.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/wizard_bkg_h.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/scrollbar/scrollbar_black_h.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/scrollbar/scrollbar_black_v.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/scrollbar/scrollbar_white_h.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/scrollbar/scrollbar_white_v.png create mode 100644 salt/idh/skins/http/opencanary/nasLogin/static/js/misc.js diff --git a/salt/idh/config.sls b/salt/idh/config.sls index dcde9c8e5..8d1bd25d5 100644 --- a/salt/idh/config.sls +++ b/salt/idh/config.sls @@ -43,6 +43,29 @@ idhconfdir: - group: 939 - makedirs: True +idhhttpskinsdir: + file.directory: + - name: /opt/so/conf/idh/http-skins + - user: 939 + - group: 939 + - makedirs: True + +# Copy over default http skins +copyoverhttpskins: + file.recurse: + - name: /opt/so/conf/idh/http-skins + - user: 939 + - group: 939 + - source: salt://idh/skins/http/opencanary + +# Copy over custom http skins +copyovercustomhttpskins: + file.recurse: + - name: /opt/so/conf/idh/http-skins + - user: 939 + - group: 939 + - source: salt://idh/skins/http/custom + # Create a log directory idhlogdir: file.directory: diff --git a/salt/idh/enabled.sls b/salt/idh/enabled.sls index 7ef0ebb46..e08e6647f 100644 --- a/salt/idh/enabled.sls +++ b/salt/idh/enabled.sls @@ -20,6 +20,7 @@ so-idh: - network_mode: host - binds: - /nsm/idh:/var/tmp:rw + - /opt/so/conf/idh/http-skins:/usr/local/lib/python3.12/site-packages/opencanary/modules/data/http/skin:ro - /opt/so/conf/idh/opencanary.conf:/etc/opencanaryd/opencanary.conf:ro {% if DOCKER.containers['so-idh'].custom_bind_mounts %} {% for BIND in DOCKER.containers['so-idh'].custom_bind_mounts %} diff --git a/salt/idh/skins/http/custom/basicCustomLogin/403.html b/salt/idh/skins/http/custom/basicCustomLogin/403.html new file mode 100644 index 000000000..6bc5d8eda --- /dev/null +++ b/salt/idh/skins/http/custom/basicCustomLogin/403.html @@ -0,0 +1,10 @@ + + +403 Forbidden + +

Forbidden

+

You don't have permission to access [[URL]] +on this server.

+
+
[[BANNER]] Server
+ diff --git a/salt/idh/skins/http/custom/basicCustomLogin/404.html b/salt/idh/skins/http/custom/basicCustomLogin/404.html new file mode 100644 index 000000000..631b905ec --- /dev/null +++ b/salt/idh/skins/http/custom/basicCustomLogin/404.html @@ -0,0 +1,9 @@ + + +404 Not Found + +

Not Found

+

The requested URL [[URL]] was not found on this server.

+
+
[[BANNER]] Server
+ diff --git a/salt/idh/skins/http/custom/basicCustomLogin/index.html b/salt/idh/skins/http/custom/basicCustomLogin/index.html new file mode 100644 index 000000000..3a62e843e --- /dev/null +++ b/salt/idh/skins/http/custom/basicCustomLogin/index.html @@ -0,0 +1,41 @@ + + + Login + + + +
+
+

Network Storage v5.13

+ +

Login failed

+ +
+
+
CustomUsername:
+
+
Password:
+
+
+
+
+
+
+
+ + diff --git a/salt/idh/skins/http/opencanary/basicLogin/403.html b/salt/idh/skins/http/opencanary/basicLogin/403.html new file mode 100644 index 000000000..6bc5d8eda --- /dev/null +++ b/salt/idh/skins/http/opencanary/basicLogin/403.html @@ -0,0 +1,10 @@ + + +403 Forbidden + +

Forbidden

+

You don't have permission to access [[URL]] +on this server.

+
+
[[BANNER]] Server
+ diff --git a/salt/idh/skins/http/opencanary/basicLogin/404.html b/salt/idh/skins/http/opencanary/basicLogin/404.html new file mode 100644 index 000000000..631b905ec --- /dev/null +++ b/salt/idh/skins/http/opencanary/basicLogin/404.html @@ -0,0 +1,9 @@ + + +404 Not Found + +

Not Found

+

The requested URL [[URL]] was not found on this server.

+
+
[[BANNER]] Server
+ diff --git a/salt/idh/skins/http/opencanary/basicLogin/index.html b/salt/idh/skins/http/opencanary/basicLogin/index.html new file mode 100644 index 000000000..73b776a0f --- /dev/null +++ b/salt/idh/skins/http/opencanary/basicLogin/index.html @@ -0,0 +1,41 @@ + + + Login + + + +
+
+

Network Storage v5.13

+ +

Login failed

+ +
+
+
Username:
+
+
Password:
+
+
+
+
+
+
+
+ + diff --git a/salt/idh/skins/http/opencanary/nasLogin/403.html b/salt/idh/skins/http/opencanary/nasLogin/403.html new file mode 100644 index 000000000..6bc5d8eda --- /dev/null +++ b/salt/idh/skins/http/opencanary/nasLogin/403.html @@ -0,0 +1,10 @@ + + +403 Forbidden + +

Forbidden

+

You don't have permission to access [[URL]] +on this server.

+
+
[[BANNER]] Server
+ diff --git a/salt/idh/skins/http/opencanary/nasLogin/404.html b/salt/idh/skins/http/opencanary/nasLogin/404.html new file mode 100644 index 000000000..631b905ec --- /dev/null +++ b/salt/idh/skins/http/opencanary/nasLogin/404.html @@ -0,0 +1,9 @@ + + +404 Not Found + +

Not Found

+

The requested URL [[URL]] was not found on this server.

+
+
[[BANNER]] Server
+ diff --git a/salt/idh/skins/http/opencanary/nasLogin/index.html b/salt/idh/skins/http/opencanary/nasLogin/index.html new file mode 100644 index 000000000..47b1dd3d3 --- /dev/null +++ b/salt/idh/skins/http/opencanary/nasLogin/index.html @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + +Synology DiskStation + + + + + + + + + + + +
+ +
+ + + + + + diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/css/desktop.css b/salt/idh/skins/http/opencanary/nasLogin/static/css/desktop.css new file mode 100644 index 000000000..85bcd44ad --- /dev/null +++ b/salt/idh/skins/http/opencanary/nasLogin/static/css/desktop.css @@ -0,0 +1 @@ +.scrollgeneric{line-height:1px;font-size:1px;position:absolute;top:0;left:0}.vscrollerbase,.hscrollerbase{width:0px;height:0px}.vscrollerbar,.hscrollerbar{background-position:0 0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=$ieOpacity)";filter:alpha(opacity=20);filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=20);opacity:0.2;-webkit-transition-property:opacity;-moz-transition-property:opacity;-o-transition-property:opacity;transition-property:opacity;-webkit-transition-timing-function:ease-in;-moz-transition-timing-function:ease-in;-o-transition-timing-function:ease-in;transition-timing-function:ease-in;-webkit-transition-duration:0.2s;-moz-transition-duration:0.2s;-o-transition-duration:0.2s;transition-duration:0.2s}.vscrollerbar:hover,.hscrollerbar:hover{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=$ieOpacity)";filter:alpha(opacity=30);filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=30);opacity:0.3}.vscrollerbar:active,.hscrollerbar:active{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=$ieOpacity)";filter:alpha(opacity=40);filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=40);opacity:0.4}.vscrollerbar{width:10px;margin-left:-10px}.hscrollerbar{height:10px;margin-top:-10px}.vscrollerbar{background-image:url("images/scrollbar/scrollbar_black_v.png");background-repeat:repeat-y}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .vscrollerbar{background-image:url("../img/synohdpack/images/scrollbar/scrollbar_black_v.png");background-size:10px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .vscrollerbar{background-image:url("../img/synohdpack/images/scrollbar/scrollbar_black_v.png");background-size:10px;outline:1px green dashed}}.white-scrollerbar .vscrollerbar{background-image:url("images/scrollbar/scrollbar_white_v.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .white-scrollerbar .vscrollerbar{background-image:url("../img/synohdpack/images/scrollbar/scrollbar_white_v.png");background-size:10px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .white-scrollerbar .vscrollerbar{background-image:url("../img/synohdpack/images/scrollbar/scrollbar_white_v.png");background-size:10px;outline:1px green dashed}}.hscrollerbar{background-image:url "images/scrollbar/scrollbar_black_h.png";background-repeat:repeat-x}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .hscrollerbar{background-image:url("../img/synohdpack/images/scrollbar/scrollbar_black_h.png");background-size:10px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .hscrollerbar{background-image:url("../img/synohdpack/images/scrollbar/scrollbar_black_h.png");background-size:10px;outline:1px green dashed}}.white-scrollerbar .hscrollerbar{background-image:url "images/scrollbar/scrollbar_white_h.png"}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .white-scrollerbar .hscrollerbar{background-image:url("../img/synohdpack/images/scrollbar/scrollbar_white_h.png");background-size:10px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .white-scrollerbar .hscrollerbar{background-image:url("../img/synohdpack/images/scrollbar/scrollbar_white_h.png");background-size:10px;outline:1px green dashed}}.flexcrollactive{outline:none}.vscrollerbar{background-image:url("../../../scripts/scrollbar/images/scrollbar/scrollbar_black_v.png");background-repeat:repeat-y}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .vscrollerbar{background-image:url("../img/synohdpack/images/scrollbar/scrollbar_black_v.png");background-size:10px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .vscrollerbar{background-image:url("../img/synohdpack/images/scrollbar/scrollbar_black_v.png");background-size:10px;outline:1px green dashed}}.white-scrollerbar .vscrollerbar{background-image:url("../../../scripts/scrollbar/images/scrollbar/scrollbar_white_v.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .white-scrollerbar .vscrollerbar{background-image:url("../img/synohdpack/images/scrollbar/scrollbar_white_v.png");background-size:10px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .white-scrollerbar .vscrollerbar{background-image:url("../img/synohdpack/images/scrollbar/scrollbar_white_v.png");background-size:10px;outline:1px green dashed}}.hscrollerbar{background-image:url("../../../scripts/scrollbar/images/scrollbar/scrollbar_black_h.png");background-repeat:repeat-x}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .hscrollerbar{background-image:url("../img/synohdpack/images/scrollbar/scrollbar_black_h.png");background-size:10px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .hscrollerbar{background-image:url("../img/synohdpack/images/scrollbar/scrollbar_black_h.png");background-size:10px;outline:1px green dashed}}.white-scrollerbar .hscrollerbar{background-image:url("../../../scripts/scrollbar/images/scrollbar/scrollbar_white_h.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .white-scrollerbar .hscrollerbar{background-image:url("../img/synohdpack/images/scrollbar/scrollbar_white_h.png");background-size:10px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .white-scrollerbar .hscrollerbar{background-image:url("../img/synohdpack/images/scrollbar/scrollbar_white_h.png");background-size:10px;outline:1px green dashed}}body{font-size:12px}body,.normal-font{color:#505a64}.disable-font{color:#96a0aa}.note-font{color:#00a66e}.link-font{font-weight:bold}.link-font{color:#0086e5}.green-status{color:#1ca600}.red-status{color:#fa4b4b}.orange-status{color:#ff7f00}a,.blue-status{color:#0086e5}.sds-logo{position:absolute;display:inline-block;height:32px;right:20px;bottom:8px}.sds-logo.light .logo-0{background-image:url("../images/login/light/0.png");width:17px;height:32px;display:inline-block}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-logo.light .logo-0{background-image:url("../img/synohdpack/images/dsm/resources/images/login/light/0.png");background-size:17px 32px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-logo.light .logo-0{background-image:url("../img/synohdpack/images/dsm/resources/images/login/light/0.png");background-size:17px 32px;outline:1px green dashed}}.sds-logo.light .logo-1{background-image:url("../images/login/light/1.png");width:17px;height:32px;display:inline-block}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-logo.light .logo-1{background-image:url("../img/synohdpack/images/dsm/resources/images/login/light/1.png");background-size:17px 32px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-logo.light .logo-1{background-image:url("../img/synohdpack/images/dsm/resources/images/login/light/1.png");background-size:17px 32px;outline:1px green dashed}}.sds-logo.light .logo-2{background-image:url("../images/login/light/2.png");width:17px;height:32px;display:inline-block}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-logo.light .logo-2{background-image:url("../img/synohdpack/images/dsm/resources/images/login/light/2.png");background-size:17px 32px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-logo.light .logo-2{background-image:url("../img/synohdpack/images/dsm/resources/images/login/light/2.png");background-size:17px 32px;outline:1px green dashed}}.sds-logo.light .logo-3{background-image:url("../images/login/light/3.png");width:17px;height:32px;display:inline-block}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-logo.light .logo-3{background-image:url("../img/synohdpack/images/dsm/resources/images/login/light/3.png");background-size:17px 32px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-logo.light .logo-3{background-image:url("../img/synohdpack/images/dsm/resources/images/login/light/3.png");background-size:17px 32px;outline:1px green dashed}}.sds-logo.light .logo-4{background-image:url("../images/login/light/4.png");width:17px;height:32px;display:inline-block}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-logo.light .logo-4{background-image:url("../img/synohdpack/images/dsm/resources/images/login/light/4.png");background-size:17px 32px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-logo.light .logo-4{background-image:url("../img/synohdpack/images/dsm/resources/images/login/light/4.png");background-size:17px 32px;outline:1px green dashed}}.sds-logo.light .logo-5dot{background-image:url("../images/login/light/5dot.png");width:19px;height:32px;display:inline-block}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-logo.light .logo-5dot{background-image:url("../img/synohdpack/images/dsm/resources/images/login/light/5dot.png");background-size:19px 32px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-logo.light .logo-5dot{background-image:url("../img/synohdpack/images/dsm/resources/images/login/light/5dot.png");background-size:19px 32px;outline:1px green dashed}}.sds-logo.light .logo-DSM{background-image:url("../images/login/light/DSM.png");width:56px;height:32px;display:inline-block}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-logo.light .logo-DSM{background-image:url("../img/synohdpack/images/dsm/resources/images/login/light/DSM.png");background-size:56px 32px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-logo.light .logo-DSM{background-image:url("../img/synohdpack/images/dsm/resources/images/login/light/DSM.png");background-size:56px 32px;outline:1px green dashed}}.sds-logo.light .logo-synology{background-image:url("../images/login/light/synology.png");width:111px;height:32px;display:inline-block}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-logo.light .logo-synology{background-image:url("../img/synohdpack/images/dsm/resources/images/login/light/synology.png");background-size:111px 32px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-logo.light .logo-synology{background-image:url("../img/synohdpack/images/dsm/resources/images/login/light/synology.png");background-size:111px 32px;outline:1px green dashed}}.sds-logo.light .logo-beta{background-image:url("../images/login/light/beta.png");width:45px;height:32px;display:inline-block}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-logo.light .logo-beta{background-image:url("../img/synohdpack/images/dsm/resources/images/login/light/beta.png");background-size:45px 32px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-logo.light .logo-beta{background-image:url("../img/synohdpack/images/dsm/resources/images/login/light/beta.png");background-size:45px 32px;outline:1px green dashed}}.sds-logo.dark .logo-0{background-image:url("../images/login/dark/0.png");width:17px;height:32px;display:inline-block}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-logo.dark .logo-0{background-image:url("../img/synohdpack/images/dsm/resources/images/login/dark/0.png");background-size:17px 32px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-logo.dark .logo-0{background-image:url("../img/synohdpack/images/dsm/resources/images/login/dark/0.png");background-size:17px 32px;outline:1px green dashed}}.sds-logo.dark .logo-1{background-image:url("../images/login/dark/1.png");width:17px;height:32px;display:inline-block}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-logo.dark .logo-1{background-image:url("../img/synohdpack/images/dsm/resources/images/login/dark/1.png");background-size:17px 32px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-logo.dark .logo-1{background-image:url("../img/synohdpack/images/dsm/resources/images/login/dark/1.png");background-size:17px 32px;outline:1px green dashed}}.sds-logo.dark .logo-2{background-image:url("../images/login/dark/2.png");width:17px;height:32px;display:inline-block}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-logo.dark .logo-2{background-image:url("../img/synohdpack/images/dsm/resources/images/login/dark/2.png");background-size:17px 32px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-logo.dark .logo-2{background-image:url("../img/synohdpack/images/dsm/resources/images/login/dark/2.png");background-size:17px 32px;outline:1px green dashed}}.sds-logo.dark .logo-3{background-image:url("../images/login/dark/3.png");width:17px;height:32px;display:inline-block}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-logo.dark .logo-3{background-image:url("../img/synohdpack/images/dsm/resources/images/login/dark/3.png");background-size:17px 32px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-logo.dark .logo-3{background-image:url("../img/synohdpack/images/dsm/resources/images/login/dark/3.png");background-size:17px 32px;outline:1px green dashed}}.sds-logo.dark .logo-4{background-image:url("../images/login/dark/4.png");width:17px;height:32px;display:inline-block}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-logo.dark .logo-4{background-image:url("../img/synohdpack/images/dsm/resources/images/login/dark/4.png");background-size:17px 32px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-logo.dark .logo-4{background-image:url("../img/synohdpack/images/dsm/resources/images/login/dark/4.png");background-size:17px 32px;outline:1px green dashed}}.sds-logo.dark .logo-5dot{background-image:url("../images/login/dark/5dot.png");width:19px;height:32px;display:inline-block}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-logo.dark .logo-5dot{background-image:url("../img/synohdpack/images/dsm/resources/images/login/dark/5dot.png");background-size:19px 32px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-logo.dark .logo-5dot{background-image:url("../img/synohdpack/images/dsm/resources/images/login/dark/5dot.png");background-size:19px 32px;outline:1px green dashed}}.sds-logo.dark .logo-DSM{background-image:url("../images/login/dark/DSM.png");width:56px;height:32px;display:inline-block}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-logo.dark .logo-DSM{background-image:url("../img/synohdpack/images/dsm/resources/images/login/dark/DSM.png");background-size:56px 32px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-logo.dark .logo-DSM{background-image:url("../img/synohdpack/images/dsm/resources/images/login/dark/DSM.png");background-size:56px 32px;outline:1px green dashed}}.sds-logo.dark .logo-synology{background-image:url("../images/login/dark/synology.png");width:111px;height:32px;display:inline-block}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-logo.dark .logo-synology{background-image:url("../img/synohdpack/images/dsm/resources/images/login/dark/synology.png");background-size:111px 32px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-logo.dark .logo-synology{background-image:url("../img/synohdpack/images/dsm/resources/images/login/dark/synology.png");background-size:111px 32px;outline:1px green dashed}}.sds-logo.dark .logo-beta{background-image:url("../images/login/dark/beta.png");width:45px;height:32px;display:inline-block}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-logo.dark .logo-beta{background-image:url("../img/synohdpack/images/dsm/resources/images/login/dark/beta.png");background-size:45px 32px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-logo.dark .logo-beta{background-image:url("../img/synohdpack/images/dsm/resources/images/login/dark/beta.png");background-size:45px 32px;outline:1px green dashed}}#sds-desktop .sds-logo{bottom:12px}#sds-login .sds-logo{bottom:28px}#sds-copyright{position:absolute;width:248px;height:20px;bottom:8px;right:20px}#sds-copyright.light .logo-copyright_2014{background-image:url("../images/login/light/copyright_2014.png");height:100%}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack #sds-copyright.light .logo-copyright_2014{background-image:url("../img/synohdpack/images/dsm/resources/images/login/light/copyright_2014.png");background-size:248px 20px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug #sds-copyright.light .logo-copyright_2014{background-image:url("../img/synohdpack/images/dsm/resources/images/login/light/copyright_2014.png");background-size:248px 20px;outline:1px green dashed}}#sds-copyright.light .logo-copyright_2015{background-image:url("../images/login/light/copyright_2015.png");height:100%}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack #sds-copyright.light .logo-copyright_2015{background-image:url("../img/synohdpack/images/dsm/resources/images/login/light/copyright_2015.png");background-size:248px 20px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug #sds-copyright.light .logo-copyright_2015{background-image:url("../img/synohdpack/images/dsm/resources/images/login/light/copyright_2015.png");background-size:248px 20px;outline:1px green dashed}}#sds-copyright.dark .logo-copyright_2014{background-image:url("../images/login/dark/copyright_2014.png");height:100%}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack #sds-copyright.dark .logo-copyright_2014{background-image:url("../img/synohdpack/images/dsm/resources/images/login/dark/copyright_2014.png");background-size:248px 20px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug #sds-copyright.dark .logo-copyright_2014{background-image:url("../img/synohdpack/images/dsm/resources/images/login/dark/copyright_2014.png");background-size:248px 20px;outline:1px green dashed}}#sds-copyright.dark .logo-copyright_2015{background-image:url("../images/login/dark/copyright_2015.png");height:100%}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack #sds-copyright.dark .logo-copyright_2015{background-image:url("../img/synohdpack/images/dsm/resources/images/login/dark/copyright_2015.png");background-size:248px 20px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug #sds-copyright.dark .logo-copyright_2015{background-image:url("../img/synohdpack/images/dsm/resources/images/login/dark/copyright_2015.png");background-size:248px 20px;outline:1px green dashed}}#sds-bug-report-container,#sds-mobile-edition-container{position:absolute;bottom:0px;height:36px;width:100%;text-align:center}#sds-mobile-edition,#sds-bug-report{position:absolute;bottom:0px;background-position:0 0}#sds-mobile-edition:hover,#sds-bug-report:hover{background-position:0 -40px;cursor:pointer}#sds-mobile-edition:active,#sds-bug-report:active{background-position:0 -80px}#sds-mobile-edition{background-image:url("../images/bt_dsm_mobile.png");left:50%;margin-left:-84px;width:168px;height:40px}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack #sds-mobile-edition{background-image:url("../img/synohdpack/images/dsm/resources/images/bt_dsm_mobile.png");background-size:168px 160px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug #sds-mobile-edition{background-image:url("../img/synohdpack/images/dsm/resources/images/bt_dsm_mobile.png");background-size:168px 160px;outline:1px green dashed}}#sds-bug-report{background-image:url("../images/bt_bugs.png");left:50%;margin-left:-84px;width:168px;height:40px}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack #sds-bug-report{background-image:url("../img/synohdpack/images/dsm/resources/images/bt_bugs.png");background-size:168px 160px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug #sds-bug-report{background-image:url("../img/synohdpack/images/dsm/resources/images/bt_bugs.png");background-size:168px 160px;outline:1px green dashed}}.desktop-timeout-mask.ext-el-mask{background-color:#000000;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=$ieOpacity)";filter:alpha(opacity=20);filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=20);opacity:0.2}.x-window-tl .x-window-header{font-family:verdana, tahoma, arial ,sans-serif;background-size:16px 16px}.sds-desktop-dd-ct li.launch-icon,li.launch-icon .image,li.launch-icon .image .virtual-group-icon-background{width:64px;height:64px;background-size:64px 64px}.sds-desktop-dd-ct li.launch-icon.classical,li.launch-icon.classical .image,li.launch-icon.classical .image .virtual-group-icon-background{width:48px;height:48px;background-size:48px 48px}#sds-desktop li.launch-icon{width:136px;height:100px;padding-top:16px;position:absolute;float:left;overflow:visible;cursor:pointer}#sds-desktop li.launch-icon.classical{height:84px}.sds-desktop-dd-ct{position:absolute;width:144px;height:240px;overflow:visible;top:-10000px;list-style:none}.sds-desktop-dd-ct li.launch-icon .text,.sds-desktop-dd-ct li.launch-icon .text a{white-space:normal;visibility:hidden}.sds-desktop-dd-ct .sds-desktop-icon-selected{border-radius:0;-moz-border-radius:0;background-color:transparent;filter:none}li.launch-icon .image{position:relative;background-position:center center;background-repeat:no-repeat;margin:0 auto 4px auto}li.launch-icon .image .virtual-group-icon-background{position:absolute;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=$ieOpacity)";filter:alpha(opacity=75);filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=75);opacity:0.75;background:#282d32;background:#282d32;border-radius:5px}.sds-launch-icon-dragging-proxy.x-dd-drop-ok-add .x-dd-drop-icon{width:64px;height:64px;background-image:url(../images/icon_drag_add.png)}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-launch-icon-dragging-proxy.x-dd-drop-ok-add .x-dd-drop-icon{background-image:url("../img/synohdpack/images/dsm/resources/images/icon_drag_add.png");background-size:36px 36px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-launch-icon-dragging-proxy.x-dd-drop-ok-add .x-dd-drop-icon{background-image:url("../img/synohdpack/images/dsm/resources/images/icon_drag_add.png");background-size:36px 36px;outline:1px green dashed}}.sds-launch-icon-dragging-proxy.x-dd-drop-nodrop .x-dd-drop-icon{width:64px;height:64px;background-image:url(../images/icon_drag_ban.png)}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-launch-icon-dragging-proxy.x-dd-drop-nodrop .x-dd-drop-icon{background-image:url("../img/synohdpack/images/dsm/resources/images/icon_drag_ban.png");background-size:36px 36px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-launch-icon-dragging-proxy.x-dd-drop-nodrop .x-dd-drop-icon{background-image:url("../img/synohdpack/images/dsm/resources/images/icon_drag_ban.png");background-size:36px 36px;outline:1px green dashed}}.classical.sds-launch-icon-dragging-proxy.x-dd-drop-ok-add .x-dd-drop-icon,.classical.sds-launch-icon-dragging-proxy.x-dd-drop-nodrop .x-dd-drop-icon{width:48px;height:48px}.sds-grouping-preview-icon{position:absolute;width:24px;height:24px}.classical .sds-grouping-preview-icon{width:16px;height:16px}.sds-grouping-big-preview-icon{position:absolute;visibility:hidden;left:8px;top:8px;width:48px;height:48px}.classical .sds-grouping-big-preview-icon{width:32px;height:32px}#sds-desktop{overflow:hidden;position:absolute;width:100%;height:100%;border:0 none;overflow:hidden;cursor:default;zoom:1;top:39px}#sds-desktop.sds-desktop-hide{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=$ieOpacity)";filter:alpha(opacity=0);filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);opacity:0}#sds-desktop.semi-transparent{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=$ieOpacity)";filter:alpha(opacity=60);filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=60);opacity:0.6}#sds-desktop.sent-back{z-index:0}.ext-ie8m #sds-desktop.semi-transparent .x-window,.ext-ie8m #sds-desktop.semi-transparent .x-ie-shadow{z-index:0 !important}.sds-launch-icon-dragging-proxy .x-dd-drag-ghost{border:none !important;background-color:transparent !important;opacity:1 !important;filter:none !important}.sds-launch-icon-dragging-proxy .x-dd-drag-ghost .text{visibility:hidden !important}.sds-launch-icon-dragging-proxy .image{white-space:normal}.sds-launch-icon-dragging-proxy li{list-style:none}#sds-sub-container{position:absolute;width:316px;height:192px;overflow:visible;z-index:14002;border-radius:5px}#sds-sub-container .virtual-group-background{position:absolute;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=$ieOpacity)";filter:alpha(opacity=75);filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=75);opacity:0.75;background:#282d32;background:#282d32;top:0px;left:0px;right:0px;bottom:0px;box-shadow:0 2px 4px rgba(0,0,0,0.5);border-radius:5px}#sds-sub-container .virtual-group-background .virtual-group-arrow{left:-22px;top:84px;position:absolute;overflow:hidden;width:22px;height:35px}#sds-sub-container .virtual-group-background .virtual-group-arrow.right-arrow{left:316px}.ext-ie8m #sds-sub-container .virtual-group-background .virtual-group-arrow{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=$ieOpacity)";filter:alpha(opacity=75);filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=75);opacity:0.75;left:-12px;width:0px;height:0px;border:12px solid transparent;border-right-color:#282d32;border-left-width:0px}.ext-ie8m #sds-sub-container .virtual-group-background .virtual-group-arrow.right-arrow{border-left-color:#282d32;border-left-width:12px;border-right-width:0px;left:316px}#sds-sub-container .virtual-group-background .virtual-group-arrow::after{background:#282d32;background:#282d32;content:'';position:absolute;left:6px;width:16px;height:16px;-webkit-transform-origin:right top;-moz-transform-origin:right top;-ms-transform-origin:right top;-o-transform-origin:right top;transform-origin:right top;-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg);box-shadow:0 2px 4px rgba(0,0,0,0.5)}#sds-sub-container .virtual-group-background .virtual-group-arrow.right-arrow::after{left:0px;-webkit-transform-origin:left top;-moz-transform-origin:left top;-ms-transform-origin:left top;-o-transform-origin:left top;transform-origin:left top;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}#sds-sub-container hr{margin:0px 10px;position:relative;border:0px solid;border-top-width:1px;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=$ieOpacity)";filter:alpha(opacity=50);filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=50);opacity:0.5;border-color:#b4bec8;border-color:#b4bec8}#sds-sub-container .sds-sub-container-desc{color:#FFF;font-size:14px;font-weight:bold;margin:7px 20px;padding:2px;width:268px;height:18px;overflow:hidden;text-overflow:ellipsis;-o-text-overflow:ellipsis;white-space:nowrap;font-family:verdana, tahoma, arial, helvetica, sans-serif;border:2px solid transparent;background-color:transparent}#sds-sub-container .sds-sub-container-desc:hover{border-color:#3182c1;background-color:#b4d7f0;color:#000}#sds-sub-container .sds-sub-container-desc:focus{border-color:#3182c1;background-color:#FFF;color:#000}#sds-sub-container .sds-sub-container-div-ct{height:152px;width:276px;overflow:hidden;padding:0 20px}.ext-ie8m #sds-sub-container .sds-sub-container-div-ct div.mcontentwrapper,.ext-ie8m #sds-sub-container .sds-sub-container-div-ct div.scrollwrapper{height:100% !important}#sds-sub-container .sds-sub-container-div-ct .sds-desktop-shortcut li.launch-icon .text,#sds-sub-container .sds-sub-container-div-ct .sds-desktop-shortcut li.launch-icon .text a{overflow:hidden}#sds-sub-container .sds-desktop-shortcut{float:none;width:276px;margin:0px}#sds-sub-container .sds-desktop-shortcut li{float:none;height:84px;padding-top:0}#sds-sub-container .sds-desktop-shortcut li.launch-icon{width:64px;height:128px;margin:0px;padding:0px;overflow:visible}#sds-sub-container .sds-desktop-shortcut li.launch-icon div.image{margin:0px auto}#sds-sub-container .sds-desktop-shortcut li.launch-icon .text,#sds-sub-container .sds-desktop-shortcut li.launch-icon .text a{color:#FFFFFF}#sds-sub-container.classical{height:176px}#sds-sub-container.classical .sds-sub-container-div-ct{height:136px}#sds-sub-container.classical .sds-desktop-shortcut li.launch-icon{width:74px;height:112px}#sds-sub-container-shim{background-color:#000;opacity:0;filter:alpha(opacity=0);position:absolute;width:100%;height:100%;left:0px;top:0px;border:0px;z-index:14000}html,body{height:100%;overflow-x:hidden;overflow-y:hidden;user-select:none;-moz-user-select:-moz-none;-khtml-user-select:none;-webkit-user-select:none;-ms-user-select:none}body{position:relative}*::-moz-focus-inner{border:0;padding:0}input{position:relative}input[type=text],input[type=password],input[type=textarea]{user-select:text;-moz-user-select:text;-khtml-user-select:text;-webkit-user-select:text;-ms-user-select:text}input[type=text][readonly],input[type=password][readonly],input[type=textarea][readonly]{user-select:none;-moz-user-select:-moz-none;-khtml-user-select:none;-webkit-user-select:none;-ms-user-select:none}.x-box-item input{position:static}.x-window-header{height:18px}.x-window-header-text{line-height:18px;white-space:nowrap;display:block;overflow:hidden;text-overflow:ellipsis;-o-text-overflow:ellipsis}.x-masked{overflow:visible !important}.sds-window-mask{z-index:102}.ext-el-mask{z-index:20000}#sds-wallpaper{visibility:hidden;position:absolute;z-index:-2}.ext-ie #sds-desktop{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVR42mNgAAIAAAUAAen63NgAAAAASUVORK5CYII=)}.x-window-ml{padding-left:0px}.x-window-mr{padding-right:0px}.x-window-mc,.x-window-dlg .x-window-mc,.x-window-plain .x-window-mc{border-width:0 1px 0 1px !important;border-style:solid !important;border-color:#D0D0D0 #AAAFB4 !important}.x-window-dlg .x-window-mc{border-bottom:0 !important}.x-window-maximized .x-window-mc{border-left:1px solid #AAAFB4;border-right:1px solid #AAAFB4}.x-window-body{background-color:#FAFAFA;border-top:1px solid #AAA;border-bottom:1px solid #AAA}.x-window-dlg .x-window-footer{margin-left:-6px}.x-panel-nofooter .x-panel-bc,.x-panel-nofooter .x-window-bc{height:0px}.x-window-maximized .x-window-bc{height:0}.x-resizable-over .x-resizable-handle-southeast,.x-resizable-pinned .x-resizable-handle-southeast{width:12px;height:12px;margin:3px;background:transparent;-moz-opacity:1.0;opacity:1.0;filter:none}ul.x-tab-strip li{margin-left:4px}.x-tab-strip span.x-tab-strip-text{padding-left:10px;padding-right:10px;color:#3C3C3C}.x-tab-strip-active span.x-tab-strip-text{color:#002D4D}.x-form-display-field{padding-top:3px;padding-bottom:4px}.ext-gecko .x-form-display-field,.ext-strict .ext-ie7 .x-form-display-field{padding-top:3px;padding-bottom:4px}.x-form-check-wrap{padding:2px 0}.ext-ie7 .x-form-check-wrap{padding:1px 0}.x-window-mc{background:#ffffff none}.x-border-layout-ct,.x-panel-body{background:transparent none}.x-tree .x-panel-body{background-color:transparent}.x-window .x-toolbar-cell .x-btn{margin:2px 3px}.x-window .x-btn button{padding-left:15px;padding-right:15px}.x-window-bbar .x-toolbar-cell .x-btn,.x-panel-bbar .x-toolbar-cell .x-btn{margin:0}.x-window-bbar .x-btn button,.x-panel-bbar .x-btn button{padding:0}.ext-opera .x-form-field-trigger-wrap{overflow:hidden}ul.sds-desktop-shortcut{position:relative;float:left;width:86px;margin:0 0 0 16px}li.launch-icon .text,li.launch-icon .text a{width:100%;font-size:12px;line-height:16px;text-align:center;margin:0 auto;overflow:visible;text-overflow:ellipsis;-o-text-overflow:ellipsis}li.launch-icon{list-style-type:none}li.launch-icon.transition-cls{transition-property:left, top;transition-duration:0.5s;-webkit-transition-property:left, top;-webkit-transition-duration:0.5s;-moz-transition-property:left, top;-moz-transition-duration:0.5s;-o-transition-property:left, top;-o-transition-duration:0.5s}#sds-desktop li.launch-icon .text,#sds-desktop li.launch-icon .text a{color:#FFFFFF}.ext-chrome.syno-cjk #sds-appview .app-panel-title,.ext-chrome.syno-cjk #sds-appview .sds-appview-app-item-title,.ext-chrome.syno-cjk #sds-desktop li.launch-icon .text,.ext-chrome.syno-cjk #sds-desktop li.launch-icon .text a{text-shadow:none}#sds-desktop li.launch-icon.x-btn-click .text,#sds-desktop li.launch-icon.x-btn-click .text a{color:#8C8C8C}.sds-desktop-select-range{position:absolute;background-color:rgba(255,255,255,0.3);border:solid 1px white;opacity:1}.ext-ie .sds-desktop-select-range{background:transparent;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#4CFFFFFF,endColorstr=#4CFFFFFF);zoom:1}.sds-desktop-icon-selected{background-color:rgba(255,255,255,0.3);border-radius:10px;-moz-border-radius:10px}.ext-ie .sds-desktop-icon-selected{background:transparent;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#4CFFFFFF,endColorstr=#4CFFFFFF);zoom:1}.sds-launchbox li.launch-icon{position:absolute;width:95px;height:98px;margin:12px 0 0 7px}.sds-launchbox li.launch-icon .image{width:48px;height:48px}.sds-launchbox li.launch-icon .text,.sds-launchbox li.launch-icon .text a{font-size:11px;color:#3C3C3C}.sds-launchbox li.launch-icon.x-btn-over .text,.sds-launchbox li.launch-icon.x-btn-over .text a{color:#000000}.sds-launchbox li.launch-icon.x-btn-click .text,.sds-launchbox li.launch-icon.x-btn-click .text a{font-size:11px;color:#3C3C3C}.x-panel-body,.x-tab-panel-body,.x-tab-panel-footer,.x-window-plain .x-window-mc{background-color:#FAFAFA}.x-fieldset,.x-tab-panel-bwrap,.x-tab-panel-body{border-color:#7AAACC}.x-tab-panel-header-plain .x-tab-strip-spacer,.x-tab-panel-footer-plain .x-tab-strip-spacer{background-color:#D2EDFD;border-color:#3D7299}ul.x-tab-strip-top{border-bottom-color:#3D7299}.x-btn button{color:#3C3C3C}.x-tab-strip-top .x-tab-right,.x-tab-strip-top .x-tab-left,.x-tab-strip-top .x-tab-strip-inner{background-image:url(../images/tab_a.png)}.x-tab-strip-top .x-tab-right{padding-left:8px;background-position:0 0}.x-tab-strip-top .x-tab-left{padding-right:8px;background-position:right -100px}.x-tab-strip-top .x-tab-strip-inner{background-position:0 -50px}.x-tab-strip-top .x-tab-strip-over .x-tab-right{background-position:0 -150px}.x-tab-strip-top .x-tab-strip-over .x-tab-left{background-position:right -250px}.x-tab-strip-top .x-tab-strip-over .x-tab-strip-inner{background-position:0 -200px}.x-tab-strip-top .x-tab-strip-active .x-tab-right{background-position:0 -300px}.x-tab-strip-top .x-tab-strip-active .x-tab-left{background-position:right -400px}.x-tab-strip-top .x-tab-strip-active .x-tab-strip-inner{background-position:0 -350px}ul.x-tab-strip-bottom{background:url("../images/tab_bg_b.png") repeat-x !important;padding-bottom:2px;border-top-color:#AAAFB4}.x-tab-panel-noborder .x-tab-panel-footer-noborder{background-color:#F6F7F8;border-color:#AAAFB4}.x-layout-split.x-splitbar-v{background:url("../images/split_hcolumn.png") repeat-x scroll 0 0 transparent}.x-tab-strip-bottom .x-tab-right,.x-tab-strip-bottom .x-tab-left,.x-tab-strip-bottom .x-tab-strip-inner{background-image:url("../images/tab_b.png") !important}.x-tab-strip-bottom .x-tab-right{background-position:right -128px;padding-right:5px}.x-tab-strip-bottom .x-tab-left{background-position:0 -28px;padding-left:5px;padding-right:0}.x-tab-strip-bottom .x-tab-strip-inner{background-position:0 -78px;height:23px}.x-tab-strip-bottom .x-tab-strip-over .x-tab-right{background-position:right -278px}.x-tab-strip-bottom .x-tab-strip-over .x-tab-left{background-position:0 -178px}.x-tab-strip-bottom .x-tab-strip-over .x-tab-strip-inner{background-position:0 -228px}.x-tab-strip-bottom .x-tab-strip-active .x-tab-right{background-position:right -427px}.x-tab-strip-bottom .x-tab-strip-active .x-tab-left{background-position:0 -327px}.x-tab-strip-bottom .x-tab-strip-active .x-tab-strip-inner{background-position:0 -377px}.deactive-win .x-tool-minimize{background-position:0 -306px}.deactive-win .x-tool-maximize{background-position:0 -288px}.deactive-win .x-tool-close{background-position:0 -270px}.deactive-win .x-tool-restore{background-position:0 -324px}.deactive-win .x-tool-help{background-position:0 -342px}.x-tool-minimize{background-position:0 -108px;background-image:url(../images/bt_rt.png);width:18px;height:18px}.x-tool-minimize-over{background-position:0 -126px}.x-tool-maximize{background-position:0 -54px;background-image:url(../images/bt_rt.png);width:18px;height:18px}.x-tool-maximize-over{background-position:0 -72px}.x-tool-close{background-position:0 0;background-image:url(../images/bt_rt.png);width:18px;height:18px}.x-tool-close-over{background-position:0 -18px}.x-tool-restore{background-position:0 -162px;background-image:url(../images/bt_rt.png);width:18px;height:18px}.x-tool-restore-over{background-position:0 -180px;background-image:url(../images/bt_rt.png)}.x-tool-help{background-position:0 -216px;background-image:url(../images/bt_rt.png);width:18px;height:18px}.x-tool-help-over{background-position:0 -234px;background-image:url(../images/bt_rt.png)}.sds-window .x-btn .sds-window-tbar-help{background-position:0 0;background-image:url(../images/help_a.png);width:22px;height:22px;padding:0px}.sds-window .x-btn-over .sds-window-tbar-help{background-position:0 -22px}.sds-window .x-btn-click .sds-window-tbar-help{background-position:0 -44px}.active-win .x-window-tl{background-image:url("../images/title3_01.png");padding-left:8px}.active-win .x-window-tr{background-image:url("../images/title3_03.png");padding-right:8px}.active-win .x-window-tc{background-image:url("../images/title3_02.png")}.active-win .x-window-tbar .x-toolbar{background-image:url("../images/title3_02.png");background-position:0 -26px}.deactive-win .x-window-tl{background-image:url("../images/title3_01.png");padding-left:8px;background-position:0 -88px}.deactive-win .x-window-tr{background-image:url("../images/title3_03.png");padding-right:8px;background-position:right -88px}.deactive-win .x-window-tc{background-image:url("../images/title3_02.png");background-position:0 -88px}.deactive-win .x-window-tbar .x-toolbar{background-image:url("../images/title3_02.png");background-position:0 -114px}.active-win .x-window-bl{background-image:url("../images/bottom48_01.png")}.active-win .x-window-br{background-image:url("../images/bottom48_03_01.png");padding-right:8px}.active-win .x-window-bc{background-image:url("../images/bottom48_02_01.png")}.deactive-win .x-window-bl{background-image:url("../images/bottom48_01.png");background-position:-8px bottom}.deactive-win .x-window-br{background-image:url("../images/bottom48_03_02.png");padding-right:8px}.deactive-win .x-window-bc{background-image:url("../images/bottom48_02_02.png")}.pre-load-deactive-win-x-window-br{background-image:url("../images/bottom48_03_02.png");position:-9999px -99999px}.x-fieldset legend{color:#003C66}.sds-window .x-window-bc .x-window-footer{padding:0}body,.ext-el-mask-msg div,.x-tab-strip span.x-tab-strip-text,.x-form-field,.x-form-grow-sizer,.x-form-grow-sizer,.x-form-item,.x-form-invalid-msg,.x-fieldset legend,.x-toolbar td,.x-toolbar span,.x-toolbar input,.x-toolbar div,.x-toolbar select,.x-toolbar label,.x-grid-group-hd div.x-grid-group-title,.x-grid-empty,.x-tip .x-tip-mc,.x-tip .x-tip-header-text,.x-tip .x-tip-body,.x-window-mc,.x-window-dlg .ext-mb-textarea{font-family:verdana, tahoma, arial, helvetica, sans-serif}.x-small-editor .x-form-field,.ext-webkit .x-small-editor .x-form-field,.x-grid3-hd-row td,.x-grid3-row td,.x-grid3-summary-row td,.x-grid3-topbar,.x-grid3-bottombar,.x-tree-node,.x-date-inner th,.x-date-inner a,.x-date-mp td,.x-date-mp-btns button,.x-panel-fbar td,.x-panel-fbar span,.x-panel-fbar input,.x-panel-fbar div,.x-panel-fbar select,.x-panel-fbar label,.x-list-header-inner div em,.x-list-body dt em{font-family:verdana, arial, tahoma, helvetica, sans-serif}.x-btn{font-family:verdana, tahoma, helvetica}.x-btn button{font-family:verdana, arial, tahoma, helvetica}.x-dd-drag-ghost{font-family:verdana, arial, helvetica, sans-serif}.x-date-middle,.x-date-left,.x-date-right{font-family:verdana, "sans serif", tahoma, verdana, helvetica}.x-menu-list-item{font-family:verdana, arial, tahoma, sans-serif}.x-combo-list,.x-combo-list-hd,.x-combo-list-small,.x-panel-tl .x-panel-header,.x-panel-mc{font-family:verdana, tahoma, arial, helvetica, sans-serif}.x-btn button{font-family:verdana, arial,tahoma,verdana,helvetica}.x-ie-shadow{background-color:#333}.x-shadow .xsmc{background-image:url(../images/shadow-c.png)}.x-shadow .xsml,.x-shadow .xsmr{background-image:url(../images/shadow-lr.png)}.x-shadow .xstl,.x-shadow .xstc,.x-shadow .xstr,.x-shadow .xsbl,.x-shadow .xsbc,.x-shadow .xsbr{background-image:url(../images/shadow.png)}.without-dirty-red-grid .x-grid3-dirty-cell{background:none}.x-grid-group-hd{background-image:url(../images/grid_title_bg.png);padding-top:2px;border:none}.x-grid-group-hd div.x-grid-group-title{color:#003C66}.x-grid3-row{background-color:#FAFAFA}.x-grid3-row-alt{background-color:#F5F5F5}.x-grid3-row-over{background-image:none;background-color:#E6F0FA;border-color:#DCE6F0}.x-grid3-row-selected{background-color:#CEE0F3 !important}.x-grid-with-col-lines .x-grid3-row td.x-grid3-cell{border-right-color:#E1E6EB}.x-btn-icon .x-btn-small .x-btn-tl,.x-btn-icon .x-btn-small .x-btn-tr,.x-btn-icon .x-btn-small .x-btn-tc,.x-btn-icon .x-btn-small .x-btn-ml,.x-btn-icon .x-btn-small .x-btn-mr,.x-btn-icon .x-btn-small .x-btn-mc,.x-btn-icon .x-btn-small .x-btn-bl,.x-btn-icon .x-btn-small .x-btn-br,.x-btn-icon .x-btn-small .x-btn-bc{background-image:none}.x-btn-icon .x-btn-small .x-tbar-page-first{width:22px;height:18px;background-image:url(../images/bt_pagebar.png) !important;background-position:0 0}.x-btn-icon .x-btn-small .x-tbar-loading{width:22px;height:18px;background-image:url(../images/bt_pagebar.png) !important;background-position:0 -72px}.x-btn-icon .x-btn-small .x-tbar-page-last{width:22px;height:18px;background-image:url(../images/bt_pagebar.png) !important;background-position:0 -54px}.x-btn-icon .x-btn-small .x-tbar-page-next{width:22px;height:18px;background-image:url(../images/bt_pagebar.png) !important;background-position:0 -36px}.x-btn-icon .x-btn-small .x-tbar-page-prev{width:22px;height:18px;background-image:url(../images/bt_pagebar.png) !important;background-position:0 -18px}.x-btn-icon.x-item-disabled .x-tbar-loading,.x-btn-icon .x-btn-small .x-item-disabled .x-tbar-loading{width:22px;height:18px;background-image:url(../images/bt_pagebar.png) !important;background-position:0 -342px}.x-btn-icon.x-item-disabled .x-tbar-page-first,.x-btn-icon .x-btn-small .x-item-disabled .x-tbar-page-first{width:22px;height:18px;background-image:url(../images/bt_pagebar.png) !important;background-position:0 -270px}.x-btn-icon.x-item-disabled .x-tbar-page-last,.x-btn-icon .x-btn-small .x-item-disabled .x-tbar-page-last{width:22px;height:18px;background-image:url(../images/bt_pagebar.png) !important;background-position:0 -324px}.x-btn-icon.x-item-disabled .x-tbar-page-next,.x-btn-icon .x-btn-small .x-item-disabled .x-tbar-page-next{width:22px;height:18px;background-image:url(../images/bt_pagebar.png) !important;background-position:0 -306px}.x-btn-icon.x-item-disabled .x-tbar-page-prev,.x-btn-icon .x-btn-small .x-item-disabled .x-tbar-page-prev{width:22px;height:18px;background-image:url(../images/bt_pagebar.png) !important;background-position:0 -288px}.x-btn-over .x-btn-small .x-tbar-page-first{background-image:url(../images/bt_pagebar.png) !important;background-position:0 -90px}.x-btn-over .x-btn-small .x-tbar-loading{background-image:url(../images/bt_pagebar.png) !important;background-position:0 -162px}.x-btn-over .x-btn-small .x-tbar-page-last{background-image:url(../images/bt_pagebar.png) !important;background-position:0 -144px}.x-btn-over .x-btn-small .x-tbar-page-next{background-image:url(../images/bt_pagebar.png) !important;background-position:0 -126px}.x-btn-over .x-btn-small .x-tbar-page-prev{background-image:url(../images/bt_pagebar.png) !important;background-position:0 -108px}.x-btn-click .x-btn-small .x-tbar-page-first{background-image:url(../images/bt_pagebar.png) !important;background-position:0 -180px}.x-btn-click .x-btn-small .x-tbar-loading{background-image:url(../images/bt_pagebar.png) !important;background-position:0 -252px}.x-btn-click .x-btn-small .x-tbar-page-last{background-image:url(../images/bt_pagebar.png) !important;background-position:0 -234px}.x-btn-click .x-btn-small .x-tbar-page-next{background-image:url(../images/bt_pagebar.png) !important;background-position:0 -216px}.x-btn-click .x-btn-small .x-tbar-page-prev{background-image:url(../images/bt_pagebar.png) !important;background-position:0 -198px}.x-btn-tl,.x-btn-tr,.x-btn-tc,.x-btn-bl,.x-btn-br,.x-btn-bc{background-image:none;display:none}.x-btn-icon .x-btn-small .x-tbar-loading-process{background-image:url("../images/desktop/icon_loading.gif") !important;height:18px;width:22px}.x-btn-tl,.x-btn-tr,.x-btn-tc,.x-btn-bl,.x-btn-br,.x-btn-bc{background-image:none;display:none}.x-btn-ml,.x-btn-mr,.x-btn-mc{background-image:url("../images/bt_b.png");height:22px}.x-btn-ml{background-position:0 0 !important}.x-btn-mc{background-position:0 -22px !important}.x-btn-mr{background-position:right -44px !important}.x-btn-over .x-btn-ml{background-position:0 -66px !important}.x-btn-over .x-btn-mc{background-position:0 -88px !important}.x-btn-over .x-btn-mr{background-position:right -110px !important}.x-btn-click .x-btn-ml{background-position:0 -132px !important}.x-btn-click .x-btn-mc{background-position:0 -154px !important}.x-btn-click .x-btn-mr{background-position:right -176px !important}.x-item-disabled .x-btn-ml{background-position:0 -198px !important}.x-item-disabled .x-btn-mc{background-position:0 -220px !important}.x-item-disabled .x-btn-mr{background-position:right -242px !important}.x-btn-text{color:#3C3C3C}.x-btn-over .x-btn-text{color:#004A80}.x-btn-click .x-btn-text{color:#003C66}.x-item-disabled .x-btn-text{color:#8C8C8C}.x-form-field-wrap .x-form-trigger{background-image:url("../images/trigger.png");border-bottom-color:#6E7378}.x-form-field-wrap .x-form-date-trigger{background-image:url("../images/date-trigger.png");border-bottom-color:#6E7378}.x-form-field-wrap .x-form-trigger-over{border-bottom-color:#2E6C99}.x-trigger-wrap-focus .x-form-trigger{border-bottom-color:#2E6C99}.x-form-focus,textarea.x-form-focus{border-color:#2E6C99}.x-form-text,textarea.x-form-field{border-color:#6E7378}.active-win .x-window-tl .x-window-header{color:#3c3c3c}.deactive-win .x-window-tl .x-window-header{color:#787878}.x-window-dlg.sds-window .x-window-body{background:#D2D7DC;border-top:1px solid #AAAAAA !important}.x-window-dlg.sds-window .x-window-bc{padding-bottom:8px}.x-item-disabled{opacity:1 !important;-moz-opacity:1 !important;filter:none !important}input.x-item-disabled.x-form-text,.x-item-disabled input.x-form-text,input.x-item-disabled.x-form-file,.x-item-disabled input.x-form-file{background:#EEE;border:1px solid #AAA}.ext-webkit input.x-item-disabled.x-form-file,.ext-webkit .x-item-disabled input.x-form-file{background:none;border:none}.x-fieldset-header-text{line-height:1.5}#sds-apply-preview-form{position:absolute;background-image:url(../images/preview_bar_bg.png);width:100%;height:39px;color:#ddd;padding-top:5px;z-index:20001}#sds-apply-preview-form div.x-form-item{float:left;padding:2px 8px 0px}.ext-ie #sds-apply-preview-form div.x-form-item{padding:6px 8px 0px}#sds-apply-preview-form .x-btn{float:left;padding-left:10px}#sds-apply-preview-form td{background-image:none}#sds-apply-preview-form td.x-btn-ml,#sds-apply-preview-form td.x-btn-mc,#sds-apply-preview-form td.x-btn-mr{height:24px;background-image:url(../images/preview_bar_bt.png)}#sds-apply-preview-form .x-btn td.x-btn-ml,#sds-apply-preview-form .x-btn td.x-btn-mr{width:6px}#sds-apply-preview-form .x-btn td.x-btn-ml{background-position:0px 0px !important}#sds-apply-preview-form .x-btn td.x-btn-mc{background-position:0px -24px !important}#sds-apply-preview-form .x-btn td.x-btn-mr{background-position:0px -48px !important}#sds-apply-preview-form .x-btn-over td.x-btn-ml{background-position:0px -72px !important}#sds-apply-preview-form .x-btn-over td.x-btn-mc{background-position:0px -96px !important}#sds-apply-preview-form .x-btn-over td.x-btn-mr{background-position:0px -120px !important}#sds-apply-preview-form button{color:#fff}.x-tip .x-tip-body,.x-window-dlg .ext-mb-text,.x-window-dlg .ext-mb-content{word-wrap:break-word}.x-panel-ghost-simple{z-index:12000;position:absolute;border:2px solid #808080;cursor:move !important}.x-tree-node-collapsed .x-tree-node-icon{background-image:url("../images/folder.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .x-tree-node-collapsed .x-tree-node-icon{background-image:url("../img/synohdpack/images/dsm/resources/images/folder.png");background-size:16px 16px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .x-tree-node-collapsed .x-tree-node-icon{background-image:url("../img/synohdpack/images/dsm/resources/images/folder.png");background-size:16px 16px;outline:1px green dashed}}.x-tree-node-expanded .x-tree-node-icon{background-image:url("../images/folder.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .x-tree-node-expanded .x-tree-node-icon{background-image:url("../img/synohdpack/images/dsm/resources/images/folder.png");background-size:16px 16px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .x-tree-node-expanded .x-tree-node-icon{background-image:url("../img/synohdpack/images/dsm/resources/images/folder.png");background-size:16px 16px;outline:1px green dashed}}.ext-ie9 .x-btn button,.ext-ie8 .x-btn button{padding-top:0px}.ext-ie9.syno-cjk .x-form-check-wrap{line-height:15px}.ext-ie9.syno-cjk .x-btn .ux-pathbutton-center button{padding-top:4px;line-height:16px}.ext-ie9.syno-cjk .x-btn button,.ext-ie8.syno-cjk .x-btn button{padding-top:2px}.syno-webfm .file-drag-over .ext-el-mask{background-color:#75fa32;background-color:rgba(117,250,50,0.05)}.syno-webfm .file-drag-over .ext-el-mask-msg{background-color:transparent !important;background-image:url(../images/drop_files_texts_area.png);width:258px;height:48px;border:0 !important;padding:0;box-shadow:0px 0px 0px !important}.syno-webfm .file-drag-over .ext-el-mask-msg div{background-color:transparent !important;border-color:transparent;font-size:16px;width:258px;line-height:48px;text-align:center;border:0px !important;padding:0;color:#FFFFFF !important}.file-drag-over.file-drop-curved .ext-el-mask{background-color:#8ab8e6;-moz-opacity:0.75;opacity:0.75}.file-drag-over.file-drop-curved .ext-el-mask-msg{height:108px;width:236px;background-image:url(../images/drop_files_area_curved.png);background-color:transparent !important;border:0 !important;padding:0 !important}.file-drag-over.file-drop-curved .ext-el-mask-msg div{font-size:13px;color:#000;padding-top:50px;height:58px;text-align:center;line-height:58px;background-color:transparent !important;border:none;margin-right:auto;margin-left:auto}.ext-gecko4 .x-window-tc,.x-window-bc{background-color:gray}.ext-gecko4 .x-window-bl,.ext-gecko4 .x-window-br{border-bottom-right-radius:2px}.ext-gecko4 .x-window-bl{background-color:gray;border-bottom-left-radius:2px}.ext-gecko4 .x-window-tl,.ext-gecko4 .x-window-tr{background-color:gray;border-top-right-radius:2px}.ext-gecko4 .x-window-tl{border-top-left-radius:2px}.syno-input-non-border{background-color:#FAFAFA;background-image:none;border:1px solid transparent !important;padding:0;margin:0}.sds-expose-mask{position:absolute;left:0px;top:0px;width:100%;height:100%;background:#000;opacity:0;transition-delay:0s;transition-property:opacity;transition-duration:0.8s;-webkit-transition-delay:0s;-webkit-transition-property:opacity;-webkit-transition-duration:0.8s;-moz-transition-delay:0s;-moz-transition-property:opacity;-moz-transition-duration:0.8s}.sds-expose-win-mask{position:absolute;left:0px;top:0px;width:100%;height:100%;background:transparent;z-index:9999;box-shadow:0 0 10px 10px rgba(0,0,0,0.3);-moz-box-shadow:0 0 10px 10px rgba(0,0,0,0.3);border-radius:5px;-moz-border-radius:5px}.sds-expose-win-mask.sds-expose-win-over{box-shadow:0 0 10px 10px rgba(255,255,255,0.5);-moz-box-shadow:0 0 10px 10px rgba(255,255,255,0.5);border-radius:5px;-moz-border-radius:5px}.sds-expose-win-transform{-webkit-transform-origin:0% 0%;-moz-transform-origin:0% 0%;-o-transform-origin:0% 0%;transform-origin:0% 0%;-webkit-transition-delay:0.1s;-webkit-transition-property:-webkit-transform;-webkit-transition-duration:0.8s;-webkit-backface-visibility:hidden;-webkit-perspective:1000;-moz-transition-delay:0.1s;-moz-transition-property:-moz-transform;-moz-transition-duration:0.8s;transition-delay:0.1s;transition-property:transform;transition-duration:0.8s}.sds-expose-win-transform.sds-expose-win-transform-restore{transition-duration:0.3s;-webkit-transition-duration:0.3s;-moz-transition-duration:0.3s}.sds-expose-win-hidden{position:absolute !important;top:-10000px !important;left:-10000px !important}.sds-expose-desc-ct{position:absolute;text-align:center;z-index:12000;cursor:default}.sds-expose-desc-img{display:inline-block}.sds-expose-desc-text{display:inline-block;font-size:12pt;color:#FFFFFF;font-weight:bold;vertical-align:4px;margin-left:15px;text-shadow:0.1em 0.1em 0.1em #000000}.sds-grouping-show-big-preview .sds-grouping-preview-icon{visibility:hidden}.sds-grouping-show-big-preview .sds-grouping-big-preview-icon{visibility:visible}.x-dd-drag-ghost .sds-grouping-show-big-preview .sds-grouping-preview-icon{visibility:visible;position:relative !important;left:7px !important;top:6px !important;padding:0 1px}.x-dd-drag-ghost .sds-grouping-show-big-preview .sds-grouping-big-preview-icon{visibility:hidden}.sds-launch-icon-input{position:absolute;border-color:#3182c1;background-color:#FFF;color:#000;font-size:14px;padding:1px;width:86px;font-family:verdana, tahoma, arial, helvetica, sans-serif;border:2px solid transparent}.sds-ellipsis{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap}.ext-strict .ext-ie9 .x-date-menu{height:auto}.x-tree-node,.launch-icon,.x-grid3-cell,.x-menu-item{-webkit-touch-callout:none}input.x-form-text{border-radius:0}#sds-desktop.sds-is-gesture-switching .x-shadow{visibility:hidden}.sds-hidden-scrollpanel .x-list-body-inner{display:inline-block;width:100%;height:100%}.x-panel-ghost ul{background-color:#f2f2f2}.x-panel-ghost{background-color:transparent}.sds-user-about-mask{position:absolute;top:0;left:0;right:0;bottom:0;background-color:#000000;z-index:1000;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=$ieOpacity)";filter:alpha(opacity=20);filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=20);opacity:0.2}a{text-decoration:none}.ext-ie9 #sds-desktop li.launch-icon .text,.ext-ie8m #sds-desktop li.launch-icon .text,.ext-ie9 #sds-desktop li.launch-icon .text a,.ext-ie8m #sds-desktop li.launch-icon .text a,.ext-ie9 #sds-login-dialog-title,.ext-ie8m #sds-login-dialog-title{filter:none !important}input[type=text]::-ms-clear{display:none}input[type=password]::-ms-reveal{display:none}div{-ms-touch-action:none;touch-action:none}.ext-ie11 .x-tree-node-indent img,.ext-ie11 .x-tree-node-icon,.ext-ie11 .x-tree-ec-icon{vertical-align:middle !important}.sds-switch-win-gesture-hide-to-left{-webkit-transform-origin:0% 0%;-moz-transform-origin:0% 0%;-ms-transform-origin:0% 0%;-o-transform-origin:0% 0%;transform-origin:0% 0%;-webkit-transition-delay:0.1s;-moz-transition-delay:0.1s;-o-transition-delay:0.1s;transition-delay:0.1s;-webkit-transition-property:-webkit-transform;-moz-transition-property:-moz-transform;-o-transition-property:-o-transform;transition-property:transform;-webkit-transition-duration:0.8s;-moz-transition-duration:0.8s;-o-transition-duration:0.8s;transition-duration:0.8s;-webkit-transform:translate3d(-2000px, 0px, 0);-moz-transform:translate3d(-2000px, 0px, 0);-ms-transform:translate3d(-2000px, 0px, 0);-o-transform:translate3d(-2000px, 0px, 0);transform:translate3d(-2000px, 0px, 0);-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000;-moz-perspective:1000;-ms-perspective:1000;-o-perspective:1000;perspective:1000}.sds-switch-win-gesture-hide-to-right{-webkit-transform-origin:0% 0%;-moz-transform-origin:0% 0%;-ms-transform-origin:0% 0%;-o-transform-origin:0% 0%;transform-origin:0% 0%;-webkit-transition-delay:0.1s;-moz-transition-delay:0.1s;-o-transition-delay:0.1s;transition-delay:0.1s;-webkit-transition-property:-webkit-transform;-moz-transition-property:-moz-transform;-o-transition-property:-o-transform;transition-property:transform;-webkit-transition-duration:0.8s;-moz-transition-duration:0.8s;-o-transition-duration:0.8s;transition-duration:0.8s;-webkit-transform:translate3d(2000px, 0px, 0);-moz-transform:translate3d(2000px, 0px, 0);-ms-transform:translate3d(2000px, 0px, 0);-o-transform:translate3d(2000px, 0px, 0);transform:translate3d(2000px, 0px, 0);-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000;-moz-perspective:1000;-ms-perspective:1000;-o-perspective:1000;perspective:1000}.sds-switch-win-gesture-show-from-left{-webkit-transform-origin:0% 0%;-moz-transform-origin:0% 0%;-ms-transform-origin:0% 0%;-o-transform-origin:0% 0%;transform-origin:0% 0%;-webkit-transform:translate3d(-2000px, 0px, 0);-moz-transform:translate3d(-2000px, 0px, 0);-ms-transform:translate3d(-2000px, 0px, 0);-o-transform:translate3d(-2000px, 0px, 0);transform:translate3d(-2000px, 0px, 0)}.sds-switch-win-gesture-show-from-right{-webkit-transform-origin:0% 0%;-moz-transform-origin:0% 0%;-ms-transform-origin:0% 0%;-o-transform-origin:0% 0%;transform-origin:0% 0%;-webkit-transform:translate3d(2000px, 0px, 0);-moz-transform:translate3d(2000px, 0px, 0);-ms-transform:translate3d(2000px, 0px, 0);-o-transform:translate3d(2000px, 0px, 0);transform:translate3d(2000px, 0px, 0)}.sds-switch-win-gesture-show-force-hidden{visibility:hidden !important}.sds-switch-win-gesture-show-transition{-webkit-transition-delay:0.1s;-moz-transition-delay:0.1s;-o-transition-delay:0.1s;transition-delay:0.1s;-webkit-transition-property:-webkit-transform;-moz-transition-property:-moz-transform;-o-transition-property:-o-transform;transition-property:transform;-webkit-transition-duration:0.5s;-moz-transition-duration:0.5s;-o-transition-duration:0.5s;transition-duration:0.5s;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000;-moz-perspective:1000;-ms-perspective:1000;-o-perspective:1000;perspective:1000}.sds-widget-window .x-window-tl .x-window-header .x-tool,.sds-widget-window .x-window-tl .x-window-header.sds-widget-over .x-tool{-webkit-transition-property:opacity;-moz-transition-property:opacity;-o-transition-property:opacity;transition-property:opacity;-webkit-transition-timing-function:ease-in;-moz-transition-timing-function:ease-in;-o-transition-timing-function:ease-in;transition-timing-function:ease-in;-webkit-transition-duration:0.2s;-moz-transition-duration:0.2s;-o-transition-duration:0.2s;transition-duration:0.2s}.sds-window-v5 .ext-el-mask-msg div,.sds-widget-window .ext-el-mask-msg div{line-height:24px;font-size:16px;color:#505A64;border:0px}.sds-window-v5 .ext-el-mask-msg,.sds-widget-window .ext-el-mask-msg{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:0;border-color:#C8D2DC;overflow:hidden;box-shadow:0px 1px 4px rgba(0,0,0,0.25)}.sds-window-v5,.sds-widget-window{box-shadow:0px 2px 8px rgba(0,0,0,0.5)}.sds-window-v5 .x-panel-tbar .x-toolbar-layout-ct,.sds-widget-window .x-panel-tbar .x-toolbar-layout-ct{padding-bottom:8px}.ext-ie8 .sds-window-v5,.ext-ie8 .sds-widget-window{border:1px solid #999;border-top-style:none}.sds-window-v5.sds-window-v5-no-shadow,.sds-window-v5-no-shadow.sds-widget-window{box-shadow:none}.sds-window-v5.no-resize .x-resizable-handle,.no-resize.sds-widget-window .x-resizable-handle{width:0px !important;height:0px !important}.sds-window-v5 .ext-el-mask,.sds-widget-window .ext-el-mask{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=$ieOpacity)";filter:alpha(opacity=50);filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=50);opacity:0.5;background-color:#FFFFFF}.sds-window-v5 .ext-el-mask-msg,.sds-widget-window .ext-el-mask-msg{background-color:#FFFFFF}.sds-window-v5 .ext-el-mask-msg div,.sds-widget-window .ext-el-mask-msg div{padding:7px 20px 7px 20px;background-color:#FFFFFF}.sds-window-v5 .x-window-tl,.sds-widget-window .x-window-tl,.sds-window-v5 .x-window-tc,.sds-widget-window .x-window-tc,.sds-window-v5 .x-window-tr,.sds-widget-window .x-window-tr{background-image:none}.sds-window-v5 .x-window-ml,.sds-widget-window .x-window-ml,.sds-window-v5 .x-window-mc,.sds-widget-window .x-window-mc,.sds-window-v5 .x-window-mr,.sds-widget-window .x-window-mr{background-image:none}.sds-window-v5 .x-window-bwrap .x-window-bl,.sds-widget-window .x-window-bwrap .x-window-bl,.sds-window-v5 .x-window-bwrap .x-window-bc,.sds-widget-window .x-window-bwrap .x-window-bc,.sds-window-v5 .x-window-bwrap .x-window-br,.sds-widget-window .x-window-bwrap .x-window-br{background-image:none;padding:0}.sds-window-v5 .x-window-mc,.sds-widget-window .x-window-mc{border:0 !important;background-color:#FFFFFF}.sds-window-v5 .x-window-tl,.sds-widget-window .x-window-tl{background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzAwODZlNSIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #0086e5), color-stop(100%, #ffffff));background-image:-webkit-linear-gradient(#0086e5,#ffffff);background-image:-moz-linear-gradient(#0086e5,#ffffff);background-image:-o-linear-gradient(#0086e5,#ffffff);background-image:linear-gradient(#0086e5,#ffffff);background-color:#FFFFFF;border-top:3px solid #0086E5;padding-left:12px;padding-bottom:0}.sds-window-v5 .x-window-tr,.sds-widget-window .x-window-tr{padding-right:12px}.sds-window-v5 .x-window-header,.sds-widget-window .x-window-header{height:24px;padding:4px 0 5px 0;padding-left:0px !important;background-size:24px 24px}.sds-window-v5 .x-window-header-text,.sds-widget-window .x-window-header-text{line-height:24px;font-size:13px;font-weight:bold;text-align:center;color:#0086E5}.sds-window-v5 .x-tool,.sds-widget-window .x-tool{width:24px;height:24px;margin-left:8px;background-image:url("../images/rt_button.png");background-repeat:no-repeat}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-window-v5 .x-tool,.synohdpack .sds-widget-window .x-tool{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/rt_button.png");background-size:24px 768px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-window-v5 .x-tool,.synohdpackdebug .sds-widget-window .x-tool{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/rt_button.png");background-size:24px 768px;outline:1px green dashed}}.sds-window-v5 .x-tool-close,.sds-widget-window .x-tool-close{background-position:0 0px}.sds-window-v5 .x-tool-close-over,.sds-widget-window .x-tool-close-over{background-position:0 -24px}.sds-window-v5 .x-tool-maximize,.sds-widget-window .x-tool-maximize{background-position:0 -96px}.sds-window-v5 .x-tool-maximize-over,.sds-widget-window .x-tool-maximize-over{background-position:0 -120px}.sds-window-v5 .x-tool-restore,.sds-widget-window .x-tool-restore{background-position:0 -192px}.sds-window-v5 .x-tool-restore-over,.sds-widget-window .x-tool-restore-over{background-position:0 -216px}.sds-window-v5 .x-tool-minimize,.sds-widget-window .x-tool-minimize{background-position:0 -288px}.sds-window-v5 .x-tool-minimize-over,.sds-widget-window .x-tool-minimize-over{background-position:0 -312px}.sds-window-v5 .x-tool-help,.sds-widget-window .x-tool-help{background-position:0 -384px}.sds-window-v5 .x-tool-help-over,.sds-widget-window .x-tool-help-over{background-position:0 -408px}.sds-window-v5.deactive-win .x-window-tl,.deactive-win.sds-widget-window .x-window-tl{border-top-color:#8C96A0;background-image:linear-gradient(#e6ebf0,#ffffff);background-position:0 0}.sds-window-v5.deactive-win .x-window-header,.deactive-win.sds-widget-window .x-window-header{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=$ieOpacity)";filter:alpha(opacity=60);filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=60);opacity:0.6}.sds-window-v5.deactive-win .x-window-header-text,.deactive-win.sds-widget-window .x-window-header-text{color:#8C96A0}.sds-window-v5.deactive-win .x-tool-close,.deactive-win.sds-widget-window .x-tool-close{background-position:0 -72px}.sds-window-v5.deactive-win .x-tool-maximize,.deactive-win.sds-widget-window .x-tool-maximize{background-position:0 -168px}.sds-window-v5.deactive-win .x-tool-restore,.deactive-win.sds-widget-window .x-tool-restore{background-position:0 -264px}.sds-window-v5.deactive-win .x-tool-minimize,.deactive-win.sds-widget-window .x-tool-minimize{background-position:0 -360px}.sds-window-v5.deactive-win .x-tool-help,.deactive-win.sds-widget-window .x-tool-help{background-position:0 -456px}.sds-window-v5.syno-window-hide .vscrollerbar.scrollgeneric,.syno-window-hide.sds-widget-window .vscrollerbar.scrollgeneric,.sds-window-v5.syno-window-hide .hscrollerbar.scrollgeneric,.syno-window-hide.sds-widget-window .hscrollerbar.scrollgeneric{visibility:hidden !important}.sds-window-v5.x-window-maximized .x-window-tc,.x-window-maximized.sds-widget-window .x-window-tc{background-color:transparent}.sds-window-v5 .x-window-tbar .x-toolbar,.sds-widget-window .x-window-tbar .x-toolbar{background-image:none;background-color:white;padding:0 12px;border:0}.sds-window-v5 .x-window-body,.sds-widget-window .x-window-body{border:none;background-color:#FFF}.sds-window-v5 .x-window-bl,.sds-widget-window .x-window-bl{background-color:#FFF}.sds-window-v5 .x-window-bc,.sds-widget-window .x-window-bc{background-color:transparent}.sds-window-v5 .x-window-br,.sds-widget-window .x-window-br{padding-right:6px}.sds-window-v5 .x-panel-body,.sds-widget-window .x-panel-body{background-color:transparent}.sds-window-v5 .x-window-bc .x-window-footer,.sds-widget-window .x-window-bc .x-window-footer{padding:0}.sds-window-v5 .x-mask-loading div,.sds-widget-window .x-mask-loading div{padding:7px 20px 7px 52px;background-position:20px;background-image:url("../../../scripts/ext-3.4/ux/images/Components/icon_loading.gif")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-window-v5 .x-mask-loading div,.synohdpack .sds-widget-window .x-mask-loading div{background-image:url("../img/synohdpack/images/Components/icon_loading.gif");background-size:24px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-window-v5 .x-mask-loading div,.synohdpackdebug .sds-widget-window .x-mask-loading div{background-image:url("../img/synohdpack/images/Components/icon_loading.gif");background-size:24px;outline:1px green dashed}}.sds-window-v5.x-window .x-toolbar-cell .x-btn,.x-window.sds-widget-window .x-toolbar-cell .x-btn{margin:0px 3px}.sds-window-v5 .x-toolbar,.sds-widget-window .x-toolbar{background-color:transparent;background-image:none}.sds-widget-window{width:322px;box-shadow:none;background:#f5faff;background:rgba(245,250,255,0.85);border:1px solid #AFB9C3}.ext-ie8 .sds-widget-window{border-top-style:solid}.sds-widget-window.x-window-maximized.scale-item.add-wdiget-effect{-webkit-transform:scale(0.8, 0.8);-moz-transform:scale(0.8, 0.8);-ms-transform:scale(0.8, 0.8);-o-transform:scale(0.8, 0.8);transform:scale(0.8, 0.8)}.sds-widget-window .x-window-mc{background-color:transparent}.sds-widget-window.sds-widget-window-medium .x-window-body{margin-bottom:1px}.sds-widget-window .x-window-body{-webkit-transition-property:height;-moz-transition-property:height;-o-transition-property:height;transition-property:height;-webkit-transition-timing-function:ease-in;-moz-transition-timing-function:ease-in;-o-transition-timing-function:ease-in;transition-timing-function:ease-in;-webkit-transition-duration:0.2s;-moz-transition-duration:0.2s;-o-transition-duration:0.2s;transition-duration:0.2s;margin-bottom:3px;background-color:transparent}.sds-widget-window.x-window-maximized .x-window-tl .x-window-tc{padding:0px}.sds-widget-window .x-window-tl{background-color:transparent !important;padding:1px 0 2px 4px;background-image:none !important;border-top:0px !important}.sds-widget-window .x-window-tl .x-window-header{background-repeat:no-repeat;padding:4px 0 4px 0;background-size:32px}.sds-widget-window .x-window-tl .x-window-header .icon-click{cursor:pointer;position:absolute;top:4px;width:32px;height:30px}.sds-widget-window .x-window-tl .x-window-header .x-window-header-text{text-align:left;color:#505A64;padding-left:34px;cursor:move}.sds-widget-window .x-window-tl .x-window-header .x-tool-add{background-position:0 -384px}.sds-widget-window .x-window-tl .x-window-header .x-tool-add.x-tool-disabled{background-position:0 -456px !important;cursor:move}.sds-widget-window .x-window-tl .x-window-header .x-tool-add-over{background-position:0 -408px}.sds-widget-window .x-window-tl .x-window-header .x-tool-pin{background-position:0 -480px}.sds-widget-window .x-window-tl .x-window-header .x-tool-pin.x-tool-disabled{background-position:0 -552px !important;cursor:move}.sds-widget-window .x-window-tl .x-window-header .x-tool-pin.x-tool-toggled{background-position:0 -528px}.sds-widget-window .x-window-tl .x-window-header .x-tool-pin-over{background-position:0 -504px}.sds-widget-window .x-window-tl .x-window-header .x-tool-close:active{background-position:0 -48px}.sds-widget-window .x-window-tl .x-window-header .x-tool-maximize:active{background-position:0 -144px}.sds-widget-window .x-window-tl .x-window-header .x-tool-restore:active{background-position:0 -240px}.sds-widget-window .x-window-tl .x-window-header .x-tool-minimize:active{background-position:0 -336px}.sds-widget-window .x-window-tl .x-window-header .x-tool-add:active{background-position:0 -432px}.sds-widget-window .x-window-tl .x-window-header .x-tool-pin:active{background-position:0 -528px}.sds-widget-window .x-window-tl .x-window-header .x-tool{opacity:0;visibility:hidden;background-image:url("../images/widget_window/widget_rt_button.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-widget-window .x-window-tl .x-window-header .x-tool{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/widget_window/widget_rt_button.png");background-size:24px 672px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-widget-window .x-window-tl .x-window-header .x-tool{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/widget_window/widget_rt_button.png");background-size:24px 672px;outline:1px green dashed}}.sds-widget-window .x-window-tl .x-window-header.sds-widget-over .x-tool{opacity:1;visibility:visible}.sds-widget-window .x-window-tr{padding-right:6px}.sds-widget-window.x-panel-ghost .x-tool{visibility:hidden}.sds-widget-window.x-window-maximized .x-window-draggable .x-window-header-text{cursor:move}.sds-widget-window.sds-widget-window-nodrop{cursor:no-drop}.sds-widget-window.sds-widget-window-nodrop .x-window-draggable .x-window-header-text{cursor:no-drop}.sds-widget-window .x-grid3-body,.sds-widget-window .x-grid3-row,.sds-widget-window .x-table-layout-ct{width:100% !important}.sds-widget-window .syno-sysinfo-system-health,.sds-widget-window .resource-monitor-widget,.sds-widget-window .sys-storage-grid{margin-top:-4px}.sds-window-v5.x-window-dlg,.x-window-dlg.sds-widget-window{color:#505a64}.ext-ie8 .sds-window-v5.x-window-dlg,.ext-ie8 .x-window-dlg.sds-widget-window{border-top-style:solid}.sds-window-v5.x-window-dlg input,.x-window-dlg.sds-widget-window input,.sds-window-v5.x-window-dlg textarea,.x-window-dlg.sds-widget-window textarea{color:#505a64}.sds-window-v5.x-window-dlg .x-window-tl,.x-window-dlg.sds-widget-window .x-window-tl{border-top:none;padding-bottom:0px}.sds-window-v5.x-window-dlg .ext-mb-icon,.x-window-dlg.sds-widget-window .ext-mb-icon{width:48px;height:48px}.sds-window-v5.x-window-dlg .ext-mb-question,.x-window-dlg.sds-widget-window .ext-mb-question{background-image:url("../images/icon_question.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-window-v5.x-window-dlg .ext-mb-question,.synohdpack .x-window-dlg.sds-widget-window .ext-mb-question{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/icon_question.png");background-size:48px 48px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-window-v5.x-window-dlg .ext-mb-question,.synohdpackdebug .x-window-dlg.sds-widget-window .ext-mb-question{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/icon_question.png");background-size:48px 48px;outline:1px green dashed}}.sds-window-v5.x-window-dlg .x-window-footer,.x-window-dlg.sds-widget-window .x-window-footer{padding:24px 20px 20px 20px;margin-left:0px}.sds-window-v5.x-window-dlg td.x-toolbar-cell,.x-window-dlg.sds-widget-window td.x-toolbar-cell{padding:0 0 0 10px}.sds-window-v5.x-window-dlg .x-toolbar-cell .x-btn,.x-window-dlg.sds-widget-window .x-toolbar-cell .x-btn{margin:0}.sds-window-v5.x-window-dlg .syno-mb-custom-btn,.x-window-dlg.sds-widget-window .syno-mb-custom-btn{position:absolute;bottom:20px;left:84px}.sds-window-v5.x-window-dlg .ext-mb-input,.x-window-dlg.sds-widget-window .ext-mb-input{height:24px}.sds-window-v5.x-window-dlg .ext-mb-content,.x-window-dlg.sds-widget-window .ext-mb-content{line-height:28px}.sds-window-v5.x-window-dlg .x-dlg-icon .ext-mb-content,.x-window-dlg.sds-widget-window .x-dlg-icon .ext-mb-content{margin-left:64px}.sds-window-v5.x-window-dlg .syno-mb-progress-status,.x-window-dlg.sds-widget-window .syno-mb-progress-status{position:absolute;right:20px;bottom:4px;line-height:16px}.sds-window-v5.x-window-dlg .syno-mb-progress .x-progress-text,.x-window-dlg.sds-widget-window .syno-mb-progress .x-progress-text{display:none}.sds-window-v5 .x-progress-wrap,.sds-widget-window .x-progress-wrap{border:none;margin-bottom:4px}.sds-window-v5 .x-progress-inner,.sds-widget-window .x-progress-inner{background:#D2DCE6;border-radius:3px;overflow:hidden;height:16px}.sds-window-v5 .x-progress-bar,.sds-widget-window .x-progress-bar{position:relative;background-color:#0086E5;background-image:none;border:none}.sds-window-v5 .x-progress-bar::before,.sds-widget-window .x-progress-bar::before{content:'';width:100%;height:100%;position:absolute;top:0;left:0;border-radius:3px;background-image:repeating-linear-gradient(-45deg, transparent, transparent 6.5px, rgba(255,255,255,0.15) 1px, rgba(255,255,255,0.15) 13px)}.sds-window-v5 .syno-ux-tab-panel .x-tab-panel-body,.sds-widget-window .syno-ux-tab-panel .x-tab-panel-body{padding-top:5px}.sds-window-v5 .syno-ux-tab-panel form.x-form,.sds-widget-window .syno-ux-tab-panel form.x-form{padding:0 10px}.sds-window-v5 .syno-ux-tab-panel form.x-form .syno-ux-fieldset,.sds-widget-window .syno-ux-tab-panel form.x-form .syno-ux-fieldset{margin:0 -10px 8px -10px}.sds-window-v5 .syno-ux-tab-panel .syno-ux-formpanel-has-fieldset form.x-form,.sds-widget-window .syno-ux-tab-panel .syno-ux-formpanel-has-fieldset form.x-form{padding-left:0;padding-right:0}.sds-window-v5 .syno-ux-tab-panel .syno-ux-formpanel-has-fieldset form.x-form .x-form-item,.sds-widget-window .syno-ux-tab-panel .syno-ux-formpanel-has-fieldset form.x-form .x-form-item{margin-left:10px;margin-right:10px}.sds-window-v5 .syno-ux-tab-panel .syno-ux-formpanel-has-fieldset form.x-form .syno-ux-fieldset,.sds-widget-window .syno-ux-tab-panel .syno-ux-formpanel-has-fieldset form.x-form .syno-ux-fieldset{margin-left:0;margin-right:0}.sds-window-v5 .syno-ux-tab-panel .syno-ux-formpanel-has-fieldset form.x-form .syno-ux-fieldset .x-form-item,.sds-widget-window .syno-ux-tab-panel .syno-ux-formpanel-has-fieldset form.x-form .syno-ux-fieldset .x-form-item{margin-left:0;margin-right:0}.sds-window .x-statusbar .x-window-bc{background-image:url(/scripts/ext-3/resources/images/gray/window/top-bottom.png)}.sds-window .x-statusbar .x-status-text{height:20px;line-height:20px;padding-left:25px !important;background-position:1px 2px}.sds-window .x-statusbar .x-toolbar-right{padding-right:16px}.sds-window .x-statusbar .x-toolbar-right .x-btn{padding-top:6px;padding-bottom:6px}.sds-window .x-window-body .x-statusbar .x-toolbar-right .x-btn{padding-top:0;padding-bottom:0}.sds-window .x-tab-panel-fbar.x-statusbar .x-status-text,.sds-window .x-panel-fbar.x-statusbar .x-status-text{white-space:normal;line-height:14px;background-position:1px 0px}.sds-window-v5 .x-window-footer .x-statusbar,.sds-widget-window .x-window-footer .x-statusbar{padding-left:20px;padding-right:20px}.sds-window-v5 .x-window-footer .x-statusbar .x-toolbar-ct,.sds-widget-window .x-window-footer .x-statusbar .x-toolbar-ct{background-image:url("../images/shadow_footbar.png");background-repeat:repeat-x;background-color:transparent;border:0px;padding-top:4px}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-window-v5 .x-window-footer .x-statusbar .x-toolbar-ct,.synohdpack .sds-widget-window .x-window-footer .x-statusbar .x-toolbar-ct{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/shadow_footbar.png");background-size:8px 4px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-window-v5 .x-window-footer .x-statusbar .x-toolbar-ct,.synohdpackdebug .sds-widget-window .x-window-footer .x-statusbar .x-toolbar-ct{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/shadow_footbar.png");background-size:8px 4px;outline:1px green dashed}}.sds-window-v5 .x-window-footer .x-statusbar .x-toolbar-cell,.sds-widget-window .x-window-footer .x-statusbar .x-toolbar-cell{padding:0}.sds-window-v5 .x-window-footer .x-statusbar .x-toolbar-right .syno-ux-button,.sds-widget-window .x-window-footer .x-statusbar .x-toolbar-right .syno-ux-button{margin:8px 10px 8px 0px}.x-dd-drag-proxy .x-dd-drag-ghost{padding:0px}.x-dd-drag-proxy .x-dd-drop-icon{top:0px;left:0px}.x-dd-drop-ok,.x-dd-drop-ok-add,.x-tree-drop-ok-append,.x-tree-drop-ok-above,.x-tree-drop-ok-between,.x-tree-drop-ok-below,.x-dd-drop-nodrop{background-color:#FFFFFF;-webkit-box-shadow:0px 1px 4px #000;-moz-box-shadow:0px 1px 4px #000;box-shadow:0px 1px 4px #000;-webkit-box-shadow:0px 1px 4px rgba(0,0,0,0.25);-moz-box-shadow:0px 1px 4px rgba(0,0,0,0.25);box-shadow:0px 1px 4px rgba(0,0,0,0.25);border:1px;border-color:#C8D2DC;border-radius:3px;padding:7px 11px 7px 41px}.x-dd-drop-ok .x-dd-drop-icon,.x-dd-drop-ok-add .x-dd-drop-icon,.x-tree-drop-ok-append .x-dd-drop-icon,.x-tree-drop-ok-above .x-dd-drop-icon,.x-tree-drop-ok-between .x-dd-drop-icon,.x-tree-drop-ok-below .x-dd-drop-icon,.x-dd-drop-nodrop .x-dd-drop-icon{width:24px;height:24px;left:10px;top:7px;background-image:url("../images/item_drag_status.png");background-position:0 0}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .x-dd-drop-ok .x-dd-drop-icon,.synohdpack .x-dd-drop-ok-add .x-dd-drop-icon,.synohdpack .x-tree-drop-ok-append .x-dd-drop-icon,.synohdpack .x-tree-drop-ok-above .x-dd-drop-icon,.synohdpack .x-tree-drop-ok-between .x-dd-drop-icon,.synohdpack .x-tree-drop-ok-below .x-dd-drop-icon,.synohdpack .x-dd-drop-nodrop .x-dd-drop-icon{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/item_drag_status.png");background-size:72px 24px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .x-dd-drop-ok .x-dd-drop-icon,.synohdpackdebug .x-dd-drop-ok-add .x-dd-drop-icon,.synohdpackdebug .x-tree-drop-ok-append .x-dd-drop-icon,.synohdpackdebug .x-tree-drop-ok-above .x-dd-drop-icon,.synohdpackdebug .x-tree-drop-ok-between .x-dd-drop-icon,.synohdpackdebug .x-tree-drop-ok-below .x-dd-drop-icon,.synohdpackdebug .x-dd-drop-nodrop .x-dd-drop-icon{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/item_drag_status.png");background-size:72px 24px;outline:1px green dashed}}.x-dd-drop-ok .x-dd-drag-ghost,.x-dd-drop-ok-add .x-dd-drag-ghost,.x-tree-drop-ok-append .x-dd-drag-ghost,.x-tree-drop-ok-above .x-dd-drag-ghost,.x-tree-drop-ok-between .x-dd-drag-ghost,.x-tree-drop-ok-below .x-dd-drag-ghost,.x-dd-drop-nodrop .x-dd-drag-ghost{border:none;color:#505A64;font-size:16px;line-height:24px;height:24px}.x-dd-drop-ok .x-dd-drag-ghost .x-tree-node-icon,.x-dd-drop-ok-add .x-dd-drag-ghost .x-tree-node-icon,.x-tree-drop-ok-append .x-dd-drag-ghost .x-tree-node-icon,.x-tree-drop-ok-above .x-dd-drag-ghost .x-tree-node-icon,.x-tree-drop-ok-between .x-dd-drag-ghost .x-tree-node-icon,.x-tree-drop-ok-below .x-dd-drag-ghost .x-tree-node-icon,.x-dd-drop-nodrop .x-dd-drag-ghost .x-tree-node-icon{display:none}.x-dd-drop-ok .x-dd-drag-ghost .x-grid3-hd-inner,.x-dd-drop-ok .x-dd-drag-ghost span,.x-dd-drop-ok-add .x-dd-drag-ghost .x-grid3-hd-inner,.x-dd-drop-ok-add .x-dd-drag-ghost span,.x-tree-drop-ok-append .x-dd-drag-ghost .x-grid3-hd-inner,.x-tree-drop-ok-append .x-dd-drag-ghost span,.x-tree-drop-ok-above .x-dd-drag-ghost .x-grid3-hd-inner,.x-tree-drop-ok-above .x-dd-drag-ghost span,.x-tree-drop-ok-between .x-dd-drag-ghost .x-grid3-hd-inner,.x-tree-drop-ok-between .x-dd-drag-ghost span,.x-tree-drop-ok-below .x-dd-drag-ghost .x-grid3-hd-inner,.x-tree-drop-ok-below .x-dd-drag-ghost span,.x-dd-drop-nodrop .x-dd-drag-ghost .x-grid3-hd-inner,.x-dd-drop-nodrop .x-dd-drag-ghost span{padding:0px;color:#505A64;font-size:16px;line-height:24px}.x-dd-drop-ok .x-dd-drag-ghost .x-grid3-hd-inner,.x-dd-drop-ok-add .x-dd-drag-ghost .x-grid3-hd-inner,.x-tree-drop-ok-append .x-dd-drag-ghost .x-grid3-hd-inner,.x-tree-drop-ok-above .x-dd-drag-ghost .x-grid3-hd-inner,.x-tree-drop-ok-between .x-dd-drag-ghost .x-grid3-hd-inner,.x-tree-drop-ok-below .x-dd-drag-ghost .x-grid3-hd-inner,.x-dd-drop-nodrop .x-dd-drag-ghost .x-grid3-hd-inner{border:none;background-color:white;background-image:none}.x-dd-drop-ok .x-dd-drop-icon{background-position:-24px 0}.x-dd-drop-nodrop .x-dd-drop-icon{background-position:-48px 0}.x-dd-drop-nodrop.x-dd-drag-repair{display:none}.sds-launch-icon-dragging-proxy .sds-application-notify-badge-num{display:none}.sds-launch-icon-dragging-proxy .x-dd-drag-ghost{border:none !important;background-color:transparent !important;opacity:1 !important;filter:none !important}.sds-launch-icon-dragging-proxy.x-dd-drag-proxy.x-dd-reposition-ok,.sds-launch-icon-dragging-proxy.x-dd-drag-proxy.x-dd-drop-nodrop,.sds-launch-icon-dragging-proxy.x-dd-drag-proxy.x-dd-drop-ok-add,.sds-launch-icon-dragging-proxy.x-dd-drag-proxy.x-dd-drop-ok,.x-dd-drag-proxy.x-dd-drop-nodrop.x-dd-drag-repair{background-color:transparent;border:none;padding:0px;box-shadow:none}.sds-launch-icon-dragging-proxy.x-dd-drag-proxy.x-dd-reposition-ok .x-dd-drag-ghost,.sds-launch-icon-dragging-proxy.x-dd-drag-proxy.x-dd-drop-nodrop .x-dd-drag-ghost,.sds-launch-icon-dragging-proxy.x-dd-drag-proxy.x-dd-drop-ok-add .x-dd-drag-ghost,.sds-launch-icon-dragging-proxy.x-dd-drag-proxy.x-dd-drop-ok .x-dd-drag-ghost,.x-dd-drag-proxy.x-dd-drop-nodrop.x-dd-drag-repair .x-dd-drag-ghost{width:82px}.sds-launch-icon-dragging-proxy.x-dd-drag-proxy.x-dd-drop-ok-add .x-dd-drop-icon{width:36px;height:36px;top:40px;left:46px;background-image:url("../images/icon_drag_add.png");background-position:center}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-launch-icon-dragging-proxy.x-dd-drag-proxy.x-dd-drop-ok-add .x-dd-drop-icon{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/icon_drag_add.png");background-size:36px 36px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-launch-icon-dragging-proxy.x-dd-drag-proxy.x-dd-drop-ok-add .x-dd-drop-icon{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/icon_drag_add.png");background-size:36px 36px;outline:1px green dashed}}.sds-launch-icon-dragging-proxy.x-dd-drag-proxy.x-dd-drop-ok .x-dd-drop-icon,.sds-launch-icon-dragging-proxy.x-dd-drag-proxy.x-dd-drop-nodrop .x-dd-drop-icon{width:36px;height:36px;top:40px;left:46px;background-image:url("../images/icon_drag_ban.png");background-position:center}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-launch-icon-dragging-proxy.x-dd-drag-proxy.x-dd-drop-ok .x-dd-drop-icon,.synohdpack .sds-launch-icon-dragging-proxy.x-dd-drag-proxy.x-dd-drop-nodrop .x-dd-drop-icon{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/icon_drag_ban.png");background-size:36px 36px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-launch-icon-dragging-proxy.x-dd-drag-proxy.x-dd-drop-ok .x-dd-drop-icon,.synohdpackdebug .sds-launch-icon-dragging-proxy.x-dd-drag-proxy.x-dd-drop-nodrop .x-dd-drop-icon{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/icon_drag_ban.png");background-size:36px 36px;outline:1px green dashed}}.sds-launch-icon-dragging-proxy .x-dd-drag-ghost .text{visibility:hidden !important}.sds-launch-icon-dragging-proxy .image{white-space:normal}.sds-launch-icon-dragging-proxy li{list-style:none}.sds-launch-icon-dragging-proxy li.launch-icon .image{margin-left:6px;margin-top:6px}.sds-shim-for-iframe{position:absolute;top:0;width:100%;height:100%;zIndex:20;background-color:transparent}#sds-taskbar{z-index:5;position:relative;height:39px;background:repeat-x scroll 0 0 transparent;background-image:url("../images/taskbar/taskbar_bg.png")}#sds-taskbar .x-btn-tl,#sds-taskbar .x-btn-tc,#sds-taskbar .x-btn-tr,#sds-taskbar .x-btn-bl,#sds-taskbar .x-btn-bc,#sds-taskbar .x-btn-br{display:none}#sds-taskbar .x-btn tr:first-child,#sds-taskbar .x-btn tr:last-child{display:none}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack #sds-taskbar{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/taskbar/taskbar_bg.png");background-size:4px 39px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug #sds-taskbar{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/taskbar/taskbar_bg.png");background-size:4px 39px;outline:1px green dashed}}#sds-taskbar-shadow{z-index:4;position:absolute;width:100%;height:43px;background:repeat-x scroll 0 39px transparent;background-image:url("../images/taskbar/taskbar_shadow.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack #sds-taskbar-shadow{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/taskbar/taskbar_shadow.png");background-size:4px 4px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug #sds-taskbar-shadow{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/taskbar/taskbar_shadow.png");background-size:4px 4px;outline:1px green dashed}}#sds-taskbar li .x-btn-text{padding:0}#sds-taskbar-panel-wrap{background:transparent;height:39px}.sds-taskbar-overflow-menu-button.x-btn-noicon.x-box-item{padding:3px 25px 3px 15px;width:72px;background:no-repeat;background-image:url("../images/taskbar/taskbar_split.png");background-position:62px 5px !important}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-taskbar-overflow-menu-button.x-btn-noicon.x-box-item{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/taskbar/taskbar_split.png");background-size:2px 28px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-taskbar-overflow-menu-button.x-btn-noicon.x-box-item{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/taskbar/taskbar_split.png");background-size:2px 28px;outline:1px green dashed}}.sds-taskbar-overflow-menu-button .x-btn-ml,.sds-taskbar-overflow-menu-button .x-btn-mr,.sds-taskbar-overflow-menu-button .x-btn-tl,.sds-taskbar-overflow-menu-button .x-btn-tc,.sds-taskbar-overflow-menu-button .x-btn-tr,.sds-taskbar-overflow-menu-button .x-btn-bl,.sds-taskbar-overflow-menu-button .x-btn-bc,.sds-taskbar-overflow-menu-button .x-btn-br{display:none}.sds-taskbar-overflow-menu-button .x-btn-mc{background:no-repeat;background-image:url("../images/taskbar/more_apps.png");background-position:0px 0px !important;width:32px;height:32px}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-taskbar-overflow-menu-button .x-btn-mc{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/taskbar/more_apps.png");background-size:32px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-taskbar-overflow-menu-button .x-btn-mc{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/taskbar/more_apps.png");background-size:32px 96px;outline:1px green dashed}}.sds-taskbar-overflow-menu-button.x-btn-over .x-btn-mc{background-position:0px -32px !important}.sds-taskbar-overflow-menu-button.x-btn-click .x-btn-mc{background-position:0px -64px !important}#sds-taskbar-right .x-btn-ml,#sds-taskbar-right .x-btn-mr,#sds-taskbar-right .x-btn-tl,#sds-taskbar-right .x-btn-tc,#sds-taskbar-right .x-btn-tr,#sds-taskbar-right .x-btn-bl,#sds-taskbar-right .x-btn-bc,#sds-taskbar-right .x-btn-br{display:none}#sds-taskbar-right .sds-taskbar-right-left,#sds-taskbar-right .sds-taskbar-right-center,#sds-taskbar-right .sds-taskbar-right-right{height:39px;float:left}#sds-taskbar-right .sds-taskbar-right-left{width:20px;background:no-repeat;background-image:url("../images//taskbar/taskbar_split.png");background-position:10px 6px}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack #sds-taskbar-right .sds-taskbar-right-left{background-image:url("../img/synohdpack/images/dsm/resources/css/../images//taskbar/taskbar_split.png");background-size:2px 28px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug #sds-taskbar-right .sds-taskbar-right-left{background-image:url("../img/synohdpack/images/dsm/resources/css/../images//taskbar/taskbar_split.png");background-size:2px 28px;outline:1px green dashed}}#sds-taskbar-right .sds-taskbar-right-right{width:6px}#sds-taskbar-right table,#sds-taskbar-right table button{width:32px;height:32px}#sds-taskbar-right .x-btn-mc{width:202px;height:32px;background-image:none;background-color:transparent}.sds-tray-panel{box-shadow:0px 2px 6px rgba(0,0,0,0.5);background-color:#FFFFFF;border:0px none;padding:4px 10px;color:#505050}.sds-tray-panel .x-panel-body{background-color:#FFFFFF;border:none}.sds-tray-panel .x-panel-header{background:transparent;border:0;border-bottom:solid 1px #EBF0F5;text-align:center}.sds-tray-panel .x-panel-header .x-panel-header-text{font-size:13px;color:#505A64;font-weight:bold;line-height:23px}.sds-tray-panel .sds-tray-panel-arrow{background:transparent;width:24px;height:18px;position:absolute;overflow:hidden}.ext-ie8m .sds-tray-panel .sds-tray-panel-arrow{width:0px;height:0px;border:10px solid transparent;border-bottom-width:13px;border-bottom-color:#fff;border-top-width:0px}.sds-tray-panel .sds-tray-panel-arrow::after{background:#fff;background:#fff;content:'';position:absolute;bottom:0px;left:2px;width:14px;height:14px;-webkit-transform-origin:left bottom;-moz-transform-origin:left bottom;-ms-transform-origin:left bottom;-o-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg);box-shadow:2px 2px 6px rgba(0,0,0,0.5)}#sds-taskbar-notification-button,#sds-taskbar-user-button,#sds-taskbar-search-button,#sds-taskbar-widget-button,#sds-taskbar-preview-button{float:left;margin:0px 6px 0px 6px;padding-top:4px;cursor:pointer}#sds-taskbar-user-button .x-btn-mc{background-image:url("../images/taskbar/tray_icon_user_menu.png");background-position:0px 0px !important}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack #sds-taskbar-user-button .x-btn-mc{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/taskbar/tray_icon_user_menu.png");background-size:32px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug #sds-taskbar-user-button .x-btn-mc{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/taskbar/tray_icon_user_menu.png");background-size:32px 96px;outline:1px green dashed}}#sds-taskbar-user-button .x-btn-over .x-btn-mc{background-position:0px -32px !important}#sds-taskbar-user-button .x-btn-click .x-btn-mc,#sds-taskbar-user-button .x-btn-pressed .x-btn-mc{background-position:0px -64px !important}#sds-taskbar-search-button .x-btn-mc{background-image:url("../images/taskbar/tray_icon_search.png");background-position:0px 0px !important}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack #sds-taskbar-search-button .x-btn-mc{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/taskbar/tray_icon_search.png");background-size:32px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug #sds-taskbar-search-button .x-btn-mc{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/taskbar/tray_icon_search.png");background-size:32px 96px;outline:1px green dashed}}#sds-taskbar-search-button .x-btn-over .x-btn-mc{background-position:0px -32px !important}#sds-taskbar-search-button .x-btn-click .x-btn-mc,#sds-taskbar-search-button .x-btn-pressed .x-btn-mc{background-position:0px -64px !important}#sds-taskbar-notification-button .x-btn-mc{background-image:url("../images/taskbar/tray_icon_notification.png");background-position:0px 0px !important}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack #sds-taskbar-notification-button .x-btn-mc{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/taskbar/tray_icon_notification.png");background-size:32px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug #sds-taskbar-notification-button .x-btn-mc{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/taskbar/tray_icon_notification.png");background-size:32px 96px;outline:1px green dashed}}#sds-taskbar-notification-button .x-btn-over .x-btn-mc{background-position:0px -32px !important}#sds-taskbar-notification-button .x-btn-click .x-btn-mc,#sds-taskbar-notification-button .x-btn-pressed .x-btn-mc{background-position:0px -64px !important}#sds-taskbar-widget-button .x-btn-mc{background-image:url("../images/taskbar/tray_icon_widget.png");background-position:0px 0px !important}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack #sds-taskbar-widget-button .x-btn-mc{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/taskbar/tray_icon_widget.png");background-size:32px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug #sds-taskbar-widget-button .x-btn-mc{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/taskbar/tray_icon_widget.png");background-size:32px 96px;outline:1px green dashed}}#sds-taskbar-widget-button .x-btn-over .x-btn-mc{background-position:0px -32px !important}#sds-taskbar-widget-button .x-btn-click .x-btn-mc,#sds-taskbar-widget-button .x-btn-pressed .x-btn-mc{background-position:0px -64px !important}#sds-taskbar-preview-button .x-btn-mc{background-image:url("../images/taskbar/tray_icon_pilot_view.png");background-position:0px 0px !important}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack #sds-taskbar-preview-button .x-btn-mc{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/taskbar/tray_icon_pilot_view.png");background-size:32px 128px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug #sds-taskbar-preview-button .x-btn-mc{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/taskbar/tray_icon_pilot_view.png");background-size:32px 128px;outline:1px green dashed}}#sds-taskbar-preview-button .x-btn-over .x-btn-mc{background-position:0px -32px !important}#sds-taskbar-preview-button .x-btn-click .x-btn-mc,#sds-taskbar-preview-button .x-btn-pressed .x-btn-mc{background-position:0px -64px !important}#sds-taskbar-preview-button .x-item-disabled .x-btn-mc{background-position:0px -96px !important}#sds-taskbar-showall{float:left}#sds-taskbar-showall .x-btn-ml,#sds-taskbar-showall .x-btn-mr{display:none}#sds-taskbar-showall .x-btn-text{width:22px;height:39px}#sds-taskbar-showall .x-btn-mc{background:transparent no-repeat;background-image:url("../images/taskbar/showdesktop.png") !important;background-position:0px 0px !important}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack #sds-taskbar-showall .x-btn-mc{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/taskbar/showdesktop.png") !important;background-size:22px 117px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug #sds-taskbar-showall .x-btn-mc{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/taskbar/showdesktop.png") !important;background-size:22px 117px;outline:1px green dashed}}#sds-taskbar-showall .x-btn-over .x-btn-mc{background-position:0px -39px !important}#sds-taskbar-showall .x-btn-click .x-btn-mc{background-position:0px -78px !important}#sds-taskbar-startbutton{float:left}#sds-taskbar-startbutton .x-btn-ml{display:none}#sds-taskbar-startbutton .x-btn-text{width:89px;height:39px}#sds-taskbar-startbutton .x-btn-mc{background:transparent no-repeat;background-image:url("../images/taskbar/taskbar_bt_apps.png") !important;background-position:0px 0px !important}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack #sds-taskbar-startbutton .x-btn-mc{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/taskbar/taskbar_bt_apps.png") !important;background-size:89px 117px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug #sds-taskbar-startbutton .x-btn-mc{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/taskbar/taskbar_bt_apps.png") !important;background-size:89px 117px;outline:1px green dashed}}#sds-taskbar-startbutton .x-btn-over .x-btn-mc{background-position:0px -39px !important}#sds-taskbar-startbutton .x-btn-click .x-btn-mc{background-position:0px -78px !important}#sds-taskbar-startbutton .x-btn-pressed .x-btn-mc{background-position:0px -78px !important}#sds-taskbar-startbutton .x-btn-mr{background:transparent no-repeat;background-position:right 0px !important;background-image:url("../images/taskbar/taskbar_bt_widgets_shadow.png") !important;width:8px}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack #sds-taskbar-startbutton .x-btn-mr{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/taskbar/taskbar_bt_widgets_shadow.png") !important;background-size:8px 39px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug #sds-taskbar-startbutton .x-btn-mr{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/taskbar/taskbar_bt_widgets_shadow.png") !important;background-size:8px 39px;outline:1px green dashed}}#sds-taskbar-startbutton .x-btn-pressed .x-btn-mr{visibility:hidden}#sds-tray-panel{right:0 !important;left:auto !important;padding:4px 0 3px 0}#sds-tray-panel .sds-tray-strip-wrap{width:100%;zoom:1}#sds-tray-panel .sds-tray-strip-wrap .x-btn.x-btn-icon .x-btn-mc .sds-tray-item-device{background-image:url("../../modules/ExternalDevices/images/tray_icon_device.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack #sds-tray-panel .sds-tray-strip-wrap .x-btn.x-btn-icon .x-btn-mc .sds-tray-item-device{background-image:url("../img/synohdpack/images/dsm/modules/ExternalDevices/images/tray_icon_device.png");background-size:32px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug #sds-tray-panel .sds-tray-strip-wrap .x-btn.x-btn-icon .x-btn-mc .sds-tray-item-device{background-image:url("../img/synohdpack/images/dsm/modules/ExternalDevices/images/tray_icon_device.png");background-size:32px;outline:1px green dashed}}#sds-tray-panel .sds-tray-strip-wrap .x-btn.x-btn-icon .x-btn-mc .sds-tray-item-disk-port{background-image:url("../../modules/PollingTask/images/tray_icon_disk_port.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack #sds-tray-panel .sds-tray-strip-wrap .x-btn.x-btn-icon .x-btn-mc .sds-tray-item-disk-port{background-image:url("../img/synohdpack/images/dsm/modules/PollingTask/images/tray_icon_disk_port.png");background-size:32px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug #sds-tray-panel .sds-tray-strip-wrap .x-btn.x-btn-icon .x-btn-mc .sds-tray-item-disk-port{background-image:url("../img/synohdpack/images/dsm/modules/PollingTask/images/tray_icon_disk_port.png");background-size:32px;outline:1px green dashed}}#sds-tray-panel .sds-tray-strip-wrap .x-btn.x-btn-icon .x-btn-mc .sds-tray-item-static-upload{background-image:url(../../modules/FileTaskMonitor/images/tray_icon_upload.png);background-position:0 0 !important}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack #sds-tray-panel .sds-tray-strip-wrap .x-btn.x-btn-icon .x-btn-mc .sds-tray-item-static-upload{background-image:url("../img/synohdpack/images/dsm/modules/FileTaskMonitor/images/tray_icon_upload.png");background-size:32px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug #sds-tray-panel .sds-tray-strip-wrap .x-btn.x-btn-icon .x-btn-mc .sds-tray-item-static-upload{background-image:url("../img/synohdpack/images/dsm/modules/FileTaskMonitor/images/tray_icon_upload.png");background-size:32px;outline:1px green dashed}}#sds-tray-panel .sds-tray-strip-wrap .x-btn.x-btn-icon .x-btn-mc .sds-tray-item-ani-upload{background-image:url(../../modules/FileTaskMonitor/images/tray_icon_upload.gif);background-position:0 0 !important}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack #sds-tray-panel .sds-tray-strip-wrap .x-btn.x-btn-icon .x-btn-mc .sds-tray-item-ani-upload{background-image:url("../img/synohdpack/images/dsm/modules/FileTaskMonitor/images/tray_icon_upload.gif");background-size:32px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug #sds-tray-panel .sds-tray-strip-wrap .x-btn.x-btn-icon .x-btn-mc .sds-tray-item-ani-upload{background-image:url("../img/synohdpack/images/dsm/modules/FileTaskMonitor/images/tray_icon_upload.gif");background-size:32px;outline:1px green dashed}}#sds-tray-panel .sds-tray-strip-wrap .x-btn.x-btn-icon .x-btn-mc .sds-tray-item-static-bgtask{background-image:url(../../modules/FileTaskMonitor/images/tray_icon_bgtask.png);background-position:0 0 !important}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack #sds-tray-panel .sds-tray-strip-wrap .x-btn.x-btn-icon .x-btn-mc .sds-tray-item-static-bgtask{background-image:url("../img/synohdpack/images/dsm/modules/FileTaskMonitor/images/tray_icon_bgtask.png");background-size:32px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug #sds-tray-panel .sds-tray-strip-wrap .x-btn.x-btn-icon .x-btn-mc .sds-tray-item-static-bgtask{background-image:url("../img/synohdpack/images/dsm/modules/FileTaskMonitor/images/tray_icon_bgtask.png");background-size:32px;outline:1px green dashed}}#sds-tray-panel .sds-tray-strip-wrap .x-btn.x-btn-icon .x-btn-mc .sds-tray-item-ani-bgtask{background-image:url(../../modules/FileTaskMonitor/images/tray_icon_bgtask.gif);background-position:0 0 !important}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack #sds-tray-panel .sds-tray-strip-wrap .x-btn.x-btn-icon .x-btn-mc .sds-tray-item-ani-bgtask{background-image:url("../img/synohdpack/images/dsm/modules/FileTaskMonitor/images/tray_icon_bgtask.gif");background-size:32px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug #sds-tray-panel .sds-tray-strip-wrap .x-btn.x-btn-icon .x-btn-mc .sds-tray-item-ani-bgtask{background-image:url("../img/synohdpack/images/dsm/modules/FileTaskMonitor/images/tray_icon_bgtask.gif");background-size:32px;outline:1px green dashed}}#sds-tray-panel .sds-tray-strip-wrap .x-btn.x-btn-icon .x-btn-mc .sds-tray-item-static-download{background-image:url(../../modules/FileTaskMonitor/images/tray_icon_download.png);background-position:0 0 !important}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack #sds-tray-panel .sds-tray-strip-wrap .x-btn.x-btn-icon .x-btn-mc .sds-tray-item-static-download{background-image:url("../img/synohdpack/images/dsm/modules/FileTaskMonitor/images/tray_icon_download.png");background-size:32px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug #sds-tray-panel .sds-tray-strip-wrap .x-btn.x-btn-icon .x-btn-mc .sds-tray-item-static-download{background-image:url("../img/synohdpack/images/dsm/modules/FileTaskMonitor/images/tray_icon_download.png");background-size:32px;outline:1px green dashed}}#sds-tray-panel .sds-tray-strip-wrap .x-btn.x-btn-icon .x-btn-mc .sds-tray-item-ani-download{background-image:url(../../modules/FileTaskMonitor/images/tray_icon_download.gif);background-position:0 0 !important}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack #sds-tray-panel .sds-tray-strip-wrap .x-btn.x-btn-icon .x-btn-mc .sds-tray-item-ani-download{background-image:url("../img/synohdpack/images/dsm/modules/FileTaskMonitor/images/tray_icon_download.gif");background-size:32px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug #sds-tray-panel .sds-tray-strip-wrap .x-btn.x-btn-icon .x-btn-mc .sds-tray-item-ani-download{background-image:url("../img/synohdpack/images/dsm/modules/FileTaskMonitor/images/tray_icon_download.gif");background-size:32px;outline:1px green dashed}}#sds-tray-panel .sds-tray-strip-wrap .x-btn.x-btn-icon .x-btn-mc .sds-tray-item-static-creating-thumbnail{background-image:url(../../modules/ThumbConvertProgress/images/tray_icon_creating_thumbnail.png);background-position:0 0 !important}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack #sds-tray-panel .sds-tray-strip-wrap .x-btn.x-btn-icon .x-btn-mc .sds-tray-item-static-creating-thumbnail{background-image:url("../img/synohdpack/images/dsm/modules/ThumbConvertProgress/images/tray_icon_creating_thumbnail.png");background-size:32px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug #sds-tray-panel .sds-tray-strip-wrap .x-btn.x-btn-icon .x-btn-mc .sds-tray-item-static-creating-thumbnail{background-image:url("../img/synohdpack/images/dsm/modules/ThumbConvertProgress/images/tray_icon_creating_thumbnail.png");background-size:32px;outline:1px green dashed}}#sds-tray-panel .sds-tray-strip-wrap .x-btn.x-btn-icon .x-btn-mc .sds-tray-item-ani-creating-thumbnail{background-image:url(../../modules/ThumbConvertProgress/images/tray_icon_creating_thumbnail.gif);background-position:0 0 !important}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack #sds-tray-panel .sds-tray-strip-wrap .x-btn.x-btn-icon .x-btn-mc .sds-tray-item-ani-creating-thumbnail{background-image:url("../img/synohdpack/images/dsm/modules/ThumbConvertProgress/images/tray_icon_creating_thumbnail.gif");background-size:32px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug #sds-tray-panel .sds-tray-strip-wrap .x-btn.x-btn-icon .x-btn-mc .sds-tray-item-ani-creating-thumbnail{background-image:url("../img/synohdpack/images/dsm/modules/ThumbConvertProgress/images/tray_icon_creating_thumbnail.gif");background-size:32px;outline:1px green dashed}}#sds-tray-panel .sds-tray-strip-wrap .x-btn.x-btn-icon button{background-position:0px 0px !important}#sds-tray-panel .sds-tray-strip-wrap .x-btn.x-btn-icon.x-btn-over button{background-position:0px -32px !important}#sds-tray-panel .sds-tray-strip-wrap .x-btn.x-btn-icon.x-btn-click button{background-position:0px -64px !important}#sds-tray-panel .sds-tray-strip-wrap .x-btn.x-btn-icon.x-btn-pressed button{background-position:0px -64px !important}#sds-tray-panel .sds-tray-strip{display:block;zoom:1}#sds-tray-panel .sds-widget-tray{cursor:pointer;margin:0px 6px 0px 6px}#sds-tray-panel li{float:right}#sds-tray-panel li .x-btn-text{height:32px;width:32px;margin:0px 6px 0px 6px}#sds-tray-panel .x-btn-ml,#sds-tray-panel .x-btn-mr{background:none transparent;display:none}#sds-tray-panel .x-btn-mc{background:none transparent}.sds-tray-item-notification{position:relative}#sds-taskbuttons-panel li{position:relative;float:left}#sds-taskbuttons-panel li .loading{position:absolute;left:0;top:0;width:62px;height:39px;background:no-repeat scroll center center transparent;background-image:url("../images/desktop/taskbar_spinner.gif")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack #sds-taskbuttons-panel li .loading{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/desktop/taskbar_spinner.gif");background-size:24px 24px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug #sds-taskbuttons-panel li .loading{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/desktop/taskbar_spinner.gif");background-size:24px 24px;outline:1px green dashed}}#sds-taskbuttons-panel li.sds-taskbuttons-edge{float:left;margin:0 !important;padding:0 !important;border:0 none !important;font-size:1px !important;line-height:1px !important;overflow:hidden;zoom:1;background:transparent !important;width:1px}#sds-taskbuttons-panel li .x-btn-text{width:62px;height:39px}#sds-taskbuttons-panel li .x-btn-ml,#sds-taskbuttons-panel li .x-btn-mr{display:none}#sds-taskbuttons-panel li .x-btn.x-btn-icon button{background-size:32px 32px}#sds-taskbuttons-panel li .x-btn.x-btn-icon.launched .x-btn-mc{background:transparent no-repeat;background-image:url("../images/taskbar/taskbar_bt.png") !important;background-position:0px 0px !important}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack #sds-taskbuttons-panel li .x-btn.x-btn-icon.launched .x-btn-mc{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/taskbar/taskbar_bt.png") !important;background-size:186px 39px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug #sds-taskbuttons-panel li .x-btn.x-btn-icon.launched .x-btn-mc{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/taskbar/taskbar_bt.png") !important;background-size:186px 39px;outline:1px green dashed}}#sds-taskbuttons-panel li .x-btn.x-btn-icon.x-btn-over .x-btn-mc{background:transparent no-repeat;background-image:url("../images/taskbar/taskbar_bt.png") !important;background-position:-62px 0px !important}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack #sds-taskbuttons-panel li .x-btn.x-btn-icon.x-btn-over .x-btn-mc{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/taskbar/taskbar_bt.png") !important;background-size:186px 39px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug #sds-taskbuttons-panel li .x-btn.x-btn-icon.x-btn-over .x-btn-mc{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/taskbar/taskbar_bt.png") !important;background-size:186px 39px;outline:1px green dashed}}#sds-taskbuttons-panel li .x-btn.x-btn-icon.x-btn-click .x-btn-mc,#sds-taskbuttons-panel li .x-btn.x-btn-icon.launched.active .x-btn-mc{background:transparent no-repeat;background-image:url("../images/taskbar/taskbar_bt.png") !important;background-position:-124px 0px !important}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack #sds-taskbuttons-panel li .x-btn.x-btn-icon.x-btn-click .x-btn-mc,.synohdpack #sds-taskbuttons-panel li .x-btn.x-btn-icon.launched.active .x-btn-mc{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/taskbar/taskbar_bt.png") !important;background-size:186px 39px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug #sds-taskbuttons-panel li .x-btn.x-btn-icon.x-btn-click .x-btn-mc,.synohdpackdebug #sds-taskbuttons-panel li .x-btn.x-btn-icon.launched.active .x-btn-mc{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/taskbar/taskbar_bt.png") !important;background-size:186px 39px;outline:1px green dashed}}.sds-user-menu{min-width:140px;padding:4px 10px 4px 10px;position:absolute;top:39px;right:0px;overflow:hidden;z-index:12000;background:#fff repeat-x;background-image:url("../images/taskbar/taskbar_shadow.png");box-shadow:-2px 5px 8px rgba(0,0,0,0.5);user-select:none;-moz-user-select:-moz-none;-khtml-user-select:none;-webkit-user-select:none}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-user-menu{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/taskbar/taskbar_shadow.png");background-size:4px 4px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-user-menu{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/taskbar/taskbar_shadow.png");background-size:4px 4px;outline:1px green dashed}}.sds-user-menu .x-menu{background-color:transparent !important;background-image:none !important}.sds-user-menu .x-menu .x-menu-item-text{font-size:12px;line-height:32px;padding-left:6px}.sds-user-menu .x-menu .x-menu-item-icon{top:4px}.sds-user-menu .x-menu-item{padding-top:0;padding-bottom:0}.sds-user-menu .x-menu-sep-li{height:7px}.sds-user-menu .x-menu-sep-li .x-menu-sep{margin:0px;border-bottom-color:#EBF0F5;background-color:transparent}.sds-user-menu .x-menu-list-item{padding:0px}.sds-user-menu .x-menu-item-active,.sds-user-menu .x-menu-item-active .x-menu-item{background-image:none;background-color:transparent;border-color:transparent;border:0px}.sds-user-menu .sds-user-menu-username{display:inline-block;width:136px;font-weight:bold;color:#505A64;line-height:24px;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.sds-user-menu .sds-user-menu-options{width:24px;height:24px;background-image:url("../images/taskbar/user_menu_options.png");background-position:0 0}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-user-menu .sds-user-menu-options{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/taskbar/user_menu_options.png");background-size:24px 72px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-user-menu .sds-user-menu-options{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/taskbar/user_menu_options.png");background-size:24px 72px;outline:1px green dashed}}.sds-user-menu .sds-user-menu-restart{width:24px;height:24px;background-image:url("../images/taskbar/user_menu_restart.png");background-position:0 0}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-user-menu .sds-user-menu-restart{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/taskbar/user_menu_restart.png");background-size:24px 72px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-user-menu .sds-user-menu-restart{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/taskbar/user_menu_restart.png");background-size:24px 72px;outline:1px green dashed}}.sds-user-menu .sds-user-menu-shutdown{width:24px;height:24px;background-image:url("../images/taskbar/user_menu_shutdown.png");background-position:0 0}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-user-menu .sds-user-menu-shutdown{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/taskbar/user_menu_shutdown.png");background-size:24px 72px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-user-menu .sds-user-menu-shutdown{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/taskbar/user_menu_shutdown.png");background-size:24px 72px;outline:1px green dashed}}.sds-user-menu .sds-user-menu-logout{width:24px;height:24px;background-image:url("../images/taskbar/user_menu_logout.png");background-position:0 0}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-user-menu .sds-user-menu-logout{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/taskbar/user_menu_logout.png");background-size:24px 72px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-user-menu .sds-user-menu-logout{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/taskbar/user_menu_logout.png");background-size:24px 72px;outline:1px green dashed}}.sds-user-menu .sds-user-menu-about{width:24px;height:24px;background-image:url("../images/taskbar/user_menu_about.png");background-position:0 0}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-user-menu .sds-user-menu-about{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/taskbar/user_menu_about.png");background-size:24px 72px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-user-menu .sds-user-menu-about{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/taskbar/user_menu_about.png");background-size:24px 72px;outline:1px green dashed}}.sds-user-menu .sds-user-menu-options-over img,.sds-user-menu .sds-user-menu-restart-over img,.sds-user-menu .sds-user-menu-about-over img,.sds-user-menu .sds-user-menu-shutdown-over img,.sds-user-menu .sds-user-menu-logout-over img{background-position:0px -24px !important}.sds-user-menu .sds-user-menu-options-over .x-menu-item-text,.sds-user-menu .sds-user-menu-restart-over .x-menu-item-text,.sds-user-menu .sds-user-menu-about-over .x-menu-item-text,.sds-user-menu .sds-user-menu-shutdown-over .x-menu-item-text,.sds-user-menu .sds-user-menu-logout-over .x-menu-item-text{color:#78828C}.sds-user-menu .sds-user-menu-options-click img,.sds-user-menu .sds-user-menu-restart-click img,.sds-user-menu .sds-user-menu-about-click img,.sds-user-menu .sds-user-menu-shutdown-click img,.sds-user-menu .sds-user-menu-logout-click img{background-position:0px -48px !important}.sds-user-menu .sds-user-menu-options-click .x-menu-item-text,.sds-user-menu .sds-user-menu-restart-click .x-menu-item-text,.sds-user-menu .sds-user-menu-about-click .x-menu-item-text,.sds-user-menu .sds-user-menu-shutdown-click .x-menu-item-text,.sds-user-menu .sds-user-menu-logout-click .x-menu-item-text{color:#0086E5}.sds-overflow-menu{min-width:240px;position:absolute;top:39px;overflow:hidden;z-index:12000;user-select:none;-moz-user-select:-moz-none;-khtml-user-select:none;-webkit-user-select:none}.sds-overflow-menu .x-menu{background-color:transparent !important;background-image:none !important}.sds-overflow-menu .x-menu .x-menu-item-text{font-size:13px;line-height:48px;padding-left:20px}.sds-overflow-menu .x-menu .x-menu-item-text:hover{height:100%}.sds-overflow-menu .x-menu .x-menu-item-icon{top:8px;left:8px;height:32px;width:32px}.sds-overflow-menu .x-menu-item{padding-top:0;padding-bottom:0}.sds-overflow-menu .x-menu-sep-li{height:7px}.sds-overflow-menu .x-menu-sep-li .x-menu-sep{margin:0px;border-bottom-color:#EBF0F5;background-color:transparent}.sds-overflow-menu .x-menu-list{padding:0px}.sds-overflow-menu .x-menu-list-item{padding:0px}.sds-overflow-menu .x-menu-item-active,.sds-overflow-menu .x-menu-item-active .x-menu-item{background-image:none;background-color:transparent;border-color:transparent;border:0px;color:#78828C}.sds-overflow-menu .sds-overflow-items-click .x-menu-item-text{color:#0086E5}.sds-taskbutton-overflowed{visibility:hidden !important}.sds-user-menu.sds-overflow-menu .x-menu .x-menu-item .x-menu-item-icon{left:4px;top:4px}.sds-previewbox{box-shadow:0px 2px 6px rgba(0,0,0,0.5);position:absolute;top:46px;left:0px;width:240px;height:180px;z-index:13000;user-select:none;-moz-user-select:-moz-none;-khtml-user-select:none;-webkit-user-select:none;-webkit-transform:translate3d(0, 0, 0)}.sds-previewbox .sds-previewbox-mc{margin:0px 10px;height:160px}.sds-previewbox .sds-previewbox-background{z-index:-1;zoom:1;position:absolute;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=$ieOpacity)";filter:alpha(opacity=85);filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=85);opacity:0.85;background:#f5faff;background:#f5faff;top:0px;left:0px;right:0px;bottom:0px}.sds-previewbox .sds-previewbox-win{position:absolute}.sds-previewbox .sds-previewbox-win-mask{position:absolute;background:transparent;z-index:9999;width:100%;height:100%;top:0px;box-shadow:0px 3px 6px rgba(0,0,0,0.5)}.sds-previewbox .sds-previewbox-arrow{position:absolute;top:-18px;left:108px;width:24px;height:18px;overflow:hidden}.ext-ie8m .sds-previewbox .sds-previewbox-arrow{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=$ieOpacity)";filter:alpha(opacity=85);filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=85);opacity:0.85;width:0px;height:0px;border:10px solid transparent;border-bottom-width:13px;border-bottom-color:#f5faff;border-top-width:0px}.sds-previewbox .sds-previewbox-arrow::after{background:#f5faff;background:rgba(245,250,255,0.85);content:'';position:absolute;bottom:0px;left:2px;width:14px;height:14px;-webkit-transform-origin:left bottom;-moz-transform-origin:left bottom;-ms-transform-origin:left bottom;-o-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg);box-shadow:2px 2px 6px rgba(0,0,0,0.5)}.sds-previewbox-desc{color:#28323C;font-size:13px;font-weight:bold;padding:6px 0px;text-align:center;overflow:hidden;text-overflow:ellipsis;-o-text-overflow:ellipsis;white-space:nowrap}.sds-previewbox-win-transform{transform-origin:0% 0%;-webkit-transform-origin:0% 0%;-moz-transform-origin:0% 0%;-o-transform-origin:0% 0%;-ms-transform-origin:0% 0%}.sds-previewbox-transition{transition-delay:0s;transition-property:top, left, opacity;transition-duration:0.8s;-webkit-transition-delay:0s;-webkit-transition-property:top, left, opacity;-webkit-transition-duration:0.8s;-moz-transition-delay:0s;-moz-transition-property:top, left, opacity;-moz-transition-duration:0.8s;-o-transition-delay:0s;-o-transition-property:top, left, opacity;-o-transition-duration:0.8s;-ms-transition-delay:0s;-ms-transition-property:top, left, opacity;-ms-transition-duration:0.8s}.sds-tray-msg-window{background-color:white;box-shadow:0px 2px 6px rgba(0,0,0,0.5);border-radius:3px}.sds-tray-msg-window .x-tool-close{position:absolute;right:2px;top:2px;background-image:url("../images/rt_button.png");width:24px;height:24px}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-tray-msg-window .x-tool-close{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/rt_button.png");background-size:24px 768px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-tray-msg-window .x-tool-close{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/rt_button.png");background-size:24px 768px;outline:1px green dashed}}.sds-tray-msg-window .x-tool-close-over{background-position:0 -24px}.sds-tray-msg-window .x-plain-tl .x-plain-header{overflow:hidden;zoom:1;padding:5px 12px 5px 12px;font-size:15px;color:#0086E5;height:17px}.sds-tray-msg-window .x-plain-body{overflow:hidden;position:relative;padding:0px 12px 10px 12px;font-size:12px;color:#505A64;word-wrap:break-word}.sds-taskbar-no-display{display:none}.sds-appview-searchfiled{top:5px;left:-10px}.sds-searchbox{position:absolute;top:39px;right:0px;overflow:hidden;z-index:12000;width:340px;background:#fff repeat-x;background-image:url("../images/taskbar/taskbar_shadow.png");user-select:none;-moz-user-select:-moz-none;-khtml-user-select:none;-webkit-user-select:none;box-shadow:-2px 5px 8px rgba(0,0,0,0.5)}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-searchbox{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/taskbar/taskbar_shadow.png");background-size:4px 4px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-searchbox{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/taskbar/taskbar_shadow.png");background-size:4px 4px;outline:1px green dashed}}.sds-searchbox .sds-searchbox-input-wrap{right:-10px;top:10px}.sds-searchbox .sds-searchbox-header .x-small-editor .sds-searchbox-input{width:265px;height:26px !important;line-height:24px;background-color:transparent;background-image:none;padding:0 4px 0 0;padding-left:27px;padding-right:22px;border-color:#C8D2DC}.sds-searchbox .sds-searchbox-header .x-small-editor .sds-searchbox-input:hover{border-color:#B4BEC8}.sds-searchbox .sds-searchbox-header .x-small-editor .sds-searchbox-input.x-form-focus{border-color:#0086E6}.sds-searchbox .sds-searchbox-header .x-toolbar{background-image:none;background-color:transparent;background-repeat:no-repeat;padding:0;border:none;overflow:visible}.sds-searchbox .sds-searchbox-header .x-toolbar .x-toolbar-ct{height:42px}.sds-searchbox .sds-searchbox-header .x-toolbar .sds-searchbox-input-left{background-image:url(/scripts/ext-3/ux/images/Components/icon_search.png);width:24px;height:24px;margin:2px 0px 0px 4px;background-position:0 0}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-searchbox .sds-searchbox-header .x-toolbar .sds-searchbox-input-left{background-image:url("../img/synohdpack/images/Components/icon_search.png");background-size:24px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-searchbox .sds-searchbox-header .x-toolbar .sds-searchbox-input-left{background-image:url("../img/synohdpack/images/Components/icon_search.png");background-size:24px;outline:1px green dashed}}.sds-searchbox .sds-searchbox-header .x-toolbar .sds-searchbox-input-cancel{background-image:url(/scripts/ext-3.4/ux/images/Components/icon_search_clear.png);background-position:0 -0px;left:290px;width:24px;height:24px;margin-top:3px}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-searchbox .sds-searchbox-header .x-toolbar .sds-searchbox-input-cancel{background-image:url("../img/synohdpack/images/Components/icon_search_clear.png");background-size:24px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-searchbox .sds-searchbox-header .x-toolbar .sds-searchbox-input-cancel{background-image:url("../img/synohdpack/images/Components/icon_search_clear.png");background-size:24px;outline:1px green dashed}}.sds-searchbox .sds-searchbox-header .x-toolbar .sds-searchbox-input-cancel.x-btn-over{background-position:0 -24px}.sds-searchbox .sds-searchbox-header .x-toolbar .sds-searchbox-input-cancel.x-btn-click{background-position:0 -48px}.sds-searchbox .sds-searchbox-header .x-toolbar .sds-searchbox-input-cancel .x-btn-ml,.sds-searchbox .sds-searchbox-header .x-toolbar .sds-searchbox-input-cancel .x-btn-mr{display:none}.sds-searchbox .sds-searchbox-header .x-toolbar .sds-searchbox-input-cancel .x-btn-mc{background-image:none !important}.sds-searchbox .sds-searchbox-header .x-toolbar .ext-chrome .sds-searchbox-input-cancel{left:290px}.sds-searchbox .x-toolbar td{vertical-align:baseline}.sds-searchbox.sds-searchbox-init-state .sds-searchbox-header .x-toolbar-ct{height:48px}.sds-searchbox.sds-searchbox-init-state .sds-searchbox-bwrap{display:none}.sds-searchbox .sds-search-result{overflow-x:hidden;overflow-y:hidden;font-size:12px;padding:0px 0px 10px 10px}.sds-searchbox .sds-search-result .section{padding:0px 0px 0px 8px;color:#0086E5;background:transparent;font-size:15px;line-height:32px}.sds-searchbox .sds-search-result .sds-searchbox-result-splitline{height:8px}.sds-searchbox .sds-search-result .sds-searchbox-result-item{padding:4px 0 4px 8px;line-height:16px;white-space:nowrap;width:322px;cursor:pointer}.sds-searchbox .sds-search-result .sds-searchbox-result-item:hover{background:#F5FaFF}.sds-searchbox .sds-search-result .sds-searchbox-result-item:active{background:#E6F5FF}.sds-searchbox .sds-search-result .sds-searchbox-result-item .topic{padding-left:8px;font-size:11px}.sds-searchbox .sds-search-result .sds-searchbox-result-item .topic div{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;width:168px}.sds-searchbox .sds-search-result .sds-searchbox-result-item .module{color:#96A0AA;font-size:12px}.sds-searchbox .sds-search-result .sds-searchbox-result-item .module div{width:110px;right:0px;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;text-align:right}.sds-searchbox.sds-searchbox-init-state .sds-searchbox-input-cancel{display:none}.ext-opera .sds-searchbox .x-toolbar-left{vertical-align:middle}.ext-opera .sds-searchbox .x-toolbar-right{vertical-align:top}.sds-user-about-window.x-window-dlg .sds-user-about-desc{line-height:20px;height:120px;margin-bottom:8px}.sds-user-about-window.x-window-dlg .sds-user-about-terms-and-cond{line-height:20px;font-weight:bold;margin-bottom:24px}.syno-sds-appview{outline:none}.syno-sds-appview:after{content:"";position:absolute;height:8px;width:100%;bottom:0px;z-index:10;background-repeat:no-repeat;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0icmdiYSgwLDAsMCwwKSIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0icmdiYSgwLDAsMCwwLjQpIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, rgba(0,0,0,0)), color-stop(100%, rgba(0,0,0,0.4)));background-image:-webkit-linear-gradient(top, rgba(0,0,0,0),rgba(0,0,0,0.4));background-image:-moz-linear-gradient(top, rgba(0,0,0,0),rgba(0,0,0,0.4));background-image:-o-linear-gradient(top, rgba(0,0,0,0),rgba(0,0,0,0.4));background-image:linear-gradient(top, rgba(0,0,0,0),rgba(0,0,0,0.4))}.syno-sds-appview .crossbrowser-background{position:absolute;width:inherit;height:inherit;background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=$ieOpacity)";filter:alpha(opacity=70);filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=70);opacity:0.7}.syno-sds-appview .syno-sds-appview-container{outline:none;padding:16px 0px 0px 0px}.syno-sds-appview .syno-sds-appview-container.hide-scroll .vscrollerbar{visibility:hidden !important}.syno-sds-appview .app-panel-title{color:#FFFFFF;height:32px;line-height:32px;padding-left:32px;font-size:13px;font-weight:bold;text-shadow:0px 1px 3px #000000;margin-bottom:8px}.syno-sds-appview .system-app-panel-title{visibility:hidden}.syno-sds-appview .search-result-app-panel-title{background-image:url(../images/desktop/icon_app_category.png);background-position:0 -96px;background-repeat:no-repeat}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-sds-appview .search-result-app-panel-title{background-image:url("../img/synohdpack/images/dsm/resources/images/desktop/icon_app_category.png");background-size:32px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-sds-appview .search-result-app-panel-title{background-image:url("../img/synohdpack/images/dsm/resources/images/desktop/icon_app_category.png");background-size:32px;outline:1px green dashed}}.syno-sds-appview .sds-app-items-panel{display:inline-block}.syno-sds-appview .sds-app-items-panel.frequently-used-panel{height:136px;overflow:hidden}.syno-sds-appview .sds-appview-app-item{width:136px;height:120px;padding:16px 8px 0px 8px;float:left;cursor:pointer}.syno-sds-appview .sds-appview-app-item.new-app{background-image:url(../images/desktop/spotlight.png);background-position:8px 0px;background-repeat:no-repeat;overflow:visible}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-sds-appview .sds-appview-app-item.new-app{background-image:url("../img/synohdpack/images/dsm/resources/images/desktop/spotlight.png");background-size:136px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-sds-appview .sds-appview-app-item.new-app{background-image:url("../img/synohdpack/images/dsm/resources/images/desktop/spotlight.png");background-size:136px;outline:1px green dashed}}.syno-sds-appview .sds-appview-app-item img{opacity:1;width:72px;margin-left:32px}.syno-sds-appview .sds-appview-app-item .sds-appview-app-item-title{color:#FFFFFF;font:12px verdana, tahoma, arial, helvetica, sans-serif;text-align:center;text-shadow:0.1em 0.1em 0.1em #000000;padding-top:8px}.syno-sds-appview .ux-float-layout-ct.sds-float-layout-ct-animate .x-box-item{-webkit-transition-property:top,left;-moz-transition-property:top,left;-o-transition-property:top,left;transition-property:top,left;-webkit-transition-timing-function:ease-in;-moz-transition-timing-function:ease-in;-o-transition-timing-function:ease-in;transition-timing-function:ease-in;-webkit-transition-duration:0.3s;-moz-transition-duration:0.3s;-o-transition-duration:0.3s;transition-duration:0.3s}.syno-sds-appview .on-mouse-out .sds-app-panel,.syno-sds-appview .on-instruction .sds-app-panel{opacity:0.5}.classical.syno-sds-appview{padding-left:22px;position:absolute}.classical.syno-sds-appview .crossbrowser-background{background-color:#F5FAFF;border-bottom-right-radius:3px;border-bottom-left-radius:3px;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=$ieOpacity)";filter:alpha(opacity=100);filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);opacity:1;box-shadow:0 2px 6px rgba(0,0,0,0.5)}.classical.syno-sds-appview:after{background-image:none}.classical.syno-sds-appview .sds-appview-searchfiled{top:0;left:0;margin:12px 20px 12px 16px}.classical.syno-sds-appview .syno-sds-appview-container{padding:0}.classical.syno-sds-appview .sds-app-items-panel{display:block}.classical.syno-sds-appview .sds-app-items-panel.search-result-app-panel{overflow:hidden}.classical.syno-sds-appview .sds-appview-app-item{width:136px;height:100px;padding:0}.classical.syno-sds-appview .sds-appview-app-item img{display:block;opacity:1;width:48px;margin-left:44px}.classical.syno-sds-appview .sds-appview-app-item .sds-appview-app-item-title{color:#505a64;text-shadow:none;padding-top:4px}.classical.syno-sds-appview.x-hide-offsets .sds-appview-app-item,.classical.syno-sds-appview.x-hide-offsets .syno-ux-textfilter-trigger,.classical.syno-sds-appview.x-hide-offsets .vscrollerbar.scrollgeneric{visibility:hidden !important}.sds-search-result{background-image:none;color:#505A64}.sds-search-result.x-layer{border-color:#C8D2DC;background-color:#FFFFFF;padding:4px;box-shadow:0 2px 4px rgba(0,0,0,0.5)}.sds-search-result .x-combo-list-hd{border:none}.sds-search-result .x-combo-list-hd,.sds-search-result .section{height:32px;line-height:32px;background:#FFF;padding:0 0 0 16px;color:#0086E5;font-size:15px;font-weight:normal;cursor:default}.sds-search-result .section{padding-left:8px}.sds-search-result .x-combo-list-inner{background-color:#FFF;padding-left:8px}.sds-search-result .x-combo-list-item{white-space:no-wrap;width:100%;padding:0px;height:32px;line-height:32px}.sds-search-result .x-combo-list-item,.sds-search-result .x-combo-list-item.x-combo-selected{border:none !important}.sds-search-result .x-combo-list-item img{padding:8px}.sds-search-result .x-combo-list-item .topic{padding-left:0}.sds-search-result .x-combo-selected{background:#F5FAFF}.sds-search-result .x-combo-selected:active{background:#E6F5FF}.sds-search-result .loading-indicator{margin-top:0px}.sds-window-v5 .syno-textfilter .x-form-field-wrap .syno-textfilter-text,.sds-widget-window .syno-textfilter .x-form-field-wrap .syno-textfilter-text,.ext-webkit .sds-window-v5 .syno-textfilter .x-form-field-wrap .syno-textfilter-text{font-size:12px;color:#505A64;background-image:url(/scripts/ext-3/ux/images/Components/icon_search.png);background-position:4px 0px;padding-left:30px;padding-top:0px;height:24px !important;line-height:24px !important}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-window-v5 .syno-textfilter .x-form-field-wrap .syno-textfilter-text,.sds-window-v5 .syno-textfilter .x-form-field-wrap .synohdpack .syno-textfilter-text,.synohdpack .sds-widget-window .syno-textfilter .x-form-field-wrap .syno-textfilter-text,.sds-widget-window .syno-textfilter .x-form-field-wrap .synohdpack .syno-textfilter-text{background-image:url("../img/synohdpack/images/Components/icon_search.png");background-size:24px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-window-v5 .syno-textfilter .x-form-field-wrap .syno-textfilter-text,.sds-window-v5 .syno-textfilter .x-form-field-wrap .synohdpackdebug .syno-textfilter-text,.synohdpackdebug .sds-widget-window .syno-textfilter .x-form-field-wrap .syno-textfilter-text,.sds-widget-window .syno-textfilter .x-form-field-wrap .synohdpackdebug .syno-textfilter-text{background-image:url("../img/synohdpack/images/Components/icon_search.png");background-size:24px;outline:1px green dashed}}.sds-window-v5 .syno-textfilter .x-form-field-wrap .syno-textfilter-text,.sds-widget-window .syno-textfilter .x-form-field-wrap .syno-textfilter-text{margin-top:1px}.ext-ie .sds-window-v5 .syno-textfilter .x-form-field-wrap .syno-textfilter-text,.ext-ie .sds-widget-window .syno-textfilter .x-form-field-wrap .syno-textfilter-text{margin-top:1px !important}.sds-window-v5 .syno-textfilter .x-form-field-wrap .syno-textfilter-text.x-form-empty-field,.sds-widget-window .syno-textfilter .x-form-field-wrap .syno-textfilter-text.x-form-empty-field{color:#96A0AA}.sds-window-v5 .syno-textfilter .x-form-field-wrap .syno-textfilter-trigger,.sds-widget-window .syno-textfilter .x-form-field-wrap .syno-textfilter-trigger{background:url(/scripts/ext-3/ux/images/Components/icon_search_clear.png) 0px 0px no-repeat;border:none;width:24px;height:24px;right:0px;margin-top:1px}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-window-v5 .syno-textfilter .x-form-field-wrap .syno-textfilter-trigger,.synohdpack .sds-widget-window .syno-textfilter .x-form-field-wrap .syno-textfilter-trigger{background-image:url("../img/synohdpack/images/Components/icon_search_clear.png");background-size:24px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-window-v5 .syno-textfilter .x-form-field-wrap .syno-textfilter-trigger,.synohdpackdebug .sds-widget-window .syno-textfilter .x-form-field-wrap .syno-textfilter-trigger{background-image:url("../img/synohdpack/images/Components/icon_search_clear.png");background-size:24px;outline:1px green dashed}}.sds-window-v5 .syno-textfilter .x-form-field-wrap .syno-textfilter-trigger.x-form-trigger-over,.sds-widget-window .syno-textfilter .x-form-field-wrap .syno-textfilter-trigger.x-form-trigger-over{background-position:0 -24px}.sds-window-v5 .syno-textfilter .x-form-field-wrap .syno-textfilter-trigger:active,.sds-widget-window .syno-textfilter .x-form-field-wrap .syno-textfilter-trigger:active{background-position:0 -48px}.sds-desktop-view-animate{position:absolute;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=$ieOpacity)";filter:alpha(opacity=40);filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=40);opacity:0.4;-webkit-transition-property:opacity;-moz-transition-property:opacity;-o-transition-property:opacity;transition-property:opacity;-webkit-transition-timing-function:ease-in;-moz-transition-timing-function:ease-in;-o-transition-timing-function:ease-in;transition-timing-function:ease-in;-webkit-transition-duration:0.15s;-moz-transition-duration:0.15s;-o-transition-duration:0.15s;transition-duration:0.15s}.sds-desktop-view-animate .scale-item{-o-transform:scale(0.95);-moz-transform:scale(0.95);-ms-transform:scale(0.95);-webkit-transform:scale(0.95);transform:scale(0.95);-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden;backface-visibility:hidden;-webkit-transition-property:top,left,opacity,-webkit-transform;-moz-transition-property:top,left,opacity,-moz-transform;-o-transition-property:top,left,opacity,-o-transform;transition-property:top,left,opacity,transform;-webkit-transition-timing-function:ease-in;-moz-transition-timing-function:ease-in;-o-transition-timing-function:ease-in;transition-timing-function:ease-in;-webkit-transition-duration:0.2s;-moz-transition-duration:0.2s;-o-transition-duration:0.2s;transition-duration:0.2s}.sds-desktop-view-animate.sds-widgetview .scale-item{-webkit-transition-property:top,left,opacity,-webkit-transform;-moz-transition-property:top,left,opacity,-moz-transform;-o-transition-property:top,left,opacity,-o-transform;transition-property:top,left,opacity,transform;-webkit-transition-timing-function:ease-in;-moz-transition-timing-function:ease-in;-o-transition-timing-function:ease-in;transition-timing-function:ease-in;-webkit-transition-duration:0.2s;-moz-transition-duration:0.2s;-o-transition-duration:0.2s;transition-duration:0.2s}.sds-desktop-view-animate.sds-desktop-view-show{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=$ieOpacity)";filter:alpha(opacity=100);filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);opacity:1}.sds-desktop-view-animate.sds-desktop-view-show .scale-item{-o-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1)}.sds-desktop-view-animate.no-transition{-webkit-transition-property:none;-moz-transition-property:none;-o-transition-property:none;transition-property:none;-webkit-transition-timing-function:ease-in;-moz-transition-timing-function:ease-in;-o-transition-timing-function:ease-in;transition-timing-function:ease-in;-webkit-transition-duration:0s;-moz-transition-duration:0s;-o-transition-duration:0s;transition-duration:0s}.sds-desktop-view-animate.no-transition .scale-item{-webkit-transition-property:none;-moz-transition-property:none;-o-transition-property:none;transition-property:none;-webkit-transition-timing-function:ease-in;-moz-transition-timing-function:ease-in;-o-transition-timing-function:ease-in;transition-timing-function:ease-in;-webkit-transition-duration:0s;-moz-transition-duration:0s;-o-transition-duration:0s;transition-duration:0s}.bounce-effect-fast{-webkit-animation:bounce 400ms ease-out;-moz-animation:bounce 400ms ease-out;-o-animation:bounce 400ms ease-out;animation:bounce 400ms ease-out}.sds-app-widget-instruction{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=$ieOpacity)";filter:alpha(opacity=0);filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);opacity:0;position:absolute;z-index:3;top:0}.sds-app-widget-instruction.show{-webkit-transition-property:opacity, filter;-moz-transition-property:opacity, filter;-o-transition-property:opacity, filter;transition-property:opacity, filter;-webkit-transition-timing-function:ease-in;-moz-transition-timing-function:ease-in;-o-transition-timing-function:ease-in;transition-timing-function:ease-in;-webkit-transition-duration:0.2s;-moz-transition-duration:0.2s;-o-transition-duration:0.2s;transition-duration:0.2s;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=$ieOpacity)";filter:alpha(opacity=100);filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);opacity:1}.sds-app-widget-instruction .message-arrow{position:absolute;overflow:hidden;width:22px;height:35px}.ext-ie8m .sds-app-widget-instruction .message-arrow{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=$ieOpacity)";filter:alpha(opacity=75);filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=75);opacity:0.75;left:-12px;width:0px;height:0px;border:12px solid transparent;border-right-color:#fff;border-left-width:0px}.sds-app-widget-instruction .message-arrow::after{background:#282d32;background:#282d32;content:'';position:absolute;left:6px;width:16px;height:16px;-webkit-transform-origin:right top;-moz-transform-origin:right top;-ms-transform-origin:right top;-o-transform-origin:right top;transform-origin:right top;-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg);box-shadow:0 2px 4px rgba(0,0,0,0.5);border-top:solid 1px white;border-left:solid 1px white}.sds-app-widget-instruction .message-container{visibility:visible;position:absolute;max-width:218px;height:auto;font-size:16px;line-height:22px;color:#FFFFFF;padding:10px 16px;box-shadow:0 1px 4px rgba(0,0,0,0.25);border:solid 1px;border-color:#fff;border-color:rgba(255,255,255,0.75);background:#000;background:rgba(0,0,0,0.75)}body,.ext-el-mask-msg div,.x-tab-strip span.x-tab-strip-text,.x-form-field,.x-form-grow-sizer,.x-form-item,.x-form-invalid-msg,.x-fieldset legend,.x-toolbar td,.x-toolbar span,.x-toolbar input,.x-toolbar div,.x-toolbar select,.x-toolbar label,.x-grid-group-hd div.x-grid-group-title,.x-grid-empty,.x-tip .x-tip-mc,.x-tip .x-tip-header-text,.x-tip .x-tip-body,.x-window-mc,.x-window-dlg .ext-mb-textarea,.x-small-editor .x-form-field,.ext-webkit .x-small-editor .x-form-field,.x-grid3-hd-row td,.x-grid3-row td,.x-grid3-summary-row td,.x-grid3-topbar,.x-grid3-bottombar,.x-tree-node,.x-date-inner th,.x-date-inner a,.x-date-mp td,.x-date-mp-btns button,.x-panel-fbar td,.x-panel-fbar span,.x-panel-fbar input,.x-panel-fbar div,.x-panel-fbar select,.x-panel-fbar label,.x-list-header-inner div em,.x-list-body dt em,.x-btn,.x-btn button,.x-dd-drag-ghost,.x-date-middle,.x-date-left,.x-date-right,.x-menu-list-item,.x-combo-list,.x-combo-list-hd,.x-combo-list-small,.x-panel-tl .x-panel-header,.x-panel .x-panel-header,.x-panel-mc,.x-window-tl .x-window-header{font-family:verdana,tahoma,arial,helvetica,sans-serif}.syno-ux-modulelist .x-tree-root-node{width:212px}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .x-tree-node-icon{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_general.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .x-tree-node-icon{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_general.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf .icon-CMS{background-image:url("../images/module_list_icon/c_icon_CMS.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-CMS{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_CMS.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-CMS{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_CMS.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf .icon-backup{background-image:url("../images/module_list_icon/c_icon_backup.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-backup{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/module_list_icon/c_icon_backup.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-backup{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/module_list_icon/c_icon_backup.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf .icon-business{background-image:url("../images/module_list_icon/c_icon_business.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-business{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/module_list_icon/c_icon_business.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-business{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/module_list_icon/c_icon_business.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf .icon-contact{background-image:url("../images/module_list_icon/c_icon_contact.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-contact{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/module_list_icon/c_icon_contact.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-contact{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/module_list_icon/c_icon_contact.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf .icon-directory-service{background-image:url("../images/module_list_icon/c_icon_directory_service.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-directory-service{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_directory_service.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-directory-service{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_directory_service.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf .icon-dsm-apps{background-image:url("../images/module_list_icon/c_icon_dsm_apps.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-dsm-apps{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/module_list_icon/c_icon_dsm_apps.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-dsm-apps{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/module_list_icon/c_icon_dsm_apps.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf .icon-expansion{background-image:url("../images/module_list_icon/c_icon_expansion.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-expansion{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/module_list_icon/c_icon_expansion.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-expansion{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/module_list_icon/c_icon_expansion.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf .icon-external-devices{background-image:url("../images/module_list_icon/c_icon_external_devices.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-external-devices{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_external_devices.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-external-devices{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_external_devices.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf .icon-file-services{background-image:url("../images/module_list_icon/c_icon_file_services.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-file-services{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_file_services.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-file-services{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_file_services.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf .icon-groups{background-image:url("../images/module_list_icon/c_icon_groups.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-groups{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_groups.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-groups{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_groups.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf .icon-hardware-and-power{background-image:url("../images/module_list_icon/c_icon_hardware_and_power.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-hardware-and-power{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_hardware_and_power.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-hardware-and-power{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_hardware_and_power.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf .icon-purchases{background-image:url("../images/module_list_icon/c_icon_purchases.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-purchases{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_purchases.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-purchases{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_purchases.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf .icon-syslog{background-image:url("../images/module_list_icon/c_icon_syslog.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-syslog{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_syslog.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-syslog{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_syslog.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf .icon-hdd-management{background-image:url("../images/module_list_icon/c_icon_hdd_management.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-hdd-management{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/module_list_icon/c_icon_hdd_management.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-hdd-management{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/module_list_icon/c_icon_hdd_management.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf .icon-hot-spare{background-image:url("../images/module_list_icon/c_icon_hot_spare.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-hot-spare{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/module_list_icon/c_icon_hot_spare.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-hot-spare{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/module_list_icon/c_icon_hot_spare.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf .icon-info-center{background-image:url("../images/module_list_icon/c_icon_info_center.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-info-center{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_info_center.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-info-center{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_info_center.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf .icon-installed{background-image:url("../images/module_list_icon/c_icon_installed.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-installed{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/module_list_icon/c_icon_installed.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-installed{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/module_list_icon/c_icon_installed.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf .icon-iscsi-lun{background-image:url("../images/module_list_icon/c_icon_iscsi_lun.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-iscsi-lun{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/module_list_icon/c_icon_iscsi_lun.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-iscsi-lun{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/module_list_icon/c_icon_iscsi_lun.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf .icon-iscsi-target{background-image:url("../images/module_list_icon/c_icon_iscsi_target.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-iscsi-target{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/module_list_icon/c_icon_iscsi_target.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-iscsi-target{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/module_list_icon/c_icon_iscsi_target.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf .icon-login-style{background-image:url("../images/module_list_icon/c_icon_login_style.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-login-style{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_login_style.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-login-style{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_login_style.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf .icon-media-library{background-image:url("../images/module_list_icon/c_icon_media_library.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-media-library{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/module_list_icon/c_icon_media_library.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-media-library{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/module_list_icon/c_icon_media_library.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf .icon-network{background-image:url("../images/module_list_icon/c_icon_network.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-network{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_network.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-network{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_network.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf .icon-networkmap{background-image:url("../images/module_list_icon/c_icon_networkmap.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-networkmap{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_networkmap.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-networkmap{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_networkmap.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf .icon-notifications{background-image:url("../images/module_list_icon/c_icon_notifications.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-notifications{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_notifications.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-notifications{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_notifications.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf .icon-overview{background-image:url("../images/module_list_icon/c_icon_overview.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-overview{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/module_list_icon/c_icon_overview.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-overview{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/module_list_icon/c_icon_overview.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf .icon-portal{background-image:url("../images/module_list_icon/c_icon_portal.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-portal{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_portal.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-portal{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_portal.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf .icon-privilege{background-image:url("../images/module_list_icon/c_icon_privilege.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-privilege{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_privilege.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-privilege{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_privilege.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf .icon-public-access{background-image:url("../images/module_list_icon/c_icon_public_access.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-public-access{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_public_access.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-public-access{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_public_access.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf .icon-quickconnect{background-image:url("../images/module_list_icon/c_icon_quickconnect.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-quickconnect{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_quickconnect.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-quickconnect{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_quickconnect.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf .icon-raid-group{background-image:url("../images/module_list_icon/c_icon_raid_group.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-raid-group{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/module_list_icon/c_icon_raid_group.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-raid-group{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/module_list_icon/c_icon_raid_group.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf .icon-recommend{background-image:url("../images/module_list_icon/c_icon_recommend.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-recommend{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/module_list_icon/c_icon_recommend.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-recommend{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/module_list_icon/c_icon_recommend.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf .icon-region{background-image:url("../images/module_list_icon/c_icon_region.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-region{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_region.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-region{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_region.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf .icon-security{background-image:url("../images/module_list_icon/c_icon_security.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-security{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/module_list_icon/c_icon_security.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-security{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/module_list_icon/c_icon_security.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf .icon-shared-folders{background-image:url("../images/module_list_icon/c_icon_shared_folders.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-shared-folders{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_shared_folders.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-shared-folders{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_shared_folders.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf .icon-ssd-cache{background-image:url("../images/module_list_icon/c_icon_ssd_cache.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-ssd-cache{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/module_list_icon/c_icon_ssd_cache.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-ssd-cache{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/module_list_icon/c_icon_ssd_cache.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf .icon-task-scheduler{background-image:url("../images/module_list_icon/c_icon_task_scheduler.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-task-scheduler{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_task_scheduler.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-task-scheduler{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_task_scheduler.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf .icon-terminal-and-SNMP{background-image:url("../images/module_list_icon/c_icon_terminal_and_SNMP.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-terminal-and-SNMP{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_terminal_and_SNMP.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-terminal-and-SNMP{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_terminal_and_SNMP.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf .icon-update-and-reset{background-image:url("../images/module_list_icon/c_icon_update_and_reset.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-update-and-reset{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/module_list_icon/c_icon_update_and_reset.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-update-and-reset{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/module_list_icon/c_icon_update_and_reset.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf .icon-users{background-image:url("../images/module_list_icon/c_icon_users.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-users{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_users.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-users{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_users.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf .icon-utilities{background-image:url("../images/module_list_icon/c_icon_utilities.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-utilities{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/module_list_icon/c_icon_utilities.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-utilities{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/module_list_icon/c_icon_utilities.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf .icon-volume{background-image:url("../images/module_list_icon/c_icon_volume.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-volume{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/module_list_icon/c_icon_volume.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-volume{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/module_list_icon/c_icon_volume.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf .icon-web-server{background-image:url("../images/module_list_icon/c_icon_web_server.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-web-server{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_web_server.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-web-server{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_web_server.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf .icon-wireless{background-image:url("../images/module_list_icon/c_icon_wireless.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-wireless{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_wireless.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-wireless{background-image:url("../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_wireless.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf .icon-performance{background-image:url("../images/module_list_icon/c_icon_performance.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-performance{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/module_list_icon/c_icon_performance.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-performance{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/module_list_icon/c_icon_performance.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf .icon-process{background-image:url("../images/module_list_icon/c_icon_process.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-process{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/module_list_icon/c_icon_process.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-process{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/module_list_icon/c_icon_process.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf .icon-connect{background-image:url("../images/module_list_icon/c_icon_connect.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-connect{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/module_list_icon/c_icon_connect.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-connect{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/module_list_icon/c_icon_connect.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf .icon-speed{background-image:url("../images/module_list_icon/c_icon_speed.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-speed{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/module_list_icon/c_icon_speed.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-speed{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/module_list_icon/c_icon_speed.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf .icon-community{background-image:url("../images/module_list_icon/c_icon_community.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-community{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/module_list_icon/c_icon_community.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-community{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/module_list_icon/c_icon_community.png");background-size:24px 96px;outline:1px green dashed}}.x-tip{box-shadow:0 1px 4px rgba(0,0,0,0.25);border:solid 1px;border-color:#fff;border-color:rgba(255,255,255,0.75);background:#000;background:rgba(0,0,0,0.75)}.x-tip .x-tip-ml,.x-tip .x-tip-mr,.x-tip .x-tip-mc,.x-tip .x-tip-tl,.x-tip .x-tip-tr,.x-tip .x-tip-tc,.x-tip .x-tip-bl,.x-tip .x-tip-br,.x-tip .x-tip-bc{padding:0px;background-image:none;background-color:transparent}.x-tip .x-tip-bwrap{padding:3px 10px}.x-tip .x-tip-body,.x-tip .x-tip-body span,.x-tip .x-tip-body div{font-size:12px !important;color:#FFFFFF !important}.sds-wizard-banner .x-panel-body{background-color:transparent}.ext-ie7 .sds-window-v5 .x-window-footer.sds-wizard-footer-welcome .x-panel-fbar.x-toolbar-layout-ct,.ext-ie7 .sds-widget-window .x-window-footer.sds-wizard-footer-welcome .x-panel-fbar.x-toolbar-layout-ct,.ext-ie7 .sds-window-v5 .x-window-footer.sds-wizard-footer .x-panel-fbar.x-toolbar-layout-ct,.ext-ie7 .sds-widget-window .x-window-footer.sds-wizard-footer .x-panel-fbar.x-toolbar-layout-ct,.ext-ie8 .sds-window-v5 .x-window-footer.sds-wizard-footer-welcome .x-panel-fbar.x-toolbar-layout-ct,.ext-ie8 .sds-widget-window .x-window-footer.sds-wizard-footer-welcome .x-panel-fbar.x-toolbar-layout-ct,.ext-ie8 .sds-window-v5 .x-window-footer.sds-wizard-footer .x-panel-fbar.x-toolbar-layout-ct,.ext-ie8 .sds-widget-window .x-window-footer.sds-wizard-footer .x-panel-fbar.x-toolbar-layout-ct,.ext-ie9 .sds-window-v5 .x-window-footer.sds-wizard-footer-welcome .x-panel-fbar.x-toolbar-layout-ct,.ext-ie9 .sds-widget-window .x-window-footer.sds-wizard-footer-welcome .x-panel-fbar.x-toolbar-layout-ct,.ext-ie9 .sds-window-v5 .x-window-footer.sds-wizard-footer .x-panel-fbar.x-toolbar-layout-ct,.ext-ie9 .sds-widget-window .x-window-footer.sds-wizard-footer .x-panel-fbar.x-toolbar-layout-ct{width:auto !important}.sds-window-v5 .sds-wizard-banner-wrap,.sds-widget-window .sds-wizard-banner-wrap{background-image:url("../images/wizard_bkg_h.png");background-repeat:no-repeat;background-position:top right;background-color:#008def;height:112px !important;display:table}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-window-v5 .sds-wizard-banner-wrap,.synohdpack .sds-widget-window .sds-wizard-banner-wrap{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/wizard_bkg_h.png");background-size:414px 112px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-window-v5 .sds-wizard-banner-wrap,.synohdpackdebug .sds-widget-window .sds-wizard-banner-wrap{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/wizard_bkg_h.png");background-size:414px 112px;outline:1px green dashed}}.sds-window-v5 .x-panel-body.sds-wizard-banner,.sds-widget-window .x-panel-body.sds-wizard-banner{background-image:none;background-color:transparent;border-bottom:0px;display:table-cell;vertical-align:middle}.sds-window-v5 .x-window-footer.sds-wizard-footer-welcome .x-panel-fbar.x-toolbar-layout-ct,.sds-widget-window .x-window-footer.sds-wizard-footer-welcome .x-panel-fbar.x-toolbar-layout-ct,.sds-window-v5 .x-window-footer.sds-wizard-footer .x-panel-fbar.x-toolbar-layout-ct,.sds-widget-window .x-window-footer.sds-wizard-footer .x-panel-fbar.x-toolbar-layout-ct{padding-right:20px;padding-left:20px;background-image:none}.sds-window-v5 .x-window-footer.sds-wizard-footer-welcome .x-panel-fbar.x-toolbar-layout-ct .x-toolbar-ct,.sds-widget-window .x-window-footer.sds-wizard-footer-welcome .x-panel-fbar.x-toolbar-layout-ct .x-toolbar-ct,.sds-window-v5 .x-window-footer.sds-wizard-footer .x-panel-fbar.x-toolbar-layout-ct .x-toolbar-ct,.sds-widget-window .x-window-footer.sds-wizard-footer .x-panel-fbar.x-toolbar-layout-ct .x-toolbar-ct{background-image:url("../images/shadow_footbar.png");background-repeat:repeat-x;background-color:transparent;border:0px;padding-top:4px}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-window-v5 .x-window-footer.sds-wizard-footer-welcome .x-panel-fbar.x-toolbar-layout-ct .x-toolbar-ct,.synohdpack .sds-widget-window .x-window-footer.sds-wizard-footer-welcome .x-panel-fbar.x-toolbar-layout-ct .x-toolbar-ct,.synohdpack .sds-window-v5 .x-window-footer.sds-wizard-footer .x-panel-fbar.x-toolbar-layout-ct .x-toolbar-ct,.synohdpack .sds-widget-window .x-window-footer.sds-wizard-footer .x-panel-fbar.x-toolbar-layout-ct .x-toolbar-ct{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/shadow_footbar.png");background-size:8px 4px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-window-v5 .x-window-footer.sds-wizard-footer-welcome .x-panel-fbar.x-toolbar-layout-ct .x-toolbar-ct,.synohdpackdebug .sds-widget-window .x-window-footer.sds-wizard-footer-welcome .x-panel-fbar.x-toolbar-layout-ct .x-toolbar-ct,.synohdpackdebug .sds-window-v5 .x-window-footer.sds-wizard-footer .x-panel-fbar.x-toolbar-layout-ct .x-toolbar-ct,.synohdpackdebug .sds-widget-window .x-window-footer.sds-wizard-footer .x-panel-fbar.x-toolbar-layout-ct .x-toolbar-ct{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/shadow_footbar.png");background-size:8px 4px;outline:1px green dashed}}.sds-window-v5 .x-window-footer.sds-wizard-footer-welcome .x-panel-fbar.x-toolbar-layout-ct .x-toolbar-ct .x-toolbar-left,.sds-widget-window .x-window-footer.sds-wizard-footer-welcome .x-panel-fbar.x-toolbar-layout-ct .x-toolbar-ct .x-toolbar-left,.sds-window-v5 .x-window-footer.sds-wizard-footer .x-panel-fbar.x-toolbar-layout-ct .x-toolbar-ct .x-toolbar-left,.sds-widget-window .x-window-footer.sds-wizard-footer .x-panel-fbar.x-toolbar-layout-ct .x-toolbar-ct .x-toolbar-left{padding:0px 0px 0px 10px}.sds-window-v5 .x-window-footer.sds-wizard-footer-welcome .x-panel-fbar.x-toolbar-layout-ct .x-toolbar-ct .x-toolbar-cell,.sds-widget-window .x-window-footer.sds-wizard-footer-welcome .x-panel-fbar.x-toolbar-layout-ct .x-toolbar-ct .x-toolbar-cell,.sds-window-v5 .x-window-footer.sds-wizard-footer .x-panel-fbar.x-toolbar-layout-ct .x-toolbar-ct .x-toolbar-cell,.sds-widget-window .x-window-footer.sds-wizard-footer .x-panel-fbar.x-toolbar-layout-ct .x-toolbar-ct .x-toolbar-cell{padding:0}.sds-window-v5 .x-window-footer.sds-wizard-footer-welcome .x-panel-fbar.x-toolbar-layout-ct .x-toolbar-ct .x-toolbar-cell .syno-ux-button,.sds-widget-window .x-window-footer.sds-wizard-footer-welcome .x-panel-fbar.x-toolbar-layout-ct .x-toolbar-ct .x-toolbar-cell .syno-ux-button,.sds-window-v5 .x-window-footer.sds-wizard-footer .x-panel-fbar.x-toolbar-layout-ct .x-toolbar-ct .x-toolbar-cell .syno-ux-button,.sds-widget-window .x-window-footer.sds-wizard-footer .x-panel-fbar.x-toolbar-layout-ct .x-toolbar-ct .x-toolbar-cell .syno-ux-button{margin:8px 10px 8px 0px}.sds-window-v5 .x-window-footer.sds-wizard-footer-welcome,.sds-widget-window .x-window-footer.sds-wizard-footer-welcome{background-image:url("../images/dsmv5_wizard_bkg_v_01.png");background-position:bottom left;background-repeat:no-repeat}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-window-v5 .x-window-footer.sds-wizard-footer-welcome,.synohdpack .sds-widget-window .x-window-footer.sds-wizard-footer-welcome{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/dsmv5_wizard_bkg_v_01.png");background-size:140px 48px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-window-v5 .x-window-footer.sds-wizard-footer-welcome,.synohdpackdebug .sds-widget-window .x-window-footer.sds-wizard-footer-welcome{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/dsmv5_wizard_bkg_v_01.png");background-size:140px 48px;outline:1px green dashed}}.sds-window-v5 .x-window-footer.sds-wizard-footer-welcome .x-toolbar-layout-ct,.sds-widget-window .x-window-footer.sds-wizard-footer-welcome .x-toolbar-layout-ct{margin-left:140px}.sds-window-v5 .sds-wizard-banner .wizard-headline,.sds-widget-window .sds-wizard-banner .wizard-headline{font-size:18px;line-height:24px;font-weight:bold;color:#FFFFFF;overflow:hidden;padding-top:0px}.sds-window-v5 .sds-wizard-banner .wizard-description,.sds-widget-window .sds-wizard-banner .wizard-description{font-size:14px;line-height:18px;color:#FFFFFF;overflow:hidden}.sds-window-v5 .sds-wizard-step .sds-wizard-step-bwrap,.sds-widget-window .sds-wizard-step .sds-wizard-step-bwrap{padding:12px 20px 8px 20px}.sds-window-v5 .sds-wizard-step .welcome-headline,.sds-widget-window .sds-wizard-step .welcome-headline{font-size:15px;font-weight:bold;color:#505a64;padding:12px 20px 12px 20px;border-bottom:0px}.sds-window-v5 .sds-wizard-step .welcome-text,.sds-widget-window .sds-wizard-step .welcome-text{color:#505a64;font-size:13px;padding-right:20px;padding-left:20px}.sds-window-v5 .sds-wizard-step .welcome-image,.sds-widget-window .sds-wizard-step .welcome-image{background-image:url("../images/dsmv5_wizard_bkg_v_02.png") !important;background-position:bottom left;background-repeat:no-repeat}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-window-v5 .sds-wizard-step .welcome-image,.synohdpack .sds-widget-window .sds-wizard-step .welcome-image{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/dsmv5_wizard_bkg_v_02.png") !important;background-size:140px 366px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-window-v5 .sds-wizard-step .welcome-image,.synohdpackdebug .sds-widget-window .sds-wizard-step .welcome-image{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/dsmv5_wizard_bkg_v_02.png") !important;background-size:140px 366px;outline:1px green dashed}}.sds-window-v5 .sds-wizard-step .welcome-image-text,.sds-widget-window .sds-wizard-step .welcome-image-text{position:relative;text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;left:17px;font-size:18px;font-weight:bold;line-height:24px;color:#FFFFFF;background-color:transparent;-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg);-webkit-transform-origin:left bottom;-moz-transform-origin:left bottom;-ms-transform-origin:left bottom;-o-transform-origin:left bottom;transform-origin:left bottom;filter:progid:DXImageTransform.Microsoft.Matrix(M11=0.00000000, M12=-1.00000000, M21=1.00000000, M22=0.00000000, SizingMethod='auto expand');-ms-filter:"progid:DXImageTransform.Microsoft.Matrix(M11=0, M12=-1, M21=1, M22=0, SizingMethod='auto expand')"}.sds-wizard-banner{padding-left:20px;padding-right:20px;background:url(../images/wizard-banner.png) repeat top right;background-color:#FAFAFA;border-top:0px;border-right:0px;border-left:0px;border-bottom:1px solid #ddd}.sds-wizard-banner .wizard-headline{font-size:12px;font-weight:bold;color:#222;padding-top:10px}.sds-wizard-banner .wizard-description{font-size:11px}.sds-wizard-step .welcome-headline{font-size:12px;font-weight:bold;color:#222;padding:10px;padding-left:30px;border-bottom:1px solid #ddd}.sds-wizard-step .welcome-image{background:url(../images/wizard_welcome.png) left bottom no-repeat !important}.sds-wizard-step .welcome-text{font-size:12px;padding:10px;padding-left:30px}.sds-wizard-step .welcome-text li{list-style-image:none;list-style-position:inside;list-style-type:square;padding-top:5px}.sds-wizard-step .x-status-loading{background-image:url("../images/components/status_loading.gif");background-repeat:no-repeat;background-position:center center}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-wizard-step .x-status-loading{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/components/status_loading.gif");background-size:24px 24px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-wizard-step .x-status-loading{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/components/status_loading.gif");background-size:24px 24px;outline:1px green dashed}}.sds-wizard-step .x-status-success{background-image:url("../images/components/status_success.png");background-repeat:no-repeat;background-position:center center}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-wizard-step .x-status-success{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/components/status_success.png");background-size:24px 24px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-wizard-step .x-status-success{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/components/status_success.png");background-size:24px 24px;outline:1px green dashed}}.sds-wizard-step .x-status-fail{background-image:url("../images/components/status_fail.png");background-repeat:no-repeat;background-position:center center}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-wizard-step .x-status-fail{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/components/status_fail.png");background-size:24px 24px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-wizard-step .x-status-fail{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/components/status_fail.png");background-size:24px 24px;outline:1px green dashed}}.sds-wizard-step .x-status-warning{background-image:url("../images/components/icon_error.png");background-size:100% 100%;background-repeat:no-repeat;background-position:center center}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-wizard-step .x-status-warning{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/components/icon_error.png");background-size:24px 24px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-wizard-step .x-status-warning{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/components/icon_error.png");background-size:24px 24px;outline:1px green dashed}}.syno-sds-image-selector input.image-selector-upload-file{width:1px;height:1px}.ext-firefox3 .image-selector-upload-form form,.ext-ie .syno-sds-image-selector .image-selector-upload-form form{width:140px}.ext-firefox3 input.image-selector-upload-file,.ext-ie .syno-sds-image-selector input.image-selector-upload-file{opacity:0 !important;filter:alpha(opacity=0) !important;width:120px;height:20px;font-size:30px;cursor:pointer;margin-left:10px}.syno-sds-image-selector label.image-selector-fake-upload-button{position:absolute;left:10px;color:blue;width:120px;text-align:center}.syno-sds-image-selector table.x-btn-over button{text-decoration:underline}.syno-sds-image-selector label{color:#505A64}.syno-sds-image-selector .tree_myimage .x-tree-ec-icon.x-tree-elbow,.syno-sds-image-selector .tree_myimage .x-tree-ec-icon.x-tree-elbow-end{display:none}.syno-sds-image-selector .tree_myimage .x-tree-node-icon{margin:6px 8px 0 8px;height:16px}.syno-sds-image-selector .tree_myimage .icon_my_image{background-position:0 0;background-repeat:no-repeat;background-image:url("../images/components/icon_image_selector.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-sds-image-selector .tree_myimage .icon_my_image{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/components/icon_image_selector.png");background-size:16px 32px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-sds-image-selector .tree_myimage .icon_my_image{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/components/icon_image_selector.png");background-size:16px 32px;outline:1px green dashed}}.syno-sds-image-selector .tree_myimage .icon_default_image{background-position:0 -16px;background-repeat:no-repeat;background-image:url("../images/components/icon_image_selector.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-sds-image-selector .tree_myimage .icon_default_image{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/components/icon_image_selector.png");background-size:16px 32px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-sds-image-selector .tree_myimage .icon_default_image{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/components/icon_image_selector.png");background-size:16px 32px;outline:1px green dashed}}.syno-sds-image-selector .tree_filestation .x-tree-node-icon{display:none}.syno-sds-image-selector .x-layout-split{background-position:right 0;background-repeat:repeat-y;background-image:url("../../../scripts/ext-3.4/ux/images/Components/shadow_category.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-sds-image-selector .x-layout-split{background-image:url("../img/synohdpack/images/Components/shadow_category.png");background-size:4px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-sds-image-selector .x-layout-split{background-image:url("../img/synohdpack/images/Components/shadow_category.png");background-size:4px;outline:1px green dashed}}.syno-sds-image-selector .image-selector-upload-form .x-form-item{margin-bottom:0}.syno-sds-image-selector div.thumb-wrap{margin-bottom:4px;margin-right:8px;float:left;height:166px}.syno-sds-image-selector .x-view-selected .thumb{background:#E6F5FF;border:1px solid #A6DAFF}.syno-sds-image-selector .thumb{padding:8px 8px 4px 8px;height:150px;width:120px;border:1px solid;border-color:#fff;border-color:rgba(255,255,255,0);position:relative;display:table-cell;vertical-align:bottom}.syno-sds-image-selector .thumb img{box-shadow:0 1px 3px rgba(0,0,0,0.5);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.5);-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.5);max-height:120px;max-width:120px;width:auto;height:auto}.syno-sds-image-selector .thumb .thumb-loading{background-repeat:no-repeat;background-position:center center;background-color:transparent;background-image:url("../../modules/PhotoViewer/images/loading.gif")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-sds-image-selector .thumb .thumb-loading{background-image:url("../img/synohdpack/images/dsm/resources/css/../../modules/PhotoViewer/images/loading.gif");background-size:16px 16px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-sds-image-selector .thumb .thumb-loading{background-image:url("../img/synohdpack/images/dsm/resources/css/../../modules/PhotoViewer/images/loading.gif");background-size:16px 16px;outline:1px green dashed}}.syno-sds-image-selector .thumb .thumb-hover{height:120px;width:120px;display:table-cell;text-align:center;vertical-align:bottom}.syno-sds-image-selector .thumb:hover{background-color:#E6F5FF}.syno-sds-image-selector .thumb span{display:block;overflow:hidden;text-align:center;text-overflow:ellipsis;white-space:nowrap;height:24px;margin-top:4px;line-height:24px;font-size:12px;max-width:120px}.sds-notify-badge-num{background-image:url("../images/dsm5_notification_num.png");width:19px;height:14px;overflow:hidden;cursor:pointer;pointer-events:none}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-notify-badge-num{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/dsm5_notification_num.png");background-size:19px 1400px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-notify-badge-num{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/dsm5_notification_num.png");background-size:19px 1400px;outline:1px green dashed}}.sds-application-notify-badge-num{background-image:url("../images/dsm5_badge_num.png");width:34px;height:24px;overflow:hidden;z-index:3}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-application-notify-badge-num{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/dsm5_badge_num.png");background-size:34px 2400px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-application-notify-badge-num{background-image:url("../img/synohdpack/images/dsm/resources/css/../images/dsm5_badge_num.png");background-size:34px 2400px;outline:1px green dashed}}.sds-notify-badge-num.badge-fix-position{top:15px !important;left:14px !important}.ext-ie9 .sds-notify-badge-num.badge-fix-position,.ext-ie10 .sds-notify-badge-num.badge-fix-position,.ext-ie11 .sds-notify-badge-num.badge-fix-position{top:7px !important;left:6px !important}.bounce-effect{-webkit-animation:bounce 800ms ease-out;-moz-animation:bounce 800ms ease-out;-o-animation:bounce 800ms ease-out;animation:bounce 800ms ease-out}@-webkit-keyframes bounce{0%,5%{-webkit-transform:translateY(-100%);-moz-transform:translateY(-100%);-ms-transform:translateY(-100%);-o-transform:translateY(-100%);transform:translateY(-100%);opacity:0}15%{-webkit-transform:translateY(-100%);-moz-transform:translateY(-100%);-ms-transform:translateY(-100%);-o-transform:translateY(-100%);transform:translateY(-100%)}30%{-webkit-transform:translateY(-80%);-moz-transform:translateY(-80%);-ms-transform:translateY(-80%);-o-transform:translateY(-80%);transform:translateY(-80%)}40%,80%,100%{-webkit-transform:translateY(0%);-moz-transform:translateY(0%);-ms-transform:translateY(0%);-o-transform:translateY(0%);transform:translateY(0%)}60%{-webkit-transform:translateY(-30%);-moz-transform:translateY(-30%);-ms-transform:translateY(-30%);-o-transform:translateY(-30%);transform:translateY(-30%)}90%{-webkit-transform:translateY(-10%);-moz-transform:translateY(-10%);-ms-transform:translateY(-10%);-o-transform:translateY(-10%);transform:translateY(-10%)}100%{opacity:1}}@-o-keyframes bounce{0%,5%{-webkit-transform:translateY(-100%);-moz-transform:translateY(-100%);-ms-transform:translateY(-100%);-o-transform:translateY(-100%);transform:translateY(-100%);opacity:0}15%{-webkit-transform:translateY(-100%);-moz-transform:translateY(-100%);-ms-transform:translateY(-100%);-o-transform:translateY(-100%);transform:translateY(-100%)}30%{-webkit-transform:translateY(-80%);-moz-transform:translateY(-80%);-ms-transform:translateY(-80%);-o-transform:translateY(-80%);transform:translateY(-80%)}40%,80%,100%{-webkit-transform:translateY(0%);-moz-transform:translateY(0%);-ms-transform:translateY(0%);-o-transform:translateY(0%);transform:translateY(0%)}60%{-webkit-transform:translateY(-30%);-moz-transform:translateY(-30%);-ms-transform:translateY(-30%);-o-transform:translateY(-30%);transform:translateY(-30%)}90%{-webkit-transform:translateY(-10%);-moz-transform:translateY(-10%);-ms-transform:translateY(-10%);-o-transform:translateY(-10%);transform:translateY(-10%)}100%{opacity:1}}@-moz-keyframes bounce{0%,5%{-webkit-transform:translateY(-100%);-moz-transform:translateY(-100%);-ms-transform:translateY(-100%);-o-transform:translateY(-100%);transform:translateY(-100%);opacity:0}15%{-webkit-transform:translateY(-100%);-moz-transform:translateY(-100%);-ms-transform:translateY(-100%);-o-transform:translateY(-100%);transform:translateY(-100%)}30%{-webkit-transform:translateY(-80%);-moz-transform:translateY(-80%);-ms-transform:translateY(-80%);-o-transform:translateY(-80%);transform:translateY(-80%)}40%,80%,100%{-webkit-transform:translateY(0%);-moz-transform:translateY(0%);-ms-transform:translateY(0%);-o-transform:translateY(0%);transform:translateY(0%)}60%{-webkit-transform:translateY(-30%);-moz-transform:translateY(-30%);-ms-transform:translateY(-30%);-o-transform:translateY(-30%);transform:translateY(-30%)}90%{-webkit-transform:translateY(-10%);-moz-transform:translateY(-10%);-ms-transform:translateY(-10%);-o-transform:translateY(-10%);transform:translateY(-10%)}100%{opacity:1}}@keyframes bounce{0%,5%{-webkit-transform:translateY(-100%);-moz-transform:translateY(-100%);-ms-transform:translateY(-100%);-o-transform:translateY(-100%);transform:translateY(-100%);opacity:0}15%{-webkit-transform:translateY(-100%);-moz-transform:translateY(-100%);-ms-transform:translateY(-100%);-o-transform:translateY(-100%);transform:translateY(-100%)}30%{-webkit-transform:translateY(-80%);-moz-transform:translateY(-80%);-ms-transform:translateY(-80%);-o-transform:translateY(-80%);transform:translateY(-80%)}40%,80%,100%{-webkit-transform:translateY(0%);-moz-transform:translateY(0%);-ms-transform:translateY(0%);-o-transform:translateY(0%);transform:translateY(0%)}60%{-webkit-transform:translateY(-30%);-moz-transform:translateY(-30%);-ms-transform:translateY(-30%);-o-transform:translateY(-30%);transform:translateY(-30%)}90%{-webkit-transform:translateY(-10%);-moz-transform:translateY(-10%);-ms-transform:translateY(-10%);-o-transform:translateY(-10%);transform:translateY(-10%)}100%{opacity:1}}#sds-weather-info{position:absolute;width:280px;height:330px;padding-left:20px;padding-top:8px;color:#FFFFFF;text-shadow:0px 1px 2px rgba(0,0,0,0.8)}#sds-weather-info .weather-temp{width:56px;height:24px;font-size:16px;font-weight:bold;font-family:"Roboto",verdana,tahoma,arial,helvetica,sans-serif;line-height:24px;padding-top:56px;padding-left:24px;float:left;cursor:pointer}#sds-weather-info .weather-icon{width:200px;height:200px;padding:0px;float:left}#sds-weather-info .weather-icon.thunder{background-image:url("../images/login/weather/login_icon_weather_thunder.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack #sds-weather-info .weather-icon.thunder{background-image:url("../img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_thunder.png");background-size:200px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug #sds-weather-info .weather-icon.thunder{background-image:url("../img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_thunder.png");background-size:200px;outline:1px green dashed}}#sds-weather-info .weather-icon.rain{background-image:url("../images/login/weather/login_icon_weather_rain.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack #sds-weather-info .weather-icon.rain{background-image:url("../img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_rain.png");background-size:200px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug #sds-weather-info .weather-icon.rain{background-image:url("../img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_rain.png");background-size:200px;outline:1px green dashed}}#sds-weather-info .weather-icon.snow{background-image:url("../images/login/weather/login_icon_weather_snow.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack #sds-weather-info .weather-icon.snow{background-image:url("../img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_snow.png");background-size:200px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug #sds-weather-info .weather-icon.snow{background-image:url("../img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_snow.png");background-size:200px;outline:1px green dashed}}#sds-weather-info .weather-icon.fog{background-image:url("../images/login/weather/login_icon_weather_fog.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack #sds-weather-info .weather-icon.fog{background-image:url("../img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_fog.png");background-size:200px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug #sds-weather-info .weather-icon.fog{background-image:url("../img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_fog.png");background-size:200px;outline:1px green dashed}}#sds-weather-info .weather-icon.sun{background-image:url("../images/login/weather/login_icon_weather_sun.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack #sds-weather-info .weather-icon.sun{background-image:url("../img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_sun.png");background-size:200px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug #sds-weather-info .weather-icon.sun{background-image:url("../img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_sun.png");background-size:200px;outline:1px green dashed}}#sds-weather-info .weather-icon.moon{background-image:url("../images/login/weather/login_icon_weather_moon.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack #sds-weather-info .weather-icon.moon{background-image:url("../img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_moon.png");background-size:200px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug #sds-weather-info .weather-icon.moon{background-image:url("../img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_moon.png");background-size:200px;outline:1px green dashed}}#sds-weather-info .weather-icon.sun_clouds{background-image:url("../images/login/weather/login_icon_weather_sun_clouds.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack #sds-weather-info .weather-icon.sun_clouds{background-image:url("../img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_sun_clouds.png");background-size:200px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug #sds-weather-info .weather-icon.sun_clouds{background-image:url("../img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_sun_clouds.png");background-size:200px;outline:1px green dashed}}#sds-weather-info .weather-icon.moon_clouds{background-image:url("../images/login/weather/login_icon_weather_moon_clouds.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack #sds-weather-info .weather-icon.moon_clouds{background-image:url("../img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_moon_clouds.png");background-size:200px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug #sds-weather-info .weather-icon.moon_clouds{background-image:url("../img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_moon_clouds.png");background-size:200px;outline:1px green dashed}}#sds-weather-info .weather-icon.cloudy{background-image:url("../images/login/weather/login_icon_weather_cloudy.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack #sds-weather-info .weather-icon.cloudy{background-image:url("../img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_cloudy.png");background-size:200px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug #sds-weather-info .weather-icon.cloudy{background-image:url("../img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_cloudy.png");background-size:200px;outline:1px green dashed}}#sds-weather-info .weather-icon.tornado{background-image:url("../images/login/weather/login_icon_weather_tornado.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack #sds-weather-info .weather-icon.tornado{background-image:url("../img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_tornado.png");background-size:200px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug #sds-weather-info .weather-icon.tornado{background-image:url("../img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_tornado.png");background-size:200px;outline:1px green dashed}}#sds-weather-info .weather-icon.cold{background-image:url("../images/login/weather/login_icon_weather_cold.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack #sds-weather-info .weather-icon.cold{background-image:url("../img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_cold.png");background-size:200px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug #sds-weather-info .weather-icon.cold{background-image:url("../img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_cold.png");background-size:200px;outline:1px green dashed}}#sds-weather-info .weather-icon.windy{background-image:url("../images/login/weather/login_icon_weather_windy.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack #sds-weather-info .weather-icon.windy{background-image:url("../img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_windy.png");background-size:200px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug #sds-weather-info .weather-icon.windy{background-image:url("../img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_windy.png");background-size:200px;outline:1px green dashed}}#sds-weather-info .weather-icon.hail{background-image:url("../images/login/weather/login_icon_weather_hail.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack #sds-weather-info .weather-icon.hail{background-image:url("../img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_hail.png");background-size:200px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug #sds-weather-info .weather-icon.hail{background-image:url("../img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_hail.png");background-size:200px;outline:1px green dashed}}#sds-weather-info .current-time{width:280px;height:80px;text-align:center;font-size:90px;line-height:70px;font-family:"Roboto",verdana,tahoma,arial,helvetica,sans-serif;padding-top:0px;padding-bottom:9px;float:left;border-bottom:solid 1px #FFFFFF;cursor:pointer}#sds-weather-info .current-time .time-tag{font-size:24px;padding-left:10px}#sds-weather-info .current-date{width:280px;height:21px;padding:9px 0px;font-size:15px;font-weight:bold;line-height:21px;font-family:verdana;text-align:center;float:left;border-top:solid 1px #000000}#sds-login{position:absolute;width:100%;height:100%;overflow:hidden;z-index:20000}#sds-login-bgimg{position:absolute;z-index:-1}#sds-login-cuslogo-wrapper{position:absolute;margin:20px 330px;overflow:hidden}#sds-login-background,#sds-steup-otp-background{position:absolute}#edit-otp-dialog,.enforce-wizard-err-message-dialog,.x-tip-invalid{z-index:2147483647 !important}#sds-login-dialog{position:absolute}#sds-login-dialog-form .x-form-text{height:24px;font-size:20px;line-height:20px;border-width:0px;color:#F3F3F3;background-image:none;background-color:transparent}.ext-ie8m .sds-login-light #sds-login-dialog-form .x-form-text{background-color:#FFFFFF;color:#000000}.ext-ie8m .sds-login-dark #sds-login-dialog-form .x-form-text{background-color:#000000;color:#FFFFFF}.sds-login-light #sds-login-dialog-form .x-form-text{text-shadow:0px 1px 1px rgba(0,0,0,0.7)}#sds-login-dialog-form div.x-panel-body{background-color:transparent;border-width:0px;padding:0px}#sds-login-icon{position:absolute;z-index:20001}#sds-login-dialog-form #login_rememberme{position:absolute;top:-1000000px;left:-1000000px}#x-form-el-login_rememberme{padding-top:8px}.sds-login-light #sds-login-dialog-form .syno-ux-checkbox-label{color:#F3F3F3;text-shadow:0px 1px 1px rgba(0,0,0,0.7)}.sds-login-light #sds-login-dialog-form .syno-ux-checkbox-label.syno-ux-cb-disabled{color:#F3F3F3 !important}.sds-login-dark #sds-login-dialog-form .syno-ux-checkbox-label{color:#888787;text-shadow:0px 1px 0px rgba(0,0,0,0.5)}.sds-login-dark #sds-login-dialog-form .syno-ux-checkbox-label.syno-ux-cb-disabled{color:#888787 !important}.sds-login-dark #sds-login-dialog-form .link,.sds-login-light #sds-login-dialog-form .link{font-size:14px;text-decoration:underline;text-align:right;padding-bottom:0px;padding-top:8px}.sds-login-dark #sds-login-dialog-form .link.appicon-ident,.sds-login-light #sds-login-dialog-form .link.appicon-ident{padding-right:52px}.sds-login-dark #sds-login-dialog-form .link:hover,.sds-login-light #sds-login-dialog-form .link:hover{cursor:pointer;color:#50ecff}.sds-login-dark #sds-login-dialog-form .link:active,.sds-login-light #sds-login-dialog-form .link:active{cursor:pointer;color:#00d6f0}.sds-login-dark #sds-login-dialog-form .link{color:#888787}.sds-login-light #sds-login-dialog-form .link{color:#F3F3F3}#sds-login-dialog-form #login-form{min-height:240px}#sds-login-dialog-form .x-form-item{margin:0px}#login-btn{min-width:120px}#login-btn.syno-ux-button.x-btn em button{font-size:20px;line-height:26px;margin-top:6px;padding-left:30px;padding-right:30px}#login-btn.x-btn.syno-ux-button{border-radius:2px;box-shadow:inset 0px 1px 0px rgba(255,255,255,0.3),0px 1px 0px rgba(0,0,0,0.2)}.sds-login-dark #login-btn.x-btn.syno-ux-button{border-color:#0b6fb6;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzAwODhlOSIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzEzN2NjNiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #0088e9), color-stop(100%, #137cc6));background-image:-webkit-linear-gradient(top, #0088e9,#137cc6);background-image:-moz-linear-gradient(top, #0088e9,#137cc6);background-image:-o-linear-gradient(top, #0088e9,#137cc6);background-image:linear-gradient(top, #0088e9,#137cc6)}.sds-login-dark #login-btn.x-btn.syno-ux-button:hover{border-color:#0b5e9a;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzAwOTBmNyIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzE3ODhkOCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #0090f7), color-stop(100%, #1788d8));background-image:-webkit-linear-gradient(top, #0090f7,#1788d8);background-image:-moz-linear-gradient(top, #0090f7,#1788d8);background-image:-o-linear-gradient(top, #0090f7,#1788d8);background-image:linear-gradient(top, #0090f7,#1788d8)}.sds-login-dark #login-btn.x-btn.syno-ux-button:active{border-color:#0b5e9a;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzAwN2NkNSIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzExNmZiMyIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #007cd5), color-stop(100%, #116fb3));background-image:-webkit-linear-gradient(top, #007cd5,#116fb3);background-image:-moz-linear-gradient(top, #007cd5,#116fb3);background-image:-o-linear-gradient(top, #007cd5,#116fb3);background-image:linear-gradient(top, #007cd5,#116fb3)}#sds-login-dialog #sds-login-bkg-highlight{width:336px;min-height:336px;position:absolute}#sds-login-dialog #sds-login-bkg-highlight .highlight-top{width:336px;height:120px;background-image:url("../img/synohdpack/images/dsm/resources/images/login/login_bkg_highlight_top.png");background-size:336px 120px}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack #sds-login-dialog #sds-login-bkg-highlight .highlight-top{background-image:url("../img/synohdpack/images/dsm/resources/images/login/login_bkg_highlight_top.png");background-size:336px 120px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug #sds-login-dialog #sds-login-bkg-highlight .highlight-top{background-image:url("../img/synohdpack/images/dsm/resources/images/login/login_bkg_highlight_top.png");background-size:336px 120px;outline:1px green dashed}}#sds-login-dialog #sds-login-bkg-highlight .highlight-bottom{width:336px;height:94px;background-image:url("../img/synohdpack/images/dsm/resources/images/login/login_bkg_highlight_bottom.png");background-size:336px 94px}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack #sds-login-dialog #sds-login-bkg-highlight .highlight-bottom{background-image:url("../img/synohdpack/images/dsm/resources/images/login/login_bkg_highlight_bottom.png");background-size:336px 94px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug #sds-login-dialog #sds-login-bkg-highlight .highlight-bottom{background-image:url("../img/synohdpack/images/dsm/resources/images/login/login_bkg_highlight_bottom.png");background-size:336px 94px;outline:1px green dashed}}#sds-login-dialog-form{width:567px}.sds-login-light .sds-login-dialog-form-table.x-panel{box-shadow:0px 1px 0px rgba(0,0,0,0.2)}.sds-login-dark .sds-login-dialog-form-table.x-panel{box-shadow:0px 1px 0px rgba(0,0,0,0.5)}.sds-login-light .sds-login-dialog-form-table td{height:58px;border-bottom:solid 1px;border-color:#fff;border-color:rgba(255,255,255,0.6);box-shadow:0px 1px 0px rgba(0,0,0,0.2)}.sds-login-dark .sds-login-dialog-form-table td{height:58px;border-bottom:solid 1px;border-color:#fff;border-color:rgba(255,255,255,0.3);box-shadow:0px 1px 0px rgba(0,0,0,0.5)}.sds-login-dialog-form-table td.prefix{width:200px;background-image:none}.sds-login-dialog-form-table td.username-icon,.sds-login-dialog-form-table td.passwd-icon,.sds-login-dialog-form-table td.otp-icon{width:32px;background-repeat:no-repeat;background-position:10px 13px}.sds-login-dialog-form-table td.username-icon{background-image:url("../img/synohdpack/images/dsm/resources/images/login/icon_user.png");background-size:32px 32px}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-login-dialog-form-table td.username-icon{background-image:url("../img/synohdpack/images/dsm/resources/images/login/icon_user.png");background-size:32px 32px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-login-dialog-form-table td.username-icon{background-image:url("../img/synohdpack/images/dsm/resources/images/login/icon_user.png");background-size:32px 32px;outline:1px green dashed}}.sds-login-dialog-form-table td.passwd-icon{background-image:url("../img/synohdpack/images/dsm/resources/images/login/icon_pw.png");background-size:32px 32px}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-login-dialog-form-table td.passwd-icon{background-image:url("../img/synohdpack/images/dsm/resources/images/login/icon_pw.png");background-size:32px 32px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-login-dialog-form-table td.passwd-icon{background-image:url("../img/synohdpack/images/dsm/resources/images/login/icon_pw.png");background-size:32px 32px;outline:1px green dashed}}.sds-login-dialog-form-table td.otp-icon{background-image:url(../images/login/icon_phone.png)}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-login-dialog-form-table td.otp-icon{background-image:url("../img/synohdpack/images/dsm/resources/images/login/icon_phone.png");background-size:32px 32px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-login-dialog-form-table td.otp-icon{background-image:url("../img/synohdpack/images/dsm/resources/images/login/icon_phone.png");background-size:32px 32px;outline:1px green dashed}}.sds-login-dialog-form-table td.center{width:240px}#sds-fp-dialog{width:345px;height:333px}#sds-login-dialog{width:336px;min-height:336px;border-radius:3px}.sds-login-light #sds-login-dialog{background-color:#fff;background-color:rgba(255,255,255,0.36);border:solid 1px;border-color:rgba(255,255,255,0.7);box-shadow:0px 2px 4px 1px rgba(0,0,0,0.2)}.sds-login-dark #sds-login-dialog{background-color:#000;background-color:rgba(0,0,0,0.7);border:solid 1px;border-color:#4b4b4b;box-shadow:0px 2px 4px rgba(0,0,0,0.4)}.ext-ie8 #sds-login-dialog,.ext-ie7 #sds-login-dialog{background-color:transparent !important;border:none !important}.ext-ie8 .sds-login-light #sds-login-bkg-highlight,.ext-ie7 .sds-login-light #sds-login-bkg-highlight{background-color:#FFFFFF;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=$ieOpacity)";filter:alpha(opacity=36);filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=36);opacity:0.36;border:solid 1px #FFFFFF}.ext-ie8 .sds-login-dark #sds-login-bkg-highlight,.ext-ie7 .sds-login-dark #sds-login-bkg-highlight{background-color:#000000;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=$ieOpacity)";filter:alpha(opacity=70);filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=70);opacity:0.7;border:solid 1px #4b4b4b}#sds-login-dialog-title{position:absolute;font-weight:bold;line-height:76px;height:76px;width:296px;left:20px;top:1px;color:#F3F3F3;font-size:30px;text-shadow:0px 1px 2px rgba(0,0,0,0.7);overflow:hidden;text-overflow:ellipsis;-o-text-overflow:ellipsis;white-space:nowrap;text-align:center}.sds-login-light #sds-login-dialog-title{border-bottom:solid 1px;border-color:#fff;border-color:rgba(255,255,255,0.6);box-shadow:0px 1px 0px rgba(0,0,0,0.2)}.sds-login-dark #sds-login-dialog-title{border-bottom:solid 1px;border-color:#fff;border-color:rgba(255,255,255,0.3);box-shadow:0px 1px 0px rgba(0,0,0,0.5)}#sds-login-dialog-status{font-size:14px;padding-top:12px;padding-bottom:0px;line-height:17px}.sds-login-light #sds-login-dialog-status{color:#F3F3F3}.sds-login-dark #sds-login-dialog-status{color:#888787}.sds-login-light #sds-login-dialog-form,.sds-login-dark #sds-login-dialog-form{width:296px;padding:76px 20px 20px 20px}.sds-standalone-main-window .x-window-tl .x-window-header{background-size:24px 24px}.sds-standalone-main-window .x-window-tc .x-panel-icon{height:28px;padding-left:24px !important;padding-top:0;margin-top:3px}.sds-window-v5.sds-standalone-main-window .x-window-tc .x-panel-icon,.sds-standalone-main-window.sds-widget-window .x-window-tc .x-panel-icon{background-position:0 3px}.sds-standalone-main-window .sds-standalone-main-window-header{position:absolute;top:8px;right:4px;height:30px;z-index:2}.sds-window-v5.sds-standalone-main-window .sds-standalone-main-window-header,.sds-standalone-main-window.sds-widget-window .sds-standalone-main-window-header{top:7px}.sds-standalone-main-window .sds-standalone-main-window-header-text{margin-top:7px;margin-left:7px;margin-right:31px;overflow:hidden}.sds-window-v5.sds-standalone-main-window .sds-standalone-main-window-header-text,.sds-standalone-main-window.sds-widget-window .sds-standalone-main-window-header-text{margin-top:3px}.sds-window-v5.sds-standalone-main-window .sds-standalone-main-window-header .sds-standalone-welcome-text,.sds-standalone-main-window.sds-widget-window .sds-standalone-main-window-header .sds-standalone-welcome-text{margin-right:16px}.sds-window-v5.sds-standalone-main-window .sds-standalone-main-window-header .sds-standalone-welcome-text:hover,.sds-standalone-main-window.sds-widget-window .sds-standalone-main-window-header .sds-standalone-welcome-text:hover{color:#0086e5}.sds-window-v5.sds-standalone-main-window .x-window-header-text,.sds-standalone-main-window.sds-widget-window .x-window-header-text{cursor:default;font-size:16px}.sds-standalone-main-window .sds-standalone-main-window-header .sds-standalone-welcome-text{margin-right:14px;font-size:12px;color:#282828}.sds-standalone-main-window .x-window-header-text{cursor:default;font-size:16px}.sds-window.sds-standalone-main-window .x-window-header-text{color:#282828}.sds-standalone-main-window .sds-standalone-logout.syno-ux-button,.sds-standalone-main-window .sds-standalone-help.syno-ux-button{border-color:transparent;background-color:transparent;background-image:none}.sds-standalone-main-window .sds-standalone-logout.syno-ux-button em button,.sds-standalone-main-window .sds-standalone-help.syno-ux-button em button{padding-left:16px;padding-right:7px;margin-left:7px;background-repeat:no-repeat;background-position-y:center;color:#282828}.sds-standalone-main-window .sds-standalone-logout.syno-ux-button.x-btn-over,.sds-standalone-main-window .sds-standalone-logout.syno-ux-button.x-btn-click,.sds-standalone-main-window .sds-standalone-help.syno-ux-button.x-btn-over,.sds-standalone-main-window .sds-standalone-help.syno-ux-button.x-btn-click{border-color:#969a9f;border-width:1px;color:#282828}.sds-standalone-main-window .sds-standalone-logout.syno-ux-button em button.sds-standalone-help-icon,.sds-standalone-main-window .sds-standalone-help.syno-ux-button em button.sds-standalone-help-icon{background-image:url(../images/ico_help.png) !important}.sds-standalone-main-window .sds-standalone-logout.syno-ux-button em button.sds-standalone-logout-icon,.sds-standalone-main-window .sds-standalone-help.syno-ux-button em button.sds-standalone-logout-icon{background-image:url(../images/ico_logout.png) !important}.sds-window-v5.sds-standalone-main-window .sds-standalone-help.syno-ux-button,.sds-standalone-main-window.sds-widget-window .sds-standalone-help.syno-ux-button{margin-right:12px !important;height:24px;width:24px;border:none;background-color:transparent;background-image:none}.sds-window-v5.sds-standalone-main-window .sds-standalone-help.syno-ux-button em button.sds-standalone-help-icon,.sds-standalone-main-window.sds-widget-window .sds-standalone-help.syno-ux-button em button.sds-standalone-help-icon{background-image:url("../images/rt_button.png") !important;background-position:0 -384px;width:auto;background-repeat:no-repeat;padding-left:24px}.sds-window-v5.sds-standalone-main-window .sds-standalone-help.syno-ux-button.x-btn-over em button,.sds-standalone-main-window.sds-widget-window .sds-standalone-help.syno-ux-button.x-btn-over em button{color:#1ca600}.sds-window-v5.sds-standalone-main-window .sds-standalone-help.syno-ux-button.x-btn-over em button.sds-standalone-help-icon,.sds-standalone-main-window.sds-widget-window .sds-standalone-help.syno-ux-button.x-btn-over em button.sds-standalone-help-icon{background-position:0 -408px}.sds-window-v5.sds-standalone-main-window .sds-standalone-help.syno-ux-button.x-btn-click em button,.sds-standalone-main-window.sds-widget-window .sds-standalone-help.syno-ux-button.x-btn-click em button{color:#1ca600}.sds-window-v5.sds-standalone-main-window .sds-standalone-help.syno-ux-button.x-btn-click em button.sds-standalone-help-icon,.sds-standalone-main-window.sds-widget-window .sds-standalone-help.syno-ux-button.x-btn-click em button.sds-standalone-help-icon{background-position:0 -432px}.sds-window-v5.sds-standalone-main-window .x-toolbar-cell .sds-standalone-logout.x-btn,.sds-standalone-main-window.sds-widget-window .x-toolbar-cell .sds-standalone-logout.x-btn{background-image:none;background-color:transparent;border:none;margin-right:0px !important}.sds-window-v5.sds-standalone-main-window .x-toolbar-cell .sds-standalone-logout.x-btn .sds-standalone-logout-icon,.sds-standalone-main-window.sds-widget-window .x-toolbar-cell .sds-standalone-logout.x-btn .sds-standalone-logout-icon{background-image:url("../images/rt_button.png") !important;padding-left:26px;background-position:0 -672px;background-repeat:no-repeat}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .sds-window-v5.sds-standalone-main-window .x-toolbar-cell .sds-standalone-logout.x-btn .sds-standalone-logout-icon,.synohdpack .sds-standalone-main-window.sds-widget-window .x-toolbar-cell .sds-standalone-logout.x-btn .sds-standalone-logout-icon{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/rt_button.png");background-size:"24px" "24px"}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .sds-window-v5.sds-standalone-main-window .x-toolbar-cell .sds-standalone-logout.x-btn .sds-standalone-logout-icon,.synohdpackdebug .sds-standalone-main-window.sds-widget-window .x-toolbar-cell .sds-standalone-logout.x-btn .sds-standalone-logout-icon{background-image:url("../img/synohdpack/images/dsm/resources/images/../images/rt_button.png");background-size:"24px" "24px";outline:1px green dashed}}.sds-window-v5.sds-standalone-main-window .x-toolbar-cell .sds-standalone-logout.x-btn.x-btn-over .sds-standalone-logout-icon,.sds-standalone-main-window.sds-widget-window .x-toolbar-cell .sds-standalone-logout.x-btn.x-btn-over .sds-standalone-logout-icon,.sds-window-v5.sds-standalone-main-window .x-toolbar-cell .sds-standalone-logout.x-btn.x-btn-click .sds-standalone-logout-icon,.sds-standalone-main-window.sds-widget-window .x-toolbar-cell .sds-standalone-logout.x-btn.x-btn-click .sds-standalone-logout-icon{background-position:0 -696px;color:#0086e5}.sds-window-v5.sds-standalone-main-window .x-toolbar-cell .sds-standalone-logout.x-btn.x-item-disabled .sds-standalone-logout-icon,.sds-standalone-main-window.sds-widget-window .x-toolbar-cell .sds-standalone-logout.x-btn.x-item-disabled .sds-standalone-logout-icon{background-position:0 -720px}.sds-window-v5.sds-standalone-main-window .sds-standalone-main-window-header-toolbar em button,.sds-standalone-main-window.sds-widget-window .sds-standalone-main-window-header-toolbar em button{height:24px;line-height:24px}.syno-sds-shortcut-zone-wrapper{position:absolute;overflow:visible;z-index:-1}.syno-sds-shortcut-zone-wrapper.on-instruction{background-color:#fff;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=$ieOpacity)";filter:alpha(opacity=25);filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=25);opacity:0.25;z-index:2 !important}.syno-sds-shortcut-zone-wrapper.on-dropped{z-index:2 !important}.syno-sds-appview.on-mouse-drag .syno-sds-shortcut-zone-wrapper{z-index:2 !important}.syno-sds-shortcut-zone .add-icon{visibility:hidden;position:absolute;width:80px;height:64px;background:url(../images/desktop/add_one.png) no-repeat}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-sds-shortcut-zone .add-icon{background-image:url("../img/synohdpack/images/dsm/resources/images/desktop/add_one.png");background-size:80px 64px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-sds-shortcut-zone .add-icon{background-image:url("../img/synohdpack/images/dsm/resources/images/desktop/add_one.png");background-size:80px 64px;outline:1px green dashed}}.classical .syno-sds-shortcut-zone-wrapper{left:0px}.classical.syno-sds-appview.on-mouse-drag .syno-sds-shortcut-zone-wrapper{z-index:0 !important}.appview-icon-dragging-proxy .sds-application-notify-badge-num{display:none}.appview-icon-dragging-proxy .x-dd-drag-ghost{border:none !important;background-color:transparent !important;opacity:1 !important;filter:none !important}.appview-icon-dragging-proxy .x-dd-drag-ghost .text{visibility:hidden !important}.appview-icon-dragging-proxy .image{white-space:normal}.appview-icon-dragging-proxy.x-dd-drag-proxy{background-color:transparent;border:none;padding:0px;box-shadow:none}.appview-icon-dragging-proxy .x-dd-drop-icon{width:36px;height:36px;top:40px;left:46px;background-position:center}.appview-icon-dragging-proxy.x-dd-drop-ok-add .x-dd-drop-icon{background-image:url(../images/icon_drag_add.png)}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .appview-icon-dragging-proxy.x-dd-drop-ok-add .x-dd-drop-icon{background-image:url("../img/synohdpack/images/dsm/resources/images/icon_drag_add.png");background-size:36px 36px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .appview-icon-dragging-proxy.x-dd-drop-ok-add .x-dd-drop-icon{background-image:url("../img/synohdpack/images/dsm/resources/images/icon_drag_add.png");background-size:36px 36px;outline:1px green dashed}}.appview-icon-dragging-proxy.x-dd-drop-nodrop .x-dd-drop-icon{background-image:url(../images/icon_drag_ban.png)}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .appview-icon-dragging-proxy.x-dd-drop-nodrop .x-dd-drop-icon{background-image:url("../img/synohdpack/images/dsm/resources/images/icon_drag_ban.png");background-size:36px 36px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .appview-icon-dragging-proxy.x-dd-drop-nodrop .x-dd-drop-icon{background-image:url("../img/synohdpack/images/dsm/resources/images/icon_drag_ban.png");background-size:36px 36px;outline:1px green dashed}}.classical.appview-icon-dragging-proxy.x-dd-drop-ok-add .x-dd-drop-icon,.classical.appview-icon-dragging-proxy.x-dd-drop-nodrop .x-dd-drop-icon{width:48px;height:48px;top:16px;left:22px;background-position:center}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;src:local("Roboto Regular"),local("Roboto-Regular"),url(../fonts/roboto.woff) format("woff")}.sds-search-result .x-combo-list-hd,.sds-search-result .section{color:#0086e5}.sds-window-v5.sds-standalone-main-window .sds-standalone-main-window-header .sds-standalone-welcome-text,.sds-standalone-main-window.sds-widget-window .sds-standalone-main-window-header .sds-standalone-welcome-text{margin-right:16px}.sds-window-v5.sds-standalone-main-window .sds-standalone-main-window-header .sds-standalone-welcome-text:hover,.sds-standalone-main-window.sds-widget-window .sds-standalone-main-window-header .sds-standalone-welcome-text:hover{color:#0086e5}.sds-window-v5.sds-standalone-main-window .x-toolbar-cell .sds-standalone-logout.x-btn.x-btn-over .sds-standalone-logout-icon,.sds-standalone-main-window.sds-widget-window .x-toolbar-cell .sds-standalone-logout.x-btn.x-btn-over .sds-standalone-logout-icon,.sds-window-v5.sds-standalone-main-window .x-toolbar-cell .sds-standalone-logout.x-btn.x-btn-click .sds-standalone-logout-icon,.sds-standalone-main-window.sds-widget-window .x-toolbar-cell .sds-standalone-logout.x-btn.x-btn-click .sds-standalone-logout-icon{color:#0086e5}.sds-user-menu .sds-user-menu-options-click .x-menu-item-text,.sds-user-menu .sds-user-menu-restart-click .x-menu-item-text,.sds-user-menu .sds-user-menu-shutdown-click .x-menu-item-text,.sds-user-menu .sds-user-menu-logout-click .x-menu-item-text{color:#0086e5}.sds-overflow-menu .sds-overflow-items-click .x-menu-item-text{color:#0086e5}.sds-tray-msg-window .x-plain-tl .x-plain-header{color:#0086e5}.sds-searchbox .sds-search-result .section{color:#0086e5}.sds-window-v5 .x-window-mc,.sds-widget-window .x-window-mc{background-color:#fff}.sds-window-v5 .x-window-tl,.sds-widget-window .x-window-tl{background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2Q4ZWNmYiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #d8ecfb), color-stop(100%, #ffffff));background-image:-webkit-linear-gradient(#d8ecfb,#ffffff);background-image:-moz-linear-gradient(#d8ecfb,#ffffff);background-image:-o-linear-gradient(#d8ecfb,#ffffff);background-image:linear-gradient(#d8ecfb,#ffffff);background-color:#fff;border-top:3px solid #0086e5}.sds-window-v5.deactive-win .x-window-tl,.deactive-win.sds-widget-window .x-window-tl{background-image:linear-gradient(#e6ebf0,#ffffff)}.sds-window-v5 .x-window-header-text,.sds-widget-window .x-window-header-text{color:#0086e5}.sds-window-v5 .x-window-body,.sds-widget-window .x-window-body{background-color:#fff}.sds-window-v5 .x-window-bl,.sds-widget-window .x-window-bl{background-color:#fff}.sds-window-v5 .x-window-tbar .x-toolbar,.sds-widget-window .x-window-tbar .x-toolbar{background-color:#fff}.sds-window-v5 .x-progress-bar,.sds-widget-window .x-progress-bar{background-color:#0086e5}.sds-window-v5 .ext-el-mask,.sds-widget-window .ext-el-mask{background-color:#fff}.sds-window-v5 .ext-el-mask-msg,.sds-widget-window .ext-el-mask-msg{background-color:#fff}.sds-window-v5 .ext-el-mask-msg div,.sds-widget-window .ext-el-mask-msg div{background-color:#fff}.syno-sds-fs-thumbnailsView .thumb-wrap{float:left;padding:0px;margin:0px 16px 8px 16px;-moz-transition-property:margin;-moz-transition-timing-function:ease-out;-moz-transition-duration:218ms;-webkit-transition-property:margin;-webkit-transition-timing-function:ease-out;-webkit-transition-duration:218ms;-o-transition-property:margin;-o-transition-timing-function:ease-out;-o-transition-duration:218ms;transition-timing-function:ease-out;transition-duration:218ms;transition-property:margin}#sds-desktop li.launch-icon .text,#sds-desktop li.launch-icon .text a{text-shadow:0.1em 0.1em 0.1em #000000;filter:Shadow(Color=#000, Direction=135, Strength=1)} diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/css/ext-all.css b/salt/idh/skins/http/opencanary/nasLogin/static/css/ext-all.css new file mode 100644 index 000000000..2fd3718f4 --- /dev/null +++ b/salt/idh/skins/http/opencanary/nasLogin/static/css/ext-all.css @@ -0,0 +1 @@ +html,body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,p,blockquote,th,td{margin:0;padding:0;}img,body,html{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}ol,ul{list-style:none;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;}q:before,q:after{content:'';}.ext-forced-border-box,.ext-forced-border-box *{-moz-box-sizing:border-box;-ms-box-sizing:border-box;-webkit-box-sizing:border-box;}.ext-el-mask{z-index:100;position:absolute;top:0;left:0;-moz-opacity:.5;opacity:.50;filter:alpha(opacity=50);width:100%;height:100%;zoom:1;}.ext-el-mask-msg{z-index:20001;position:absolute;top:0;left:0;border:1px solid;background:repeat-x 0 -16px;padding:2px;}.ext-el-mask-msg div{padding:5px 10px 5px 10px;border:1px solid;cursor:wait;}.ext-shim{position:absolute;visibility:hidden;left:0;top:0;overflow:hidden;}.ext-ie .ext-shim{filter:alpha(opacity=0);}.ext-ie6 .ext-shim{margin-left:5px;margin-top:3px;}.x-mask-loading div{padding:5px 10px 5px 25px;background:no-repeat 5px 5px;line-height:16px;}.x-hidden,.x-hide-offsets{position:absolute!important;left:-10000px;top:-10000px;visibility:hidden;}.x-hide-display{display:none!important;}.x-hide-nosize,.x-hide-nosize *{height:0!important;width:0!important;visibility:hidden!important;border:none!important;zoom:1;}.x-hide-visibility{visibility:hidden!important;}.x-masked{overflow:hidden!important;}.x-masked-relative{position:relative!important;}.x-masked select,.x-masked object,.x-masked embed{visibility:hidden;}.x-layer{visibility:hidden;}.x-unselectable,.x-unselectable *{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;}.x-repaint{zoom:1;background-color:transparent;-moz-outline:0;outline:0;}.x-item-disabled{cursor:default;opacity:.6;-moz-opacity:.6;filter:alpha(opacity=60);}.x-item-disabled *{cursor:default!important;}.x-form-radio-group .x-item-disabled{filter:none;}.x-splitbar-proxy{position:absolute;visibility:hidden;z-index:20001;zoom:1;line-height:1px;font-size:1px;overflow:hidden;}.x-splitbar-h,.x-splitbar-proxy-h{cursor:e-resize;cursor:col-resize;}.x-splitbar-v,.x-splitbar-proxy-v{cursor:s-resize;cursor:row-resize;}.x-color-palette{width:150px;height:92px;cursor:pointer;}.x-color-palette a{border:1px solid;float:left;padding:2px;text-decoration:none;-moz-outline:0 none;outline:0 none;cursor:pointer;}.x-color-palette a:hover,.x-color-palette a.x-color-palette-sel{border:1px solid;}.x-color-palette em{display:block;border:1px solid;}.x-color-palette em span{cursor:pointer;display:block;height:10px;line-height:10px;width:10px;}.x-ie-shadow{display:none;position:absolute;overflow:hidden;left:0;top:0;zoom:1;}.x-shadow{display:none;position:absolute;overflow:hidden;left:0;top:0;}.x-shadow *{overflow:hidden;}.x-shadow *{padding:0;border:0;margin:0;clear:none;zoom:1;}.x-shadow .xstc,.x-shadow .xsbc{height:6px;float:left;}.x-shadow .xstl,.x-shadow .xstr,.x-shadow .xsbl,.x-shadow .xsbr{width:6px;height:6px;float:left;}.x-shadow .xsc{width:100%;}.x-shadow .xsml,.x-shadow .xsmr{width:6px;float:left;height:100%;}.x-shadow .xsmc{float:left;height:100%;background-color:transparent;}.x-shadow .xst,.x-shadow .xsb{height:6px;overflow:hidden;width:100%;}.x-shadow .xsml{background:transparent repeat-y 0 0;}.x-shadow .xsmr{background:transparent repeat-y -6px 0;}.x-shadow .xstl{background:transparent no-repeat 0 0;}.x-shadow .xstc{background:transparent repeat-x 0 -30px;}.x-shadow .xstr{background:transparent repeat-x 0 -18px;}.x-shadow .xsbl{background:transparent no-repeat 0 -12px;}.x-shadow .xsbc{background:transparent repeat-x 0 -36px;}.x-shadow .xsbr{background:transparent repeat-x 0 -6px;}.loading-indicator{background:no-repeat left;padding-left:20px;line-height:16px;margin:3px;}.x-text-resize{position:absolute;left:-1000px;top:-1000px;visibility:hidden;zoom:1;}.x-drag-overlay{width:100%;height:100%;display:none;position:absolute;left:0;top:0;background-image:url(../images/default/s.gif);z-index:20000;}.x-clear{clear:both;height:0;overflow:hidden;line-height:0;font-size:0;}.x-spotlight{z-index:8999;position:absolute;top:0;left:0;-moz-opacity:.5;opacity:.50;filter:alpha(opacity=50);width:0;height:0;zoom:1;}#x-history-frame{position:absolute;top:-1px;left:0;width:1px;height:1px;visibility:hidden;}#x-history-field{position:absolute;top:0;left:-1px;width:1px;height:1px;visibility:hidden;}.x-resizable-handle{position:absolute;z-index:100;font-size:1px;line-height:6px;overflow:hidden;filter:alpha(opacity=0);opacity:0;zoom:1;}.x-resizable-handle-east{width:6px;cursor:e-resize;right:0;top:0;height:100%;}.ext-ie .x-resizable-handle-east{margin-right:-1px;}.x-resizable-handle-south{width:100%;cursor:s-resize;left:0;bottom:0;height:6px;}.ext-ie .x-resizable-handle-south{margin-bottom:-1px;}.x-resizable-handle-west{width:6px;cursor:w-resize;left:0;top:0;height:100%;}.x-resizable-handle-north{width:100%;cursor:n-resize;left:0;top:0;height:6px;}.x-resizable-handle-southeast{width:6px;cursor:se-resize;right:0;bottom:0;height:6px;z-index:101;}.x-resizable-handle-northwest{width:6px;cursor:nw-resize;left:0;top:0;height:6px;z-index:101;}.x-resizable-handle-northeast{width:6px;cursor:ne-resize;right:0;top:0;height:6px;z-index:101;}.x-resizable-handle-southwest{width:6px;cursor:sw-resize;left:0;bottom:0;height:6px;z-index:101;}.x-resizable-over .x-resizable-handle,.x-resizable-pinned .x-resizable-handle{filter:alpha(opacity=100);opacity:1;}.x-resizable-over .x-resizable-handle-east,.x-resizable-pinned .x-resizable-handle-east,.x-resizable-over .x-resizable-handle-west,.x-resizable-pinned .x-resizable-handle-west{background-position:left;}.x-resizable-over .x-resizable-handle-south,.x-resizable-pinned .x-resizable-handle-south,.x-resizable-over .x-resizable-handle-north,.x-resizable-pinned .x-resizable-handle-north{background-position:top;}.x-resizable-over .x-resizable-handle-southeast,.x-resizable-pinned .x-resizable-handle-southeast{background-position:top left;}.x-resizable-over .x-resizable-handle-northwest,.x-resizable-pinned .x-resizable-handle-northwest{background-position:bottom right;}.x-resizable-over .x-resizable-handle-northeast,.x-resizable-pinned .x-resizable-handle-northeast{background-position:bottom left;}.x-resizable-over .x-resizable-handle-southwest,.x-resizable-pinned .x-resizable-handle-southwest{background-position:top right;}.x-resizable-proxy{border:1px dashed;position:absolute;overflow:hidden;display:none;left:0;top:0;z-index:50000;}.x-resizable-overlay{width:100%;height:100%;display:none;position:absolute;left:0;top:0;z-index:200000;-moz-opacity:0;opacity:0;filter:alpha(opacity=0);}.x-tab-panel{overflow:hidden;}.x-tab-panel-header,.x-tab-panel-footer{border:1px solid;overflow:hidden;zoom:1;}.x-tab-panel-header{border:1px solid;padding-bottom:2px;}.x-tab-panel-footer{border:1px solid;padding-top:2px;}.x-tab-strip-wrap{width:100%;overflow:hidden;position:relative;zoom:1;}ul.x-tab-strip{display:block;width:5000px;zoom:1;}ul.x-tab-strip-top{padding-top:1px;background:repeat-x bottom;border-bottom:1px solid;}ul.x-tab-strip-bottom{padding-bottom:1px;background:repeat-x top;border-top:1px solid;border-bottom:0 none;}.x-tab-panel-header-plain .x-tab-strip-top{background:transparent!important;padding-top:0!important;}.x-tab-panel-header-plain{background:transparent!important;border-width:0!important;padding-bottom:0!important;}.x-tab-panel-header-plain .x-tab-strip-spacer,.x-tab-panel-footer-plain .x-tab-strip-spacer{border:1px solid;height:2px;font-size:1px;line-height:1px;}.x-tab-panel-header-plain .x-tab-strip-spacer{border-top:0 none;}.x-tab-panel-footer-plain .x-tab-strip-spacer{border-bottom:0 none;}.x-tab-panel-footer-plain .x-tab-strip-bottom{background:transparent!important;padding-bottom:0!important;}.x-tab-panel-footer-plain{background:transparent!important;border-width:0!important;padding-top:0!important;}.ext-border-box .x-tab-panel-header-plain .x-tab-strip-spacer,.ext-border-box .x-tab-panel-footer-plain .x-tab-strip-spacer{height:3px;}ul.x-tab-strip li{float:left;margin-left:2px;}ul.x-tab-strip li.x-tab-edge{float:left;margin:0!important;padding:0!important;border:0 none!important;font-size:1px!important;line-height:1px!important;overflow:hidden;zoom:1;background:transparent!important;width:1px;}.x-tab-strip a,.x-tab-strip span,.x-tab-strip em{display:block;}.x-tab-strip a{text-decoration:none!important;-moz-outline:0;outline:0;cursor:pointer;}.x-tab-strip-inner{overflow:hidden;text-overflow:ellipsis;}.x-tab-strip span.x-tab-strip-text{white-space:nowrap;cursor:pointer;padding:4px 0;}.x-tab-strip-top .x-tab-with-icon .x-tab-right{padding-left:6px;}.x-tab-strip .x-tab-with-icon span.x-tab-strip-text{padding-left:20px;background-position:0 3px;background-repeat:no-repeat;}.x-tab-strip-active,.x-tab-strip-active a.x-tab-right{cursor:default;}.x-tab-strip-active span.x-tab-strip-text{cursor:default;}.x-tab-strip-disabled .x-tabs-text{cursor:default;}.x-tab-panel-body{overflow:hidden;}.x-tab-panel-bwrap{overflow:hidden;}.ext-ie .x-tab-strip .x-tab-right{position:relative;}.x-tab-strip-top .x-tab-strip-active .x-tab-right{margin-bottom:-1px;}.ext-ie8 .x-tab-strip li{position:relative;}.ext-border-box .ext-ie8 .x-tab-strip-top .x-tab-right,.ext-border-box .ext-ie9 .x-tab-strip-top .x-tab-right{top:1px;}.ext-ie8 .x-tab-strip-top,.ext-ie9 .x-tab-strip-top{padding-top:1px;}.ext-border-box .ext-ie8 .x-tab-strip-top,.ext-border-box .ext-ie9 .x-tab-strip-top{padding-top:0;}.ext-ie8 .x-tab-strip .x-tab-strip-closable a.x-tab-strip-close,.ext-ie9 .x-tab-strip .x-tab-strip-closable a.x-tab-strip-close{top:3px;}.ext-border-box .ext-ie8 .x-tab-strip .x-tab-strip-closable a.x-tab-strip-close,.ext-border-box .ext-ie9 .x-tab-strip .x-tab-strip-closable a.x-tab-strip-close{top:4px;}.ext-ie8 .x-tab-strip-bottom .x-tab-right,.ext-ie9 .x-tab-strip-bottom .x-tab-right{top:0;}.x-tab-strip-top .x-tab-strip-active .x-tab-right span.x-tab-strip-text{padding-bottom:5px;}.x-tab-strip-bottom .x-tab-strip-active .x-tab-right{margin-top:-1px;}.x-tab-strip-bottom .x-tab-strip-active .x-tab-right span.x-tab-strip-text{padding-top:5px;}.x-tab-strip-top .x-tab-right{background:transparent no-repeat 0 -51px;padding-left:10px;}.x-tab-strip-top .x-tab-left{background:transparent no-repeat right -351px;padding-right:10px;}.x-tab-strip-top .x-tab-strip-inner{background:transparent repeat-x 0 -201px;}.x-tab-strip-top .x-tab-strip-over .x-tab-right{background-position:0 -101px;}.x-tab-strip-top .x-tab-strip-over .x-tab-left{background-position:right -401px;}.x-tab-strip-top .x-tab-strip-over .x-tab-strip-inner{background-position:0 -251px;}.x-tab-strip-top .x-tab-strip-active .x-tab-right{background-position:0 0;}.x-tab-strip-top .x-tab-strip-active .x-tab-left{background-position:right -301px;}.x-tab-strip-top .x-tab-strip-active .x-tab-strip-inner{background-position:0 -151px;}.x-tab-strip-bottom .x-tab-right{background:no-repeat bottom right;}.x-tab-strip-bottom .x-tab-left{background:no-repeat bottom left;}.x-tab-strip-bottom .x-tab-strip-active .x-tab-right{background:no-repeat bottom right;}.x-tab-strip-bottom .x-tab-strip-active .x-tab-left{background:no-repeat bottom left;}.x-tab-strip-bottom .x-tab-left{margin-right:3px;padding:0 10px;}.x-tab-strip-bottom .x-tab-right{padding:0;}.x-tab-strip .x-tab-strip-close{display:none;}.x-tab-strip-closable{position:relative;}.x-tab-strip-closable .x-tab-left{padding-right:19px;}.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close{opacity:.6;-moz-opacity:.6;background-repeat:no-repeat;display:block;width:11px;height:11px;position:absolute;top:3px;right:3px;cursor:pointer;z-index:2;}.x-tab-strip .x-tab-strip-active a.x-tab-strip-close{opacity:.8;-moz-opacity:.8;}.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close:hover{opacity:1;-moz-opacity:1;}.x-tab-panel-body{border:1px solid;}.x-tab-panel-body-top{border-top:0 none;}.x-tab-panel-body-bottom{border-bottom:0 none;}.x-tab-scroller-left{background:transparent no-repeat -18px 0;border-bottom:1px solid;width:18px;position:absolute;left:0;top:0;z-index:10;cursor:pointer;}.x-tab-scroller-left-over{background-position:0 0;}.x-tab-scroller-left-disabled{background-position:-18px 0;opacity:.5;-moz-opacity:.5;filter:alpha(opacity=50);cursor:default;}.x-tab-scroller-right{background:transparent no-repeat 0 0;border-bottom:1px solid;width:18px;position:absolute;right:0;top:0;z-index:10;cursor:pointer;}.x-tab-scroller-right-over{background-position:-18px 0;}.x-tab-scroller-right-disabled{background-position:0 0;opacity:.5;-moz-opacity:.5;filter:alpha(opacity=50);cursor:default;}.x-tab-scrolling-bottom .x-tab-scroller-left,.x-tab-scrolling-bottom .x-tab-scroller-right{margin-top:1px;}.x-tab-scrolling .x-tab-strip-wrap{margin-left:18px;margin-right:18px;}.x-tab-scrolling{position:relative;}.x-tab-panel-bbar .x-toolbar{border:1px solid;border-top:0 none;overflow:hidden;padding:2px;}.x-tab-panel-tbar .x-toolbar{border:1px solid;border-top:0 none;overflow:hidden;padding:2px;}.x-form-field{margin:0;}.ext-webkit *:focus{outline:none!important;}.x-form-text,textarea.x-form-field{padding:1px 3px;background:repeat-x 0 0;border:1px solid;}textarea.x-form-field{padding:2px 3px;}.x-form-text,.ext-ie .x-form-file{height:22px;line-height:18px;vertical-align:middle;}.ext-ie6 .x-form-text,.ext-ie7 .x-form-text{margin:-1px 0;height:22px;line-height:18px;}.x-quirks .ext-ie9 .x-form-text{height:22px;padding-top:3px;padding-bottom:0;}.x-quirks .ext-ie9 .x-input-wrapper .x-form-text,.x-quirks .ext-ie9 .x-form-field-trigger-wrap .x-form-text{margin-top:-1px;margin-bottom:-1px;}.x-quirks .ext-ie9 .x-input-wrapper .x-form-element{margin-bottom:-1px;}.ext-ie6 .x-form-field-wrap .x-form-file-btn,.ext-ie7 .x-form-field-wrap .x-form-file-btn{top:-1px;}.ext-ie6 textarea.x-form-field,.ext-ie7 textarea.x-form-field{margin:-1px 0;}.ext-strict .x-form-text{height:18px;}.ext-safari.ext-mac textarea.x-form-field{margin-bottom:-2px;}.ext-gecko .x-form-text,.ext-ie8 .x-form-text{padding-top:2px;padding-bottom:0;}.ext-ie6 .x-form-composite .x-form-text.x-box-item,.ext-ie7 .x-form-composite .x-form-text.x-box-item{margin:0!important;}textarea{resize:none;}.x-form-select-one{height:20px;line-height:18px;vertical-align:middle;border:1px solid;}.x-form-check-wrap{line-height:18px;height:auto;}.ext-ie .x-form-check-wrap input{width:15px;height:15px;}.x-form-check-wrap input{vertical-align:bottom;}.x-editor .x-form-check-wrap{padding:3px;}.x-editor .x-form-checkbox{height:13px;}.x-form-check-group-label{border-bottom:1px solid;margin-bottom:5px;padding-left:3px!important;float:none!important;}.x-form-field-wrap .x-form-trigger{width:17px;height:21px;border:0;background:transparent no-repeat 0 0;cursor:pointer;border-bottom:1px solid;position:absolute;top:0;}.x-form-field-wrap .x-form-date-trigger,.x-form-field-wrap .x-form-clear-trigger,.x-form-field-wrap .x-form-search-trigger{cursor:pointer;}.x-form-field-wrap .x-form-twin-triggers .x-form-trigger{position:static;top:auto;vertical-align:top;}.x-form-field-wrap{position:relative;left:0;top:0;text-align:left;zoom:1;white-space:nowrap;}.ext-strict .ext-ie8 .x-toolbar-cell .x-form-field-trigger-wrap .x-form-trigger{right:0;}.x-form-field-wrap .x-form-trigger-over{background-position:-17px 0;}.x-form-field-wrap .x-form-trigger-click{background-position:-34px 0;}.x-trigger-wrap-focus .x-form-trigger{background-position:-51px 0;}.x-trigger-wrap-focus .x-form-trigger-over{background-position:-68px 0;}.x-trigger-wrap-focus .x-form-trigger-click{background-position:-85px 0;}.x-trigger-wrap-focus .x-form-trigger{border-bottom:1px solid;}.x-item-disabled .x-form-trigger-over{background-position:0 0!important;border-bottom:1px solid;}.x-item-disabled .x-form-trigger-click{background-position:0 0!important;border-bottom:1px solid;}.x-trigger-noedit{cursor:pointer;}.x-form-focus,textarea.x-form-focus{border:1px solid;}.x-form-invalid,textarea.x-form-invalid{background:repeat-x bottom;border:1px solid;}.x-form-inner-invalid,textarea.x-form-inner-invalid{background:repeat-x bottom;}.x-editor{visibility:hidden;padding:0;margin:0;}.x-form-grow-sizer{left:-10000px;padding:8px 3px;position:absolute;visibility:hidden;top:-10000px;white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word;zoom:1;}.x-form-grow-sizer p{margin:0!important;border:0 none!important;padding:0!important;}.x-form-item{display:block;margin-bottom:4px;zoom:1;}.x-form-item label.x-form-item-label{display:block;float:left;width:100px;padding:3px;padding-left:0;clear:left;z-index:2;position:relative;}.x-form-element{padding-left:105px;position:relative;}.x-form-invalid-msg{padding:2px;padding-left:18px;background:transparent no-repeat 0 2px;line-height:16px;width:200px;}.x-form-label-left label.x-form-item-label{text-align:left;}.x-form-label-right label.x-form-item-label{text-align:right;}.x-form-label-top .x-form-item label.x-form-item-label{width:auto;float:none;clear:none;display:inline;margin-bottom:4px;position:static;}.x-form-label-top .x-form-element{padding-left:0;padding-top:4px;}.x-form-label-top .x-form-item{padding-bottom:4px;}.x-small-editor .x-form-text{height:20px;line-height:16px;vertical-align:middle;}.ext-ie6 .x-small-editor .x-form-text,.ext-ie7 .x-small-editor .x-form-text{margin-top:-1px!important;margin-bottom:-1px!important;height:20px!important;line-height:16px!important;}.ext-strict .x-small-editor .x-form-text{height:16px!important;}.ext-ie6 .x-small-editor .x-form-text,.ext-ie7 .x-small-editor .x-form-text{height:20px;line-height:16px;}.ext-border-box .x-small-editor .x-form-text{height:20px;}.x-small-editor .x-form-select-one{height:20px;line-height:16px;vertical-align:middle;}.x-small-editor .x-form-num-field{text-align:right;}.x-small-editor .x-form-field-wrap .x-form-trigger{height:19px;}.ext-webkit .x-small-editor .x-form-text{padding-top:3px;font-size:100%;}.ext-strict .ext-webkit .x-small-editor .x-form-text{height:14px!important;}.x-form-clear{clear:both;height:0;overflow:hidden;line-height:0;font-size:0;}.x-form-clear-left{clear:left;height:0;overflow:hidden;line-height:0;font-size:0;}.ext-ie6 .x-form-check-wrap input,.ext-border-box .x-form-check-wrap input{margin-top:3px;}.x-form-cb-label{position:relative;margin-left:4px;top:2px;}.ext-ie .x-form-cb-label{top:1px;}.ext-ie6 .x-form-cb-label,.ext-border-box .x-form-cb-label{top:3px;}.x-form-display-field{padding-top:2px;}.ext-gecko .x-form-display-field,.ext-strict .ext-ie7 .x-form-display-field{padding-top:1px;}.ext-ie .x-form-display-field{padding-top:3px;}.ext-strict .ext-ie8 .x-form-display-field{padding-top:0;}.x-form-column{float:left;padding:0;margin:0;width:48%;overflow:hidden;zoom:1;}.x-form .x-form-btns-ct .x-btn{float:right;clear:none;}.x-form .x-form-btns-ct .x-form-btns td{border:0;padding:0;}.x-form .x-form-btns-ct .x-form-btns-right table{float:right;clear:none;}.x-form .x-form-btns-ct .x-form-btns-left table{float:left;clear:none;}.x-form .x-form-btns-ct .x-form-btns-center{text-align:center;}.x-form .x-form-btns-ct .x-form-btns-center table{margin:0 auto;}.x-form .x-form-btns-ct table td.x-form-btn-td{padding:3px;}.x-form .x-form-btns-ct .x-btn-focus .x-btn-left{background-position:0 -147px;}.x-form .x-form-btns-ct .x-btn-focus .x-btn-right{background-position:0 -168px;}.x-form .x-form-btns-ct .x-btn-focus .x-btn-center{background-position:0 -189px;}.x-form .x-form-btns-ct .x-btn-click .x-btn-center{background-position:0 -126px;}.x-form .x-form-btns-ct .x-btn-click .x-btn-right{background-position:0 -84px;}.x-form .x-form-btns-ct .x-btn-click .x-btn-left{background-position:0 -63px;}.x-form-invalid-icon{width:16px;height:18px;visibility:hidden;position:absolute;left:0;top:0;display:block;background:transparent no-repeat 0 2px;}.x-fieldset{border:1px solid;padding:10px;margin-bottom:10px;display:block;}.ext-webkit .x-fieldset-header{padding-top:1px;}.ext-ie .x-fieldset legend{margin-bottom:10px;}.ext-strict .ext-ie9 .x-fieldset legend.x-fieldset-header{padding-top:1px;}.ext-ie .x-fieldset{padding-top:0;padding-bottom:10px;}.x-fieldset legend .x-tool-toggle{margin-right:3px;margin-left:0;float:left!important;}.x-fieldset legend input{margin-right:3px;float:left!important;height:13px;width:13px;}fieldset.x-panel-collapsed{padding-bottom:0!important;border-width:1px 1px 0 1px!important;border-left-color:transparent;border-right-color:transparent;}.ext-ie6 fieldset.x-panel-collapsed{padding-bottom:0!important;border-width:1px 0 0 0!important;margin-left:1px;margin-right:1px;}fieldset.x-panel-collapsed .x-fieldset-bwrap{visibility:hidden;position:absolute;left:-1000px;top:-1000px;}.ext-ie .x-fieldset-bwrap{zoom:1;}.x-fieldset-noborder{border:0 none transparent;}.x-fieldset-noborder legend{margin-left:-3px;}.ext-ie .x-fieldset-noborder legend{position:relative;margin-bottom:23px;}.ext-ie .x-fieldset-noborder legend span{position:absolute;left:16px;}.ext-gecko .x-window-body .x-form-item{-moz-outline:0;outline:0;overflow:auto;}.ext-mac.ext-gecko .x-window-body .x-form-item{overflow:hidden;}.ext-gecko .x-form-item{-moz-outline:0;outline:0;}.x-hide-label label.x-form-item-label{display:none;}.x-hide-label .x-form-element{padding-left:0!important;}.x-form-label-top .x-hide-label label.x-form-item-label{display:none;}.x-fieldset{overflow:hidden;}.x-fieldset-bwrap{overflow:hidden;zoom:1;}.x-fieldset-body{overflow:hidden;}.x-btn{cursor:pointer;white-space:nowrap;}.x-btn button{border:0 none;background-color:transparent;padding-left:3px;padding-right:3px;cursor:pointer;margin:0;overflow:visible;width:auto;-moz-outline:0 none;outline:0 none;}* html .ext-ie .x-btn button{width:1px;}.ext-gecko .x-btn button,.ext-webkit .x-btn button{padding-left:0;padding-right:0;}.ext-gecko .x-btn button::-moz-focus-inner{padding:0;}.ext-ie .x-btn button{padding-top:2px;}.x-btn td{padding:0!important;}.x-btn-text{cursor:pointer;white-space:nowrap;padding:0;}.x-btn-noicon .x-btn-small .x-btn-text{height:16px;}.x-btn-noicon .x-btn-medium .x-btn-text{height:24px;}.x-btn-noicon .x-btn-large .x-btn-text{height:32px;}.x-btn-icon .x-btn-text{background-position:center;background-repeat:no-repeat;}.x-btn-icon .x-btn-small .x-btn-text{height:16px;width:16px;}.x-btn-icon .x-btn-medium .x-btn-text{height:24px;width:24px;}.x-btn-icon .x-btn-large .x-btn-text{height:32px;width:32px;}.x-btn-text-icon .x-btn-icon-small-left .x-btn-text{background-position:0 center;background-repeat:no-repeat;padding-left:18px;height:16px;}.x-btn-text-icon .x-btn-icon-medium-left .x-btn-text{background-position:0 center;background-repeat:no-repeat;padding-left:26px;height:24px;}.x-btn-text-icon .x-btn-icon-large-left .x-btn-text{background-position:0 center;background-repeat:no-repeat;padding-left:34px;height:32px;}.x-btn-text-icon .x-btn-icon-small-top .x-btn-text{background-position:center 0;background-repeat:no-repeat;padding-top:18px;}.x-btn-text-icon .x-btn-icon-medium-top .x-btn-text{background-position:center 0;background-repeat:no-repeat;padding-top:26px;}.x-btn-text-icon .x-btn-icon-large-top .x-btn-text{background-position:center 0;background-repeat:no-repeat;padding-top:34px;}.x-btn-text-icon .x-btn-icon-small-right .x-btn-text{background-position:right center;background-repeat:no-repeat;padding-right:18px;height:16px;}.x-btn-text-icon .x-btn-icon-medium-right .x-btn-text{background-position:right center;background-repeat:no-repeat;padding-right:26px;height:24px;}.x-btn-text-icon .x-btn-icon-large-right .x-btn-text{background-position:right center;background-repeat:no-repeat;padding-right:34px;height:32px;}.x-btn-text-icon .x-btn-icon-small-bottom .x-btn-text{background-position:center bottom;background-repeat:no-repeat;padding-bottom:18px;}.x-btn-text-icon .x-btn-icon-medium-bottom .x-btn-text{background-position:center bottom;background-repeat:no-repeat;padding-bottom:26px;}.x-btn-text-icon .x-btn-icon-large-bottom .x-btn-text{background-position:center bottom;background-repeat:no-repeat;padding-bottom:34px;}.x-btn-tr i,.x-btn-tl i,.x-btn-mr i,.x-btn-ml i,.x-btn-br i,.x-btn-bl i{font-size:1px;line-height:1px;width:3px;display:block;overflow:hidden;}.x-btn-tr i,.x-btn-tl i,.x-btn-br i,.x-btn-bl i{height:3px;}.x-btn-tl{width:3px;height:3px;background:no-repeat 0 0;}.x-btn-tr{width:3px;height:3px;background:no-repeat -3px 0;}.x-btn-tc{height:3px;background:repeat-x 0 -6px;}.x-btn-ml{width:3px;background:no-repeat 0 -24px;}.x-btn-mr{width:3px;background:no-repeat -3px -24px;}.x-btn-mc{background:repeat-x 0 -1096px;vertical-align:middle;text-align:center;padding:0 5px;cursor:pointer;white-space:nowrap;}.ext-strict .ext-ie6 .x-btn-mc,.ext-strict .ext-ie7 .x-btn-mc{height:100%;}.x-btn-bl{width:3px;height:3px;background:no-repeat 0 -3px;}.x-btn-br{width:3px;height:3px;background:no-repeat -3px -3px;}.x-btn-bc{height:3px;background:repeat-x 0 -15px;}.x-btn-over .x-btn-tl{background-position:-6px 0;}.x-btn-over .x-btn-tr{background-position:-9px 0;}.x-btn-over .x-btn-tc{background-position:0 -9px;}.x-btn-over .x-btn-ml{background-position:-6px -24px;}.x-btn-over .x-btn-mr{background-position:-9px -24px;}.x-btn-over .x-btn-mc{background-position:0 -2168px;}.x-btn-over .x-btn-bl{background-position:-6px -3px;}.x-btn-over .x-btn-br{background-position:-9px -3px;}.x-btn-over .x-btn-bc{background-position:0 -18px;}.x-btn-click .x-btn-tl,.x-btn-menu-active .x-btn-tl,.x-btn-pressed .x-btn-tl{background-position:-12px 0;}.x-btn-click .x-btn-tr,.x-btn-menu-active .x-btn-tr,.x-btn-pressed .x-btn-tr{background-position:-15px 0;}.x-btn-click .x-btn-tc,.x-btn-menu-active .x-btn-tc,.x-btn-pressed .x-btn-tc{background-position:0 -12px;}.x-btn-click .x-btn-ml,.x-btn-menu-active .x-btn-ml,.x-btn-pressed .x-btn-ml{background-position:-12px -24px;}.x-btn-click .x-btn-mr,.x-btn-menu-active .x-btn-mr,.x-btn-pressed .x-btn-mr{background-position:-15px -24px;}.x-btn-click .x-btn-mc,.x-btn-menu-active .x-btn-mc,.x-btn-pressed .x-btn-mc{background-position:0 -3240px;}.x-btn-click .x-btn-bl,.x-btn-menu-active .x-btn-bl,.x-btn-pressed .x-btn-bl{background-position:-12px -3px;}.x-btn-click .x-btn-br,.x-btn-menu-active .x-btn-br,.x-btn-pressed .x-btn-br{background-position:-15px -3px;}.x-btn-click .x-btn-bc,.x-btn-menu-active .x-btn-bc,.x-btn-pressed .x-btn-bc{background-position:0 -21px;}.x-btn-disabled *{cursor:default!important;}.x-btn-mc em.x-btn-arrow{display:block;background:transparent no-repeat right center;padding-right:10px;}.x-btn-mc em.x-btn-split{display:block;background:transparent no-repeat right center;padding-right:14px;}.x-btn-mc em.x-btn-arrow-bottom{display:block;background:transparent no-repeat center bottom;padding-bottom:14px;}.x-btn-mc em.x-btn-split-bottom{display:block;background:transparent no-repeat center bottom;padding-bottom:14px;}.x-btn-as-arrow .x-btn-mc em{display:block;background-color:transparent;padding-bottom:14px;}.x-btn-group{padding:1px;}.x-btn-group-header{padding:2px;text-align:center;}.x-btn-group-tc{background:transparent repeat-x 0 0;overflow:hidden;}.x-btn-group-tl{background:transparent no-repeat 0 0;padding-left:3px;zoom:1;}.x-btn-group-tr{background:transparent no-repeat right 0;zoom:1;padding-right:3px;}.x-btn-group-bc{background:transparent repeat-x 0 bottom;zoom:1;}.x-btn-group-bc .x-panel-footer{zoom:1;}.x-btn-group-bl{background:transparent no-repeat 0 bottom;padding-left:3px;zoom:1;}.x-btn-group-br{background:transparent no-repeat right bottom;padding-right:3px;zoom:1;}.x-btn-group-mc{border:0 none;padding:1px 0 0 0;margin:0;}.x-btn-group-mc .x-btn-group-body{background-color:transparent;border:0 none;}.x-btn-group-ml{background:transparent repeat-y 0 0;padding-left:3px;zoom:1;}.x-btn-group-mr{background:transparent repeat-y right 0;padding-right:3px;zoom:1;}.x-btn-group-bc .x-btn-group-footer{padding-bottom:6px;}.x-panel-nofooter .x-btn-group-bc{height:3px;font-size:0;line-height:0;}.x-btn-group-bwrap{overflow:hidden;zoom:1;}.x-btn-group-body{overflow:hidden;zoom:1;}.x-btn-group-notitle .x-btn-group-tc{background:transparent repeat-x 0 0;overflow:hidden;height:2px;}.x-toolbar{border-style:solid;border-width:0 0 1px 0;display:block;padding:2px;background:repeat-x top left;position:relative;left:0;top:0;zoom:1;overflow:hidden;}.x-toolbar-left{width:100%;}.x-toolbar .x-item-disabled .x-btn-icon{opacity:.35;-moz-opacity:.35;filter:alpha(opacity=35);}.x-toolbar td{vertical-align:middle;}.x-toolbar td,.x-toolbar span,.x-toolbar input,.x-toolbar div,.x-toolbar select,.x-toolbar label{white-space:nowrap;}.x-toolbar .x-item-disabled{cursor:default;opacity:.6;-moz-opacity:.6;filter:alpha(opacity=60);}.x-toolbar .x-item-disabled *{cursor:default;}.x-toolbar .x-toolbar-cell{vertical-align:middle;}.x-toolbar .x-btn-tl,.x-toolbar .x-btn-tr,.x-toolbar .x-btn-tc,.x-toolbar .x-btn-ml,.x-toolbar .x-btn-mr,.x-toolbar .x-btn-mc,.x-toolbar .x-btn-bl,.x-toolbar .x-btn-br,.x-toolbar .x-btn-bc{background-position:500px 500px;}.x-toolbar .x-btn-over .x-btn-tl{background-position:-6px 0;}.x-toolbar .x-btn-over .x-btn-tr{background-position:-9px 0;}.x-toolbar .x-btn-over .x-btn-tc{background-position:0 -9px;}.x-toolbar .x-btn-over .x-btn-ml{background-position:-6px -24px;}.x-toolbar .x-btn-over .x-btn-mr{background-position:-9px -24px;}.x-toolbar .x-btn-over .x-btn-mc{background-position:0 -2168px;}.x-toolbar .x-btn-over .x-btn-bl{background-position:-6px -3px;}.x-toolbar .x-btn-over .x-btn-br{background-position:-9px -3px;}.x-toolbar .x-btn-over .x-btn-bc{background-position:0 -18px;}.x-toolbar .x-btn-click .x-btn-tl,.x-toolbar .x-btn-menu-active .x-btn-tl,.x-toolbar .x-btn-pressed .x-btn-tl{background-position:-12px 0;}.x-toolbar .x-btn-click .x-btn-tr,.x-toolbar .x-btn-menu-active .x-btn-tr,.x-toolbar .x-btn-pressed .x-btn-tr{background-position:-15px 0;}.x-toolbar .x-btn-click .x-btn-tc,.x-toolbar .x-btn-menu-active .x-btn-tc,.x-toolbar .x-btn-pressed .x-btn-tc{background-position:0 -12px;}.x-toolbar .x-btn-click .x-btn-ml,.x-toolbar .x-btn-menu-active .x-btn-ml,.x-toolbar .x-btn-pressed .x-btn-ml{background-position:-12px -24px;}.x-toolbar .x-btn-click .x-btn-mr,.x-toolbar .x-btn-menu-active .x-btn-mr,.x-toolbar .x-btn-pressed .x-btn-mr{background-position:-15px -24px;}.x-toolbar .x-btn-click .x-btn-mc,.x-toolbar .x-btn-menu-active .x-btn-mc,.x-toolbar .x-btn-pressed .x-btn-mc{background-position:0 -3240px;}.x-toolbar .x-btn-click .x-btn-bl,.x-toolbar .x-btn-menu-active .x-btn-bl,.x-toolbar .x-btn-pressed .x-btn-bl{background-position:-12px -3px;}.x-toolbar .x-btn-click .x-btn-br,.x-toolbar .x-btn-menu-active .x-btn-br,.x-toolbar .x-btn-pressed .x-btn-br{background-position:-15px -3px;}.x-toolbar .x-btn-click .x-btn-bc,.x-toolbar .x-btn-menu-active .x-btn-bc,.x-toolbar .x-btn-pressed .x-btn-bc{background-position:0 -21px;}.x-toolbar div.xtb-text{padding:2px 2px 0;line-height:16px;display:block;}.x-toolbar .xtb-sep{background-position:center;background-repeat:no-repeat;display:block;font-size:1px;height:16px;width:4px;overflow:hidden;cursor:default;margin:0 2px 0;border:0;}.x-toolbar .xtb-spacer{width:2px;}.x-tbar-page-number{width:30px;height:14px;}.ext-ie .x-tbar-page-number{margin-top:2px;}.x-paging-info{position:absolute;top:5px;right:8px;}.x-toolbar-ct{width:100%;}.x-toolbar-right td{text-align:center;}.x-panel-tbar,.x-panel-bbar,.x-window-tbar,.x-window-bbar,.x-tab-panel-tbar,.x-tab-panel-bbar,.x-plain-tbar,.x-plain-bbar{overflow:hidden;zoom:1;}.x-toolbar-more .x-btn-small .x-btn-text{height:16px;width:12px;}.x-toolbar-more em.x-btn-arrow{display:inline;background-color:transparent;padding-right:0;}.x-toolbar-more .x-btn-mc em.x-btn-arrow{background-image:none;}div.x-toolbar-no-items{color:gray!important;padding:5px 10px!important;}.ext-border-box .x-toolbar-cell .x-form-text{margin-bottom:-1px!important;}.ext-border-box .x-toolbar-cell .x-form-field-wrap .x-form-text{margin:0!important;}.ext-ie .x-toolbar-cell .x-form-field-wrap{height:21px;}.ext-ie .x-toolbar-cell .x-form-text{position:relative;top:-1px;}.ext-strict .ext-ie8 .x-toolbar-cell .x-form-field-trigger-wrap .x-form-text,.ext-strict .ext-ie .x-toolbar-cell .x-form-text{top:0;}.x-toolbar-right td .x-form-field-trigger-wrap{text-align:left;}.x-toolbar-cell .x-form-checkbox,.x-toolbar-cell .x-form-radio{margin-top:5px;}.x-toolbar-cell .x-form-cb-label{vertical-align:bottom;top:1px;}.ext-ie .x-toolbar-cell .x-form-checkbox,.ext-ie .x-toolbar-cell .x-form-radio{margin-top:4px;}.ext-ie .x-toolbar-cell .x-form-cb-label{top:0;}.x-grid3{position:relative;overflow:hidden;}.x-grid-panel .x-panel-body{overflow:hidden!important;}.x-grid-panel .x-panel-mc .x-panel-body{border:1px solid;}.x-grid3 table{table-layout:fixed;}.x-grid3-viewport{overflow:hidden;}.x-grid3-hd-row td,.x-grid3-row td,.x-grid3-summary-row td{-moz-outline:0;outline:0;-moz-user-focus:normal;}.x-grid3-row td,.x-grid3-summary-row td{line-height:13px;vertical-align:top;padding-left:1px;padding-right:1px;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:ignore;}.x-grid3-cell{-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:ignore;}.x-grid3-hd-row td{line-height:15px;vertical-align:middle;border-left:1px solid;border-right:1px solid;}.x-grid3-hd-row .x-grid3-marker-hd{padding:3px;}.x-grid3-row .x-grid3-marker{padding:3px;}.x-grid3-cell-inner,.x-grid3-hd-inner{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;padding:3px 3px 3px 5px;white-space:nowrap;}.x-action-col-cell .x-grid3-cell-inner{padding-top:1px;padding-bottom:1px;}.x-action-col-icon{cursor:pointer;}.x-grid3-hd-inner{position:relative;cursor:inherit;padding:4px 3px 4px 5px;}.x-grid3-row-body{white-space:normal;}.x-grid3-body-cell{-moz-outline:0 none;outline:0 none;}.ext-ie .x-grid3-cell-inner,.ext-ie .x-grid3-hd-inner{width:100%;}.ext-strict .x-grid3-cell-inner,.ext-strict .x-grid3-hd-inner{width:auto;}.x-grid-row-loading{background:no-repeat center center;}.x-grid-page{overflow:hidden;}.x-grid3-row{cursor:default;border:1px solid;width:100%;}.x-grid3-row-over{border:1px solid;background:repeat-x left top;}.x-grid3-resize-proxy{width:1px;left:0;cursor:e-resize;cursor:col-resize;position:absolute;top:0;height:100px;overflow:hidden;visibility:hidden;border:0 none;z-index:7;}.x-grid3-resize-marker{width:1px;left:0;position:absolute;top:0;height:100px;overflow:hidden;visibility:hidden;border:0 none;z-index:7;}.x-grid3-focus{position:absolute;left:0;top:0;width:1px;height:1px;line-height:1px;font-size:1px;-moz-outline:0 none;outline:0 none;-moz-user-select:text;-khtml-user-select:text;-webkit-user-select:ignore;}.x-grid3-header{background:repeat-x 0 bottom;cursor:default;zoom:1;padding:1px 0 0 0;}.x-grid3-header-pop{border-left:1px solid;float:right;clear:none;}.x-grid3-header-pop-inner{border-left:1px solid;width:14px;height:19px;background:transparent no-repeat center center;}.ext-ie .x-grid3-header-pop-inner{width:15px;}.ext-strict .x-grid3-header-pop-inner{width:14px;}.x-grid3-header-inner{overflow:hidden;zoom:1;float:left;}.x-grid3-header-offset{padding-left:1px;text-align:left;}td.x-grid3-hd-over,td.sort-desc,td.sort-asc,td.x-grid3-hd-menu-open{border-left:1px solid;border-right:1px solid;}td.x-grid3-hd-over .x-grid3-hd-inner,td.sort-desc .x-grid3-hd-inner,td.sort-asc .x-grid3-hd-inner,td.x-grid3-hd-menu-open .x-grid3-hd-inner{background:repeat-x left bottom;}.x-grid3-sort-icon{background-repeat:no-repeat;display:none;height:4px;width:13px;margin-left:3px;vertical-align:middle;}.sort-asc .x-grid3-sort-icon,.sort-desc .x-grid3-sort-icon{display:inline;}.ext-strict .ext-ie .x-grid3-header-inner,.ext-strict .ext-ie6 .x-grid3-hd{position:relative;}.ext-strict .ext-ie6 .x-grid3-hd-inner{position:static;}.x-grid3-body{zoom:1;}.x-grid3-scroller{overflow:auto;zoom:1;position:relative;}.x-grid3-cell-text,.x-grid3-hd-text{display:block;padding:3px 5px 3px 5px;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:ignore;}.x-grid3-split{background-position:center;background-repeat:no-repeat;cursor:e-resize;cursor:col-resize;display:block;font-size:1px;height:16px;overflow:hidden;position:absolute;top:2px;width:6px;z-index:3;}.x-dd-drag-proxy .x-grid3-hd-inner{background:repeat-x left bottom;width:120px;padding:3px;border:1px solid;overflow:hidden;}.col-move-top,.col-move-bottom{width:9px;height:9px;position:absolute;top:0;line-height:1px;font-size:1px;overflow:hidden;visibility:hidden;z-index:20000;background:transparent no-repeat left top;}.x-grid3-row-selected{border:1px dotted;}.x-grid3-locked td.x-grid3-row-marker,.x-grid3-locked .x-grid3-row-selected td.x-grid3-row-marker{background:repeat-x 0 bottom!important;vertical-align:middle!important;padding:0;border-top:1px solid;border-bottom:none!important;border-right:1px solid!important;text-align:center;}.x-grid3-locked td.x-grid3-row-marker div,.x-grid3-locked .x-grid3-row-selected td.x-grid3-row-marker div{padding:0 4px;text-align:center;}.x-grid3-dirty-cell{background:transparent no-repeat 0 0;}.x-grid3-topbar,.x-grid3-bottombar{overflow:hidden;display:none;zoom:1;position:relative;}.x-grid3-topbar .x-toolbar{border-right:0 none;}.x-grid3-bottombar .x-toolbar{border-right:0 none;border-bottom:0 none;border-top:1px solid;}.x-props-grid .x-grid3-cell{padding:1px;}.x-props-grid .x-grid3-td-name .x-grid3-cell-inner{background:transparent repeat-y -16px!important;padding-left:12px;}.x-props-grid .x-grid3-body .x-grid3-td-name{padding:1px;padding-right:0;border:0 none;border-right:1px solid;}.x-grid3-col-dd{border:0 none;padding:0;background-color:transparent;}.x-dd-drag-ghost .x-grid3-dd-wrap{padding:1px 3px 3px 1px;}.x-grid3-hd{-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:ignore;}.x-grid3-hd-btn{display:none;position:absolute;width:14px;background:no-repeat left center;right:0;top:0;z-index:2;cursor:pointer;}.x-grid3-hd-over .x-grid3-hd-btn,.x-grid3-hd-menu-open .x-grid3-hd-btn{display:block;}a.x-grid3-hd-btn:hover{background-position:-14px center;}.x-grid3-body .x-grid3-td-expander{background:transparent repeat-y right;}.x-grid3-body .x-grid3-td-expander .x-grid3-cell-inner{padding:0!important;height:100%;}.x-grid3-row-expander{width:100%;height:18px;background-position:4px 2px;background-repeat:no-repeat;background-color:transparent;}.x-grid3-row-collapsed .x-grid3-row-expander{background-position:4px 2px;}.x-grid3-row-expanded .x-grid3-row-expander{background-position:-21px 2px;}.x-grid3-row-collapsed .x-grid3-row-body{display:none!important;}.x-grid3-row-expanded .x-grid3-row-body{display:block!important;}.x-grid3-body .x-grid3-td-checker{background:transparent repeat-y right;}.x-grid3-body .x-grid3-td-checker .x-grid3-cell-inner,.x-grid3-header .x-grid3-td-checker .x-grid3-hd-inner{padding:0!important;height:100%;}.x-grid3-row-checker,.x-grid3-hd-checker{width:100%;height:18px;background-position:2px 2px;background-repeat:no-repeat;background-color:transparent;}.x-grid3-row .x-grid3-row-checker{background-position:2px 2px;}.x-grid3-row-selected .x-grid3-row-checker,.x-grid3-hd-checker-on .x-grid3-hd-checker,.x-grid3-row-checked .x-grid3-row-checker{background-position:-23px 2px;}.x-grid3-hd-checker{background-position:2px 1px;}.ext-border-box .x-grid3-hd-checker{background-position:2px 3px;}.x-grid3-hd-checker-on .x-grid3-hd-checker{background-position:-23px 1px;}.ext-border-box .x-grid3-hd-checker-on .x-grid3-hd-checker{background-position:-23px 3px;}.x-grid3-body .x-grid3-td-numberer{background:transparent repeat-y right;}.x-grid3-body .x-grid3-td-numberer .x-grid3-cell-inner{padding:3px 5px 0 0!important;text-align:right;}.x-grid3-body .x-grid3-td-row-icon{background:transparent repeat-y right;vertical-align:top;text-align:center;}.x-grid3-body .x-grid3-td-row-icon .x-grid3-cell-inner{padding:0!important;background-position:center center;background-repeat:no-repeat;width:16px;height:16px;margin-left:2px;margin-top:3px;}.x-grid3-body .x-grid3-row-selected .x-grid3-td-numberer,.x-grid3-body .x-grid3-row-selected .x-grid3-td-checker,.x-grid3-body .x-grid3-row-selected .x-grid3-td-expander{background:transparent repeat-y right;}.x-grid3-body .x-grid3-check-col-td .x-grid3-cell-inner{padding:1px 0 0 0!important;}.x-grid3-check-col{width:100%;height:16px;background-position:center center;background-repeat:no-repeat;background-color:transparent;}.x-grid3-check-col-on{width:100%;height:16px;background-position:center center;background-repeat:no-repeat;background-color:transparent;}.x-grid-group,.x-grid-group-body,.x-grid-group-hd{zoom:1;}.x-grid-group-hd{border-bottom:2px solid;cursor:pointer;padding-top:6px;}.x-grid-group-hd div.x-grid-group-title{background:transparent no-repeat 3px 3px;padding:4px 4px 4px 17px;}.x-grid-group-collapsed .x-grid-group-body{display:none;}.ext-ie6 .x-grid3 .x-editor .x-form-text,.ext-ie7 .x-grid3 .x-editor .x-form-text{position:relative;top:-1px;}.x-grid-editor .x-form-check-wrap{text-align:center;margin-top:-4px;}.ext-ie .x-props-grid .x-editor .x-form-text{position:static;top:0;}.x-grid-empty{padding:10px;}.ext-ie7 .x-grid-panel .x-panel-bbar{position:relative;}.ext-ie7 .x-grid-panel .x-panel-mc .x-panel-bbar{position:static;}.ext-ie6 .x-grid3-header{position:relative;}.ext-webkit .x-grid-panel .x-panel-bwrap{-webkit-user-select:none;}.ext-webkit .x-tbar-page-number{-webkit-user-select:ignore;}.x-grid-with-col-lines .x-grid3-row td.x-grid3-cell{padding-right:0;border-right:1px solid;}.x-pivotgrid .x-grid3-header-offset table{width:100%;border-collapse:collapse;}.x-pivotgrid .x-grid3-header-offset table td{padding:4px 3px 4px 5px;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:11px;line-height:13px;font-family:tahoma;}.x-pivotgrid .x-grid3-row-headers{display:block;float:left;}.x-pivotgrid .x-grid3-row-headers table{height:100%;width:100%;border-collapse:collapse;}.x-pivotgrid .x-grid3-row-headers table td{height:18px;padding:2px 7px 0 0;text-align:right;text-overflow:ellipsis;font-size:11px;font-family:tahoma;}.ext-gecko .x-pivotgrid .x-grid3-row-headers table td{height:21px;}.x-grid3-header-title{top:0;left:0;position:absolute;text-align:center;vertical-align:middle;font-family:tahoma;font-size:11px;padding:auto 1px;display:table-cell;}.x-grid3-header-title span{position:absolute;top:50%;left:0;width:100%;margin-top:-6px;}.x-dd-drag-proxy{position:absolute;left:0;top:0;visibility:hidden;z-index:15000;}.x-dd-drag-ghost{-moz-opacity:.85;opacity:.85;filter:alpha(opacity=85);border:1px solid;padding:3px;padding-left:20px;white-space:nowrap;}.x-dd-drag-repair .x-dd-drag-ghost{-moz-opacity:.4;opacity:.4;filter:alpha(opacity=40);border:0 none;padding:0;background-color:transparent;}.x-dd-drag-repair .x-dd-drop-icon{visibility:hidden;}.x-dd-drop-icon{position:absolute;top:3px;left:3px;display:block;width:16px;height:16px;background-color:transparent;background-position:center;background-repeat:no-repeat;z-index:1;}.x-view-selector{position:absolute;left:0;top:0;width:0;border:1px dotted;opacity:.5;-moz-opacity:.5;filter:alpha(opacity=50);zoom:1;}.ext-strict .ext-ie .x-tree .x-panel-bwrap{position:relative;overflow:hidden;}.x-tree-icon,.x-tree-ec-icon,.x-tree-elbow-line,.x-tree-elbow,.x-tree-elbow-end,.x-tree-elbow-plus,.x-tree-elbow-minus,.x-tree-elbow-end-plus,.x-tree-elbow-end-minus{border:0 none;height:18px;margin:0;padding:0;vertical-align:top;width:16px;background-repeat:no-repeat;}.x-tree-node-collapsed .x-tree-node-icon,.x-tree-node-expanded .x-tree-node-icon,.x-tree-node-leaf .x-tree-node-icon{border:0 none;height:18px;margin:0;padding:0;vertical-align:top;width:16px;background-position:center;background-repeat:no-repeat;}.ext-ie .x-tree-node-indent img,.ext-ie .x-tree-node-icon,.ext-ie .x-tree-ec-icon{vertical-align:middle!important;}.ext-strict .ext-ie8 .x-tree-node-indent img,.ext-strict .ext-ie8 .x-tree-node-icon,.ext-strict .ext-ie8 .x-tree-ec-icon{vertical-align:top!important;}input.x-tree-node-cb{margin-left:1px;height:19px;vertical-align:bottom;}.ext-ie input.x-tree-node-cb{margin-left:0;margin-top:1px;width:16px;height:16px;vertical-align:middle;}.ext-strict .ext-ie8 input.x-tree-node-cb{margin:1px 1px;height:14px;vertical-align:bottom;}.ext-strict .ext-ie8 input.x-tree-node-cb+a{vertical-align:bottom;}.ext-opera input.x-tree-node-cb{height:14px;vertical-align:middle;}.x-tree-noicon .x-tree-node-icon{width:0;height:0;}.x-tree-no-lines .x-tree-elbow{background-color:transparent;}.x-tree-no-lines .x-tree-elbow-end{background-color:transparent;}.x-tree-no-lines .x-tree-elbow-line{background-color:transparent;}.x-tree-arrows .x-tree-elbow{background-color:transparent;}.x-tree-arrows .x-tree-elbow-plus{background:transparent no-repeat 0 0;}.x-tree-arrows .x-tree-elbow-minus{background:transparent no-repeat -16px 0;}.x-tree-arrows .x-tree-elbow-end{background-color:transparent;}.x-tree-arrows .x-tree-elbow-end-plus{background:transparent no-repeat 0 0;}.x-tree-arrows .x-tree-elbow-end-minus{background:transparent no-repeat -16px 0;}.x-tree-arrows .x-tree-elbow-line{background-color:transparent;}.x-tree-arrows .x-tree-ec-over .x-tree-elbow-plus{background-position:-32px 0;}.x-tree-arrows .x-tree-ec-over .x-tree-elbow-minus{background-position:-48px 0;}.x-tree-arrows .x-tree-ec-over .x-tree-elbow-end-plus{background-position:-32px 0;}.x-tree-arrows .x-tree-ec-over .x-tree-elbow-end-minus{background-position:-48px 0;}.x-tree-elbow-plus,.x-tree-elbow-minus,.x-tree-elbow-end-plus,.x-tree-elbow-end-minus{cursor:pointer;}.ext-ie ul.x-tree-node-ct{font-size:0;line-height:0;zoom:1;}.x-tree-node{white-space:nowrap;}.x-tree-node-el{line-height:18px;cursor:pointer;}.x-tree-node a,.x-dd-drag-ghost a{text-decoration:none;-khtml-user-select:none;-moz-user-select:none;-webkit-user-select:ignore;-kthml-user-focus:normal;-moz-user-focus:normal;-moz-outline:0 none;outline:0 none;}.x-tree-node a span,.x-dd-drag-ghost a span{text-decoration:none;padding:1px 3px 1px 2px;}.x-tree-node .x-tree-node-disabled .x-tree-node-icon{-moz-opacity:.5;opacity:.5;filter:alpha(opacity=50);}.x-tree-node .x-tree-node-inline-icon{background-color:transparent;}.x-tree-node a:hover,.x-dd-drag-ghost a:hover{text-decoration:none;}.x-tree-node div.x-tree-drag-insert-below{border-bottom:1px dotted;}.x-tree-node div.x-tree-drag-insert-above{border-top:1px dotted;}.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-below{border-bottom:0 none;}.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-above{border-top:0 none;}.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-below a{border-bottom:2px solid;}.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-above a{border-top:2px solid;}.x-tree-node .x-tree-drag-append a span{border:1px dotted;}.x-dd-drag-ghost .x-tree-node-indent,.x-dd-drag-ghost .x-tree-ec-icon{display:none!important;}.x-tree-root-ct{zoom:1;}.x-date-picker{border:1px solid;border-top:0 none;position:relative;}.x-date-picker a{-moz-outline:0 none;outline:0 none;}.x-date-inner,.x-date-inner td,.x-date-inner th{border-collapse:separate;}.x-date-middle,.x-date-left,.x-date-right{background:repeat-x 0 -83px;overflow:hidden;}.x-date-middle .x-btn-tc,.x-date-middle .x-btn-tl,.x-date-middle .x-btn-tr,.x-date-middle .x-btn-mc,.x-date-middle .x-btn-ml,.x-date-middle .x-btn-mr,.x-date-middle .x-btn-bc,.x-date-middle .x-btn-bl,.x-date-middle .x-btn-br{background:transparent!important;vertical-align:middle;}.x-date-middle .x-btn-mc em.x-btn-arrow{background:transparent no-repeat right 0;}.x-date-right,.x-date-left{width:18px;}.x-date-right{text-align:right;}.x-date-middle{padding-top:2px;padding-bottom:2px;width:130px;}.x-date-right a,.x-date-left a{display:block;width:16px;height:16px;background-position:center;background-repeat:no-repeat;cursor:pointer;-moz-opacity:.6;opacity:.6;filter:alpha(opacity=60);}.x-date-right a:hover,.x-date-left a:hover{-moz-opacity:1;opacity:1;filter:alpha(opacity=100);}.x-item-disabled .x-date-right a:hover,.x-item-disabled .x-date-left a:hover{-moz-opacity:.6;opacity:.6;filter:alpha(opacity=60);}.x-date-right a{margin-right:2px;text-decoration:none!important;}.x-date-left a{margin-left:2px;text-decoration:none!important;}table.x-date-inner{width:100%;table-layout:fixed;}.ext-webkit table.x-date-inner{width:175px;}.x-date-inner th{width:25px;}.x-date-inner th{background:repeat-x left top;text-align:right!important;border-bottom:1px solid;cursor:default;padding:0;border-collapse:separate;}.x-date-inner th span{display:block;padding:2px;padding-right:7px;}.x-date-inner td{border:1px solid;text-align:right;padding:0;}.x-date-inner a{padding:2px 5px;display:block;text-decoration:none;text-align:right;zoom:1;}.x-date-inner .x-date-active{cursor:pointer;color:black;}.x-date-inner .x-date-selected a{background:repeat-x left top;border:1px solid;padding:1px 4px;}.x-date-inner .x-date-today a{border:1px solid;padding:1px 4px;}.x-date-inner .x-date-prevday a,.x-date-inner .x-date-nextday a{text-decoration:none!important;}.x-date-bottom{padding:4px;border-top:1px solid;background:repeat-x left top;}.x-date-inner a:hover,.x-date-inner .x-date-disabled a:hover{text-decoration:none!important;}.x-item-disabled .x-date-inner a:hover{background:0;}.x-date-inner .x-date-disabled a{cursor:default;}.x-date-menu .x-menu-item{padding:1px 24px 1px 4px;white-space:nowrap;}.x-date-menu .x-menu-item .x-menu-item-icon{width:10px;height:10px;margin-right:5px;background-position:center -4px!important;}.x-date-mp{position:absolute;left:0;top:0;display:none;}.x-date-mp td{padding:2px;font:normal 11px arial,helvetica,tahoma,sans-serif;}td.x-date-mp-month,td.x-date-mp-year,td.x-date-mp-ybtn{border:0 none;text-align:center;vertical-align:middle;width:25%;}.x-date-mp-ok{margin-right:3px;}.x-date-mp-btns button{text-decoration:none;text-align:center;text-decoration:none!important;border:1px solid;padding:1px 3px 1px;cursor:pointer;}.x-date-mp-btns{background:repeat-x left top;}.x-date-mp-btns td{border-top:1px solid;text-align:center;}td.x-date-mp-month a,td.x-date-mp-year a{display:block;padding:2px 4px;text-decoration:none;text-align:center;}td.x-date-mp-month a:hover,td.x-date-mp-year a:hover{text-decoration:none;cursor:pointer;}td.x-date-mp-sel a{padding:1px 3px;background:repeat-x left top;border:1px solid;}.x-date-mp-ybtn a{overflow:hidden;width:15px;height:15px;cursor:pointer;background:transparent no-repeat;display:block;margin:0 auto;}.x-date-mp-ybtn a.x-date-mp-next{background-position:0 -120px;}.x-date-mp-ybtn a.x-date-mp-next:hover{background-position:-15px -120px;}.x-date-mp-ybtn a.x-date-mp-prev{background-position:0 -105px;}.x-date-mp-ybtn a.x-date-mp-prev:hover{background-position:-15px -105px;}.x-date-mp-ybtn{text-align:center;}td.x-date-mp-sep{border-right:1px solid;}.x-tip{position:absolute;top:0;left:0;visibility:hidden;z-index:20002;border:0 none;}.x-tip .x-tip-close{height:15px;float:right;width:15px;margin:0 0 2px 2px;cursor:pointer;display:none;}.x-tip .x-tip-tc{background:transparent no-repeat 0 -62px;padding-top:3px;overflow:hidden;zoom:1;}.x-tip .x-tip-tl{background:transparent no-repeat 0 0;padding-left:6px;overflow:hidden;zoom:1;}.x-tip .x-tip-tr{background:transparent no-repeat right 0;padding-right:6px;overflow:hidden;zoom:1;}.x-tip .x-tip-bc{background:transparent no-repeat 0 -121px;height:3px;overflow:hidden;}.x-tip .x-tip-bl{background:transparent no-repeat 0 -59px;padding-left:6px;zoom:1;}.x-tip .x-tip-br{background:transparent no-repeat right -59px;padding-right:6px;zoom:1;}.x-tip .x-tip-mc{border:0 none;}.x-tip .x-tip-ml{background:no-repeat 0 -124px;padding-left:6px;zoom:1;}.x-tip .x-tip-mr{background:transparent no-repeat right -124px;padding-right:6px;zoom:1;}.ext-ie .x-tip .x-tip-header,.ext-ie .x-tip .x-tip-tc{font-size:0;line-height:0;}.ext-border-box .x-tip .x-tip-header,.ext-border-box .x-tip .x-tip-tc{line-height:1px;}.x-tip .x-tip-header-text{padding:0;margin:0 0 2px 0;}.x-tip .x-tip-body{margin:0!important;line-height:14px;padding:0;}.x-tip .x-tip-body .loading-indicator{margin:0;}.x-tip-draggable .x-tip-header,.x-tip-draggable .x-tip-header-text{cursor:move;}.x-form-invalid-tip .x-tip-tc{background:repeat-x 0 -12px;padding-top:6px;}.x-form-invalid-tip .x-tip-bc{background:repeat-x 0 -18px;height:6px;}.x-form-invalid-tip .x-tip-bl{background:no-repeat 0 -6px;}.x-form-invalid-tip .x-tip-br{background:no-repeat right -6px;}.x-form-invalid-tip .x-tip-body{padding:2px;}.x-form-invalid-tip .x-tip-body{padding-left:24px;background:transparent no-repeat 2px 2px;}.x-tip-anchor{position:absolute;width:9px;height:10px;overflow:hidden;background:transparent no-repeat 0 0;zoom:1;}.x-tip-anchor-bottom{background-position:-9px 0;}.x-tip-anchor-right{background-position:-18px 0;width:10px;}.x-tip-anchor-left{background-position:-28px 0;width:10px;}.x-menu{z-index:15000;zoom:1;background:repeat-y;}.x-menu-floating{border:1px solid;}.x-menu a{text-decoration:none!important;}.ext-ie .x-menu{zoom:1;overflow:hidden;}.x-menu-list{padding:2px;background-color:transparent;border:0 none;overflow:hidden;overflow-y:hidden;}.ext-strict .ext-ie .x-menu-list{position:relative;}.x-menu li{line-height:100%;}.x-menu li.x-menu-sep-li{font-size:1px;line-height:1px;}.x-menu-list-item{white-space:nowrap;display:block;padding:1px;}.x-menu-item{-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:ignore;}.x-menu-item-arrow{background:transparent no-repeat right;}.x-menu-sep{display:block;font-size:1px;line-height:1px;margin:2px 3px;border-bottom:1px solid;overflow:hidden;}.x-menu-focus{position:absolute;left:-1px;top:-1px;width:1px;height:1px;line-height:1px;font-size:1px;-moz-outline:0 none;outline:0 none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:ignore;overflow:hidden;display:block;}a.x-menu-item{cursor:pointer;display:block;line-height:16px;outline-color:-moz-use-text-color;outline-style:none;outline-width:0;padding:3px 21px 3px 27px;position:relative;text-decoration:none;white-space:nowrap;}.x-menu-item-active{background-repeat:repeat-x;background-position:left bottom;border-style:solid;border-width:1px 0;margin:0 1px;padding:0;}.x-menu-item-active a.x-menu-item{border-style:solid;border-width:0 1px;margin:0 -1px;}.x-menu-item-icon{border:0 none;height:16px;padding:0;vertical-align:top;width:16px;position:absolute;left:3px;top:3px;margin:0;background-position:center;}.ext-ie .x-menu-item-icon{left:-24px;}.ext-strict .x-menu-item-icon{left:3px;}.ext-ie6 .x-menu-item-icon{left:-24px;}.ext-ie .x-menu-item-icon{vertical-align:middle;}.x-menu-check-item .x-menu-item-icon{background:transparent no-repeat center;}.x-menu-group-item .x-menu-item-icon{background-color:transparent;}.x-menu-item-checked .x-menu-group-item .x-menu-item-icon{background:transparent no-repeat center;}.x-date-menu .x-menu-list{padding:0;}.x-menu-date-item{padding:0;}.x-menu .x-color-palette,.x-menu .x-date-picker{margin-left:26px;margin-right:4px;}.x-menu .x-date-picker{border:1px solid;margin-top:2px;margin-bottom:2px;}.x-menu-plain .x-color-palette,.x-menu-plain .x-date-picker{margin:0;border:0 none;}.x-date-menu{padding:0!important;}.ext-strict .ext-ie6 .x-menu-sep-li{padding:3px 4px;}.ext-strict .ext-ie6 .x-menu-sep{margin:0;height:1px;}.ext-webkit .x-menu-sep{height:1px;}.ext-ie .x-date-menu{height:199px;}.ext-strict .ext-ie .x-date-menu,.ext-border-box .ext-ie8 .x-date-menu{height:197px;}.ext-strict .ext-ie7 .x-date-menu{height:195px;}.ext-strict .ext-ie8 .x-date-menu{height:auto;}.x-cycle-menu .x-menu-item-checked{border:1px dotted!important;padding:0;}.x-menu .x-menu-scroller{width:100%;background-repeat:no-repeat;background-position:center;height:8px;line-height:8px;cursor:pointer;margin:0;padding:0;}.x-menu .x-menu-scroller-active{height:6px;line-height:6px;}.x-menu-list-item-indent{padding-left:27px;}.x-box-tl{background:transparent no-repeat 0 0;zoom:1;}.x-box-tc{height:8px;background:transparent repeat-x 0 0;overflow:hidden;}.x-box-tr{background:transparent no-repeat right -8px;}.x-box-ml{background:transparent repeat-y 0;padding-left:4px;overflow:hidden;zoom:1;}.x-box-mc{background:repeat-x 0 -16px;padding:4px 10px;}.x-box-mc h3{margin:0 0 4px 0;zoom:1;}.x-box-mr{background:transparent repeat-y right;padding-right:4px;overflow:hidden;}.x-box-bl{background:transparent no-repeat 0 -16px;zoom:1;}.x-box-bc{background:transparent repeat-x 0 -8px;height:8px;overflow:hidden;}.x-box-br{background:transparent no-repeat right -24px;}.x-box-tl,.x-box-bl{padding-left:8px;overflow:hidden;}.x-box-tr,.x-box-br{padding-right:8px;overflow:hidden;}.x-combo-list{border:1px solid;zoom:1;overflow:hidden;}.x-combo-list-inner{overflow:auto;position:relative;zoom:1;overflow-x:hidden;}.x-combo-list-hd{border-bottom:1px solid;padding:3px;}.x-resizable-pinned .x-combo-list-inner{border-bottom:1px solid;}.x-combo-list-item{padding:2px;border:1px solid;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.x-combo-list .x-combo-selected{border:1px dotted!important;cursor:pointer;}.x-combo-list .x-toolbar{border-top:1px solid;border-bottom:0 none;}.x-panel{border-style:solid;border-width:0;}.x-panel-header{overflow:hidden;zoom:1;padding:5px 3px 4px 5px;border:1px solid;line-height:15px;background:transparent repeat-x 0 -1px;}.x-panel-body{border:1px solid;border-top:0 none;overflow:hidden;position:relative;}.x-panel-bbar .x-toolbar,.x-panel-tbar .x-toolbar{border:1px solid;border-top:0 none;overflow:hidden;padding:2px;}.x-panel-tbar-noheader .x-toolbar,.x-panel-mc .x-panel-tbar .x-toolbar{border-top:1px solid;border-bottom:0 none;}.x-panel-body-noheader,.x-panel-mc .x-panel-body{border-top:1px solid;}.x-panel-header{overflow:hidden;zoom:1;}.x-panel-tl .x-panel-header{padding:5px 0 4px 0;border:0 none;background:transparent no-repeat;}.x-panel-tl .x-panel-icon,.x-window-tl .x-panel-icon{padding-left:20px!important;background-repeat:no-repeat;background-position:0 4px;zoom:1;}.x-panel-inline-icon{width:16px;height:16px;background-repeat:no-repeat;background-position:0 0;vertical-align:middle;margin-right:4px;margin-top:-1px;margin-bottom:-1px;}.x-panel-tc{background:transparent repeat-x 0 0;overflow:hidden;}.ext-strict .ext-ie7 .x-panel-tc{overflow:visible;}.x-panel-tl{background:transparent no-repeat 0 0;padding-left:6px;zoom:1;border-bottom:1px solid;}.x-panel-tr{background:transparent no-repeat right 0;zoom:1;padding-right:6px;}.x-panel-bc{background:transparent repeat-x 0 bottom;zoom:1;}.x-panel-bc .x-panel-footer{zoom:1;}.x-panel-bl{background:transparent no-repeat 0 bottom;padding-left:6px;zoom:1;}.x-panel-br{background:transparent no-repeat right bottom;padding-right:6px;zoom:1;}.x-panel-mc{border:0 none;padding:0;margin:0;padding-top:6px;}.x-panel-mc .x-panel-body{background-color:transparent;border:0 none;}.x-panel-ml{background:repeat-y 0 0;padding-left:6px;zoom:1;}.x-panel-mr{background:transparent repeat-y right 0;padding-right:6px;zoom:1;}.x-panel-bc .x-panel-footer{padding-bottom:6px;}.x-panel-nofooter .x-panel-bc,.x-panel-nofooter .x-window-bc{height:6px;font-size:0;line-height:0;}.x-panel-bwrap{overflow:hidden;zoom:1;left:0;top:0;}.x-panel-body{overflow:hidden;zoom:1;}.x-panel-collapsed .x-resizable-handle{display:none;}.ext-gecko .x-panel-animated div{overflow:hidden!important;}.x-plain-body{overflow:hidden;}.x-plain-bbar .x-toolbar{overflow:hidden;padding:2px;}.x-plain-tbar .x-toolbar{overflow:hidden;padding:2px;}.x-plain-bwrap{overflow:hidden;zoom:1;}.x-plain{overflow:hidden;}.x-tool{overflow:hidden;width:15px;height:15px;float:right;cursor:pointer;background:transparent no-repeat;margin-left:2px;}.x-tool-toggle{background-position:0 -60px;}.x-tool-toggle-over{background-position:-15px -60px;}.x-panel-collapsed .x-tool-toggle{background-position:0 -75px;}.x-panel-collapsed .x-tool-toggle-over{background-position:-15px -75px;}.x-tool-close{background-position:0 -0;}.x-tool-close-over{background-position:-15px 0;}.x-tool-minimize{background-position:0 -15px;}.x-tool-minimize-over{background-position:-15px -15px;}.x-tool-maximize{background-position:0 -30px;}.x-tool-maximize-over{background-position:-15px -30px;}.x-tool-restore{background-position:0 -45px;}.x-tool-restore-over{background-position:-15px -45px;}.x-tool-gear{background-position:0 -90px;}.x-tool-gear-over{background-position:-15px -90px;}.x-tool-prev{background-position:0 -105px;}.x-tool-prev-over{background-position:-15px -105px;}.x-tool-next{background-position:0 -120px;}.x-tool-next-over{background-position:-15px -120px;}.x-tool-pin{background-position:0 -135px;}.x-tool-pin-over{background-position:-15px -135px;}.x-tool-unpin{background-position:0 -150px;}.x-tool-unpin-over{background-position:-15px -150px;}.x-tool-right{background-position:0 -165px;}.x-tool-right-over{background-position:-15px -165px;}.x-tool-left{background-position:0 -180px;}.x-tool-left-over{background-position:-15px -180px;}.x-tool-down{background-position:0 -195px;}.x-tool-down-over{background-position:-15px -195px;}.x-tool-up{background-position:0 -210px;}.x-tool-up-over{background-position:-15px -210px;}.x-tool-refresh{background-position:0 -225px;}.x-tool-refresh-over{background-position:-15px -225px;}.x-tool-plus{background-position:0 -240px;}.x-tool-plus-over{background-position:-15px -240px;}.x-tool-minus{background-position:0 -255px;}.x-tool-minus-over{background-position:-15px -255px;}.x-tool-search{background-position:0 -270px;}.x-tool-search-over{background-position:-15px -270px;}.x-tool-save{background-position:0 -285px;}.x-tool-save-over{background-position:-15px -285px;}.x-tool-help{background-position:0 -300px;}.x-tool-help-over{background-position:-15px -300px;}.x-tool-print{background-position:0 -315px;}.x-tool-print-over{background-position:-15px -315px;}.x-tool-expand{background-position:0 -330px;}.x-tool-expand-over{background-position:-15px -330px;}.x-tool-collapse{background-position:0 -345px;}.x-tool-collapse-over{background-position:-15px -345px;}.x-tool-resize{background-position:0 -360px;}.x-tool-resize-over{background-position:-15px -360px;}.x-tool-move{background-position:0 -375px;}.x-tool-move-over{background-position:-15px -375px;}.x-panel-ghost{z-index:12000;overflow:hidden;position:absolute;left:0;top:0;opacity:.65;-moz-opacity:.65;filter:alpha(opacity=65);}.x-panel-ghost ul{margin:0;padding:0;overflow:hidden;font-size:0;line-height:0;border:1px solid;border-top:0 none;display:block;}.x-panel-ghost *{cursor:move!important;}.x-panel-dd-spacer{border:2px dashed;}.x-panel-btns{padding:5px;overflow:hidden;}.x-panel-btns td.x-toolbar-cell{padding:3px;}.x-panel-btns .x-btn-focus .x-btn-left{background-position:0 -147px;}.x-panel-btns .x-btn-focus .x-btn-right{background-position:0 -168px;}.x-panel-btns .x-btn-focus .x-btn-center{background-position:0 -189px;}.x-panel-btns .x-btn-over .x-btn-left{background-position:0 -63px;}.x-panel-btns .x-btn-over .x-btn-right{background-position:0 -84px;}.x-panel-btns .x-btn-over .x-btn-center{background-position:0 -105px;}.x-panel-btns .x-btn-click .x-btn-center{background-position:0 -126px;}.x-panel-btns .x-btn-click .x-btn-right{background-position:0 -84px;}.x-panel-btns .x-btn-click .x-btn-left{background-position:0 -63px;}.x-panel-fbar td,.x-panel-fbar span,.x-panel-fbar input,.x-panel-fbar div,.x-panel-fbar select,.x-panel-fbar label{white-space:nowrap;}.x-panel-reset .x-panel-body html,.x-panel-reset .x-panel-body address,.x-panel-reset .x-panel-body blockquote,.x-panel-reset .x-panel-body body,.x-panel-reset .x-panel-body dd,.x-panel-reset .x-panel-body div,.x-panel-reset .x-panel-body dl,.x-panel-reset .x-panel-body dt,.x-panel-reset .x-panel-body fieldset,.x-panel-reset .x-panel-body form,.x-panel-reset .x-panel-body frame,frameset,.x-panel-reset .x-panel-body h1,.x-panel-reset .x-panel-body h2,.x-panel-reset .x-panel-body h3,.x-panel-reset .x-panel-body h4,.x-panel-reset .x-panel-body h5,.x-panel-reset .x-panel-body h6,.x-panel-reset .x-panel-body noframes,.x-panel-reset .x-panel-body ol,.x-panel-reset .x-panel-body p,.x-panel-reset .x-panel-body ul,.x-panel-reset .x-panel-body center,.x-panel-reset .x-panel-body dir,.x-panel-reset .x-panel-body hr,.x-panel-reset .x-panel-body menu,.x-panel-reset .x-panel-body pre{display:block;}.x-panel-reset .x-panel-body li{display:list-item;}.x-panel-reset .x-panel-body head{display:none;}.x-panel-reset .x-panel-body table{display:table;}.x-panel-reset .x-panel-body tr{display:table-row;}.x-panel-reset .x-panel-body thead{display:table-header-group;}.x-panel-reset .x-panel-body tbody{display:table-row-group;}.x-panel-reset .x-panel-body tfoot{display:table-footer-group;}.x-panel-reset .x-panel-body col{display:table-column;}.x-panel-reset .x-panel-body colgroup{display:table-column-group;}.x-panel-reset .x-panel-body td,.x-panel-reset .x-panel-body th{display:table-cell;}.x-panel-reset .x-panel-body caption{display:table-caption;}.x-panel-reset .x-panel-body th{font-weight:bolder;text-align:center;}.x-panel-reset .x-panel-body caption{text-align:center;}.x-panel-reset .x-panel-body body{margin:8px;}.x-panel-reset .x-panel-body h1{font-size:2em;margin:.67em 0;}.x-panel-reset .x-panel-body h2{font-size:1.5em;margin:.75em 0;}.x-panel-reset .x-panel-body h3{font-size:1.17em;margin:.83em 0;}.x-panel-reset .x-panel-body h4,.x-panel-reset .x-panel-body p,.x-panel-reset .x-panel-body blockquote,.x-panel-reset .x-panel-body ul,.x-panel-reset .x-panel-body fieldset,.x-panel-reset .x-panel-body form,.x-panel-reset .x-panel-body ol,.x-panel-reset .x-panel-body dl,.x-panel-reset .x-panel-body dir,.x-panel-reset .x-panel-body menu{margin:1.12em 0;}.x-panel-reset .x-panel-body h5{font-size:.83em;margin:1.5em 0;}.x-panel-reset .x-panel-body h6{font-size:.75em;margin:1.67em 0;}.x-panel-reset .x-panel-body h1,.x-panel-reset .x-panel-body h2,.x-panel-reset .x-panel-body h3,.x-panel-reset .x-panel-body h4,.x-panel-reset .x-panel-body h5,.x-panel-reset .x-panel-body h6,.x-panel-reset .x-panel-body b,.x-panel-reset .x-panel-body strong{font-weight:bolder;}.x-panel-reset .x-panel-body blockquote{margin-left:40px;margin-right:40px;}.x-panel-reset .x-panel-body i,.x-panel-reset .x-panel-body cite,.x-panel-reset .x-panel-body em,.x-panel-reset .x-panel-body var,.x-panel-reset .x-panel-body address{font-style:italic;}.x-panel-reset .x-panel-body pre,.x-panel-reset .x-panel-body tt,.x-panel-reset .x-panel-body code,.x-panel-reset .x-panel-body kbd,.x-panel-reset .x-panel-body samp{font-family:monospace;}.x-panel-reset .x-panel-body pre{white-space:pre;}.x-panel-reset .x-panel-body button,.x-panel-reset .x-panel-body textarea,.x-panel-reset .x-panel-body input,.x-panel-reset .x-panel-body select{display:inline-block;}.x-panel-reset .x-panel-body big{font-size:1.17em;}.x-panel-reset .x-panel-body small,.x-panel-reset .x-panel-body sub,.x-panel-reset .x-panel-body sup{font-size:.83em;}.x-panel-reset .x-panel-body sub{vertical-align:sub;}.x-panel-reset .x-panel-body sup{vertical-align:super;}.x-panel-reset .x-panel-body table{border-spacing:2px;}.x-panel-reset .x-panel-body thead,.x-panel-reset .x-panel-body tbody,.x-panel-reset .x-panel-body tfoot{vertical-align:middle;}.x-panel-reset .x-panel-body td,.x-panel-reset .x-panel-body th{vertical-align:inherit;}.x-panel-reset .x-panel-body s,.x-panel-reset .x-panel-body strike,.x-panel-reset .x-panel-body del{text-decoration:line-through;}.x-panel-reset .x-panel-body hr{border:1px inset;}.x-panel-reset .x-panel-body ol,.x-panel-reset .x-panel-body ul,.x-panel-reset .x-panel-body dir,.x-panel-reset .x-panel-body menu,.x-panel-reset .x-panel-body dd{margin-left:40px;}.x-panel-reset .x-panel-body ul,.x-panel-reset .x-panel-body menu,.x-panel-reset .x-panel-body dir{list-style-type:disc;}.x-panel-reset .x-panel-body ol{list-style-type:decimal;}.x-panel-reset .x-panel-body ol ul,.x-panel-reset .x-panel-body ul ol,.x-panel-reset .x-panel-body ul ul,.x-panel-reset .x-panel-body ol ol{margin-top:0;margin-bottom:0;}.x-panel-reset .x-panel-body u,.x-panel-reset .x-panel-body ins{text-decoration:underline;}.x-panel-reset .x-panel-body br:before{content:"\A";}.x-panel-reset .x-panel-body :before,.x-panel-reset .x-panel-body :after{white-space:pre-line;}.x-panel-reset .x-panel-body center{text-align:center;}.x-panel-reset .x-panel-body :link,.x-panel-reset .x-panel-body :visited{text-decoration:underline;}.x-panel-reset .x-panel-body :focus{outline:invert dotted thin;}.x-panel-reset .x-panel-body BDO[DIR="ltr"]{direction:ltr;unicode-bidi:bidi-override;}.x-panel-reset .x-panel-body BDO[DIR="rtl"]{direction:rtl;unicode-bidi:bidi-override;}.x-window{zoom:1;}.x-window .x-window-handle{opacity:0;-moz-opacity:0;filter:alpha(opacity=0);}.x-window-proxy{border:1px solid;z-index:12000;overflow:hidden;position:absolute;left:0;top:0;display:none;opacity:.5;-moz-opacity:.5;filter:alpha(opacity=50);}.x-window-header{overflow:hidden;zoom:1;}.x-window-bwrap{z-index:1;position:relative;zoom:1;left:0;top:0;}.x-window-tl .x-window-header{padding:5px 0 4px 0;}.x-window-header-text{cursor:pointer;}.x-window-tc{background:transparent repeat-x 0 0;overflow:hidden;zoom:1;}.x-window-tl{background:transparent no-repeat 0 0;padding-left:6px;zoom:1;z-index:1;position:relative;}.x-window-tr{background:transparent no-repeat right 0;padding-right:6px;}.x-window-bc{background:transparent repeat-x 0 bottom;zoom:1;}.x-window-bc .x-window-footer{padding-bottom:6px;zoom:1;font-size:0;line-height:0;}.x-window-bl{background:transparent no-repeat 0 bottom;padding-left:6px;zoom:1;}.x-window-br{background:transparent no-repeat right bottom;padding-right:6px;zoom:1;}.x-window-mc{border:1px solid;padding:0;margin:0;}.x-window-ml{background:transparent repeat-y 0 0;padding-left:6px;zoom:1;}.x-window-mr{background:transparent repeat-y right 0;padding-right:6px;zoom:1;}.x-window-body{overflow:hidden;}.x-window-bwrap{overflow:hidden;}.x-window-maximized .x-window-bl,.x-window-maximized .x-window-br,.x-window-maximized .x-window-ml,.x-window-maximized .x-window-mr,.x-window-maximized .x-window-tl,.x-window-maximized .x-window-tr{padding:0;}.x-window-maximized .x-window-footer{padding-bottom:0;}.x-window-maximized .x-window-tc{padding-left:3px;padding-right:3px;}.x-window-maximized .x-window-mc{border-left:0 none;border-right:0 none;}.x-window-tbar .x-toolbar,.x-window-bbar .x-toolbar{border-left:0 none;border-right:0 none;}.x-window-bbar .x-toolbar{border-top:1px solid;border-bottom:0 none;}.x-window-draggable,.x-window-draggable .x-window-header-text{cursor:move;}.x-window-maximized .x-window-draggable,.x-window-maximized .x-window-draggable .x-window-header-text{cursor:default;}.x-window-body{background-color:transparent;}.x-panel-ghost .x-window-tl{border-bottom:1px solid;}.x-panel-collapsed .x-window-tl{border-bottom:1px solid;}.x-window-maximized-ct{overflow:hidden;}.x-window-maximized .x-window-handle{display:none;}.x-window-sizing-ghost ul{border:0 none!important;}.x-dlg-focus{-moz-outline:0 none;outline:0 none;width:0;height:0;overflow:hidden;position:absolute;top:0;left:0;}.ext-webkit .x-dlg-focus{width:1px;height:1px;}.x-dlg-mask{z-index:10000;display:none;position:absolute;top:0;left:0;-moz-opacity:.5;opacity:.50;filter:alpha(opacity=50);}body.ext-ie6.x-body-masked select{visibility:hidden;}body.ext-ie6.x-body-masked .x-window select{visibility:visible;}.x-window-plain .x-window-mc{border:1px solid;}.x-window-plain .x-window-body{border:1px solid;background:transparent!important;}.x-html-editor-wrap{border:1px solid;}.x-html-editor-tb .x-btn-text{background:transparent no-repeat;}.x-html-editor-tb .x-edit-bold,.x-menu-item img.x-edit-bold{background-position:0 0;background-image:url(../images/default/editor/tb-sprite.gif);}.x-html-editor-tb .x-edit-italic,.x-menu-item img.x-edit-italic{background-position:-16px 0;background-image:url(../images/default/editor/tb-sprite.gif);}.x-html-editor-tb .x-edit-underline,.x-menu-item img.x-edit-underline{background-position:-32px 0;background-image:url(../images/default/editor/tb-sprite.gif);}.x-html-editor-tb .x-edit-forecolor,.x-menu-item img.x-edit-forecolor{background-position:-160px 0;background-image:url(../images/default/editor/tb-sprite.gif);}.x-html-editor-tb .x-edit-backcolor,.x-menu-item img.x-edit-backcolor{background-position:-176px 0;background-image:url(../images/default/editor/tb-sprite.gif);}.x-html-editor-tb .x-edit-justifyleft,.x-menu-item img.x-edit-justifyleft{background-position:-112px 0;background-image:url(../images/default/editor/tb-sprite.gif);}.x-html-editor-tb .x-edit-justifycenter,.x-menu-item img.x-edit-justifycenter{background-position:-128px 0;background-image:url(../images/default/editor/tb-sprite.gif);}.x-html-editor-tb .x-edit-justifyright,.x-menu-item img.x-edit-justifyright{background-position:-144px 0;background-image:url(../images/default/editor/tb-sprite.gif);}.x-html-editor-tb .x-edit-insertorderedlist,.x-menu-item img.x-edit-insertorderedlist{background-position:-80px 0;background-image:url(../images/default/editor/tb-sprite.gif);}.x-html-editor-tb .x-edit-insertunorderedlist,.x-menu-item img.x-edit-insertunorderedlist{background-position:-96px 0;background-image:url(../images/default/editor/tb-sprite.gif);}.x-html-editor-tb .x-edit-increasefontsize,.x-menu-item img.x-edit-increasefontsize{background-position:-48px 0;background-image:url(../images/default/editor/tb-sprite.gif);}.x-html-editor-tb .x-edit-decreasefontsize,.x-menu-item img.x-edit-decreasefontsize{background-position:-64px 0;background-image:url(../images/default/editor/tb-sprite.gif);}.x-html-editor-tb .x-edit-sourceedit,.x-menu-item img.x-edit-sourceedit{background-position:-192px 0;background-image:url(../images/default/editor/tb-sprite.gif);}.x-html-editor-tb .x-edit-createlink,.x-menu-item img.x-edit-createlink{background-position:-208px 0;background-image:url(../images/default/editor/tb-sprite.gif);}.x-html-editor-tip .x-tip-bd .x-tip-bd-inner{padding:5px;padding-bottom:1px;}.x-html-editor-tb .x-toolbar{position:static!important;}.x-panel-noborder .x-panel-body-noborder{border-width:0;}.x-panel-noborder .x-panel-header-noborder{border-width:0 0 1px;border-style:solid;}.x-panel-noborder .x-panel-tbar-noborder .x-toolbar{border-width:0 0 1px;border-style:solid;}.x-panel-noborder .x-panel-bbar-noborder .x-toolbar{border-width:1px 0 0 0;border-style:solid;}.x-window-noborder .x-window-mc{border-width:0;}.x-window-plain .x-window-body-noborder{border-width:0;}.x-tab-panel-noborder .x-tab-panel-body-noborder{border-width:0;}.x-tab-panel-noborder .x-tab-panel-header-noborder{border-width:0 0 1px 0;}.x-tab-panel-noborder .x-tab-panel-footer-noborder{border-width:1px 0 0 0;}.x-tab-panel-bbar-noborder .x-toolbar{border-width:1px 0 0 0;border-style:solid;}.x-tab-panel-tbar-noborder .x-toolbar{border-width:0 0 1px;border-style:solid;}.x-border-layout-ct{position:relative;}.x-border-panel{position:absolute;left:0;top:0;}.x-tool-collapse-south{background-position:0 -195px;}.x-tool-collapse-south-over{background-position:-15px -195px;}.x-tool-collapse-north{background-position:0 -210px;}.x-tool-collapse-north-over{background-position:-15px -210px;}.x-tool-collapse-west{background-position:0 -180px;}.x-tool-collapse-west-over{background-position:-15px -180px;}.x-tool-collapse-east{background-position:0 -165px;}.x-tool-collapse-east-over{background-position:-15px -165px;}.x-tool-expand-south{background-position:0 -210px;}.x-tool-expand-south-over{background-position:-15px -210px;}.x-tool-expand-north{background-position:0 -195px;}.x-tool-expand-north-over{background-position:-15px -195px;}.x-tool-expand-west{background-position:0 -165px;}.x-tool-expand-west-over{background-position:-15px -165px;}.x-tool-expand-east{background-position:0 -180px;}.x-tool-expand-east-over{background-position:-15px -180px;}.x-tool-expand-north,.x-tool-expand-south{float:right;margin:3px;}.x-tool-expand-east,.x-tool-expand-west{float:none;margin:3px 2px;}.x-accordion-hd .x-tool-toggle{background-position:0 -255px;}.x-accordion-hd .x-tool-toggle-over{background-position:-15px -255px;}.x-panel-collapsed .x-accordion-hd .x-tool-toggle{background-position:0 -240px;}.x-panel-collapsed .x-accordion-hd .x-tool-toggle-over{background-position:-15px -240px;}.x-accordion-hd{padding-top:4px;padding-bottom:3px;border-top:0 none;background:transparent repeat-x 0 -9px;}.x-layout-collapsed{position:absolute;left:-10000px;top:-10000px;visibility:hidden;width:20px;height:20px;overflow:hidden;border:1px solid;z-index:20;}.ext-border-box .x-layout-collapsed{width:22px;height:22px;}.x-layout-collapsed-over{cursor:pointer;}.x-layout-collapsed-west .x-layout-collapsed-tools,.x-layout-collapsed-east .x-layout-collapsed-tools{position:absolute;top:0;left:0;width:20px;height:20px;}.x-layout-split{position:absolute;height:5px;width:5px;line-height:1px;font-size:1px;z-index:3;background-color:transparent;}.ext-strict .ext-ie6 .x-layout-split{background-color:#fff!important;filter:alpha(opacity=1);}.x-layout-split-h{background-image:url(../images/default/s.gif);background-position:left;}.x-layout-split-v{background-image:url(../images/default/s.gif);background-position:top;}.x-column-layout-ct{overflow:hidden;zoom:1;}.x-column{float:left;padding:0;margin:0;overflow:hidden;zoom:1;}.x-column-inner{overflow:hidden;zoom:1;}.x-layout-mini{position:absolute;top:0;left:0;display:block;width:5px;height:35px;cursor:pointer;opacity:.5;-moz-opacity:.5;filter:alpha(opacity=50);}.x-layout-mini-over,.x-layout-collapsed-over .x-layout-mini{opacity:1;-moz-opacity:1;filter:none;}.x-layout-split-west .x-layout-mini{top:48%;}.x-layout-split-east .x-layout-mini{top:48%;}.x-layout-split-north .x-layout-mini{left:48%;height:5px;width:35px;}.x-layout-split-south .x-layout-mini{left:48%;height:5px;width:35px;}.x-layout-cmini-west .x-layout-mini{top:48%;}.x-layout-cmini-east .x-layout-mini{top:48%;}.x-layout-cmini-north .x-layout-mini{left:48%;height:5px;width:35px;}.x-layout-cmini-south .x-layout-mini{left:48%;height:5px;width:35px;}.x-layout-cmini-west,.x-layout-cmini-east{border:0 none;width:5px!important;padding:0;background-color:transparent;}.x-layout-cmini-north,.x-layout-cmini-south{border:0 none;height:5px!important;padding:0;background-color:transparent;}.x-viewport,.x-viewport body{margin:0;padding:0;border:0 none;overflow:hidden;height:100%;}.x-abs-layout-item{position:absolute;left:0;top:0;}.ext-ie input.x-abs-layout-item,.ext-ie textarea.x-abs-layout-item{margin:0;}.x-box-layout-ct{overflow:hidden;zoom:1;}.x-box-inner{overflow:hidden;zoom:1;position:relative;left:0;top:0;}.x-box-item{position:absolute;left:0;top:0;}.x-progress-wrap{border:1px solid;overflow:hidden;}.x-progress-inner{height:18px;background:repeat-x;position:relative;}.x-progress-bar{height:18px;float:left;width:0;background:repeat-x left center;border-top:1px solid;border-bottom:1px solid;border-right:1px solid;}.x-progress-text{padding:1px 5px;overflow:hidden;position:absolute;left:0;text-align:center;}.x-progress-text-back{line-height:16px;}.ext-ie .x-progress-text-back{line-height:15px;}.ext-strict .ext-ie7 .x-progress-text-back{width:100%;}.x-list-header{background:repeat-x 0 bottom;cursor:default;zoom:1;height:22px;}.x-list-header-inner div{display:block;float:left;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;}.x-list-header-inner div em{display:block;border-left:1px solid;padding:4px 4px;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;line-height:14px;}.x-list-body{overflow:auto;overflow-x:hidden;overflow-y:auto;zoom:1;float:left;width:100%;}.x-list-body dl{zoom:1;}.x-list-body dt{display:block;float:left;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;zoom:1;}.x-list-body dt em{display:block;padding:3px 4px;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;}.x-list-resizer{border-left:1px solid;border-right:1px solid;position:absolute;left:0;top:0;}.x-list-header-inner em.sort-asc{background:transparent no-repeat center 0;border-style:solid;border-width:0 1px 1px;padding-bottom:3px;}.x-list-header-inner em.sort-desc{background:transparent no-repeat center -23px;border-style:solid;border-width:0 1px 1px;padding-bottom:3px;}.x-slider{zoom:1;}.x-slider-inner{position:relative;left:0;top:0;overflow:visible;zoom:1;}.x-slider-focus{position:absolute;left:0;top:0;width:1px;height:1px;line-height:1px;font-size:1px;-moz-outline:0 none;outline:0 none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:ignore;display:block;overflow:hidden;}.x-slider-horz{padding-left:7px;background:transparent no-repeat 0 -22px;}.x-slider-horz .x-slider-end{padding-right:7px;zoom:1;background:transparent no-repeat right -44px;}.x-slider-horz .x-slider-inner{background:transparent repeat-x 0 0;height:22px;}.x-slider-horz .x-slider-thumb{width:14px;height:15px;position:absolute;left:0;top:3px;background:transparent no-repeat 0 0;}.x-slider-horz .x-slider-thumb-over{background-position:-14px -15px;}.x-slider-horz .x-slider-thumb-drag{background-position:-28px -30px;}.x-slider-vert{padding-top:7px;background:transparent no-repeat -44px 0;width:22px;}.x-slider-vert .x-slider-end{padding-bottom:7px;zoom:1;background:transparent no-repeat -22px bottom;}.x-slider-vert .x-slider-inner{background:transparent repeat-y 0 0;}.x-slider-vert .x-slider-thumb{width:15px;height:14px;position:absolute;left:3px;bottom:0;background:transparent no-repeat 0 0;}.x-slider-vert .x-slider-thumb-over{background-position:-15px -14px;}.x-slider-vert .x-slider-thumb-drag{background-position:-30px -28px;}.x-window-dlg .x-window-body{border:0 none!important;padding:5px 10px;overflow:hidden!important;}.x-window-dlg .x-window-mc{border:0 none!important;}.x-window-dlg .ext-mb-input{margin-top:4px;width:95%;}.x-window-dlg .ext-mb-textarea{margin-top:4px;}.x-window-dlg .x-progress-wrap{margin-top:4px;}.ext-ie .x-window-dlg .x-progress-wrap{margin-top:6px;}.x-window-dlg .x-msg-box-wait{background:transparent no-repeat left;display:block;width:300px;padding-left:18px;line-height:18px;}.x-window-dlg .ext-mb-icon{float:left;width:47px;height:32px;}.x-window-dlg .x-dlg-icon .ext-mb-content{zoom:1;margin-left:47px;}.x-window-dlg .ext-mb-info,.x-window-dlg .ext-mb-warning,.x-window-dlg .ext-mb-question,.x-window-dlg .ext-mb-error{background:transparent no-repeat top left;}.ext-gecko2 .ext-mb-fix-cursor{overflow:auto;}.ext-el-mask{background-color:#ccc;}.ext-el-mask-msg{border-color:#6593cf;background-color:#c3daf9;background-image:url(../images/default/box/tb-blue.gif);}.ext-el-mask-msg div{background-color:#eee;border-color:#a3bad9;color:#222;font:normal 11px tahoma,arial,helvetica,sans-serif;}.x-mask-loading div{background-color:#fbfbfb;background-image:url(../images/default/grid/loading.gif);}.x-item-disabled{color:gray;}.x-item-disabled *{color:gray!important;}.x-splitbar-proxy{background-color:#aaa;}.x-color-palette a{border-color:#fff;}.x-color-palette a:hover,.x-color-palette a.x-color-palette-sel{border-color:#8bb8f3;background-color:#deecfd;}.x-color-palette em{border-color:#aca899;}.x-ie-shadow{background-color:#777;}.x-shadow .xsmc{background-image:url(../images/default/shadow-c.png);}.x-shadow .xsml,.x-shadow .xsmr{background-image:url(../images/default/shadow-lr.png);}.x-shadow .xstl,.x-shadow .xstc,.x-shadow .xstr,.x-shadow .xsbl,.x-shadow .xsbc,.x-shadow .xsbr{background-image:url(../images/default/shadow.png);}.loading-indicator{font-size:11px;background-image:url(../images/default/grid/loading.gif);}.x-spotlight{background-color:#ccc;}.x-tab-panel-header,.x-tab-panel-footer{background-color:#deecfd;border-color:#8db2e3;overflow:hidden;zoom:1;}.x-tab-panel-header,.x-tab-panel-footer{border-color:#8db2e3;}ul.x-tab-strip-top{background-color:#cedff5;background-image:url(../images/default/tabs/tab-strip-bg.gif);border-bottom-color:#8db2e3;}ul.x-tab-strip-bottom{background-color:#cedff5;background-image:url(../images/default/tabs/tab-strip-btm-bg.gif);border-top-color:#8db2e3;}.x-tab-panel-header-plain .x-tab-strip-spacer,.x-tab-panel-footer-plain .x-tab-strip-spacer{border-color:#8db2e3;background-color:#deecfd;}.x-tab-strip span.x-tab-strip-text{font:normal 11px tahoma,arial,helvetica;color:#416aa3;}.x-tab-strip-over span.x-tab-strip-text{color:#15428b;}.x-tab-strip-active span.x-tab-strip-text{color:#15428b;font-weight:bold;}.x-tab-strip-disabled .x-tabs-text{color:#aaa;}.x-tab-strip-top .x-tab-right,.x-tab-strip-top .x-tab-left,.x-tab-strip-top .x-tab-strip-inner{background-image:url(../images/default/tabs/tabs-sprite.gif);}.x-tab-strip-bottom .x-tab-right{background-image:url(../images/default/tabs/tab-btm-inactive-right-bg.gif);}.x-tab-strip-bottom .x-tab-left{background-image:url(../images/default/tabs/tab-btm-inactive-left-bg.gif);}.x-tab-strip-bottom .x-tab-strip-over .x-tab-right{background-image:url(../images/default/tabs/tab-btm-over-right-bg.gif);}.x-tab-strip-bottom .x-tab-strip-over .x-tab-left{background-image:url(../images/default/tabs/tab-btm-over-left-bg.gif);}.x-tab-strip-bottom .x-tab-strip-active .x-tab-right{background-image:url(../images/default/tabs/tab-btm-right-bg.gif);}.x-tab-strip-bottom .x-tab-strip-active .x-tab-left{background-image:url(../images/default/tabs/tab-btm-left-bg.gif);}.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close{background-image:url(../images/default/tabs/tab-close.gif);}.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close:hover{background-image:url(../images/default/tabs/tab-close.gif);}.x-tab-panel-body{border-color:#8db2e3;background-color:#fff;}.x-tab-panel-body-top{border-top:0 none;}.x-tab-panel-body-bottom{border-bottom:0 none;}.x-tab-scroller-left{background-image:url(../images/default/tabs/scroll-left.gif);border-bottom-color:#8db2e3;}.x-tab-scroller-left-over{background-position:0 0;}.x-tab-scroller-left-disabled{background-position:-18px 0;opacity:.5;-moz-opacity:.5;filter:alpha(opacity=50);cursor:default;}.x-tab-scroller-right{background-image:url(../images/default/tabs/scroll-right.gif);border-bottom-color:#8db2e3;}.x-tab-panel-bbar .x-toolbar,.x-tab-panel-tbar .x-toolbar{border-color:#99bbe8;}.x-form-field{font:normal 12px tahoma,arial,helvetica,sans-serif;}.x-form-text,textarea.x-form-field{background-color:#fff;background-image:url(../images/default/form/text-bg.gif);border-color:#b5b8c8;}.x-form-select-one{background-color:#fff;border-color:#b5b8c8;}.x-form-check-group-label{border-bottom:1px solid #99bbe8;color:#15428b;}.x-editor .x-form-check-wrap{background-color:#fff;}.x-form-field-wrap .x-form-trigger{background-image:url(../images/default/form/trigger.gif);border-bottom-color:#b5b8c8;}.x-form-field-wrap .x-form-date-trigger{background-image:url(../images/default/form/date-trigger.gif);}.x-form-field-wrap .x-form-clear-trigger{background-image:url(../images/default/form/clear-trigger.gif);}.x-form-field-wrap .x-form-search-trigger{background-image:url(../images/default/form/search-trigger.gif);}.x-trigger-wrap-focus .x-form-trigger{border-bottom-color:#7eadd9;}.x-item-disabled .x-form-trigger-over{border-bottom-color:#b5b8c8;}.x-item-disabled .x-form-trigger-click{border-bottom-color:#b5b8c8;}.x-form-focus,textarea.x-form-focus{border-color:#7eadd9;}.x-form-invalid,textarea.x-form-invalid{background-color:#fff;background-image:url(../images/default/grid/invalid_line.gif);border-color:#c30;}.x-form-invalid.x-form-composite{border:0;background-image:none;}.x-form-invalid.x-form-composite .x-form-invalid{background-color:#fff;background-image:url(../images/default/grid/invalid_line.gif);border-color:#c30;}.x-form-inner-invalid,textarea.x-form-inner-invalid{background-color:#fff;background-image:url(../images/default/grid/invalid_line.gif);}.x-form-grow-sizer{font:normal 12px tahoma,arial,helvetica,sans-serif;}.x-form-item{font:normal 12px tahoma,arial,helvetica,sans-serif;}.x-form-invalid-msg{color:#c0272b;font:normal 11px tahoma,arial,helvetica,sans-serif;background-image:url(../images/default/shared/warning.gif);}.x-form-empty-field{color:gray;}.x-small-editor .x-form-field{font:normal 11px arial,tahoma,helvetica,sans-serif;}.ext-webkit .x-small-editor .x-form-field{font:normal 11px arial,tahoma,helvetica,sans-serif;}.x-form-invalid-icon{background-image:url(../images/default/form/exclamation.gif);}.x-fieldset{border-color:#b5b8c8;}.x-fieldset legend{font:bold 11px tahoma,arial,helvetica,sans-serif;color:#15428b;}.x-btn{font:normal 11px tahoma,verdana,helvetica;}.x-btn button{font:normal 11px arial,tahoma,verdana,helvetica;color:#333;}.x-btn em{font-style:normal;font-weight:normal;}.x-btn-tl,.x-btn-tr,.x-btn-tc,.x-btn-ml,.x-btn-mr,.x-btn-mc,.x-btn-bl,.x-btn-br,.x-btn-bc{background-image:url(../images/default/button/btn.gif);}.x-btn-click .x-btn-text,.x-btn-menu-active .x-btn-text,.x-btn-pressed .x-btn-text{color:#000;}.x-btn-disabled *{color:gray!important;}.x-btn-mc em.x-btn-arrow{background-image:url(../images/default/button/arrow.gif);}.x-btn-mc em.x-btn-split{background-image:url(../images/default/button/s-arrow.gif);}.x-btn-over .x-btn-mc em.x-btn-split,.x-btn-click .x-btn-mc em.x-btn-split,.x-btn-menu-active .x-btn-mc em.x-btn-split,.x-btn-pressed .x-btn-mc em.x-btn-split{background-image:url(../images/default/button/s-arrow-o.gif);}.x-btn-mc em.x-btn-arrow-bottom{background-image:url(../images/default/button/s-arrow-b-noline.gif);}.x-btn-mc em.x-btn-split-bottom{background-image:url(../images/default/button/s-arrow-b.gif);}.x-btn-over .x-btn-mc em.x-btn-split-bottom,.x-btn-click .x-btn-mc em.x-btn-split-bottom,.x-btn-menu-active .x-btn-mc em.x-btn-split-bottom,.x-btn-pressed .x-btn-mc em.x-btn-split-bottom{background-image:url(../images/default/button/s-arrow-bo.gif);}.x-btn-group-header{color:#3e6aaa;}.x-btn-group-tc{background-image:url(../images/default/button/group-tb.gif);}.x-btn-group-tl{background-image:url(../images/default/button/group-cs.gif);}.x-btn-group-tr{background-image:url(../images/default/button/group-cs.gif);}.x-btn-group-bc{background-image:url(../images/default/button/group-tb.gif);}.x-btn-group-bl{background-image:url(../images/default/button/group-cs.gif);}.x-btn-group-br{background-image:url(../images/default/button/group-cs.gif);}.x-btn-group-ml{background-image:url(../images/default/button/group-lr.gif);}.x-btn-group-mr{background-image:url(../images/default/button/group-lr.gif);}.x-btn-group-notitle .x-btn-group-tc{background-image:url(../images/default/button/group-tb.gif);}.x-toolbar{border-color:#a9bfd3;background-color:#d0def0;background-image:url(../images/default/toolbar/bg.gif);}.x-toolbar td,.x-toolbar span,.x-toolbar input,.x-toolbar div,.x-toolbar select,.x-toolbar label{font:normal 11px arial,tahoma,helvetica,sans-serif;}.x-toolbar .x-item-disabled{color:gray;}.x-toolbar .x-item-disabled *{color:gray;}.x-toolbar .x-btn-mc em.x-btn-split{background-image:url(../images/default/button/s-arrow-noline.gif);}.x-toolbar .x-btn-over .x-btn-mc em.x-btn-split,.x-toolbar .x-btn-click .x-btn-mc em.x-btn-split,.x-toolbar .x-btn-menu-active .x-btn-mc em.x-btn-split,.x-toolbar .x-btn-pressed .x-btn-mc em.x-btn-split{background-image:url(../images/default/button/s-arrow-o.gif);}.x-toolbar .x-btn-mc em.x-btn-split-bottom{background-image:url(../images/default/button/s-arrow-b-noline.gif);}.x-toolbar .x-btn-over .x-btn-mc em.x-btn-split-bottom,.x-toolbar .x-btn-click .x-btn-mc em.x-btn-split-bottom,.x-toolbar .x-btn-menu-active .x-btn-mc em.x-btn-split-bottom,.x-toolbar .x-btn-pressed .x-btn-mc em.x-btn-split-bottom{background-image:url(../images/default/button/s-arrow-bo.gif);}.x-toolbar .xtb-sep{background-image:url(../images/default/grid/grid-blue-split.gif);}.x-tbar-page-first{background-image:url(../images/default/grid/page-first.gif)!important;}.x-tbar-loading{background-image:url(../images/default/grid/refresh.gif)!important;}.x-tbar-page-last{background-image:url(../images/default/grid/page-last.gif)!important;}.x-tbar-page-next{background-image:url(../images/default/grid/page-next.gif)!important;}.x-tbar-page-prev{background-image:url(../images/default/grid/page-prev.gif)!important;}.x-item-disabled .x-tbar-loading{background-image:url(../images/default/grid/refresh-disabled.gif)!important;}.x-item-disabled .x-tbar-page-first{background-image:url(../images/default/grid/page-first-disabled.gif)!important;}.x-item-disabled .x-tbar-page-last{background-image:url(../images/default/grid/page-last-disabled.gif)!important;}.x-item-disabled .x-tbar-page-next{background-image:url(../images/default/grid/page-next-disabled.gif)!important;}.x-item-disabled .x-tbar-page-prev{background-image:url(../images/default/grid/page-prev-disabled.gif)!important;}.x-paging-info{color:#444;}.x-toolbar-more-icon{background-image:url(../images/default/toolbar/more.gif)!important;}.x-resizable-handle{background-color:#fff;}.x-resizable-over .x-resizable-handle-east,.x-resizable-pinned .x-resizable-handle-east,.x-resizable-over .x-resizable-handle-west,.x-resizable-pinned .x-resizable-handle-west{background-image:url(../images/default/sizer/e-handle.gif);}.x-resizable-over .x-resizable-handle-south,.x-resizable-pinned .x-resizable-handle-south,.x-resizable-over .x-resizable-handle-north,.x-resizable-pinned .x-resizable-handle-north{background-image:url(../images/default/sizer/s-handle.gif);}.x-resizable-over .x-resizable-handle-north,.x-resizable-pinned .x-resizable-handle-north{background-image:url(../images/default/sizer/s-handle.gif);}.x-resizable-over .x-resizable-handle-southeast,.x-resizable-pinned .x-resizable-handle-southeast{background-image:url(../images/default/sizer/se-handle.gif);}.x-resizable-over .x-resizable-handle-northwest,.x-resizable-pinned .x-resizable-handle-northwest{background-image:url(../images/default/sizer/nw-handle.gif);}.x-resizable-over .x-resizable-handle-northeast,.x-resizable-pinned .x-resizable-handle-northeast{background-image:url(../images/default/sizer/ne-handle.gif);}.x-resizable-over .x-resizable-handle-southwest,.x-resizable-pinned .x-resizable-handle-southwest{background-image:url(../images/default/sizer/sw-handle.gif);}.x-resizable-proxy{border-color:#3b5a82;}.x-resizable-overlay{background-color:#fff;}.x-grid3{background-color:#fff;}.x-grid-panel .x-panel-mc .x-panel-body{border-color:#99bbe8;}.x-grid3-row td,.x-grid3-summary-row td{font:normal 11px/13px arial,tahoma,helvetica,sans-serif;}.x-grid3-hd-row td{font:normal 11px/15px arial,tahoma,helvetica,sans-serif;}.x-grid3-hd-row td{border-left-color:#eee;border-right-color:#d0d0d0;}.x-grid-row-loading{background-color:#fff;background-image:url(../images/default/shared/loading-balls.gif);}.x-grid3-row{border-color:#ededed;border-top-color:#fff;}.x-grid3-row-alt{background-color:#fafafa;}.x-grid3-row-over{border-color:#ddd;background-color:#efefef;background-image:url(../images/default/grid/row-over.gif);}.x-grid3-resize-proxy{background-color:#777;}.x-grid3-resize-marker{background-color:#777;}.x-grid3-header{background-color:#f9f9f9;background-image:url(../images/default/grid/grid3-hrow.gif);}.x-grid3-header-pop{border-left-color:#d0d0d0;}.x-grid3-header-pop-inner{border-left-color:#eee;background-image:url(../images/default/grid/hd-pop.gif);}td.x-grid3-hd-over,td.sort-desc,td.sort-asc,td.x-grid3-hd-menu-open{border-left-color:#aaccf6;border-right-color:#aaccf6;}td.x-grid3-hd-over .x-grid3-hd-inner,td.sort-desc .x-grid3-hd-inner,td.sort-asc .x-grid3-hd-inner,td.x-grid3-hd-menu-open .x-grid3-hd-inner{background-color:#ebf3fd;background-image:url(../images/default/grid/grid3-hrow-over.gif);}.sort-asc .x-grid3-sort-icon{background-image:url(../images/default/grid/sort_asc.gif);}.sort-desc .x-grid3-sort-icon{background-image:url(../images/default/grid/sort_desc.gif);}.x-grid3-cell-text,.x-grid3-hd-text{color:#000;}.x-grid3-split{background-image:url(../images/default/grid/grid-split.gif);}.x-grid3-hd-text{color:#15428b;}.x-dd-drag-proxy .x-grid3-hd-inner{background-color:#ebf3fd;background-image:url(../images/default/grid/grid3-hrow-over.gif);border-color:#aaccf6;}.col-move-top{background-image:url(../images/default/grid/col-move-top.gif);}.col-move-bottom{background-image:url(../images/default/grid/col-move-bottom.gif);}td.grid-hd-group-cell{background:url(../images/default/grid/grid3-hrow.gif) repeat-x bottom;}.x-grid3-row-selected{background-color:#dfe8f6!important;background-image:none;border-color:#a3bae9;}.x-grid3-cell-selected{background-color:#b8cfee!important;color:#000;}.x-grid3-cell-selected span{color:#000!important;}.x-grid3-cell-selected .x-grid3-cell-text{color:#000;}.x-grid3-locked td.x-grid3-row-marker,.x-grid3-locked .x-grid3-row-selected td.x-grid3-row-marker{background-color:#ebeadb!important;background-image:url(../images/default/grid/grid-hrow.gif)!important;color:#000;border-top-color:#fff;border-right-color:#6fa0df!important;}.x-grid3-locked td.x-grid3-row-marker div,.x-grid3-locked .x-grid3-row-selected td.x-grid3-row-marker div{color:#15428b!important;}.x-grid3-dirty-cell{background-image:url(../images/default/grid/dirty.gif);}.x-grid3-topbar,.x-grid3-bottombar{font:normal 11px arial,tahoma,helvetica,sans-serif;}.x-grid3-bottombar .x-toolbar{border-top-color:#a9bfd3;}.x-props-grid .x-grid3-td-name .x-grid3-cell-inner{background-image:url(../images/default/grid/grid3-special-col-bg.gif)!important;color:#000!important;}.x-props-grid .x-grid3-body .x-grid3-td-name{background-color:#fff!important;border-right-color:#eee;}.xg-hmenu-sort-asc .x-menu-item-icon{background-image:url(../images/default/grid/hmenu-asc.gif);}.xg-hmenu-sort-desc .x-menu-item-icon{background-image:url(../images/default/grid/hmenu-desc.gif);}.xg-hmenu-lock .x-menu-item-icon{background-image:url(../images/default/grid/hmenu-lock.gif);}.xg-hmenu-unlock .x-menu-item-icon{background-image:url(../images/default/grid/hmenu-unlock.gif);}.x-grid3-hd-btn{background-color:#c3daf9;background-image:url(../images/default/grid/grid3-hd-btn.gif);}.x-grid3-body .x-grid3-td-expander{background-image:url(../images/default/grid/grid3-special-col-bg.gif);}.x-grid3-row-expander{background-image:url(../images/default/grid/row-expand-sprite.gif);}.x-grid3-body .x-grid3-td-checker{background-image:url(../images/default/grid/grid3-special-col-bg.gif);}.x-grid3-row-checker,.x-grid3-hd-checker{background-image:url(../images/default/grid/row-check-sprite.gif);}.x-grid3-body .x-grid3-td-numberer{background-image:url(../images/default/grid/grid3-special-col-bg.gif);}.x-grid3-body .x-grid3-td-numberer .x-grid3-cell-inner{color:#444;}.x-grid3-body .x-grid3-td-row-icon{background-image:url(../images/default/grid/grid3-special-col-bg.gif);}.x-grid3-body .x-grid3-row-selected .x-grid3-td-numberer,.x-grid3-body .x-grid3-row-selected .x-grid3-td-checker,.x-grid3-body .x-grid3-row-selected .x-grid3-td-expander{background-image:url(../images/default/grid/grid3-special-col-sel-bg.gif);}.x-grid3-check-col{background-image:url(../images/default/menu/unchecked.gif);}.x-grid3-check-col-on{background-image:url(../images/default/menu/checked.gif);}.x-grid-group,.x-grid-group-body,.x-grid-group-hd{zoom:1;}.x-grid-group-hd{border-bottom-color:#99bbe8;}.x-grid-group-hd div.x-grid-group-title{background-image:url(../images/default/grid/group-collapse.gif);color:#3764a0;font:bold 11px tahoma,arial,helvetica,sans-serif;}.x-grid-group-collapsed .x-grid-group-hd div.x-grid-group-title{background-image:url(../images/default/grid/group-expand.gif);}.x-group-by-icon{background-image:url(../images/default/grid/group-by.gif);}.x-cols-icon{background-image:url(../images/default/grid/columns.gif);}.x-show-groups-icon{background-image:url(../images/default/grid/group-by.gif);}.x-grid-empty{color:gray;font:normal 11px tahoma,arial,helvetica,sans-serif;}.x-grid-with-col-lines .x-grid3-row td.x-grid3-cell{border-right-color:#ededed;}.x-grid-with-col-lines .x-grid3-row-selected{border-top-color:#a3bae9;}.x-pivotgrid .x-grid3-header-offset table td{background:url(../images/default/grid/grid3-hrow.gif) repeat-x 50% 100%;border-left:1px solid;border-right:1px solid;border-left-color:#EEE;border-right-color:#d0d0d0;}.x-pivotgrid .x-grid3-row-headers{background-color:#f9f9f9;}.x-pivotgrid .x-grid3-row-headers table td{background:#EEE url(../images/default/grid/grid3-rowheader.gif) repeat-x left top;border-left:1px solid;border-right:1px solid;border-left-color:#EEE;border-right-color:#d0d0d0;border-bottom:1px solid;border-bottom-color:#d0d0d0;height:18px;}.x-dd-drag-ghost{color:#000;font:normal 11px arial,helvetica,sans-serif;border-color:#ddd #bbb #bbb #ddd;background-color:#fff;}.x-dd-drop-nodrop .x-dd-drop-icon{background-image:url(../images/default/dd/drop-no.gif);}.x-dd-drop-ok .x-dd-drop-icon{background-image:url(../images/default/dd/drop-yes.gif);}.x-dd-drop-ok-add .x-dd-drop-icon{background-image:url(../images/default/dd/drop-add.gif);}.x-view-selector{background-color:#c3daf9;border-color:#39b;}.x-tree-node-expanded .x-tree-node-icon{background-image:url(../images/default/tree/folder-open.gif);}.x-tree-node-leaf .x-tree-node-icon{background-image:url(../images/default/tree/leaf.gif);}.x-tree-node-collapsed .x-tree-node-icon{background-image:url(../images/default/tree/folder.gif);}.x-tree-node-loading .x-tree-node-icon{background-image:url(../images/default/tree/loading.gif)!important;}.x-tree-node .x-tree-node-inline-icon{background-image:none;}.x-tree-node-loading a span{font-style:italic;color:#444;}.x-tree-lines .x-tree-elbow{background-image:url(../images/default/tree/elbow.gif);}.x-tree-lines .x-tree-elbow-plus{background-image:url(../images/default/tree/elbow-plus.gif);}.x-tree-lines .x-tree-elbow-minus{background-image:url(../images/default/tree/elbow-minus.gif);}.x-tree-lines .x-tree-elbow-end{background-image:url(../images/default/tree/elbow-end.gif);}.x-tree-lines .x-tree-elbow-end-plus{background-image:url(../images/default/tree/elbow-end-plus.gif);}.x-tree-lines .x-tree-elbow-end-minus{background-image:url(../images/default/tree/elbow-end-minus.gif);}.x-tree-lines .x-tree-elbow-line{background-image:url(../images/default/tree/elbow-line.gif);}.x-tree-no-lines .x-tree-elbow-plus{background-image:url(../images/default/tree/elbow-plus-nl.gif);}.x-tree-no-lines .x-tree-elbow-minus{background-image:url(../images/default/tree/elbow-minus-nl.gif);}.x-tree-no-lines .x-tree-elbow-end-plus{background-image:url(../images/default/tree/elbow-end-plus-nl.gif);}.x-tree-no-lines .x-tree-elbow-end-minus{background-image:url(../images/default/tree/elbow-end-minus-nl.gif);}.x-tree-arrows .x-tree-elbow-plus{background-image:url(../images/default/tree/arrows.gif);}.x-tree-arrows .x-tree-elbow-minus{background-image:url(../images/default/tree/arrows.gif);}.x-tree-arrows .x-tree-elbow-end-plus{background-image:url(../images/default/tree/arrows.gif);}.x-tree-arrows .x-tree-elbow-end-minus{background-image:url(../images/default/tree/arrows.gif);}.x-tree-node{color:#000;font:normal 11px arial,tahoma,helvetica,sans-serif;}.x-tree-node a,.x-dd-drag-ghost a{color:#000;}.x-tree-node a span,.x-dd-drag-ghost a span{color:#000;}.x-tree-node .x-tree-node-disabled a span{color:gray!important;}.x-tree-node div.x-tree-drag-insert-below{border-bottom-color:#36c;}.x-tree-node div.x-tree-drag-insert-above{border-top-color:#36c;}.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-below a{border-bottom-color:#36c;}.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-above a{border-top-color:#36c;}.x-tree-node .x-tree-drag-append a span{background-color:#ddd;border-color:gray;}.x-tree-node .x-tree-node-over{background-color:#eee;}.x-tree-node .x-tree-selected{background-color:#d9e8fb;}.x-tree-drop-ok-append .x-dd-drop-icon{background-image:url(../images/default/tree/drop-add.gif);}.x-tree-drop-ok-above .x-dd-drop-icon{background-image:url(../images/default/tree/drop-over.gif);}.x-tree-drop-ok-below .x-dd-drop-icon{background-image:url(../images/default/tree/drop-under.gif);}.x-tree-drop-ok-between .x-dd-drop-icon{background-image:url(../images/default/tree/drop-between.gif);}.x-date-picker{border-color:#1b376c;background-color:#fff;}.x-date-middle,.x-date-left,.x-date-right{background-image:url(../images/default/shared/hd-sprite.gif);color:#fff;font:bold 11px "sans serif",tahoma,verdana,helvetica;}.x-date-middle .x-btn .x-btn-text{color:#fff;}.x-date-middle .x-btn-mc em.x-btn-arrow{background-image:url(../images/default/toolbar/btn-arrow-light.gif);}.x-date-right a{background-image:url(../images/default/shared/right-btn.gif);}.x-date-left a{background-image:url(../images/default/shared/left-btn.gif);}.x-date-inner th{background-color:#dfecfb;background-image:url(../images/default/shared/glass-bg.gif);border-bottom-color:#a3bad9;font:normal 10px arial,helvetica,tahoma,sans-serif;color:#233d6d;}.x-date-inner td{border-color:#fff;}.x-date-inner a{font:normal 11px arial,helvetica,tahoma,sans-serif;color:#000;}.x-date-inner .x-date-active{color:#000;}.x-date-inner .x-date-selected a{background-color:#dfecfb;background-image:url(../images/default/shared/glass-bg.gif);border-color:#8db2e3;}.x-date-inner .x-date-today a{border-color:darkred;}.x-date-inner .x-date-selected span{font-weight:bold;}.x-date-inner .x-date-prevday a,.x-date-inner .x-date-nextday a{color:#aaa;}.x-date-bottom{border-top-color:#a3bad9;background-color:#dfecfb;background-image:url(../images/default/shared/glass-bg.gif);}.x-date-inner a:hover,.x-date-inner .x-date-disabled a:hover{color:#000;background-color:#ddecfe;}.x-date-inner .x-date-disabled a{background-color:#eee;color:#bbb;}.x-date-mmenu{background-color:#eee!important;}.x-date-mmenu .x-menu-item{font-size:10px;color:#000;}.x-date-mp{background-color:#fff;}.x-date-mp td{font:normal 11px arial,helvetica,tahoma,sans-serif;}.x-date-mp-btns button{background-color:#083772;color:#fff;border-color:#36c #005 #005 #36c;font:normal 11px arial,helvetica,tahoma,sans-serif;}.x-date-mp-btns{background-color:#dfecfb;background-image:url(../images/default/shared/glass-bg.gif);}.x-date-mp-btns td{border-top-color:#c5d2df;}td.x-date-mp-month a,td.x-date-mp-year a{color:#15428b;}td.x-date-mp-month a:hover,td.x-date-mp-year a:hover{color:#15428b;background-color:#ddecfe;}td.x-date-mp-sel a{background-color:#dfecfb;background-image:url(../images/default/shared/glass-bg.gif);border-color:#8db2e3;}.x-date-mp-ybtn a{background-image:url(../images/default/panel/tool-sprites.gif);}td.x-date-mp-sep{border-right-color:#c5d2df;}.x-tip .x-tip-close{background-image:url(../images/default/qtip/close.gif);}.x-tip .x-tip-tc,.x-tip .x-tip-tl,.x-tip .x-tip-tr,.x-tip .x-tip-bc,.x-tip .x-tip-bl,.x-tip .x-tip-br,.x-tip .x-tip-ml,.x-tip .x-tip-mr{background-image:url(../images/default/qtip/tip-sprite.gif);}.x-tip .x-tip-mc{font:normal 11px tahoma,arial,helvetica,sans-serif;}.x-tip .x-tip-ml{background-color:#fff;}.x-tip .x-tip-header-text{font:bold 11px tahoma,arial,helvetica,sans-serif;color:#444;}.x-tip .x-tip-body{font:normal 11px tahoma,arial,helvetica,sans-serif;color:#444;}.x-form-invalid-tip .x-tip-tc,.x-form-invalid-tip .x-tip-tl,.x-form-invalid-tip .x-tip-tr,.x-form-invalid-tip .x-tip-bc,.x-form-invalid-tip .x-tip-bl,.x-form-invalid-tip .x-tip-br,.x-form-invalid-tip .x-tip-ml,.x-form-invalid-tip .x-tip-mr{background-image:url(../images/default/form/error-tip-corners.gif);}.x-form-invalid-tip .x-tip-body{background-image:url(../images/default/form/exclamation.gif);}.x-tip-anchor{background-image:url(../images/default/qtip/tip-anchor-sprite.gif);}.x-menu{background-color:#f0f0f0;background-image:url(../images/default/menu/menu.gif);}.x-menu-floating{border-color:#718bb7;}.x-menu-nosep{background-image:none;}.x-menu-list-item{font:normal 11px arial,tahoma,sans-serif;}.x-menu-item-arrow{background-image:url(../images/default/menu/menu-parent.gif);}.x-menu-sep{background-color:#e0e0e0;border-bottom-color:#fff;}a.x-menu-item{color:#222;}.x-menu-item-active{background-image:url(../images/default/menu/item-over.gif);background-color:#dbecf4;border-color:#aaccf6;}.x-menu-item-active a.x-menu-item{border-color:#aaccf6;}.x-menu-check-item .x-menu-item-icon{background-image:url(../images/default/menu/unchecked.gif);}.x-menu-item-checked .x-menu-item-icon{background-image:url(../images/default/menu/checked.gif);}.x-menu-item-checked .x-menu-group-item .x-menu-item-icon{background-image:url(../images/default/menu/group-checked.gif);}.x-menu-group-item .x-menu-item-icon{background-image:none;}.x-menu-plain{background-color:#f0f0f0!important;background-image:none;}.x-date-menu,.x-color-menu{background-color:#fff!important;}.x-menu .x-date-picker{border-color:#a3bad9;}.x-cycle-menu .x-menu-item-checked{border-color:#a3bae9!important;background-color:#def8f6;}.x-menu-scroller-top{background-image:url(../images/default/layout/mini-top.gif);}.x-menu-scroller-bottom{background-image:url(../images/default/layout/mini-bottom.gif);}.x-box-tl{background-image:url(../images/default/box/corners.gif);}.x-box-tc{background-image:url(../images/default/box/tb.gif);}.x-box-tr{background-image:url(../images/default/box/corners.gif);}.x-box-ml{background-image:url(../images/default/box/l.gif);}.x-box-mc{background-color:#eee;background-image:url(../images/default/box/tb.gif);font-family:"Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;color:#393939;font-size:12px;}.x-box-mc h3{font-size:14px;font-weight:bold;}.x-box-mr{background-image:url(../images/default/box/r.gif);}.x-box-bl{background-image:url(../images/default/box/corners.gif);}.x-box-bc{background-image:url(../images/default/box/tb.gif);}.x-box-br{background-image:url(../images/default/box/corners.gif);}.x-box-blue .x-box-bl,.x-box-blue .x-box-br,.x-box-blue .x-box-tl,.x-box-blue .x-box-tr{background-image:url(../images/default/box/corners-blue.gif);}.x-box-blue .x-box-bc,.x-box-blue .x-box-mc,.x-box-blue .x-box-tc{background-image:url(../images/default/box/tb-blue.gif);}.x-box-blue .x-box-mc{background-color:#c3daf9;}.x-box-blue .x-box-mc h3{color:#17385b;}.x-box-blue .x-box-ml{background-image:url(../images/default/box/l-blue.gif);}.x-box-blue .x-box-mr{background-image:url(../images/default/box/r-blue.gif);}.x-combo-list{border-color:#98c0f4;background-color:#ddecfe;font:normal 12px tahoma,arial,helvetica,sans-serif;}.x-combo-list-inner{background-color:#fff;}.x-combo-list-hd{font:bold 11px tahoma,arial,helvetica,sans-serif;color:#15428b;background-image:url(../images/default/layout/panel-title-light-bg.gif);border-bottom-color:#98c0f4;}.x-resizable-pinned .x-combo-list-inner{border-bottom-color:#98c0f4;}.x-combo-list-item{border-color:#fff;}.x-combo-list .x-combo-selected{border-color:#a3bae9!important;background-color:#dfe8f6;}.x-combo-list .x-toolbar{border-top-color:#98c0f4;}.x-combo-list-small{font:normal 11px tahoma,arial,helvetica,sans-serif;}.x-panel{border-color:#99bbe8;}.x-panel-header{color:#15428b;font-weight:bold;font-size:11px;font-family:tahoma,arial,verdana,sans-serif;border-color:#99bbe8;background-image:url(../images/default/panel/white-top-bottom.gif);}.x-panel-body{border-color:#99bbe8;background-color:#fff;}.x-panel-bbar .x-toolbar,.x-panel-tbar .x-toolbar{border-color:#99bbe8;}.x-panel-tbar-noheader .x-toolbar,.x-panel-mc .x-panel-tbar .x-toolbar{border-top-color:#99bbe8;}.x-panel-body-noheader,.x-panel-mc .x-panel-body{border-top-color:#99bbe8;}.x-panel-tl .x-panel-header{color:#15428b;font:bold 11px tahoma,arial,verdana,sans-serif;}.x-panel-tc{background-image:url(../images/default/panel/top-bottom.gif);}.x-panel-tl,.x-panel-tr,.x-panel-bl,.x-panel-br{background-image:url(../images/default/panel/corners-sprite.gif);border-bottom-color:#99bbe8;}.x-panel-bc{background-image:url(../images/default/panel/top-bottom.gif);}.x-panel-mc{font:normal 11px tahoma,arial,helvetica,sans-serif;background-color:#dfe8f6;}.x-panel-ml{background-color:#fff;background-image:url(../images/default/panel/left-right.gif);}.x-panel-mr{background-image:url(../images/default/panel/left-right.gif);}.x-tool{background-image:url(../images/default/panel/tool-sprites.gif);}.x-panel-ghost{background-color:#cbddf3;}.x-panel-ghost ul{border-color:#99bbe8;}.x-panel-dd-spacer{border-color:#99bbe8;}.x-panel-fbar td,.x-panel-fbar span,.x-panel-fbar input,.x-panel-fbar div,.x-panel-fbar select,.x-panel-fbar label{font:normal 11px arial,tahoma,helvetica,sans-serif;}.x-window-proxy{background-color:#c7dffc;border-color:#99bbe8;}.x-window-tl .x-window-header{color:#15428b;font:bold 11px tahoma,arial,verdana,sans-serif;}.x-window-tc{background-image:url(../images/default/window/top-bottom.png);}.x-window-tl{background-image:url(../images/default/window/left-corners.png);}.x-window-tr{background-image:url(../images/default/window/right-corners.png);}.x-window-bc{background-image:url(../images/default/window/top-bottom.png);}.x-window-bl{background-image:url(../images/default/window/left-corners.png);}.x-window-br{background-image:url(../images/default/window/right-corners.png);}.x-window-mc{border-color:#99bbe8;font:normal 11px tahoma,arial,helvetica,sans-serif;background-color:#dfe8f6;}.x-window-ml{background-image:url(../images/default/window/left-right.png);}.x-window-mr{background-image:url(../images/default/window/left-right.png);}.x-window-maximized .x-window-tc{background-color:#fff;}.x-window-bbar .x-toolbar{border-top-color:#99bbe8;}.x-panel-ghost .x-window-tl{border-bottom-color:#99bbe8;}.x-panel-collapsed .x-window-tl{border-bottom-color:#84a0c4;}.x-dlg-mask{background-color:#ccc;}.x-window-plain .x-window-mc{background-color:#ccd9e8;border-color:#a3bae9 #dfe8f6 #dfe8f6 #a3bae9;}.x-window-plain .x-window-body{border-color:#dfe8f6 #a3bae9 #a3bae9 #dfe8f6;}body.x-body-masked .x-window-plain .x-window-mc{background-color:#ccd9e8;}.x-html-editor-wrap{border-color:#a9bfd3;background-color:#fff;}.x-html-editor-tb .x-btn-text{background-image:url(../images/default/editor/tb-sprite.gif);}.x-panel-noborder .x-panel-header-noborder{border-bottom-color:#99bbe8;}.x-panel-noborder .x-panel-tbar-noborder .x-toolbar{border-bottom-color:#99bbe8;}.x-panel-noborder .x-panel-bbar-noborder .x-toolbar{border-top-color:#99bbe8;}.x-tab-panel-bbar-noborder .x-toolbar{border-top-color:#99bbe8;}.x-tab-panel-tbar-noborder .x-toolbar{border-bottom-color:#99bbe8;}.x-border-layout-ct{background-color:#dfe8f6;}.x-accordion-hd{color:#222;font-weight:normal;background-image:url(../images/default/panel/light-hd.gif);}.x-layout-collapsed{background-color:#d2e0f2;border-color:#98c0f4;}.x-layout-collapsed-over{background-color:#d9e8fb;}.x-layout-split-west .x-layout-mini{background-image:url(../images/default/layout/mini-left.gif);}.x-layout-split-east .x-layout-mini{background-image:url(../images/default/layout/mini-right.gif);}.x-layout-split-north .x-layout-mini{background-image:url(../images/default/layout/mini-top.gif);}.x-layout-split-south .x-layout-mini{background-image:url(../images/default/layout/mini-bottom.gif);}.x-layout-cmini-west .x-layout-mini{background-image:url(../images/default/layout/mini-right.gif);}.x-layout-cmini-east .x-layout-mini{background-image:url(../images/default/layout/mini-left.gif);}.x-layout-cmini-north .x-layout-mini{background-image:url(../images/default/layout/mini-bottom.gif);}.x-layout-cmini-south .x-layout-mini{background-image:url(../images/default/layout/mini-top.gif);}.x-progress-wrap{border-color:#6593cf;}.x-progress-inner{background-color:#e0e8f3;background-image:url(../images/default/qtip/bg.gif);}.x-progress-bar{background-color:#9cbfee;background-image:url(../images/default/progress/progress-bg.gif);border-top-color:#d1e4fd;border-bottom-color:#7fa9e4;border-right-color:#7fa9e4;}.x-progress-text{font-size:11px;font-weight:bold;color:#fff;}.x-progress-text-back{color:#396095;}.x-list-header{background-color:#f9f9f9;background-image:url(../images/default/grid/grid3-hrow.gif);}.x-list-header-inner div em{border-left-color:#ddd;font:normal 11px arial,tahoma,helvetica,sans-serif;}.x-list-body dt em{font:normal 11px arial,tahoma,helvetica,sans-serif;}.x-list-over{background-color:#eee;}.x-list-selected{background-color:#dfe8f6;}.x-list-resizer{border-left-color:#555;border-right-color:#555;}.x-list-header-inner em.sort-asc,.x-list-header-inner em.sort-desc{background-image:url(../images/default/grid/sort-hd.gif);border-color:#99bbe8;}.x-slider-horz,.x-slider-horz .x-slider-end,.x-slider-horz .x-slider-inner{background-image:url(../images/default/slider/slider-bg.png);}.x-slider-horz .x-slider-thumb{background-image:url(../images/default/slider/slider-thumb.png);}.x-slider-vert,.x-slider-vert .x-slider-end,.x-slider-vert .x-slider-inner{background-image:url(../images/default/slider/slider-v-bg.png);}.x-slider-vert .x-slider-thumb{background-image:url(../images/default/slider/slider-v-thumb.png);}.x-window-dlg .ext-mb-text,.x-window-dlg .x-window-header-text{font-size:12px;}.x-window-dlg .ext-mb-textarea{font:normal 12px tahoma,arial,helvetica,sans-serif;}.x-window-dlg .x-msg-box-wait{background-image:url(../images/default/grid/loading.gif);}.x-window-dlg .ext-mb-info{background-image:url(../images/default/window/icon-info.gif);}.x-window-dlg .ext-mb-warning{background-image:url(../images/default/window/icon-warning.gif);}.x-window-dlg .ext-mb-question{background-image:url(../images/default/window/icon-question.gif);}.x-window-dlg .ext-mb-error{background-image:url(../images/default/window/icon-error.gif);}.ext-mac.ext-webkit .x-form-check-wrap{padding-left:1px;}.ext-strict .ext-webkit .x-small-editor .x-form-text{padding-top:1px;}.x-window-body{overflow:hidden;position:relative;} diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/css/style.css b/salt/idh/skins/http/opencanary/nasLogin/static/css/style.css new file mode 100644 index 000000000..b6f74eadb --- /dev/null +++ b/salt/idh/skins/http/opencanary/nasLogin/static/css/style.css @@ -0,0 +1 @@ +.syno-backup-repo-cloud-azure_blob{background-image:url("/webman/3rdparty/addon-azure_blob/images/icon.png") !important}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-backup-repo-cloud-azure_blob{background-image:url("/webman/3rdparty/addon-azure_blob/images/icon@2x.png") !important;background-size:32px 32px !important}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-backup-repo-cloud-azure_blob{background-image:url("/webman/3rdparty/addon-azure_blob/images/icon@2x.png") !important;background-size:32px 32px !important;outline:1px red dashed}}.syno-backup-task-cloud-azure_blob{background-image:url("/webman/3rdparty/addon-azure_blob/images/icon.png") !important}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-backup-task-cloud-azure_blob{background-image:url("/webman/3rdparty/addon-azure_blob/images/icon@2x.png") !important;background-size:32px 32px !important}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-backup-task-cloud-azure_blob{background-image:url("/webman/3rdparty/addon-azure_blob/images/icon@2x.png") !important;background-size:32px 32px !important;outline:1px red dashed}} diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/css/ux-all.css b/salt/idh/skins/http/opencanary/nasLogin/static/css/ux-all.css new file mode 100644 index 000000000..efd7a572a --- /dev/null +++ b/salt/idh/skins/http/opencanary/nasLogin/static/css/ux-all.css @@ -0,0 +1,11 @@ +.syno-ux-gridpanel div,.syno-ux-editorgridpanel div,.syno-ux-grid-hd-menu li.x-menu-list-item span,.syno-ux-editorgrid-hd-menu li.x-menu-list-item span,.syno-ux-groupcheck-menu li.x-menu-list-item span,.syno-ux-searchfield-menu li.x-menu-list-item span,.syno-ux-menu li.x-menu-list-item span,.syno-ux-schedule-menu li.x-menu-list-item span,.syno-ux-button-menu li.x-menu-list-item span,.syno-ux-textfield,.syno-ux-numberfield,.x-form-item .x-form-item-label.syno-ux-item-label,.syno-ux-triggerfield,.syno-ux-combobox,.syno-ux-colorfield,.syno-ux-schedulefield,.syno-ux-datefield,.syno-ux-timefield,.syno-ux-superboxselect,.syno-ux-checkbox-label,.syno-ux-displayfield.x-form-display-field,.syno-ux-button-grey.x-btn button,.syno-ux-button-grey.x-btn-over.x-btn button,.syno-ux-button-grey:hover.x-btn button,.syno-ux-button-grey.x-btn-click.x-btn button,.syno-ux-button-grey:active.x-btn button,.syno-ux-button-default.x-btn button,.syno-ux-button-default.x-btn-over.x-btn button,.syno-ux-button-default:hover.x-btn button,.syno-ux-button-default.x-btn-click.x-btn button,.syno-ux-button-default:active.x-btn button,.syno-ux-button.syno-ux-statebuttongroup-right.x-btn button,.syno-ux-button.syno-ux-statebuttongroup-left.x-btn button,.syno-ux-button.syno-ux-statebuttongroup-middle.x-btn button,.syno-ux-modulelist .x-tree-node-leaf a span,.syno-ux-modulelist .syno-textfilter .x-form-field-wrap .syno-textfilter-text,.syno-ux-datefield-menu table.x-date-inner tbody tr td span,.syno-ux-datefield-menu .x-date-bottom .x-btn-noicon .x-btn-small button,.syno-ux-datefield-menu .x-date-bottom .x-btn-over.x-btn-noicon .x-btn-small button,.syno-ux-datefield-menu .x-date-bottom .x-btn-click.x-btn-noicon .x-btn-small button,.syno-ux-datefield-menu .x-date-mp tr td a,.syno-ux-datefield-menu .x-date-mp-btns button.x-date-mp-cancel,.syno-ux-datefield-menu .x-date-mp-btns button.x-date-mp-cancel:hover,.syno-ux-textfilter .x-form-field-wrap .syno-ux-textfilter-text.x-form-text,.syno-ux-tab-panel .x-tab-strip-top li .x-tab-strip-text,.syno-ux-expandable-listview .item-summary .item-title,.syno-ux-treepanel .x-tree-node a span,.syno-ux-superboxselect-item,.syno-ux-combobox-list .x-combo-list-item,.syno-ux-textarea{color:#505a64}.x-item-disabled.x-form-text.syno-ux-textfield,.x-item-disabled.x-form-text.syno-ux-numberfield,.x-item-disabled .x-form-text.syno-ux-triggerfield,.x-item-disabled .x-form-text.syno-ux-combobox,.x-item-disabled .x-form-text.syno-ux-colorfield,.x-item-disabled .x-form-text.syno-ux-schedulefield,.x-item-disabled .x-form-text.syno-ux-datefield,.x-item-disabled .x-form-text.syno-ux-timefield,.x-item-disabled .x-form-text.syno-ux-superboxselect,.syno-ux-displayfield.x-form-display-field.x-item-disabled,.syno-ux-modulelist .syno-textfilter .x-form-field-wrap .syno-textfilter-text.x-form-empty-field,.syno-ux-textfilter .x-form-field-wrap .syno-ux-textfilter-text.x-form-text.x-form-empty-field,.syno-ux-textfilter .x-form-field-wrap.x-item-disabled,.syno-ux-superboxselect-item.x-item-disabled,.syno-ux-datefield-menu table.x-date-inner tbody tr td.x-date-disabled span,.syno-ux-datefield-menu table.x-date-inner tbody tr td.x-date-prevday span,.syno-ux-datefield-menu table.x-date-inner tbody tr td.x-date-nextday span,.syno-ux-textarea.x-item-disabled.x-form-field{color:#96a0aa}.syno-ux-grid-hd-menu li.x-menu-list-item.x-item-disabled span,.syno-ux-editorgrid-hd-menu li.x-menu-list-item.x-item-disabled span,.syno-ux-groupcheck-menu li.x-menu-list-item.x-item-disabled span,.syno-ux-searchfield-menu li.x-menu-list-item.x-item-disabled span,.syno-ux-menu li.x-menu-list-item.x-item-disabled span,.syno-ux-schedule-menu li.x-menu-list-item.x-item-disabled span,.syno-ux-button-menu li.x-menu-list-item.x-item-disabled span,.syno-ux-cb-disabled.syno-ux-checkbox-label,.syno-ux-button-grey.x-item-disabled.x-btn button,.syno-ux-button-default.x-item-disabled.x-btn button,.syno-ux-button.syno-ux-statebuttongroup-right.x-item-disabled.x-btn button,.syno-ux-button.syno-ux-statebuttongroup-left.x-item-disabled.x-btn button,.syno-ux-button.syno-ux-statebuttongroup-middle.x-item-disabled.x-btn button,.syno-ux-modulelist .x-tree-node-leaf.x-tree-node-disabled a span,.syno-ux-tab-panel .x-tab-strip-top li.x-item-disabled .x-tab-strip-text{color:#96a0aa !important}.syno-ux-displayfield.x-form-display-field .syno-ux-note{color:#00a66e}.x-statusbar .syno-ux-statusbar-success{color:#1ca600}.x-statusbar .syno-ux-statusbar-error{color:#fa4b4b}.syno-ux-grid-mask-info,.x-panel .ext-el-mask-msg.syno-ux-mask-info,.x-panel .ext-el-mask-msg.syno-ux-grid-mask-info{margin:24px;padding:10px 20px 10px 80px;max-width:400px;min-height:48px;border:1px solid #BEC8D2;border-radius:6px;box-shadow:0px 1px 4px rgba(0,0,0,0.25);background-image:url("./images/Components/icon_information.png");background-position:20px 10px;background-repeat:no-repeat;cursor:default}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-grid-mask-info,.synohdpack .x-panel .ext-el-mask-msg.syno-ux-mask-info,.x-panel .synohdpack .ext-el-mask-msg.syno-ux-mask-info,.synohdpack .x-panel .ext-el-mask-msg.syno-ux-grid-mask-info,.x-panel .synohdpack .ext-el-mask-msg.syno-ux-grid-mask-info{background-image:url("../img/synohdpack/./images/Components/icon_information.png");background-size:48px 48px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-grid-mask-info,.synohdpackdebug .x-panel .ext-el-mask-msg.syno-ux-mask-info,.x-panel .synohdpackdebug .ext-el-mask-msg.syno-ux-mask-info,.synohdpackdebug .x-panel .ext-el-mask-msg.syno-ux-grid-mask-info,.x-panel .synohdpackdebug .ext-el-mask-msg.syno-ux-grid-mask-info{background-image:url("../img/synohdpack/./images/Components/icon_information.png");background-size:48px 48px;outline:1px green dashed}}.syno-ux-grid-mask-info div,.x-panel .ext-el-mask-msg.syno-ux-mask-info div,.x-panel .ext-el-mask-msg.syno-ux-grid-mask-info div{padding:0px;height:48px;display:table-cell;vertical-align:middle;word-wrap:break-word;cursor:default;font-size:13px}.syno-ux-grid-mask-info div a,.x-panel .ext-el-mask-msg.syno-ux-mask-info div a,.x-panel .ext-el-mask-msg.syno-ux-grid-mask-info div a{color:#0086e5;font-weight:bold}.syno-ux-gridpanel div,.syno-ux-editorgridpanel div{font-size:12px}.syno-ux-gridpanel .x-panel-ml,.syno-ux-editorgridpanel .x-panel-ml,.syno-ux-gridpanel .x-panel-mr,.syno-ux-editorgridpanel .x-panel-mr{background-image:none;padding:0px}.syno-ux-gridpanel .x-panel-mc,.syno-ux-editorgridpanel .x-panel-mc{padding:0px}.syno-ux-gridpanel .x-panel-tl,.syno-ux-editorgridpanel .x-panel-tl{border:0px}.syno-ux-gridpanel .x-panel-header,.syno-ux-editorgridpanel .x-panel-header{border-bottom:0px dashed transparent !important;margin-bottom:0px !important}.syno-ux-gridpanel .x-panel-tbar .x-toolbar-layout-ct,.syno-ux-editorgridpanel .x-panel-tbar .x-toolbar-layout-ct,.syno-ux-gridpanel .x-panel-tbar-noheader .x-toolbar-layout-ct,.syno-ux-editorgridpanel .x-panel-tbar-noheader .x-toolbar-layout-ct,.syno-ux-gridpanel .x-panel-tbar-noborder .x-toolbar-layout-ct,.syno-ux-editorgridpanel .x-panel-tbar-noborder .x-toolbar-layout-ct{padding:0px 0px 8px 0px;padding-bottom:8px;background-image:none;background-color:transparent;border:0px}.x-grid-panel.syno-ux-gridpanel .x-panel-bwrap,.x-grid-panel.syno-ux-editorgridpanel .x-panel-bwrap{padding-bottom:12px}.x-grid-panel.syno-ux-gridpanel .x-panel-bwrap .x-panel-body,.x-grid-panel.syno-ux-editorgridpanel .x-panel-bwrap .x-panel-body{border:0px}.x-grid-panel.syno-ux-gridpanel .x-panel-bwrap .x-panel-body .x-grid3-scroller,.x-grid-panel.syno-ux-editorgridpanel .x-panel-bwrap .x-panel-body .x-grid3-scroller{padding-right:10px}.x-grid-panel.syno-ux-gridpanel .x-panel-bwrap .x-panel-body .x-grid3,.x-grid-panel.syno-ux-editorgridpanel .x-panel-bwrap .x-panel-body .x-grid3{background-color:transparent;border-top:solid 1px #D7E1EB}.syno-ux-gridpanel .x-grid3-header,.syno-ux-editorgridpanel .x-grid3-header{background-image:none;background-color:transparent;border-bottom:solid 1px #EBF0F5;padding-top:0px;height:26px}.syno-ux-gridpanel .x-grid3-hd,.syno-ux-editorgridpanel .x-grid3-hd{height:26px;border-left:0px;border-right:solid 1px #E1EBF5}.syno-ux-gridpanel .x-grid3-hd .x-grid3-hd-inner,.syno-ux-editorgridpanel .x-grid3-hd .x-grid3-hd-inner{height:26px;line-height:26px;color:#0086e5;background-color:transparent;padding:0 8px}.syno-ux-gridpanel .x-grid3-hd.x-grid3-hd-over .x-grid3-hd-inner,.syno-ux-editorgridpanel .x-grid3-hd.x-grid3-hd-over .x-grid3-hd-inner,.syno-ux-gridpanel .x-grid3-hd.x-grid3-hd-menu-open .x-grid3-hd-inner,.syno-ux-editorgridpanel .x-grid3-hd.x-grid3-hd-menu-open .x-grid3-hd-inner{background-image:none;background-color:transparent}.syno-ux-gridpanel .x-grid3-hd.x-grid3-hd-over .x-grid3-hd-inner .x-grid3-hd-btn,.syno-ux-editorgridpanel .x-grid3-hd.x-grid3-hd-over .x-grid3-hd-inner .x-grid3-hd-btn,.syno-ux-gridpanel .x-grid3-hd.x-grid3-hd-menu-open .x-grid3-hd-inner .x-grid3-hd-btn,.syno-ux-editorgridpanel .x-grid3-hd.x-grid3-hd-menu-open .x-grid3-hd-inner .x-grid3-hd-btn{background-color:transparent;background-image:url("images/Components/trigger.png");background-repeat:no-repeat;background-position:-26px 0px;width:26px;height:26px !important}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-gridpanel .x-grid3-hd.x-grid3-hd-over .x-grid3-hd-inner .x-grid3-hd-btn,.synohdpack .syno-ux-editorgridpanel .x-grid3-hd.x-grid3-hd-over .x-grid3-hd-inner .x-grid3-hd-btn,.synohdpack .syno-ux-gridpanel .x-grid3-hd.x-grid3-hd-menu-open .x-grid3-hd-inner .x-grid3-hd-btn,.synohdpack .syno-ux-editorgridpanel .x-grid3-hd.x-grid3-hd-menu-open .x-grid3-hd-inner .x-grid3-hd-btn{background-image:url("../img/synohdpack/images/Components/trigger.png");background-size:104px 28px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-gridpanel .x-grid3-hd.x-grid3-hd-over .x-grid3-hd-inner .x-grid3-hd-btn,.synohdpackdebug .syno-ux-editorgridpanel .x-grid3-hd.x-grid3-hd-over .x-grid3-hd-inner .x-grid3-hd-btn,.synohdpackdebug .syno-ux-gridpanel .x-grid3-hd.x-grid3-hd-menu-open .x-grid3-hd-inner .x-grid3-hd-btn,.synohdpackdebug .syno-ux-editorgridpanel .x-grid3-hd.x-grid3-hd-menu-open .x-grid3-hd-inner .x-grid3-hd-btn{background-image:url("../img/synohdpack/images/Components/trigger.png");background-size:104px 28px;outline:1px green dashed}}.syno-ux-gridpanel .x-grid3-hd.sort-desc .x-grid3-hd-inner,.syno-ux-editorgridpanel .x-grid3-hd.sort-desc .x-grid3-hd-inner,.syno-ux-gridpanel .x-grid3-hd.sort-asc .x-grid3-hd-inner,.syno-ux-editorgridpanel .x-grid3-hd.sort-asc .x-grid3-hd-inner{background-image:none;background-color:transparent}.syno-ux-gridpanel .x-grid3-hd.sort-desc .x-grid3-hd-inner .x-grid3-sort-icon,.syno-ux-editorgridpanel .x-grid3-hd.sort-desc .x-grid3-hd-inner .x-grid3-sort-icon,.syno-ux-gridpanel .x-grid3-hd.sort-asc .x-grid3-hd-inner .x-grid3-sort-icon,.syno-ux-editorgridpanel .x-grid3-hd.sort-asc .x-grid3-hd-inner .x-grid3-sort-icon{background-color:transparent;background-image:url("images/Components/bt_grid_dropdown.png");background-repeat:no-repeat;margin-left:4px;width:6px;height:26px;vertical-align:top}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-gridpanel .x-grid3-hd.sort-desc .x-grid3-hd-inner .x-grid3-sort-icon,.synohdpack .syno-ux-editorgridpanel .x-grid3-hd.sort-desc .x-grid3-hd-inner .x-grid3-sort-icon,.synohdpack .syno-ux-gridpanel .x-grid3-hd.sort-asc .x-grid3-hd-inner .x-grid3-sort-icon,.synohdpack .syno-ux-editorgridpanel .x-grid3-hd.sort-asc .x-grid3-hd-inner .x-grid3-sort-icon{background-image:url("../img/synohdpack/images/Components/bt_grid_dropdown.png");background-size:6px 168px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-gridpanel .x-grid3-hd.sort-desc .x-grid3-hd-inner .x-grid3-sort-icon,.synohdpackdebug .syno-ux-editorgridpanel .x-grid3-hd.sort-desc .x-grid3-hd-inner .x-grid3-sort-icon,.synohdpackdebug .syno-ux-gridpanel .x-grid3-hd.sort-asc .x-grid3-hd-inner .x-grid3-sort-icon,.synohdpackdebug .syno-ux-editorgridpanel .x-grid3-hd.sort-asc .x-grid3-hd-inner .x-grid3-sort-icon{background-image:url("../img/synohdpack/images/Components/bt_grid_dropdown.png");background-size:6px 168px;outline:1px green dashed}}.syno-ux-gridpanel .x-grid3-hd.sort-desc .x-grid3-hd-inner .x-grid3-sort-icon,.syno-ux-editorgridpanel .x-grid3-hd.sort-desc .x-grid3-hd-inner .x-grid3-sort-icon{background-position:0px 0px}.syno-ux-gridpanel .x-grid3-hd.sort-desc.x-grid3-hd-over .x-grid3-hd-inner .x-grid3-sort-icon,.syno-ux-editorgridpanel .x-grid3-hd.sort-desc.x-grid3-hd-over .x-grid3-hd-inner .x-grid3-sort-icon{background-position:0px -28px}.syno-ux-gridpanel .x-grid3-hd.sort-asc .x-grid3-hd-inner .x-grid3-sort-icon,.syno-ux-editorgridpanel .x-grid3-hd.sort-asc .x-grid3-hd-inner .x-grid3-sort-icon{background-position:0px -84px}.syno-ux-gridpanel .x-grid3-hd.sort-asc.x-grid3-hd-over .x-grid3-hd-inner .x-grid3-sort-icon,.syno-ux-editorgridpanel .x-grid3-hd.sort-asc.x-grid3-hd-over .x-grid3-hd-inner .x-grid3-sort-icon{background-position:0px -112px}.syno-ux-gridpanel .x-grid3-row,.syno-ux-editorgridpanel .x-grid3-row{background-color:transparent;border-bottom:1px solid #EBF0F5;border-width:0 0 1px 0;padding-top:0px}.syno-ux-gridpanel .x-grid3-row.x-grid3-row-over,.syno-ux-editorgridpanel .x-grid3-row.x-grid3-row-over{background-color:#f5faff;border-width:0 0 1px 0}.syno-ux-gridpanel .x-grid3-row.x-grid3-row-selected,.syno-ux-editorgridpanel .x-grid3-row.x-grid3-row-selected{background-color:#e6f5ff !important;border-width:0 0 1px 0}.syno-ux-gridpanel .x-grid3-row .x-grid3-cell,.syno-ux-editorgridpanel .x-grid3-row .x-grid3-cell{height:27px}.syno-ux-gridpanel .x-grid3-row .x-grid3-cell .x-grid3-cell-inner,.syno-ux-editorgridpanel .x-grid3-row .x-grid3-cell .x-grid3-cell-inner{line-height:27px;padding:0 0 0 8px}.syno-ux-gridpanel .x-grid-group .x-grid-group-body .x-grid3-cell-first .x-grid3-cell-inner,.syno-ux-editorgridpanel .x-grid-group .x-grid-group-body .x-grid3-cell-first .x-grid3-cell-inner{padding-left:28px}.syno-ux-gridpanel .x-grid-group .x-grid-group-hd,.syno-ux-editorgridpanel .x-grid-group .x-grid-group-hd{background-image:none;height:27px;border-bottom:1px solid #EBF0F5;padding-top:0px}.syno-ux-gridpanel .x-grid-group .x-grid-group-hd div.x-grid-group-title,.syno-ux-editorgridpanel .x-grid-group .x-grid-group-hd div.x-grid-group-title{background-image:url("./images/Components/category_expand.png");background-position:2px -72px;padding:0 0 0 28px;font-size:12px;color:#6B95B2;height:28px;line-height:28px}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-gridpanel .x-grid-group .x-grid-group-hd div.x-grid-group-title,.synohdpack .syno-ux-editorgridpanel .x-grid-group .x-grid-group-hd div.x-grid-group-title{background-image:url("../img/synohdpack/./images/Components/category_expand.png");background-size:24px 144px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-gridpanel .x-grid-group .x-grid-group-hd div.x-grid-group-title,.synohdpackdebug .syno-ux-editorgridpanel .x-grid-group .x-grid-group-hd div.x-grid-group-title{background-image:url("../img/synohdpack/./images/Components/category_expand.png");background-size:24px 144px;outline:1px green dashed}}.syno-ux-gridpanel .x-grid-group .syno-ux-grid-group-hd-over div.x-grid-group-title,.syno-ux-editorgridpanel .x-grid-group .syno-ux-grid-group-hd-over div.x-grid-group-title{color:#5C9DCC;background-position:2px -96px}.syno-ux-gridpanel .x-grid-group .syno-ux-grid-group-hd-click div.x-grid-group-title,.syno-ux-editorgridpanel .x-grid-group .syno-ux-grid-group-hd-click div.x-grid-group-title{color:#5383A6;background-position:2px -120px}.syno-ux-gridpanel .x-grid-group.x-grid-group-collapsed .x-grid-group-hd div.x-grid-group-title,.syno-ux-editorgridpanel .x-grid-group.x-grid-group-collapsed .x-grid-group-hd div.x-grid-group-title{background-image:url("./images/Components/category_expand.png");background-position:2px 0px}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-gridpanel .x-grid-group.x-grid-group-collapsed .x-grid-group-hd div.x-grid-group-title,.synohdpack .syno-ux-editorgridpanel .x-grid-group.x-grid-group-collapsed .x-grid-group-hd div.x-grid-group-title{background-image:url("../img/synohdpack/./images/Components/category_expand.png");background-size:24px 144px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-gridpanel .x-grid-group.x-grid-group-collapsed .x-grid-group-hd div.x-grid-group-title,.synohdpackdebug .syno-ux-editorgridpanel .x-grid-group.x-grid-group-collapsed .x-grid-group-hd div.x-grid-group-title{background-image:url("../img/synohdpack/./images/Components/category_expand.png");background-size:24px 144px;outline:1px green dashed}}.syno-ux-gridpanel .x-grid-group.x-grid-group-collapsed .syno-ux-grid-group-hd-over div.x-grid-group-title,.syno-ux-editorgridpanel .x-grid-group.x-grid-group-collapsed .syno-ux-grid-group-hd-over div.x-grid-group-title{background-position:2px -24px}.syno-ux-gridpanel .x-grid-group.x-grid-group-collapsed .syno-ux-grid-group-hd-click div.x-grid-group-title,.syno-ux-editorgridpanel .x-grid-group.x-grid-group-collapsed .syno-ux-grid-group-hd-click div.x-grid-group-title{background-position:2px -48px}.syno-ux-gridpanel .x-grid-group .x-grid-group-body.x-grid3-row-over,.syno-ux-editorgridpanel .x-grid-group .x-grid-group-body.x-grid3-row-over{border:none}.col-move-top{background-image:url("images/Components/col-move-bottom.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .col-move-top{background-image:url("../img/synohdpack/images/Components/col-move-bottom.png");background-size:9px 9px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .col-move-top{background-image:url("../img/synohdpack/images/Components/col-move-bottom.png");background-size:9px 9px;outline:1px green dashed}}.col-move-bottom{background-image:url("images/Components/col-move-bottom.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .col-move-bottom{background-image:url("../img/synohdpack/images/Components/col-move-bottom.png");background-size:9px 9px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .col-move-bottom{background-image:url("../img/synohdpack/images/Components/col-move-bottom.png");background-size:9px 9px;outline:1px green dashed}}.syno-ux-grid-hd-menu,.syno-ux-editorgrid-hd-menu,.syno-ux-groupcheck-menu,.syno-ux-searchfield-menu,.syno-ux-menu,.syno-ux-schedule-menu,.syno-ux-button-menu{background-image:none}.x-layer.syno-ux-grid-hd-menu,.x-layer.syno-ux-editorgrid-hd-menu,.x-layer.syno-ux-groupcheck-menu,.x-layer.syno-ux-searchfield-menu,.x-layer.syno-ux-menu,.x-layer.syno-ux-schedule-menu,.x-layer.syno-ux-button-menu{border-color:#C8D2DC;background-color:#FFFFFF;padding:4px;box-shadow:0 2px 4px rgba(0,0,0,0.5)}.syno-ux-grid-hd-menu ul,.syno-ux-editorgrid-hd-menu ul,.syno-ux-groupcheck-menu ul,.syno-ux-searchfield-menu ul,.syno-ux-menu ul,.syno-ux-schedule-menu ul,.syno-ux-button-menu ul{padding:0px}.syno-ux-grid-hd-menu .x-menu-sep,.syno-ux-editorgrid-hd-menu .x-menu-sep,.syno-ux-groupcheck-menu .x-menu-sep,.syno-ux-searchfield-menu .x-menu-sep,.syno-ux-menu .x-menu-sep,.syno-ux-schedule-menu .x-menu-sep,.syno-ux-button-menu .x-menu-sep{height:1px;background-color:#EBF0F5}.syno-ux-grid-hd-menu li.x-menu-list-item,.syno-ux-editorgrid-hd-menu li.x-menu-list-item,.syno-ux-groupcheck-menu li.x-menu-list-item,.syno-ux-searchfield-menu li.x-menu-list-item,.syno-ux-menu li.x-menu-list-item,.syno-ux-schedule-menu li.x-menu-list-item,.syno-ux-button-menu li.x-menu-list-item{background-image:none;background-color:#FFFFFF;border:none;padding:0px}.syno-ux-grid-hd-menu li.x-menu-list-item span,.syno-ux-editorgrid-hd-menu li.x-menu-list-item span,.syno-ux-groupcheck-menu li.x-menu-list-item span,.syno-ux-searchfield-menu li.x-menu-list-item span,.syno-ux-menu li.x-menu-list-item span,.syno-ux-schedule-menu li.x-menu-list-item span,.syno-ux-button-menu li.x-menu-list-item span{padding-left:4px}.syno-ux-grid-hd-menu li.x-menu-list-item a,.syno-ux-editorgrid-hd-menu li.x-menu-list-item a,.syno-ux-groupcheck-menu li.x-menu-list-item a,.syno-ux-searchfield-menu li.x-menu-list-item a,.syno-ux-menu li.x-menu-list-item a,.syno-ux-schedule-menu li.x-menu-list-item a,.syno-ux-button-menu li.x-menu-list-item a{line-height:28px;height:28px;padding-top:0px;padding-bottom:0px;border:0px;font-size:12px}.syno-ux-grid-hd-menu li.x-menu-list-item a.x-menu-item-arrow,.syno-ux-editorgrid-hd-menu li.x-menu-list-item a.x-menu-item-arrow,.syno-ux-groupcheck-menu li.x-menu-list-item a.x-menu-item-arrow,.syno-ux-searchfield-menu li.x-menu-list-item a.x-menu-item-arrow,.syno-ux-menu li.x-menu-list-item a.x-menu-item-arrow,.syno-ux-schedule-menu li.x-menu-list-item a.x-menu-item-arrow,.syno-ux-button-menu li.x-menu-list-item a.x-menu-item-arrow{background-image:url("./images/Components/dropdown_menu_parent.png");background-position:right 0px}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-grid-hd-menu li.x-menu-list-item a.x-menu-item-arrow,.synohdpack .syno-ux-editorgrid-hd-menu li.x-menu-list-item a.x-menu-item-arrow,.synohdpack .syno-ux-groupcheck-menu li.x-menu-list-item a.x-menu-item-arrow,.synohdpack .syno-ux-searchfield-menu li.x-menu-list-item a.x-menu-item-arrow,.synohdpack .syno-ux-menu li.x-menu-list-item a.x-menu-item-arrow,.synohdpack .syno-ux-schedule-menu li.x-menu-list-item a.x-menu-item-arrow,.synohdpack .syno-ux-button-menu li.x-menu-list-item a.x-menu-item-arrow{background-image:url("../img/synohdpack/./images/Components/dropdown_menu_parent.png");background-size:16px 56px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-grid-hd-menu li.x-menu-list-item a.x-menu-item-arrow,.synohdpackdebug .syno-ux-editorgrid-hd-menu li.x-menu-list-item a.x-menu-item-arrow,.synohdpackdebug .syno-ux-groupcheck-menu li.x-menu-list-item a.x-menu-item-arrow,.synohdpackdebug .syno-ux-searchfield-menu li.x-menu-list-item a.x-menu-item-arrow,.synohdpackdebug .syno-ux-menu li.x-menu-list-item a.x-menu-item-arrow,.synohdpackdebug .syno-ux-schedule-menu li.x-menu-list-item a.x-menu-item-arrow,.synohdpackdebug .syno-ux-button-menu li.x-menu-list-item a.x-menu-item-arrow{background-image:url("../img/synohdpack/./images/Components/dropdown_menu_parent.png");background-size:16px 56px;outline:1px green dashed}}.syno-ux-grid-hd-menu li.x-menu-list-item.x-menu-item-active,.syno-ux-editorgrid-hd-menu li.x-menu-list-item.x-menu-item-active,.syno-ux-groupcheck-menu li.x-menu-list-item.x-menu-item-active,.syno-ux-searchfield-menu li.x-menu-list-item.x-menu-item-active,.syno-ux-menu li.x-menu-list-item.x-menu-item-active,.syno-ux-schedule-menu li.x-menu-list-item.x-menu-item-active,.syno-ux-button-menu li.x-menu-list-item.x-menu-item-active{background-color:#0086e5}.syno-ux-grid-hd-menu li.x-menu-list-item.x-menu-item-active span,.syno-ux-editorgrid-hd-menu li.x-menu-list-item.x-menu-item-active span,.syno-ux-groupcheck-menu li.x-menu-list-item.x-menu-item-active span,.syno-ux-searchfield-menu li.x-menu-list-item.x-menu-item-active span,.syno-ux-menu li.x-menu-list-item.x-menu-item-active span,.syno-ux-schedule-menu li.x-menu-list-item.x-menu-item-active span,.syno-ux-button-menu li.x-menu-list-item.x-menu-item-active span{color:#FFFFFF}.syno-ux-grid-hd-menu li.x-menu-list-item.x-menu-item-active a.x-menu-item-arrow,.syno-ux-editorgrid-hd-menu li.x-menu-list-item.x-menu-item-active a.x-menu-item-arrow,.syno-ux-groupcheck-menu li.x-menu-list-item.x-menu-item-active a.x-menu-item-arrow,.syno-ux-searchfield-menu li.x-menu-list-item.x-menu-item-active a.x-menu-item-arrow,.syno-ux-menu li.x-menu-list-item.x-menu-item-active a.x-menu-item-arrow,.syno-ux-schedule-menu li.x-menu-list-item.x-menu-item-active a.x-menu-item-arrow,.syno-ux-button-menu li.x-menu-list-item.x-menu-item-active a.x-menu-item-arrow{background-position:right -28px}.syno-ux-grid-hd-menu li.x-menu-list-item .x-menu-check-item .x-menu-item-icon,.syno-ux-editorgrid-hd-menu li.x-menu-list-item .x-menu-check-item .x-menu-item-icon,.syno-ux-groupcheck-menu li.x-menu-list-item .x-menu-check-item .x-menu-item-icon,.syno-ux-searchfield-menu li.x-menu-list-item .x-menu-check-item .x-menu-item-icon,.syno-ux-menu li.x-menu-list-item .x-menu-check-item .x-menu-item-icon,.syno-ux-schedule-menu li.x-menu-list-item .x-menu-check-item .x-menu-item-icon,.syno-ux-button-menu li.x-menu-list-item .x-menu-check-item .x-menu-item-icon{background-image:url("../img/synohdpack/images/Components/checkbox.png");background-size:22px 198px;background-position:0px 0px;width:22px;height:22px}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-grid-hd-menu li.x-menu-list-item .x-menu-check-item .x-menu-item-icon,.synohdpack .syno-ux-editorgrid-hd-menu li.x-menu-list-item .x-menu-check-item .x-menu-item-icon,.synohdpack .syno-ux-groupcheck-menu li.x-menu-list-item .x-menu-check-item .x-menu-item-icon,.synohdpack .syno-ux-searchfield-menu li.x-menu-list-item .x-menu-check-item .x-menu-item-icon,.synohdpack .syno-ux-menu li.x-menu-list-item .x-menu-check-item .x-menu-item-icon,.synohdpack .syno-ux-schedule-menu li.x-menu-list-item .x-menu-check-item .x-menu-item-icon,.synohdpack .syno-ux-button-menu li.x-menu-list-item .x-menu-check-item .x-menu-item-icon{background-image:url("../img/synohdpack/images/Components/checkbox.png");background-size:22px 198px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-grid-hd-menu li.x-menu-list-item .x-menu-check-item .x-menu-item-icon,.synohdpackdebug .syno-ux-editorgrid-hd-menu li.x-menu-list-item .x-menu-check-item .x-menu-item-icon,.synohdpackdebug .syno-ux-groupcheck-menu li.x-menu-list-item .x-menu-check-item .x-menu-item-icon,.synohdpackdebug .syno-ux-searchfield-menu li.x-menu-list-item .x-menu-check-item .x-menu-item-icon,.synohdpackdebug .syno-ux-menu li.x-menu-list-item .x-menu-check-item .x-menu-item-icon,.synohdpackdebug .syno-ux-schedule-menu li.x-menu-list-item .x-menu-check-item .x-menu-item-icon,.synohdpackdebug .syno-ux-button-menu li.x-menu-list-item .x-menu-check-item .x-menu-item-icon{background-image:url("../img/synohdpack/images/Components/checkbox.png");background-size:22px 198px;outline:1px green dashed}}.syno-ux-grid-hd-menu li.x-menu-list-item.x-menu-item-checked .x-menu-item-icon,.syno-ux-editorgrid-hd-menu li.x-menu-list-item.x-menu-item-checked .x-menu-item-icon,.syno-ux-groupcheck-menu li.x-menu-list-item.x-menu-item-checked .x-menu-item-icon,.syno-ux-searchfield-menu li.x-menu-list-item.x-menu-item-checked .x-menu-item-icon,.syno-ux-menu li.x-menu-list-item.x-menu-item-checked .x-menu-item-icon,.syno-ux-schedule-menu li.x-menu-list-item.x-menu-item-checked .x-menu-item-icon,.syno-ux-button-menu li.x-menu-list-item.x-menu-item-checked .x-menu-item-icon{background-image:url("../img/synohdpack/images/Components/checkbox.png");background-size:22px 198px;background-position:0px -66px;width:22px;height:22px}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-grid-hd-menu li.x-menu-list-item.x-menu-item-checked .x-menu-item-icon,.synohdpack .syno-ux-editorgrid-hd-menu li.x-menu-list-item.x-menu-item-checked .x-menu-item-icon,.synohdpack .syno-ux-groupcheck-menu li.x-menu-list-item.x-menu-item-checked .x-menu-item-icon,.synohdpack .syno-ux-searchfield-menu li.x-menu-list-item.x-menu-item-checked .x-menu-item-icon,.synohdpack .syno-ux-menu li.x-menu-list-item.x-menu-item-checked .x-menu-item-icon,.synohdpack .syno-ux-schedule-menu li.x-menu-list-item.x-menu-item-checked .x-menu-item-icon,.synohdpack .syno-ux-button-menu li.x-menu-list-item.x-menu-item-checked .x-menu-item-icon{background-image:url("../img/synohdpack/images/Components/checkbox.png");background-size:22px 198px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-grid-hd-menu li.x-menu-list-item.x-menu-item-checked .x-menu-item-icon,.synohdpackdebug .syno-ux-editorgrid-hd-menu li.x-menu-list-item.x-menu-item-checked .x-menu-item-icon,.synohdpackdebug .syno-ux-groupcheck-menu li.x-menu-list-item.x-menu-item-checked .x-menu-item-icon,.synohdpackdebug .syno-ux-searchfield-menu li.x-menu-list-item.x-menu-item-checked .x-menu-item-icon,.synohdpackdebug .syno-ux-menu li.x-menu-list-item.x-menu-item-checked .x-menu-item-icon,.synohdpackdebug .syno-ux-schedule-menu li.x-menu-list-item.x-menu-item-checked .x-menu-item-icon,.synohdpackdebug .syno-ux-button-menu li.x-menu-list-item.x-menu-item-checked .x-menu-item-icon{background-image:url("../img/synohdpack/images/Components/checkbox.png");background-size:22px 198px;outline:1px green dashed}}.syno-ux-groupcheck-menu li.x-menu-list-item .x-menu-check-item img.x-menu-item-icon,.syno-ux-searchfield-menu li.x-menu-list-item .x-menu-check-item img.x-menu-item-icon{background-image:none}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-groupcheck-menu li.x-menu-list-item .x-menu-check-item img.x-menu-item-icon,.synohdpack .syno-ux-searchfield-menu li.x-menu-list-item .x-menu-check-item img.x-menu-item-icon{background-image:none}}.syno-ux-groupcheck-menu li.x-menu-list-item.x-menu-item-checked img.x-menu-item-icon,.syno-ux-searchfield-menu li.x-menu-list-item.x-menu-item-checked img.x-menu-item-icon{background-image:url("images/Components/dropdown_menu_tick.png");background-position:0px 0px;background-repeat:no-repeat;width:28px;height:28px;left:0px;top:0px}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-groupcheck-menu li.x-menu-list-item.x-menu-item-checked img.x-menu-item-icon,.synohdpack .syno-ux-searchfield-menu li.x-menu-list-item.x-menu-item-checked img.x-menu-item-icon{background-image:url("../img/synohdpack/images/Components/dropdown_menu_tick.png");background-size:28px 56px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-groupcheck-menu li.x-menu-list-item.x-menu-item-checked img.x-menu-item-icon,.synohdpackdebug .syno-ux-searchfield-menu li.x-menu-list-item.x-menu-item-checked img.x-menu-item-icon{background-image:url("../img/synohdpack/images/Components/dropdown_menu_tick.png");background-size:28px 56px;outline:1px green dashed}}.syno-ux-groupcheck-menu li.x-menu-list-item.x-menu-item-checked.x-menu-item-active img.x-menu-item-icon,.syno-ux-searchfield-menu li.x-menu-list-item.x-menu-item-checked.x-menu-item-active img.x-menu-item-icon{background-image:url("images/Components/dropdown_menu_tick.png");background-position:0px -28px;background-repeat:no-repeat;width:28px;height:28px;left:0px;top:0px}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-groupcheck-menu li.x-menu-list-item.x-menu-item-checked.x-menu-item-active img.x-menu-item-icon,.synohdpack .syno-ux-searchfield-menu li.x-menu-list-item.x-menu-item-checked.x-menu-item-active img.x-menu-item-icon{background-image:url("../img/synohdpack/images/Components/dropdown_menu_tick.png");background-size:28px 56px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-groupcheck-menu li.x-menu-list-item.x-menu-item-checked.x-menu-item-active img.x-menu-item-icon,.synohdpackdebug .syno-ux-searchfield-menu li.x-menu-list-item.x-menu-item-checked.x-menu-item-active img.x-menu-item-icon{background-image:url("../img/synohdpack/images/Components/dropdown_menu_tick.png");background-size:28px 56px;outline:1px green dashed}}.syno-ux-textfield,.ext-strict .x-small-editor .syno-ux-textfield.x-form-text,.syno-ux-numberfield{font-size:12px;background-color:#FFFFFF;box-shadow:inset 0px 1px 0px rgba(80,90,100,0.08);background-image:none;padding-left:8px}.x-form-text.syno-ux-textfield,.ext-strict .x-small-editor .x-form-text.syno-ux-textfield,.x-form-text.syno-ux-numberfield{border-color:#C8D2DC;height:24px}.syno-ux-textfield.syno-ux-textfield-hover,.syno-ux-textfield.syno-ux-numberfield-hover,.syno-ux-textfield-hover.syno-ux-numberfield,.syno-ux-numberfield.syno-ux-numberfield-hover{border-color:#B4BEC8}.x-form-focus.syno-ux-textfield,.ext-strict .x-small-editor .x-form-focus.syno-ux-textfield.x-form-text,.x-form-focus.syno-ux-numberfield{border-color:#0086e5}.x-form-invalid.syno-ux-textfield,.ext-strict .x-small-editor .x-form-invalid.syno-ux-textfield.x-form-text,.x-form-invalid.syno-ux-numberfield{border-color:#FF8C8C;background-color:#FFF0F0;background-image:none}.x-item-disabled.x-form-text.syno-ux-textfield,.ext-strict .x-small-editor .x-item-disabled.x-form-text.syno-ux-textfield,.x-item-disabled.x-form-text.syno-ux-numberfield{border-color:#C8D2DC;background-color:#F6F8FA}.ext-strict .x-small-editor .x-form-text.syno-ux-textfield,.ext-strict .x-small-editor .x-form-text.syno-ux-numberfield{height:24px !important}.x-form-item .x-form-item-label.syno-ux-item-label{font-size:12px;line-height:28px;padding:0px}.syno-ux-triggerfield,.syno-ux-combobox,.syno-ux-colorfield,.syno-ux-schedulefield,.syno-ux-datefield,.syno-ux-timefield,.syno-ux-superboxselect{font-size:12px;background-color:#FFFFFF;box-shadow:inset 0px 1px 0px rgba(80,90,100,0.08);background-image:none;padding-left:8px;border-right:0px}.ext-gecko .syno-ux-triggerfield,.ext-gecko .syno-ux-combobox,.ext-gecko .syno-ux-colorfield,.ext-gecko .syno-ux-schedulefield,.ext-gecko .syno-ux-datefield,.ext-gecko .syno-ux-timefield,.ext-gecko .syno-ux-superboxselect{padding-top:1px;padding-bottom:1px}.syno-ux-triggerfield-readonly.syno-ux-triggerfield,.syno-ux-triggerfield-readonly.syno-ux-combobox,.syno-ux-triggerfield-readonly.syno-ux-colorfield,.syno-ux-triggerfield-readonly.syno-ux-schedulefield,.syno-ux-triggerfield-readonly.syno-ux-datefield,.syno-ux-triggerfield-readonly.syno-ux-timefield,.syno-ux-triggerfield-readonly.syno-ux-superboxselect,.syno-ux-triggerfield-no-trigger.syno-ux-triggerfield,.syno-ux-triggerfield-no-trigger.syno-ux-combobox,.syno-ux-triggerfield-no-trigger.syno-ux-colorfield,.syno-ux-triggerfield-no-trigger.syno-ux-schedulefield,.syno-ux-triggerfield-no-trigger.syno-ux-datefield,.syno-ux-triggerfield-no-trigger.syno-ux-timefield,.syno-ux-triggerfield-no-trigger.syno-ux-superboxselect{border-right:1px solid #C8D2DC}.x-form-text.syno-ux-triggerfield,.x-form-text.syno-ux-combobox,.x-form-text.syno-ux-colorfield,.x-form-text.syno-ux-schedulefield,.x-form-text.syno-ux-datefield,.x-form-text.syno-ux-timefield,.x-form-text.syno-ux-superboxselect{border-color:#C8D2DC;height:24px;line-height:24px}.syno-ux-triggerfield.syno-ux-triggerfield-hover,.syno-ux-triggerfield.syno-ux-combobox-hover,.syno-ux-triggerfield.syno-ux-colorfield-hover,.syno-ux-triggerfield.syno-ux-schedulefield-hover,.syno-ux-triggerfield.syno-ux-datefield-hover,.syno-ux-triggerfield.syno-ux-timefield-hover,.syno-ux-triggerfield-hover.syno-ux-combobox,.syno-ux-triggerfield-hover.syno-ux-colorfield,.syno-ux-triggerfield-hover.syno-ux-schedulefield,.syno-ux-triggerfield-hover.syno-ux-datefield,.syno-ux-triggerfield-hover.syno-ux-timefield,.syno-ux-triggerfield-hover.syno-ux-superboxselect,.syno-ux-combobox.syno-ux-combobox-hover,.syno-ux-combobox.syno-ux-colorfield-hover,.syno-ux-combobox.syno-ux-schedulefield-hover,.syno-ux-combobox.syno-ux-datefield-hover,.syno-ux-combobox.syno-ux-timefield-hover,.syno-ux-combobox-hover.syno-ux-colorfield,.syno-ux-combobox-hover.syno-ux-schedulefield,.syno-ux-combobox-hover.syno-ux-datefield,.syno-ux-combobox-hover.syno-ux-timefield,.syno-ux-combobox-hover.syno-ux-superboxselect,.syno-ux-colorfield.syno-ux-colorfield-hover,.syno-ux-colorfield.syno-ux-schedulefield-hover,.syno-ux-colorfield.syno-ux-datefield-hover,.syno-ux-colorfield.syno-ux-timefield-hover,.syno-ux-colorfield-hover.syno-ux-schedulefield,.syno-ux-colorfield-hover.syno-ux-datefield,.syno-ux-colorfield-hover.syno-ux-timefield,.syno-ux-colorfield-hover.syno-ux-superboxselect,.syno-ux-schedulefield.syno-ux-schedulefield-hover,.syno-ux-schedulefield.syno-ux-datefield-hover,.syno-ux-schedulefield.syno-ux-timefield-hover,.syno-ux-schedulefield-hover.syno-ux-datefield,.syno-ux-schedulefield-hover.syno-ux-timefield,.syno-ux-schedulefield-hover.syno-ux-superboxselect,.syno-ux-datefield.syno-ux-datefield-hover,.syno-ux-datefield.syno-ux-timefield-hover,.syno-ux-datefield-hover.syno-ux-timefield,.syno-ux-datefield-hover.syno-ux-superboxselect,.syno-ux-timefield.syno-ux-timefield-hover,.syno-ux-timefield-hover.syno-ux-superboxselect{border-color:#B4BEC8}.x-form-focus.syno-ux-triggerfield,.x-form-focus.syno-ux-combobox,.x-form-focus.syno-ux-colorfield,.x-form-focus.syno-ux-schedulefield,.x-form-focus.syno-ux-datefield,.x-form-focus.syno-ux-timefield,.x-form-focus.syno-ux-superboxselect{border-color:#0086e5}.x-form-invalid.syno-ux-triggerfield,.x-form-invalid.syno-ux-combobox,.x-form-invalid.syno-ux-colorfield,.x-form-invalid.syno-ux-schedulefield,.x-form-invalid.syno-ux-datefield,.x-form-invalid.syno-ux-timefield,.x-form-invalid.syno-ux-superboxselect{border-color:#FF8C8C;background-color:#FFF0F0;background-image:none}.x-item-disabled .x-form-text.syno-ux-triggerfield,.x-item-disabled .x-form-text.syno-ux-combobox,.x-item-disabled .x-form-text.syno-ux-colorfield,.x-item-disabled .x-form-text.syno-ux-schedulefield,.x-item-disabled .x-form-text.syno-ux-datefield,.x-item-disabled .x-form-text.syno-ux-timefield,.x-item-disabled .x-form-text.syno-ux-superboxselect{border-color:#C8D2DC;background-color:#F6F8FA;background-image:none;border-right:0px}.x-item-disabled .x-form-text.syno-ux-triggerfield-readonly.syno-ux-triggerfield,.x-item-disabled .x-form-text.syno-ux-triggerfield-readonly.syno-ux-combobox,.x-item-disabled .x-form-text.syno-ux-triggerfield-readonly.syno-ux-colorfield,.x-item-disabled .x-form-text.syno-ux-triggerfield-readonly.syno-ux-schedulefield,.x-item-disabled .x-form-text.syno-ux-triggerfield-readonly.syno-ux-datefield,.x-item-disabled .x-form-text.syno-ux-triggerfield-readonly.syno-ux-timefield,.x-item-disabled .x-form-text.syno-ux-triggerfield-readonly.syno-ux-superboxselect,.x-item-disabled .x-form-text.syno-ux-triggerfield-no-trigger.syno-ux-triggerfield,.x-item-disabled .x-form-text.syno-ux-triggerfield-no-trigger.syno-ux-combobox,.x-item-disabled .x-form-text.syno-ux-triggerfield-no-trigger.syno-ux-colorfield,.x-item-disabled .x-form-text.syno-ux-triggerfield-no-trigger.syno-ux-schedulefield,.x-item-disabled .x-form-text.syno-ux-triggerfield-no-trigger.syno-ux-datefield,.x-item-disabled .x-form-text.syno-ux-triggerfield-no-trigger.syno-ux-timefield,.x-item-disabled .x-form-text.syno-ux-triggerfield-no-trigger.syno-ux-superboxselect{border-right:1px solid #C8D2DC}.x-form-field-trigger-wrap .x-form-trigger.syno-ux-triggerfield-trigger,.x-form-field-trigger-wrap .x-form-trigger.syno-ux-combobox-trigger,.x-form-field-trigger-wrap .x-form-trigger.syno-ux-colorfield-trigger,.x-form-field-trigger-wrap .x-form-trigger.syno-ux-schedulefield-trigger,.x-form-field-trigger-wrap .x-form-trigger.syno-ux-datefield-trigger,.x-form-field-trigger-wrap .x-form-trigger.syno-ux-timefield-trigger{background-image:url("images/Components/trigger.png");background-position:0px -1px;background-color:#FFFFFF;border:1px solid #C8D2DC;border-left:0px;width:26px;height:26px;box-shadow:inset 0px 1px 0px rgba(80,90,100,0.08)}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .x-form-field-trigger-wrap .x-form-trigger.syno-ux-triggerfield-trigger,.synohdpack .x-form-field-trigger-wrap .x-form-trigger.syno-ux-combobox-trigger,.synohdpack .x-form-field-trigger-wrap .x-form-trigger.syno-ux-colorfield-trigger,.synohdpack .x-form-field-trigger-wrap .x-form-trigger.syno-ux-schedulefield-trigger,.synohdpack .x-form-field-trigger-wrap .x-form-trigger.syno-ux-datefield-trigger,.synohdpack .x-form-field-trigger-wrap .x-form-trigger.syno-ux-timefield-trigger{background-image:url("../img/synohdpack/images/Components/trigger.png");background-size:104px 28px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .x-form-field-trigger-wrap .x-form-trigger.syno-ux-triggerfield-trigger,.synohdpackdebug .x-form-field-trigger-wrap .x-form-trigger.syno-ux-combobox-trigger,.synohdpackdebug .x-form-field-trigger-wrap .x-form-trigger.syno-ux-colorfield-trigger,.synohdpackdebug .x-form-field-trigger-wrap .x-form-trigger.syno-ux-schedulefield-trigger,.synohdpackdebug .x-form-field-trigger-wrap .x-form-trigger.syno-ux-datefield-trigger,.synohdpackdebug .x-form-field-trigger-wrap .x-form-trigger.syno-ux-timefield-trigger{background-image:url("../img/synohdpack/images/Components/trigger.png");background-size:104px 28px;outline:1px green dashed}}.x-form-field-trigger-wrap .x-form-trigger.x-form-trigger-over.syno-ux-triggerfield-trigger,.x-form-field-trigger-wrap .x-form-trigger.x-form-trigger-over.syno-ux-combobox-trigger,.x-form-field-trigger-wrap .x-form-trigger.x-form-trigger-over.syno-ux-colorfield-trigger,.x-form-field-trigger-wrap .x-form-trigger.x-form-trigger-over.syno-ux-schedulefield-trigger,.x-form-field-trigger-wrap .x-form-trigger.x-form-trigger-over.syno-ux-datefield-trigger,.x-form-field-trigger-wrap .x-form-trigger.x-form-trigger-over.syno-ux-timefield-trigger{background-position:-26px -1px;border-color:#B4BECB}.x-form-field-trigger-wrap .x-form-trigger.x-form-trigger-over.syno-ux-trigger-invalid.syno-ux-triggerfield-trigger,.x-form-field-trigger-wrap .x-form-trigger.x-form-trigger-over.syno-ux-trigger-invalid.syno-ux-combobox-trigger,.x-form-field-trigger-wrap .x-form-trigger.x-form-trigger-over.syno-ux-trigger-invalid.syno-ux-colorfield-trigger,.x-form-field-trigger-wrap .x-form-trigger.x-form-trigger-over.syno-ux-trigger-invalid.syno-ux-schedulefield-trigger,.x-form-field-trigger-wrap .x-form-trigger.x-form-trigger-over.syno-ux-trigger-invalid.syno-ux-datefield-trigger,.x-form-field-trigger-wrap .x-form-trigger.x-form-trigger-over.syno-ux-trigger-invalid.syno-ux-timefield-trigger{border-color:#FF8C8C;background-color:#FFF0F0}.x-form-field-trigger-wrap .x-form-trigger.x-form-trigger-click.syno-ux-triggerfield-trigger,.x-form-field-trigger-wrap .x-form-trigger.x-form-trigger-click.syno-ux-combobox-trigger,.x-form-field-trigger-wrap .x-form-trigger.x-form-trigger-click.syno-ux-colorfield-trigger,.x-form-field-trigger-wrap .x-form-trigger.x-form-trigger-click.syno-ux-schedulefield-trigger,.x-form-field-trigger-wrap .x-form-trigger.x-form-trigger-click.syno-ux-datefield-trigger,.x-form-field-trigger-wrap .x-form-trigger.x-form-trigger-click.syno-ux-timefield-trigger{background-position:-52px -1px}.x-form-field-trigger-wrap .x-form-trigger.syno-ux-trigger-invalid.syno-ux-triggerfield-trigger,.x-form-field-trigger-wrap .x-form-trigger.syno-ux-trigger-invalid.syno-ux-combobox-trigger,.x-form-field-trigger-wrap .x-form-trigger.syno-ux-trigger-invalid.syno-ux-colorfield-trigger,.x-form-field-trigger-wrap .x-form-trigger.syno-ux-trigger-invalid.syno-ux-schedulefield-trigger,.x-form-field-trigger-wrap .x-form-trigger.syno-ux-trigger-invalid.syno-ux-datefield-trigger,.x-form-field-trigger-wrap .x-form-trigger.syno-ux-trigger-invalid.syno-ux-timefield-trigger{border-color:#FF8C8C;background-color:#FFF0F0}.x-form-field-trigger-wrap.x-trigger-wrap-focus .x-form-trigger.syno-ux-triggerfield-trigger,.x-form-field-trigger-wrap.x-trigger-wrap-focus .x-form-trigger.syno-ux-combobox-trigger,.x-form-field-trigger-wrap.x-trigger-wrap-focus .x-form-trigger.syno-ux-colorfield-trigger,.x-form-field-trigger-wrap.x-trigger-wrap-focus .x-form-trigger.syno-ux-schedulefield-trigger,.x-form-field-trigger-wrap.x-trigger-wrap-focus .x-form-trigger.syno-ux-datefield-trigger,.x-form-field-trigger-wrap.x-trigger-wrap-focus .x-form-trigger.syno-ux-timefield-trigger{border-color:#0086e5}.x-form-field-trigger-wrap.x-trigger-wrap-focus .x-form-trigger.syno-ux-trigger-invalid.syno-ux-triggerfield-trigger,.x-form-field-trigger-wrap.x-trigger-wrap-focus .x-form-trigger.syno-ux-trigger-invalid.syno-ux-combobox-trigger,.x-form-field-trigger-wrap.x-trigger-wrap-focus .x-form-trigger.syno-ux-trigger-invalid.syno-ux-colorfield-trigger,.x-form-field-trigger-wrap.x-trigger-wrap-focus .x-form-trigger.syno-ux-trigger-invalid.syno-ux-schedulefield-trigger,.x-form-field-trigger-wrap.x-trigger-wrap-focus .x-form-trigger.syno-ux-trigger-invalid.syno-ux-datefield-trigger,.x-form-field-trigger-wrap.x-trigger-wrap-focus .x-form-trigger.syno-ux-trigger-invalid.syno-ux-timefield-trigger{border-color:#FF8C8C}.x-form-field-trigger-wrap.x-item-disabled .x-form-trigger.syno-ux-triggerfield-trigger,.x-form-field-trigger-wrap.x-item-disabled .x-form-trigger.syno-ux-combobox-trigger,.x-form-field-trigger-wrap.x-item-disabled .x-form-trigger.syno-ux-colorfield-trigger,.x-form-field-trigger-wrap.x-item-disabled .x-form-trigger.syno-ux-schedulefield-trigger,.x-form-field-trigger-wrap.x-item-disabled .x-form-trigger.syno-ux-datefield-trigger,.x-form-field-trigger-wrap.x-item-disabled .x-form-trigger.syno-ux-timefield-trigger{background-position:-78px -1px;background-color:#F6F8FA;border-color:#C8D2DC}.x-form-field-trigger-wrap.x-item-disabled .x-form-trigger.x-form-trigger-over.syno-ux-triggerfield-trigger,.x-form-field-trigger-wrap.x-item-disabled .x-form-trigger.x-form-trigger-over.syno-ux-combobox-trigger,.x-form-field-trigger-wrap.x-item-disabled .x-form-trigger.x-form-trigger-over.syno-ux-colorfield-trigger,.x-form-field-trigger-wrap.x-item-disabled .x-form-trigger.x-form-trigger-over.syno-ux-schedulefield-trigger,.x-form-field-trigger-wrap.x-item-disabled .x-form-trigger.x-form-trigger-over.syno-ux-datefield-trigger,.x-form-field-trigger-wrap.x-item-disabled .x-form-trigger.x-form-trigger-over.syno-ux-timefield-trigger,.x-form-field-trigger-wrap.x-item-disabled .x-form-trigger.x-form-trigger-click.syno-ux-triggerfield-trigger,.x-form-field-trigger-wrap.x-item-disabled .x-form-trigger.x-form-trigger-click.syno-ux-combobox-trigger,.x-form-field-trigger-wrap.x-item-disabled .x-form-trigger.x-form-trigger-click.syno-ux-colorfield-trigger,.x-form-field-trigger-wrap.x-item-disabled .x-form-trigger.x-form-trigger-click.syno-ux-schedulefield-trigger,.x-form-field-trigger-wrap.x-item-disabled .x-form-trigger.x-form-trigger-click.syno-ux-datefield-trigger,.x-form-field-trigger-wrap.x-item-disabled .x-form-trigger.x-form-trigger-click.syno-ux-timefield-trigger{background-position:-78px -1px !important;border-color:#C8D2DC}/*! + * Ext JS Library 3.2.1 + * Copyright(c) 2006-2010 Ext JS, Inc. + * licensing@extjs.com + * http://www.extjs.com/license + */#images-view .x-panel-body{background:white;font:11px Arial, Helvetica, sans-serif}#images-view .thumb{background:#dddddd;padding:3px}#images-view .thumb img{height:60px;width:80px}#images-view .thumb-wrap{float:left;margin:4px;margin-right:0;padding:5px}#images-view .thumb-wrap span{display:block;overflow:hidden;text-align:center}#images-view .x-view-over{border:1px solid #dddddd;background:#efefef url(../resources/images/default/grid/row-over.gif) repeat-x left top;padding:4px}#images-view .x-view-selected{background:#eff5fb url(images/data-view/selected.gif) no-repeat right bottom;border:1px solid #99bbe8;padding:4px}#images-view .x-view-selected .thumb{background:transparent}#images-view .loading-indicator{font-size:11px;background-image:url("../resources/images/default/grid/loading.gif");background-repeat:no-repeat;background-position:left;padding-left:20px;margin:10px}/*! + * Ext JS Library 3.2.1 + * Copyright(c) 2006-2010 Ext JS, Inc. + * licensing@extjs.com + * http://www.extjs.com/license + */.x-statusbar .x-status-text{cursor:default}.x-statusbar .x-status-busy{padding-left:25px !important;background:transparent no-repeat 3px 2px}.x-statusbar .x-status-error{padding-left:25px !important;background:transparent no-repeat 3px 2px}.x-statusbar .x-status-valid{padding-left:25px !important;background:transparent no-repeat 3px 2px}.x-statusbar .x-status-busy{background-image:url(images/statusbar/loading.gif)}.x-statusbar .x-status-error{color:#C33;background-image:url(images/statusbar/exclamation.gif)}.x-statusbar .x-status-valid{background-image:url(images/statusbar/accept.png)}.ext-strict .x-form-checkbox,.x-form-radio{margin-right:2px}.ext-strict .ext-ie .x-form-checkbox,.ext-ie .x-form-radio{margin-right:0px}.syno-textfilter .x-form-field-wrap{border:1px solid #B5B8C8;background-color:#FFF}.ext-strict .ext-webkit .syno-textfilter .x-form-field-wrap .syno-textfilter-text,.syno-textfilter .x-form-field-wrap .syno-textfilter-text{font-size:11px;line-height:18px;height:18px !important;padding-left:18px;background-color:transparent;background-image:url(images/TextFilter/search-icon.png);background-position:0 0;background-repeat:no-repeat;border:none}.syno-textfilter .x-form-field-trigger-wrap .syno-textfilter-trigger{height:20px;background-color:transparent;background-image:url(images/TextFilter/search-cancel.png);background-position:0 0;background-repeat:no-repeat;right:0px;border:none}.syno-textfilter .x-form-field-trigger-wrap.x-item-disabled .syno-textfilter-trigger{background-image:url(images/TextFilter/search_icon_cancel.png) !important;background-position:0 -20px !important}.syno-search-field .x-form-field-wrap-right{padding-right:6px;background-image:url(images/TextFilter/search_box.png);background-repeat:no-repeat;height:24px;background-position:right -48px}.syno-search-field .x-form-field-wrap-center{background-image:url(images/TextFilter/search_box.png);background-position:0 -24px;background-repeat:repeat-x;height:24px}.syno-search-field .x-form-field-wrap .syno-textfilter-text{line-height:16px !important;height:16px !important;font-size:12px;background-position:0 0;background-color:transparent;padding-bottom:0 !important}.ext-gecko .syno-search-field .x-form-field-wrap .syno-textfilter-text,.ext-ie9 .syno-search-field .x-form-field-wrap .syno-textfilter-text,.ext-ie8 .syno-search-field .x-form-field-wrap .syno-textfilter-text{padding-top:0 !important}.ext-trident6 .syno-search-field .x-form-field-wrap .syno-textfilter-text{margin-top:2px !important}.syno-search-field .x-form-field-wrap-left{background-image:url(images/TextFilter/search_box.png);background-position:0 0;background-repeat:no-repeat;height:24px !important;border:0;padding-left:6px;background-color:transparent}.syno-search-field .x-form-field-trigger-wrap .syno-textfilter-trigger{top:2px;padding-right:3px}.x-form-field-wrap-center-img{background-image:url(images/TextFilter/search-icon.png);width:16px;height:16px;line-height:16px;display:table-cell;padding-right:2px;background-repeat:no-repeat;background-position:0 2px}.ext-ie9 .x-form-field-wrap-center-img,.ext-ie8 .x-form-field-wrap-center-img{background-position:0 1px}.ext-trident6 .x-form-field-wrap-center-img{background-position:0 2px}.syno-grid-enable-column-checked{height:16px;background-repeat:no-repeat;background-position:center center;background-image:url(images/EnableColumn/checked.gif)}.syno-grid-enable-column-unchecked{height:16px;background-repeat:no-repeat;background-position:center center;background-image:url(images/EnableColumn/unchecked.gif)}.syno-grid-enable-column-grayed{height:16px;background-repeat:no-repeat;background-position:center center;background-image:url(images/EnableColumn/grayed.gif)}.x-checkbox{height:13px;width:13px;background:url(images/TriCheckbox/checkbox.gif) no-repeat -13px 0;vertical-align:bottom}.x-form-focus .x-checkbox,.x-checkbox-over .x-checkbox{background-position:-13px 0}.x-checkbox-down .x-checkbox{background-position:-26px 0}.x-item-disabled .x-checkbox{background-position:-39px 0}.x-checkbox-checked .x-checkbox{background-position:-13px -13px}.x-checkbox-checked .x-form-focus .x-checkbox,.x-checkbox-checked .x-checkbox-over .x-checkbox{background-position:-13px -13px}.x-checkbox-checked .x-checkbox-down .x-checkbox{background-position:-26px -13px}.x-checkbox-checked .x-item-disabled .x-checkbox{background-position:-39px -13px}.ext-ie9.syno-cjk .x-form-check-wrap{line-height:15px}.x-checkbox-grayed .x-checkbox{background-position:-13px -26px}.x-checkbox-grayed .x-form-focus .x-checkbox,.x-checkbox-grayed .x-checkbox-over .x-checkbox{background-position:-13px -26px}.x-checkbox-grayed .x-checkbox-down .x-checkbox{background-position:-26px -26px}.x-checkbox-grayed .x-item-disabled .x-checkbox{background-position:-39px -26px}.ux-cell-value{position:relative;zoom:1}.ux-cell-actions{position:absolute;right:0;top:-2px}.ux-cell-actions-left{left:0;top:-2px}.ux-cell-action{width:16px;height:16px;float:left;cursor:pointer;margin:0 0 0 4px}.ux-cell-actions-left .ux-cell-action{margin:0 4px 0 0}.syno-radiobox .x-form-check-wrap .x-form-radio+label.x-form-cb-label{padding-left:22px;padding-bottom:2px;background-repeat:no-repeat;background-image:url(images/CustRadio/radio_button.png)}.ext-gecko .syno-radiobox .x-form-check-wrap .x-form-radio+label.x-form-cb-label{padding-bottom:1px}.syno-radiobox .x-form-check-wrap.x-item-disabled .x-form-radio+label.x-form-cb-label{background-image:url(images/CustRadio/radio_button.png)}.syno-radiobox .x-form-check-wrap input.x-form-radio{width:0px}.ext-gecko .syno-radiobox .x-form-check-wrap input.x-form-radio,.ext-opera .syno-radiobox .x-form-check-wrap input.x-form-radio,.ext-webkit .syno-radiobox .x-form-check-wrap input.x-form-radio{display:none}.syno-radiobox .x-form-cb-label{margin-left:0px}.syno-radiobox .x-form-check-wrap label{background-position:0px 0px}.syno-radiobox.x-checkbox-over .x-form-check-wrap label{background-position:0px -16px}.syno-radiobox .x-form-check-wrap label.x-checkbox-checked{background-position:0px -32px}.syno-radiobox.x-checkbox-over .x-form-check-wrap label.x-checkbox-checked{background-position:0px -48px}.syno-rounded-menu{background:transparent none;border:0px none}.syno-rounded-menu .x-menu-list{padding:0}.syno-rounded-menu .x-menu-item-active{background-color:#b6def2;background-image:none;border-color:#b6def2}.syno-rounded-menu .x-menu-item-active a.x-menu-item{border-color:#b6def2}.syno-rounded-menu-tl{background:transparent url(images/RoundedMenu/dropdown_menu_bg_a.png) no-repeat 0 0;padding-left:10px;zoom:1;z-index:1;position:relative}.syno-rounded-menu-tc{background:transparent url(images/RoundedMenu/dropdown_menu_bg_a.png) repeat-x 0 -10px;overflow:hidden;zoom:1;height:10px}.syno-rounded-menu-tr{background:transparent url(images/RoundedMenu/dropdown_menu_bg_a.png) no-repeat right -20px;padding-right:10px}.syno-rounded-menu-ml{background:transparent url(images/RoundedMenu/dropdown_menu_bg_bl.png) repeat-y 0 0;padding-left:10px;zoom:1}.syno-rounded-menu-mc{background:transparent url(images/RoundedMenu/dropdown_menu_bg_c.png) repeat 0 0;margin-left:-5px;margin-right:-5px}.syno-rounded-menu-mr{background:transparent url(images/RoundedMenu/dropdown_menu_bg_br.png) repeat-y right 0;padding-right:10px;zoom:1}.syno-rounded-menu-bl{background:transparent url(images/RoundedMenu/dropdown_menu_bg_a.png) no-repeat 0 -30px;padding-left:10px;zoom:1}.syno-rounded-menu-bc{background:transparent url(images/RoundedMenu/dropdown_menu_bg_a.png) repeat-x 0 -40px;zoom:1;height:10px}.syno-rounded-menu-br{background:transparent url(images/RoundedMenu/dropdown_menu_bg_a.png) no-repeat right -50px;padding-right:10px;zoom:1}.syno-rounded-menu-bwrap{background:transparent none;border:0px none}.syno-ux-gridpanel .x-panel-tbar .x-toolbar,.syno-ux-editorgridpanel .x-panel-tbar .x-toolbar,.syno-ux-panel .x-panel-tbar .x-toolbar,.syno-ux-formpanel .x-panel-tbar .x-toolbar,.syno-ux-tab-panel .x-panel-tbar .x-toolbar{border-bottom-color:#D7E1EB;padding:0px 0px 8px 0px}.syno-ux-gridpanel .x-panel-bbar .x-toolbar,.syno-ux-editorgridpanel .x-panel-bbar .x-toolbar,.syno-ux-panel .x-panel-bbar .x-toolbar,.syno-ux-formpanel .x-panel-bbar .x-toolbar,.syno-ux-tab-panel .x-panel-bbar .x-toolbar{border-top-color:#EBF0F5;height:23px}.syno-ux-gridpanel .x-panel-bbar .x-toolbar .xtb-text,.syno-ux-editorgridpanel .x-panel-bbar .x-toolbar .xtb-text,.syno-ux-panel .x-panel-bbar .x-toolbar .xtb-text,.syno-ux-formpanel .x-panel-bbar .x-toolbar .xtb-text,.syno-ux-tab-panel .x-panel-bbar .x-toolbar .xtb-text{line-height:23px;padding-top:0px}.syno-ux-gridpanel .x-panel-ml,.syno-ux-editorgridpanel .x-panel-ml,.syno-ux-panel .x-panel-ml,.syno-ux-formpanel .x-panel-ml,.syno-ux-tab-panel .x-panel-ml,.syno-ux-gridpanel .x-panel-mc,.syno-ux-editorgridpanel .x-panel-mc,.syno-ux-panel .x-panel-mc,.syno-ux-formpanel .x-panel-mc,.syno-ux-tab-panel .x-panel-mc{background-color:transparent}.syno-ux-gridpanel .x-panel-header,.syno-ux-editorgridpanel .x-panel-header,.syno-ux-panel .x-panel-header,.syno-ux-formpanel .x-panel-header,.syno-ux-tab-panel .x-panel-header{background-image:none;border-bottom:1px dashed #D7E1EB;font-size:15px;font-weight:normal;padding:0px 0px 0px 8px}.syno-ux-gridpanel .x-panel-header .x-panel-header-text,.syno-ux-editorgridpanel .x-panel-header .x-panel-header-text,.syno-ux-panel .x-panel-header .x-panel-header-text,.syno-ux-formpanel .x-panel-header .x-panel-header-text,.syno-ux-tab-panel .x-panel-header .x-panel-header-text{color:#0086e5;line-height:28px}.syno-ux-checkbox-icon,.syno-ux-radio-icon{background-image:url("../img/synohdpack/images/Components/checkbox.png");background-size:22px 198px;background-position:0 0;background-color:transparent;width:22px;height:22px;border:0px}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-checkbox-icon,.synohdpack .syno-ux-radio-icon{background-image:url("../img/synohdpack/images/Components/checkbox.png");background-size:22px 198px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-checkbox-icon,.synohdpackdebug .syno-ux-radio-icon{background-image:url("../img/synohdpack/images/Components/checkbox.png");background-size:22px 198px;outline:1px green dashed}}.ext-ie .x-form-check-wrap .syno-ux-checkbox-icon,.ext-ie .x-form-check-wrap .syno-ux-radio-icon{width:22px;height:22px}.syno-ux-cb-focus.syno-ux-checkbox-icon,.syno-ux-cb-focus.syno-ux-radio-icon,.syno-ux-cb-hover.syno-ux-checkbox-icon,.syno-ux-cb-hover.syno-ux-radio-icon{background-position:0 -22px}.syno-ux-cb-disabled.syno-ux-checkbox-icon,.syno-ux-cb-disabled.syno-ux-radio-icon{background-position:0 -44px}.syno-ux-cb-disabled.syno-ux-cb-checked.syno-ux-checkbox-icon,.syno-ux-cb-disabled.syno-ux-cb-checked.syno-ux-radio-icon{background-position:0 -110px}.syno-ux-cb-disabled.syno-ux-cb-checked.syno-ux-cb-focus.syno-ux-checkbox-icon,.syno-ux-cb-disabled.syno-ux-cb-checked.syno-ux-cb-focus.syno-ux-radio-icon,.syno-ux-cb-disabled.syno-ux-cb-checked.syno-ux-cb-hover.syno-ux-checkbox-icon,.syno-ux-cb-disabled.syno-ux-cb-checked.syno-ux-cb-hover.syno-ux-radio-icon{background-position:0 -110px}.syno-ux-cb-disabled.syno-ux-cb-grayed.syno-ux-checkbox-icon,.syno-ux-cb-disabled.syno-ux-cb-grayed.syno-ux-radio-icon{background-position:0 -176px}.syno-ux-cb-disabled.syno-ux-cb-grayed.syno-ux-cb-grayed.syno-ux-checkbox-icon,.syno-ux-cb-disabled.syno-ux-cb-grayed.syno-ux-cb-grayed.syno-ux-radio-icon{background-position:0 -176px}.syno-ux-cb-checked.syno-ux-checkbox-icon,.syno-ux-cb-checked.syno-ux-radio-icon{background-position:0 -66px}.syno-ux-cb-checked.syno-ux-cb-focus.syno-ux-checkbox-icon,.syno-ux-cb-checked.syno-ux-cb-focus.syno-ux-radio-icon,.syno-ux-cb-checked.syno-ux-cb-hover.syno-ux-checkbox-icon,.syno-ux-cb-checked.syno-ux-cb-hover.syno-ux-radio-icon{background-position:0 -88px}.syno-ux-cb-grayed.syno-ux-checkbox-icon,.syno-ux-cb-grayed.syno-ux-radio-icon{background-position:0 -132px}.syno-ux-cb-grayed.syno-ux-cb-focus.syno-ux-checkbox-icon,.syno-ux-cb-grayed.syno-ux-cb-focus.syno-ux-radio-icon,.syno-ux-cb-grayed.syno-ux-cb-hover.syno-ux-checkbox-icon,.syno-ux-cb-grayed.syno-ux-cb-hover.syno-ux-radio-icon{background-position:0 -154px}.x-form-element .x-form-check-wrap .syno-ux-checkbox-icon,.x-form-element .x-form-check-wrap .syno-ux-radio-icon{position:absolute}.syno-ux-checkbox-label{font-size:12px;line-height:22px !important;padding-left:8px}.x-form-element .x-form-check-wrap .syno-ux-checkbox-label{display:inline-block;padding-left:30px}.syno-ux-fieldset{border:0px;padding:0px;margin-bottom:8px}.syno-ux-fieldset .x-fieldset-bwrap{padding:8px}.syno-ux-fieldset .x-fieldset-header{font-size:15px;font-weight:normal;height:28px;border-bottom:1px dashed #D7E1EB;padding:0}.syno-ux-fieldset .x-fieldset-header .x-fieldset-header-text{line-height:28px}.syno-ux-fieldset legend,.syno-ux-fieldset legend span{cursor:pointer}.syno-ux-fieldset.syno-ux-fieldset-default .x-fieldset-header-text{padding-left:8px}.syno-ux-fieldset.syno-ux-fieldset-default legend,.syno-ux-fieldset.syno-ux-fieldset-default legend span{cursor:default}.syno-ux-fieldset .x-tool.x-tool-toggle{background-image:url("images/Components/fieldset_expand.png");margin-top:2px;background-position:0px -72px;width:24px;height:24px;margin-left:4px;margin-right:4px}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-fieldset .x-tool.x-tool-toggle{background-image:url("../img/synohdpack/images/Components/fieldset_expand.png");background-size:24px 288px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-fieldset .x-tool.x-tool-toggle{background-image:url("../img/synohdpack/images/Components/fieldset_expand.png");background-size:24px 288px;outline:1px green dashed}}.syno-ux-fieldset .syno-ux-fieldset-legend-hover{color:#0095FF;border-color:#C3CDD7}.syno-ux-fieldset .syno-ux-fieldset-legend-hover .x-tool.x-tool-toggle{background-position:0px -96px}.syno-ux-fieldset .syno-ux-fieldset-legend-click{color:#0077CC;border-color:#C3CDD7}.syno-ux-fieldset .syno-ux-fieldset-legend-click .x-tool.x-tool-toggle{background-position:0px -120px}.syno-ux-fieldset.x-panel-collapsed .x-tool.x-tool-toggle{background-position:0px 0px}.syno-ux-fieldset.x-panel-collapsed .syno-ux-fieldset-legend-hover .x-tool.x-tool-toggle{background-position:0px -24px}.syno-ux-fieldset.x-panel-collapsed .syno-ux-fieldset-legend-click .x-tool.x-tool-toggle{background-position:0px -48px}.ext-ie .x-fieldset.syno-ux-fieldset{padding-bottom:0px}.ext-ie .x-fieldset.syno-ux-fieldset legend{margin-bottom:0px}.syno-ux-displayfield.x-form-display-field{font-size:12px;padding-top:4px;padding-bottom:4px;line-height:20px}.syno-ux-displayfield.x-form-display-field a{font-weight:bold}.syno-ux-combobox-list.x-layer.x-combo-list{border-color:#C8D2DC;background-color:#FFFFFF;padding:4px;box-shadow:0 2px 4px rgba(0,0,0,0.5)}.syno-ux-combobox-list .x-combo-list-item{height:26px;line-height:26px;background-color:#FFFFFF;font-size:12px;color:#505A64;padding:0px;padding-left:8px}.syno-ux-combobox-list .x-combo-list-item.x-combo-selected{color:#FFFFFF}.syno-ux-combobox-list .x-combo-list-inner{margin-bottom:0px}.syno-ux-combobox-list .syno-ux-pagingtoolbar{border-top:1px solid #EBF0F5;border-bottom:1px solid #D7E1EB;padding:0px}.ext-strict .x-small-editor .x-form-field-wrap .x-form-text.syno-ux-combobox{height:24px !important}.syno-ux-colormenu{background-image:none}.syno-ux-colormenu.x-layer{border-color:#C8D2DC;background-color:#FFFFFF;padding:4px;box-shadow:0 2px 4px rgba(0,0,0,0.5)}.x-form-item .x-form-item-label.syno-ux-item-label{font-size:12px;line-height:28px;padding:0px}.syno-ux-button{height:26px;line-height:26px;border-radius:3px;display:inline-block;text-align:center}.syno-ux-button.x-btn em button{height:26px;font-size:12px;padding-left:14px;padding-right:14px;background-repeat:no-repeat}.syno-ux-button.syno-ux-button-dropdown{padding-right:14px}.syno-ux-button.syno-ux-button-dropdown.syno-ux-button-split{padding-right:6px}.syno-ux-button em{cursor:pointer}.syno-ux-button em.x-btn-arrow{display:block;padding-right:6px;background-image:url("./images/Components/bt_dropdown.png");background-repeat:no-repeat;background-position:top right}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-button em.x-btn-arrow{background-image:url("../img/synohdpack/./images/Components/bt_dropdown.png");background-size:6px 112px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-button em.x-btn-arrow{background-image:url("../img/synohdpack/./images/Components/bt_dropdown.png");background-size:6px 112px;outline:1px green dashed}}.syno-ux-button em.x-btn-arrow button{padding-right:6px}.syno-ux-button em.x-btn-split{display:block;padding-right:12px;background-image:url("./images/Components/bt_dropdown.png");background-repeat:no-repeat;background-position:top right}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-button em.x-btn-split{background-image:url("../img/synohdpack/./images/Components/bt_dropdown.png");background-size:6px 112px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-button em.x-btn-split{background-image:url("../img/synohdpack/./images/Components/bt_dropdown.png");background-size:6px 112px;outline:1px green dashed}}.syno-ux-button em.x-btn-split button{border-right:1px solid #C8D2DC;padding-right:8px}.syno-ux-button.x-item-disabled{cursor:default}.syno-ux-button.x-item-disabled em.x-btn-arrow{background-position-y:-28px}.syno-ux-button.x-item-disabled em.x-btn-split{background-position-y:-28px}.syno-ux-button.syno-ux-button-blue em.x-btn-arrow,.syno-ux-button.syno-ux-button-blue em.x-btn-split,.syno-ux-button.syno-ux-button-red em.x-btn-arrow,.syno-ux-button.syno-ux-button-red em.x-btn-split,.syno-ux-button.syno-ux-button-green em.x-btn-arrow,.syno-ux-button.syno-ux-button-green em.x-btn-split,.syno-ux-button.syno-ux-button-orange em.x-btn-arrow,.syno-ux-button.syno-ux-button-orange em.x-btn-split{background-position-y:-56px}.syno-ux-button.syno-ux-button-blue.x-item-disabled em.x-btn-arrow,.syno-ux-button.syno-ux-button-blue.x-item-disabled em.x-btn-split,.syno-ux-button.syno-ux-button-red.x-item-disabled em.x-btn-arrow,.syno-ux-button.syno-ux-button-red.x-item-disabled em.x-btn-split,.syno-ux-button.syno-ux-button-green.x-item-disabled em.x-btn-arrow,.syno-ux-button.syno-ux-button-green.x-item-disabled em.x-btn-split,.syno-ux-button.syno-ux-button-orange.x-item-disabled em.x-btn-arrow,.syno-ux-button.syno-ux-button-orange.x-item-disabled em.x-btn-split{background-position-y:-84px}.syno-ux-button-blue,.syno-ux-button-red,.syno-ux-button-grey,.syno-ux-button-green,.syno-ux-button-orange{min-width:80px;text-align:center}.syno-ux-button-blue.syno-ux-button-dropdown,.syno-ux-button-blue.syno-ux-button-split,.syno-ux-button-red.syno-ux-button-dropdown,.syno-ux-button-red.syno-ux-button-split,.syno-ux-button-grey.syno-ux-button-dropdown,.syno-ux-button-grey.syno-ux-button-split,.syno-ux-button-green.syno-ux-button-dropdown,.syno-ux-button-green.syno-ux-button-split,.syno-ux-button-orange.syno-ux-button-dropdown,.syno-ux-button-orange.syno-ux-button-split{min-width:0px}.syno-ux-button-grey{border:solid 1px #C8D2DC;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2Y1ZmFmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2ViZjBmNSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f5faff), color-stop(100%, #ebf0f5));background-image:-webkit-linear-gradient(#f5faff,#ebf0f5);background-image:-moz-linear-gradient(#f5faff,#ebf0f5);background-image:-o-linear-gradient(#f5faff,#ebf0f5);background-image:linear-gradient(#f5faff,#ebf0f5);background-color:#ebf0f5}.syno-ux-button-grey.x-btn-over,.syno-ux-button-grey:hover{border:solid 1px #B4BEC8;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2Y1ZmFmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2U3ZWNmMSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f5faff), color-stop(100%, #e7ecf1));background-image:-webkit-linear-gradient(#f5faff,#e7ecf1);background-image:-moz-linear-gradient(#f5faff,#e7ecf1);background-image:-o-linear-gradient(#f5faff,#e7ecf1);background-image:linear-gradient(#f5faff,#e7ecf1);background-color:#e7ecf1}.syno-ux-button-grey.x-btn-click,.syno-ux-button-grey:active{border:solid 1px #B4BEC8;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ViZjBmNSIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2UxZTZlYiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ebf0f5), color-stop(100%, #e1e6eb));background-image:-webkit-linear-gradient(#ebf0f5,#e1e6eb);background-image:-moz-linear-gradient(#ebf0f5,#e1e6eb);background-image:-o-linear-gradient(#ebf0f5,#e1e6eb);background-image:linear-gradient(#ebf0f5,#e1e6eb);background-color:#e1e6eb}.syno-ux-button-grey.x-item-disabled{border:solid 1px #C8D2DC;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2Y1ZmFmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2ViZjBmNSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f5faff), color-stop(100%, #ebf0f5));background-image:-webkit-linear-gradient(#f5faff,#ebf0f5);background-image:-moz-linear-gradient(#f5faff,#ebf0f5);background-image:-o-linear-gradient(#f5faff,#ebf0f5);background-image:linear-gradient(#f5faff,#ebf0f5);background-color:#ebf0f5}.syno-ux-button-default{border:solid 1px #C8D2DC;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2Y1ZmFmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2YwZjVmYSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f5faff), color-stop(100%, #f0f5fa));background-image:-webkit-linear-gradient(#f5faff,#f0f5fa);background-image:-moz-linear-gradient(#f5faff,#f0f5fa);background-image:-o-linear-gradient(#f5faff,#f0f5fa);background-image:linear-gradient(#f5faff,#f0f5fa);background-color:#f0f5fa;margin-right:6px !important}.syno-ux-button-default.x-btn-over,.syno-ux-button-default:hover{border:solid 1px #B4BEC8;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2Y1ZmFmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2ViZjBmNSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f5faff), color-stop(100%, #ebf0f5));background-image:-webkit-linear-gradient(#f5faff,#ebf0f5);background-image:-moz-linear-gradient(#f5faff,#ebf0f5);background-image:-o-linear-gradient(#f5faff,#ebf0f5);background-image:linear-gradient(#f5faff,#ebf0f5);background-color:#ebf0f5}.syno-ux-button-default.x-btn-click,.syno-ux-button-default:active{border:solid 1px #B4BEC8;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ViZjBmNSIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2U2ZWJmMCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ebf0f5), color-stop(100%, #e6ebf0));background-image:-webkit-linear-gradient(#ebf0f5,#e6ebf0);background-image:-moz-linear-gradient(#ebf0f5,#e6ebf0);background-image:-o-linear-gradient(#ebf0f5,#e6ebf0);background-image:linear-gradient(#ebf0f5,#e6ebf0);background-color:#e6ebf0}.syno-ux-button-default.x-item-disabled{border:solid 1px #C8D2DC;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2Y1ZmFmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2YwZjVmYSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f5faff), color-stop(100%, #f0f5fa));background-image:-webkit-linear-gradient(#f5faff,#f0f5fa);background-image:-moz-linear-gradient(#f5faff,#f0f5fa);background-image:-o-linear-gradient(#f5faff,#f0f5fa);background-image:linear-gradient(#f5faff,#f0f5fa);background-color:#f0f5fa}.syno-ux-button-blue{border:solid 1px #1687D9;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzMyYWFmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzE5OTRlYiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #32aaff), color-stop(100%, #1994eb));background-image:-webkit-linear-gradient(#32aaff,#1994eb);background-image:-moz-linear-gradient(#32aaff,#1994eb);background-image:-o-linear-gradient(#32aaff,#1994eb);background-image:linear-gradient(#32aaff,#1994eb);background-color:#1994EB}.syno-ux-button-blue.x-btn button{color:#FFFFFF}.syno-ux-button-blue.x-btn-over,.syno-ux-button-blue:hover{border:solid 1px #0077CC;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzI1YTRmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzAyOGFlYiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #25a4ff), color-stop(100%, #028aeb));background-image:-webkit-linear-gradient(#25a4ff,#028aeb);background-image:-moz-linear-gradient(#25a4ff,#028aeb);background-image:-o-linear-gradient(#25a4ff,#028aeb);background-image:linear-gradient(#25a4ff,#028aeb);background-color:#028AEB}.syno-ux-button-blue.x-btn-over.x-btn button,.syno-ux-button-blue:hover.x-btn button{color:#FFFFFF}.syno-ux-button-blue.x-btn-click,.syno-ux-button-blue:active{border:solid 1px #0077CC;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzE4OTdmMiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzAxODJkZiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #1897f2), color-stop(100%, #0182df));background-image:-webkit-linear-gradient(#1897f2,#0182df);background-image:-moz-linear-gradient(#1897f2,#0182df);background-image:-o-linear-gradient(#1897f2,#0182df);background-image:linear-gradient(#1897f2,#0182df);background-color:#0182DF}.syno-ux-button-blue.x-btn-click.x-btn button,.syno-ux-button-blue:active.x-btn button{color:#FFFFFF}.syno-ux-button-blue.x-item-disabled{border:solid 1px #1687D9;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzMyYWFmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzE5OTRlYiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #32aaff), color-stop(100%, #1994eb));background-image:-webkit-linear-gradient(#32aaff,#1994eb);background-image:-moz-linear-gradient(#32aaff,#1994eb);background-image:-o-linear-gradient(#32aaff,#1994eb);background-image:linear-gradient(#32aaff,#1994eb);background-color:#1994EB}.syno-ux-button-blue.x-item-disabled.x-btn button{color:#99D4FF !important}.syno-ux-button-blue.syno-ux-button-dropdown.syno-ux-button-split button{border-right-color:#1687D9}.syno-ux-button-blue.syno-ux-button-dropdown.syno-ux-button-split.x-btn-over button{border-right-color:#0077CC}.syno-ux-button-blue.syno-ux-button-dropdown.syno-ux-button-split.x-btn-click button{border-right-color:#0077CC}.syno-ux-button-blue.syno-ux-button-dropdown.syno-ux-button-split.x-item-disabled button{border-right-color:#1687D9}.syno-ux-button-red{border:solid 1px #D14949;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZhNzA3MCIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2ViNWY1ZiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fa7070), color-stop(100%, #eb5f5f));background-image:-webkit-linear-gradient(#fa7070,#eb5f5f);background-image:-moz-linear-gradient(#fa7070,#eb5f5f);background-image:-o-linear-gradient(#fa7070,#eb5f5f);background-image:linear-gradient(#fa7070,#eb5f5f);background-color:#EB5F5F}.syno-ux-button-red.x-btn button{color:#FFFFFF}.syno-ux-button-red.x-btn-over,.syno-ux-button-red:hover{border:solid 1px #C43B38;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2Y5Njg2OCIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2RmNDg0OCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f96868), color-stop(100%, #df4848));background-image:-webkit-linear-gradient(#f96868,#df4848);background-image:-moz-linear-gradient(#f96868,#df4848);background-image:-o-linear-gradient(#f96868,#df4848);background-image:linear-gradient(#f96868,#df4848);background-color:#DF4848}.syno-ux-button-red.x-btn-over.x-btn button,.syno-ux-button-red:hover.x-btn button{color:#FFFFFF}.syno-ux-button-red.x-btn-click,.syno-ux-button-red:active{border:solid 1px #C43B38;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2U4NTY1NiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2Q5NDY0NiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e85656), color-stop(100%, #d94646));background-image:-webkit-linear-gradient(#e85656,#d94646);background-image:-moz-linear-gradient(#e85656,#d94646);background-image:-o-linear-gradient(#e85656,#d94646);background-image:linear-gradient(#e85656,#d94646);background-color:#D94646}.syno-ux-button-red.x-btn-click.x-btn button,.syno-ux-button-red:active.x-btn button{color:#FFFFFF}.syno-ux-button-red.x-item-disabled{border:solid 1px #D14949;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZhNzA3MCIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2ViNWY1ZiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fa7070), color-stop(100%, #eb5f5f));background-image:-webkit-linear-gradient(#fa7070,#eb5f5f);background-image:-moz-linear-gradient(#fa7070,#eb5f5f);background-image:-o-linear-gradient(#fa7070,#eb5f5f);background-image:linear-gradient(#fa7070,#eb5f5f);background-color:#EB5F5F}.syno-ux-button-red.x-item-disabled.x-btn button{color:#FFB2B2 !important}.syno-ux-button-red.syno-ux-button-dropdown.syno-ux-button-split button{border-right-color:#D14949}.syno-ux-button-red.syno-ux-button-dropdown.syno-ux-button-split.x-btn-over button{border-right-color:#C43B38}.syno-ux-button-red.syno-ux-button-dropdown.syno-ux-button-split.x-btn-click button{border-right-color:#C43B38}.syno-ux-button-red.syno-ux-button-dropdown.syno-ux-button-split.x-item-disabled button{border-right-color:#D14949}.syno-ux-button-green{border:solid 1px #7db012;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzlhY2YyOSIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzg4YmYxNCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #9acf29), color-stop(100%, #88bf14));background-image:-webkit-linear-gradient(#9acf29,#88bf14);background-image:-moz-linear-gradient(#9acf29,#88bf14);background-image:-o-linear-gradient(#9acf29,#88bf14);background-image:linear-gradient(#9acf29,#88bf14);background-color:#88bf14}.syno-ux-button-green.x-btn button{color:#FFFFFF}.syno-ux-button-green.x-btn-over,.syno-ux-button-green:hover{border:solid 1px #63a100;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzg4YzUyNyIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzc4YjcxNCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #88c527), color-stop(100%, #78b714));background-image:-webkit-linear-gradient(#88c527,#78b714);background-image:-moz-linear-gradient(#88c527,#78b714);background-image:-o-linear-gradient(#88c527,#78b714);background-image:linear-gradient(#88c527,#78b714);background-color:#78b714}.syno-ux-button-green.x-btn-over.x-btn button,.syno-ux-button-green:hover.x-btn button{color:#FFFFFF}.syno-ux-button-green.x-btn-click,.syno-ux-button-green:active{border:solid 1px #63a100;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzc2YmIyNSIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzY3YWQxMyIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #76bb25), color-stop(100%, #67ad13));background-image:-webkit-linear-gradient(#76bb25,#67ad13);background-image:-moz-linear-gradient(#76bb25,#67ad13);background-image:-o-linear-gradient(#76bb25,#67ad13);background-image:linear-gradient(#76bb25,#67ad13);background-color:#67ad13}.syno-ux-button-green.x-btn-click.x-btn button,.syno-ux-button-green:active.x-btn button{color:#FFFFFF}.syno-ux-button-green.x-item-disabled{border:solid 1px #7db012;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzdkYjAxMiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzg4YmYxNCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #7db012), color-stop(100%, #88bf14));background-image:-webkit-linear-gradient(#7db012,#88bf14);background-image:-moz-linear-gradient(#7db012,#88bf14);background-image:-o-linear-gradient(#7db012,#88bf14);background-image:linear-gradient(#7db012,#88bf14);background-color:#88bf14}.syno-ux-button-green.x-item-disabled.x-btn button{color:#cde894 !important}.syno-ux-button-green.syno-ux-button-dropdown.syno-ux-button-split button{border-right-color:#7db012}.syno-ux-button-green.syno-ux-button-dropdown.syno-ux-button-split.x-btn-over button{border-right-color:#63a100}.syno-ux-button-green.syno-ux-button-dropdown.syno-ux-button-split.x-btn-click button{border-right-color:#63a100}.syno-ux-button-green.syno-ux-button-dropdown.syno-ux-button-split.x-item-disabled button{border-right-color:#7db012}.syno-ux-button-orange{border:solid 1px #ef8202;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZhYTI0NiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2Y0OTgyZCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #faa246), color-stop(100%, #f4982d));background-image:-webkit-linear-gradient(#faa246,#f4982d);background-image:-moz-linear-gradient(#faa246,#f4982d);background-image:-o-linear-gradient(#faa246,#f4982d);background-image:linear-gradient(#faa246,#f4982d);background-color:#faa246}.syno-ux-button-orange.x-btn button{color:#FFFFFF}.syno-ux-button-orange.x-btn-over,.syno-ux-button-orange:hover{border:solid 1px #ea7702;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZhYTI0NiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2VmOGUyYyIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #faa246), color-stop(100%, #ef8e2c));background-image:-webkit-linear-gradient(#faa246,#ef8e2c);background-image:-moz-linear-gradient(#faa246,#ef8e2c);background-image:-o-linear-gradient(#faa246,#ef8e2c);background-image:linear-gradient(#faa246,#ef8e2c);background-color:#faa246}.syno-ux-button-orange.x-btn-over.x-btn button,.syno-ux-button-orange:hover.x-btn button{color:#FFFFFF}.syno-ux-button-orange.x-btn-click,.syno-ux-button-orange:active{border:solid 1px #ea7702;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZhOTk0NiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2VmODQyYyIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fa9946), color-stop(100%, #ef842c));background-image:-webkit-linear-gradient(#fa9946,#ef842c);background-image:-moz-linear-gradient(#fa9946,#ef842c);background-image:-o-linear-gradient(#fa9946,#ef842c);background-image:linear-gradient(#fa9946,#ef842c);background-color:#fa9946}.syno-ux-button-orange.x-btn-click.x-btn button,.syno-ux-button-orange:active.x-btn button{color:#FFFFFF}.syno-ux-button-orange.x-item-disabled{border:solid 1px #ef8202;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZhYTI0NiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2Y0OTgyZCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #faa246), color-stop(100%, #f4982d));background-image:-webkit-linear-gradient(#faa246,#f4982d);background-image:-moz-linear-gradient(#faa246,#f4982d);background-image:-o-linear-gradient(#faa246,#f4982d);background-image:linear-gradient(#faa246,#f4982d);background-color:#faa246}.syno-ux-button-orange.x-item-disabled.x-btn button{color:#ffe1be !important}.syno-ux-button-orange.syno-ux-button-dropdown.syno-ux-button-split button{border-right-color:#ef8202}.syno-ux-button-orange.syno-ux-button-dropdown.syno-ux-button-split.x-btn-over button{border-right-color:#ea7702}.syno-ux-button-orange.syno-ux-button-dropdown.syno-ux-button-split.x-btn-click button{border-right-color:#ea7702}.syno-ux-button-orange.syno-ux-button-dropdown.syno-ux-button-split.x-item-disabled button{border-right-color:#ef8202}.syno-ux-button.syno-ux-statebuttongroup-right,.syno-ux-button.syno-ux-statebuttongroup-left,.syno-ux-button.syno-ux-statebuttongroup-middle{margin-right:0px !important;border-color:#C8D2DC;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2Y1ZmFmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2YwZjVmYSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f5faff), color-stop(100%, #f0f5fa));background-image:-webkit-linear-gradient(#f5faff,#f0f5fa);background-image:-moz-linear-gradient(#f5faff,#f0f5fa);background-image:-o-linear-gradient(#f5faff,#f0f5fa);background-image:linear-gradient(#f5faff,#f0f5fa);background-color:#C8D2DC}.syno-ux-button.syno-ux-statebuttongroup-right.x-btn em button,.syno-ux-button.syno-ux-statebuttongroup-left.x-btn em button,.syno-ux-button.syno-ux-statebuttongroup-middle.x-btn em button{padding-right:18px;padding-left:18px}.syno-ux-button.syno-ux-statebuttongroup-right.x-btn-over,.syno-ux-button.syno-ux-statebuttongroup-right:hover,.syno-ux-button.syno-ux-statebuttongroup-left.x-btn-over,.syno-ux-button.syno-ux-statebuttongroup-left:hover,.syno-ux-button.syno-ux-statebuttongroup-middle.x-btn-over,.syno-ux-button.syno-ux-statebuttongroup-middle:hover{border-color:#C8D2DC;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2Y1ZmFmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2ViZjBmNSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f5faff), color-stop(100%, #ebf0f5));background-image:-webkit-linear-gradient(#f5faff,#ebf0f5);background-image:-moz-linear-gradient(#f5faff,#ebf0f5);background-image:-o-linear-gradient(#f5faff,#ebf0f5);background-image:linear-gradient(#f5faff,#ebf0f5);background-color:#EBF0F5}.syno-ux-button.syno-ux-statebuttongroup-right.x-btn-click,.syno-ux-button.syno-ux-statebuttongroup-right.syno-ux-statebuttongroup-pressed,.syno-ux-button.syno-ux-statebuttongroup-left.x-btn-click,.syno-ux-button.syno-ux-statebuttongroup-left.syno-ux-statebuttongroup-pressed,.syno-ux-button.syno-ux-statebuttongroup-middle.x-btn-click,.syno-ux-button.syno-ux-statebuttongroup-middle.syno-ux-statebuttongroup-pressed{border-color:#0970CB;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzE3OTNlYiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzNiYTZmMyIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #1793eb), color-stop(100%, #3ba6f3));background-image:-webkit-linear-gradient(#1793eb,#3ba6f3);background-image:-moz-linear-gradient(#1793eb,#3ba6f3);background-image:-o-linear-gradient(#1793eb,#3ba6f3);background-image:linear-gradient(#1793eb,#3ba6f3);background-color:#3BA6F3;box-shadow:inset 0px 1px 2px #007bd3}.syno-ux-button.syno-ux-statebuttongroup-right.x-btn-click.x-btn button,.syno-ux-button.syno-ux-statebuttongroup-right.syno-ux-statebuttongroup-pressed.x-btn button,.syno-ux-button.syno-ux-statebuttongroup-left.x-btn-click.x-btn button,.syno-ux-button.syno-ux-statebuttongroup-left.syno-ux-statebuttongroup-pressed.x-btn button,.syno-ux-button.syno-ux-statebuttongroup-middle.x-btn-click.x-btn button,.syno-ux-button.syno-ux-statebuttongroup-middle.syno-ux-statebuttongroup-pressed.x-btn button{color:#FFFFFF;text-shadow:0px 1px 0px rgba(0,0,0,0.15)}.syno-ux-button.syno-ux-statebuttongroup-right.x-item-disabled,.syno-ux-button.syno-ux-statebuttongroup-left.x-item-disabled,.syno-ux-button.syno-ux-statebuttongroup-middle.x-item-disabled{border-color:#C8D2DC;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2Y1ZmFmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2YwZjVmYSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f5faff), color-stop(100%, #f0f5fa));background-image:-webkit-linear-gradient(#f5faff,#f0f5fa);background-image:-moz-linear-gradient(#f5faff,#f0f5fa);background-image:-o-linear-gradient(#f5faff,#f0f5fa);background-image:linear-gradient(#f5faff,#f0f5fa);background-color:#F0F5FA}.syno-ux-button.syno-ux-statebuttongroup-right,.syno-ux-button.syno-ux-statebuttongroup-middle{border-top-left-radius:0px;border-bottom-left-radius:0px}.syno-ux-button.syno-ux-statebuttongroup-left,.syno-ux-button.syno-ux-statebuttongroup-middle{border-right:0px;border-top-right-radius:0px;border-bottom-right-radius:0px}.syno-ux-modulelist{padding-right:6px;background-position:right 0;background-repeat:repeat-y;background-image:url("./images/Components/shadow_category.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist{background-image:url("../img/synohdpack/./images/Components/shadow_category.png");background-size:4px 8px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist{background-image:url("../img/synohdpack/./images/Components/shadow_category.png");background-size:4px 8px;outline:1px green dashed}}.syno-ux-modulelist .x-panel-body{overflow-y:hidden}.syno-ux-modulelist .x-panel-body:before,.syno-ux-modulelist .x-panel-body:after{position:absolute;display:block;height:6px;content:"";width:94%}.syno-ux-modulelist .x-panel-body:before{top:0px;z-index:99;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0icmdiYSgyNTUsMjU1LDI1NSwwKSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, rgba(255,255,255,0)));background-image:-webkit-linear-gradient(#ffffff,rgba(255,255,255,0));background-image:-moz-linear-gradient(#ffffff,rgba(255,255,255,0));background-image:-o-linear-gradient(#ffffff,rgba(255,255,255,0));background-image:linear-gradient(#ffffff,rgba(255,255,255,0))}.syno-ux-modulelist .x-panel-body:after{bottom:0;z-index:99;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0icmdiYSgyNTUsMjU1LDI1NSwwKSIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, rgba(255,255,255,0)), color-stop(100%, #ffffff));background-image:-webkit-linear-gradient(rgba(255,255,255,0),#ffffff);background-image:-moz-linear-gradient(rgba(255,255,255,0),#ffffff);background-image:-o-linear-gradient(rgba(255,255,255,0),#ffffff);background-image:linear-gradient(rgba(255,255,255,0),#ffffff)}.syno-ux-modulelist.scroll-at-top .x-panel-body:before{display:none}.syno-ux-modulelist.scroll-at-bottom .x-panel-body:after{display:none}.syno-ux-modulelist .x-tree-root-ct{width:auto !important}.syno-ux-modulelist .x-tree-root-node{padding-bottom:8px}.syno-ux-modulelist .x-tree-elbow,.syno-ux-modulelist .x-tree-elbow-end{display:none}.syno-ux-modulelist .x-tree-node,.syno-ux-modulelist .x-tree-node *{cursor:pointer}.syno-ux-modulelist .x-tree-node .x-tree-selected,.syno-ux-modulelist .x-tree-node .x-tree-node-over{background-color:transparent}.syno-ux-modulelist .x-tree-node-icon{width:24px;height:24px;margin:13px 6px 0 8px}.syno-ux-modulelist .syno-modulelist-toggle,.syno-ux-modulelist .x-tree-node-collapsed .x-tree-elbow-minus,.syno-ux-modulelist .x-tree-node-collapsed .x-tree-elbow-end-minus,.syno-ux-modulelist .x-tree-node-expanded .x-tree-elbow-minus,.syno-ux-modulelist .x-tree-node-expanded .x-tree-elbow-end-minus,.syno-ux-modulelist .x-tree-node-collapsed .x-tree-elbow-plus,.syno-ux-modulelist .x-tree-node-collapsed .x-tree-elbow-end-plus,.syno-ux-modulelist .x-tree-node-expanded .x-tree-elbow-plus,.syno-ux-modulelist .x-tree-node-expanded .x-tree-elbow-end-plus{width:24px;height:24px;margin:2px}.syno-ux-modulelist .x-tree-node-collapsed,.syno-ux-modulelist .x-tree-node-expanded{height:27px;margin:4px 0;font-size:12px;font-weight:bold;border-bottom:1px solid #EBF0F5}.syno-ux-modulelist .x-tree-node-collapsed .x-tree-node-icon,.syno-ux-modulelist .x-tree-node-expanded .x-tree-node-icon{display:none}.syno-ux-modulelist .x-tree-node-collapsed a,.syno-ux-modulelist .x-tree-node-expanded a{display:inline-block;width:100%;position:absolute;left:0;color:#6B95B2;overflow:hidden;text-overflow:ellipsis;line-height:27px}.syno-ux-modulelist .x-tree-node-collapsed a span,.syno-ux-modulelist .x-tree-node-expanded a span{color:#6B95B2;margin-left:28px}.syno-ux-modulelist .x-tree-node-collapsed .x-tree-elbow-minus,.syno-ux-modulelist .x-tree-node-collapsed .x-tree-elbow-end-minus,.syno-ux-modulelist .x-tree-node-expanded .x-tree-elbow-minus,.syno-ux-modulelist .x-tree-node-expanded .x-tree-elbow-end-minus{background-image:url("./images/Components/category_expand.png");background-position:0 -72px}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-collapsed .x-tree-elbow-minus,.synohdpack .syno-ux-modulelist .x-tree-node-collapsed .x-tree-elbow-end-minus,.synohdpack .syno-ux-modulelist .x-tree-node-expanded .x-tree-elbow-minus,.synohdpack .syno-ux-modulelist .x-tree-node-expanded .x-tree-elbow-end-minus{background-image:url("../img/synohdpack/./images/Components/category_expand.png");background-size:24px 144px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-collapsed .x-tree-elbow-minus,.synohdpackdebug .syno-ux-modulelist .x-tree-node-collapsed .x-tree-elbow-end-minus,.synohdpackdebug .syno-ux-modulelist .x-tree-node-expanded .x-tree-elbow-minus,.synohdpackdebug .syno-ux-modulelist .x-tree-node-expanded .x-tree-elbow-end-minus{background-image:url("../img/synohdpack/./images/Components/category_expand.png");background-size:24px 144px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-collapsed .x-tree-elbow-plus,.syno-ux-modulelist .x-tree-node-collapsed .x-tree-elbow-end-plus,.syno-ux-modulelist .x-tree-node-expanded .x-tree-elbow-plus,.syno-ux-modulelist .x-tree-node-expanded .x-tree-elbow-end-plus{background-image:url("./images/Components/category_expand.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-collapsed .x-tree-elbow-plus,.synohdpack .syno-ux-modulelist .x-tree-node-collapsed .x-tree-elbow-end-plus,.synohdpack .syno-ux-modulelist .x-tree-node-expanded .x-tree-elbow-plus,.synohdpack .syno-ux-modulelist .x-tree-node-expanded .x-tree-elbow-end-plus{background-image:url("../img/synohdpack/./images/Components/category_expand.png");background-size:24px 144px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-collapsed .x-tree-elbow-plus,.synohdpackdebug .syno-ux-modulelist .x-tree-node-collapsed .x-tree-elbow-end-plus,.synohdpackdebug .syno-ux-modulelist .x-tree-node-expanded .x-tree-elbow-plus,.synohdpackdebug .syno-ux-modulelist .x-tree-node-expanded .x-tree-elbow-end-plus{background-image:url("../img/synohdpack/./images/Components/category_expand.png");background-size:24px 144px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-collapsed:hover,.syno-ux-modulelist .x-tree-node-expanded:hover{border-bottom:1px solid #D7E1EB}.syno-ux-modulelist .x-tree-node-collapsed:hover a span,.syno-ux-modulelist .x-tree-node-expanded:hover a span{color:#5C9DCC}.syno-ux-modulelist .x-tree-node-collapsed:hover .x-tree-elbow-minus,.syno-ux-modulelist .x-tree-node-expanded:hover .x-tree-elbow-minus{background-position:0 -96px}.syno-ux-modulelist .x-tree-node-collapsed:hover .x-tree-elbow-plus,.syno-ux-modulelist .x-tree-node-expanded:hover .x-tree-elbow-plus{background-position:0 -24px}.syno-ux-modulelist .x-tree-node-collapsed:active a span,.syno-ux-modulelist .x-tree-node-expanded:active a span{color:#5383A6}.syno-ux-modulelist .x-tree-node-collapsed:active .x-tree-elbow-minus,.syno-ux-modulelist .x-tree-node-expanded:active .x-tree-elbow-minus{background-position:0 -120px}.syno-ux-modulelist .x-tree-node-collapsed:active .x-tree-elbow-plus,.syno-ux-modulelist .x-tree-node-expanded:active .x-tree-elbow-plus{background-position:0 -48px}.syno-ux-modulelist .x-tree-node-leaf{height:50px;font-size:14px}.syno-ux-modulelist .x-tree-node-leaf a{display:inline-block;width:100%;position:absolute;left:0}.syno-ux-modulelist .x-tree-node-leaf a span{padding:0 0 0 38px;display:table-cell;line-height:20px;height:50px;white-space:normal;vertical-align:middle}.syno-ux-modulelist .x-tree-node-leaf .x-tree-node-icon{position:absolute;background-position:0 0;background-image:url("images/Components/c_icon_general.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .x-tree-node-icon{background-image:url("../img/synohdpack/images/Components/c_icon_general.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .x-tree-node-icon{background-image:url("../img/synohdpack/images/Components/c_icon_general.png");background-size:24px 96px;outline:1px green dashed}}.syno-ux-modulelist .x-tree-node-leaf.x-tree-node-over .x-tree-node-icon{background-position:0 -24px}.syno-ux-modulelist .x-tree-node-leaf.x-tree-selected{border-radius:3px}.syno-ux-modulelist .x-tree-node-leaf.x-tree-selected a span{color:#FFFFFF;text-shadow:0 1px 0 rgba(0,0,0,0.15)}.syno-ux-modulelist .x-tree-node-leaf.x-tree-selected .x-tree-node-icon{background-position:0 -48px}.syno-ux-modulelist .x-tree-node-leaf.x-tree-node-disabled .x-tree-node-icon{background-position:0 -72px;opacity:1}.syno-ux-modulelist .x-toolbar{border:none !important;background:none;padding:0 12px}.syno-ux-modulelist .x-panel-bwrap .x-panel-tbar .x-toolbar{padding-bottom:0}.syno-ux-modulelist .syno-textfilter .x-form-field-wrap{border-color:#C8D2DC;background-color:transparent;box-shadow:inset 0px 1px 0px rgba(80,90,100,0.08);background-image:none}.syno-ux-modulelist .syno-textfilter .x-form-field-wrap:hover{border-color:#B4BEC8}.syno-ux-modulelist .syno-textfilter .x-form-field-wrap .syno-textfilter-trigger{width:24px;margin-top:2px;visibility:hidden;background-image:url("./images/Components/icon_search_clear.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .syno-textfilter .x-form-field-wrap .syno-textfilter-trigger{background-image:url("../img/synohdpack/./images/Components/icon_search_clear.png");background-size:24px 144px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .syno-textfilter .x-form-field-wrap .syno-textfilter-trigger{background-image:url("../img/synohdpack/./images/Components/icon_search_clear.png");background-size:24px 144px;outline:1px green dashed}}.syno-ux-modulelist .syno-textfilter .x-form-field-wrap .syno-textfilter-trigger:hover{background-position:0 -24px}.syno-ux-modulelist .syno-textfilter .x-form-field-wrap .syno-textfilter-trigger:active{background-position:0 -48px}.syno-ux-modulelist .syno-textfilter .x-form-field-wrap .syno-textfilter-text{font-size:12px;height:24px !important;padding-left:30px;background-position:4px 1px;background-repeat:no-repeat;background-image:url("./images/Components/icon_search.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .syno-textfilter .x-form-field-wrap .syno-textfilter-text{background-image:url("../img/synohdpack/./images/Components/icon_search.png");background-size:24px 24px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .syno-textfilter .x-form-field-wrap .syno-textfilter-text{background-image:url("../img/synohdpack/./images/Components/icon_search.png");background-size:24px 24px;outline:1px green dashed}}.syno-ux-radio-icon{background-image:url("images/Components/radio_button.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-radio-icon{background-image:url("../img/synohdpack/images/Components/radio_button.png");background-size:22px 132px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-radio-icon{background-image:url("../img/synohdpack/images/Components/radio_button.png");background-size:22px 132px;outline:1px green dashed}}.x-form-field-trigger-wrap.x-form-field-wrap .syno-ux-datefield-trigger.x-form-trigger{background-image:url("images/Components/trigger_date.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .x-form-field-trigger-wrap.x-form-field-wrap .syno-ux-datefield-trigger.x-form-trigger{background-image:url("../img/synohdpack/images/Components/trigger_date.png");background-size:104px 28px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .x-form-field-trigger-wrap.x-form-field-wrap .syno-ux-datefield-trigger.x-form-trigger{background-image:url("../img/synohdpack/images/Components/trigger_date.png");background-size:104px 28px;outline:1px green dashed}}.syno-ux-datefield-menu{border-color:#C8D2DC}.syno-ux-datefield-menu .x-menu-list-item.x-menu-date-item{padding-top:6px;padding-right:6px;padding-left:6px}.syno-ux-datefield-menu .x-date-right,.syno-ux-datefield-menu .x-date-middle,.syno-ux-datefield-menu .x-date-left{background-image:none;height:28px}.syno-ux-datefield-menu .x-date-right a,.syno-ux-datefield-menu .x-date-left a{width:24px;height:24px;background-image:url("images/Components/date_prev_next.png");opacity:1}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-datefield-menu .x-date-right a,.synohdpack .syno-ux-datefield-menu .x-date-left a{background-image:url("../img/synohdpack/images/Components/date_prev_next.png");background-size:24px 192px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-datefield-menu .x-date-right a,.synohdpackdebug .syno-ux-datefield-menu .x-date-left a{background-image:url("../img/synohdpack/images/Components/date_prev_next.png");background-size:24px 192px;outline:1px green dashed}}.syno-ux-datefield-menu .x-date-left a{background-position:0px 0px}.syno-ux-datefield-menu .x-date-right a{background-position:0px -96px}.syno-ux-datefield-menu .x-date-middle{padding:0px}.syno-ux-datefield-menu .x-date-middle .x-btn button{height:28px;font-size:12px}.syno-ux-datefield-menu .x-date-middle .x-btn-mc em.x-btn-arrow{background-image:url("images/Components/date_dropdown.png");background-position:right 0px}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-datefield-menu .x-date-middle .x-btn-mc em.x-btn-arrow{background-image:url("../img/synohdpack/images/Components/date_dropdown.png");background-size:6px 112px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-datefield-menu .x-date-middle .x-btn-mc em.x-btn-arrow{background-image:url("../img/synohdpack/images/Components/date_dropdown.png");background-size:6px 112px;outline:1px green dashed}}.syno-ux-datefield-menu .x-date-middle .x-btn-over em.x-btn-arrow{background-position:right -28px}.syno-ux-datefield-menu .x-date-middle .x-btn-click em.x-btn-arrow{background-position:right -56px}.syno-ux-datefield-menu table.x-date-inner{padding-bottom:4px;width:223px}.syno-ux-datefield-menu table.x-date-inner thead th{background-image:none;background-color:white;border:0px}.syno-ux-datefield-menu table.x-date-inner thead th span{height:28px;line-height:28px;padding:0px;margin-bottom:3px;text-align:center;border-bottom:1px solid #D7E1EB}.syno-ux-datefield-menu table.x-date-inner tbody tr td{height:24px;width:32px;border:0px}.syno-ux-datefield-menu table.x-date-inner tbody tr td a{background-color:transparent;border:0px;padding:0px;text-align:center;width:28px;height:24px;line-height:24px;margin-left:2px;margin-right:2px}.syno-ux-datefield-menu table.x-date-inner tbody tr td span{font-size:12px}.syno-ux-datefield-menu table.x-date-inner tbody tr td.x-date-disabled span,.syno-ux-datefield-menu table.x-date-inner tbody tr td.x-date-prevday span,.syno-ux-datefield-menu table.x-date-inner tbody tr td.x-date-nextday span{color:#96A0AA}.syno-ux-datefield-menu table.x-date-inner tbody tr td.x-date-disabled a{background-color:transparent}.syno-ux-datefield-menu table.x-date-inner tbody tr td.x-date-selected a span{color:white;font-weight:bold}.syno-ux-datefield-menu table.x-date-inner tbody tr td.x-date-today a{border-bottom:2px solid #FA4B4B;height:22px}.syno-ux-datefield-menu table.x-date-inner tbody tr td.x-date-today a span{color:#FA4B4B;font-weight:bold}.syno-ux-datefield-menu table.x-date-inner tbody tr td.x-date-selected.x-date-active:hover span{color:white}.syno-ux-datefield-menu table.x-date-inner tbody tr td.x-date-today.x-date-active:hover span{color:#FA4B4B}.syno-ux-datefield-menu table.x-date-inner tbody tr td.x-date-today.x-date-selected.x-date-active:hover span{color:white}.syno-ux-datefield-menu table.x-date-inner tbody tr td.x-date-selected.x-date-today a{border:0px;background-color:#FA4B4B;height:24px}.syno-ux-datefield-menu table.x-date-inner tbody tr td.x-date-selected.x-date-today a span{color:white;font-weight:bold}.syno-ux-datefield-menu .x-date-bottom{margin-top:4px;background-image:none;background-color:white;border-top:1px solid #D7E1EB;padding:0px;height:37px}.syno-ux-datefield-menu .x-date-bottom .x-btn-ml,.syno-ux-datefield-menu .x-date-bottom .x-btn-mc,.syno-ux-datefield-menu .x-date-bottom .x-btn-mr{background-image:none}.syno-ux-datefield-menu .x-date-bottom .x-btn-noicon .x-btn-small button{width:70px;height:24px;border-radius:3px;border:solid 1px #C8D2DC;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2Y1ZmFmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2ViZjBmNSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f5faff), color-stop(100%, #ebf0f5));background-image:-webkit-linear-gradient(#f5faff,#ebf0f5);background-image:-moz-linear-gradient(#f5faff,#ebf0f5);background-image:-o-linear-gradient(#f5faff,#ebf0f5);background-image:linear-gradient(#f5faff,#ebf0f5);background-color:#EBF0F5}.syno-ux-datefield-menu .x-date-bottom .x-btn-over.x-btn-noicon .x-btn-small button{border:solid 1px #B4BEC8;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2Y1ZmFmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2U3ZWNmMSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f5faff), color-stop(100%, #e7ecf1));background-image:-webkit-linear-gradient(#f5faff,#e7ecf1);background-image:-moz-linear-gradient(#f5faff,#e7ecf1);background-image:-o-linear-gradient(#f5faff,#e7ecf1);background-image:linear-gradient(#f5faff,#e7ecf1);background-color:#E7ECF1}.syno-ux-datefield-menu .x-date-bottom .x-btn-click.x-btn-noicon .x-btn-small button{border:solid 1px #B4BEC8;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ViZjBmNSIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2UxZTZlYiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ebf0f5), color-stop(100%, #e1e6eb));background-image:-webkit-linear-gradient(#ebf0f5,#e1e6eb);background-image:-moz-linear-gradient(#ebf0f5,#e1e6eb);background-image:-o-linear-gradient(#ebf0f5,#e1e6eb);background-image:linear-gradient(#ebf0f5,#e1e6eb);background-color:#E1E6EB}.ext-ie9 .syno-ux-datefield-menu .x-date-picker,.ext-ie8 .syno-ux-datefield-menu .x-date-picker{width:auto !important}.ext-ie9 .syno-ux-datefield-menu .x-date-picker .x-date-mp,.ext-ie8 .syno-ux-datefield-menu .x-date-picker .x-date-mp{width:auto !important}.syno-ux-datefield-menu .x-date-mp tr td a{width:50px;height:24px;line-height:24px;padding:0px;font-size:12px;border:0px}.syno-ux-datefield-menu .x-date-mp tr td.x-date-mp-sel a{color:white;font-weight:bold;background-image:none}.syno-ux-datefield-menu .x-date-mp-year{padding-left:6px;padding-right:0px}.syno-ux-datefield-menu .x-date-mp-month{padding-right:6px;padding-left:0px}.syno-ux-datefield-menu .x-date-mp-ybtn .x-date-mp-prev,.syno-ux-datefield-menu .x-date-mp-ybtn .x-date-mp-next{background-image:url("images/Components/date_prev_next.png");width:24px;height:24px}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-datefield-menu .x-date-mp-ybtn .x-date-mp-prev,.synohdpack .syno-ux-datefield-menu .x-date-mp-ybtn .x-date-mp-next{background-image:url("../img/synohdpack/images/Components/date_prev_next.png");background-size:24px 192px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-datefield-menu .x-date-mp-ybtn .x-date-mp-prev,.synohdpackdebug .syno-ux-datefield-menu .x-date-mp-ybtn .x-date-mp-next{background-image:url("../img/synohdpack/images/Components/date_prev_next.png");background-size:24px 192px;outline:1px green dashed}}.syno-ux-datefield-menu .x-date-mp-ybtn .x-date-mp-prev{background-position:0px 0px}.syno-ux-datefield-menu .x-date-mp-ybtn .x-date-mp-prev:hover{background-position:0px -24px}.syno-ux-datefield-menu .x-date-mp-ybtn .x-date-mp-next{background-position:0px -96px}.syno-ux-datefield-menu .x-date-mp-ybtn .x-date-mp-next:hover{background-position:0px -120px}.syno-ux-datefield-menu .x-date-mp-btns{background-image:none;background-color:white}.syno-ux-datefield-menu .x-date-mp-btns td{border-top:1px solid #D7E1EB;padding:0px;height:37px}.syno-ux-datefield-menu .x-date-mp-btns button{width:70px;height:24px;border-radius:3px}.syno-ux-datefield-menu .x-date-mp-btns button.x-date-mp-ok{margin-right:10px;border:solid 1px #1687D9;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzMyYWFmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzE5OTRlYiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #32aaff), color-stop(100%, #1994eb));background-image:-webkit-linear-gradient(#32aaff,#1994eb);background-image:-moz-linear-gradient(#32aaff,#1994eb);background-image:-o-linear-gradient(#32aaff,#1994eb);background-image:linear-gradient(#32aaff,#1994eb);background-color:#1994EB;color:#FFFFFF}.syno-ux-datefield-menu .x-date-mp-btns button.x-date-mp-ok:hover{border:solid 1px #0077CC;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzI1YTRmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzAyOGFlYiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #25a4ff), color-stop(100%, #028aeb));background-image:-webkit-linear-gradient(#25a4ff,#028aeb);background-image:-moz-linear-gradient(#25a4ff,#028aeb);background-image:-o-linear-gradient(#25a4ff,#028aeb);background-image:linear-gradient(#25a4ff,#028aeb);background-color:#028AEB}.syno-ux-datefield-menu .x-date-mp-btns button.x-date-mp-cancel{border:solid 1px #C8D2DC;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2Y1ZmFmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2ViZjBmNSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f5faff), color-stop(100%, #ebf0f5));background-image:-webkit-linear-gradient(#f5faff,#ebf0f5);background-image:-moz-linear-gradient(#f5faff,#ebf0f5);background-image:-o-linear-gradient(#f5faff,#ebf0f5);background-image:linear-gradient(#f5faff,#ebf0f5);background-color:#EBF0F5}.syno-ux-datefield-menu .x-date-mp-btns button.x-date-mp-cancel:hover{border:solid 1px #B4BEC8;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2Y1ZmFmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2U3ZWNmMSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f5faff), color-stop(100%, #e7ecf1));background-image:-webkit-linear-gradient(#f5faff,#e7ecf1);background-image:-moz-linear-gradient(#f5faff,#e7ecf1);background-image:-o-linear-gradient(#f5faff,#e7ecf1);background-image:linear-gradient(#f5faff,#e7ecf1);background-color:#E7ECF1}.x-form-item .x-form-item-label.syno-ux-item-label{font-size:12px;line-height:28px;padding:0px}.syno-ux-textarea{font-size:12px;color:#505A64;background-color:#FFFFFF;box-shadow:inset 0px 1px 0px rgba(80,90,100,0.08)}.syno-ux-textarea.x-form-field{padding-left:8px;background-image:none;border-color:#C8D2DC;height:24px}.syno-ux-textarea.syno-ux-textarea-hover{border-color:#B4BEC8}.syno-ux-textarea.x-form-invalid{border-color:#FF8C8C;background-color:#FFF0F0;background-image:none}.syno-ux-textarea.x-item-disabled.x-form-field{color:#96A0AA;border-color:#C8D2DC;background-color:#F6F8FA}.x-form-item .x-form-item-label.syno-ux-item-label{font-size:12px;color:#505A64;line-height:28px;padding:0px}.syno-ux-form-fleXcroll-wrap{position:relative;display:inline-block}.syno-ux-form-fleXcroll-wrap .syno-ux-form-fleXcroll-element{position:absolute;right:0px;top:0px;width:10px}.syno-ux-form-fleXcroll-wrap .syno-ux-form-fleXcroll-element .syno-ux-form-fleXcroll-inner-element{width:10px}.syno-ux-textfilter .x-form-field-wrap{border:1px solid #C8D2DC;background-color:#FFFFFF;box-shadow:inset 0px 1px 0px rgba(80,90,100,0.08);background-image:none}.syno-ux-textfilter .x-form-field-wrap div{background-color:transparent}.syno-ux-textfilter .x-form-field-wrap .syno-ux-textfilter-text.x-form-text{font-size:12px;height:24px !important;padding-left:30px;border:0px;background-position:4px 1px;background-repeat:no-repeat;background-color:transparent;background-image:url("./images/Components/icon_search.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-textfilter .x-form-field-wrap .syno-ux-textfilter-text.x-form-text{background-image:url("../img/synohdpack/./images/Components/icon_search.png");background-size:24px 24px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-textfilter .x-form-field-wrap .syno-ux-textfilter-text.x-form-text{background-image:url("../img/synohdpack/./images/Components/icon_search.png");background-size:24px 24px;outline:1px green dashed}}.syno-ux-textfilter .x-form-field-wrap .syno-ux-textfilter-text.x-form-text.syno-ux-textfilter-filter-icon{background-position:4px 1px;background-repeat:no-repeat;background-image:url("./images/Components/icon_filter.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-textfilter .x-form-field-wrap .syno-ux-textfilter-text.x-form-text.syno-ux-textfilter-filter-icon{background-image:url("../img/synohdpack/./images/Components/icon_filter.png");background-size:24px 24px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-textfilter .x-form-field-wrap .syno-ux-textfilter-text.x-form-text.syno-ux-textfilter-filter-icon{background-image:url("../img/synohdpack/./images/Components/icon_filter.png");background-size:24px 24px;outline:1px green dashed}}.syno-ux-textfilter .x-form-field-wrap .syno-ux-textfilter-trigger{background-position:0px 0px;background-repeat:no-repeat;background-image:url("./images/Components/icon_search_clear.png");border:none;width:24px;height:24px;right:0px;margin-top:1px}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-textfilter .x-form-field-wrap .syno-ux-textfilter-trigger{background-image:url("../img/synohdpack/./images/Components/icon_search_clear.png");background-size:24px 144px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-textfilter .x-form-field-wrap .syno-ux-textfilter-trigger{background-image:url("../img/synohdpack/./images/Components/icon_search_clear.png");background-size:24px 144px;outline:1px green dashed}}.syno-ux-textfilter .x-form-field-wrap .syno-ux-textfilter-trigger.x-form-trigger-over{background-position:0px -24px}.syno-ux-textfilter .x-form-field-wrap .syno-ux-textfilter-trigger.x-form-trigger-click{background-position:0px -48px}.syno-ux-textfilter .x-form-field-wrap:hover{border-color:#B4BEC8}.syno-ux-textfilter .x-form-field-wrap.x-form-field-wrap{background-image:none}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-textfilter .x-form-field-wrap.x-form-field-wrap{background-image:none}}.syno-ux-textfilter .x-form-field-wrap.x-form-field-wrap .x-form-field-wrap-center-img{width:34px;height:24px;background-position:0px 1px;background-repeat:no-repeat;background-image:url("images/Components/icon_advanced_search.png");padding-top:1px;padding-bottom:1px;display:table-cell;cursor:pointer}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-textfilter .x-form-field-wrap.x-form-field-wrap .x-form-field-wrap-center-img{background-image:url("../img/synohdpack/images/Components/icon_advanced_search.png");background-size:34px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-textfilter .x-form-field-wrap.x-form-field-wrap .x-form-field-wrap-center-img{background-image:url("../img/synohdpack/images/Components/icon_advanced_search.png");background-size:34px 96px;outline:1px green dashed}}.syno-ux-textfilter .x-form-field-wrap.x-form-field-wrap .x-form-field-wrap-center-img:hover{background-position:0px -23px}.syno-ux-textfilter .x-form-field-wrap.x-item-disabled{border-color:#C8D2DC;background-color:#F6F8FA}.syno-ux-textfilter .x-form-field-wrap.x-item-disabled .x-form-field-wrap-center-img{background-position:0 -71px}.syno-ux-textfilter .x-form-field-wrap.x-item-disabled .x-form-field-wrap-center-img:hover{background-position:0 -71px}.syno-ux-textfilter.syno-ux-searchfield .x-form-field-wrap .syno-ux-textfilter-text.x-form-text{background-image:none;padding-left:0;display:block;vertical-align:inherit}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-textfilter.syno-ux-searchfield .x-form-field-wrap .syno-ux-textfilter-text.x-form-text{background-image:none}}input[type="file"]::-webkit-file-upload-button{cursor:pointer}.syno-ux-filebutton{filter:Alpha(opacity=0);opacity:0;position:absolute !important;padding:0px;border:none;cursor:pointer;z-index:1}.ext-ie .syno-ux-filebutton{font-size:1000px}.syno-ux-filebutton.x-item-disabled{filter:Alpha(opacity=0) !important;opacity:0 !important}.syno-ux-filebutton-btn-wrap{display:inline-block}.syno-ux-filebutton-txt{vertical-align:top}.syno-ux-formpanel .x-panel-body{padding-top:3px;padding-right:10px}.syno-ux-formpanel.syno-ux-formpanel-gradient.syno-ux-formpanel-no-tbar:before{position:absolute;display:block;height:6px;content:"";width:90%;z-index:99;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0icmdiYSgyNTUsMjU1LDI1NSwwKSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, rgba(255,255,255,0)));background-image:-webkit-linear-gradient(#ffffff,rgba(255,255,255,0));background-image:-moz-linear-gradient(#ffffff,rgba(255,255,255,0));background-image:-o-linear-gradient(#ffffff,rgba(255,255,255,0));background-image:linear-gradient(#ffffff,rgba(255,255,255,0))}.syno-ux-formpanel.syno-ux-formpanel-gradient.syno-ux-formpanel-no-tbar.scroll-at-top:before{display:none}.syno-ux-formpanel.syno-ux-formpanel-gradient .x-panel-tbar:after{position:absolute;display:block;height:6px;content:"";width:90%;z-index:99;margin-top:0px;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0icmdiYSgyNTUsMjU1LDI1NSwwKSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, rgba(255,255,255,0)));background-image:-webkit-linear-gradient(#ffffff,rgba(255,255,255,0));background-image:-moz-linear-gradient(#ffffff,rgba(255,255,255,0));background-image:-o-linear-gradient(#ffffff,rgba(255,255,255,0));background-image:linear-gradient(#ffffff,rgba(255,255,255,0))}.syno-ux-formpanel.syno-ux-formpanel-gradient.scroll-at-bottom .x-panel-tbar:after{display:none}.syno-ux-formpanel.syno-ux-formpanel-gradient.syno-ux-formpanel-no-fbar:after{position:absolute;display:block;height:6px;content:"";width:90%;z-index:99;margin-top:-6px;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0icmdiYSgyNTUsMjU1LDI1NSwwKSIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, rgba(255,255,255,0)), color-stop(100%, #ffffff));background-image:-webkit-linear-gradient(rgba(255,255,255,0),#ffffff);background-image:-moz-linear-gradient(rgba(255,255,255,0),#ffffff);background-image:-o-linear-gradient(rgba(255,255,255,0),#ffffff);background-image:linear-gradient(rgba(255,255,255,0),#ffffff)}.syno-ux-formpanel.syno-ux-formpanel-gradient.syno-ux-formpanel-no-fbar.scroll-at-bottom:after{display:none}.syno-ux-formpanel.syno-ux-formpanel-gradient .x-panel-footer:before{position:absolute;display:block;height:6px;content:"";width:90%;z-index:99;margin-top:-10px;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0icmdiYSgyNTUsMjU1LDI1NSwwKSIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, rgba(255,255,255,0)), color-stop(100%, #ffffff));background-image:-webkit-linear-gradient(rgba(255,255,255,0),#ffffff);background-image:-moz-linear-gradient(rgba(255,255,255,0),#ffffff);background-image:-o-linear-gradient(rgba(255,255,255,0),#ffffff);background-image:linear-gradient(rgba(255,255,255,0),#ffffff)}.syno-ux-formpanel.syno-ux-formpanel-gradient.scroll-at-bottom .x-panel-footer:before{display:none}.syno-ux-formpanel .x-panel-footer{background-image:url("./images/Components/shadow_footbar.png");background-repeat:repeat-x;padding:4px 0 0 0}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-formpanel .x-panel-footer{background-image:url("../img/synohdpack/./images/Components/shadow_footbar.png");background-size:8px 4px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-formpanel .x-panel-footer{background-image:url("../img/synohdpack/./images/Components/shadow_footbar.png");background-size:8px 4px;outline:1px green dashed}}.syno-ux-formpanel .x-panel-footer .x-toolbar-ct{height:44px}.syno-ux-formpanel .x-panel-tbar .x-toolbar{background-image:none;background-color:transparent;border-bottom:1px solid #D7E1EB}.syno-ux-formpanel .x-panel-btns td.x-toolbar-cell{padding-right:7px;padding-left:0px}.syno-ux-tab-panel .x-tab-strip-top .x-tab-strip-active .x-tab-right span.x-tab-strip-text{padding-bottom:0}.syno-ux-tab-panel .x-tab-strip-top{border:none;background-repeat:repeat-x !important;background-position:0 24px !important;background-size:16px 10px !important;background-image:url("./images/Components/tab_shadow.png") !important}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-tab-panel .x-tab-strip-top{background-image:url("../img/synohdpack/./images/Components/tab_shadow.png") !important;background-size:16px 10px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-tab-panel .x-tab-strip-top{background-image:url("../img/synohdpack/./images/Components/tab_shadow.png") !important;background-size:16px 10px;outline:1px green dashed}}.syno-ux-tab-panel .x-tab-strip-top .x-tab-left{padding:0}.syno-ux-tab-panel .x-tab-strip-top .x-tab-right{padding:0}.syno-ux-tab-panel .x-tab-strip-top .x-tab-strip-text{height:24px;line-height:24px;padding:0 16px;border-left:1px solid #D7E1EB}.syno-ux-tab-panel .x-tab-strip-top li{height:34px;margin:0}.syno-ux-tab-panel .x-tab-strip-top li.x-tab-strip-over .x-tab-strip-text{color:#78828C}.syno-ux-tab-panel .x-tab-strip-top li.x-tab-strip-active{font-weight:bold;background-image:url("./images/Components/tab_arrow.png");background-repeat:no-repeat;background-position:center 24px}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-tab-panel .x-tab-strip-top li.x-tab-strip-active{background-image:url("../img/synohdpack/./images/Components/tab_arrow.png");background-size:16px 10px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-tab-panel .x-tab-strip-top li.x-tab-strip-active{background-image:url("../img/synohdpack/./images/Components/tab_arrow.png");background-size:16px 10px;outline:1px green dashed}}.syno-ux-tab-panel .x-tab-strip-top .x-tab-right,.syno-ux-tab-panel .x-tab-strip-top .x-tab-left,.syno-ux-tab-panel .x-tab-strip-top .x-tab-strip-inner{background-image:none}.syno-ux-tab-panel .x-tab-strip-top .x-tab-strip-closable .x-tab-strip-text{padding:0 30px 0 16px}.syno-ux-tab-panel .x-tab-strip-top .x-tab-strip-closable a.x-tab-strip-close{background-image:url("./images/Components/icon_search_clear.png");margin-top:-3px;width:24px;height:24px;opacity:1;filter:alpha(opacity=100)}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-tab-panel .x-tab-strip-top .x-tab-strip-closable a.x-tab-strip-close{background-image:url("../img/synohdpack/./images/Components/icon_search_clear.png");background-size:24px 144px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-tab-panel .x-tab-strip-top .x-tab-strip-closable a.x-tab-strip-close{background-image:url("../img/synohdpack/./images/Components/icon_search_clear.png");background-size:24px 144px;outline:1px green dashed}}.syno-ux-tab-panel .x-tab-strip-top .x-tab-strip-closable.x-tab-strip-over a.x-tab-strip-close{background-position:0px -24px}.syno-ux-tab-panel .x-tab-strip-spacer{display:none}.syno-ux-tab-panel .x-tab-panel-body{background-color:transparent;border:none}.syno-ux-tab-panel .x-tab-panel-footer{background-image:url("./images/Components/shadow_footbar.png");background-repeat:repeat-x;background-color:transparent;border:0px;padding:4px 0 0 0}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-tab-panel .x-tab-panel-footer{background-image:url("../img/synohdpack/./images/Components/shadow_footbar.png");background-size:8px 4px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-tab-panel .x-tab-panel-footer{background-image:url("../img/synohdpack/./images/Components/shadow_footbar.png");background-size:8px 4px;outline:1px green dashed}}.syno-ux-tab-panel .x-tab-panel-footer .x-toolbar-ct{height:44px}.syno-ux-tab-panel .x-panel-btns td.x-toolbar-cell{padding-right:7px;padding-left:0px}.syno-ux-grid-enable-column-checked{height:22px;margin-top:3px;background-repeat:no-repeat;background-position:center -66px;background-image:url("../img/synohdpack/images/Components/checkbox.png");background-size:22px 198px;}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-grid-enable-column-checked{background-image:url("../img/synohdpack/images/Components/checkbox.png");background-size:22px 198px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-grid-enable-column-checked{background-image:url("../img/synohdpack/images/Components/checkbox.png");background-size:22px 198px;outline:1px green dashed}}.syno-ux-grid-enable-column-checked:hover{background-position:center -88px}.syno-ux-grid-enable-column-unchecked{height:22px;margin-top:3px;background-repeat:no-repeat;background-position:center 0px;background-image:url("../img/synohdpack/images/Components/checkbox.png");background-size:22px 198px;)}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-grid-enable-column-unchecked{background-image:url("../img/synohdpack/images/Components/checkbox.png");background-size:22px 198px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-grid-enable-column-unchecked{background-image:url("../img/synohdpack/images/Components/checkbox.png");background-size:22px 198px;outline:1px green dashed}}.syno-ux-grid-enable-column-unchecked:hover{background-position:center -22px}.syno-ux-grid-enable-column-grayed{height:22px;margin-top:3px;background-repeat:no-repeat;background-position:center -132px;background-image:url("../img/synohdpack/images/Components/checkbox.png");background-size:22px 198px;}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-grid-enable-column-grayed{background-image:url("../img/synohdpack/images/Components/checkbox.png");background-size:22px 198px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-grid-enable-column-grayed{background-image:url("../img/synohdpack/images/Components/checkbox.png");background-size:22px 198px;outline:1px green dashed}}.syno-ux-grid-enable-column-grayed:hover{background-position:center -154px}.syno-ux-checkbox-icon:hover{background-position:0 -22px}.syno-ux-checkbox-icon:hover.syno-ux-cb-checked{background-position:0 -88px}.syno-ux-checkbox-icon:hover.syno-ux-cb-checked.syno-ux-cb-disabled{background-position:0 -110px}.syno-ux-checkbox-icon:hover.syno-ux-cb-disabled{background-position:0 -44px}.syno-ux-grid-enable-column-disabled{height:22px;margin-top:3px;background-repeat:no-repeat;background-position:center -44px;background-image:url("../img/synohdpack/images/Components/checkbox.png");background-size:22px 198px;}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-grid-enable-column-disabled{background-image:url("../img/synohdpack/images/Components/checkbox.png");background-size:22px 198px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-grid-enable-column-disabled{background-image:url("../img/synohdpack/images/Components/checkbox.png");background-size:22px 198px;outline:1px green dashed}}.syno-ux-grid-enable-column-disabled-checked{height:22px;margin-top:3px;background-repeat:no-repeat;background-position:center -110px;background-image:url("../img/synohdpack/images/Components/checkbox.png");background-size:22px 198px;}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-grid-enable-column-disabled-checked{background-image:url("../img/synohdpack/images/Components/checkbox.png");background-size:22px 198px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-grid-enable-column-disabled-checked{background-image:url("../img/synohdpack/images/Components/checkbox.png");background-size:22px 198px;outline:1px green dashed}}.x-panel-noborder .x-panel-bbar-noborder.x-panel-bbar .syno-ux-pagingtoolbar{border-top-color:#EBF0F5;border-bottom:1px solid #D7E1EB;padding:0px;height:26px}.syno-ux-pagingtoolbar{background-color:transparent;background-image:none;line-height:28px}.syno-ux-pagingtoolbar .x-toolbar-right div{padding:2px 8px 2px 2px;font-size:12px;height:24px;line-height:24px}.syno-ux-pagingtoolbar .xtb-sep{height:20px;background-image:none;border-left:1px solid #D7E1EB;width:0px;margin:0px}.syno-ux-pagingtoolbar .x-btn-icon .x-btn-ml,.syno-ux-pagingtoolbar .x-btn-icon .x-btn-mr,.syno-ux-pagingtoolbar .x-btn-icon .x-btn-small .x-btn-ml,.syno-ux-pagingtoolbar .x-btn-icon .x-btn-small .x-btn-mr,.syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .x-btn-ml,.syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .x-btn-mr,.syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .x-btn-small .x-btn-ml,.syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .x-btn-small .x-btn-mr{width:2px}.syno-ux-pagingtoolbar .x-btn-icon .x-btn-ml i,.syno-ux-pagingtoolbar .x-btn-icon .x-btn-mr i,.syno-ux-pagingtoolbar .x-btn-icon .x-btn-small .x-btn-ml i,.syno-ux-pagingtoolbar .x-btn-icon .x-btn-small .x-btn-mr i,.syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .x-btn-ml i,.syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .x-btn-mr i,.syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .x-btn-small .x-btn-ml i,.syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .x-btn-small .x-btn-mr i{width:2px}.syno-ux-pagingtoolbar .x-btn-icon button,.syno-ux-pagingtoolbar .x-btn-icon .x-btn-small button,.syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled button,.syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .x-btn-small button{background-image:url("images/Components/bt_pagebar.png") !important;min-width:28px;width:auto;height:28px}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-pagingtoolbar .x-btn-icon button,.synohdpack .syno-ux-pagingtoolbar .x-btn-icon .x-btn-small button,.synohdpack .syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled button,.synohdpack .syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .x-btn-small button{background-image:url("../img/synohdpack/images/Components/bt_pagebar.png") !important;background-size:28px 560px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-pagingtoolbar .x-btn-icon button,.synohdpackdebug .syno-ux-pagingtoolbar .x-btn-icon .x-btn-small button,.synohdpackdebug .syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled button,.synohdpackdebug .syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .x-btn-small button{background-image:url("../img/synohdpack/images/Components/bt_pagebar.png") !important;background-size:28px 560px;outline:1px green dashed}}.syno-ux-pagingtoolbar .x-btn-icon .syno-ux-page-btn,.syno-ux-pagingtoolbar .x-btn-icon .syno-ux-page-btn-focus,.syno-ux-pagingtoolbar .x-btn-icon .x-btn-small .syno-ux-page-btn,.syno-ux-pagingtoolbar .x-btn-icon .x-btn-small .syno-ux-page-btn-focus,.syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .syno-ux-page-btn,.syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .syno-ux-page-btn-focus,.syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .x-btn-small .syno-ux-page-btn,.syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .x-btn-small .syno-ux-page-btn-focus{padding:0 3px;background-image:none !important;font-size:12px}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-pagingtoolbar .x-btn-icon .syno-ux-page-btn,.synohdpack .syno-ux-pagingtoolbar .x-btn-icon .syno-ux-page-btn-focus,.synohdpack .syno-ux-pagingtoolbar .x-btn-icon .x-btn-small .syno-ux-page-btn,.synohdpack .syno-ux-pagingtoolbar .x-btn-icon .x-btn-small .syno-ux-page-btn-focus,.synohdpack .syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .syno-ux-page-btn,.synohdpack .syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .syno-ux-page-btn-focus,.synohdpack .syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .x-btn-small .syno-ux-page-btn,.synohdpack .syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .x-btn-small .syno-ux-page-btn-focus{background-image:none !important}}.syno-ux-pagingtoolbar .x-btn-icon .syno-ux-page-btn .x-btn-ml,.syno-ux-pagingtoolbar .x-btn-icon .syno-ux-page-btn .x-btn-mr,.syno-ux-pagingtoolbar .x-btn-icon .syno-ux-page-btn .x-btn-mc,.syno-ux-pagingtoolbar .x-btn-icon .syno-ux-page-btn-focus .x-btn-ml,.syno-ux-pagingtoolbar .x-btn-icon .syno-ux-page-btn-focus .x-btn-mr,.syno-ux-pagingtoolbar .x-btn-icon .syno-ux-page-btn-focus .x-btn-mc,.syno-ux-pagingtoolbar .x-btn-icon .x-btn-small .syno-ux-page-btn .x-btn-ml,.syno-ux-pagingtoolbar .x-btn-icon .x-btn-small .syno-ux-page-btn .x-btn-mr,.syno-ux-pagingtoolbar .x-btn-icon .x-btn-small .syno-ux-page-btn .x-btn-mc,.syno-ux-pagingtoolbar .x-btn-icon .x-btn-small .syno-ux-page-btn-focus .x-btn-ml,.syno-ux-pagingtoolbar .x-btn-icon .x-btn-small .syno-ux-page-btn-focus .x-btn-mr,.syno-ux-pagingtoolbar .x-btn-icon .x-btn-small .syno-ux-page-btn-focus .x-btn-mc,.syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .syno-ux-page-btn .x-btn-ml,.syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .syno-ux-page-btn .x-btn-mr,.syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .syno-ux-page-btn .x-btn-mc,.syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .syno-ux-page-btn-focus .x-btn-ml,.syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .syno-ux-page-btn-focus .x-btn-mr,.syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .syno-ux-page-btn-focus .x-btn-mc,.syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .x-btn-small .syno-ux-page-btn .x-btn-ml,.syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .x-btn-small .syno-ux-page-btn .x-btn-mr,.syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .x-btn-small .syno-ux-page-btn .x-btn-mc,.syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .x-btn-small .syno-ux-page-btn-focus .x-btn-ml,.syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .x-btn-small .syno-ux-page-btn-focus .x-btn-mr,.syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .x-btn-small .syno-ux-page-btn-focus .x-btn-mc{background-image:none !important}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-pagingtoolbar .x-btn-icon .syno-ux-page-btn .x-btn-ml,.synohdpack .syno-ux-pagingtoolbar .x-btn-icon .syno-ux-page-btn .x-btn-mr,.synohdpack .syno-ux-pagingtoolbar .x-btn-icon .syno-ux-page-btn .x-btn-mc,.synohdpack .syno-ux-pagingtoolbar .x-btn-icon .syno-ux-page-btn-focus .x-btn-ml,.synohdpack .syno-ux-pagingtoolbar .x-btn-icon .syno-ux-page-btn-focus .x-btn-mr,.synohdpack .syno-ux-pagingtoolbar .x-btn-icon .syno-ux-page-btn-focus .x-btn-mc,.synohdpack .syno-ux-pagingtoolbar .x-btn-icon .x-btn-small .syno-ux-page-btn .x-btn-ml,.synohdpack .syno-ux-pagingtoolbar .x-btn-icon .x-btn-small .syno-ux-page-btn .x-btn-mr,.synohdpack .syno-ux-pagingtoolbar .x-btn-icon .x-btn-small .syno-ux-page-btn .x-btn-mc,.synohdpack .syno-ux-pagingtoolbar .x-btn-icon .x-btn-small .syno-ux-page-btn-focus .x-btn-ml,.synohdpack .syno-ux-pagingtoolbar .x-btn-icon .x-btn-small .syno-ux-page-btn-focus .x-btn-mr,.synohdpack .syno-ux-pagingtoolbar .x-btn-icon .x-btn-small .syno-ux-page-btn-focus .x-btn-mc,.synohdpack .syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .syno-ux-page-btn .x-btn-ml,.synohdpack .syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .syno-ux-page-btn .x-btn-mr,.synohdpack .syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .syno-ux-page-btn .x-btn-mc,.synohdpack .syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .syno-ux-page-btn-focus .x-btn-ml,.synohdpack .syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .syno-ux-page-btn-focus .x-btn-mr,.synohdpack .syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .syno-ux-page-btn-focus .x-btn-mc,.synohdpack .syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .x-btn-small .syno-ux-page-btn .x-btn-ml,.synohdpack .syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .x-btn-small .syno-ux-page-btn .x-btn-mr,.synohdpack .syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .x-btn-small .syno-ux-page-btn .x-btn-mc,.synohdpack .syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .x-btn-small .syno-ux-page-btn-focus .x-btn-ml,.synohdpack .syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .x-btn-small .syno-ux-page-btn-focus .x-btn-mr,.synohdpack .syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .x-btn-small .syno-ux-page-btn-focus .x-btn-mc{background-image:none !important}}.syno-ux-pagingtoolbar .x-btn-icon .x-btn-small .x-tbar-page-first{background-position:0 0}.syno-ux-pagingtoolbar .x-btn-icon .x-btn-small .x-tbar-page-prev{background-position:0 -28px}.syno-ux-pagingtoolbar .x-btn-icon .x-btn-small .x-tbar-page-next{background-position:0 -56px}.syno-ux-pagingtoolbar .x-btn-icon .x-btn-small .x-tbar-page-last{background-position:0 -84px}.syno-ux-pagingtoolbar .x-btn-icon .x-btn-small .x-tbar-loading{background-position:0 -112px}.syno-ux-pagingtoolbar .x-btn-icon.x-btn-over .x-btn-small .x-tbar-page-first{background-position:0 -140px}.syno-ux-pagingtoolbar .x-btn-icon.x-btn-over .x-btn-small .x-tbar-page-prev{background-position:0 -168px}.syno-ux-pagingtoolbar .x-btn-icon.x-btn-over .x-btn-small .x-tbar-page-next{background-position:0 -196px}.syno-ux-pagingtoolbar .x-btn-icon.x-btn-over .x-btn-small .x-tbar-page-last{background-position:0 -224px}.syno-ux-pagingtoolbar .x-btn-icon.x-btn-over .x-btn-small .x-tbar-loading{background-position:0 -252px}.syno-ux-pagingtoolbar .x-btn-icon.x-btn-click .x-btn-small .x-tbar-page-first{background-position:0 -280px}.syno-ux-pagingtoolbar .x-btn-icon.x-btn-click .x-btn-small .x-tbar-page-prev{background-position:0 -308px}.syno-ux-pagingtoolbar .x-btn-icon.x-btn-click .x-btn-small .x-tbar-page-next{background-position:0 -336px}.syno-ux-pagingtoolbar .x-btn-icon.x-btn-click .x-btn-small .x-tbar-page-last{background-position:0 -364px}.syno-ux-pagingtoolbar .x-btn-icon.x-btn-click .x-btn-small .x-tbar-loading{background-position:0 -392px}.syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .x-btn-small .x-tbar-page-first{background-position:0 -420px}.syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .x-btn-small .x-tbar-page-prev{background-position:0 -448px}.syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .x-btn-small .x-tbar-page-next{background-position:0 -476px}.syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .x-btn-small .x-tbar-page-last{background-position:0 -504px}.syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .x-btn-small .x-tbar-loading{background-position:0 -532px}.syno-ux-toolbar{background-color:transparent;background-image:none}.syno-ux-expandable-listview .item-summary .item-toggle,.syno-ux-expandable-listview .item-summary .item-toggle.item-toggle-expanded,.syno-ux-expandable-listview .item-summary .item-entry,.syno-ux-expandable-listview .item-summary .item-entry.item-toggle-exit,.syno-ux-expandable-listview .item-summary .item-exit{display:inline-block;position:absolute;top:0px;right:0px;width:36px;height:50px}.syno-ux-expandable-listview .item-summary .item-toggle .item-toggle-img,.syno-ux-expandable-listview .item-summary .item-toggle.item-toggle-expanded .item-toggle-img,.syno-ux-expandable-listview .item-summary .item-entry .item-entry-img,.syno-ux-expandable-listview .item-summary .item-entry.item-toggle-exit .item-entry-img,.syno-ux-expandable-listview .item-summary .item-exit .item-exit-img{position:relative;left:6px;top:13px;width:24px;height:24px;background-repeat:no-repeat;background-image:url("images/Components/fieldset_expand.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-expandable-listview .item-summary .item-toggle .item-toggle-img,.syno-ux-expandable-listview .item-summary .item-toggle .synohdpack .item-toggle-img,.synohdpack .syno-ux-expandable-listview .item-summary .item-entry .item-entry-img,.syno-ux-expandable-listview .item-summary .item-entry .synohdpack .item-entry-img,.synohdpack .syno-ux-expandable-listview .item-summary .item-exit .item-exit-img,.syno-ux-expandable-listview .item-summary .item-exit .synohdpack .item-exit-img{background-image:url("../img/synohdpack/images/Components/fieldset_expand.png");background-size:24px 288px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-expandable-listview .item-summary .item-toggle .item-toggle-img,.syno-ux-expandable-listview .item-summary .item-toggle .synohdpackdebug .item-toggle-img,.synohdpackdebug .syno-ux-expandable-listview .item-summary .item-entry .item-entry-img,.syno-ux-expandable-listview .item-summary .item-entry .synohdpackdebug .item-entry-img,.synohdpackdebug .syno-ux-expandable-listview .item-summary .item-exit .item-exit-img,.syno-ux-expandable-listview .item-summary .item-exit .synohdpackdebug .item-exit-img{background-image:url("../img/synohdpack/images/Components/fieldset_expand.png");background-size:24px 288px;outline:1px green dashed}}.syno-ux-expandable-listview .item-wrap{position:relative;padding-left:60px;border-bottom:1px solid #EBF0F5}.syno-ux-expandable-listview .item-wrap.item-over{background-color:#F5FAFF}.syno-ux-expandable-listview .item-wrap.item-selected{background-color:#E6F5FF}.syno-ux-expandable-listview .item-summary{height:50px}.syno-ux-expandable-listview .item-summary .item-icon{display:inline-block;width:32px;height:32px;position:absolute;top:9px;left:12px}.syno-ux-expandable-listview .item-summary .item-toggle .item-toggle-img{background-position:0 0px}.syno-ux-expandable-listview .item-summary .item-toggle:hover{cursor:pointer}.syno-ux-expandable-listview .item-summary .item-toggle:hover .item-toggle-img{background-position:0 -24px}.syno-ux-expandable-listview .item-summary .item-toggle:active .item-toggle-img{background-position:0 -48px}.syno-ux-expandable-listview .item-summary .item-toggle.item-toggle-expanded .item-toggle-img{background-position:0 -72px}.syno-ux-expandable-listview .item-summary .item-toggle.item-toggle-expanded:hover{cursor:pointer}.syno-ux-expandable-listview .item-summary .item-toggle.item-toggle-expanded:hover .item-toggle-img{background-position:0 -96px}.syno-ux-expandable-listview .item-summary .item-toggle.item-toggle-expanded:active .item-toggle-img{background-position:0 -120px}.syno-ux-expandable-listview .item-summary .item-entry .item-entry-img{background-position:0 -144px}.syno-ux-expandable-listview .item-summary .item-entry:hover{cursor:pointer}.syno-ux-expandable-listview .item-summary .item-entry:hover .item-entry-img{background-position:0 -168px}.syno-ux-expandable-listview .item-summary .item-entry:active .item-entry-img{background-position:0 -192px}.syno-ux-expandable-listview .item-summary .item-entry.item-toggle-exit .item-entry-img{background-position:0 -216px}.syno-ux-expandable-listview .item-summary .item-entry.item-toggle-exit:hover{cursor:pointer}.syno-ux-expandable-listview .item-summary .item-entry.item-toggle-exit:hover .item-entry-img{background-position:0 -240px}.syno-ux-expandable-listview .item-summary .item-entry.item-toggle-exit:active .item-entry-img{background-position:0 -264px}.syno-ux-expandable-listview .item-summary .item-exit .item-exit-img{background-position:0 -216px}.syno-ux-expandable-listview .item-summary .item-exit:hover{cursor:pointer}.syno-ux-expandable-listview .item-summary .item-exit:hover .item-exit-img{background-position:0 -240px}.syno-ux-expandable-listview .item-summary .item-exit:active .item-exit-img{background-position:0 -264px}.syno-ux-expandable-listview .item-summary .item-title{font-size:14px;font-weight:bold;line-height:28px}.syno-ux-expandable-listview .item-detail{padding:0 40px 12px 0}.ux-float-layout-ct{position:relative}.ux-float-layout-ct .ux-float-layout-sizer{background:transparent none;border:0 none;padding:0;margin:0;width:0}.ux-float-layout-ct .x-box-item{position:absolute}.ux-float-layout-ct.ux-float-layout-ct-animate .x-box-item{-webkit-transition-property:top,left;-moz-transition-property:top,left;-o-transition-property:top,left;transition-property:top,left;-webkit-transition-timing-function:ease-in;-moz-transition-timing-function:ease-in;-o-transition-timing-function:ease-in;transition-timing-function:ease-in;-webkit-transition-duration:0.3s;-moz-transition-duration:0.3s;-o-transition-duration:0.3s;transition-duration:0.3s}.syno-ux-treepanel{overflow-x:hidden}.syno-ux-treepanel .x-border-panel{background-color:transparent}.syno-ux-treepanel .x-tree-root-ct{width:auto !important;overflow:hidden}.syno-ux-treepanel .x-tree-node-el{display:table;width:100%;line-height:28px;height:28px;overflow:hidden}.syno-ux-treepanel .x-tree-node{text-overflow:ellipsis;white-space:nowrap}.syno-ux-treepanel .x-tree-node a span{font-size:12px;padding-left:2px}.syno-ux-treepanel .x-tree-node .x-tree-node-over{background-color:#E6F5FF;border-radius:3px}.syno-ux-treepanel .x-tree-node .x-tree-node-over .syno-ux-cb-grayed{background-position:0 -154px}.syno-ux-treepanel .x-tree-node .x-tree-node-over .syno-ux-cb-disabled.syno-ux-cb-checked{background-position:0 -110px}.syno-ux-treepanel .x-tree-node .x-tree-selected{border-radius:3px}.syno-ux-treepanel .x-tree-node .x-tree-selected a span{color:#FFFFFF}.syno-ux-treepanel .x-tree-arrows .x-tree-node-indent .x-tree-elbow-line,.syno-ux-treepanel .x-tree-arrows .x-tree-node-indent .x-tree-icon{width:18px}.syno-ux-treepanel .x-tree-arrows .x-tree-elbow-minus,.syno-ux-treepanel .x-tree-arrows .x-tree-elbow-plus,.syno-ux-treepanel .x-tree-arrows .x-tree-elbow-end-minus,.syno-ux-treepanel .x-tree-arrows .x-tree-elbow-end-plus{background-image:url("./images/Components/tree_arrow.png");height:22px;margin-top:6px}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-treepanel .x-tree-arrows .x-tree-elbow-minus,.synohdpack .syno-ux-treepanel .x-tree-arrows .x-tree-elbow-plus,.synohdpack .syno-ux-treepanel .x-tree-arrows .x-tree-elbow-end-minus,.synohdpack .syno-ux-treepanel .x-tree-arrows .x-tree-elbow-end-plus{background-image:url("../img/synohdpack/./images/Components/tree_arrow.png");background-size:64px 16px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-treepanel .x-tree-arrows .x-tree-elbow-minus,.synohdpackdebug .syno-ux-treepanel .x-tree-arrows .x-tree-elbow-plus,.synohdpackdebug .syno-ux-treepanel .x-tree-arrows .x-tree-elbow-end-minus,.synohdpackdebug .syno-ux-treepanel .x-tree-arrows .x-tree-elbow-end-plus{background-image:url("../img/synohdpack/./images/Components/tree_arrow.png");background-size:64px 16px;outline:1px green dashed}}.syno-ux-treepanel .x-tree-arrows .x-tree-ec-over .x-tree-elbow-minus,.syno-ux-treepanel .x-tree-arrows .x-tree-ec-over .x-tree-elbow-end-minus{background-position:0px 0}.syno-ux-treepanel .x-tree-arrows .x-tree-selected .x-tree-elbow-minus,.syno-ux-treepanel .x-tree-arrows .x-tree-selected .x-tree-elbow-end-minus{background-position:-16px 0}.syno-ux-treepanel .x-tree-arrows .x-tree-ec-over .x-tree-elbow-plus,.syno-ux-treepanel .x-tree-arrows .x-tree-ec-over .x-tree-elbow-end-plus{background-position:-32px 0}.syno-ux-treepanel .x-tree-arrows .x-tree-selected .x-tree-elbow-plus,.syno-ux-treepanel .x-tree-arrows .x-tree-selected .x-tree-elbow-end-plus{background-position:-48px 0}.syno-ux-treepanel .x-tree-arrows .x-tree-elbow-minus,.syno-ux-treepanel .x-tree-arrows .x-tree-elbow-end-minus{background-position:0px 0}.syno-ux-treepanel .x-tree-arrows .x-tree-elbow-plus,.syno-ux-treepanel .x-tree-arrows .x-tree-elbow-end-plus{background-position:-32px 0}.syno-ux-treepanel .x-checkbox{margin-top:-3px !important;height:22px;width:22px;background-repeat:no-repeat;background-position:0px 0;background-image:url("../img/synohdpack/images/Components/checkbox.png");background-size:22px 198px;);vertical-align:middle;margin-left:4px !important;margin-right:8px !important}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-treepanel .x-checkbox{background-image:url("../img/synohdpack/images/Components/checkbox.png");background-size:22px 198px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-treepanel .x-checkbox{background-image:url("../img/synohdpack/images/Components/checkbox.png");background-size:22px 198px;outline:1px green dashed}}.syno-ux-treepanel .x-checkbox:hover{background-position:0 -22px}.syno-ux-treepanel .x-item-disabled .x-checkbox{background-position:0 -44px}.syno-ux-treepanel .x-checkbox-checked .x-checkbox{background-position:0 -66px}.syno-ux-treepanel .x-checkbox-checked .x-checkbox:hover{background-position:0 -88px}.syno-ux-treepanel .x-item-disabled .x-checkbox-checked .x-checkbox{background-position:0 -110px}.syno-ux-treepanel .x-checkbox-grayed .x-checkbox{background-position:0 -132px}.syno-ux-treepanel .x-checkbox-grayed .x-checkbox:hover{background-position:0 -154px}.syno-ux-treepanel .x-item-disabled .x-checkbox-grayed .x-checkbox{background-position:0 -176px}.syno-ux-treepanel.syno-ux-treepanel-gradient .x-panel-bwrap:before{position:absolute;display:block;height:6px;content:"";width:100%;z-index:99;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0icmdiYSgyNTUsMjU1LDI1NSwwKSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, rgba(255,255,255,0)));background-image:-webkit-linear-gradient(#ffffff,rgba(255,255,255,0));background-image:-moz-linear-gradient(#ffffff,rgba(255,255,255,0));background-image:-o-linear-gradient(#ffffff,rgba(255,255,255,0));background-image:linear-gradient(#ffffff,rgba(255,255,255,0))}.syno-ux-treepanel.syno-ux-treepanel-gradient .x-panel-bwrap:after{position:absolute;display:block;height:6px;content:"";width:100%;z-index:99;margin-top:-6px;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0icmdiYSgyNTUsMjU1LDI1NSwwKSIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, rgba(255,255,255,0)), color-stop(100%, #ffffff));background-image:-webkit-linear-gradient(rgba(255,255,255,0),#ffffff);background-image:-moz-linear-gradient(rgba(255,255,255,0),#ffffff);background-image:-o-linear-gradient(rgba(255,255,255,0),#ffffff);background-image:linear-gradient(rgba(255,255,255,0),#ffffff)}.syno-ux-treepanel.syno-ux-treepanel-gradient.scroll-at-top .x-panel-bwrap:before,.syno-ux-treepanel.syno-ux-treepanel-gradient.scroll-at-bottom .x-panel-bwrap:after{display:none}.x-tip-invalid{box-shadow:0 1px 4px rgba(0,0,0,0.25);border:solid 1px;border-color:#FFCCCC;border-color:rgba(255,204,204,0.75);background-color:#FA4B4B;background-color:rgba(250,75,75,0.75)}.x-tip-invalid .x-tip-invalid-ml,.x-tip-invalid .x-tip-invalid-mr,.x-tip-invalid .x-tip-invalid-mc,.x-tip-invalid .x-tip-invalid-tl,.x-tip-invalid .x-tip-invalid-tr,.x-tip-invalid .x-tip-invalid-tc,.x-tip-invalid .x-tip-invalid-bl,.x-tip-invalid .x-tip-invalid-br,.x-tip-invalid .x-tip-invalid-bc{padding:0px;background-image:none;background-color:transparent}.x-tip-invalid .x-tip-invalid-bwrap{padding:3px 10px}.x-tip-invalid .x-tip-invalid-body,.x-tip-invalid .x-tip-invalid-body span,.x-tip-invalid .x-tip-invalid-body div{font-size:12px !important;color:#FFFFFF !important}.ext-gecko .x-window-body .x-form-item{overflow:hidden}.ext-ie .x-toolbar .x-toolbar-cell .x-form-field-wrap{height:auto}.ext-ie .x-toolbar .x-toolbar-cell .x-form-field-wrap .syno-textfilter-text,.ext-ie .x-toolbar .x-toolbar-cell .x-form-field-wrap .syno-ux-textfilter-text{line-height:24px;padding-top:0px;padding-bottom:0px}.selectabletext{-moz-user-select:text;-khtml-user-select:text;-webkit-user-select:text;-ms-user-select:text;user-select:text}input[type=text][readonly].selectabletext,input[type=textarea][readonly].selectabletext,input[type=password][readonly].selectabletext{-moz-user-select:text;-khtml-user-select:text;-webkit-user-select:text;-ms-user-select:text;user-select:text}.x-statusbar .syno-ux-statusbar-loading,.x-statusbar .syno-ux-statusbar-success,.x-statusbar .syno-ux-statusbar-error{display:table-cell;vertical-align:middle;white-space:normal;word-break:break-all;margin-left:2px;height:24px;line-height:12px;font-size:12px;padding-left:30px;padding-right:6px}.x-statusbar .syno-ux-statusbar-loading{background-position:0 0;background-repeat:no-repeat;background-image:url("images/Components/icon_loading.gif")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .x-statusbar .syno-ux-statusbar-loading{background-image:url("../img/synohdpack/images/Components/icon_loading.gif");background-size:24px 24px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .x-statusbar .syno-ux-statusbar-loading{background-image:url("../img/synohdpack/images/Components/icon_loading.gif");background-size:24px 24px;outline:1px green dashed}}.x-statusbar .syno-ux-statusbar-success{background-position:0 0;background-repeat:no-repeat;background-image:url("./images/Components/icon_success.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .x-statusbar .syno-ux-statusbar-success{background-image:url("../img/synohdpack/./images/Components/icon_success.png");background-size:24px 24px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .x-statusbar .syno-ux-statusbar-success{background-image:url("../img/synohdpack/./images/Components/icon_success.png");background-size:24px 24px;outline:1px green dashed}}.x-statusbar .syno-ux-statusbar-error{background-position:0 0;background-repeat:no-repeat;background-image:url("./images/Components/icon_error.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .x-statusbar .syno-ux-statusbar-error{background-image:url("../img/synohdpack/./images/Components/icon_error.png");background-size:24px 24px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .x-statusbar .syno-ux-statusbar-error{background-image:url("../img/synohdpack/./images/Components/icon_error.png");background-size:24px 24px;outline:1px green dashed}}.syno-ux-superboxselect{position:relative;height:auto !important;margin:0px;overflow:hidden;padding:1px 2px 1px 4px;display:block;outline:0px !important;border-right:1px solid #C8D2DC}.x-item-disabled .syno-ux-superboxselect.x-form-focus{border-right:1px solid #C8D2DC}.syno-ux-superboxselect.x-form-invalid{border-right:1px solid #FF8C8C;background-color:#FFF0F0}.x-item-disabled .syno-ux-superboxselect.x-form-text{background-color:#F6F8FA;border-right:1px solid #C8D2DC}.syno-ux-superboxselect input[disabled]{background-color:transparent}.syno-ux-superboxselect ul{overflow:hidden;cursor:text}.syno-ux-superboxselect-display-btns ul{padding-right:50px}.syno-ux-superboxselect-display-btns .syno-ux-superboxselect-btns{position:absolute;right:1px;top:0;overflow:hidden;padding:1px}.syno-ux-superboxselect-display-btns .syno-ux-superboxselect-btns div{float:left}.syno-ux-superboxselect-display-btns .syno-ux-superboxselect-btns .syno-ux-superboxselect-btn-clear{width:24px;height:22px;background-repeat:no-repeat;background-attachment:scroll;background-position:0px -1px;background-image:url("./images/Components/icon_search_clear.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-superboxselect-display-btns .syno-ux-superboxselect-btns .syno-ux-superboxselect-btn-clear{background-image:url("../img/synohdpack/./images/Components/icon_search_clear.png");background-size:24px 144px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-superboxselect-display-btns .syno-ux-superboxselect-btns .syno-ux-superboxselect-btn-clear{background-image:url("../img/synohdpack/./images/Components/icon_search_clear.png");background-size:24px 144px;outline:1px green dashed}}.syno-ux-superboxselect-display-btns .syno-ux-superboxselect-btns .syno-ux-superboxselect-btn-clear.syno-ux-superboxselect-btn-over{background-position:0px -25px}.syno-ux-superboxselect-display-btns .syno-ux-superboxselect-btns .syno-ux-superboxselect-btn-clear.syno-ux-superboxselect-btn-over.syno-ux-superboxselect-btn-click{background-position:0px -49px}.syno-ux-superboxselect-display-btns .syno-ux-superboxselect-btns .syno-ux-superboxselect-btn-clear.syno-ux-superboxselect-btn-click{background-position:0px -49px}.x-item-disabled .syno-ux-superboxselect-display-btns .syno-ux-superboxselect-btns .syno-ux-superboxselect-btn-clear{background-position:0px -1px}.syno-ux-superboxselect-display-btns .syno-ux-superboxselect-btns .syno-ux-superboxselect-btn-expand{width:26px;height:22px;background-repeat:no-repeat;background-attachment:scroll;background-position:0px -3px;background-image:url("images/Components/trigger.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-superboxselect-display-btns .syno-ux-superboxselect-btns .syno-ux-superboxselect-btn-expand{background-image:url("../img/synohdpack/images/Components/trigger.png");background-size:104px 28px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-superboxselect-display-btns .syno-ux-superboxselect-btns .syno-ux-superboxselect-btn-expand{background-image:url("../img/synohdpack/images/Components/trigger.png");background-size:104px 28px;outline:1px green dashed}}.syno-ux-superboxselect-display-btns .syno-ux-superboxselect-btns .syno-ux-superboxselect-btn-expand.syno-ux-superboxselect-btn-over{background-position:-26px -3px}.syno-ux-superboxselect-display-btns .syno-ux-superboxselect-btns .syno-ux-superboxselect-btn-expand.syno-ux-superboxselect-btn-over.syno-ux-superboxselect-btn-click{background-position:-52px -3px}.syno-ux-superboxselect-display-btns .syno-ux-superboxselect-btns .syno-ux-superboxselect-btn-expand.syno-ux-superboxselect-btn-click{background-position:-52px -3px}.x-item-disabled .syno-ux-superboxselect-display-btns .syno-ux-superboxselect-btns .syno-ux-superboxselect-btn-expand{background-position:-78px -3px}.syno-ux-superboxselect-btn-hide{display:none}.syno-ux-superboxselect li{float:left;margin:1px 4px 1px 0px;padding:0;line-height:20px}.syno-ux-superboxselect-stacked li{float:none !important}.syno-ux-superboxselect-input input{border:none;outline:0px;margin-top:4px;margin-bottom:4px;background-color:transparent}body.ext-ie .x-superboxselect-input input{background:none;border:none;margin-top:3px}.syno-ux-superboxselect-item{position:relative;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;o-border-radius:2px;khtml-border-radius:2px;border:1px solid #C8D2DC;background-color:#E7F3FE;padding:0px 26px 0px 8px !important;font-size:12px}.syno-ux-superboxselect-item.syno-ux-superboxselect-item-hover{background:#F2F9FF;border:1px solid #B6C4D2}.syno-ux-superboxselect-item.syno-ux-superboxselect-item-focus{border-color:#B6C4D2;background:#E0F0FE}.syno-ux-superboxselect-item-close{background-repeat:no-repeat;background-attachment:scroll;background-position:left 0px;background-image:url("./images/Components/superbox_button_cancel.png");border:none;font-size:1px;height:22px;padding:0;position:absolute;right:0px;top:0px;width:16px;display:block;cursor:pointer;background-color:transparent}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-superboxselect-item-close{background-image:url("../img/synohdpack/./images/Components/superbox_button_cancel.png");background-size:8px 88px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-superboxselect-item-close{background-image:url("../img/synohdpack/./images/Components/superbox_button_cancel.png");background-size:8px 88px;outline:1px green dashed}}.syno-ux-superboxselect-item-close:hover,.syno-ux-superboxselect-item-close:active{background-position:left -22px}.syno-ux-superboxselect-item-focus .syno-ux-superboxselect-item-close{background-position:left -44px}.x-item-disabled .syno-ux-superboxselect-item-close{background-position:left -66px}.syno-gridtree.syno-ux-treepanel div.x-tree-node-el{display:block}.syno-gridtree .syno-gridtree-col{border:none}.syno-gridtree .syno-gridtree-icons{float:left}.syno-gridtree .syno-gridtree-static .x-tree-ec-icon{display:none}.syno-gridtree .syno-gridtree-static .x-tree-node-el{cursor:default}.syno-gridtree .no-node-icon .x-tree-node-leaf .x-tree-node-icon,.syno-gridtree .no-node-icon .x-tree-node-collapsed .x-tree-node-icon,.syno-gridtree .no-node-icon .x-tree-node-expanded .x-tree-node-icon{display:none}.syno-ux-combobox-list .x-combo-list-item.x-combo-selected{background-color:#0086e5;border:1px solid #0086e5 !important}.syno-ux-datefield-menu .x-date-middle .x-btn button{color:#0086e5}.syno-ux-datefield-menu table.x-date-inner tbody tr td.x-date-selected a{background-color:#0086e5}.syno-ux-datefield-menu table.x-date-inner tbody tr td.x-date-active:hover span{color:#0086e5}.syno-ux-datefield-menu table.x-date-inner tbody tr td.x-date-today a{border-bottom:2px solid #fa4b4b}.syno-ux-datefield-menu table.x-date-inner tbody tr td.x-date-today a span{color:#fa4b4b}.syno-ux-datefield-menu table.x-date-inner tbody tr td.x-date-today.x-date-active:hover span{color:#fa4b4b}.syno-ux-datefield-menu table.x-date-inner tbody tr td.x-date-selected.x-date-today a{background-color:#fa4b4b}.syno-ux-datefield-menu .x-date-mp tr td.x-date-mp-sel a{background-color:#0086e5}.syno-ux-displayfield.x-form-display-field a{color:#0086e5}.syno-ux-expandable-listview .item-wrap.item-over{background-color:#f5faff}.syno-ux-expandable-listview .item-wrap.item-selected{background-color:#e6f5ff}.syno-ux-expandable-listview .item-summary .item-status{color:#0086e5}.syno-ux-fieldset .x-fieldset-header{color:#0086e5}.syno-ux-modulelist .x-panel-body:before{background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0icmdiYSgyNTUsMjU1LDI1NSwwKSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, rgba(255,255,255,0)));background-image:-webkit-linear-gradient(#ffffff,rgba(255,255,255,0));background-image:-moz-linear-gradient(#ffffff,rgba(255,255,255,0));background-image:-o-linear-gradient(#ffffff,rgba(255,255,255,0));background-image:linear-gradient(#ffffff,rgba(255,255,255,0))}.syno-ux-modulelist .x-panel-body:after{background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0icmdiYSgyNTUsMjU1LDI1NSwwKSIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, rgba(255,255,255,0)), color-stop(100%, #ffffff));background-image:-webkit-linear-gradient(rgba(255,255,255,0),#ffffff);background-image:-moz-linear-gradient(rgba(255,255,255,0),#ffffff);background-image:-o-linear-gradient(rgba(255,255,255,0),#ffffff);background-image:linear-gradient(rgba(255,255,255,0),#ffffff)}.syno-ux-modulelist .x-tree-node-leaf.x-tree-node-over a span{color:#0086e5}.syno-ux-modulelist .x-tree-node-leaf.x-tree-selected{background-color:#0086e5}.syno-ux-modulelist .x-tree-node-leaf.x-tree-selected.x-tree-node-over a span{color:#FFFFFF}.syno-ux-modulelist .syno-textfilter .x-form-field-wrap.x-trigger-wrap-focus{border-color:#0086e5}.syno-ux-pagingtoolbar .x-toolbar-right div{color:#0086e5}.syno-ux-pagingtoolbar .x-btn-icon .syno-ux-page-btn,.syno-ux-pagingtoolbar .x-btn-icon .x-btn-small .syno-ux-page-btn,.syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .syno-ux-page-btn,.syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .x-btn-small .syno-ux-page-btn{color:#0086e5}.syno-ux-pagingtoolbar .x-btn-icon .syno-ux-page-btn-focus,.syno-ux-pagingtoolbar .x-btn-icon .x-btn-small .syno-ux-page-btn-focus,.syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .syno-ux-page-btn-focus,.syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .x-btn-small .syno-ux-page-btn-focus{background-color:#0086e5;color:white}.syno-ux-pagingtoolbar .x-btn-icon.x-btn-over .syno-ux-page-btn{background-color:#e6f5ff}.syno-ux-pagingtoolbar .x-btn-icon.x-btn-click .syno-ux-page-btn{color:white;background-color:#0086e5}.syno-ux-pagingtoolbar .x-btn-icon.x-item-disabled .syno-ux-page-btn{background-color:transparent}.syno-ux-button.syno-ux-statebuttongroup-right.x-btn-over.x-btn button,.syno-ux-button.syno-ux-statebuttongroup-right:hover.x-btn button,.syno-ux-button.syno-ux-statebuttongroup-left.x-btn-over.x-btn button,.syno-ux-button.syno-ux-statebuttongroup-left:hover.x-btn button,.syno-ux-button.syno-ux-statebuttongroup-middle.x-btn-over.x-btn button,.syno-ux-button.syno-ux-statebuttongroup-middle:hover.x-btn button{color:#0086e5}.x-statusbar .syno-ux-statusbar-loading{color:#0086e5}.syno-ux-superboxselect.x-form-focus{border-right:1px solid #0086e5}.syno-ux-superboxselect.x-form-focus.x-form-invalid{border-right:1px solid #FF8C8C}.syno-ux-tab-panel .x-tab-strip-top li.x-tab-strip-active .x-tab-strip-text{color:#0086e5}.syno-ux-textarea.x-form-focus{border-color:#0086e5}.syno-ux-textfilter .x-form-field-wrap.x-trigger-wrap-focus{border-color:#0086e5}.syno-ux-treepanel .x-tree-node .x-tree-node-over{background-color:#e6f5ff}.syno-ux-treepanel .x-tree-node .x-tree-selected{background-color:#0086e5}.syno-ux-treepanel.syno-ux-treepanel-gradient .x-panel-bwrap:before{background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0icmdiYSgyNTUsMjU1LDI1NSwwKSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, rgba(255,255,255,0)));background-image:-webkit-linear-gradient(#ffffff,rgba(255,255,255,0));background-image:-moz-linear-gradient(#ffffff,rgba(255,255,255,0));background-image:-o-linear-gradient(#ffffff,rgba(255,255,255,0));background-image:linear-gradient(#ffffff,rgba(255,255,255,0))}.syno-ux-treepanel.syno-ux-treepanel-gradient .x-panel-bwrap:after{background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0icmdiYSgyNTUsMjU1LDI1NSwwKSIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, rgba(255,255,255,0)), color-stop(100%, #ffffff));background-image:-webkit-linear-gradient(rgba(255,255,255,0),#ffffff);background-image:-moz-linear-gradient(rgba(255,255,255,0),#ffffff);background-image:-o-linear-gradient(rgba(255,255,255,0),#ffffff);background-image:linear-gradient(rgba(255,255,255,0),#ffffff)} diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/css/xtheme-gray.css b/salt/idh/skins/http/opencanary/nasLogin/static/css/xtheme-gray.css new file mode 100644 index 000000000..919e73297 --- /dev/null +++ b/salt/idh/skins/http/opencanary/nasLogin/static/css/xtheme-gray.css @@ -0,0 +1,1682 @@ +/*! + * Ext JS Library 3.4.0 + * Copyright(c) 2006-2011 Sencha Inc. + * licensing@sencha.com + * http://www.sencha.com/license + */ +.ext-el-mask { + background-color: #ccc; +} + +.ext-el-mask-msg { + border-color:#999; + background-color:#ddd; + background-image:url(../images/gray/panel/white-top-bottom.gif); + background-position: 0 -1px; +} +.ext-el-mask-msg div { + background-color: #eee; + border-color:#d0d0d0; + color:#222; + font:normal 11px tahoma, arial, helvetica, sans-serif; +} + +.x-mask-loading div { + background-color:#fbfbfb; + background-image:url(../images/default/grid/loading.gif); +} + +.x-item-disabled { + color: gray; +} + +.x-item-disabled * { + color: gray !important; +} + +.x-splitbar-proxy { + background-color: #aaa; +} + +.x-color-palette a { + border-color:#fff; +} + +.x-color-palette a:hover, .x-color-palette a.x-color-palette-sel { + border-color:#CFCFCF; + background-color: #eaeaea; +} + +/* +.x-color-palette em:hover, .x-color-palette span:hover{ + background-color: #eaeaea; +} +*/ + +.x-color-palette em { + border-color:#aca899; +} + +.x-ie-shadow { + background-color:#777; +} + +.x-shadow .xsmc { + background-image: url(../images/default/shadow-c.png); +} + +.x-shadow .xsml, .x-shadow .xsmr { + background-image: url(../images/default/shadow-lr.png); +} + +.x-shadow .xstl, .x-shadow .xstc, .x-shadow .xstr, .x-shadow .xsbl, .x-shadow .xsbc, .x-shadow .xsbr{ + background-image: url(../images/default/shadow.png); +} + +.loading-indicator { + font-size: 11px; + background-image: url(../images/default/grid/loading.gif); +} + +.x-spotlight { + background-color: #ccc; +}.x-tab-panel-header, .x-tab-panel-footer { + background-color: #eaeaea; + border-color:#d0d0d0; + overflow:hidden; + zoom:1; +} + +.x-tab-panel-header, .x-tab-panel-footer { + border-color:#d0d0d0; +} + +ul.x-tab-strip-top{ + background-color:#dbdbdb; + background-image: url(../images/gray/tabs/tab-strip-bg.gif); + border-bottom-color:#d0d0d0; +} + +ul.x-tab-strip-bottom{ + background-color:#dbdbdb; + background-image: url(../images/gray/tabs/tab-strip-btm-bg.gif); + border-top-color:#d0d0d0; +} + +.x-tab-panel-header-plain .x-tab-strip-spacer, +.x-tab-panel-footer-plain .x-tab-strip-spacer { + border-color:#d0d0d0; + background-color: #eaeaea; +} + +.x-tab-strip span.x-tab-strip-text { + font:normal 11px tahoma,arial,helvetica; + color:#333; +} + +.x-tab-strip-over span.x-tab-strip-text { + color:#111; +} + +.x-tab-strip-active span.x-tab-strip-text { + color:#333; + font-weight:bold; +} + +.x-tab-strip-disabled .x-tabs-text { + color:#aaaaaa; +} + +.x-tab-strip-top .x-tab-right, .x-tab-strip-top .x-tab-left, .x-tab-strip-top .x-tab-strip-inner{ + background-image: url(../images/gray/tabs/tabs-sprite.gif); +} + +.x-tab-strip-bottom .x-tab-right { + background-image: url(../images/gray/tabs/tab-btm-inactive-right-bg.gif); +} + +.x-tab-strip-bottom .x-tab-left { + background-image: url(../images/gray/tabs/tab-btm-inactive-left-bg.gif); +} + +.x-tab-strip-bottom .x-tab-strip-over .x-tab-left { + background-image: url(../images/gray/tabs/tab-btm-over-left-bg.gif); +} + +.x-tab-strip-bottom .x-tab-strip-over .x-tab-right { + background-image: url(../images/gray/tabs/tab-btm-over-right-bg.gif); +} + +.x-tab-strip-bottom .x-tab-strip-active .x-tab-right { + background-image: url(../images/gray/tabs/tab-btm-right-bg.gif); +} + +.x-tab-strip-bottom .x-tab-strip-active .x-tab-left { + background-image: url(../images/gray/tabs/tab-btm-left-bg.gif); +} + +.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close { + background-image:url(../images/gray/tabs/tab-close.gif); +} + +.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close:hover{ + background-image:url(../images/gray/tabs/tab-close.gif); +} + +.x-tab-panel-body { + border-color:#d0d0d0; + background-color:#fff; +} + +.x-tab-panel-body-top { + border-top: 0 none; +} + +.x-tab-panel-body-bottom { + border-bottom: 0 none; +} + +.x-tab-scroller-left { + background-image:url(../images/gray/tabs/scroll-left.gif); + border-bottom-color:#d0d0d0; +} + +.x-tab-scroller-left-over { + background-position: 0 0; +} + +.x-tab-scroller-left-disabled { + background-position: -18px 0; + opacity:.5; + -moz-opacity:.5; + filter:alpha(opacity=50); + cursor:default; +} + +.x-tab-scroller-right { + background-image:url(../images/gray/tabs/scroll-right.gif); + border-bottom-color:#d0d0d0; +} + +.x-tab-panel-bbar .x-toolbar, .x-tab-panel-tbar .x-toolbar { + border-color:#d0d0d0; +} +.x-form-field{ + font:normal 12px tahoma, arial, helvetica, sans-serif; +} + +.x-form-text, textarea.x-form-field{ + background-color:#fff; + background-image:url(../images/default/form/text-bg.gif); + border-color:#C1C1C1; +} + +.x-form-select-one { + background-color:#fff; + border-color:#C1C1C1; +} + +.x-form-check-group-label { + border-bottom: 1px solid #d0d0d0; + color: #333; +} + +.x-editor .x-form-check-wrap { + background-color:#fff; +} + +.x-form-field-wrap .x-form-trigger{ + background-image:url(../images/gray/form/trigger.gif); + border-bottom-color:#b5b8c8; +} + +.x-form-field-wrap .x-form-date-trigger{ + background-image: url(../images/gray/form/date-trigger.gif); +} + +.x-form-field-wrap .x-form-clear-trigger{ + background-image: url(../images/gray/form/clear-trigger.gif); +} + +.x-form-field-wrap .x-form-search-trigger{ + background-image: url(../images/gray/form/search-trigger.gif); +} + +.x-trigger-wrap-focus .x-form-trigger{ + border-bottom-color: #777777; +} + +.x-item-disabled .x-form-trigger-over{ + border-bottom-color:#b5b8c8; +} + +.x-item-disabled .x-form-trigger-click{ + border-bottom-color:#b5b8c8; +} + +.x-form-focus, textarea.x-form-focus{ + border-color:#777777; +} + +.x-form-invalid, textarea.x-form-invalid{ + background-color:#fff; + background-image:url(../images/default/grid/invalid_line.gif); + border-color:#c30; +} + +.ext-webkit .x-form-invalid{ + background-color:#fee; + border-color:#ff7870; +} + +.x-form-inner-invalid, textarea.x-form-inner-invalid{ + background-color:#fff; + background-image:url(../images/default/grid/invalid_line.gif); +} + +.x-form-grow-sizer { + font:normal 12px tahoma, arial, helvetica, sans-serif; +} + +.x-form-item { + font:normal 12px tahoma, arial, helvetica, sans-serif; +} + +.x-form-invalid-msg { + color:#c0272b; + font:normal 11px tahoma, arial, helvetica, sans-serif; + background-image:url(../images/default/shared/warning.gif); +} + +.x-form-empty-field { + color:gray; +} + +.x-small-editor .x-form-field { + font:normal 11px arial, tahoma, helvetica, sans-serif; +} + +.ext-webkit .x-small-editor .x-form-field { + font:normal 12px arial, tahoma, helvetica, sans-serif; +} + +.x-form-invalid-icon { + background-image:url(../images/default/form/exclamation.gif); +} + +.x-fieldset { + border-color:#CCCCCC; +} + +.x-fieldset legend { + font:bold 11px tahoma, arial, helvetica, sans-serif; + color:#777777; +}.x-btn{ + font:normal 11px tahoma, verdana, helvetica; +} + +.x-btn button{ + font:normal 11px arial,tahoma,verdana,helvetica; + color:#333; +} + +.x-btn em { + font-style:normal; + font-weight:normal; +} + +.x-btn-tl, .x-btn-tr, .x-btn-tc, .x-btn-ml, .x-btn-mr, .x-btn-mc, .x-btn-bl, .x-btn-br, .x-btn-bc{ + background-image:url(../images/gray/button/btn.gif); +} + +.x-btn-click .x-btn-text, .x-btn-menu-active .x-btn-text, .x-btn-pressed .x-btn-text{ + color:#000; +} + +.x-btn-disabled *{ + color:gray !important; +} + +.x-btn-mc em.x-btn-arrow { + background-image:url(../images/default/button/arrow.gif); +} + +.x-btn-mc em.x-btn-split { + background-image:url(../images/default/button/s-arrow.gif); +} + +.x-btn-over .x-btn-mc em.x-btn-split, .x-btn-click .x-btn-mc em.x-btn-split, .x-btn-menu-active .x-btn-mc em.x-btn-split, .x-btn-pressed .x-btn-mc em.x-btn-split { + background-image:url(../images/gray/button/s-arrow-o.gif); +} + +.x-btn-mc em.x-btn-arrow-bottom { + background-image:url(../images/default/button/s-arrow-b-noline.gif); +} + +.x-btn-mc em.x-btn-split-bottom { + background-image:url(../images/default/button/s-arrow-b.gif); +} + +.x-btn-over .x-btn-mc em.x-btn-split-bottom, .x-btn-click .x-btn-mc em.x-btn-split-bottom, .x-btn-menu-active .x-btn-mc em.x-btn-split-bottom, .x-btn-pressed .x-btn-mc em.x-btn-split-bottom { + background-image:url(../images/gray/button/s-arrow-bo.gif); +} + +.x-btn-group-header { + color: #666; +} + +.x-btn-group-tc { + background-image: url(../images/gray/button/group-tb.gif); +} + +.x-btn-group-tl { + background-image: url(../images/gray/button/group-cs.gif); +} + +.x-btn-group-tr { + background-image: url(../images/gray/button/group-cs.gif); +} + +.x-btn-group-bc { + background-image: url(../images/gray/button/group-tb.gif); +} + +.x-btn-group-bl { + background-image: url(../images/gray/button/group-cs.gif); +} + +.x-btn-group-br { + background-image: url(../images/gray/button/group-cs.gif); +} + +.x-btn-group-ml { + background-image: url(../images/gray/button/group-lr.gif); +} +.x-btn-group-mr { + background-image: url(../images/gray/button/group-lr.gif); +} + +.x-btn-group-notitle .x-btn-group-tc { + background-image: url(../images/gray/button/group-tb.gif); +} +.x-toolbar{ + border-color:#d0d0d0; + background-color:#f0f0f0; + background-image:url(../images/gray/toolbar/bg.gif); +} + +.x-toolbar td,.x-toolbar span,.x-toolbar input,.x-toolbar div,.x-toolbar select,.x-toolbar label{ + font:normal 11px arial,tahoma, helvetica, sans-serif; +} + +.x-toolbar .x-item-disabled { + color:gray; +} + +.x-toolbar .x-item-disabled * { + color:gray; +} + +.x-toolbar .x-btn-mc em.x-btn-split { + background-image:url(../images/default/button/s-arrow-noline.gif); +} + +.x-toolbar .x-btn-over .x-btn-mc em.x-btn-split, .x-toolbar .x-btn-click .x-btn-mc em.x-btn-split, +.x-toolbar .x-btn-menu-active .x-btn-mc em.x-btn-split, .x-toolbar .x-btn-pressed .x-btn-mc em.x-btn-split +{ + background-image:url(../images/gray/button/s-arrow-o.gif); +} + +.x-toolbar .x-btn-mc em.x-btn-split-bottom { + background-image:url(../images/default/button/s-arrow-b-noline.gif); +} + +.x-toolbar .x-btn-over .x-btn-mc em.x-btn-split-bottom, .x-toolbar .x-btn-click .x-btn-mc em.x-btn-split-bottom, +.x-toolbar .x-btn-menu-active .x-btn-mc em.x-btn-split-bottom, .x-toolbar .x-btn-pressed .x-btn-mc em.x-btn-split-bottom +{ + background-image:url(../images/gray/button/s-arrow-bo.gif); +} + +.x-toolbar .xtb-sep { + background-image: url(../images/default/grid/grid-split.gif); +} + +.x-tbar-page-first{ + background-image: url(../images/gray/grid/page-first.gif) !important; +} + +.x-tbar-loading{ + background-image: url(../images/gray/grid/refresh.gif) !important; +} + +.x-tbar-page-last{ + background-image: url(../images/gray/grid/page-last.gif) !important; +} + +.x-tbar-page-next{ + background-image: url(../images/gray/grid/page-next.gif) !important; +} + +.x-tbar-page-prev{ + background-image: url(../images/gray/grid/page-prev.gif) !important; +} + +.x-item-disabled .x-tbar-loading{ + background-image: url(../images/default/grid/loading.gif) !important; +} + +.x-item-disabled .x-tbar-page-first{ + background-image: url(../images/default/grid/page-first-disabled.gif) !important; +} + +.x-item-disabled .x-tbar-page-last{ + background-image: url(../images/default/grid/page-last-disabled.gif) !important; +} + +.x-item-disabled .x-tbar-page-next{ + background-image: url(../images/default/grid/page-next-disabled.gif) !important; +} + +.x-item-disabled .x-tbar-page-prev{ + background-image: url(../images/default/grid/page-prev-disabled.gif) !important; +} + +.x-paging-info { + color:#444; +} + +.x-toolbar-more-icon { + background-image: url(../images/gray/toolbar/more.gif) !important; +} +.x-resizable-handle { + background-color:#fff; +} + +.x-resizable-over .x-resizable-handle-east, .x-resizable-pinned .x-resizable-handle-east, +.x-resizable-over .x-resizable-handle-west, .x-resizable-pinned .x-resizable-handle-west +{ + background-image:url(../images/gray/sizer/e-handle.gif); +} + +.x-resizable-over .x-resizable-handle-south, .x-resizable-pinned .x-resizable-handle-south, +.x-resizable-over .x-resizable-handle-north, .x-resizable-pinned .x-resizable-handle-north +{ + background-image:url(../images/gray/sizer/s-handle.gif); +} + +.x-resizable-over .x-resizable-handle-north, .x-resizable-pinned .x-resizable-handle-north{ + background-image:url(../images/gray/sizer/s-handle.gif); +} +.x-resizable-over .x-resizable-handle-southeast, .x-resizable-pinned .x-resizable-handle-southeast{ + background-image:url(../images/gray/sizer/se-handle.gif); +} +.x-resizable-over .x-resizable-handle-northwest, .x-resizable-pinned .x-resizable-handle-northwest{ + background-image:url(../images/gray/sizer/nw-handle.gif); +} +.x-resizable-over .x-resizable-handle-northeast, .x-resizable-pinned .x-resizable-handle-northeast{ + background-image:url(../images/gray/sizer/ne-handle.gif); +} +.x-resizable-over .x-resizable-handle-southwest, .x-resizable-pinned .x-resizable-handle-southwest{ + background-image:url(../images/gray/sizer/sw-handle.gif); +} +.x-resizable-proxy{ + border-color:#565656; +} +.x-resizable-overlay{ + background-color:#fff; +} +.x-grid3 { + background-color:#fff; +} + +.x-grid-panel .x-panel-mc .x-panel-body { + border-color:#d0d0d0; +} + +.x-grid3-row td, .x-grid3-summary-row td{ + font:normal 11px/13px arial, tahoma, helvetica, sans-serif; +} + +.x-grid3-hd-row td { + font:normal 11px/15px arial, tahoma, helvetica, sans-serif; +} + +.x-grid3-hd-row td { + border-left-color:#eee; + border-right-color:#d0d0d0; +} + +.x-grid-row-loading { + background-color: #fff; + background-image:url(../images/default/shared/loading-balls.gif); +} + +.x-grid3-row { + border-color:#ededed; + border-top-color:#fff; +} + +.x-grid3-row-alt{ + background-color:#fafafa; +} + +.x-grid3-row-over { + border-color:#ddd; + background-color:#efefef; + background-image:url(../images/default/grid/row-over.gif); +} + +.x-grid3-resize-proxy { + background-color:#777; +} + +.x-grid3-resize-marker { + background-color:#777; +} + +.x-grid3-header{ + background-color:#f9f9f9; + background-image:url(../images/gray/grid/grid3-hrow2.gif); +} + +.x-grid3-header-pop { + border-left-color:#d0d0d0; +} + +.x-grid3-header-pop-inner { + border-left-color:#eee; + background-image:url(../images/default/grid/hd-pop.gif); +} + +td.x-grid3-hd-over, td.sort-desc, td.sort-asc, td.x-grid3-hd-menu-open { + border-left-color:#ACACAC; + border-right-color:#ACACAC; +} + +td.x-grid3-hd-over .x-grid3-hd-inner, td.sort-desc .x-grid3-hd-inner, td.sort-asc .x-grid3-hd-inner, td.x-grid3-hd-menu-open .x-grid3-hd-inner { + background-color:#f9f9f9; + background-image:url(../images/gray/grid/grid3-hrow-over2.gif); + +} + +.sort-asc .x-grid3-sort-icon { + background-image: url(../images/gray/grid/sort_asc.gif); +} + +.sort-desc .x-grid3-sort-icon { + background-image: url(../images/gray/grid/sort_desc.gif); +} + +.x-grid3-cell-text, .x-grid3-hd-text { + color:#000; +} + +.x-grid3-split { + background-image: url(../images/default/grid/grid-split.gif); +} + +.x-grid3-hd-text { + color:#333; +} + +.x-dd-drag-proxy .x-grid3-hd-inner{ + background-color:#f9f9f9; + background-image:url(../images/gray/grid/grid3-hrow-over2.gif); + border-color:#ACACAC; +} + +.col-move-top{ + background-image:url(../images/gray/grid/col-move-top.gif); +} + +.col-move-bottom{ + background-image:url(../images/gray/grid/col-move-bottom.gif); +} + +.x-grid3-row-selected { + background-color:#CCCCCC !important; + background-image: none; + border-color:#ACACAC; +} + +.x-grid3-cell-selected{ + background-color: #CBCBCB !important; + color:#000; +} + +.x-grid3-cell-selected span{ + color:#000 !important; +} + +.x-grid3-cell-selected .x-grid3-cell-text{ + color:#000; +} + +.x-grid3-locked td.x-grid3-row-marker, .x-grid3-locked .x-grid3-row-selected td.x-grid3-row-marker{ + background-color:#ebeadb !important; + background-image:url(../images/default/grid/grid-hrow.gif) !important; + color:#000; + border-top-color:#fff; + border-right-color:#6fa0df !important; +} + +.x-grid3-locked td.x-grid3-row-marker div, .x-grid3-locked .x-grid3-row-selected td.x-grid3-row-marker div{ + color:#333 !important; +} + +.x-grid3-dirty-cell { + background-image:url(../images/default/grid/dirty.gif); +} + +.x-grid3-topbar, .x-grid3-bottombar{ + font:normal 11px arial, tahoma, helvetica, sans-serif; +} + +.x-grid3-bottombar .x-toolbar{ + border-top-color:#a9bfd3; +} + +.x-props-grid .x-grid3-td-name .x-grid3-cell-inner{ + background-image:url(../images/default/grid/grid3-special-col-bg.gif) !important; + color:#000 !important; +} + +.x-props-grid .x-grid3-body .x-grid3-td-name{ + background-color:#fff !important; + border-right-color:#eee; +} + +.xg-hmenu-sort-asc .x-menu-item-icon{ + background-image: url(../images/default/grid/hmenu-asc.gif); +} + +.xg-hmenu-sort-desc .x-menu-item-icon{ + background-image: url(../images/default/grid/hmenu-desc.gif); +} + +.xg-hmenu-lock .x-menu-item-icon{ + background-image: url(../images/default/grid/hmenu-lock.gif); +} + +.xg-hmenu-unlock .x-menu-item-icon{ + background-image: url(../images/default/grid/hmenu-unlock.gif); +} + +.x-grid3-hd-btn { + background-color:#f9f9f9; + background-image:url(../images/gray/grid/grid3-hd-btn.gif); +} + +.x-grid3-body .x-grid3-td-expander { + background-image:url(../images/default/grid/grid3-special-col-bg.gif); +} + +.x-grid3-row-expander { + background-image:url(../images/gray/grid/row-expand-sprite.gif); +} + +.x-grid3-body .x-grid3-td-checker { + background-image: url(../images/default/grid/grid3-special-col-bg.gif); +} + +.x-grid3-row-checker, .x-grid3-hd-checker { + background-image:url(../images/default/grid/row-check-sprite.gif); +} + +.x-grid3-body .x-grid3-td-numberer { + background-image:url(../images/default/grid/grid3-special-col-bg.gif); +} + +.x-grid3-body .x-grid3-td-numberer .x-grid3-cell-inner { + color:#444; +} + +.x-grid3-body .x-grid3-td-row-icon { + background-image:url(../images/default/grid/grid3-special-col-bg.gif); +} + +.x-grid3-body .x-grid3-row-selected .x-grid3-td-numberer, +.x-grid3-body .x-grid3-row-selected .x-grid3-td-checker, +.x-grid3-body .x-grid3-row-selected .x-grid3-td-expander { + background-image:url(../images/gray/grid/grid3-special-col-sel-bg.gif); +} + +.x-grid3-check-col { + background-image:url(../images/default/menu/unchecked.gif); +} + +.x-grid3-check-col-on { + background-image:url(../images/default/menu/checked.gif); +} + +.x-grid-group, .x-grid-group-body, .x-grid-group-hd { + zoom:1; +} + +.x-grid-group-hd { + border-bottom-color:#d0d0d0; +} + +.x-grid-group-hd div.x-grid-group-title { + background-image:url(../images/gray/grid/group-collapse.gif); + color:#5F5F5F; + font:bold 11px tahoma, arial, helvetica, sans-serif; +} + +.x-grid-group-collapsed .x-grid-group-hd div.x-grid-group-title { + background-image:url(../images/gray/grid/group-expand.gif); +} + +.x-group-by-icon { + background-image:url(../images/default/grid/group-by.gif); +} + +.x-cols-icon { + background-image:url(../images/default/grid/columns.gif); +} + +.x-show-groups-icon { + background-image:url(../images/default/grid/group-by.gif); +} + +.x-grid-empty { + color:gray; + font:normal 11px tahoma, arial, helvetica, sans-serif; +} + +.x-grid-with-col-lines .x-grid3-row td.x-grid3-cell { + border-right-color:#ededed; +} + +.x-grid-with-col-lines .x-grid3-row{ + border-top-color:#ededed; +} + +.x-grid-with-col-lines .x-grid3-row-selected { + border-top-color:#B9B9B9; +} +.x-pivotgrid .x-grid3-header-offset table td { + background: url(../images/gray/grid/grid3-hrow2.gif) repeat-x 50% 100%; + border-left: 1px solid; + border-right: 1px solid; + border-left-color: #D0D0D0; + border-right-color: #D0D0D0; +} + +.x-pivotgrid .x-grid3-row-headers { + background-color: #f9f9f9; +} + +.x-pivotgrid .x-grid3-row-headers table td { + background: #EEE url(../images/default/grid/grid3-rowheader.gif) repeat-x left top; + border-left: 1px solid; + border-right: 1px solid; + border-left-color: #EEE; + border-right-color: #D0D0D0; + border-bottom: 1px solid; + border-bottom-color: #D0D0D0; + height: 18px; +} +.x-dd-drag-ghost{ + color:#000; + font: normal 11px arial, helvetica, sans-serif; + border-color: #ddd #bbb #bbb #ddd; + background-color:#fff; +} + +.x-dd-drop-nodrop .x-dd-drop-icon{ + background-image: url(../images/default/dd/drop-no.gif); +} + +.x-dd-drop-ok .x-dd-drop-icon{ + background-image: url(../images/default/dd/drop-yes.gif); +} + +.x-dd-drop-ok-add .x-dd-drop-icon{ + background-image: url(../images/default/dd/drop-add.gif); +} + +.x-view-selector { + background-color:#D6D6D6; + border-color:#888888; +}.x-tree-node-expanded .x-tree-node-icon{ + background-image:url(../images/default/tree/folder-open.gif); +} + +.x-tree-node-leaf .x-tree-node-icon{ + background-image:url(../images/default/tree/leaf.gif); +} + +.x-tree-node-collapsed .x-tree-node-icon{ + background-image:url(../images/default/tree/folder.gif); +} + +.x-tree-node-loading .x-tree-node-icon{ + background-image:url(../images/default/tree/loading.gif) !important; +} + +.x-tree-node .x-tree-node-inline-icon { + background-image: none; +} + +.x-tree-node-loading a span{ + font-style: italic; + color:#444444; +} + +.ext-ie .x-tree-node-el input { + width:15px; + height:15px; +} + +.x-tree-lines .x-tree-elbow{ + background-image:url(../images/default/tree/elbow.gif); +} + +.x-tree-lines .x-tree-elbow-plus{ + background-image:url(../images/default/tree/elbow-plus.gif); +} + +.x-tree-lines .x-tree-elbow-minus{ + background-image:url(../images/default/tree/elbow-minus.gif); +} + +.x-tree-lines .x-tree-elbow-end{ + background-image:url(../images/default/tree/elbow-end.gif); +} + +.x-tree-lines .x-tree-elbow-end-plus{ + background-image:url(../images/gray/tree/elbow-end-plus.gif); +} + +.x-tree-lines .x-tree-elbow-end-minus{ + background-image:url(../images/gray/tree/elbow-end-minus.gif); +} + +.x-tree-lines .x-tree-elbow-line{ + background-image:url(../images/default/tree/elbow-line.gif); +} + +.x-tree-no-lines .x-tree-elbow-plus{ + background-image:url(../images/default/tree/elbow-plus-nl.gif); +} + +.x-tree-no-lines .x-tree-elbow-minus{ + background-image:url(../images/default/tree/elbow-minus-nl.gif); +} + +.x-tree-no-lines .x-tree-elbow-end-plus{ + background-image:url(../images/gray/tree/elbow-end-plus-nl.gif); +} + +.x-tree-no-lines .x-tree-elbow-end-minus{ + background-image:url(../images/gray/tree/elbow-end-minus-nl.gif); +} + +.x-tree-arrows .x-tree-elbow-plus{ + background-image:url(../images/gray/tree/arrows.gif); +} + +.x-tree-arrows .x-tree-elbow-minus{ + background-image:url(../images/gray/tree/arrows.gif); +} + +.x-tree-arrows .x-tree-elbow-end-plus{ + background-image:url(../images/gray/tree/arrows.gif); +} + +.x-tree-arrows .x-tree-elbow-end-minus{ + background-image:url(../images/gray/tree/arrows.gif); +} + +.x-tree-node{ + color:#000; + font: normal 11px arial, tahoma, helvetica, sans-serif; +} + +.x-tree-node a, .x-dd-drag-ghost a{ + color:#000; +} + +.x-tree-node a span, .x-dd-drag-ghost a span{ + color:#000; +} + +.x-tree-node .x-tree-node-disabled a span{ + color:gray !important; +} + +.x-tree-node div.x-tree-drag-insert-below{ + border-bottom-color:#36c; +} + +.x-tree-node div.x-tree-drag-insert-above{ + border-top-color:#36c; +} + +.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-below a{ + border-bottom-color:#36c; +} + +.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-above a{ + border-top-color:#36c; +} + +.x-tree-node .x-tree-drag-append a span{ + background-color:#ddd; + border-color:gray; +} + +.x-tree-node .x-tree-node-over { + background-color: #eee; +} + +.x-tree-node .x-tree-selected { + background-color: #ddd; +} + +.x-tree-drop-ok-append .x-dd-drop-icon{ + background-image: url(../images/default/tree/drop-add.gif); +} + +.x-tree-drop-ok-above .x-dd-drop-icon{ + background-image: url(../images/default/tree/drop-over.gif); +} + +.x-tree-drop-ok-below .x-dd-drop-icon{ + background-image: url(../images/default/tree/drop-under.gif); +} + +.x-tree-drop-ok-between .x-dd-drop-icon{ + background-image: url(../images/default/tree/drop-between.gif); +} +.x-date-picker { + border-color:#585858; + background-color:#fff; +} + +.x-date-middle,.x-date-left,.x-date-right { + background-image: url(../images/gray/shared/hd-sprite.gif); + color:#fff; + font:bold 11px "sans serif", tahoma, verdana, helvetica; +} + +.x-date-middle .x-btn .x-btn-text { + color:#fff; +} + +.x-date-middle .x-btn-mc em.x-btn-arrow { + background-image:url(../images/gray/toolbar/btn-arrow-light.gif); +} + +.x-date-right a { + background-image: url(../images/gray/shared/right-btn.gif); +} + +.x-date-left a{ + background-image: url(../images/gray/shared/left-btn.gif); +} + +.x-date-inner th { + background-color:#D8D8D8; + background-image: url(../images/gray/panel/white-top-bottom.gif); + border-bottom-color:#AFAFAF; + font:normal 10px arial, helvetica,tahoma,sans-serif; + color:#595959; +} + +.x-date-inner td { + border-color:#fff; +} + +.x-date-inner a { + font:normal 11px arial, helvetica,tahoma,sans-serif; + color:#000; +} + +.x-date-inner .x-date-active{ + color:#000; +} + +.x-date-inner .x-date-selected a{ + background-image: none; + background-color:#D8D8D8; + border-color:#DCDCDC; +} + +.x-date-inner .x-date-today a{ + border-color:darkred; +} + +.x-date-inner .x-date-selected span{ + font-weight:bold; +} + +.x-date-inner .x-date-prevday a,.x-date-inner .x-date-nextday a { + color:#aaa; +} + +.x-date-bottom { + border-top-color:#AFAFAF; + background-color:#D8D8D8; + background:#D8D8D8 url(../images/gray/panel/white-top-bottom.gif) 0 -2px; +} + +.x-date-inner a:hover, .x-date-inner .x-date-disabled a:hover{ + color:#000; + background-color:#D8D8D8; +} + +.x-date-inner .x-date-disabled a { + background-color:#eee; + color:#bbb; +} + +.x-date-mmenu{ + background-color:#eee !important; +} + +.x-date-mmenu .x-menu-item { + font-size:10px; + color:#000; +} + +.x-date-mp { + background-color:#fff; +} + +.x-date-mp td { + font:normal 11px arial, helvetica,tahoma,sans-serif; +} + +.x-date-mp-btns button { + background-color:#4E565F; + color:#fff; + border-color:#C0C0C0 #434343 #434343 #C0C0C0; + font:normal 11px arial, helvetica,tahoma,sans-serif; +} + +.x-date-mp-btns { + background-color:#D8D8D8; + background:#D8D8D8 url(../images/gray/panel/white-top-bottom.gif) 0 -2px; +} + +.x-date-mp-btns td { + border-top-color:#AFAFAF; +} + +td.x-date-mp-month a,td.x-date-mp-year a { + color: #333; +} + +td.x-date-mp-month a:hover,td.x-date-mp-year a:hover { + color:#333; + background-color:#FDFDFD; +} + +td.x-date-mp-sel a { + background-color:#D8D8D8; + background:#D8D8D8 url(../images/gray/panel/white-top-bottom.gif) 0 -2px; + border-color:#DCDCDC; +} + +.x-date-mp-ybtn a { + background-image:url(../images/gray/panel/tool-sprites.gif); +} + +td.x-date-mp-sep { + border-right-color:#D7D7D7; +}.x-tip .x-tip-close{ + background-image: url(../images/gray/qtip/close.gif); +} + +.x-tip .x-tip-tc, .x-tip .x-tip-tl, .x-tip .x-tip-tr, .x-tip .x-tip-bc, .x-tip .x-tip-bl, .x-tip .x-tip-br, .x-tip .x-tip-ml, .x-tip .x-tip-mr { + background-image: url(../images/gray/qtip/tip-sprite.gif); +} + +.x-tip .x-tip-mc { + font: normal 11px tahoma,arial,helvetica,sans-serif; +} +.x-tip .x-tip-ml { + background-color: #fff; +} + +.x-tip .x-tip-header-text { + font: bold 11px tahoma,arial,helvetica,sans-serif; + color:#444; +} + +.x-tip .x-tip-body { + font: normal 11px tahoma,arial,helvetica,sans-serif; + color:#444; +} + +.x-form-invalid-tip .x-tip-tc, .x-form-invalid-tip .x-tip-tl, .x-form-invalid-tip .x-tip-tr, .x-form-invalid-tip .x-tip-bc, +.x-form-invalid-tip .x-tip-bl, .x-form-invalid-tip .x-tip-br, .x-form-invalid-tip .x-tip-ml, .x-form-invalid-tip .x-tip-mr +{ + background-image: url(../images/default/form/error-tip-corners.gif); +} + +.x-form-invalid-tip .x-tip-body { + background-image:url(../images/default/form/exclamation.gif); +} + +.x-tip-anchor { + background-image:url(../images/gray/qtip/tip-anchor-sprite.gif); +}.x-menu { + background-color:#f0f0f0; + background-image:url(../images/default/menu/menu.gif); +} + +.x-menu-floating{ + border-color:#7D7D7D; +} + +.x-menu-nosep { + background-image:none; +} + +.x-menu-list-item{ + font:normal 11px arial,tahoma,sans-serif; +} + +.x-menu-item-arrow{ + background-image:url(../images/gray/menu/menu-parent.gif); +} + +.x-menu-sep { + background-color:#e0e0e0; + border-bottom-color:#fff; +} + +a.x-menu-item { + color:#222; +} + +.x-menu-item-active { + background-image: url(../images/gray/menu/item-over.gif); + background-color: #f1f1f1; + border-color:#ACACAC; +} + +.x-menu-item-active a.x-menu-item { + border-color:#ACACAC; +} + +.x-menu-check-item .x-menu-item-icon{ + background-image:url(../images/default/menu/unchecked.gif); +} + +.x-menu-item-checked .x-menu-item-icon{ + background-image:url(../images/default/menu/checked.gif); +} + +.x-menu-item-checked .x-menu-group-item .x-menu-item-icon{ + background-image:url(../images/gray/menu/group-checked.gif); +} + +.x-menu-group-item .x-menu-item-icon{ + background-image:none; +} + +.x-menu-plain { + background-color:#fff !important; +} + +.x-menu .x-date-picker{ + border-color:#AFAFAF; +} + +.x-cycle-menu .x-menu-item-checked { + border-color:#B9B9B9 !important; + background-color:#F1F1F1; +} + +.x-menu-scroller-top { + background-image:url(../images/default/layout/mini-top.gif); +} + +.x-menu-scroller-bottom { + background-image:url(../images/default/layout/mini-bottom.gif); +}.x-box-tl { + background-image: url(../images/default/box/corners.gif); +} + +.x-box-tc { + background-image: url(../images/default/box/tb.gif); +} + +.x-box-tr { + background-image: url(../images/default/box/corners.gif); +} + +.x-box-ml { + background-image: url(../images/default/box/l.gif); +} + +.x-box-mc { + background-color: #eee; + background-image: url(../images/default/box/tb.gif); + font-family: "Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif; + color: #393939; + font-size: 12px; +} + +.x-box-mc h3 { + font-size: 14px; + font-weight: bold; +} + +.x-box-mr { + background-image: url(../images/default/box/r.gif); +} + +.x-box-bl { + background-image: url(../images/default/box/corners.gif); +} + +.x-box-bc { + background-image: url(../images/default/box/tb.gif); +} + +.x-box-br { + background-image: url(../images/default/box/corners.gif); +} + +.x-box-blue .x-box-bl, .x-box-blue .x-box-br, .x-box-blue .x-box-tl, .x-box-blue .x-box-tr { + background-image: url(../images/default/box/corners-blue.gif); +} + +.x-box-blue .x-box-bc, .x-box-blue .x-box-mc, .x-box-blue .x-box-tc { + background-image: url(../images/default/box/tb-blue.gif); +} + +.x-box-blue .x-box-mc { + background-color: #c3daf9; +} + +.x-box-blue .x-box-mc h3 { + color: #17385b; +} + +.x-box-blue .x-box-ml { + background-image: url(../images/default/box/l-blue.gif); +} + +.x-box-blue .x-box-mr { + background-image: url(../images/default/box/r-blue.gif); +} +.x-combo-list { + border-color:#ccc; + background-color:#ddd; + font:normal 12px tahoma, arial, helvetica, sans-serif; +} + +.x-combo-list-inner { + background-color:#fff; +} + +.x-combo-list-hd { + font:bold 11px tahoma, arial, helvetica, sans-serif; + color:#333; + background-image: url(../images/default/layout/panel-title-light-bg.gif); + border-bottom-color:#BCBCBC; +} + +.x-resizable-pinned .x-combo-list-inner { + border-bottom-color:#BEBEBE; +} + +.x-combo-list-item { + border-color:#fff; +} + +.x-combo-list .x-combo-selected{ + border-color:#777 !important; + background-color:#f0f0f0; +} + +.x-combo-list .x-toolbar { + border-top-color:#BCBCBC; +} + +.x-combo-list-small { + font:normal 11px tahoma, arial, helvetica, sans-serif; +}.x-panel { + border-color: #d0d0d0; +} + +.x-panel-header { + color:#333; + font-weight:bold; + font-size: 11px; + font-family: tahoma,arial,verdana,sans-serif; + border-color:#d0d0d0; + background-image: url(../images/gray/panel/white-top-bottom.gif); +} + +.x-panel-body { + border-color:#d0d0d0; + background-color:#fff; +} + +.x-panel-bbar .x-toolbar, .x-panel-tbar .x-toolbar { + border-color:#d0d0d0; +} + +.x-panel-tbar-noheader .x-toolbar, .x-panel-mc .x-panel-tbar .x-toolbar { + border-top-color:#d0d0d0; +} + +.x-panel-body-noheader, .x-panel-mc .x-panel-body { + border-top-color:#d0d0d0; +} + +.x-panel-tl .x-panel-header { + color:#333; + font:bold 11px tahoma,arial,verdana,sans-serif; +} + +.x-panel-tc { + background-image: url(../images/gray/panel/top-bottom.gif); +} + +.x-panel-tl, .x-panel-tr, .x-panel-bl, .x-panel-br{ + background-image: url(../images/gray/panel/corners-sprite.gif); + border-bottom-color:#d0d0d0; +} + +.x-panel-bc { + background-image: url(../images/gray/panel/top-bottom.gif); +} + +.x-panel-mc { + font: normal 11px tahoma,arial,helvetica,sans-serif; + background-color:#f1f1f1; +} + +.x-panel-ml { + background-color: #fff; + background-image:url(../images/gray/panel/left-right.gif); +} + +.x-panel-mr { + background-image: url(../images/gray/panel/left-right.gif); +} + +.x-tool { + background-image:url(../images/gray/panel/tool-sprites.gif); +} + +.x-panel-ghost { + background-color:#f2f2f2; +} + +.x-panel-ghost ul { + border-color:#d0d0d0; +} + +.x-panel-dd-spacer { + border-color:#d0d0d0; +} + +.x-panel-fbar td,.x-panel-fbar span,.x-panel-fbar input,.x-panel-fbar div,.x-panel-fbar select,.x-panel-fbar label{ + font:normal 11px arial,tahoma, helvetica, sans-serif; +} +.x-window-proxy { + background-color:#fcfcfc; + border-color:#d0d0d0; +} + +.x-window-tl .x-window-header { + color:#555; + font:bold 11px tahoma,arial,verdana,sans-serif; +} + +.x-window-tc { + background-image: url(../images/gray/window/top-bottom.png); +} + +.x-window-tl { + background-image: url(../images/gray/window/left-corners.png); +} + +.x-window-tr { + background-image: url(../images/gray/window/right-corners.png); +} + +.x-window-bc { + background-image: url(../images/gray/window/top-bottom.png); +} + +.x-window-bl { + background-image: url(../images/gray/window/left-corners.png); +} + +.x-window-br { + background-image: url(../images/gray/window/right-corners.png); +} + +.x-window-mc { + border-color:#d0d0d0; + font: normal 11px tahoma,arial,helvetica,sans-serif; + background-color:#e8e8e8; +} + +.x-window-ml { + background-image: url(../images/gray/window/left-right.png); +} + +.x-window-mr { + background-image: url(../images/gray/window/left-right.png); +} + +.x-window-maximized .x-window-tc { + background-color:#fff; +} + +.x-window-bbar .x-toolbar { + border-top-color:#d0d0d0; +} + +.x-panel-ghost .x-window-tl { + border-bottom-color:#d0d0d0; +} + +.x-panel-collapsed .x-window-tl { + border-bottom-color:#d0d0d0; +} + +.x-dlg-mask{ + background-color:#ccc; +} + +.x-window-plain .x-window-mc { + background-color: #E8E8E8; + border-color: #D0D0D0 #EEEEEE #EEEEEE #D0D0D0; +} + +.x-window-plain .x-window-body { + border-color: #EEEEEE #D0D0D0 #D0D0D0 #EEEEEE; +} + +body.x-body-masked .x-window-plain .x-window-mc { + background-color: #E4E4E4; +} +.x-html-editor-wrap { + border-color:#BCBCBC; + background-color:#fff; +} +.x-html-editor-tb .x-btn-text { + background-image:url(../images/default/editor/tb-sprite.gif); +} +.x-panel-noborder .x-panel-header-noborder { + border-bottom-color:#d0d0d0; +} + +.x-panel-noborder .x-panel-tbar-noborder .x-toolbar { + border-bottom-color:#d0d0d0; +} + +.x-panel-noborder .x-panel-bbar-noborder .x-toolbar { + border-top-color:#d0d0d0; +} + +.x-tab-panel-bbar-noborder .x-toolbar { + border-top-color:#d0d0d0; +} + +.x-tab-panel-tbar-noborder .x-toolbar { + border-bottom-color:#d0d0d0; +} + +.x-border-layout-ct { + background-color:#f0f0f0; +} +.x-border-layout-ct { + background-color:#f0f0f0; +} + +.x-accordion-hd { + color:#222; + font-weight:normal; + background-image: url(../images/gray/panel/light-hd.gif); +} + +.x-layout-collapsed{ + background-color:#dfdfdf; + border-color:#d0d0d0; +} + +.x-layout-collapsed-over{ + background-color:#e7e7e7; +} + +.x-layout-split-west .x-layout-mini { + background-image:url(../images/default/layout/mini-left.gif); +} +.x-layout-split-east .x-layout-mini { + background-image:url(../images/default/layout/mini-right.gif); +} +.x-layout-split-north .x-layout-mini { + background-image:url(../images/default/layout/mini-top.gif); +} +.x-layout-split-south .x-layout-mini { + background-image:url(../images/default/layout/mini-bottom.gif); +} + +.x-layout-cmini-west .x-layout-mini { + background-image:url(../images/default/layout/mini-right.gif); +} + +.x-layout-cmini-east .x-layout-mini { + background-image:url(../images/default/layout/mini-left.gif); +} + +.x-layout-cmini-north .x-layout-mini { + background-image:url(../images/default/layout/mini-bottom.gif); +} + +.x-layout-cmini-south .x-layout-mini { + background-image:url(../images/default/layout/mini-top.gif); +} +.x-progress-wrap { + border-color:#8E8E8E; +} + +.x-progress-inner { + background-color:#E7E7E7; + background-image:url(../images/gray/qtip/bg.gif); +} + +.x-progress-bar { + background-color:#BCBCBC; + background-image:url(../images/gray/progress/progress-bg.gif); + border-top-color:#E2E2E2; + border-bottom-color:#A4A4A4; + border-right-color:#A4A4A4; +} + +.x-progress-text { + font-size:11px; + font-weight:bold; + color:#fff; +} + +.x-progress-text-back { + color:#5F5F5F; +} +.x-list-header{ + background-color:#f9f9f9; + background-image:url(../images/gray/grid/grid3-hrow2.gif); +} + +.x-list-header-inner div em { + border-left-color:#ddd; + font:normal 11px arial, tahoma, helvetica, sans-serif; +} + +.x-list-body dt em { + font:normal 11px arial, tahoma, helvetica, sans-serif; +} + +.x-list-over { + background-color:#eee; +} + +.x-list-selected { + background-color:#f0f0f0; +} + +.x-list-resizer { + border-left-color:#555; + border-right-color:#555; +} + +.x-list-header-inner em.sort-asc, .x-list-header-inner em.sort-desc { + background-image:url(../images/gray/grid/sort-hd.gif); + border-color: #d0d0d0; +} +.x-slider-horz, .x-slider-horz .x-slider-end, .x-slider-horz .x-slider-inner { + background-image:url(../images/default/slider/slider-bg.png); +} + +.x-slider-horz .x-slider-thumb { + background-image:url(../images/gray/slider/slider-thumb.png); +} + +.x-slider-vert, .x-slider-vert .x-slider-end, .x-slider-vert .x-slider-inner { + background-image:url(../images/default/slider/slider-v-bg.png); +} + +.x-slider-vert .x-slider-thumb { + background-image:url(../images/gray/slider/slider-v-thumb.png); +} +.x-window-dlg .ext-mb-text, +.x-window-dlg .x-window-header-text { + font-size:12px; +} + +.x-window-dlg .ext-mb-textarea { + font:normal 12px tahoma,arial,helvetica,sans-serif; +} + +.x-window-dlg .x-msg-box-wait { + background-image:url(../images/default/grid/loading.gif); +} + +.x-window-dlg .ext-mb-info { + background-image:url(../images/gray/window/icon-info.gif); +} + +.x-window-dlg .ext-mb-warning { + background-image:url(../images/gray/window/icon-warning.gif); +} + +.x-window-dlg .ext-mb-question { + background-image:url(../images/gray/window/icon-question.gif); +} + +.x-window-dlg .ext-mb-error { + background-image:url(../images/gray/window/icon-error.gif); +} diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/fonts/roboto.woff b/salt/idh/skins/http/opencanary/nasLogin/static/fonts/roboto.woff new file mode 100644 index 0000000000000000000000000000000000000000..1440b1be64111bc184959ad9669fc0497a80f827 GIT binary patch literal 22172 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 z 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 Ld?mfJJ0jw{hu@Y%G|&m@oupcMYE)<%>v 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ℜ!NOJ)HdW{2p97!rTvp^0Zb@ZfH!x_SMC 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�PI1K7@@=wIb}5`+)~Wa)s_I--K@dCaN9u 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 z z>dh+Zkmden%t{d%j$AN}@dc~0i~~?$=5%g9+N8hcYz-{~DbxMt)MgPPY(`_EnJcJa*Rt=9?lh;ur79Cto{RZM1>s2i( zq>s#>F?>Yi6;=&>KnnfGI0;CzAsqS+$JouQ&CJ^+h|Kjps@ZwyaQQt?u z87<{82N&of|IyMJ^y)whjsZf1Mc-C#+~7QJy~!eQpcfuck;kgjz&Xb+X-*f-7h|cE zcvu3PYT90yP3a|b{rZvTX6Wk|=njkKVB#}XLYP_HinUe8kW&pKNy=1caL3Rh?;p_Z zWiQ9(6JZ)=TO%~|6`BvF<%LWPLUW;Ux@D97RSn?fdvgN6;!;`Cq{1anCGwi@uxoi)9e5A zT%gJ=DyX9ngzj}iqg6YR*Nrh}u%$G{j%I&F>uO|IPF=BN5Xp@gPp`&^yq4Kwj4P-8 zjsDD@cO4PGReK1W{k5$h#08MFRmDZRdpgWzD+_o-(+c1!P(1c??o&=J-G@yEVZwz> zouX*2tSwW)&=pw?xBE$2$W;qQX!`OGCZAv9!9ggzIl}z}cXWBUvt>qQJS;@-oDmEJ zm{pN$MpFY^OmS8V*eJZK6JAcOr$jyob<>2DCiEd~($`Z=eUDli@s_$C8jIc8tP1~K z;IxfbkoMq}E|uprG2WIEX(1mwY*>?g2HI~OPsVC6T&a8^_TNxQSMK9@FEj?7F{wQ6 zgStdcJvx!`q^p|dU@l#QXt1{8#n8Y^>-iZ9))Tjspjg9E)Ou8m&-#(sYZd=6@tK28 zlb{@0<2c00-GM_J`p-vxB_^^{LJnRHGE3ZDaRDcjwTXZ8$Sk93d2I|0y9kZuAk{DQ z)$8o^3(|HefMiN2jp!2_y^IA@*yf~r79(VEcmq^Zkk^Ii57RO0VTwSx8-y1%w?TqT z`#vOAk7`9cvQ{qeoU9mC8el`)^8}3WWA#L7lJnhGPo&RoLT=(XnEY{|)NX^CMo!}V z+$s#^O36Xq9aBvqzeI~GJ-ohS={tO+;v3~g=6P;k&A9PSO^BpG9R?t@?TSFTXsxLw~mQ6Wyx6eu(>I&9ikcM$q`8RZ@-)gs%!n z^)PV9jm7%n5hLrU$Ee??U=GLnhoDh{qbpAJ5IfijwFUN{;k!qd07}n=*QKvM{rr=- z=YD~M(*BTDoz4EWqKvDeH3pafQ-oIl&kBlrheeKEi$>0Aw zGxNul_U(OtZ}|Ou!ILYgmyEx>`P}_C{tt@#dHS!5PrrB`xchI^Zhv|*_U@(a4_@E* z#^onB8n|hJ1q=TDR?&|mCs+RP%(CXKk8ZvG*Vgc`AD`V=@Eg6v-A#at}TKochtA2u-W6bM9hV^OF4b@=tHi5s2I||`J;Fx zfAL2B)<~r7bEQ*@JZ-)HJiMOV!8Cji_7Wo{+fId=u_x`vLn8IC*!xj&#Djd&@iLD+ z(C{l#qHdmsz9xzsenr&bbkK)DFP>YRt-E9#il?6xN@KwfWs`oq4pVbO4&l+B_Qhja z$5$b_VgsL82`{tENp?e!gz{R=jagg9E=~Jl4QX4V+3PG=~7QD}2AJ`}5z*p_f zac!MYFYBeO_cN&F+}E>!L|fof*>&n=QXaJ&UWeMo$wS4(p*r<=C<>j%o@K`)(3hWa z0pVr{p=Rm>!3oqJNyG!}py3#C9T*djpvMMLX?YNH=R5yws552vWGKWzoX z5ELu3lcw{23aSuMR#L<xplBP1C<1q=G~z_>;RFbQ4zcoDi6r`K8A0nX*&gxre0C;T3IjM&&W z`SlogI_i$~YlU>ksCrc3)J7G5MMHcE3J=i;Dev~&h z(OBIRyBG0X3g+lmg?##i1sG$EUanY({s}cz)oGyGEJBrTfMSGIr-(I7&j44KR)XmY z>`u-W#9)#jaZ~9=HNDLb_?tNd(i=)aV7}m1+Ne3)(wOh#$ApaOinqkhQ4FwAgXGrH z_QPT8I73J5vDfLb0S0e$Fd52jxvhFYT1N}FB6hsFj`sw3vv!*@0z|N0M77AMPHFe7 z67rThiUhw9CCw5nwjb(WoGA>RS^5CE7{)iwc^KL=8@G~Y;&O{_J?BT*?;bE^>R#+O zSH4A*kvmMUH?*DBXstZOm#GTnP~O2K=>qgBHFPziXo8I~G&XWh z3MQk@HaNDr0&&vZhaDbQ)|ifxIi`)Pf4Lsol=!7~-O0G;9>4bTkJ~~%3H*!s^rfWR z|8k|~H&coBXiJ|Czu}>UFfZUniMR0<)Ym18CzWXd{Tb-fVTJSbAk=RV*s-i;3$YUm z3In_EB`Y^Se4jlr2*Zaqc{_Vf5t@-ikD+k|P67@15c>goMYI`F5_m0P_H{95;ed*59_GSEk zK^wlB-X3SSm3aCtiG11Ks$lg8$!9{?+{4LO?w6Fbo8>^Ke;%^Qn%_k`Lxw)oh#v9C z%BuHuJy#>&15qY#7k0J4y_{O^$BpMG-oZ(sY@B;_YOtmX=C(9Y3OYmm(Tq6n0&L z-9ubc9`t!j(x~1ac~8&{D8!__Cfri%IWycTIV1fJY4+u&lpTC#S1*V)2Er{jCJhvq z5PPnou36xz;|c&cO)H6GXA>uDP5Ty0;o0)F^hiSgb-KO}E}^H?EBWC8>m0wAFZxGe zX0&EC@{#<$YTUD(r~?X_Ck=D4eSkuHaOA}+ zUg(=mXx(BDUDnj}Wyo~AZfG616Fx>hodE2JsSyc&4LZR7hv|8uh~Yao+c8@_$Y8JV zPj=NFC;x>lv)o?24>_$rs}U(ZjPmN9wrr?3*15>7RPYKbm(pEt5LmvqTmait%NWf7 zKmTaKQv3yJaMD-}-E-fwyy~p=IzmidrH(rtwUkt@u*IN4KQQn%qgK9X=9sHENkysE zsAWd-w+j0gCZ%zp&GuvgzX`JzO@67HhCTh0pwe&(4~FBxC;TKiJK2ySyG;P8TS+U2(e&`^1-dNZGwXp;ism0$6x?lV{F zCo0=)zcqC>2s%E~6EqpT(w^lmnnaxaN9yAI%;vPBENcM&$ySrcQDN?PF6g21jtA=N zWXeo?+@v5_sqBjEh5{Eo_+|2p{?^uDGTA@C7zyS_XeC)rRpdy1-a4cadrye|bi@fw zPVd$Yo~#j{H>8&NGLaL``RIe$Uii(s3z1Y8eRrH6ek^6-XN|F4qbvRGc4?_3`>L}C z?ke8m(1`9p(!fXl(0bTkxW#^saz^qB7U(9$X9T`V7c|S?&lxfnjp_{uQS8e3HMmuU z-qu|XgG$3vN*(7BhaxQM6+1GU?<$%sg)+6YCZX`KqjK)wu&mMZy>EDKtWr&qoU)h3_|k)9|K zeKrW5Im5>Bx?~|hPD-d)T3%SyAYEpN&e5sHCx-XI?g!qKIl9|d-R+9=pG$`MW!HUN z#4;e~tBk745Ixsl)eD2;6R{{_pC?KsvYldtK1?1)-1-*M-nN<_OC@5Y&dxB0qDO!U zx^RN4FDB$BDyqp+L+}9H#L7y3-m&&7JzZ0nW42OO3SGNe)#RH8)!e0E1vy>$GXC(#j>k}^qq(l2`^!JO ze!F)B{_2~*nf6{cbmm<)NB!2SIJu!<$3g+creemTEv=X6vlM}b4hu~3^`y5jJJGoA zsHskibi-~E?0$Vye8fY$5PRT*v;&!>dD65w8-rqesE!Ftxsx0U%<<2<2EO&Fbw zFPpeM-6Jte9MzW_HBq@2QeKaPmaEeft^d{~)}bwtS#W;KQX%WqAP@k(sK_+qgA;Qv zK4!tOU3Ocx9(#oDbVdd6^lj8C?#nRk1z^5M3wca0w=~PO`H^&*$*P!%e;e+ocAl{k z)aTJDb+V4RSeQ874p*fBLL#zQDT&-mCwVPv+pFU2p<$P@JeQ6($JSz|ZrM&3Ch$F? z4$L*S9jL9j^(eHR|g6Fxhi8{mB%Rxb8B$D_z2tW;@ zkETzbfj2fk>z_J7oKq~RRg+s|yI7aP0!Ur<#BWld{gy3Q`u!m?Dn5vQ4Avc6wsX)@ z3K;^u{__N@B7Nhy247Hd!))`|H}Tyc8&?Jfa(;^-lw&Eos@&tyfIVfIe|QG*t&;vB zoWfGtRe=8N@Shjh5hVwBV2UCn9Wl>UJS7e2?Y&{musPR;ybe8}8h0Cx!_U`_W{ODn zCcLB&gnuVm(+#}0gYB#;ZIu5sk2e*;m+OFm`&&AIHc z0B%|>wq>h$Yb_&NHg5AJ1OBnKpGSp3Wu^oL-jO3^4-I(M)@i!>4^!M3o^v4XF?fzJw3);mQ4&pEB2#mr&1)xsF+DnXDzXopFet_z9@xQSI8<$lNrMNu`rJy7Zn&2PGr zck_QP0QWMKh^t(o3p6MokSzB3-{!f@j z3pWY)N=7>9Dif&B6RY?oRY(g+cZXFPF}P_SstO^EIFTLxyQB?8f@hogVmU63z{BvH zI3HJ}m67|6>3mUF?2FcoTcLpJ%2w`sL0>q?2ur`Me14bH9=u^|opZ^CEl$V-MoQ@> z*i~Dy8YynhS;S+b4Anv&I(@kfCgOS1B&``1NSy-4q0u&CC8~v%pr*PPp;T1{94&`o z)t4+AF?9JT4QUm4gS>!+%VyD(fJ+zV)~V9c*TNDyn|{AUBfx4(G<@l>0fx3^)5u=O z*GHKImeHo-jHYLiOm?o0f`S|M=Eftp&keGGCI80Nw`P7?yn4+WVCEG6EWXXB58fm4 zen2SSF_A>V8KoqPvK|CTbt9IQ*Y5nWdTYjipO-(ad;g^H5#@;A`G;El=i-Amrhj~O z?$3@tw>*>Zm)&^sL$dV!?V`W`dS%0NU-Ukb|JQf#(1*q=33u=OwRhsb0Pj_B@80x} zQhV^oA8Tvrvs_g?(7S+;6(LlVdiWS`Kjd_W8#lSD7!g;Dv2LUR0CkM(ENZPhvc@sK~R4&)%a#WOo^vlSows!;sKgGg_HT$5wIbQJR?6NY9(^a zs{@{TaH>uZh`SMOk~+J|0H3(~tx55&j;VN$BKQ)TNVGMH8NEm|TYq+%dAnv}=6Bv_zG;kG@0~$L6f@=&1(EyWxH-EQvQfqo;a=iV=I17}=!n8y=KR zrYvlGsVYuhMcu_UANnfFLzI)>h8qY!i{4dJGQ?QaO7z;mGF{`H zTW*%>PMwKu!rH9Z2~Y7jRh;5E2Ebvj^zHPdh$E&M<(eJ0Wu$nvu+rYC+hi(hO$(h0 zUL`%X{yKOFVV^*=b#O&*BtA>s=1Vo@oW~zUp5$APt}_ZoS4BgN&n!0XdK2Jamnd8A zqu*VPi?QXoB9`!7Ip>3nr?ZBtSmz2{pEb-uY2#_jp)HKSh#?TADltTv#V&{bUC-rK z`TFL6K%B2chc2YBwuJlnP&xB5@^pNyaT}v4{W0Q9c(lBUNMZ;g%K@k98~Pf$u5`G{ za+@yGg|?9JwWjl`$ttE z7-Iznf~MxSIL6~hdbhaJWER*R8P&F0vqD08-=|Qe5vQ~Yo zKv$0m)v2Zz2-!rfvGFoINc=s$dNEl%=N^=4>>~U7g1ORJ_|GH1(x_z5?F5P6!(~=- zAj!)XM>jqQTRbK^Ma5Qs4eiRQOod*2j7fOe)j=g3HzyStib|UO#LGEYnI4cKTF0me z9m*UQVCSVWEzb#G7=3=KH@rrCe}U^B3imgxe_OFumvcdSEVkFUCq4|C$MEb{X#`VY zgEgP6LezO3E`GwToWLD?9D1PD4-Hq*KM$=G9LK$sdhtoqRl68A*0@03%#$1ukzAG5 zfRUm{TO2O}EoOG%7O8bMNF1fk8^hr(teG4gbMWs|OUg+hW1_Z&c^LQhyLQ%Os~D>M zI$j{n^JQ^_!BIjUzZAcSLMG_#r~0zsc<(s<7J=6#WKD8*>$dejV+x5pZ&wxqTmdlz zd)gtBimDg~Q81H1=2R$~?=h3cPzVQdwq>FSH~}%o3C@I6b#iQMjocMs(t9aBqP+$h z42B@5LQg-4lTi;hLx=d-G_?*f_7O0e8-He7qdC$m3+BSybv}C7P=w{(EfVEtfNXk%M!&$ z4|%z>6!QNd0bi3eA`Zu;PLIe$dg*Lm`MULUS zL&2~9`1pTnsgtLH1%CVRH~$0rhkbDEi=Kb^=J!K5(#h_}ZX8O=Z+}7l@Qrt#YoYY` zbPuj9dFSoV_)jqpLCo^F^o)IqU8Me`}uo+GXB}| z@NSza&-hixhP=`S$th_KB{`i{lnBS()(pX`aTa+{;;S~m#hgQgd*?1_vEsz@kh1JZ zTbEA!iaa{AjtIRU$ccOIT@m7kV+adH5sqAyN?V=@z9#9!p;fxQQX2Uh9bR*91R)lP9)!)G&+V znRVNUt(@MjrX)Zk>qn1sU2s{1v_onv%;jwqQ+UfApNT|90*{OAST68IwhK;=^BeyelSD6vg~xIYP?0Z}hq;8LaVI+y zE;gRqoCe|-wHpQp+hOy3O4sH9Vy~y?EZPelY4PlprYzhml%93u%g~>wuT+Y;u0>&7 z8D&LgokoIOn9K9#{)@7Zva|rPN3ej0`LgK&@}MD2Q`5W!{+Oq#gjT|0^%((dYR(wh;-dBC zH(Zp!Q|KOMuOk4RE(pRrPR=Ivch zNkhM4X8cLoVWxV6Dk+&Rk&A`Ep2c)TYix5uRRWQ?~G1=#iU zGB8}sJw13cvO1_PkJBa5C7JNT)wczn@K;AuL1ME@e0mO`3R3fCi^)u5cHzDRWX|Nj z&;`htxq5xvTqr-S2v@rzbR{jCFNhIrs%Mw)m=M~w(R9tTz*tW&Q~^wu);TkQghxh4 z5}6jIZ-t-fvX246DkHl)BArm~mhxuK8bv-)^dS#dxLV{}4}IuT=U3byq7ulR%sPrm zz8`?s#uKF9Qps;rm7~d%$I~!lIS6l-OFveQ+r@TmWMlRmqcGp>ks#IFXcX$lLM^sg zNWTbwB)J4;*z~(WD-kwp!cgC@}!&OEy>xx%A!17@bgG_vWS;GTvu#X4vtrbmJdGuwcxM=TnHaL4xm3$WB6D_2IDIn#a%1Zz{= zcGj{3{|kz!b++MeEglD2Lbz4P;K^V`wXl!7P?HA~=8oKpxU4 z0844JO96mKThh)>rU07Yg(tq=2KR*A33eHad<#p8y zw=cWWes}(7bmdsZ=k+UHD;~^SBj4!p{vJmrQsuI1W;pAKg`^6#;IQD=5Xt;Qz7&?W zKEmFFp`~ot{BVtnX4y$6{($7e)v2g|Iuu^UOrAo4m%UIRO@ypgC4uABr?XIR515pg z<^TZZh{**M;WS4ttjm}ooShOj7-^j*1c7pPs9qg3$0(o5ruczi$R%A-?8atsoF? zD7+kKFvkM}sBq>o)E=wb66x3uG#nO7UBV!8v%8Dl&5saTdXfQ=dY#q%y-~g(^y|oT z=)6R3X}SSv=@%phVuMmPWKmPnTcwP17*~IhV#y=817caid0qtb$T3)us8}U_OC`RQ z%YB+|bk3|}U3Co^HK*m4M)LGvaLO(TyrbFCR0@SFtoRU|+fgB(ri+8x3gl^6YD75g z5{dg_YFwD>#F$|PvCN;0^hh9A$xBHYX%rm&4_=2jOvdwwx4OMH3F>W7Qn3KnlFzth zxQ0A2mv`q3a%USZtgMTKbBC-}4e#T>nj>dEsatqn1rt zE$)2!T4YY<+M(&6WF*OFV(egafOYM8l%R`;hg%$1n=qi$v?DEv#OE#3@Y-5D}Zwtu?r=!vZIyAMo*$I9Bc*UvI&5w|`k1Df}&0?CPy3eY@ z2}Vr|Y18jeNk-QhiKvI0%yA@m5p@#HS92(u;?}>VTS1Io6sBON^lIxxxN}tR0E+*p zi2FPAPDXXRDRYXl{vaO^t!2#OB4bt!GJC(qt{gh)W%HV4Wz9C^z1atfJrj{``L^e;`t zYozZ%dup{w-V>w<0}WYDH_|D5JsG$U&y_5v^-!eh+wyctK6Ir&3qU2ajybX;R}=Yd zF(pG2mta$|^4FwU{)gJ z{i@)$>_egmTMB|q>1`{su&J_xK)gtr=9Q#T`@AZ)EdZw{IHd488>70DGb+C&PC!hX zD)%Qt+@$Dj4L5QgKvnu?un!(=aQH(qJ~pYE+nzo%98kT|fv1?A7SiY)@6y z7Y}4eB;8$2%ea+A`cQl}=)yV})T^=4q}^`zQX=go%ZNfD*&F7iD-kmwjo|=6|HfPkZ0T`% zjreZ780M{_w(_<5dDYA%(iskb(aFE^1)g%fU0J-`sB5{_c$>Q~#d-W$UVM%9c*JQqe|cMT7{W;Mvzwkv3&Hu3)9do>QhoNwpgq zNoTF9)6UY>XUkL+)EZiDjIlphgD7tvAw>M#^Y4W;^}Jo^ciY)QN+gWj(y!-T0Gb4PW zZxti~_i4tr(6zq$aXb%`LZXx9wiOW|5%yeBl+?Jn1Hw1c~)7mz~B)M04=9~b0agsU&L^I6^F@xjKe?OpC0mTLN=3@dv3 z1s5(G&2J^Lk9GV(?J_{`{tpe@3s=AVJDN`no}utpSaMUKs_5wqCo`)6UjsFZT2ZV| z!vecq8(o{iKGBapA(vSsFye#8sS}liLhQ7_=Bie{vW-ZiR47EA!=A|#|hT2pZnRN9@7!L|%lZ8qMZx2KJj8dvoBS7=V zJkU2VXN0dV($i3eg4Qj{MQ&U|i}*46gMpyh5lS@VLI`552}ZoAd`je57ckFtUd8k6C-rcP$T|`_JpD*KqPc&jjn}bQCfkLCfl7Idd>> zrJa#1Y~n|^RcBOF{fdEcD8_9QLiD3UOXrfzq3v5}x^3BO@N_s`%53Ma9#v*>c0&8Z z5FacvcGHlOm`Z+D-a%M%LB}sC;qVn{@@QyV7QYk!7~f>02Y8`!u2X3&$8ifR&MKM& z#Bx1I&#A+U{IGp4O+hC{(^Iev)0!~IW%AfVu7=#sMud}24aVXpdN^61E~!bpmFiny zPDGLg9*4APiT`7ey-~SHHCRu6x?GtTE*AK4Zq1Tm0)ND^s{Ur*LK8_~DK}{hivPan zuC-2fzUz+*HPMT+n^YSZCMN(J(+$xy&C>psZ3SE#aclTI!qL@N);2mpuwmb$Z+-?hu^JN znHF*OKp1Dbea0xCOo6{DKD zRP@FXcr6W|D}`=44y0#DkcZ1kl#NrQv+H>x|1g@Gm~o1q0-{IVuh=Pj0^ObQKv?+^ zCOkf4M{ci<)I`{2hdd=z^3)(}x7bD3J4cco&_1y#TW*)Q!Y5;is_u}na46wX9NO+# zO)0)stXu)$`q`?_8VlpSys`WVZ-FWblXeI0K&vIk+b;?FAx2K6cr|qBfF<1(zoeqP z3Ax`gc!FZ*daov0FCe9H*-e=jkrrBb9m9>b+*`dF9&{v^ACLh)wXV+iu(vk z;k4EL${hV;=&|l%`~5BOu1u^(MGhUCNhkfB*+N~`OtYPxAVPgMPtd3`Mg`;w8*3;t zujyJNV4Ay2>SFtFV>#!(%s7Gx#(~SpISH{$;=UxUlGKx>T&b#gOX5^Ev&-T~6yf@r{LsN2Gf=Z8!GMiWqd zY`FSF&L}}ENH>sit*n^(5Hns_&M4=n5RHsb{prDK%-T>vp6W|20AGPgL>)vI*Qxf zR6?=4bM=U{Mo|m+CEp|Wv0)vcC+7BuBW5wdmr0+cVuCRWGRB_iAQI7Kjk!=Ao#|nx z?-ih8yPbhhLsj9rsvIwl+pg(k3#BvVDb$QF#X64I5oRIKB*q$u9&48Jlv)B05xcaA z{q|nIs1z6(Y&n2F8#8s*sEkeWWJHQOd7~{7ox-IN>+-Kd?eGG-)q|?qpmdqX8Q?es zw(F2APsV!$qsvuX6>_OP_%^&!NcQQp;$(ORi`B;J^2eFyQ#fu3Vl=H7gWp=b;S1XQ z{LKGiXg~kqIbZUv@)vw#N%oA0I7rJ;xDj=F0OJg-3idLD77P49(EKYD4SE+=Hy&bp&wH6Bxq8CUuRRWeU=;c5Lb4OMa4J{G`#jZ`eW z;vwCILTdt!^o3EC)AUD~*m3=7V!^OX8y&!N!(%%oP%o$NRldhHu78Pt(U_ja`W%_Z zcqv8c(%{H_63Z86(ct;^Sxp`KmsOcHeHPy0sF*qRfcpG}71(>o#G=O-7&!(jHuR~J zp`!Ge*STc$O!urI-5zYINgnPF@TyBsj4sH056apU>&FIU7J4O(v5@+xB#|E!Xn8%P z7Ck(Yr{N7^VnEr78{V_XQER72J2G|~t`je|A85X{)3f$Sv8g6W2k%aVKAjHA`k-9@ z9ejX|1E4{>>BQBC#U%C^o+HEBk{pu&EtzZ84Nqg4LAj^CQ|qG;7O#^UglX7Poms<>%ZNmF{SV-egL5?MJ;l z!Q~ba90)DQ@I+O|=Xjo1vD@S;`Do(QL2^*i;;kahj~AebKV9=4v=h_0hj@G{L!5*` zVeL=lDPmGBJx!o*Yf`b$+Psb(N)4xt7*pY%-1e-CMww+?LW;EX%JoFu0(^D)GJ*+c z!JS;t6H$0bK=z>ZJWs2PckCiQZrPO`xkjhfL}<}TW3JUI8axB>xC zG7Lt$F$?zh+>(6`xhQ%7zYq&rJ)8$xq5j{HCT1Qd+hX%47-YsF!W`ycKg7BdL$2{N zr+n}8(}igTd`0u>ga9{@yoL<>wTdvSR>_xgrR^6HRjF{YlPmDmLA>#t(fm%X!kH?j zH;!?o#*o(G45%sNDs+zja2sSlOtyu>>0xYcEMFoC?l32|N9n#qGe(U4c9uroGd0)laj2D_(T(N@hw zFSaMbafb9^Z+KlUew1jzf@*|IO#$dK?%I_D$;NdkQy~8pG0n?yC@{@7rae@)0myXq zV&a7}Xmu^7<*v#i4Lk}3?C@d)ltk<9pn#sCJhw$gZMV$P-hit`6IsaB=lQ2}vTdKX zK+ZD_0?&@@4AJ!n+?9Jkn^ERzUsAFyGzZCk@ol~dsoo(oxIs8>?m9O6f8pEO>K=GL z*Xf3Bsq7qnm1xvbs*@32Nz=>yBhg-}-l)|?DbvOba*mGi6_EUG2A>hqj=4NifZI>yy`OU zM{Wzn?szamcwwoULpj39Hyj+zwTHv< zssB=xX!3uZVxavXU+r`Cw0XmD&5DgKQplX!L9N3$WzB_^_c1Wv7=08*3U04%k39?5 zCqK+N19)1l__)a+{u9n{4LY2D{K#mMeT&1U^yhg)l-GmQxaSPz0HyMTM?Gfp&d_Ha z6Y2b-zSkT|iY{r3pheei51Kl5q*_3?4u%6fN|A5F;VKX+cRxQxolow^?2$xK)HLBale}l6uXw7|53u{%;_a$3sN2|BfRdNE?+PvVz(`|=GuB{VNH!H^0ekF<2=Mw^ zzLQ)Wtr~zt5fgA1^q?rVt3W57UB;i#BITLpogPbDoyMUHZ+qJ8xe513zKn(z)D@_+ zThh=|=-u?0OEXk%bYuIcAU*2`!g35!U0>=IE#Hfr=u2B5pq^B>SjrIM1bvHW4oHYO z&9v|+_>GGI-owqB#m+^*AVk}}tA&{geP?+E!yZwzEbJ&@6ZE{LYRVbpv<*;b@L*Iq z3ly)HIe&s&E5J(8NOUPLY#bN`9%d!FOas@^WWH~pt?n}4$ap6&heivQ^VnOG`I>Xl z*QQ81k)rL-uz!z7D`NyGLYlu|9tjz`)+;BFnwm=ZTWq364zJ?L$ zIN{00wl^$C$m5^clv)LEYZ!h|A2eESeM%jHoEPw5f(Kt|z}eVx%hcN_{DP3jTOI|s z#;p;|v{PdLWoXKq1rdCv!@~p6Kbi%aM1NR|lYUL&inlmS@A#P)6ZAjJ&2e(+C!PW# zvbs~LVa_e+i|a$WgN$^X?(9xD;VmeQ<-3UKUYTLkK)pYb(=9=rwfFI z^im0h5%NUM)8Vx7P<=fF;IG6g23x0Y(Zo^|CLNKg5oOP#7cFflMj_jvWOUZdF{A-Y zoSS#Eu*)9|(sjZEA|LlKY_<$0LOxWP68Wb!Khy9l?2)(QP+Jyn%$Q_%uK@vqdot63 zsu+Z0u@#rhq3c3nC6C5Lv(PMJvGRzDA3?rmah`%Swxxt= z#j}x1AjK&=n?VL_o|tzm)lQo1Q>Za5mp+r8=+32`?n}Bi#WYxix)e+gc~y|ZTGm1? zH_o%OJ%uTNg*Uh`A|8I*x?42CSB;~cq5D|FBx|~t(Fi{Gg$N5N7Sk6Z&Jx}j36v51 zI&_+`=5VOK1)>UZh$TChH=spw2_2#p@zG1ICRaUr_Q(O#nxo`kiz<)2hpJ}JL5+f! z__X&i!8abTOR;0Vu-E`@t|mGQbLzHFGo_gqlBQEy*!vd2v7>t=$leb`y;`uUNsxBv zBB?_;tB}!E$t7bTAAaMbmws*`zC(^W&!6omhpjH-r68bE6I_&yLXEij|0z2AxTem# z|6k|ioRB9pgb*GSdx%L$AUqh6`cT~oBsK{FL!dN~Vgn>LwbW5&QM>i-Nkrs9Z3qE* zP?MlQp3^m#;mJe7yQAz>g%!*|5IN|z zy(l*`|LefBe=~)?KK{`g(f=3y#X}XksEta@c>EpV8B!o;ZzJ@l=lh!OBI0@bs2p#Y znt^-{J}x`^z++7Avi65FJ2@j_?moV6;}B`qVI5m893%s+#t zZusut%RdDxo8JY`>EHmN=ZCM+3cv4s+BM3w?w{PJ`TYQh?yKwwk=AOx@SE&M;N!us zO9q606}+ndICdO`6Oy+#+p5$>det}RtNMn}PWlQyWWPVB973ncCG0KDD;(vJI__le z%(jnMt6kz#-ueY*JhYFta3ADeOMaeaJ`$<)ye71#DvgV%wl?n%=E$A&W%B7eKexfG zKWBQsRuNaNvdfgYsp^9JI1jJQCTr&KTPJLXN|nB>7m@1r6~FS5t7Jeja=Pu80II0J zliTWM)3w(9;neY0x-OisnL7KXbpmbt9lwr~9BvfD*@0brJGx^H4~^E$#yHNosY6n0 z6Yup9#Fk{XeUlC0*vrGONay>(n+et#gk7^=BG&xnSpq-do`2Gmg?g0d zyk}1WYjq8}%9)oHTEhG?0q}}ZN63z8%qU*GKL}s)I#$+1o9jRVYiI$??_gz+S}Ej( zCg)GX4<(WHHJHDdbsbewGngee0%=o$3l^j--5 z^RA{&e;7&9B^{HvLE{+tR@5ZWw!@thzsX4rT8~OF?UE;nk0_L#z#vSD1*t)Cv>KXi zCYpJiIlCDXD92b&2z{>o;+T%DFGpcGAt%B1;x}nL`vhC;@&ap?9mk!8j{~z6BhvUn z>Uw_^I(6;uB=n#zHj#a2;#^4>t_Y1qXtXbtlJ=~ZP(3_xH)>mHsiQ`z_ZWm$E$KzX z$FKmGA!IDDIDwHXUt>Z$p5Tj4T6F*OG4ie=?Yr-09@a+ZKf((V&iUYYVK>FXs7iQ(ijVu8nuEXmjiqU>-UqdrqF zUFf^CkZ{%BGS&x1`TDv(nF=97N{b@RqbIr&>s(Uno}9SE2g6W@+gQAbG%5Q|!!w<7 z-uOA#D3?vVQTZpF>rh|M3v*X2IV|*n_PpTNgxM5@{SVX0lCAAq;MwBu3&DwDAJ$%C zCc_7yhIVv}NN9L)`p=t(N!<|Af5BDC+6D)6{s?@c8%0yRra(KNb+pW1 z7#1!uZ~aAW;jYNH8lNKtdcEU}os}GV@tyz~SDYWbQUysOC+}?P7NVhjlN#aE%?0%1 z4fn*y(W8jSRPiOafrI5pXs5aN)3>q28(o4(Q;hM7rb{^rr>7#ezZF|GbF{lbt9|fsVsDS{k1*UFl_j_4 zxqd_#CpfL@cnvVas>B|;3YU7r0`X699?P7tbOc0ti2QrdpCxFdrn7D3dJW6YRhHcK zw&QLYxnHpzoW*Q8S0gz5#Vq{kV;hGlU3q|$rkAQMpQIzqTmu%m!TJUdH=Fk`5W3UzEQ z{SPosYJ*tTWDxQC(U>x|J}d~?&EP{8`~bNL@bf2qp5jYemhTNgvje&#R@_x1%gl`Ew3}r7NT=5B*6PS3eDE9>FGkx(#m#Vjj`0_A*eV^^WqO ziX59KQe$H*?sW020R*3&RMmk?tb8}pG-Xn9V5`8DOfV&b2VfWiP#3*^^`-p6|iM?!IfF0NE;8672 z?3jo=%!&RUrULuKW9hW)Qg6vX5fqCQ>E7cq%k|!hq+MX(YemSCP(fV~wDPF)Q>8*ac9-KT z_u7o9C5LYxA}6Ybu=vpL&?OOH@=+v3)Fs(OUWi{V`4fZYl5d@P9Anlz>4*=5@4Nmy znH7QfyfE(*P^>fm@a&gsMfsH1S9d~`_kCCzubyZxizG`P-kL5U^`azM6=4ZIaCvPx zFdETKmY4fyC2Z>FF_(wiG9s+3PPoH0mC>TKjE>bNwew)mq!i`HmSn<+q0BapvfQD@A*xPQ`W+>BxS$D z*mxWq{v@09`HrA1|3)*twLrQ9wqLB1$F>T#!#^L--*icr>OSjcF9;_3PPA;LrFZ*` z?VO*2IlO87j2$(Y>bntN^t$v;Mo=#Nqlj^pdy1UH76i}RLo1i#)Zi+>T6o8 zO`P6|R2A==%nxAnNV1ZU%t>=c@?2#xTkU5#XK7=R*~r%YW8E!aO;JnfZ4!Y1o7nFM zQmpeE1)WX9T5&4Gf_T|cEHuHK(0U{CG0d0bL*YXZ%~J+N(~`^44M2HzwL9zk|2Fokt-abiE;i}GRf)Lvc~+>rgKM@#9J2Wn}B z;w?l6DvNTc;^JgR5%Z^Kyu@RYNB!!^Ivoc%3oBXYnx!>4Hyfy|-j-8RG9xDwq&}#X zl!HZV+KyaHceMd)o>%MHh~E?X7E(fD7$@_(zXV~&X)5)gi5Wm%Z&*5khEEU@_|y!N z_#{ghzRpk(Ia-yg14e`C6iP{l-_jD5U(xT%_t^ab_if6yUcHxXw=w zINaeRRERzD#l)!5z<08KE{6J!dI(B_-(H51T5Q(Ic_n#;MULG_(m}hB$;kayq4@w^ zVY(L+?j+cafD8cp6)O;*ZHwBtO8+fpm~O%F4F!^R*zwQ_`7B{Fir&oWp~CCk7#t-E z`I+g)-bBRq0<5&{o}FcJqw1#KV1XpkPhJtIC|q4%Nrn+k3KyjpzGETLA`|Q?{Ly9^+syG6}=LuX01DY zk6Nr3u4D#yos%+{j)nyxf%wpZWlk8un!KJIk7e?vw;Aa%u%xSOSw4FQJ1BQPYrd+4&6be??T?zJlsk&(4|l>K>Oz43 zO{jX6xo3L$C-F4i%BbmycCg=mf0jLpHyvdE9K`X^U6|mnU@NBdy{`iAeG_p$m})qE zZMcXNt}JhZo0MPhu4C4w#GUGOY+nF*t^RU-yq=I$L|;~{;OjMgzEu&pk(AX&skXxj ztVhsV06MRPCAIS<)HwRm=4Tu9j2d(a@-EsskAeYZ_YJHJ8T9+lU|>m5E-cyy>TDza z0qu(jF)o^V3M4L8IaJkQ=ag=vPN@6sf{zIVGa`4WvP|6#%ml`reaB=EC}xe}WQ_4+A~4+W z=6(E>@?bOn_aRt3FC8R*uY`>X--3~*iWVgUhYc3q%Fhp0uT;BsNuW^?3++#F2ATRY z*-4G-m3hO$uVWc2_$$owr-O&ds?U}4;sH84HbRn9Nc@Y5)RmegmpMmif1fnI%gzmb z3P$m3{?5owR1>>zAXCj%Bd;Pl#`jM)mn-{MnQ)K`mJ_8@RmAz&@50zNxBZ?E8g4r# z*n9Q#1t0Z?&SL&7^&A;ZZBA3D<6iVg$z#Ff)w(&j@w}=`wtFz^m>O?E)1s{>Dro`-^{3onVPsmLO_-{U)JCs}G!E)CuA>{< zOf;`IgBeRbxIGN_xk}=BNET|}4^Q+V`T3577ViTiwrOvV2|Z$!!P>0Tnc;^}gO8>Q z+1_a<&6%p3<$#Hwd77AvXm$g3Qxh^%foh}#aNWJhx6cMqg4kcMw z?)yf8tgIJTgbPi=7s#{%%z_5Pb3mlAqD%ri*~>-!b?t7@Z&=%g;lv}KV1+?%`VeSH zlw`z1A~VB%sO*|W@BluRss6If^|m9&c9?bWo<>*H71 zv4po%ZYj@}kiGi2AXrq>a|1;Yd;RDC!u`U&gu;Bw<-}T2hUR z_DP*LsBlx@24Y-i9P$v8-3p+^ZWZR=?yEf#V#9&JXYpUrEnofSzlZOAt19t`lALri zzF4XYaA=3Hbt@orYJ4-{ug&U3{qs?4s2j9 zCmvOIbHi_=!=iN)cHYPh!J-Vi=vwYK1QNB3mhM+O-=z#a26+KAA6}^*m|^6s{FGtJ z_b{|M2{q~A4D_jzIJ!4!aPlf}_{`gYRxY(snvZ=E?rPb{o{oI-snBh--6WVY6~b!T z$}dZZD%%#iGW4q2!dntqtGymHos1`vPqthwSmJ6kEk!qp=RZWuskUT!57Y`_J(|KR z`fnJPV6+%6_Dx;8x}UW*)vS?J zN*;QB1WLnk=|kpM=w(}xpi2HGo$S1*fA{1`TdH```gjr2zwYFyDcrB2e{Ewuu%u~0 z@`AhRxv}-ltlttrxgGbuSSW`4a1@gdt>DEtWI(=qYg);;4hrtv z5P>5CYpapj6r8bzu$pdcK*$evBA%S-W2n2eDjhOKt{FQt;1|r6iraG507UeQZ%P|4vITlQuhAlSaee}E`qbj^x>C%9_ata- zTImOJ^nqzV7A~`oNfN%vVZ#fbBtUvp5JlqawTD|=qE1@^(qG61UW6tNeC5abA zX|oCV2E<0dMUJ@&201ic)L5ui2|Q&fcR=^GRXKpVxp0>3(es5Sp-P7h@-bn@PSnfh!zVSXOJB&`p4V$+s=W{D z!dGL`19wFv%j8I(8$Ftl+Fd8wZTW3{I}HqLVQWHA+J zl3XUsBw01@n!sKWL${ z)RU{YYfx;101>t+QRtr~vMdS><)7uR3KrIJ$yL+3P8sjBFzW42gCnD!rWcXdT$q*2 zS@@?)PhHOp+xy92&g^rgKvy`+K8hZCQE;Sk$s{UkRu?iR4a(UxbHCEpM( zZzHUY%gL+xV05-ABh8G(1(Pp|mf2VRA2T8m#^_TMr!9Lr*o(#Vk4mU*yOE55r$MBGyD-)Ga` z?Y&<%@?TIvox)47Hke>n(v-{eG&rlZSf z1(4Jrr@sIyt2mrEf7np00uw{|kzL>tlxbZp1*UG7K6HqWZ3)fd!MueDJ2=)I`O8bx990Jz$nL1R2+w3s z8pW1`mYR=vFOU^(S#;r#B>KSlshfNz>gexadJY&QZ(bFi^LkrxE8cVRPCc++KNs`U z3@B!1te2esq4fK0!4ic3PIeM!T-vkCsyVVs{5796S64@KkpWGjaDhkLEvVs^KM!by z;&~e@6mG$wB(%|!Ao2D3W64@~D7Y~>|2FyA^l_C6vufS3RJWiL*gr_l0XNeN?pT;f zsm+lLccRdg>h6rL11GRGvTWQ513l%Ou$bJGp!FU@E6QqE7NPI^4$vbr>2S}UTQ*~l zJxE>ewFjZDC2-wGeaAGbn3^{mY1Sm_NkhGn)cW9}jjfkKW~xI=z=_`dG$O+m`vAjw z`CdpXk~+LbCSScvGawW~B!FlvPq;$q`9)}?P=(;GCJA>^xUkKZ)79jzrxwc;3Xg2Y zDk2@KRg{W+%z7D}6S3eQ1hFS*-PNRtzx(D@F8yE&5e}4KjHtFBHKW;=Ha5tWx9 z_$YjwDk8h`5Zkb%4Gd*F7T7s(_8soAb+CF=T__QT&O^2VwXi1hsFID)!4-2AK8`Ot zfuHRODo^_U${`PMOr?3$3O`7tx}&lUh;A6JVM0;Uqbtnk?UnCoMYG#o=TC1LUa7K~ zrhfE#snoXTcZ$T*I?+u?UfD;dO%C$V_4~I;~mM+cBl-7(z_# zA!%2LlFV&3UWS!yc{8cIo@81#t3GWKm9Q=2V9ihlJ5$(aYIy*+P4tvgwHujfF177E zibmSD>Pe3IneSeE@ASk6rMF&;|L?zV{2y4H4UR(@>bg!aU0VPJx9u!=+0;$t0ma73 zERX6C0av}5dtXTouo4=5=CYt51Z`->Uq=tI*as5}+ki7Ag?j^hp_WyQ9VF1ZUGCAj zX1w8YJwq_TjuUm2`4h-ky5^6kn$zWzbRg{gJk^pDHB$R3y%qxH%vny99op zxbRtU$cN+ZZ?g*->^6UAPBkikLrsu3%F)+oe?^)8bE&X4k(#ZSKXW66;3)2whxCQA zj{@$MLh#qvm3`1B4j!HHx$@&{wZb8!&2h>7V(6qtWH?Z=_zqB}xTjR%H^<6kWrPBr z>4jI(p`b2gL4P8-+Z{I2kC|Vh%FpP8#ry>tUQO%hW5IIjLyQ-C$)nJmM@!>Odvdm9 z*dtp!P}cJdglrTV%v{@!ko^OZ3SqG0!$$C9aH`YBnK?51WjCpxcEn0k?y&!Ii)n2H zwQ~C(A^iY9xgn=KVbpmR3D>= z!4f&8D}BMD?z5MiC^pWkF|*`th$r7!YSij;wNjy`g&>pt7X?D40`ndQn=}!*HjtI|1fI5gd{6P zWs1`Vg}9z71y6_T#- z;32nV0@QAV%u`p9{)D$0%8=D3yJSpc~x-4ook9mvAItHhqDh2a4xnYAm z2OSlLin?evqea_~Z?qbV{1Btftjr%d zog7Y?tcUBTM`vK~Jjh=?MNpUG8_yIXYq}9UoY<$@H(rIhSlzj(L;?(JT3W898i~qc zt(O!@Uir6($*=I(i96EL%vn2lj*PSfY+(9nXZTDHtj8X~@IehTl=ujNRS#4o+87 z@Mf5+94s1@vxZY{-RpgZOe;P1cpZmKP5Xo=Zmj}O`F}RNeytF1W1nkqVujIU#EW%> zX?r(FPo;V+jN&Z~W?)H?5`1f(4+Iry=nz^qz9(D}TY=j39;LTd5zN2UQe__yMN6b! zC)d8PA~p#-Y}B9*vh+_8JvlZxF=fJW9BzPIedj#cJ;(sM*vg*l^RN`s#$|+mzY9p5 zCzO~-Z@&Q|_D<8fE_;a2U=`{nxXM#@#HF#4*laq_yG1vP8;s!c|i5t;w@piziA}$9b%hZY(+aJd+MTZ(Y({@>~zKVWI&{?N~9)dwkp5ibIp!< zg|~%rkoj#Vfo`mRL&FfsJD6lG!Y=rZ@L~&s2Nj(mE4&g3F07kCuF3ru+o@Tnqphsy zU!b(W94cSs@}_G3&dfwqN_#bMevok(B`<4y%d+;nt`@Xkj_{&djG8`LU@N~tjaE-b zZBT5n=z9pg2jqp*i1^~A-Hhu<+t=uc?dX}*me7kqg);O`ZymVq`zBAQOI|h8BM<-r z--P9^UC^vS?hS7;5End2^fATT=n%eqLGS>*v+7qq&UhP@Kd6imc$qd6FAQLzib$V{ z$#I@fM4Y|%chX%Cu)hkwQM}DWPcij#HaPn9vAFgR&e)%}vGZ5`h2=1kJIvO=an*|43}Pwk(|b>cvCC$NvUWbp}z&$ zl$~+>rfQ2k7$*E5Nj+(JD1;ic@dC{fEnjp9?F_EDTil)pJdL;i+$dVt{+zJ0zct3w0Q+Bm=7LY~&bMxDr4&_UJ7l4yV*sC7$7sgO6*W z0!w@>Vc`ga)-HP&1kqMSXc%0}^x8w%2s1hoOLj;hw%WcA=(;r?kzN2Ne3Z-WVF|l& zoAIKK>Yy-8g=v>xCUGf>lUDe3A@cziW3wNQBnIX1O%zPe&2#||D$Ye4_-ra3n7B;t zU~*gc{daHPtLN?c|{tRv`RG|O69_+22LQo6}@`~6QF#n5>Z89 zP}SaPg9`9VOs5lllAI&+yT~K>(i7f1unb#b2cVq<(MzTNSE;7AiOz?JBMT~ET5BW& z{H8WEy*3-l%y=Dp!V134!*zNSdaAL-CxncMz@Z$obFV9XvHu~TcxvPSfyqyQ{l$&7 zoh{2(U;6Rim)AbN*1C|Sw>#M^G4#J(&7omM)&SS3P zD~2j}+XjX)FZG|Idtj$z@n8q@6>O?AevTwW-6Z5pT(+cv#q2v%o2PP{>e_3;RJ9*yQ zGn=r?Y3Mreb=@4f6&X@~&pAXMMz*7r@Y|2-yQ0~}5K=cRh0?<9iNYBOQ@2X*IDmcE z7Ka?)k-($VIPYO|nn$iZ_qM3<4Yq=Bl*v)YQM5bMCerJKTTVg4o}I~-ex4gfpXm*N)_jS z>TY5942U2ila%xw$_hMMzYk$+R0o|uL zVMi}4Ts^|d2o|mQY?5LooyG88LDv#}<^AD6GfSCxaL`mSv&P8RhaTjFBa1tgE>&lq z(6wJuV<0DJtEb4a6)q|!!xF+Uy$p+i-YG3nC9GA3&}>gS%I=XdBuOOm#;KMtnE`|K zVvoeLEb*k;H|=Folhm5o$eq>`3+qaGr>-XHn}$#r@iCi?ev`1@1kT4=?DE)Rz2kRjhluiKDv?xQZd3my`&$0wXPX1xfWT z?n1>maD2JZ1^*oEf>;uAR5*h%q(1p$Ho2@T0q}2$ZDHGBeR5EIQqsZhF}9N}=FCnz z>rML86TF0Pkz+KKzx+dh>*}b9g#AK|06o4@cw!YTXE>S}Z^;uy@KPZlDhz{aV1+yg#&R!b!P@We;YCTa1z#(BllePnz9( zJ6+BT%#K9e(L4dVX3Y~Ke03`-cB9cGq(*yUrH%?b(cu~v7~!{@)nBJ`8xGzkL(n{{ zK$wuUuE?Sis2&F?xRn>`83K6%S@;NE2>+HE9jnt%iM3wzLFJB(1nkPfp=k%3qJ&q> z#w*zT`Ub|^htc$MQFw5l`HGb+8(W5H?QWEX5dlBtX-^T6B?g>O@O&!IMy3YXq+5EZReY;!zJ^UQu>hF3E>wfImk~2=H*G-b z;9wFm$JR`W1%_Mz7CtJW4>vP1$%gK*s3VW(I?DA9=20P-r6Y$GUKS9pmV)hgPrYYT z{Hx7v>8STrCbG=YekLi8p*>!M8sJ&}Vs^5G;SQ}< z5j!(YO3?(9zSxxn`)@x6P#x^B$vKDj+KY)Q-mras2WnO-_mc_8uUZSIyoM&_o`GQ8>O zy~(XL;UAOjeQw(h)(4sM#j(^?{sB&!!2VnHS|XY19WTJn+nIcMYEuRhIM~kLiP#6V zDDvX!kIBEl8NaeRbM)ZJmyPubZ!(>W11p<4J|MDOH8uPLs|kpchf!Ch+x3;*MI zdYO(r&f`o~wlWGkzh$oa!=s(5_VT9?W1Q|2*s4Yi?eSfReRw4Y`4;`M&${PC8`J(X z--~^A&JcT~lN09l*L2O-!h%x_!pM#nG#p~T41b&dZ^b;i*Mv6DvL0lIe+%B(A1r@jHQH~R-O>2XXk4TCt{AH^mRIE&6h5^+x{; z)yl6-%eB?CrMKD)x}r>`R8C^y{IjptW+%&B6ocwG+Q(K zAqU|-WHKz-F?tG-zhCn4KM?m7E&P9EozOGJoF#8~H&7mVw${PpN-^>&jGnL~KCuS- zoy6p_@P9)d=Sybe#am-+)j}fmoK)@4cna1=?VTaBYC=|AGgT=l@gU9lL3>7 zsiA|6Htq-=-SB_#alP@ zMBqe$cMt}i^7?4S{jzb#IuKI3K-ew&1E72JL@6MuvlDp8OSLn+VV%n!=nCQLgD%85 zD2^n!DZr<_N2U<}^yTQmfmbGJ&nuC0Tf6LOqI}eUs-2Gubca_1-|lJ}ua! z?`kDYwPG6LmG2Cn7n+isH&STv19KJev}6tj_yJLZY^DZeVHiSgrp_;4YTpYUEAbwe zVE4r4ym={URx_3u%_a%Lhpz&0lf{zS;_p;_F#>Eu#X-O_1 zs~m*ZEd!EnsOW%kR;r6db-IwxC*Q*1hX+?ev+##(r6;w;Aqn?5dSh{vy$*V0xHj_Ih>7W;eRuz;_7DUOIZJNaDPRSEtEqypa8*|0upl`us0nZG2U9{JH5Fg4H)UAk9Gh4;X|w2aMs~X!acw^OJO_m#j@gNG)q( z414n`=_22~=a2AKc5!6*{Vf`h`!?Tk9(Y@|&m+3o1=AI*nqwe1Y#x+OkdqBdjG(N) zBwvmh|sIPAUa%K9<+ z-sV&y@u6%c-~^3Vod*CvQW^Mw%4QwxN;(Jqw$eTMppc`WFo!a%)DR{LV79oX2aOWy8itpXiL?}q2}ODq zBdUrPg|Fy|o(FLE!XpJT7zSfa^b|8_%>i=CTq)AAMd@;>M=T@KB@hyOoZrL}f5Hd~ zd2|T(>H9eWt|Qc@cR8_(w+ln9WQF{!eHk?f@eso;C&z{ zP^OyX%5FJIoV`>)Ru~M8(j~4)D<^k(`%U_=5d5a3DS;&wRu(GQQarfvgfN9Lo1YEN zpq|6G;g8*K;DUm&)CRJUk@W%Ev#KUcl7I@w;2oE|MJy4r^4>I(K~KPTKtNe9TtLIV zBQh#@LaMYQV+C|*fp2e!um<)&MkL*F%0~!cS9i4#-B5rcEs{;36+0Q^N^*?9usz?l zGBFNjVTg<`kUdm;((~hHEHdy*#L)(qsH_RSOP1)pUyZFv|CK-qO^`+i7EXB)Nt8hg z9taGiJ>3? z5bp@EMYA(8eoVZI!pI3+6boGfMV_nBZVijN%7Qb%(Ez&zA9ExGztF4$o_3Pb6GW-| zER`nG_(4C1{RM_li-cIoPpaf6>GgI_r%&u*$@vkMAVR4j5rF?L^gwQScEj59&1FRi zMFa0DfB!R)<+bZwVZlEaFa6K|SfAVU?2ocf6ucn|B{)O6UPX}a1*y2!3y(luS|~hg zz!+3(*=B%wC1kZpHy{+TNKdIls^lcq`_6{bt7KO6mZ+=&*Zl%4R)j58VoKT1xStaq zgtrN~avnZ9Rz~+yf^=D2g>{%^II(7!7+|$#g+)3QVbyvaaPCXgB2HmSoO*7=nqbR; zL^kRo0}t6G%U3p_bstSu)>F!q{@X{eP)(W;-)%s=h?{CBk{mt@A2X~pR|RufiY8Lr z#YGv6XR3b8I`$SkN&dh2di%PcUHfUv&jv^`Eabh~;RkeI-&rtWrl<6-9fJA76sZ*Q z%M(urP7u%QRo*!?omJ#P%|*H)(!icpLpxMV zy_~AKNcElmW<9>l5w;ysTuWO>ZMdNNs2Nf>-rTxFG8@1pv2ExZC1Lu4+rc&bj06pn`Z}M?G2R!vpX6NqIAeM2P9nK~9Nmb>R9K=5%EblME^RR0oJ?uza zrz{zV#{~EF23VGrd&m|DR7UBm?L(((@9FL>9B~>kEJYSlcr+(XD!UV z%bmb&zu2j9sWc0=M0CYm8I-`p^MFu1LQ@&ogsl)2769zFQxarkc}p;U+W>aXodKZT zLP>FCZRk#K%{~S#Gpnh@u1Lj)*a;+<3UON851`m51062Nnk18@?jBTY45cA3t1u*g zfV=!L@C!r>ag6FlPdMp`oAhXW0C{L4}N>0O+?1jpvUr|-~QiFO7?NY?rfjQ*J zA`}=Tfw*#Vz>!+{qYm(=@M|XKqm(4X{;r|E7xC5LFM<_MjtoK?r!Yk6lr-ah_9Xhi zBALF9bh6SVVXt_R#JVXZHGfpg*P+_tbUwUDN3LKZF&YA724^_D$_9(mJp|=x)3c@=P1M?oB1%Yu(@Irf#hk&6bMztuXji-GR4d z&~%NFo8|hNR3$QRe~rpY5!!Ja9+2Ttlm!8jNR82RGu)| zLCbT*pSWsHVvD-Oy0|FtyIcxLkeJLQ}$>uP?aiLHvRQ?fsk;{QrS1X}McLJk8oREDrq zh!mNkrd8BBzMf!cL#u~CS82p`gzs8?dPa_aN?BK$FUzp5&we<`GnrEGOH*?7PD z@Up}=c?(#+TB!_Oq$*Z7X-6}uz{~1*pQ|)Ho(C<*u!y`#UqLy|^kv_L>i_45f z&CG=<#QTnL)VhXsEm+BnaBlP&nBav@lVlHjNKz}K+0ks4Pk5V@Y2`l>Ukc`xafx4^~!-*08_(j>r{sDV zDPLAgiYu0I#M)XnuSH0%glcfZm7eg1fV|hw&j=*fd#&i&PL`Ka=1Lt~y*j4b4sl}X zY9SbWP^2ev6n^J9GS|Vos6pUUw&yM-sdn#`vxVnu3^i64eslZ@EOG_wtQ3b?g3wv2 zn%GY(O5aifks-ZA9xRY9j0-5aMk#b1&Fiz7($lmdo5k;cmE#d<+h!DqDREImUQh8s zc9DAN{4(ZqZve-|{)oW7+Nl#1;LeNS1)}Fr2Ro|YuUJTR4@>rtfi4!Z{IYiWGM!ZD zj)>ALOC@-T+GeWhmco5>rHb5#wGmjrCkpegm`@OO-6eAbuh|_7V@Gn8LU<)TfG#Sj z>EaHb%h(}~qvlhTE?KI&xXF_73B>qVpD8f#cclsdiywSM!y>bW7$4t=2z5sdQC@ zLUXf`gyane1oHAwGKV{UpbL0&bE9zTIYh$n*3m3l3}gC1+^3rcDs2zy?B>jcnR{V& zE}3wl<9Sii#tlbeAh4*700^7s}hS8nw}Pz1k_#7Ypi_(8Z^qeMA)js#S1DXv9zV*%;_Z-@tP zEOt_Z;qfDt+GXC#i-{uO8nYLGY7}UeyEcTADlgqyeHy3?*57`%D;XXcH~uz#^@Z4D zznQMz_}y!bz2VGXZl9Rn^V(w@uRZab<>hZ3bBx%3UJm@^-v72dr$T>r?TKL4*Ej}Y zDSOBSf?&<75q%Q!yOO415%#eB_2!Dw&J+n73#aFfu1!?2bShfK}t+C+kZc5U2xKNcDm)mY}y zwA##@4Z4ByobNox^Nk9Nq#1w8qxonI|6>$(4LZ+7T6#=eLD1)vZ$k?J8 zkxlj#f_%g90=3pQ{}(}s-clob)8_ae)YHDon|LQ|)!jJ1Jv{fB>^pFXv{;H`!B zrC(>q?oI7_KfqH^0b8o<8mzkaoSo%%IVCAnxCKTLJg@u??__yqiQuME)Gh_Px}T6X zl+%uZw9e;|*!XNdVb5ScO2BMyb%+gJ?KZkn&GUaj%XW|?^H8^bkpy+lnGIEu-hnpx z8;Us&ph~MGpf;xeK{N$IbM~jVBgu3K0F) zktk@cq{oV7@@D%D1CtX?RPu#mx$nF@w{vu)0_M*Q@p#&BbjXgTr>3(54yV4iqm+4nU*cYSA z`_7p9bi_9e6 zbk!LI^&<5bv~+}XRukbNdaUKF3=I}@Kp1TnCe;YqDY2E*E~B-I_GYS8+{C4S$qe|* zaTb(EFjDGqA(Z^tQQziO8ctRSTG>-BUUds5i4dkAKkL>S6og%sD+s~sy>Bb%_f+N} zPIq@bEBsVRtwS7)Z<3FSg}2LC`ZOF0;p-|n4Oqw+szkRd+<`iNQSS!+2WVKOx`C$f z%ggbJwz7C5GMd&s$Suprq08~G{!$ph6VSa_nb*;TN}CVwp-0ms?jj$158|4s3P+^; zteV>_!wSbaaH`B+u?pCZmr-k}DsQ@gfz7#$n;Vf{@^ZK~eF}#&+wcO^Vi*twVS(v> zSj(}_fHHQropzPVwzxGeM}Xr!54u2}+M51vca~>W@o7C|xQ-Z!+6v z0#cHWx)oWJCPOt@#-grb^tZ$27}~hV0I_i-H*81hd^Qk5QVb8PoY9 zY}^iW{-X2iIo!(W%xyd3mfLrA~ZoLZ;ZrQch&IaVM0Fx?dR0H_La}gcKn5x^Mpz~Vy z!y+^KRO@kEUa9~UdP=XS1B5F`?{~JK>TRmkc)i29ukE`Vul~<#nWtGt-_3r#q^a%R z^5x4uZFum-gDXjfJC`4retT}@_t`IRe6+Coqcx758$Y{qC;COt-I>t~%#2s^3pZEB zVKyVg^ruqH!>!?^IMIa zH%@4_vBrZebTn0V(+qP1`YmDFW19>@7=g#ch#dtsFjEfUBqY70GiBHX)|JITXO|Fk ziBZe3&hE$|-zpS|$c>ewX|h`${4R+3g#yeN3MmV`T=(`zE-p~beCE0DZvMnx{&M|? z(y1M{FHY?`Q#cg^e}WtKEID*oX;nPRx&cB5=9C#3UPKs?7{^mJX~h=#8v%j1T84T1 z%jn<06$k*Wz?b3s(-?W7bsZyEk|`#UwL^(oaUdP{D_*9KPOgWsL`>FN@E-aH{mylg z7~sC#^e?>0$Tv(Uo+c4jx1(;RkuA@fJ_K2ATlVQrJHjwkaptzQiBtGQPgyIQrCs$C z8GH_yJ~utuWED4}Q!wp~C>b@tNDxn7uxpgB|3>29>n@SEFe#{gX%o2c z_Zgmx8I9A- zW5Yzw=x1oV-%-f_8N!=jZdXGVq1m0TYRYgF>SH_%V->Cbgs`i-`Gh508IFjuT|H&j z+>WC~^Tw_E!zq-^tgd%!#OhHO9}Y{LOd3Z~6Pd}+LaT}vGxt#c(K8E$P#*{*)J0JQ zE=}Ak%Z}_(z)j=NZbvtWXw5-*;haB%vWio>7dLEl z&~!@@5nex?W*g7-(4-Pl303VlMvtG$NJm|rVlV?MTLq2_TE}_uo*J}b!Kf&$94m!t zXkT3+VdS}9cPMHDztOQm1!Yg}kYcB%VNKkhWn8qWbhN(_^L90_q@=^dNee&nXGCbk z3q+b!HQv>X+tB>Ew2Kp7Z6f4tn-F?d2Q&5}B59O4EW2g6;w`)es_-akzY;fa_UqlO zSO*QIAALX+`;vCJVJCnQqZ6L1B1+`mAXqcI|O3~dq}2I z;(+l4^4j3;VZfD6L$OtXinc{H2NBOH5eXXfnB7U0)Dn|D)=Z(LDN1%u|9w)=xh z9dSQe)0S1orl5&&Y-JgV8lZlyf4xdg+wSFZ9h%*;`13GaNb;Eow8Z*XVIZu6+TBAv zewadbP#JAUY`go6c;-hhm))02cOBjVqeMQx{n~` z&vl^30I9-UWow0L%*mJgvk!1XLSIFCJ^Og7e}_=@8aDo@`i+2iCt3F%c8mVdrwBh? zyAZiOb9!Q?6-}&{%tV7*n!NSktE>_71}hDkRVNR@6Je{S^rQ{7CcZ&8X$N?9OWTdK zsf@ig10Bg$?9l%&T}E9G?aW}0b?3%Snw3s1Mv5_^euoQ6kOIyG5SpLUe~Y!xD|mPfqyx^m#E} z@uztjFp0M`n<$m<&ynN4Cf*(l0G z93fEw;@ag`B8s_C1N=u%O{dsVicS2vxDpt{B?T7F(IUT#m);*eWd@EV(>5&t3c=f* zKO@Y!j!DX{Dw;MR&d2?-pE&Y4raQ0>zq0uX?M{rg8_~l&f14? z*#wtVkM|l=NWOX-Jj)&YTGBysJJVcGdfFF>!D?{&n>*Z``*jT7rqz!I=g!V^?xJ3=dWD8F~6`zZo~cz8Fey3 zMiL|`M6*07GDgU937L?Vx0nH&H@w&_nO;MaWIBPS6S6FtlSLrL=7WYo2YUF zGLeLGs-cT}Y9=QS1EyCGX*Vt{92%gQtG4&f!a2C60Biy z(nXOsm0qDZuPF#2Q;#!jtvv@-&Xh*FxoIr)A1TQ5gqj)8vvD=u<*YDMJi(2cULfY~ zD&KEhzV+Ex=RE$$nU^CC_jdgLr@@>R))a8c7<8RN^)URijr61C%SLd=;*|3yO&apE zl&eW6-8ZG!!hGyF)g@>ef*FrbP!778Ydn!iYJ_Ro<;dK*SVU&jcjiham&6LwTqxAcy?kbsFqwnf^;pgil+; z8$&zLA$$1ontvmYWIe(v5QCC4D@Ttxvj+s-!*xBA*k4Eb)+9PZ(x^5#h&UXx_aa9F zW6I=4q&K3iVvh^@{;_vYA+Bx>SE7dCrIjSINa|@@4j>_@k`9r#!iP$_6)%<->G2VkTsJ+nWb@rs*CdU*F1zKI@pY z908pYQP@#lD!*+*JtZgX+d$g2-g}_YAP9k+$+JC99P>76z;MZX=^*%0Yp@)fcOKql zPAGh^mdKB_V3=#GnevItRkUm?-*JtOE7#{h1X7P@6fu65=Arbfxm2o5g>dpDAf}mx zI77BtCgb(OEsTg1NU7s>MY4DT3cyX$alRsPsuEHk3tACsR96;|jg>+QcWfMS_Mhu; z7{Ufil5?B{rKSq5O+p2>RX~f$nzGw?(;}|QhUjrenUyuc6=Tcjwk(X^Ol>Ti!g`$! zU_2)}=UyH-+g4`eFov=92)${iKm#!(ahsrd#rbrOp`-R1hq(&0J~eF&M}dxyvGh?t zl>5qV;i%V@E=l~2JDNa!u3k!DO=~xUL4H(MObcY5=BnOl^|ej*n6MeraMuiJZsVJo z)osA0v>dPFcEes49jluuRQREfjb|J<>&{ggds9oD8W!WeT>-QkN+>(KY(8NqG#*0g z0_TM6J+l3fw49G!5JWD(nc;es%waqzONhb(*uK3nR2^Rm^j)nkKF3#T6_b8{6|A)$ zCz9Jnr$JCd?Ku4u8a5WP&j}48IMsJGBIua?1u&#g%mV%CQ75P|d$&R6#sVj<&@LMW zq))dzVhn^=)0z89D#~y?I8_M7WL1}XSvRdC0-Myc5?}^BHiCyK{cy%gE37np`)Hwt z?xxnul1MgnYW@`-S7WiVoM*jCx((Y;O>c<3=HHy!&I*s8{$99z<9{c9*T278QyH6mWMksH zOQ&ClzyH(rMMD0)MN30aUE)s%A`cMBBducsAdCWMzzi7pF%#01K--FvA|RAN3RJ|) zn<+%4Ega!Zc!pC2)*>)}h@1qln$$ol1{d$5JB5^#dpBD_D{cDGI(AX1hL&asQI8C* zPPB%g>rE&(dMOju!jDMel%Ok~BV^gNEg1B>vSyjIG4Os^$R!QS+6YT>1`?wt--kD` zKx@SlZ$c?5!;49}ONNj-so9X{-Y#E@6Qv3p1mWwYaHljw5)Uc7gk2hGoltU;h{a?; zEiEp>UWcX{hErQt-93mrFJHzW1xrl_jLCY{_KGj^m%seSQDq~9Uj7HH|KHUM(V|%w z5vL=W!0cJ0;A&PUcEC-AHHg6VcAC2+@+n&R2*Vu;dqVSqOcs-)fMy~VuSABmMsjA+ zS)4GdY8Y-J&!^2)BJ)=87Eiyzk2<6!#Jr4c@KWz|t*dz>v4z0xITpBUL2sKaiMNo0 zeEkTK_m_<3g+*P+!Q%WI8^`;6BNyn7+#NF>im+_TbO&FNoYLy9l=pd~M+bzT zZbw<=HxCbz;q5>`u9&A=wq zsX17*RuXscO3gW*0W`j~g-O;7@&#_0kH;XvCZGrps~nc17{3DQi3j;s6P7}Cn_WB? zUb-Ej=UvAo)O-y49ocGP9wioxo@-`P2h~lT^ckX<5Okz-Lc;A50hgaFx&_Z1=rVad z&{L0l%E?}7Dd8&zlRhnFHKj!FBAv4!Zl*Q$1tgNTkM5UUNEiFZob|NYTtwBUJ{0@w zeo}XX8qebPCb~;93YVrZf2YppI)y8Yr^?V|Nhc^)?~Pko=_%ia0NGQIP>HuvBFjdQ zL>&($Uha<^!UVff%b#o9^q3~tj2^?gy66+CU=cZs7SvW+rz z`HZPgU66CNeybI~W*KilCK@R^5Gp3Ds23D03e<(L3t9r^!%?t~3z7V&SjY`m_c4Ot z$t5^LPWL$Q-`nW{ROK87=lpS94tmpgJdU{9YS{H!!vUZ$9LPkpO_n7fvDELU7Ri{9 z@YZDq3~?KYtfGgN!~FxiKvyoi4uym_VpfK$(Mk^-9w!){!V|TL#D#=4oy;aS;N9GS zS_b1nYK2sPBy6>so=3CuSrqyK8xK`cE}syU=(K46eksLU!3Q(vT80t1pbORXPNCFT_UwueGb8D-!_zNpsehv3OP2TB z#DBoshvz)j_S&B^KMr?2M?L-8#sB&Fk$+vRJ+gIU;``g1{@xLr{l?TEyI$!+>V}756DsiCi-x|r*ry{0%!?* zRnOpl5lWJT3>I@DT1NVfTp2vE-0A?C;Fve}OBvG^4 zGUi|t9QkJNVfXf2dY1d;>+=0pVc{~bP((b1BQpACA?wm-4Nt#1{jAX6#ZM%dy(MB;&@apJJl$8#?vD-`z{ktI~);{@t9oUP5GJ zLDOAqoO?DM?k>SQ$5szNIrmMLtoQx0S&`!~LkW4QEw0R=Rnr^d+eRgY1}jhx621J| zvpi|!a1Q@!i4(h{Zynvv(#t3%0aL;M>UCxECOxka$3v*(U zrm&|8O-|L2nVNGwOu>^wFhWu?Uof4{>r~o;Xrt9+T27bQ=g1jM6uSV+4y_K9X)C-y z*<7@f5p)fDh8!8S`U1p#t5Ss~i)#)eM01%Im*3uC3b8M*SQ&!g$ERV9XzCO(%D7!i ztEl-f)vPWAqvVTgCk~)=7AR^>a~H1F!<|B0+l^fN_&Fs_zKCT-@Dz8aJ8KJK0e9Ij z^*#{a#>OsJ2s#kb;CI+%9@yErI}xs9sk<^=zRLZCUv8xf2@^QOaUW3Ao?IenZs#m0 zDOQDPGK1tL&^gXd#BOhHamxjFnU`Eb2re0i*Aceq>GBm?7&lnry(L$ z+7%?|e##sne69fdliB8s7tmqkasNxy;XOe^0#i04R-P_=tBmdT*AiLdtzc1sea;4p z;QZX+uRr_;uzN25^_+V|c6!<2S5g*jhRcUR0>ATl|KEQ7^5%2b@Aot{T%Y>!Mb=;M z?b_Aw>0>va+jwzy#otFr*1P#P8@4a{xZ`M^n@Xeos4N{tNI+%*w|t-u`te9(fYU;K zPQo0<76;Vy%1N3ieHbky^9teMya>TrsZLOg1EE~=uw1K5S0geR>}-L@ogTo7sG0dP z$}STM7>I*3It2TrVnS;$o^Y>-SVmJ#YjgpysRSnkNijrx!zQ5Nm^0PNg;7JwG9y;3 z?&nkn`eLG4olzodQ~*V~l1se;BKD;U7`KS3NnDD;bH~X22_~17(g}eC!YeJW)%YV& zDVl&a8oIOFmOTB&DyY>o5Z_YuW~37|Ct-&|vcqXcM62*UMG;g#$C^SP=O|napkyvi zt?+9H|3*DI0X=!o)PA`%_VvgYUw2iPX)qO_$9;CIaI(ONc}><7qd$lgN!lV@aElJ? z*X71|adnU9Fd^KLg^sDw0xZNbcDZ?!7Dqf~8z3`p;P_>N^D5#np2`~Mx)+#b)N$_L zkiQ^$Nom2<8elH1mV~<_FM3Yp1~v$#zl-YQ<8u7(p4vGLA>>GO;zc6AdX!QjW80J$ zPf$XWYh95ewb&}YB1T)YwjxvtcRa(1Q_i#VAq?MeZ3AdYEr#)cN}C+VO8VBL#v{BY zK_t3l9=%G+rKP4mZypG!h2k3oBzAgi@`{Ml>qv96(sLpr_(8W~UQEsh^9$n$O#Vwo zoIZ-KbHcqItUQ2Y&o~I_Cx#rWLP|fBGNN3cfIE8m_EcMeV7ZV3^C>9wm z$Nh%FwFJ7F2bg!f9k& z{HZ9CjEShK*uhyy&G{02#76}haZjxW&6L^MxV&5gE>8C|vU(ea(3L?*X@2-M$o zbB_6M;X(aKh$Z3l3YvJi;4^_u-5JX4ye9G7Kz~csP9c2w1beE5#>n{`eHYKh!8rjQf!X77p@4QeGZ#cb6Q7ZAl8HwRLW5Q zc2b2-nZ$C;Bw3V;9+rp<^QoC4V;DV;XNPXl3>?zo3SU1~8ji0_055MRV(d&KI9KQU zp$Li#GX#HQEbWn`hPdP=$7;^ArjY#^Mv>Ea3J+w2>p?ul$afS{y1rU5O$M8usee}4 zbMbG~^O`3^WdwV{G&(n4vkX>C+=Dw7GV1M7{c=Cv2v@1##%uN=k=Rdz>A@r z5(lQTQy?+{T3R3>agydVzy{LmLsF9+Fn>lUk#H%5TgPb?0*2;3EY>6v0nkyMAWMci z32eOxqymx@p&sKNpo7bXVd#~F&&IyMV)XWmbS@Y@wW^y=)f#BNV_^=67pTGhQpmk? zqL`%(<`JdPfnuDQgW>ceeyW20>IP%xkQ18VxBP?GGIMlyXn(m`+96~8YbEiU#{fk9>h94)my9Jh%)s(It`nZgthnZtwTb5>a>B?EE;Q=$RnEhOT?-wmahD3SXTaz{lYp8aEwCU{*u zlf9>wk^Z&W@+BmP|0ZgnBHLCtAsY#o7%ZiyIc7B4}3=U3SJ4QFgVzqyJcwcn>;lkGy05tPWYxN zkfYvRgM}^HJR=(WbI{Ia5hZ7q)61g&%L(8Tw^3RWX+lgp$Tne)AY5}8I9&YGX+D_y zzB^tmapyq)lYEL57;2q%8ym5%olB+aeJ~F?_;g@YlO9kwdpTP#%%+OvE$nf!KY*Pj z!WK4%pbt!1*|f%TSjdCCC^Q)G1+wV_vKTK{hPvd<;FuJ}cy`ATGl4j_bOg|$Dx_42 z-6oG9NaZGch*hBBiXE#`+MM76K?jA)6DL7MxgIav01ZX`wSGZ}bnf{HwRV zVBWuQMl$`2ys8!1k)P%3#0W3t6UC8gNq}TBNPo4XD8L2K^MM-z9(0GglS!2(5#`Wx z)6bs^aRiouLJijIQJ+Q+3i(K0lb5n{M8I9^cWhuq;!n{UEoXpT%H|?Fgu&4i?*3WG zn#9@eI;cCAmmxzf5uRiAO1R#IiI>3`t0v+^*&~X@=yqs;q^X8-Y=dzYeNu(2jtqnb zL#x5S0l5veAqHS>X>{Vg7l?ULDGABay`sVwY8Mctu>!bdP7RQ1YlhPk_|P zyrz&!zFv;~mKKg$K#ILoqipr;e}s~l7R?wfLEY41P*-X|DTP#zPYk?NIr{G2khV1Y z@jK7oU-if*`!*(0N_Nlr`T3)Pj}JZ^cRlv+M`<_*%WYh6=gvsS@PiGzPF0`!xBJE` ziEl3d`f%Dcwf*&0YR2`cKV5%sQCtXu>42qYkQr>O2>PLg{nY04C(j7r-|^%e{Ly?hJ-AJ@2rbSr zLe`tiPc2dC`ph6~;%XG=Cm*EWz{d}FbHPN>;xsxA)iQbhK&^nyPlqG5<~64->j;f? zRd_Y1%QuW$B@zyW#=3bCZ(ZOx$&b&wIJ6UO@Y+tL+=ea=Lwn~xpqBE}iDQA;lP7jJ zkUZiVX5t1H!j7<}bC8uzzJIXs_jTquf4MCfq%mA+NoTijMD z8}`T$4Gfl~YcIK=4z=+S24O}a+RZwc29s&a_dsreWazd8uf5jKNaGW>N+hyIcT>Qd z2=u@0=0z6C(c9}$CObpnfx)+P-$JLbJ$D5i=-3Y7OH^q65J4zM;C4hwz6FXqg^L3m zS#bh&Jb_vXTo7;|kMnCMV$&K%huN$^6`X@@<~fyIaPyoPWI`=X(kLDZd;SAJ4j-9Y zh`W{uXo02U(c~#0taVU_Q0i9_Y2wbgfTf%*MF9t3=2Zoh(TM4 zDkE0#Wj=w1%B*mb`7@f%$XicyoM-7E(;I=&)ME#8DGgnTMXbd&lVa4}g2cr6&_5-d zhk^=Llp~Tk2YD?%g1bpBj8vGpVMe$=S4WV+qKocrq(A~b>i49Nb5A}F7E#g)0vo6m zy70R)C)R5w6+lID!*LSz)2$JDO)>P#dYa{tFZ`PDim)5nGcM~wIeXaxaI>oEgWfgu{I%v7XBt1*JI)JJC`=mK^Gs8 z$Ko%@5vKyWN#q5T;GDl!h;wZGGSJLR1%}aIB)z{Cvd#O>y}V%Kze<9v*WTKmcITrv zR*ro4-9fm`%v^Ve+Oq4Vy*uyN>vx=aWz)g`Dm-=`jo-O_Yg5nNSMDC!HK9pbz45Wa zPnSP�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 literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/favicon.ico b/salt/idh/skins/http/opencanary/nasLogin/static/img/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..cafbf0458b55c4e6e206248e5d235a1346e6db12 GIT binary patch literal 15086 zcmeI3yNeY`6vk^&*1$xAjZ6kv(a^})NYKB+NKAA=5K&nX+!dn@g-wiQz)Va;F%U*j z83pkHiYtl_c42(%q6rr_bzEBN0H&z|W zfej=taw(Sbs{J=RtcQ3Y`6bhdD?~>Q=@gHKKeCW~k(aaK-*Nn$>qovjt&b98-j{t~ zRMb8*WqrGK?N9T~HlEBrqrGOc^>fzWS|6<6uQXN;<*Xw~XHRaZO3VTJGc3U63r}(+}on zezg9J_3PIEwLZ8vosh9=Qf;bHwW?>pR}4w_1v;rRkP|}V_kBIJE{8Hi?#3X zVC~GQYM<$F{i^-{4%gqmC+psI&$ZKI|Jn6xpkD)DYz^?vr4DZ%O4XASOYfEH_}(^q zxa`;T9qQwhxSmrtzIHHGPk$TMQpb(9J4f?=rJB(DIOrns4yO+19$c(${Jyce`|Gfd zI=;94eQUb-&O6o;WgjQnkUghv{QjRu)wQGR2kW+u8*NW7oyz)ALkWGHHXP5-jsH4- zC|gI48+GLOdUPdh!)@ZczOctr2KAS6dcAi??2Rx z53=g>jd~-F%JF`6xa(_{ao~O(XWAi4fJcEUjyIy8tC%xcOUGt>-z7f`#QY-RJ+bXbm{B^ z_wG9LptBD;1JSkf8=7yP|)ud}xH4e_tT(R>(_TMdaUTKUcmX!Sa PXvg(u+R3mhLYwzb%OA?D literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/icon_dsm_16.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/icon_dsm_16.png new file mode 100644 index 0000000000000000000000000000000000000000..f2ae9dae8faf87f7fbb7d37e721e054fdeaca960 GIT binary patch literal 1191 zcmbVMPiP!f7@u_GHY8gqrO>P%GE6J9(%Jc+oi}FeZg!GpB^$$b+wQ??-^{$pj>*g$ zXD03@7HL9g4HZ&vrUwNn3L*vDOF@HCduS`APz1q)r9BiphzC815Z@%b(L?CLftmNd z_rBlv{l0&*JUMZEPw#WR6h-YRj~P|6?oHmFH2Dtvu>r}FjYsP73GBp87$T}@V-wM3 z4^E*fg7(~7chC?;r6RXhkL#6j&B9&|COWy67Z5Z>4IOI*(3(auZK5gH*O}kH`i7xh zTW3xy6}}RbP{SRY57CMFiJCP(Z2_A(_A))x(ue^M#gJ}!Gk&DCbY|18M)t`u$IzQ9 z@wCotk*ZfF=@JeRt>hHe;su$`gPfoUvML;ED6XP^Y3!&S)#d`kRZ)azLyOeI zIoJV{+&$e}LicTCkA~QzHA~7TA)>%E&QUsEQ8j0L$bhU_!-_m^R-2zschWDK6=h|8!30h_qv}-JSy?Y)=yM z$@qk1POh)5oFg-Kw`>$^t)ETUc<0HT^>zNhdoN_iQui0s)#dSfnMplbz5Qb*zqGtC zT==ppvtIanCF6Xw@z=ni^e2$|G=1jTTTa*NxAk-T{a-d-pT6+tZv)u}nVWkbGq0TO zJ#=CG`!(u8_o?oaJ-cp9d`(@t|Gu(xX(3|>{crSN#qU1z6Sce0w|?b=qvpa(Yt?nM**7}ti+F8%|$!+-Gr literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/icon_dsm_32.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/icon_dsm_32.png new file mode 100644 index 0000000000000000000000000000000000000000..b7193aaa083359546c9155dacb04e02a550bfb88 GIT binary patch literal 1351 zcmbVMZ%i9y7{3B#0|kLBq%1>^BLW)kZ(DkIqtMbqS7(ti+*l+F*Sq)VN$=0@j!`Oc ztSZ7{bk4-YWHCDZG^ZJA78j##6B%ZFP_qxqGIi0B;2d${qGlTPEl~6W*#|GVd*A1M zpWpNRo_{yl)fp)%-dv0zNJ(^CxEro$_T5+rzg9YZ3occ5d#}Aym+fJ}1V~WQ;{c7S z!T{(7f;6)4bI^<+`IgetYxl+;=0#m4gscvcQVobkkmlBuA&7&(M&n>W(frs?AAW+N zisZ+3dt+402!VvMEp39G>CPT8Jt%S#*4lzLr+8>U1-5{u)TCzdDL=Msmxuf8F^Qqe zD)yisTOrjO>q0}i2~aQL#YKwtpgxYEy|jm=8&QU$-6Z8EX*W(YJjL;}7hQcY=*^U5 zzB}Bp>I+JKEMeOQPm;sK!^E(g(9Hpo<~WX|7?NRdsDWD}nk}So&8p2=2m?zr6~k6^ z4b55<;`)&7#~{;{5L6=;TQjU#tBHasBU6Gw(ga1SYBsKAZOiTk|I%1j+v*uH0ND*J zeaIAHJ>=RP80PNIjXgstMG|C>A#k|ML6@}JJh z9l>_YZrA1j3Tu-DG&nvcoRj<=;{^!fcsv>o_M|SyrNk36NWt;I6~{CYm^&YM>}Ju# zZ^%Ap*|)Nz;(A~-Z^G$X$Pe6mcV4_6J=LFAq1x|nsT#YH6f=c?1RTCPewu4J^XW8o zrvIYjjne*u^k2Ilia$#Ic+NL|Yw^Av({g&r{brT%`UHKdH9~KgiELO{DhMG``E1+h z%iq5@aoAORlKA}|`J>a%e*N0s!5b}&Er*VGg^S+0f8q8QpY2Ihpa0-kWo>z8wD?zi zwtm*-j~z`NJocn~qGs2StLEv@bJzL~e|(#`Qhw>Hjl^A3dph?vUAyYsnkS)iT_+|h zHa|Ff{p2&7eki?K?%bMb7)#bvUYM$DOHLMYvo%Xc*!iFN%+UsPYoX1zG(2T)|>P>849gGvF;d;6g40 z_wRaYi;;hEyYsuDz@M*_Rvs9??0ol^!oZjVnd(c;%)NMeCi`oPws(f#Y3tAY11fjM A4gdfE literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/icon_dsm_48.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/icon_dsm_48.png new file mode 100644 index 0000000000000000000000000000000000000000..d8f5388e51dc9d295ad60204d66f6498a2542ba8 GIT binary patch literal 1603 zcmbVMeM}Q)7(b|`T?fK+&K4OS#V?}QyXzP2(L%AMwr)j4CXHs1`*;gg+B>hOw4g$f zAf9Bm+aJb1cFEoQKJWYd zp6B;`U3*#Syfj6o0)n74x64s3u2}q)r-Ebnsvaff^_0POmItswV?byO*TeZ{4Q{~oCVUR8#c&;p=}=sU;93GR6Sx5$d(@&g zp79ao4(FIJQL?IQ1c4(^w63mBQ>W9gd^L)j&1MwSqFOB?Y9OIVP$0udFqE6H-~b_- z_j7`u4Z?AYB*m^0tZI?zXb1t$<9TQ}7#d5Im@+g>awx9B&_Ey_*NApVCK@(<7Wt9*5~Un zU_eZ`Nss7BBZ-(yj2_9Sd|ID)gJX;@VdqhJbBWXFbmnV~W?epxm*|R3Ca2k9c4Ea^ zEruD26IgdJB#=QGBz*ft-(y((u~@>+15#l53YM)+bU|4SE3ly&mV@nfc$SBx{lU1L z7q8K1$PU2!R|Ce$vjKP{$%OwA1dKFo(o-~v=uHL;(F21PF)<7fyT?dldZ0IGDWD$1 zGygYvs7MNpcglY{CvhaUV|@E?4n*PMB!QqfKD;<5Es7Ks1SR|2j^c{&j}%kWa2S%- z+O{PPY_feK8L*_Te{xOIh1s^gthQ<>hIYcaLy|#TpR_Ga*_zS|4HVk$ZGIy2ru|qf zwQNsNO0Djc4Q|--3u&9$_MI)ejZ*G~6&I6wa(+*;d$W~0plz~Nz4F$cM<>bLOz+_OZ_W_jCLAr8h1dsFW(SEz7wKkVoGQrQWTgdLhjh(~dN4 zOfKlZ<|0#y$G7~jwfmlHQqNmFp?pG>&!s!p{KuvE0VtCH-IT8p>;R&62xrLO&@sR%W%ydJ)I`H1FQ3Hm&X^3vRPf(~{Mq}Ht{6L~eD!Y72gxzWi1w_@+eJ0Tf9vj&QpcxrtD64-KczEO literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/icon_dsm_64.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/icon_dsm_64.png new file mode 100644 index 0000000000000000000000000000000000000000..cd79763d89c8e8179e1650dab53e1569e86d588b GIT binary patch literal 1706 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 literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/icon_tile.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/icon_tile.png new file mode 100644 index 0000000000000000000000000000000000000000..e3ed42ece4112b02dd9beff85f6123010a1a5393 GIT binary patch literal 2093 zcmbVMe^gWV6%QsW!4`_Oa?~^6EkSJ$O~puV?M*UwPLGBPQPOvepmF+yOpL_MB| z0ctankLfT(U$UhWOQ6x{He*H>nWb3=qqv!i1Tb8O*-B~CXbEc^Rs=O+B#?*Y8!a-{ z{pL0nVARW4nIa8OV^v@U#*|V5OD|2$Kub-iRL@$o8c1-!lmRnFB7nnOWU;{x8EeKa zOwj=`$O2{{q)En_4Ju2c1r#`e0V1x5gYqCD5GUnAB1kBK-T?SKNC5H#ASB>Ge3&PN zArUb5uqbbY-T>>AsySa2Cu0?mq!k9i;^Ja%v4D#c`5+{fNX$tdCj10 zqz?Oc7|%u9GD@r%sKacyoj|F67})d5RPBD;Q2+_-p8{wzB4rmVyW<5oQ)JlqoB%MrP>AZqLXId-97iROK%Bh1 zJU&MxKt-4k6+k=$W6kO7|KH+)R8U}GQvPFd=0(&v2FPc7KrzoY3A0e^Lr{CtS9h<3 zMq_Bz%ES!ErI9N=_^bA%9itnx=z-f+M_ys7V+qj!E$Ssk)ejTVp9j}Itqgkk%C^Ig z3U@-`p!bjAmXx2Z-{EMCgI0bc9P)<>I?s-GTqF%!PfwPvijMg19yu}6+>;=PkB|5H z6MpNf^?l^q?lZZnUHe&}{^J#=*=g)Hm6-h{`VXTEJ=SX#K}#nPukaCT<=)AVfWzR{mNZ;ZPzMYRld-%t`%?o$=0_1jJB5U{_ve8 zC5p&JgHLo5>)_^wtTQJYJo4z|eFF>28geA3 z?yMZqLBgQmElq>*u|N5_`*y|n$T@)5$(?TUr8b33zMD{Urm~F>)5~jC*7yd9#rtwE zPe}b^jN>kYM^H;|eKV>bklI#+khvUfwO{T1b|6S3J;*3ciquwD8$X)n$I2xzqG$a#$`o?Ha&z}j%Qtz9oXp_0ZTa5Q_2jkj(E~+A zA7s1xJ}Ef%F&I36W zm-Ay%;l(1^*P2HuEn$qvn(JdNu?h;_@41=wm9=i$upAC2z0>ZVBlJLddVe`Fb+P}8 z!zX(7aN%%616?z@kx5T$3}XniLv`8FkxaqGgq%-{c<7y>6k(UV{BVi5Zuc@KtTkO8 zIof&ao$~A_74U2~{-*(R;&GT!XES2pLG(|MKc;xEFNYAD}O3svdlOH@*C`s2bm+haKL> z4TpzZldcu^^NfU@hbl+*Mi#6(RnPr+&+di!(|+BbyM6hE+vtyl#F43v%_IKrBUsl| z`vyXqA1H3PeVfWc_DU8tE!mI(?tJhX0i6;}c$!<6dw&17yFQsnalW;E$BEJSao9cd zL;LAZFLld0oiA=*{1oM#&%c+uE2mL?@Pg)>iQDILGQCPT^>f`D54yW9L?wShzAuf8 znQ9sQ1-{n1J~ioT?4@k@!Q;XkH+}xXHR)4}|H&SUDcic4*IF}ezp>?`?NhPmX!?yz V;M<@W>fb`6sgqKb^=mi3_b*opG6nzu literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/bt_dropdown.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/bt_dropdown.png new file mode 100644 index 0000000000000000000000000000000000000000..8b3b0efe7dfa4d448e83c32e312e3220ff0e0793 GIT binary patch literal 1208 zcmbVLTWAzl7#<>sCMK4)h8jV~5lccdd*;l}W_N~NHM^74t!^4Ni%l;U&z?D(jLBS_ zIdLbkiWE$556z2DEfJ(X6q_`(DJ@v2C`c4Rp+&L2*y2kdpkS4>KGZYW-RMK`!86Rc ze&2upKkMyzv$4LVp5wU2>~1~J)^+T^vt~7$;}1UB%$AL`tDp8cC0a%v;W`bcNcgOU z21uSDWAxBvlH|BmzFFv}{kgpwcB}{rF_FM>8JpvhI|CQtAwu~g88GdXaPQo20&f~A z;hk7c%DEXbXzm{KNZ(jb0gnw~)ev^>;FE#I1XzS3KCp&uUkg&gl3b1L!)qY$OAtDg z5-LXZ=X&{!;}Jd&DuUiHYPRQCevNz>d)nB z8IK_9cm>B9u2n(rphF#h&~f=phHuRwY}(RtpSubAZ#j<$Yy{lXRYz3(eBRIGxKX7fA?^U`0B-Dw-);{X0Yn5 z*7d*d30s+szN=GT-jsLz{OI)KhrXnQCyj%gF zZ{PLk>+4_a9Xr!3pK1A~`NrqX;s-~zx1E^ZUI83`_xNo;4ZQi2@6DY&=>9abZ}#lb jq3`d`z7is&O^fvs7k%yWx@(h1*N2R3SC2lOKJf7qNdb_# literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/bt_grid_dropdown.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/bt_grid_dropdown.png new file mode 100644 index 0000000000000000000000000000000000000000..3d33c8698fb5cdf8956cc835593a76c2a39053a0 GIT binary patch literal 455 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 literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/category_expand.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/category_expand.png new file mode 100644 index 0000000000000000000000000000000000000000..54bc5dc74ef73ca3783fcdb0ed11b40e08f1e036 GIT binary patch literal 907 zcmeAS@N?(olHy`uVBq!ia0vp^1`G_03LI=e)~CfERsbo<64!{5;QX|b^2DN42FH~A zq*MjZ+{E zS_=aQTp8_Ze}CTo_x-!q$IX4KV?`I-U3~j}dG*fB_3_J@y?(s@^f>qT`jvlF%O2*R z`uZ*ANYxSMd$KY2r!WXU?Emgp%PDLBVMh9+{kFTNKS^odAtWfY@0Xs5kf4~|6SFEc zC6hlloNM;X5~_NU;67)z$bn!1&4$IuW0dq%{{k!$C-Tr zm8TB>cDn0bw8=T9lY=w9R$Qu+gIm5x+E!Rls_u=VUED9H^Na;t3-wJ@7w}IMv*W(d zenI?GnG_CN9~@<1dp41`?&y`X%Bv$^ABjKr@At!7UgvZg9_w$vEbyB1&~l|~Cm-gA z`)fDZa34sX+o2}B(T{Jx)ei2Z3fF{N{9R+-dF*!O7mfK6aeTpt#16yu3Sp6b?-TMb zy?072dsQZCFlpnP?e011l6tQ{<8TDSfjbS2l_|}&3-jb6&t4Lj;@BVm%PE-gOY1YH z7u;t*l_y+Oek*1hQgAU@w)s%IqTYJ_khJA_;f%_Xr|bA@7kajx{)IC#4a^e~DP~3m|HTTq;D{qG$@Hn>VzH@xWq=%dA i_z~{jBXPiMNHKk)n&s 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 Yr|Qf#{?Dhc&!cBq$jxalvP)Zk0W*R?Hvj+t literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/date_dropdown.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/date_dropdown.png new file mode 100644 index 0000000000000000000000000000000000000000..e8ba17a3742c38c8c48f50fe97a3c7238de61207 GIT binary patch literal 343 zcmeAS@N?(olHy`uVBq!ia0vp^JV5+_gAGWUe{PopQj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>Jihg>!IEGZ*dUI_z?;!&bx5V2?oLN~~TxCg&2~0B@W@;>0 zxGbIL@$3_m{YAW&hWEv!@-Od5j%sKozrg^-q)9Uvuo&uQi)?tyQ>( z%~SbpLA$ER<2RRzHF{TX4_Ra+C-sjXs1^k3@2@q#yd#?5ZGW`$>qDGw%}XYh-C4`6 zaqMT_T*u6q_t%)F8txW_s9nIGaQ5TH9ntHp|K{fL?f2r}Z@atee%_Vcp|=vZXH772RXD7I}{ a&%n&kD_vZ0iz7J`q}kKe&t;ucLK6V4>4)P0 literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/date_prev_next.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/date_prev_next.png new file mode 100644 index 0000000000000000000000000000000000000000..8d0805e863a9ef74c3d4292619c51c334948a2fe GIT binary patch literal 1374 zcmeAS@N?(olHy`uVBq!ia0vp^1`G_04IFGh*6aNb-GG#2iEBhjaDG}zd16s2gJVj5 zQmTSyZen_BP-|M||C#smV)SbPhk{&%Vy{z~jf+e;;4v3p12gXe$WbWAkX;&M@iW z(}t1?%>`~1k_*BrI2WWGI`6>S^2d3OTg1NB zNgTJYXK*F%&(#ywM7aHo*G{>>CRV89M>4ifpHo=Hsq?k<_$ zZ>?TG-dzwEQkwSgL;KZ$_zbza&HLX=z2u&GIGVBZgPDWY9@Ysw`s_;%do!9II?b^4 zkT-+rVdFEr*;cph=QH>3zI2Z7ipz^%PE!SL?F(RS*{3h!R`JWpv1Pr!h*QOHC&rfj z`YCQHznqF)7S}HPc;-8+OMFKnACglb%muOs9zD#B?Q{F>q*_z{f}2zDbit3qSu6BS z`1jwmUq2uYdj0$OE}7hKt!*FfUJ(z1gpgnS3t-H>JzFYWt4KKJejhJ>kQsjKX5%c5 zo9hE~TfP_vFf0BSSS~m%f1%2uZ>F=HBGxl=w)}N^=H{~Qh`RvLvSr5i#RX~=+bl7H zsNplC&OE#APb17ZB@RuOU!7MGZqyO*?!b4x0G@@_%m01M`gbjhVPWm^eN0aO{c0s1 zRxY>e_^>xv-l^jLN`8eu@2|`joLT;=x8sJ+6DNZ+a}Bi5{#Rd77=BLv0hc_Z#o^nG z?>>Y%DDB~$z?ILaa@hJ^=i-M~zaRPd;g#%*%MbVa&DoS^{5LgeI+s3s%oiON4EHfS zxW2XG<+i68Tl7N?mACH;5P0~SyH#MDXy zyhg`|udPlTvGFe|O$XLlarf~Foqar%0OP~vXBB?8yDBbgHS3+)!17=sG{O4--P;`x_ALFnn~=d#Wz Gp$PyCDngY2 literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/dropdown_menu_parent.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/dropdown_menu_parent.png new file mode 100644 index 0000000000000000000000000000000000000000..034893ac777b2e0501f581d644e0bc56fe023931 GIT binary patch literal 344 zcmeAS@N?(olHy`uVBq!ia0vp^3P4=I!3HGjzZ5Y8DajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_d9MZY{<978H@y}5ai>yQD@v5&P!*{`gQ`?}Jm`kUZmwXa4; zcWu*a{L9Ro*!t(hB%hEpvkEtY@Z@yD|vr&3d`ll?1^J`~hO{%X_ zU&HibZjImr`IGYv_ww$K{r&i+S9+A*M`=NrT_|*&MY5n)f}mWZ>kG#23oT-aTsns& zqFQV>eEiRQe1f{eJkbfyl_#Y0pV-X#)ROg+jI--KgsT~5Jytxx;Pzl~TGc%{u&}4A KpUXO@geCwPn1PG{ literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/dropdown_menu_tick.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/dropdown_menu_tick.png new file mode 100644 index 0000000000000000000000000000000000000000..f7818d510633625eed6e5d1443d1525b02896030 GIT binary patch literal 823 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 literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/icon_advanced_search.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/icon_advanced_search.png new file mode 100644 index 0000000000000000000000000000000000000000..6a2e5c69ec4d2ba8705db9ca63020f35eb48a171 GIT binary patch literal 1975 zcmaKtc~H}58pjhLKn3NflmrCBeTIZYEq6HuByxisLI}wZIYg>Jfl4%-B6m!d5Cvo* z+{zu5!&FoR3|7v93PL3=3dj-eAkb*Hvpb#Hoq68p`_D7a^POit^Sswxo$U`EP&fbr zfet!4*t!eUR`4E)iwg2Xba$daU@>++F&&}y0LY3M6%4=~Bk|_|cK}aJxY!4n zfk0xujQDz&ot;JL3$#e61O(TWS?>kVKew7XiPBqRq(AsKSGP-XnAc7IbmFiVI zgz`LMy$5NmY8N3YZ=3Q?=SAp)pGzAnndTdFk2BQPe5h^jjCdK`Fz%^7)`nVx(DU3v ztQi3EG#awEnGJ~ZMrND0DET# zfXSUq(r(@oDB$*dG<{I((R~VQ6CPhROMJCx=JrN%qdhFE{2}vY;%Wm_a-Y|^oV&Dq0K`a}<7PWgK z*!4B-D9?B$mFI1Cxkbkp;z!B9YL-WPdh|PZC59JXHXxwH2xd~o1agz%I0ikQbqU^j zvB!0^#eYMmMI)=_3DpFCsb1Q%8?$vzn=?0{JD3#bGcmBxOgtlJZEQB=oUk1K(6LQr+dlxfKQI`*c$ ztkpQSwuKPXDf>ZRT>+kTeLHm7c`V2WOxb-puW%SLb3C!Z19fLiMF;>VobfIyPW`?0 z5EvAzTB4~WwFhzQoixx(wG>aa%piZsUxFEXt7C|@KX&DZU-ne=QW3*-1vMF0_~>+F zW&tv#EtQ@9)CMOS^pO+VB%*D@jafiov{2a03_kf(nCckS{%Rz1`cqxC>iTC$>p+T+ zmKPtLHW%7Y?_$mHfaT{80{606P1t5L1HeD>t6~~?Q)qPJNt!YWLNAndW}M(lN{?Y z-6|GJf=Lp)8>+0X%1|2GA|5V)y@M%q&4tE7kz@lk9$Y6|%frwp5Zb+;ks{VPgx1=#-3cI*j{b z8=Yc?#)afxTLGGBZ0t9*yMI>OT>r+w2dC+zwgHG5lVFGs9O$A@rCnjv0NwCBII}5y zkbObW=fpIJ7#qTIcOz*8tp!t|AE<~i<7Z;L@Dk6(#zh~+Q ztjH6~N60t`2z}B?UrgN>m|hoF-9lEzkcqnGZS! z=sHQw-E?paA8kS_B#W#At{N+Rv^Ky;`w6x=0l^B6S}Bq+E_9eMT1G1Vsj9H<@ecYy zXhb68;+MTfB*Hp}StQu4q}R#w*+`G$L3G{lG-S#gijRi&W-fi67J4Efe#K21CyGku zqwPTTe;p*X|H~#T`;m`xEs0TnY2KXTxu4VdR#gl9E^#RNFFLdTMkn*s|DZEg{BLv~ dli!y>fjXvQ7pHKCO$0wN$kEQ(w%$4@`45`!p-un* literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/icon_error.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/icon_error.png new file mode 100644 index 0000000000000000000000000000000000000000..fe6e9e18ab32f176ca79f5b430b40ce2eac2ce40 GIT binary patch literal 644 zcmV-~0(H-Uy{Z02JREK>Ti~#6Sy@<3T_a zDmEmNkQNZ9VG&P*$_;uCbOA9l7I9{%+@SV=Hx!dAKcF4}g>X9&>e_L{(13dYl*V<5 zP^XI{j|`{>_(?2fTA+FcjRz{wicMnbiHgDE0Tm!FB12yhRPTU$0F)`&$k4||WTvNS zQv%f93BhV`YbyhzzCM`!|Kdf4Kh@RPl!ZXeI5H4104fS6<7}rx9goh&0wz;ZtWx5E za3D6ILJ~B9nnhO+@KCu~&;>PffeOMB~Um!LF;>+a5K+6C+o~VHW7FrE~5ZNCfWvFH=DWwp|=e?8!9SQvbVw*3_ zq<8={?4iyucmS^9N~|6bqDG}fVLgB=KME0(2TDmCBEbqCm6uam4`2&eP~}!bCkp=;STUE@Xo0uZ2a+gc~s zAC9K+x9i0;-sRQ-5&D&aA%KoCK!6_sm=^B6#K$?7v>wm+80X4aQy0WBkk4{CEkNwV zpUO=f#P8yLDqi3`^a#ZX(_QJKfT6Z{RSW9)! z2tWV=5P$##_-BBrWdLXwS{tB<_*wwP#3R3nm(108wT?f!2|xe>5Wr$@0R{jnT3tS< SwmT{S0000$Sc1+P-t{ zk|THdqXE*;(6m9PM!J>)Ds2^{HmD^iH1sMEl&V!xQQM$YMU{{mXiJNzKtUivQzEEP zk&u8?mG~{Bqyz;hDG7mu>m~f$o$qX~ckTV{d+WWcbDZt__iWBjda~EIKF@sLyqWiA z-pn%Bb)hMZ6QKz~lYk}xO=+Bjmh3#*M4@Q`3)liUEtibC7Igz^8g&)wYSfhf_mqEK zDaTN={`;(deH=A|dJy$6s@^1EVo^|gDm5I5is48E1VIE*k|2aC2xWt%&*-{REYn== zIJWoRaU8n7#5PT!&x}$DwMc*b$2e6NDgmhqurFbP&>e}&Fs8CR^@@0eNT=J-=^~bN z{i0IQQy_I6=Ky~GOa&p?GnoJpbrb5f^cs!DMFKh^#{gUVX*bSQXc)%dBTe|%XcgTh zT|?EOs1?XUo;U>NYtRZ;vHYfUjH*Ji1l@EtjR&0leIU z`bU2p2_ymMp>8MOQ|UG_o=Acqih=M<9NUIMJ_p&%pzRZ}6ZJ??2q5p|S0O39Rl(M- zq*?;)CaT#HP|+$Z)7XobxBA`{mvI1jGPj|=m0HxcwPV?ez=Q8q3hO|1p*m6B{5mSU zS-@u0KPWA&%M&fFo|||k3c0lTkzr6rhWqgHCe+6p?FCUwxLb}Xy>aYr$fKE4H>T0k z226xhYa2wPvE_wa_OH68?#7RQG?RE@CInEF`iPQhU7boVf-@TVaZ+}lWgMi3de!VO z#WGj<(e}KJ0lla%x3(>=0Ds{L)txXPEPPDn#R6`NDajqNWYP5gEUjD+0o(yW)vdZ=y9_9%!4ZnPp(YQ3$0aV2tf3$5{0GuiS92x|8=t%i}!-NSy*dYP;_%XtpQ<;jO z1(R3NlvblDaU7Wf?EC_QFL!?OZ#ncqzW=-n$Fhwrqn6J>E;C3Ico)J13qIAxfIH%; z7Ouf3x#}F45PYu-K&SckjSQp)ryUT6gk`nyV4~vnNRjCEN-7PMwaBwxzJk@P{4xcg zdvW8-Nmvr5P+o$qNdWo#cVna*h=K0xNfdL1!be$sOz-wFu1df*Ij*da#%amWVrF|3nc}_c8P)xLT21gByyvx3MQ+L)EnC5kN-L-&U~?oE zKTirr0^@7{{-r_C%<5Kf-@k_7M2;T^ny^KTX+YjQ5dk;K@kF44oqk<{o1Z!b+2SXs zTps)Ph(~}BmbogkkMWJ;5}Z;2T(jhn!m!(6p)j}gA*_*rt)m3cw8KVk@D1#K zF$O{e9sWp#)6a2Td`D*^YMKbxfKgiD^GFusSi4C6e`I`0bs=l;Ti$R~7LB6bO$4l? z^zWdw{bdS+mFP~dOfXo1uWMWBl|gLWyzZ6zY#1^4t(7RD=TOu)P_fsCu)pM)fm^!; zI1hm)66JrM%?GCj&P5_t@`yE!wf5Ua#`v z2^Cy#`oZO$fiVKO7BR8NQ<4adspl`2YTp0!(L4rXiv#0669KB@I4R#GxR&lE0!U(Y zH;C2;_J4r3tnd%K>w2@eS&smh2oM?fh5qXD+GYG_UjYm$20{R$8pNDlRBHAgx{l3# zfyw{>QfF-|eg3!#LO2dV5Fhgo$pQ}BmbF2kV2tPPr$c~Lq`C#zt_#ohnczw+5J_Z+ zIlUaCCUwX*4d8wK_tIsxTmPX`It-W*2*O%6sco55>^DOm0eIo^-u*1C-Ty!LULGJC zoGEoWMgip@5pd8lN;a09+liC)?E;*o)an2GO6Xdr0+YjP8QwbT0jd?H%k3|BLwriT z!M8taz&m*T(beg?h_v(N4 zgjFhXIbNOHQos9o?t}(RjCl9AMH%;FuuWK(4+I$_pwDsaXH28WU3tG&CsBhY-(Js% z-o4-XbO@f_9EI!Gg}iAC9`PrP32VZS3?@Usgg zZ)NO;3nXas(t-G+!1OSN-&D>8jdi8y4IRb-Vy(zYP_`t-;M~^Q7C`BV-Cb$8qbCfb zvnjW~Gy?rOX>`Vsqu|Q`+bGdSjeTP-_PBd?n!3hKd--g8{RzU)ELGtC%c777m%)Da z-5l(B<-cg=7JuE3uASEUCn8|4RniYxMU9IV)2Y<=YPPORj%~uoXcqkZ>3$HEHZMPj zE59ExC2U8%pNYC4&q`3gS5mXDiV?Ztf!R=={N?DR?j0yt@ZCq>g<(rV0w}|qFP9WC z^{|C;dxs~oaboE{Q_DBJ&@aBPfo9a-18^#5z?O%P!O9bW%HgNI)mg!eKfFU3P_?WAlc zuDTw_G66B9!(y+1Do0}0J29&l$ASmLUQT;sTso(yf}Q=a`b?>uET^DzmxSda_<4+a zb?WzbSG%j;qWo_B2kUVt{IL{o%*H(yRX`NGz)>^c+6J8)hNTXJfY!kfd|tDl%`*6R z)dGJq1d!Z>|A@BB_e!zG?4V(xD2Odft2Hz(2VKOBfWN8Uy^~E#xy~+Wlxy%UDHec~ zgNA~SU1mvp3?^|>%2Ws--}P$z$2g$4+d{I!U6|kaF5d-9C-C*X6Z!iyC4hvYqHFL6 zPU4Sk$HAGqXtQD1+a>`Iwo%+!&E1?00>)wl{GlVLyF#%J)rH-7W7U7)_5RBBEsVmlv>PU5^I#bf=^E1CF5w9(ru)*xh7- z>O^((>o{xAo|%iBbej3Q!gcKPZC%}MW(REtTaPz|5I_zbN>s3nulo~f$7UO>x!e?R z*bhj~v5SQ}&3tCS((^cg8G+&e%4y^$=L)3x*p)$U+RdnExj1myTJA|JKLq&dby2Qu z0oPIv_~$H3VLrDg+5W)w7)H`*H0vHxyuJh&+u)t?Acla2q|q&$d`)Z*U+D*gPo@8jIt0p2Voiq zHa7{F*}#99YZM=FC>}A*DIGZpl6Uq59lV-u5-@$CMWyRp%e>qz=8wB%4U^oW>mP+i z&cOXm0%k6>IbsdEmp^c{Y@dr3frBj6TjBT4qLU)j4PDUU)xC~7 ztb1e_TA2{X^4!o$mlVoD;xEs1H*~(`@4hNXMmLZGY;?=(>)0_H|2 zfP2Q*`I+fxV%}J363`@IVGDEJ=JTnV7O;Tje*z2uEIzG%|FAax00000NkvXXu0mjf DRW6Fx literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/icon_loading.gif b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/icon_loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..1c073f400a7fe2d813580910692278deee5ac9fe GIT binary patch literal 491 zcmZ?wbhEHbG+;1bn8?Jy(DwAir91!s|7T!eQ2fvB=Nc01>=@u`q-Vg)2on0q!phIU z#GnIY12q^hFfeVO(!cWbTmHp!w%l6XaBok(NXsLSuAcU?gp+;gTm`O@k?k}ctqT2m|os~yg_5?vSS@L+=X`jkO<|h%-njx;^igHohwDNR<2n2 z!17gSm)3$=T2);)y{u15X8+Qf&9Hm*@61hFVcox9OU3r3%c^D1mi298-_zQV-nhsu?3w1$Q>TLTn2tZ*V`A1WU3%y9 z%d-9l=^iHkBD|igJE|Qh z_N=q-z^QHTxQ~DGx&E#9`LA=||MBy%aU%kmg+U7Duoj@hgy0Ti-qYGhqQf$Q4zmUT D)4|ct literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/icon_search.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/icon_search.png new file mode 100644 index 0000000000000000000000000000000000000000..d5e69e50aefdc649421ac348aaa1846adfb4b8ff GIT binary patch literal 842 zcmV-Q1GW5#P)`6pHRCwC#Sy4n}Q5e3{tXPI!!_bN$ zN-U+PD6L(SqL+wLtlqYsmR2b}jMlE$B})%I)mtgMc1iQHYa^vq#6G2E86uX5h=|Da z{rqv~IQQOj=iD>5vG?b5-E(KoeBU|$|DXTA6Dt%7RwY}NRpAy1hy-Zb1KkPwUXEye ze|>c+a-sj*gbfKA{VaH8`gG2Meq5(6E;C!kev3KH=avG6Bs z7kUVM26larC+i1}un@Ch?m!yYU^mgR95964xGJZB6fS!}z2xx?um$X}-`|Pta@i&N zd=Erimn(>u9mo@rSHQ94Sr&K-%yOXHEyLqe#&-a#KgfP>w@Y9GSX7+mH82mvg`I0w z3G6Bj@^M}%(PajFkf)P)0hc$zux#$Yvrxapb>@H{C6p5+;)}ROSfobN0_=7HeAJjP z%R5*k!lZ!b!u=YHD7C1|TkkNL8dt)wCBN;mmKtNu&Pni-B zcQ~|k?MC5u0ugW~8LJIIKw7vzHzEK5cghEr-C6?>&?emfHJOFPfExy?HEXJj-^8FJ zASZF5QH}Y=xg;;zY?A`kB(d;;J2AhjPx*dQ7~Y4g9vBmV$uA`*Zvy!4M+C^zf%sLD zakAy;$QC4-qL%xEF^`xavG0JN+%p%g4;E;v9Q^>5!AS>l^lX}ov;$j4Y2v=Q&*8gy z?jy`}WZ3dLZXX+UvW|ltayRzRNK?<`cX<_MD+lr=*HNAV6vq z#jWBubM|zs6*MX?wBbRXe74i08l`8yEd!yd6j z1d)G%XQ7f;J_lGt4{*vS>b)TE>l^@KdSmd!x@T7L|Ioyuf9fLvk$^}*sCFyB0QIHT U?DStM?EnA(07*qoM6N<$g2wrPM*si- literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/icon_search_clear.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/icon_search_clear.png new file mode 100644 index 0000000000000000000000000000000000000000..b3a7b748606cef066f66bb43cb2877a1554feffc GIT binary patch literal 6219 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 UzE8;ezXJeOMNNeYs73HU0C+05`Tzg` literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/icon_success.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/icon_success.png new file mode 100644 index 0000000000000000000000000000000000000000..998025eb234665598cb152f40b1d91c44965bf94 GIT binary patch literal 972 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 literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/shadow_category.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/shadow_category.png new file mode 100644 index 0000000000000000000000000000000000000000..7d3c08b20377a43b902bbe1cd8f70e20fa9015d5 GIT binary patch literal 137 zcmeAS@N?(olHy`uVBq!ia0vp^96&6qsq$MOIFeRmFq%mH!-&gY>JtZZH&GP~4 hVy?EyObrao49C_o*R?+538U}fi7AzZCsS>JigY|(978H@C5cSDoRGGFVFQDq@KQDd{vC`u%&(i|SOS9^>bP0l+XkKYUm|F literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/superbox_button_cancel.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/superbox_button_cancel.png new file mode 100644 index 0000000000000000000000000000000000000000..9d89ffa35985e22c8b52aa35ac3695b1db583d87 GIT binary patch literal 1649 zcmeAS@N?(olHy`uVBq!ia0vp^0zkZhgAGWsy?@saq$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~;1FfgZOhD4M^`1)8S=jZArg4F0$^BXQ!4Z zB&DWj=GiK}-@RW+Av48RDcsc8z_-9TH6zobswg$M$}c3jDm&RSMakYy!KT6rXh3di zNuokUZcbjYRfVk**jy_h8zii+qySb@l5ML5aa4qFfP!;=QL2Keo~drKfsvttxuu?= zsfnebp^k!)fuXU!p@F`UrLLi&m5I5Pp_u{{C;@FNN=dT{a&d#&1?1T(Wt5Z@Sn2DR zmzV368|&p4rRy77T3YHG80i}s=>k>g7FXt#Bv$C=6)VF`a7isrF3Kz@$;{7F0GXJW zlwVq6s|0i@#0$9vzP@mS^NOJX1q?F%io^naLp=li++2{qz^aQ&f>IIAz^b}9q_QAY zKPa_0zqBYB7$0fMFwMZQ!*3BtA<#8e{zaLmp)x^@#(iEoGGq1QLF)uk4W^X3QUWi^xyn3yii&7Iy@{2<9^K)P+ARr^Z zB)>Q#zd*q`*hIlMF*!32#0NzW#J4V~MVV!(DQ-pixeDO$waUb1KS6&(^rny#X8J(K z=z|gmQeuG#0aGA|2~YY!4m|Uu<^gj|5io09x$|9;fq`kEr;B4q#jQ7C8~vmm1@=lm zYU)x7$&6ufN?mec0@I{(Q`dX=o)y0#%j#Y@_rF4E7FW#9?g=`V0w$bV;88fakLjck z>(RE@>WlZP%I`^us2=Spxm1;Z@AI2I<>iyLmu{NQlB&<6D8QsR!}VX?_vEKB;l2pRIfp$noa6e#irr5RROx4?oclZnx|-oi^dz3H4`@9AC7abs9bGJtDb^Csbj5Dae69 z^rJuRY4={+|CgsQ_c)2J2-z@mYWcNmS<=(X%gqe=8~^@k<(k9NdZ2BAp~M`9Ng5H! zC-o#IY1~*f;qAQnvkyL8c-hi#;<={%@86$KOWoTMdZ;nmcZ;;q%Dq9@RCD<}AKyzHrQ@<@Lo{OG{0+jEXcd4t$9r?xt9w1Ckb{mVCx9kZV|HG1{x zt-bQ!zrR@n2_p>_GnTWfR|`7`v1aSsWOWu|jTYT>?rg85jN0wno|`wZ@|&5bZ{8Gl zMC;*!t!lS=rxX;Q6}*$zeolJAPyMr}Ufg%KQ(R*FiBl06LZ9N-PIC$>v{Phpvzr(h z3AMWAz;C0{-FFY&wq~Be6dJIkX{WNt$|F;LDB=C(M{PKGbu{ayaq^$A~o|IOai zow_^UQ2X-BFWc_st+$Wc?xX5hu>QLA2IUYuVL%MNvg`(hN|vR0Z)?)}FDE{=hM3;V~m^?nZ%@$Ndb<3?I+r9{s0uBpy@= Nc)I$ztaD0e0s!d>X#oHL literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/tab_arrow.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/tab_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..5467392463a332ade15380963b712f67beab98ee GIT binary patch literal 501 zcmV+r*3CAVSPRbgbvhVGYptFQB2vDw+wIJc(=?@5d3=M0 z3heiLje9u9cDo%UF-YKWIOre<)Mzv^-~1hOpCjDht9W#7BpQ~p_P*s(Y z;EMPpJ`%9ui^W3W2<#@r5tL;qk`N2Ha2x^e-mU-#jzA(I5_kni`Rxke7^D(j0UsQ@ z$3PXN5^n|aJny>w9o(*fPlD%h9Ftd|D2fiw-R^_C37<*e>EQWlwW6ND@pv?UshpT0 z=Tbse%9p-~dbExW-A{{y=_~;7MB9*WfPEsp rr=T^`L*9mdBjUc0X!VcdM}PqU4kyaxh@!@=00000NkvXXu0mjfN-5?# literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/tab_shadow.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/tab_shadow.png new file mode 100644 index 0000000000000000000000000000000000000000..32e3fa57ca0149d13b671b9d0c71450d2c3032ac GIT binary patch literal 1065 zcmbVLzi-n(6gGuaZJ`LMEHIti1*H1NIZhK>NlO|hG*aD`G>EYE;=3kRYoD>N#4Q7b z2`0qEz{rjSY;@>^P$ia12q7dS7PhJ^{R22BO<^bqVadK9e&6@r``&wx7w4~!j$9rQ z1Yxu~Yt{G)_^2JXDvCUXuDoUr*kvnObhAjme zhM}mMqG=MhkfIHrp;+>x@jin^A}4eM=29OdjHpT1SwZBH_EPWy+dd}tqa&fXWJ-(z z1xk9JuP{!uj_Ml$QEDWj>!HKzu`=EVbM5}_C^6*Gma2Uj zXH}~p@;@?mv56tZ&5WLwbO+}o9TOrUBgeH(!={RnI;l6CeV&u>*{qSVN|sj6S``S( z>0+j6l#NObLVdPHOu4(a=Lxo<gLzMK;|N0{FM&dwBf6;wd~RCFzvkI;Vfd z+cDW5&jCLiPZII@_=J2;wr;=Q<1;o_wTkul%l^k#!@`ZBGkas__jk;DYFfK+_zdp) zsVBpq4i3g!14Cd-82GmJ=vr!L`%Ow4la_D38+iLX_2Jyv&tG5M7gG6CgM#^B>igk@ Q{W=-mYI)vzIkWumC*5{W)Bpeg literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/tree_arrow.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/tree_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..3ca5234fb9a1ef3c8127d02a0655c63ee4e13f7c GIT binary patch literal 372 zcmeAS@N?(olHy`uVBq!ia0vp^4M42G!3HF6DHW&!DajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_cg42)u)E{-7;x8BS$a2E9)22B2LqxIsvI`hwoyk5|tB?)~ljqmO@Yya_%bZSKU{ zF{DX ztcd*hyLX;KZ2HqsRgbNTTRaSQsg!vL1Wj6dI<|brx{SA7>xzHqFz26U)rVk&QwflY6Gq?*?@b6P#eE7X?VmVW8@4fmT ze&?Cm?!MY2yyL|gcZNgm4Ob5@XJ^o2U_!tHQ8la*4D|_Z0uxg{Tn7dtgQu&X%Q~lo FCIEu&j#~f# literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/trigger.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/trigger.png new file mode 100644 index 0000000000000000000000000000000000000000..89cc0e4c8e469553651598c1b184631d2d43e572 GIT binary patch literal 517 zcmeAS@N?(olHy`uVBq!ia0vp^7l7D;gAGXbY%ZG(q$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~;1FfcCnba4!+xb^1lMqg(`frf`FNu0+PEdas>-Wdwg4vwyl zt_LF|9}BuqY1#9==2-g6-|QAAuhnk6q;flRmf56hTZ>tR93XHK0~E4MfI*c8C}dQD zKu(2~`&Qp#G%x30Xs`4A>&I-(@8>Ukwz+pd zY;OAW%!k#FJL7)bt5_ty&wO4-YyZ4Z-WNZZ=Gwhb`taw>t6Lvgxg!4N)7uNu@w9l3=m~~y5d!B|%KH|nM@gcivmBKaW&zZ zx3k0Tps{$Mw#`|FzpWW2Hq!-q+nx(8y7(c+>57nlu)}^uDbe$mE{h*owr7OcJQvt{ ztaz96{{VH>+D2fwAi{)G0RlZ4ppeM}28A3h{r|3efPpRc-2PL?{htEkmBG{1&t;uc GLK6Vl2Gd6X literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/trigger_date.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/Components/trigger_date.png new file mode 100644 index 0000000000000000000000000000000000000000..f96efaa7f91c00fc415ee7b6890701f76b26ea4c GIT binary patch literal 472 zcmeAS@N?(olHy`uVBq!ia0vp^7l7D;gAGXbY%ZG(q$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~;1Ffdkmx;TbZ+pA4{dr#WpE>>K^EW@;xzonH zal!HR10oba$r}H@)#lR-hYeFWr*Q4P z$6fivuJe^Tnx8WaB|4&jdrGX$O)tPPzFwEwfqHwXFIzxs``Jmo461)a;jo!lfZ v=+NlU$iT`3fg&6*7@!cK@Z$D#24;pOSN1+$)~>b$7*!0Ou6{1-oD!M<$eYMC literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/modules/ExternalDevices/images/tray_icon_device.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/modules/ExternalDevices/images/tray_icon_device.png new file mode 100644 index 0000000000000000000000000000000000000000..e9a56661978c68d758710026125bc5da31f4573b GIT binary patch literal 4156 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 literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/modules/FileTaskMonitor/images/tray_icon_bgtask.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/modules/FileTaskMonitor/images/tray_icon_bgtask.png new file mode 100644 index 0000000000000000000000000000000000000000..2db01970b4d1a86b3721626cdbfa71bb863ccc11 GIT binary patch literal 928 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 RsUIdypGup`2}Z*<{}-23WrF|! literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/modules/FileTaskMonitor/images/tray_icon_download.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/modules/FileTaskMonitor/images/tray_icon_download.png new file mode 100644 index 0000000000000000000000000000000000000000..9d7951dbff25b7631b415de78c67c6fa0d52afd3 GIT binary patch literal 1192 zcmV;Z1XufsP)qU?rduPzk66 zR01jim4He>CE$_c=GD80ABspncvece{C&ybHTf6K)>_QpkH`JbuV<~lS&dl&uQlkV z;TciQBEUHd));`U<9RKmu0sGlaHSY{bGQP1=t(FeAb>Y*Cu9Udz&#ZL0DA>^@Xgg# zP=YEWz{?(tfATbp2?}6VS72b>5D*m*c-$gIVqO5N zcwkk)Dkj)Jv0?nr^#C{UfOQg~s({6w_An8YCm4;~rMc`gA6~zf3aSFu^nmF6=XgNe z`*&Lm;Y51N>8qr$;T6JSMlBVtiPuXeY4_9*xVgD?cp^`yzf=BCm0)vy?TeuUXx&Vb zHK_n9hI|p!9b4%B{DH1La&hFWomPwg`~CeLZb|@+*Ka=v2?}x^IRE!~zakO{JQYG* z4wv@>xE$_UCc&njfE^j7W$-_~ea6id5XbHNj}G;a1e78OsS+gMSx6LnfVH9o4_v^z zye^>k#=_l~Pk31m&G4%o<#XrshpIT}XF53U@sESM`O5{+h%qs*sytoN+ zTslVW!$J4p2X*lyT|5#fbp@u~!SFq&JYjPJ$ecvt)B)*@ae*cV_A!-6kkCLf$=Efz zC;{E^$W@x`+o=7IWOz$;a$<*=jj==C6=;X>^9~fy_KlH1#Ihuez?(Jzr#asHq6An& zaoA3l15Com3zh^Q?!5yOwBWJ=CZ({b{clP=QVHo`M8F?&@RSr8-VJt93xtKxLMO7? z1_B9ll&}%_MayAI(vY^NtaBB7!J%trC?NxH+3;Ej($6zOmvvtEQVq&B6%H}{?l8Pb znG!YzzkE3y0l@HplU@xaE=BtF~p17xA&L?tMp2_)o7xDfc& zT4IdOj*FLI4w^k7kdPA)!AHr{Y~#6LY>Yga!%aN5>N@K1XKbl0hNGCz_T5H1sDMD`#YT5h+HTD0000s(eLJ+YEC_BV}~4p<1Pm zE=QDdmkQmBE}Cm}rHg}8`F-Y6=bV3k|K#7<9^2#j{Jh_<_si3ZP9R2;KqS!cW{_`4 zlpEQb=tN}(gwvQouAcrhR;Y(x7{w=q>br{U9qjHENMZ)LF#u5xgpJ5jtH2xL#-RdyKFE5O5d70D~mgB7~ck>up&=|=Z+r?JR%KkuMO zig&OZ)z{gbLGcQ7BvRcySnhPTy@R_eolW%#AvjT;sXi{iKQjYe$le4O4`&k7(V6Dv z=}&O;bY}!Ox_VNWLC#cPqC11k400q=Xg(oCSGuzsgUSpfGXm(WP*JX9nq zE;)SU=&@3k_2^73XB`Y=5eYOh?ayLP?4)|2T|s9?HC@#d}D z9i3fwZZ0xaC^YrOLVBJ)d;X&LWe?WZv~UsD3^e-s&D(eHKa84T7Y)4{`*ZTc$Ilht zzR!Rl@H+bqw@6+Ak#)lDWBz(tarZg+2f}-*b|&pYMD(ynE6tK6l{RsyD3nD&iajzQ zT^Fux#=gr77-Ev$`2tJ;4Xg;$&Q?Ph58miJ;=H>|&rZqruEfKA9Vi+M%~W&S3+`-C zNLSIqU|DB(tvvJi?3(%vl)zYkFd@z0W8z7dm%UI!a~z@G41?_SeOTj|8flccW_+N1->P_HQ=0lBYqu$-Wk-@ezPVZCxYzKg4r)28fix;B zr>Ov6U%K|rG1pz6+?+@X11+kkz3}^&U+yP0GHu-kGkZCTRDVK&9XR$H-#*{K8et9d0y3! z=Q5E5(Iiyz%kx}yr`8LNMnTkIRdxH(!2?Sh#LZ0RimAba{;a8dDB6eJP!yFxY=r7o zwj3{tK0(}A9G+Nwq9mqdbog-8xms=AwKPQIv6KnDR&?ldvk@_0ck_ruV19a}EZ0gK zHftLES2B$s82HV`D|wv4Y+!C6Rd_+lI>=tjI|Mi?onMUBG&)X@l);rXf`g7Q^7HS} zQLFI`A&H#BC|Hd6re(5@fl$%HG4LyBe4&x8dS_*_PN&E=HgV#sUV@gAmN`4Vonv>h zOHH3G0&yjP7J+A0Un}|Ff1VUzco<_apQ5B3KQqwONm76zOvzn_K3A*Xh1YUMpSGSU zdYEakrfJJKsgFBwLue2IRE<~>Nl^3(%EPM0{sX`DUgx4qBflnn9O@+ckM}F86>7LK z3rQRtck0u~y#weE~Ra-kKXBk!i(R8#H z59GP@Hb68qdqt-EY16O@u2aKZN*Kh)VKhe7W@Id?z}qQqabW;9wh^j>lnoU{vEsQ< z&EI+!i(<3AP8^CTD;^eYs2&|I+UzE1Mf=mlua2eA$Dz8KN>=|c&EfS(xmXeW>)B>$ zVHHe>mzMR@-~stxPu-=Ed5ZAWa6?-6NTwEon$6&V$dr6z6aH6mO}hzwUu;`0c>qzt zC=l3iY`8pX#y)-LjWSM?B23Lj^=3t!&L-ATmsGI&X(g(bDUHK!mx)h5I<1EX8Lu;I z4=7+sn8$bhu|+=D3Z};@yhTe5XYei}@5}Ea;D*)w(T{_WCQbW|mEHc0&D>^zj>QB! z`bM^%{nu=;wWun(RfKljqfbPtE?P-xkN0ns&$YnPb218DfOQB>nbzNx5cjAi_+p}Z zxPygNSG-gy zO@l7&&@+bDn`r)b|naI@Gd93@@Nz|ERJyVB$v?Sk3O zxs65}pszG=&(M#%V9q>fy=FlVybFeTX@os*M|1NJJI;h&-1ueAjw9JTtAnS5&&FO( z{DyUq+c7hz$BU~;pL)+O=&@_j&fnHt6MXsjMK#pspL%q6)b4oIQM91PB2?@|2bRk# z%4(TpAFZw43h2>52lUwb?DE-&p43@A3YM(x1@!38=;D*E*X_#G+9XE5Mwlw6eULT3 z65OLY8^7;uK4Y}Dw+^T8@|(5Dul~EbA>n!b{T8C*piL5ON2Q zSSdaw4%;Roo_^W{#HxR-lqbJOHEw_OdVZy3N$KP#Rq@jZeAF36uIA;4Pp^YzRJ9kh zRh6CJ;v!J18t18ux#H9KC)xYUWaPixbbcfWXc8Eas(+Fm|>R54DuMt;3@yV73W+ZSGA zBjNn{L1qzAg-hMNb8Mvbz>_Y6)amh|XIE#=MLHc??r$>k@{ap0wDo-`UM3GyfGOru z84t>`g{Ez0j5nzUScfXX;wls0*4-x@^q05 zoC0)p4a}7PH&cGa>?5*vSUDF)0Ucn7kohp`^v`5)V?U0({o%+wM&rc{@(rO4K(Q8} zSfsz>br3+&*8`yVu=c^NgQZ!s6i+=kDW{kXP(0yxF%h8ndXA!Z^%j6)9TvQ#y7Jk@ zxVMkAXEDkL2Y~VY^DD`a<=xMo{EnN&*io|$z^G=#dS0_V?MD9MS&Xmlh~*f=I)}T& zfjQ=9i+5~(RPJ56$H1vN#(HfTt-JH;&cfxPOd$Kz$y4@$C2PB$PZnBsK4Jhd5B_Nd z?tX=WKYeQ9j(~ndS_B34HAu3vbu4qsS4q-&iYmxUb^G1F%6Br-SV2*X!EVtqfsLod ze^;%#^{v2=Cq+R-bm9~U$E^&E)j6z}-CJ|K=PiR`EW=7A99 zSF9bjuMoYwg0u``;)~VVpkHre%2U%rY>c#FZKHUgH1tnP3HcP;|IFv}+i#y{?u8+2 zD+G!_8bRurP}(({o3a*p+HF+B4s{&8+6rn?glp*Knfe{$Lf|?$o7kcE26dC;gPrB8 zKIr@iQ}r|7_1GXq1YMC_>N(MO(rE9@N{oyHHDugU_Devt=^C=f8Zz_~YmA|WTM%@# zUkc~0vVBKYlLjg&z9Gk^4O6a+dRx_`W-kiu0nV(2&B6NxbA-gzmZ%2UATp(E2IR(% z)tnatHaI59NHq-O=1hz!t3t$3&ec_?Wb5~UGc@uH-18!O#DiXinbr{^w)jNnVVz~6 z9K9XGou$z2?+3#e=DuQwbnT_Db>e)Fdn-pzX)oqIIulx+(y0B%8DKj!XB&7|SN2?t zCHoc^Bnkn(GZmMX&H=uAeF3n@_a|VUb@T$@{dN5JrCF|P2=bs zVA}Dmi!Q%^QI`rqcl`u><;&~2v<%yk*Cp{jx#wES#Jd;u2j~XiOQ={pMdMivi>R=`P{A??ILXiJ9 zlh!-utS+&II4)23!p528@Bg~PonJk^mb0+~W54^a@10o+d=;er3R&kFM~E`goD@~l zGr4W>W+AW?>Wa-XaC8AkB5dTod2-H<4WhI#g!lFRPDZ}KR{yu>($)du$A2nO%{`*H%j+H=!7V)vUv^8A}Fa(5yMW9QB@Y>I3%#y zq1du46W$0_na%0rql4HL4FZeD0uI?V*rK!uC}vm_)!5~!~mksxk3 zz^3;opu?;;$g}6XGc4|0v-d0YEfQU{4ipfE(8q%Y+Hpm{=~4WZ1?@)dco&q{3+8NV*;(rd?q3iMKIZ$Le&vjP22yg*4xLdj68m zHGxi11p;FaGoaLvv}++Kdr~TQtz1%KyZ&y%H*B>j(8ja5ECidcVBY#H8GS^Tq;dGn-d%|a)mwPztf!;Dx*YUVqc z@Q3ev>(kJszv>yQLvh2!{J8}M{gvFA zZ-w<4Rr0*54lE5}zIjIwd6ByuC&7?;P1_scCts6;a7Kk!zOMC<6>qOTDzoA{qv<=@An+%%kP0hcWN4H zE&3_Q&~4Gu1wnq6cGAesl0W7IL9Bi_a{pxD<=%JL>Mc)y3IZIuT@lGY1c~o&%XfU) z`!)IV=%XKk%$0V3{W;cman(X;H-1u_`gI0|=Lj)wpKtU60Tr+V2G{|tD!>ldtR3=0 z7qA0L*~I7cWthqBfX&)*X{0|#Zb$Z#>#?Q~+pZ+7*=iU#bmem3TFUp6&51D%`N}{y otg21}4qc!chEP}(;?SYs$YkMcH4L~TuZ9aN{@$L*I}_*s0~YjV*8l(j literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/modules/FileTaskMonitor/images/tray_icon_upload.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/modules/FileTaskMonitor/images/tray_icon_upload.png new file mode 100644 index 0000000000000000000000000000000000000000..7f9d2781d8faaa9b6acaf68806f86ce0b8638074 GIT binary patch literal 1129 zcmV-v1eW`WP)Mgs>$q?nJ7hd0KK#W$?qtPcLe~*Ds%Et+#U@px*vFYX-~)VEgyaWdl%ew(0i~^nk0Hcl9AO=%Ufk9SR1VjM9H6&kIUQ-~bn)Hk! zA;Uy~^+8x402Sk%jMwCOF?>@=Z^7zPKB1j_O#IG&4eJw^GUFKo5EEXI(d2nHocf8- zQ*@GAaseC^1z<_Lc6FGa0|q>lid+}-mS`Wm&Ua&CLlxU(>;Hb30Sr9pK^j) zsBf@~#J$<0{Q|}hfe_Sj*v+v{bpGW5&?abm6YG2cU?S~L4F^?21^`&pX;{h)j$Ov{ zgG`{knE|G2olz+@3xruS!K>Fdo#!{v^Lhc#54W9SGmgA+hVhn!+0@9+HHxQtm4 zn2^Ox5THqukDekllC)BT1jCv9(NSAC=c~!nPQd6`kc43dI=~GKMcdk~DtXU`sXBzi zc;gcQG1i3%3#q?l0T?)p>;@f1sCrrp7ijKX0D|M)=Lo=%SA3XsDlLr*dlLx^9IXjL zk_!{!mJQyo!hnlE99?N77JsUuy2Fl?*{77iZaj|ho3Jn-znLHos@C3IvsbbvFd(dn zd#IKKg#r07;L+wq&Cda-Ry`NEcm@;zN)DJE>UeZ`(JDEf-GSrYd*q&B4Mru2EB<(* v{8+jGPyi?Z6aWeU1%LuT0pL=v{{jpE2fESXXu#MN00000NkvXXu0mjf0O0dt literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/modules/PollingTask/images/tray_icon_disk_port.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/modules/PollingTask/images/tray_icon_disk_port.png new file mode 100644 index 0000000000000000000000000000000000000000..b66b079d4b131c617321affe59b21d014b0bc8ee GIT binary patch literal 5685 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 jxMyS-2Ae)Gk z&1$W-0l}iRHjdUK-6m{`RXfPgmg#Y9Xu-O*g%+pF=rFOiW6$ZoF!#56&-0$=^LgLr z`(D(jmq?uu00BQ71*3z-~RTcOU94;ga}_La86QcHe` zwZMs3@)TN|LYHmKDORF(DP&S<%zA8vKD#JWszI}hjJc~cC?-d&YSa!Jau7>?mKc(% z4HAVeORkkEbTW-uu0k^r{km~vOiAQPmsNg*Sw&z2!pp-7sZsgkPXOnjB&Yth3~)wN?dWR3p|*F|0zY z84_5HShQvbjM@#^MKTp?cC1pU4Ve;6MwU8LuFaBa)PcQH=$8wn(m!3t`) z90gJy6+emzKwJP&64&7M4D2R`FD)MRb`3Sq<4lJQr@Ke?a?;mdA3c5a;)}5{P0>r1 z_UPN=t*f*xBQy@Q@pnFQJiSN^h9Ye~V{>-{W3wHF^WAKoC0~(-Ln@*=t$$bInERQR!U9L%Xvd#$8#; z>~$VYWNZLVITzsJit$^Q52P=S9V*|l*54a$x%1Kb>mOHj|sbIjLr zL=R#wvPGVAZBe3){EK0t#<^i_cIO~unYC{ytZLBZ9%tcqtWb0=w8-8=`A;U2C_hqGmetGm3q|$(o=@z-;(*~%Sq^BpHBmjx#g}P&i8g{tz?nuM5XZ z2$grQ{xDTc$4f(G5g9cJ-034IZ|ByMJ)=jKvq*&HRN=tgaO!Ljp{?g5`rT7QsdBexhLW!~2uZz4dS&1fPU48Xy83fEftm z@ke1K5W^E8Tp)}R@{1(2#o~7w?6G^S8*1=HXZC1E>f)F75Z^Ad_pu@ryUrH!i4oTA zcgnh%@iQOV({iwN(=HGfvaheFwW32GOA3AdKO1BD^nJD6-A$(Rd@8e76%$K3*`+O|dlg34J0!3$Swn^soOyKe#uN9-!xLU(-wqf2JkHF?#9o72p-w{T_1u zse6+ZBTdv6N;1*pd>r_VlK$4#Zaf7K0I?--P};NXW5yoMbGw5Tc@N;TtyJ3)dDYK{ zGv?L>pk*x|dcYGvXw+Hql~{OpFv&SWey%YCR?~NVb4u0^$ zLeRfnDHl$;>*vV4D`Icq#i|GjmH2!1=wI32dVCEwv*5-+f& z>e9xlGyI+GT)o}V3WjQ@KyO2}@Bw;x4;E#;T`*(ay z9GO$N!Q*o=*IYgnLFBtWI|s%N@0agj)q-FUb?n^(%Rg~*1zJBeR{nWYOUF%aMAeq5 ziybp7QX8w*LQgzs|MPhBkw?M_PoF#RONuY^`Ue|=7G>4;Vcps$+_DwJqu5cng}0b? za^jdZp_Z>EA0Cf0zr@SM>ba8LEqmF^ipO5&Z$0W$a#r*$v1_ap>dxm+aJM&7$mCx@ zK*9mU#E|s@PRIq|VjVMs6}1Vp)!$Epmj}j)Ep18fafDsp)Pl>Cv|mU}sjJ?tTrwLm znK1Y{$asg!o1Ceeh-``sn;)*aSV#DEC=Hch90XTZ!T#GIOXY7DuSc#W@XA}`Oc z?z>iUp(RwkzVkdi?ovB1+h#dF-o-PdA3MwK9U;_fid4rZG$cc#O~C8tS9R+eEy?+l zZg*G1kU3Rz63g+pm~2RR1*;4S-V2avT#W7_G>4N>&rdnA_a=j$9&5&KH5dV0=}0uu zhp!uYbV!_yj}9rGkEa()0Q`P>FrFy%SD0xGK{>>s|K8%aJbQncC#(~;Jx; m?D+nhuc4fQki|s04o*SGxpT9pNd3hYkmVE&nf~&(EU( literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/modules/ThumbConvertProgress/images/tray_icon_creating_thumbnail.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/modules/ThumbConvertProgress/images/tray_icon_creating_thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..0050b8054ac2c9b3b228a194a292ee056696df97 GIT binary patch literal 2125 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 DqsaPA literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/bt_bugs.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/bt_bugs.png new file mode 100644 index 0000000000000000000000000000000000000000..c1f28e6b6026791d18fce7f47275ff4e9a042ad2 GIT binary patch literal 35658 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%0D0~Rp;W9XUd9KzbjRsRc2 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 MWz}SArOYG#54tYB6951J literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/components/icon_error.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/components/icon_error.png new file mode 100644 index 0000000000000000000000000000000000000000..e33d0282899ccc4c535009bd44f862538f52f2a2 GIT binary patch literal 2031 zcmaJ?ZB!Fy7EX#93Zk?HDu_4)&n{L-GWjHtAb})6A$(f`DiAUQWJ59`nLq$RVg*?~ zR5%rikOd2+9w}DQP`;s7AzF*JVk?2tsBA&oBWFRamRfeAV)uvLIcMg5?|Yu-xzBs= zJ!k$I9U0D=HA9aY#CvD^bHZ9)zU9K$t?3 z0ms4;C@=dG?2p6Qc*)|$s8|%iks=C`#EK#56e^63!};&fsU%W4i~?zJhD^yN&i4%w z0U5+4CNM-4kt!I@l!fN2;kf+Bcxk>|%7%zL0swy<2NO`hs07d{vXmN*j!S%|%fa^6 zV=@tV20`Uq;&W4CQ8W;Ys9}IXV)#laR1jdXNg#vH20%-fu*`f|Ez5x+p&C&D&+g2Ty}}DEh$RpT zC~Qm*e6^S7T<8^EUT}GT$t7cE$kxvOPp4Oou<@~OU(PKSyqtVkiH*A&n`@sA=G!>j zsdSzV58+ck^=AAwn4M$Lq~|pLP(Se0GCS7Do$YJT~;eV6>Bt&o?r`bG^BzfGHU-Bqe}=pJkQPr#_r zSU7U{>@K?O3+8ORf+%%p_FOO85ariCURAmET-K>p=7%D?U4UIP3+e<$x&i(v%L$UnUw5hYYu4j7Rvd40_k#XkA)B6T-eq!|- zOu|CX^k$FRyR_8G%DKX(%_PEoufy5gh=HNisIUxjI%w7#OoS=-(Y()SqsEp%dF$CY zAJThJ=@tEU6Er`$K<$>xMXcJN(>6NSIM;h-Tf93D&`t~{S1yh`Ud(85IQ*s{=h`OI zzuPWMxu3=@xc(zpQ3Vmc)Q6k=$BvZSU76dBhxDhay8IWMHt{sY>l^Oe8D2wpxZaJN zY^wiT^}nGd~Aa{8%`FW?0^Pz3MSz5p&@xsI8 zl+B?(4klhL9okn1zusLDar!#G{K?V)(%wFN@?=){T{zJ@uB0%X#iFfq52{sv`N!S2 zLhbDz8N#A#`_9DpkanWGa)5+AQOBAH-;F~{6O9bkSDmXTm13=hxZv^0iOx4IKkitX z2cz43cJ;ZClCm+sadE@HEqRK8iEn3GQzSP`cyoNDN)oqm;g`WX6SiOXA9_nT8s$Y$ zY6fT&+_x9_*AR0k;V!lFVx`UD>X3d!E*}oqYdfJm{;9q8q)L3|(g!vLN22`n9UZ{a z$G7UCj8E>;6X({d%hgXPyck226O2-A-jMx0+ZDRL=itT48as@BWE~xSuobx=h~(k1jJe7+lBK?dBz0@|%L(q>jvHrJ?fI{%<#@6&GhY|eNTIdua5*Y7pU9YZNy2pZ?Bq&T=oi|eTPXe zbGA8;N{$-~16P^(8KpNH-L*1KRbZ(u{+vziulNCDv(fi`VQR^)z1i8RA%m`&zp&P> z&1@)kzUM}ISmFE5{trKJDx)6}K@G+D%O&1zg9qmL`oGt=Pu!bx(LXNhpGn+<>P}S> z?`-1|ia^6y>DNuR?v<35q4PgQxty#VvxzA=v247&55ERy|LCUK(GR?8{RM{!BKfC+ HQuqHCu>LuB literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/components/icon_image_selector.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/components/icon_image_selector.png new file mode 100644 index 0000000000000000000000000000000000000000..4ae2f3a718a482de4b096d605b1becd4cc178267 GIT binary patch literal 1748 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 literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/components/status_loading.gif b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/components/status_loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..824fde78c6c2ebf42db93e543d314d19a9cbca2c GIT binary patch literal 1549 zcmZ?wbhEHbG+;1bn8?Jy(DwAir91!s|7T!eQ2fvB=Nc01>=@u`q-Vg)2oZ|#4N!1N zEJ*~?Hue<-iOJciB??KY>6v-9O7C~?S5nAKu~iB;^)>JRtPXT0NVp4u-iLDaQr4TRV7Wn$Y4bCgp1A9m>IX_pwBC$Z$_i>(q+MlU5Z#mXYt$TZ0~*-Y0W%_LRV#55&Y*D}S-Lf6zh)y&c)#nRHu zJQ-#VHvKL}Miwq^hDPR&mcTf0HMTS}Fm<+Yv@imS8#%cc!Ss6O6_+IDC8xsd&IH;G z)oX}Xua$FAYGO%#QAmD%4lES}WaO9R7iZ)bC^$PSX!s^3XXb(UnxHs>c-bYjD6=dz z#jPkmR{cKGm~Up)8sVEw4~HDOM^5EC8+)s zasy8v=qP>*tT}-@bnN{ORL| z_wU}mdHw3;i|5atK6(7;;e-44?%uh5>*kH?*REcZ;0$^0LyB;-bQW{Jh+p?5xa;^t9BJ|cQ;oTXD3GodplbjYb#3&b2C#DVE~a3 zL$r3VYgCnY)jw}%zsN4iT9L7%WygvN)4&xX9G03hH3VmdOHQ2Wx#Q)}3p;;SuFQ0GoI|Z|zcHn8A^a=_G=>jo5CfBP58ThITY!G%Z(GDL ksx@AR*O^12m$` zJs<{TH8U^^0tj-St#x)eUC}2+#nipBi}9xQBxEB}7W5L=Ne!nJ!$VCV|O z=?h}3Ms-Eo(XeR&l=ZT>;-g5^FL+6o5lC_eO8H2dAbkWS;3O$Bev#zR+=D@FmYNV_ zQgcoh+y${-$4QC=kxHe!DcWmVJp?HT0^y?wioziRw=;$#r*XsHmX{y_Td}mHqnQTk zN|fW~pcBNPrK>LJ$!K&yL&5gfzTRpx23_P$o-P34C=seB2o~8H(pg!MP8xUIIVCvpI`vau&RO! zD#zojA8-Pr3IgX>@^aSWvtdSRtsf+--IXo2&wVLrrD6vb1G5|!sh4BL?n1>|*W zP{5*mbL?cqDGyUz)r`|6u2$j83S$^h$2I`tW?^oiM1XZEdOh1Kpeb=4E=R^zOS?Hy-6Z zbr&w*E*x0eoV~d~m(5I8-7daUr7DZ1-E-w1a+JPwx9qxSH$GnZSnbFg^;@%3-N=#g z!q*-t{%)u|c5<;GcH_ZmMi~C;hq2m`U~Hy3uy5|STlA|h4WutzE4Fr3hamQ1Lq*B< z?A++`@Yw4Qy|oni3u%t;Dw({Iy&7R^ZtdMUaJr~wnK)O}Ji{+fe$alpsN~9V`Iph6 zEmtNUJy5-8^y}%Z>INY;eDR}+lLZTZA3Pg4GW%)aj%&H`)9(*=Biv@dfcQJK`}c}8 LwMi3=-7o$FK7Ye9 literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/desktop/add_one.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/desktop/add_one.png new file mode 100644 index 0000000000000000000000000000000000000000..ca1d78cb3b3d36b80d226dc3627e63e2b211b272 GIT binary patch literal 2537 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 literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/dsm5_notification_num.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/dsm5_notification_num.png new file mode 100644 index 0000000000000000000000000000000000000000..daa7909be16df99067bdfdbea1fa178646af7392 GIT binary patch literal 21353 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 JSgP+3{5#e}rN96H literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/dsmv5_wizard_bkg_v_01.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/dsmv5_wizard_bkg_v_01.png new file mode 100644 index 0000000000000000000000000000000000000000..74fce05309182ded70cd1d3f8b428c21cbd404a4 GIT binary patch literal 9530 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 Y0KcU&SA96!MgRZ+07*qoM6N<$f`z%xE&u=k literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/dsmv5_wizard_bkg_v_02.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/dsmv5_wizard_bkg_v_02.png new file mode 100644 index 0000000000000000000000000000000000000000..acfc1b352e9acb01e998cf6720f47c0c1ea15bab GIT binary patch literal 63006 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%0DkA_x;x(Y?U%$JLzcfw_<<#GUb-RVE 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 Hu0mjfJ^_>W literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/folder.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/folder.png new file mode 100644 index 0000000000000000000000000000000000000000..5545cbb85718eb2412b296bf2545484cbefac2a3 GIT binary patch literal 590 zcmV-U0wRKS*wR^QJ$b7r~o&7DWFc2!euwnvjshILRz+b?huoB*{#Y@n8xb z(@oP;ud815!ojz33~q#rwMStDVIXwYCh+f#vlxEE1W2dTww=?tJaZ^~TyLFtWq!A7 z0tuA!rRsic{rniaYJ|9kk6={t<{_#(rA0tf?WtJuq4Nn;lkuw( zP_!V%l29q<>SWq^)8QroO|uaJT9@$|^s9H5Ax6d>nFi(c-dq6C76EGnIJW?v_$;_Z z0W;ZKKTQ1mr*fSE4#n1u{mX zBLc)B=N%Q)I_LhF05NL+oWM8*;}ned0V{j@CTa;IJyv^E2o=|LT|-Z--bhf cqJIf60LRR#+er1C=l}o!07*qoM6N<$g3I{>^8f$< literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/icon_drag_add.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/icon_drag_add.png new file mode 100644 index 0000000000000000000000000000000000000000..9fc453da069955956f872ee94e0677912c6f99e1 GIT binary patch literal 2536 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 A&;S4c literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/item_drag_status.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/item_drag_status.png new file mode 100644 index 0000000000000000000000000000000000000000..0e3e45abdea9ab0906e6ece76009e7dd06d46f6f GIT binary patch literal 1637 zcmV-r2AcVaP)+7RE|&B-;lw>z`*W_Bjs2aj#Jx!upc{qCEc*>{uF+}s=_ zmRMBtk`N@OVl}EeSTUSZ`u=a7@n%5R`Ty1)ih{bZT`KS&c6?oUPsE)4TfrJRi>&Q35&TT^V@~s{#@{ys;oaMe zn_tmuqaJnsOGd?)mj9sNj{BSx%s$HeBKFFiZ^4r*x53Bf_rptLy=45DeT?wS#vilL zq-X}}vj`qIOP@shK2zdh_UNroz#DDvJH<~Gf3M20w+HOA9?m8*Z0|88o{|ZONQj>g z+pUa0XA8|h>}_s~g(uL$*}_aK|EqWHs}N7gPXBqzdVcEo`w3`0*lX*F+C&!5{RGr%@d>mNwJF#lua-|HV_X`66QC=~>aILp*t+HjvNd$l@=tue``J5G!pAeFwAUvxfpd zpWJ%&Gf(ro!LKrEnuShaO0Z2;{-?j&2nX&x4)-lz=PRObFMI_XmUrpOJj(nfo7k~~ zG?T2ZuaCs2Jz_O zw;=vrmAjZ#o()pX?GVfv4T@ItN%M0NUH0+?5%qqN(J@IV#m_7M1}zfMpkFm&A$+=u z>aR?ajl#?n)ngcDFXCnfsKs+_7S;0;?x&dBQJgdCkFxrOG(XQo%!yx5MB?Wctlxs{ z(;u{YhZk}Yh9vv$tLBMV)?qF?XH;g{sK2R-#Gj&_AXVk(zsJhPD4uN4Z^A+a#O*mK z{>;_19p%SXwS-?Izb9}Pv!Poz`Z0s>>{#6tD_pqF&xg*j@QbX_;R#*@wn{_B(8z!t zBSW>a#X{ict7I7E7g?Dja1<6Wx=9w8ijm*h1*Ya*1Xh{$0{V8KSz_&V^fwJJapx>Q zU*e9O-^dbo^De|P+_17ec2}&C{Q6mRrgpZr;DtDb7_Rf9kVyDZIFb2Ns(^JW# zp>mnoa%0QP{sP6405&u{$DdDPo#b$xzigrLNc^e`jZ>}@&4BiRyO!|Bk%1Dswk`Qn j2Z<#DN-RG6Pk;dc7qtLDKEYXG00000NkvXXu0mjf%8oUu literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/dark/0.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/dark/0.png new file mode 100644 index 0000000000000000000000000000000000000000..13983c4580134d89c40b3b462ab41b50168aef49 GIT binary patch literal 1565 zcmbVMeNYr-7++BFBni|hzo6EIN|U|ay}ggUm6OB!$WssSAYf3#z1_XzguOlX7VkhN zO)myAM-xd&DUR_SHzsOwp7lX7LWuM+q#D#_)C)v~ZM@ zwXqaaR&tU}0f2E{S9YG5XI)0pJSV3@7`dPGNNfN|N%eaux`-7)JL`10bTwt@x)3fRFB3jEpsSCjrKPf5TSdjw#T(R3r`gPE#UQ*hJju8kP zg@{Eu=%G`2)=bdA3oNLTt6&<%l%Pf{$5fb-z>+})is1-~BNz^23KG?lm8vAG`5Xv^TrV z!y-1;%a;nYR1ZgDm@MV)*@i+u$s005a7jg>ij6#7%CT7dhi%NZhVu?5IKs zt8tWpl`1t2Q<%aID+w*Z&^YdJIMA@3r}52dLSZx*)6}Q|!!Q$0C@__2(IQNPs?)S8 zlP1iyxV<9frrEGSyGzcsu@SxGN;?Wu8m$^uDhWGG5ezP6K#373rB>mD0~+Hq z|2KJvlqWhTd?dAFX!~dmB;nB{v2JO61Zhs96UyELfJnW?n3nDD8>s6@@6^Xt z_C{8Muh$>?v3{bga$3N-VcMi)m!`HP#A?wgtZ;naltn&eYc)5Vnlk-Ek9Qs2lW_JsA8@F)ddlS`wLQfV z(COPBZ)u9c3f3$8K73avJN;(%baTZE`Bk}VWz9FEKdM2m{kx!#NSZx+QulyNj7M{8 z>tf=T9@w5WSeMjY^g&_!ZhFl~cVhpVORdAlD<7Bi@8VA*Cj-b(iM*nQhlcrIj=l>_e53LPZgMDMFu0K&X_U?L*HbyU~Z>g99_?{OA1N z_uuD2Pxt;<`&aD@!^H9jvPHUb^xfOGf__h*ym6T>8%eI09QG=th62o_EU%2&yo362 z5hH8(_!FF9m@h)R)Ju8`U54p70*Z8my5mzc!zA|9ePj+`!j^Hr?IyW5Qx7@TwvyZt zSda>S23PF^BLO}<(p@q~229=J_H?p|xmUeGTBUDriP7G;^I8hkkH5>)5ia7&XRi$gQ8ePVkq8!@7?H$;*g z^>iTw$1fBXiQTY~D4H^{j(iaalIS>5T=Uu?DdG=qEU6uqhJ7p+ap(;NCap(hOA}0U z_i00sBK5{N6xg&VXfW%ULk@OHKAYs|jbPc90XyWfu4ok=0Icz^&iu9&66Bh=Y1^i@8(8I&SR)f) zM7*Hnd4tU^=&5?d3#*>bW-{!y0y1qklD9`SS_nCd1N#KF_6459&L`Qhmv8`8fK>)6 z|@eQxqZ>XaCD%152kJfiIwZ5QW&3X7A3T{=Di zos&)1Zcoq|yOYnRO7&N>FH`N0q}5}uyQaQO^;|r*Tkl?VX?kVb`CrfWO)fife|$r0 z=D(Gj`74iJsAC&<-2di9I(F+~OG|6pYIg4#X4&7u@00LqY%Xzc`o|MfoN&&6x;61# z;kS3y*xdI&SDX#<%`3A%+*I$L zljAos6Y$x;V+Rk-O#iX|_32pS^3PxXS<}b7Sw1@2**Wtz`a$G#-Pv2|zO(-W;e>r= literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/dark/2.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/dark/2.png new file mode 100644 index 0000000000000000000000000000000000000000..895e68ba5da24c64e0d793b40d8379d2bb889269 GIT binary patch literal 1554 zcmbVMc~BE)6yF--5EP}NMJuE0GUB<}BiV%P5C};~lYt-&h@jPWvsuU%vYYNMBq9xr zS5YgDIFL%GWqM#st&TmERyy9ySk#Ueidb~SdbG78t+qb(XIqX)Kyh8G8iWwt+YgV>ym6xefR*{s?mq-ChV1P^y?`A-U zk1Azc4CPtz+P6#^04PMZphzlm=8!b+Q&SNgb3>QDD$l&WU8u2o2dK<$dHB zfxsaZsmurs2UXx=% zy$PNY(q*-c_>v_fftKr0k{kug+&$eo8~p z@A<#vA#zYiq*MOWIng7z9V6Svb071Ymv5> zcP*(*ZghTtDlBeu<^F2TmD{5$j(`5;>uAf~*)~&5%ri5=(Q9hs<42iIZw>yEuOTW&nEn0y0R2-9DvS#$LpL8Z)OFd;|NQ&7)Cq0(LI-M!+X}dGN9^Xhl>?{l z^xWE|X*hnp@SWUJJZXH3X4{*p@UE%ZmnW5_O@Dd9nAKtPdjqNrByF*?qc4=5vh`-Y zX+vj!!|Cl^o2@5INjazI)+}ouJNf#?&RJb8qXxO2VA>zECazZ=U77faZO@^7vvFe4 zj_xmN^5b?V9c)kR%WicwYl)=`PSmfPb043!$+oa4an;fp)xD3Fo>$>*Yb&YIAClo( zQ`3U0%aeD{uUE$HyEbX_$r3T8_|fL#v*BuAS8X*P>QQC4p84jq_r&C;@3z<-AyvYm zB|CNOo+bI=%7=qGuqfdw*Z$C@4m%h1%T2SRG?p#q6%%bKNu~#1t^ND^!YOrYe%7KUF1@wM~(5>)5%8&uJS286BNB?he)+sa>teKe)4J z8l3+2Nz!=t$Jnv&yEk>Z&!i~97tgfEUQ4&%+~U>lYcMM5$?} J-DQ4d)jy8(H7o!C literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/dark/3.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/dark/3.png new file mode 100644 index 0000000000000000000000000000000000000000..c81985ab135b15bef3f74dee16af89540c796dda GIT binary patch literal 1704 zcmbVNX;2eq7><-8GDsE0gAuz82wF%sn}ZxCLP$WP1R`{QApw$&$wC5nbd;i4 zI-pRoMLakvRwz^jR0^mC3knGBU{ye51hEv#q1IMg?FNbM58EHznceSuzwdqC^Lb~} zLqk^1bZ~W`P$)BHtE38YrIN3|y&d`8l~SBdE(?i3B@vEC6DHVzQN$>&!T^~Tj=>Zd zj3#Ys#)K5gTSiTUl2FQn1qiOC!xkO7S*s_}6pGN#tcQ^}i~v+vj7BG-j@Hyu0Szjm zZs5ona=ipoYgQ#2u<+!N2qZZU;iFW)6@btzAPs0S0tU?5c%4yT7Eved3dp_X7^DJ| zDny)!`YI@;JQR@N1`OcPIW&X;u>mfh4sjqh5Ap$+42T6XSRllrK}-RIFMv3})I%k` z8PI5fLK-yXiks35(l8%7QG@a4iYC(z_ z5ralgXmA~1u?Va11VTh5BYl;ERxg*oHmoyF6^bkwXomG5L}!3nttGEXZ6l$;{tn}f z+Qx_^Jq9W;Bc5PD$bLk-Tft=Q{@am7k&H&L)}SGq0>?{nBteVm2$@twC2#1c1{JVX z(JF|^;n7ePgH2<@5JKZ2EMFQ6Rq?qh9>!rrv#oaCglBR13^9i-@nr-^ASjTPM5D9F%Pc*5m9i8wXc93r$bf5s$s!9hZwP>oarr79pGjl!Au@TcFGf>w zV1<@etUTgD|-WN}a-^|F?J`85C$?%0HN6JtFC7*}k3wQg}T{n2sDD134$^z-)j* zvAHgjiX+T-h7bE?!eMhSJ#8(8t}4$aj-cE;+N!w@E(i97oc1pcJDxM269&=H|SbQ8&lM%Ns?_&DlR+7&MKFUed+uI=SUyTc;~x zp8fPbU{UHG{Vb=6jbdAI`%aUj6aFyYtAN_kI}Fs!$n#$@r!qgP&u?jtQ$KBD!r{v3 z(;Jc#?FEWc!I_muo6-2%$Q#`wiLePwUojME^M0CRJZ`e@r-R_FEp#@HR&s-l+WFdB2ot^aW z9A0zN$v00PE?k_uZ)EVvt;S~(pLyY2fBWeHf3W<#8xG|JdxGb@x5((Zn-rN>`@L>| zJy16nZQP)@9SeKD#ltzQz2rTIm0P<8^~mbts5UQ0G~CPXiNC0*j;-2$22D3X-54A=ga|!IoUt8Z>O$gk^L+jOSS5KRQt^<0W&k3M2 zHX+UBq(4Ae`D&e?K3Te7Z7c3g4lc_2w6NZ*ro14GmDf7F{`5Nj zkDRoduCr^R#Jy1+^9tw8INy*_HaxtorFt`z(LLkvR?o2W{yS3Ff4gkQZRzQvDB#kP zvrRv>d3%**RNDopv%83%#Jc`#7h>I-?_WD!cu=kA-tlx`*BX*cR%Z44HNQK}jN literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/dark/4.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/dark/4.png new file mode 100644 index 0000000000000000000000000000000000000000..5b155a1e9098e33a686404faf504e4d7c8b511f6 GIT binary patch literal 1419 zcmeAS@N?(olHy`uVBq!ia0vp^N8U}fi7AzZCsS=07?_JQLn2Bde0{8v^KDjP)EVYz|dIVz*yhVSl7_V%D~df&{P2mlz_GsrKDK}xwt{?0`hE?GD=Dctn~HE z%ggo3jrH=2()A53EiLs8jP#9+bb%^#i!1X=5-W7`ij`p|xTF>*7iAWdWaj57fJ{tG z$}cUkRRX#c;)UD-UthSvdBxCx0tT6WMPh-zp`L+$ZZ61QVAaJXL8%C5U{zflQdy9y zACy|0Us{w5jE^*Bm}X$u;kO8+5a=2!|DsG_q$K9J@Zb z(@ZT)ER1xG&C`-}O%hE_bQ2RzEp-zO4N_AqQ_PahQjB5dVAJnn>Sk!n#1&Z<`tJD<|U`X?9K$*4b^LbSFe?GQEFmIeo;t%ehw@Z z1Z3ow_?n2j=96!qwK*6V7}t5aIEGZ*dUM?{`;dbO`-hk-N7ytSEk);?ivL(}OKo+K@Je~{Vo(9g$(;{O!) zz2{EV2-NUYWKraB!Vk2cH`{96~lMJIbY zyAtn{t{G?3Hc})6ZBG+H8 z!}8^M(#8ixZtFTurfibsYnS6@%unk-o~SEwuxU%Ti;H85!xhO6uX`QU0+PEDXDvJJ z&{3&;Xo7K))!aN&Uuy$__)6uxPaZr?*8)SYrr+Lnf00?V-t=m#wI6=f`A={Ce&N%z zNx^yQLd^mU7nxj|!=02HbuQ@`Nxj-tC(-M6Ut*p&Kj*xO*JZvf&eYXf9^#z+?&;4W zUls4J|G{mE9rrD+07Al2F3_Hdhrwpa VJ=d1R$1Wt~$(69B|;@IwFq literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/dark/5dot.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/dark/5dot.png new file mode 100644 index 0000000000000000000000000000000000000000..a7c8c7c348a3b0fcacd4ce9db30bf96b8b08f7a9 GIT binary patch literal 1589 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 literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/dark/beta.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/dark/beta.png new file mode 100644 index 0000000000000000000000000000000000000000..84aab8f89f2729431b7f63386b037865117cb77e GIT binary patch literal 1735 zcmbVN3rrJt7_Z7iNkD7V3HUfpofv8FuB9#QC{X%P3}vNs*y&WRy(=xyUcDZrRECMD znM0%E13^)I4G2Exrc-oC3@|5-c8a1X#34SJ+98TV2)Ff#*G?De@na4-q1@hCD&3Zgn`OINt_|U2ptY2n9+1x zjiXrZvI}@LgE7Kp(r78IGEt-_%xu)F!*-ahG@8MPj&)d3eI`x;Iy~KE5ra=^YC*t+ ziNOUtC9JecaieLTlf+Y;NgBN~Q!m88*cc$%A)*bKaS8<-<}8a%>MteAk!g4C=^042jXy8vSg_+bA{u4~=(f z+cddW98%*pBAe9H^)O8Lf$7}6-;r05W+VEHG|@#tvt)!m+l*VN1eqA5Z`ha#6Y&IG zlnVyk}NX4gTRLcKZwWvZ}K3T6y)uce|3)Uh;B!(_;wEH z&D%-BE%f-1^qeRPb|MVM@P`R9iNq_$Br$#LT)s;P`*cUWa5 zBUybe^r>IomGLT7vMX-Pm~)}P%V7~lBPeGcJC?Z4{9}_M^HEdd%b1Dd558F%vMi<} zsHV28tmOF2FSfBnVMD4Cq(#lW+E0$R)LX6${RV zKohPtV(C~=S2D&KOm}L~oz4|gHM6jLBY{PI+o8OD>#9<#%iKXzLVs`@ zsiNk4v7T`IcenVR8-jOizMea~d-kNC>UGG{lWo2Cd+Qojoxgpg$-k%mTII#WxfC!~ zdt%|C9ptGzGraKmo)-@&XZw>EM~W`oDQK_DYD$B*yA-#Mr*SyL+O{n(YVbsSIrX}{ zN>jSNQQx-h8P>wBir)iw7AI{zee{Yby|#lmlv*t?Tx-qZS9lyZ*#Xb?xsR?@>?;gB zSv*JeynS>RDJ&_AW>yHc&JQl_xKW-4_eqNO+gJ^|KDWcyv!3U-EIpuJmeJdIsjm9f zlqcBLgO?wii3+RNdF*Y+yI)vN_Sf%po^6lqc(&NiIa0bheoso5c6W0+bDaD9?WYxM zcjd7%wDZw#TSiO1Ut~X6SXlT`*J5RJQbkJGti)F2K)7)4sHn=1%k4F<F zx8M_H6{5Q*E*~!V$}=q}_{KPQxz)JX-_JGFMIS6|41YZ#jj?zCmDBk%Hm&sjS`y?* KvcvIdEB^*3%9vOH literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/dark/copyright_2014.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/dark/copyright_2014.png new file mode 100644 index 0000000000000000000000000000000000000000..6c151700e85451ed69037ef3305a09d901f0c02f GIT binary patch literal 8323 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 literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/dark/copyright_2015.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/dark/copyright_2015.png new file mode 100644 index 0000000000000000000000000000000000000000..0a12707e43c8c74282bb399920236fc4fc23493e GIT binary patch literal 8318 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 literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/dark/synology.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/dark/synology.png new file mode 100644 index 0000000000000000000000000000000000000000..704aeb1beb5e39ffa4806099854ed3162fd4da20 GIT binary patch literal 7719 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 L>gTe~DWM4f*iSFe literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/icon_pw.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/icon_pw.png new file mode 100644 index 0000000000000000000000000000000000000000..acb35fd3fa80b2a7eb36c24b79a52b07abde83a6 GIT binary patch literal 3913 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 XTTqr8OLAwq00000NkvXXu0mjfUBaM` literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/icon_user.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/icon_user.png new file mode 100644 index 0000000000000000000000000000000000000000..70a4f7091b073608fa6f5222d8c64ff68aabb252 GIT binary patch literal 3730 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 literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/light/0.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/light/0.png new file mode 100644 index 0000000000000000000000000000000000000000..cc04df60a6e526124a348d6444887d0e9e1c59db GIT binary patch literal 834 zcmV-I1HJr-P)5{#GqwK% z$5sb*W{l7j?u8$O=so`C+;iuiVWeKKH+LOIVD6d>AtFSCh!7DXLPUrN5h21u8uR}Y zSOyP##`_FjgECss%d3by0#5-ovJ}V!zkFm@0rTJnIEBp1X+)kdKfpK81V4f8L*yoi zfZHGn-a_WN9}yCG4C~Hv>3ak)CKkruM^@FgZ7R+nZ~gwbh-$sr}JX5Xz>VV<+l=49%rFN(Vu}^lkS!{kNQnf2XoFwHB~!1JF;7+C)H}TmCen~ zPNh;AJm7+yjV10u-D-(MTHqu2CN6#9gxrSjp8U}fi7AzZCsS>JiXM2nIEGZ*dUMl}tI0v+SRwD(NRcBKmgR}JC&DiWTIj7%&X0tyZd427az zW|Q8EKcDmDYti>?50y;SsZVYR-{ZSDQNuSlyXWTVvdhoIvet?>J4^`@k36p@-|s(3 zB_(T*!zY{dDO_ojt|oUan$f>VIW^MnZb;?IcTVopm!H~{qw9UAcuo6jkJ#%Q&-WRa z0xg2r_+5XydA<6Ul%GlU-{lw!U^wOn?Xw0U|&IhyW2F0z`n2g`F=XNqUOmX25f( z&?_dir4z4*BxlbGkjEGOeXgRgTV-wvj9Ohpcu4Ei+q7O z-*Q8vD9RYa5i|)9gw62@I)-jQd+_`bU^GvVB^Yz}lr$l+u-}39R|(=Ylf1%m<~BD+ z$aR}R&D`(zjdVJF;<~*JrJ&cC`*-H)1)g29YXx<0RvZHBQjKcEE z*p4*H<#KpsIfC7Bk!?mQYR(+65{bl&mm|C{Ez;!!Do}pLcE=EU34L^e#N+WR!{LyX z34Jb)U~*RO?^BkWv<*iTW4{&5sD9|~XKS@u$X&g|9Ee8*F`<<)fH95p6g-O(Q+M8E z$y=}2C3=q^8bCaua?DornPNO9kCxtbgpJH8JW(qDfiHW-GvUQ zo{Zc8&1Q2mm&?h8LSd2WYti@W+{OsrV8?Wb67!oIqTB7pN~Myr0Kk;OsuGNEhjxwJ zrnx`RXf(D7LZxh1m)5gJqfvGkow&;J&u8-a{1#>T;W8k81CeD}@<_}G&V|vk0R9M# zVHlRj*4#k;+{1Wl&eHDRE!p-nPY_+#r<@vbN==Ov07t|xSxt|u9#dWU5Kt5@`+-;< zh0FX~B@{n7SN4;WPT}kSy+o4)5MTiOJl?(6+ETy(0000< KMNUMnLSTaO{b|(z literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/light/3.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/light/3.png new file mode 100644 index 0000000000000000000000000000000000000000..25e8a74075ea0e95592dac6fa8c15fb1fa05ea96 GIT binary patch literal 982 zcmV;{11bE8P)bhfp|cQr>)a-pre6rE0b6xe4a=+z=BW0z`la5CI}U1c(3;AY?wf zKS+}F0Lw!t(Eva1pbW;+ueSbpGbOZD1$`)rGXG;JEdd(%#ND;aU*gU+J_2Oh+Hlg4242|r=HX4bg{Fu z^T_n*jP_@K6mCSq;V}EqiM2wer>7M+5a;I{kIOwhJ(h zZ*Q;q`&qeMmUee{Wy+b73l`Pq^R;39X?n)Ww9?<-U$rY=R$f8QW;&g#E7LTst57KH zS&qAPd3m`wJUo2B%Mtd*-)xf1mC@~d>GmES9rXj^&@NeZlHI0HvAlG^!6J}_lGgr) zyz|rj^!HxFu?l6o;o$z*rvmtMEDH+@t%!zhjdaZ*gM)+8`uh6TRZ-&{Y03Qg$;nAM zkw~=ga!#uChZ?*^e06n|ZT!P+%CIVuWjRtT7PsKH@W18}2I2<<>p3s}=U`N&V`4K& z3z9$T>S$Q)Lm{W$=jP^)rlzKfrl`m?a2fFZ;Zm}K&~6e-;UDsD!w`$b6e`s-iVDlK z165Vq?W*QE=koH>T#`4*k*%z(Ji^j!Y7q=b$BXmJ7d>IeFbr!ykrhP=)pNzq&(CWV z5%b#aL5Fko;&CMG6I06DQVCl=w`#K4Y{$^hke*7V%pq)|NGJ~5fw?W{rV;VnMn*=orKP3v zg(k~DNP&%w4K}l?*D1_AZJA8wG5o0}-xn^lJok07*qoM6N<$ Ef=tid)&Kwi literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/light/4.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/light/4.png new file mode 100644 index 0000000000000000000000000000000000000000..485c56560964a2d0fcb993bb2e01503794a307a4 GIT binary patch literal 680 zcmV;Z0$2TsP)UO&!Wk_V* zBLwl87S}@bdcEypv6%04I&xF4S`Uo^A&s7yAWEf@G=9-;w^tXHd;f*g;z_bv}W^>av#4`{;e8puQI)_F& zh;q5SW*g!U5C!6likJ!F(l*3z`_oTX06C^`Oy4$29DJM52k1TYS`*d@6~I1poA~WJ zXdl{9=1*YzMt8Da7$Bz4t0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU#21!IgRCwC#na^t)K@`VbUE_~dV}%-Q zLv0(d&^9enuy`~`A>bvqQWz*S7n`dB{{6634V4<3Vi zKx8=&z-MZzO`~EWId%#(nn)E$3wG~w@DjWSyJjap>((U_vkHj0z&N-Co`Jhy!%VSm z#593-v9z$$(tE)K%T@3Syf&>}43fv-gg6FA6#4sL5_}zn2HOIM;0y6kIAT;4!ONOx zn$})hThlU`Ot%`(z;Cdps_Im$)e?H20K$z+mq;XRqE-2%Pjy5iyOaNnlf4{_{YBeihl-{k#9?jJt@H7{uZ*k>iqnCeRFfOSu7TN z6Shf9Vx?TO8W208!@x2BL9(#0VBw;r_W`8Ru47T7(Wth(yzE8f8r+st1$C-2BVyf- zf6{v)o6UNY$>b4tzupIsD;A4&&dVH3ZEbB$_BoebigY?1V0{v}4V(f0o&)3Y_#>8g zRtoXY+1XilKA-oS)oi!7x4o;Yt3DPP%uyfcXpIM1SgVmp!~xsj&d!c!Wo1S9yuY-x zWM|Jd8jXpWnVB0b74YurAU{mu%GG1WzS;c<`Ok-R_@d|dW_U=jC3O=bqe0cFQO6&6 uDDwZ6QcQ|TF)1d+q?i zGIJCmG+{N8T)7rrt*`&!{qQ+{`uyY9_i%1ZUY+{0Xl4t2+b|KD8g4Kf! zS8#$P#yP8T}y_l0g<_OvKn|XE%pC$-p8f5&i7c-KmmX*+~u`5Tc54m+pquZr%~_OK8j<; zN0A>|djgBz??>M-2-yAmVMpHnhWZ#@;3H|lcd|3(T5&tIKojCEpRQ^PUAV^{7Xp%a zbOt)c1lR${Qh_;?)^h$i&emS_#FS1?djTwnXY8zM zL`FxtQw(G+ZoR=@lj_VV@||nU;WC@eG$g(Pl(9*}gDnG-d#IfuvP3c!DsYRnZriz8Ao|Lt<|J@M%DGq%A zkgL%)jI2gIo632Kxm!Yay>CdAR)KlcY3Q9Qaw;9%9VTbQ3#uPBT&rYmOobR4-$ZGX zsF!QrMo#c|cKqad&L(AUp`PDfR7>6d?Mcz5p;usFV9bDtLD=A;GbD`Cs)v~Bmf4LheAF7((|;T!GV;hzQN3qm{hrxb#oM` zlvj0Qol~dmqu@ra z`1XLcT8RXh%7xX!S3~eOF(sy*$z0aK%1JvN8ozGwu;CmPU+Wv8Lw@Dk3$9wRK!<@( zv>qBQx!%3%OhJns>ifeMG8r-S3D0T0_Dk@-|1P+)8O5-Eq!th471?{NGy;0gL9*k7 zY;}5^ArJ^FuroGlW@d(wZ~fhz#**5zl26S#p+ETIdcKD!yM?n}M)d zkk0x>M)UUP*OeWEgD(5)vpt@V#c8W|OVxbdczb*A{d;hbe@xYyP#?lqv@1|TG_>dx zXP?&c{=N={w|yhoWO62_r=NIfVUy0wB^6imHjPF#bO^Jc$HG-rRc)dPJUVTq3TVId8p|v+~*JkQz*tC`rh|UD1|Jd7XFF*Y%E?P{s9njTJ zSQ7QQbR?#AwmT`py4fsO4>5enuuSrBF4EZ@{(5JMT-2I`CEUvK-hch|I>Jlu)Ye=6&i6IyL{2d%F8np&AQ8j|=Il`^wCw#Cic@ZLUhhSL22yMC*) z#2SLg^78V4ZQ{cD2f2wk@(bvkMptSy8jTh#kJlG>#ST3QXf|!Q%q==;IqcgUq{ng_ zHh?~AsTKU#-)^kja`AQn&yz6_hpU~4wcRH^qOB3Z3-lvRz?fQ4!RVXDmGEq>oh`b>`Bf=6#cCAlQ zN1b<+N|zl5mr&NHdC)nP{<5AECyM777*%}P-+uJUd%~T|uzY2=5;z8=Tih7*@S2h4 kf8AiNT?u5tR_F*|@xt;l@mTE6;n4$-2zSTkbLi{;2NrbS+5i9m literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/light/beta.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/light/beta.png new file mode 100644 index 0000000000000000000000000000000000000000..52c96e4fbdbbcf73a76be73824566cb9fc076c5c GIT binary patch literal 1162 zcmV;51aC@r>L;e#^f<7NzxmF zz2WGl`uh6x)z#In9DviCiIVS?yFFX5bO8j4*>1kW&uFYas>sIPW4ZqvE_ecE~wiF}jUa zD{~xToIB)gCy*{Em&fYX7dv|wtz)B$LbXtwYVi}G}rm;fx z=sIKqr&4gb2=EH);#{6>u?$PeWb&+bd;&tJO6L~FtC-IBUlsJ$)|PCDT`m*~rrlE_ zk!a$K6!H2sO_QwxQdLzXqo2Q9pk&gWF8kV_Bji?IGG@}bWQcloHZ(NknV+A}Q3e~& z@p65;U9&M=CNE{{p|D|7{X>I;gO7NE%c7=FOiZMfmX?k$8??2xRX1#^p}D!a%;e-` zmOGG#Ch=%o(@R{&)MzwX7trTi21*t|pYnI4@$vBhf44T!BA@HC5Rcs3+Z$M4UpGCe zSS$t%@yXe2*0j`#)n~j0ZL$T!Ch6rkFRRZUld&9wJ~OmdwmOgD;bG-38TgAq7p-<2 zv^jTN_p<|)gUTe)q@L2GelfY{YBH7FUewiQC`8LPGcz;e;p`B_@V(2;Fe7SpBSe#0 z=5C~P-PfuGUD;R&wB-RdH#dVk>v;-1RxXz>Y=*pX-AJvitz~#midg8Z>Iyp4)6>&U zpB)z8gB)>hDl#J1*4Cz^QWx51d1`7ZLcUMO%~m!;5d--%`O{694DM)Thb8q|UMi_0 zBO`7fE;Q~Ww1&LsktFdb{>{vyqv6S~YettiLsJ&Ij_T$q9vn34q5ad-)8*OO+1kG! z@Mh?<7*mK}3*3nE!X1rVZ_tjqj^*WLh2SXEul{t|byOa~sn)kN{b!PNU2o?{UDu_9 z{GFG5!sS?*D_%-<@q3l3w)y&IFPEY=&NoUt6+W;Lo3-}Np~Qu=jjFBxYDR-X1B8EN z0W?5E01eOp4FmuU&=5caG(bZD4bTuk12jNG01eO(Km#;DLjVoX5I_SoKtlix&=5f1 cNc|RI0Ac=9US=aiTL1t607*qoM6N<$f~Tt|;Q#;t literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/light/copyright_2014.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/light/copyright_2014.png new file mode 100644 index 0000000000000000000000000000000000000000..6c151700e85451ed69037ef3305a09d901f0c02f GIT binary patch literal 8323 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 literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/light/copyright_2015.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/light/copyright_2015.png new file mode 100644 index 0000000000000000000000000000000000000000..0a12707e43c8c74282bb399920236fc4fc23493e GIT binary patch literal 8318 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 literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/light/synology.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/light/synology.png new file mode 100644 index 0000000000000000000000000000000000000000..61da232c46a3a832f84dfa167d2a9883935a3d27 GIT binary patch literal 8469 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 N=?x1*vc7Z7{{UmYnB@Qf literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_cloudy.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_cloudy.png new file mode 100644 index 0000000000000000000000000000000000000000..a55e57e7c5841961dca95a10aa2bbcf9ed7c9802 GIT binary patch literal 23041 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 bi9#EY<-A{|)7C}!f>p7$aG+Ej^u6#u2SW26 literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_cold.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_cold.png new file mode 100644 index 0000000000000000000000000000000000000000..27a7d8b1dfe66c6f05f83cdf97bf00276c4c0af9 GIT binary patch literal 33681 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 n+*yT1X}QBoB)&DrRzXO_-TM)k7 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 i|F=iYkcu~^CxAgFYAH%O_3w19vhor3Ug zp7@>jS?f9Hk8|#|yn&f-?D*t$T{})oLxljB1{VT>5Ij&-d<=o0B;WnR#sr^)b%>6F zAJkq-`d&|5ZM=NVJ***eR<0J-um{fOw$_iW&8__1hpeR_5Hv@79epqTN9vN6uFkyX zch~UxIlFxp+$YNyGo~TuJcz-N$@z*gr1ua+HSub5Qz^ zv|tLZ9@a1sUJ)KkenA14m;|qYh_Hl!05?pKUqFaYfS*rLf=56=Qdmq=^)!Q<)g;$`l~ zZglz>@L#nY-}` z@bdFHJKxRgA6I*NJ+}T|!}zaPd+PYRS@S)%_H_03umt;I!~E}?!P@%T+ zhdtO7b0IPF#fU!R^x3qV;`{T*#V7z*5Y{ zLd?oS%tllI{;&J3{%;nJ4-AO!&O-iw7W40qfEnKX`akv${`emcvUUM(;{p6*oNM
31!@>~YCj|BG3n&Er?n(&s?h6#e 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 aB326p^sOf;tl{TFA#~3fYSrRxWB(tu0r*q^ literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_moon.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_moon.png new file mode 100644 index 0000000000000000000000000000000000000000..fce03fd79f9c5a348041ae4ba79500653aae3271 GIT binary patch literal 16586 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 literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_moon_clouds.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_moon_clouds.png new file mode 100644 index 0000000000000000000000000000000000000000..c7999b2572420ee80a22ee5f247b839cee42d93a GIT binary patch literal 28148 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 JtROf<{11^xu|xm> literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_rain.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_rain.png new file mode 100644 index 0000000000000000000000000000000000000000..e2efcfa32d0b9eb7a6759c36d457c8444bf86817 GIT binary patch literal 28152 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

@1f)z?5 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 ZK^!oxFw)A~kYKK*p`xQ)p?D|!e*t2VQ@{WK literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_sun.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_sun.png new file mode 100644 index 0000000000000000000000000000000000000000..e3a53804c12d09b8d6db92667675506498dd6274 GIT binary patch literal 21959 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%0AnCE=7zE;xkuPT7lBnjP@ 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 RkvIk*@O1TaS?83{1OUNHinRa$ literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_thunder.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_thunder.png new file mode 100644 index 0000000000000000000000000000000000000000..1048e454842e4b2a7e903564ad219aa5ba433aee GIT binary patch literal 27481 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 Ef9U)dGynhq literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_tornado.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/login/weather/login_icon_weather_tornado.png new file mode 100644 index 0000000000000000000000000000000000000000..7991621fd783527369c4b3a3981fb830736fb3c1 GIT binary patch literal 37188 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 literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_backup.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_backup.png new file mode 100644 index 0000000000000000000000000000000000000000..5ca546c49eafffbb73d1f11d509eb9b489d18704 GIT binary patch literal 5973 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 D70iYG literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_business.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_business.png new file mode 100644 index 0000000000000000000000000000000000000000..e2eaede308a9beceddc0270debe446905abaeec9 GIT binary patch literal 3767 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 literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_dsm_apps.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_dsm_apps.png new file mode 100644 index 0000000000000000000000000000000000000000..434ac2671e79ac2f87164d52f160c4871e7145f5 GIT binary patch literal 5446 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 literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_expansion.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_expansion.png new file mode 100644 index 0000000000000000000000000000000000000000..c13cd52971e40da72b8957b8a62f44d15ef6335b GIT binary patch literal 4339 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 literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_external_devices.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_external_devices.png new file mode 100644 index 0000000000000000000000000000000000000000..68e06d6ba8023cdef43719482845de3808247880 GIT binary patch literal 4126 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�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 literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_general.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_general.png new file mode 100644 index 0000000000000000000000000000000000000000..ff5e6bb195f24fc3caaec6b8e9277dd02ca4c976 GIT binary patch literal 8754 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 literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_groups.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_groups.png new file mode 100644 index 0000000000000000000000000000000000000000..db5cc80927ceebe040473d74e48574e1d6f73a9a GIT binary patch literal 7877 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 IM6N<$g4u;nTL1t6 literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_hot_spare.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_hot_spare.png new file mode 100644 index 0000000000000000000000000000000000000000..6e157d45eef52767da3e44fc3b791d69a2ea8cbd GIT binary patch literal 4823 zcmV;|5-9D7P)n0~UXK{F;NGE=N9(G<@p- zSJbwHPkicdtLKmY>?f_Bm!m6i`Jt=#%Rt^OWw1|5YBJ+F)&fb?T0N(gzVYV|-T%AN z6$qo~Xc&ddK@f@{kaNL+Qg|o(k~ldEADmUnK!2&f9QAs@NDmkYgp{*o03}2zC6ah3 z;^A<)QU{`5ADN(kkpVGd1_Uz@4})B37-Jv^Lz;aMCHi{~=od0cXeEL;slz~En1CDq zZMxhzqGs70!3#5gFe6RH5?kXcAZ=sxikx940UsnDkU}I$vXaEH1bLP5fN%I4Kf~{^ zO=H_54LP!o2u-SJL_92UlEmu@mK%Vq~G4((YA`ii5{sI_9PrydRtP{YzKW_Mt z-HDJT9u?Fl9^=BZ*QRGkoe1msrtvcp=;tdAcNCXg2_A>)45?5Ocj*P}Wc}0htxp-s0KTY<*R} z%pwEW53EFx7|$|~J{-d^m)eQ6KhaJHtYPx6A&7+IT%^X&C*J=|(qtrsv#V4yUny#e z^CAa4h&x9+Lec|CEQ1OB@fdMXxs>y=kwF^l8DxbG8Ta@zv2ixdy(k%m%NGS zPzPvUiTKbFj1HP2cUil*m2e&zOAPL(P|C!IhEU^?+IU-1_QSf{I0iA%%9RjV7}Pw2 z0W*LDM5^b(ED#?jDy4-G@=p!j-T~N^UVT zVmi|f`jQ|uQW%6wk$Cejcm+Ztz6VT%y~xvntZv8#adRUbpu`spphuL?LTRF`g&hs5 zjnN{-g_%d4WbYWXV?b7K;~H97;j@#(9t*G{y6(4XFaZ$_?=c|Rhy(1 zZK|;98f@=O2)Q<69r3$3!QSm?h=~?nHiJ>ka;j>qKx|{;CJZp~fT`l)2Y*zm$@F3) zC`QCeOMJ!QYgcC#F4h@4Ds$Qbj=&CG^?3?ZbWYaI1~`+7(4o(KAtOS@vo&e>p7)|r zHg)FAAR!r_NcUNhx=GMd-@-6~cEc*Ml-j+UCLfAik1#`5^$KY5Z|Lc4=juY78dCV! zcdkK4uAj)ufu@ruNx?&o84|KfKwA|9pfrbJ86SX|Shlkh5>oK&PkV2Oj-IbFJfnw}1AbR?q+U$A`KVp|>4*c)yU* z-JrGmgbc(yY_}1Jeo8$jbbRB<`#xE|Ur0o|j_Rnttiv9LRrA4s!d%mEpNt39`-Rlf z-euk2Eky4OK}^UQs|n0L5HIv_Tgbs?^?o6}vBf5E?}u;5*zsA zOohfxLScVhL;wy^-yqy{w%eq0qZ=?F6%ZV63$gPCq6IJlp{C;3vbgl1TclSeRcCao zCjGL6mMA|bBuaBJc~B={#%Tq1Hbk)Vx{$*y`iw4^ecjtd@0(#2jBX)QI;g+GTC{sd zRt0rZgKVoI%{&s1tAOYsSOKXW5|3?kQZHe4DwDfJ4JH9lNpa>8`j`PC6hFi7uuX>! zaDHCM`>#Ir_BQz&nR(v+tvcwxI;1RUpT&9U%OlP->Of*5+|n<|TMyRtnl+ zTY3hb^)Kuj#}F#bhn7r!8I0;Ij4Jj=?9BNy@cMsJJAeiZy+$O|&tR}eNep6JXhUv6 zjv>P_oH%j5XpEkTM9BE$;|y%SmUfOJ!Xo7Bh~%BU5}h$*EEr_64jBe`1x2VQMWOL! zGfD}|s^XmN?gqE$iUH zm*m)?vqzz1O@9{<+sjVU z1VMkTEoWIqc$hg%~)#<(-9F zZhE)BkYP?b1DB17Dd3mp2NM2%q2X=k7SHaT|D+h%#0L$1A;}Ke@ayN4?iUImwrz-2 z6>ytgIB~siyja>UD$2=g8y;54;Ks@3O3$tX`aHXCIH6tE8OGhZ=K`4xn0AbHFW4oJ z8`NudjYT}Dp3#xaLOq>F*E}>Ziw>L&dE#>RCm{`yG%-lz~nDlPG@>zA|o?lbN-EF zC>5dI*REwm$fRC`aXLu;aO#}H|$~) z12DG2e{uJU7Ip1_ru{;uV~C<4PDK}iLPni*C?Ez#N8f@H0^(=ne)Q89jmD@}?-v3w zISkR%128+wZmH4ygCc3&=*83IewE}9)`M4|=@q0c=jBQ}f}&fVZ}oh9=X=_|9a`)c zn&}m#$T^vN+ja%pjvM5Bu^;Ydb}bKBU7Q52elfj#ig=9B`O z-O%60v|)5}iXy$aP~rsx^UeS$&(yNjlk~lC<`z1zU|_+(f`PeXV0FUp<|e40>b0-~ z3kEvADl>B!r(S&V#ebRwagRU#_=gT2JosQMC9V^wPxBg$ktfNGzEl?KbpTpAk3btE zccBBDGhBep);e$saJ`j?1~p`Gb%yd^IrhR5&z&KQ8ae|B=yJ&P|cr+NhYP}r0^ie+nZ<*SL!86R$^O^%)ebdGTj)m%V_Gb9+~E9 zK*@T-^~n6+6Z49$Ypyoe6+Cz5^Vk9kbZ9VD1xhmIyv(865gpxc4xsD?AUZod-j*{O zQl+1PD{)~NK;lUuxn4(;lkYpJ#Z*0jV!SqGEU2Iwm-Dj408QBoC2Wn3xe_7Y=ooQQ znL~$Fpt5=~t%$6Z$)7^oiF81e)g#OK+ZB@XYcUDG2#Kvnrl?JbZSj-?|0j$kc0zaY zbKJBZnOZsj1MhY}PdxGL^G^1uj9tM%^sG4!UD~QzsK^(5F#QF`(|`W^0r+f+^~hjg zpLo2?IqHKHd0ag*J+9=e;Mf+Q8H}90j(sQgto2Uok$GY=dTni)GlO_`sT`L%+{K>( zQI zHb6;2A?a<6%pMl6Edt@^k39Ai{Y#-NpLQQiqnMOnXv2YQ=xIw_n6ekfPEc`8k(O|A zj|Z+C0M{Io=>hVt))^lb-=>&U5sXS+0W5}tOCNbPF)Z%T9aG=+*F6gBi&?1giO`9G^hz}K{eaASF~Ze^~h|k z;Sp!f5N~HS|8yJ4OxUtUzOkA#=x<(+tY8qFO)J-V1o(>VYLZQ-9+{Y|UYLDW;xdqnk(t$Rl_neA2!DMQx_9^Wgm^Q z2brvdh0q`jJ53mOmR3pagegr#<*t3v%9OT~jk0qS*@4jq$_8}5i?+2TNo>MwJuCF_9je`WjtTVBksbFyuXlw^I}MiWGQXs3{X8Xr5=D4SPneP8jNIsjh?TD1vg?^cNGk%C)J^kURl!I;3wNtGq>&Lo}*o+Zh05)rIQj4|j5 z2_CAjyq(y=8W$`}ckQ z_4luP`*W01;t%=dv`WA~-1JG?m2e#Mll`IMWyjJF{qytBe!ZpfQ>}8qbzMT71?X95 zy&&UK{QF|i(1TxR%*P4D{&cIE#Eb0dVi_iuf*98$SbKi9x zB1+hKP=@VNDxL+Uq)<}kq?E&G>z@7Ax@~8bfSYewG}HCGm1w=L>j}^EgzLG2eg+{- z01;CzK2j4P>FEpUOX2&z`Ptuzwru^k*1d8@2>{2Z0qi3HKA1|SglC(VVo@R@>@4s) zuxmkC&TH-ycyJyBl!RZ>t%L?5HiD>oF(YrZoq(G^ac3XEZ}8ITu2d>5QfV}RcbWSh z6JUW`@RcH@B8>=;K69VJmx@I^i^4A!M?u7b^-r(e-ZldM@zzf-_EPDgbUN*&G8TN= zh>jK;#wD#DoZ`}NfAfjeEfetZ+wK|y;JeeA zjG#u~JqzA&U0AMHs7!8B9>jAA+8(?;37_i&!9)1?L?YRIhKcYE5ye7*8-8B(%u{QY zHcbG)FHU7Lk7XEqhe#0tR&44355cpn?*Oomg3CGjHxI~*-tESM{|VMi7cX|22{Rik zPE0^v6o`mIVF`#>otOZC?*rhMG94XWrVM3h&t8aondDtyioQ6M7nc^^Mt2O_q|CgA2ze0o|slir=_=)5dXxYI zeiQ&E7xUm|vB2*U1zyVI{?Km^W_2Gi#WAADSkQc^R=-$cF#-W-W241F@v8MtKk-H^ zOPorl9>XAA>5fbpcp7Njm(ef~9Y2s~BB12+3`m*c#jfo~N=VEo1Tu6%&^-D_+OByP z$1V`}82))fl_yXoI=6pj5K}uqGM`Row4RR(zD#AxDG-P5K-crrH(IAe2CR?Qg$kUb zP%JPOjY(q@23~)_MA*h90P67p`jXZ*dcleYA~Oypk4OBWs6%%#+Wn37qr+np2ExLa zfUO|`x7_~Oete-vTi0@~s|rI@uW6mH0pR<60I?f=(Q^`>7o*(<@!1DOFoo5qu@F`L zL}$YgLf8mn-8Fy(c87Hltg3X9a-W?!Jt%QbNkv}i%PzDFbwzTojiDZ+(q}5~%3%!3 z&IFndjQG{IDlPQ!+dh-+$aWs-=*(s_ot=TcPb@j*YBX>WBopAU8fI4{la9TfJh#XC^G;0J4}c@mg6>}qwKxKq-^(JzL5uct_;ak{x$i-{R+7xB zqm=^B8ey$k#Q4SZz$H#7^RQX#q1V?(gA@iXwNWD;YWe5k=FvFxy(D7lL_~?ORuSO1 z&Q!u2EP6B55ROWR?@@nb(xZ>(?_QRQ2!wxth zr7>r~iO8oLdZ@cpB-)~Z+1p`_Bj#Bp;Uu&%Wg%)r$lb^XPKqXsRL;g~0@W&nfz7OgAE)N1V#kxj=Tmvh*1NLgO-XPiDF!YT9rRZ~Wi zuvX0g-u_k6g%u6rbv!I6=or;5u!S_LGB>A?*rucZ&Ro~%_7&_zXl{+8&7;S zhmMEY{3o0NlcX}@<45G*HRj)KS^k;(I=4DZSZf9}0P&PGzDpb~m1Wr^rv;?G4B>#p>I#Z`-V9?b; zO9A~ZME{qeJ)DRLWs|~kKVfVb6GM(4WKPBiA0<0-oTS~Tb3cBtfUU!cc^JT_3;5l9 z1SMNI|5+;a1`c2BaeT%$ZcxAOv47u)!L~``%QT)=sX_R1mv!8<^QMfkay)$MZT#+9 z5IJlz(GQ{T-neTm;+AY9Y_ak}801dq>{l`UliUVwuND`c+TWNdE|WYE>Er$RoYW$M zJvD$K?{nSwmfm=~#|Tr+9im!qg3>qeg#{SguPdu|ze{rPGF2OzaPLb*_X4zN4dOH3 zjRrGL9Jc`&2n%6~O#r=~82a)y1msI;+8fHM&X=#i&t6n0wBh8>OhH?Vw>Dr=XQHZ9 zHA>e|c2DmcEF&y+_vji;;hL|0X*I}SCAH6AEUqZk=3!;~W&c6tjw;#{7 zcpgF|wun;lDU%xEoKpjPV8xNf28LBFZ*bgo&%Z3jz(X!uBPU42@*pPvNl92vpOk!_ z6(Y>@Oa>ydqr*8T*R7dKvHlLZCD2$)*L>xn);BmpBJS@8ho1w7yPSwSEVX(o%l`;N z0Of!vk)?^y@q>TQUizfo|0;hL{}Db~(qqD{U}Fa6v!fLRF!1;fFUTDfEzhOO3n?nizT^UpHSP`EI z|9<=Hx1U=Pf`t;wakEhHv(TVcT|O^_XW4ln2tF@jJV(%WqU~^$Jh$hC-hJn@{lZNx zQeJ8R&#d6|p+^K!Izp74_Mjl2cO`v_UC~N82QdPk>wdTPrn9R?-+kwEGliF4sZyC< z;bq|Gr!f<0{R9!pO&J25h-(T0WQoB$ei1=O(L4*nDHV3&-^+ftcHx;dWZ?KT0DeTJ zItI~%NOuZF4Mb=H06YNiin1wS?n~l4fR_vb0ACyv0?jGqsci&7_hLrc?@CO*YeSz% zWj3gEwhK+D%mfXd2yqQ~0?lINmbu(vMont*q1hlJWKjbr0t%<`%uyQ^rNV+EYZkQc zywK#kHZBI}A=NR#Q5(;qt-I5cKl|Mw0KQvwoF`<*yTJJ@L?>&+hJc%$#=T@)Znn1Mo0xcL(x;uI0I>d4pTH-BCT;1`4Ak1_C00)L+7JjpxD zdL?jCCMp26104P+IGkhc!!aN)_HNAHPtZpfiyS2mq*)g%P5?i4LK9LrwFE>YKQGkv z+3)rN@Jq7ue2>9*OoY5!@LnBbC4$AOWjpslh{K3e%CXGzNF;V7f|&{TKrC0X2wJa| zW`l?*fr$J`O~lx7A4FU?`nCD-&kJ?kwQ(9mX1D4*ze{#b(%`MOsmJvQ0S?P_Zqyk& zKG})`0b_c>1W7a5d47-ToVbq_g4J9~X9TTwA|l+eV<6=CDEhc+bj@JA^FrwKF_oFv z#iG-3UI^ZG$4Q2m1xw;n%KNNYNS2A4B;ynpU?$kfqnS)YgK@tpyH!do#Y|;_wM6^P zu9RKy0^^+*>RSB5AQtKXbDcPqN&r5p^QAw&=gB(8_Ap}O=G-)ME`Lv>2W+W=0HuP2RbjL?yujY&|}hx zu5_oyLYRQ9ApsXI+1!r>*29Yot_^DpQj_$t5W_gl(VurxBqn{z>)Z`vhiAtmaP(q4 zZ-dzEQ*L^SqR$93vz7heeIA=I0E@Og6M6_^-8Fy#?ofey5Y;xxwn5n+g0_(u)RjJ; z7ZP4kuK`$YURPvK*m`>n`(g~FsR&aEt=L)nywC-UU&zYr1xMtBuB^(QFIYR!7ezt> zwDHnTn$hVl43ySFu4W9oB5{?2Vr$KAM(((9Pmku@+|kKLSAVShybz{p7N$1K+5uCm ztk{Sq_OtjnK+0&E2|^N=i73ZtADRVL$zJGgHyB45k#yMW1xCVJdE5q^>D3*ljYsLk zhAUJUZE2rhjlj=2$ia&c2O&};;Qk&K2``OxkUqq2NYwEgS1eO{_B6)cS_Je+<08;5 zrHVs*B8~Lj+;OOjMs2LdVl>G^MOo zXgGw5`Y`KZeb=+GGJ%Q>UIJZDa_)7|cjoDFjP;F424musji<3zX(88}8u;=F&I_3c z>vAlzwJ=cKci zCuUDf`g8P5UA!FeI&gob6@ z3E+b?CXn~^&r0mFaW6S_dT)$060H|!p0I{d#2+WXry86W0+&vPzi<*5Ems4y(V627 zN8M`8IpP}3sh1gG&(nIJiEK;+8)L0p#B^RrBs(v}+$GM#gOpg5uH*R-!C~H~xA`m5 zHu#KmQ+<&CED<0BMUnhej1YCs3*p_!d7+pc+XWvsJ}*?J!CbTOy!3#wnG2_x1Le{9 zy2g1ShcahnDZqrCleqY$O%!=KGNNU)+VcQ@uCl(rn^b&4?w4bYijeeo2@3n@2ml8d zamC2SzeOLh?FbB>b9I%i|XvFt7w zvfpYWre{Ed_h@ksa0ZVTZt-dr^pqsr=!L_Nn$=HN}Qb9$YCQ}V4uar zXrJled=LGMc|E4jSKI#MomNriWQ)*Au&3%qWVwfDVg`!)+4+ijUPwD_#l7G@IdsNx zvl@ua{vdmulwz0uLbS^;OAjX!Rn|N_&VI(&C?N+R2OQvT!byE&KTAg~q;o1&P8o(j+`}mmR%&eMb`mEIuSU`E86XPF@J1;GOWf zUxoFVq(q%XM~q{+q#RJ`H!ME%b3_3+Qu)dU=Zgj294zv9X_@P!2s3BSxJ)lh4!g;Z&(6KF3L?8sQXZQ_GLVb2Tk0yp+xoYYK6|`HXg3UfBG;%^sL0gM8u>smB6YS_X4f3nj8zA*u z99u?Mnoh5$A2={1GugWpO?%V@FbQ0@a7uW&cZ8cewjDn|i1%K>;FNW~6hH?N2izjl zomtut(a9;ZF;dxI6g=zuBKpp)Dn9su=F{r|5ubm3u}pOg!I$xZ$jEAjqR!`gV<+?m z1=#}XQ(IsLt3gwyFB@hgYJs;gHpB+nYH9I{m$dJ^5N4tuoO}+Jwae&ry#`2qQu@4b zT4)tn&@Qi|6H+pzx1qvhS-S3qh_)%EQS`GAoNxbmq4dALHVq;{yOZ;j6CuKE*l{u| zY6r|Lm`x464OPkcFtb6-*o3%xS@GZg;>?~GN6 zcJNt)1>3JXA$rS74}Re6o)_{y|9U^TyGXh2T!74!an^#a*zj|L4L?U^!-04@t6n|*$dS;OYwOj_hLcMvVCF&A4?u~`04LpuKUH4#V`Hkxjif4=8lq9 zIf=FfnrBOpF04!$+P$;LuB2Y@;@lG8oqk6zP`m9K$b9)x11BJWT#k|@ZeJ9!uilJH_yA=-NyZvYz z&`zu5uhZtc{b!v3d}k)wk5&6#)Yr^2P5?eT&2a5Zy{PYLXM_NJt`F^qI`c0Yqpz(5 z;4_QSO6u&rXspF;AppN0Y6Z#I*x3IJ4-emd@;ZdR zvt|<7^aBSDtVkeEeTfJ#+NPxiOB_a5e`>9L#orfXo_zAj>k}^QX|)KbmzAKiIbAKf zDHNK$rD|{pZxy<`yN@O4tIJ>--rly5iD-@b+f7~iJduYE=#Od{ZDx1k+vp}+n{1U#pH|6kA5bf@tom-vWrjennC zv^z5ym~)j{Xx1M9_-O1=mE7%Z*9iH1{#Qqj9^H26(4jTEckjOU>8GEb4~}(HTfThx zN7^t%Z&gqa!*egd-i-~|Ni~I`qZaBb)eB_Z@u-_*{z}{thKTd)0^$^ z%{SkC@#?Fu{$4aYU)jj7GYjuSZJ2@SRY5&G#CKfRy`Y)iPMkRLqjWm`-)Pf4&-*#v zTGGIx{;%nmT4ipS->;h2JTSc{=PcDyBY1-?^-U3R7nt92!y zw|~&8jX!?;I3=vkuj7F}-Y#E)uvWzbr%s(Z&?;wOxG2wms#XpdgMF-Bav#MS5b)Mp zZ@tp0_&opo^P81Ywf@HT8p!{9+C@MaRx3jD=g)sH7Dujy0Dd>RxuA~ttZ0|`5JtjU z%bh;&$dMykn(df^bh7NV2!N4%t!-H^U?i-yV&c<#_wM~pv(vhH^X3;Qmak>@VRSxd z)ZYnm^jZ-ggYk5|nD|d}x!l2|T)}rJWqx5D@wv}TePQd?t#?eGJoy7y>}#9hK4Bw_ zjj|HQfA+JVtxn37U;p~oTgfG=V|{NR)4zTD_QkVj&)xwarT`+YY=-*=+wt*sSl&na zJW=HS^2;~X;l2m1z4+|2&)$fB|D0sE*#&KE%=_Xbw%$cKOf0!;GlS&3wF@})MSU9J@2@BG?bs(y8?`vYiWNCmr?Y0{(_9UUF->Fn&B5&gp0 z*w`=N$h~>&*s)){{`%{$tXQ#P&kuk2!_$#`CxwY)XZx(g1heNwe-_ou-;~fF^BgPl zF3-hb4@cj@pEa$+Wc)fRQ>GM;n&rMtDX4kAEoLPeE zkvYz#kcx}3Br47e(dA%*E(seERF6!k9ZIU)jq_SdR<}gJh8MQ=J3&1%C+k*J!YaEP zrtAV#z9@|AkwKrXTkx^|vwQ4v!{#5%1n8Bn=k|JTSc}YF5EfiV7*RJOxF9UJqgU4? z)6boFZ`p#me|u&RzJlY^0QM2jOAQ8XF5`j=y3%Hz0^-fiA=@MQV~2OQ5N^bnx%~w)Nxp z8((~R2!QX-aP62(73ZDEeTtQUO{=a)<~T#P2tp+J70yJFDq->UpQ{FM_?zbc0OC6@ zZePrWr2ssWiIg|8A|phDdSomnx*nPIb9|w^(08$8=DNXvpFo2Jcb5htW$rF5m?Bh| zjU|77Ltpayg~0i~bUOV~Cez_@HMj`)hS$wTZt13aWZ>vXw2+P$)>pbGr7J6zeb*9E zv^U8X@;-jP4l@z|ejzN_X#l)C-I3|aa8;~yS!JMD^~g%4Q2>}+ATB~22$*9EL{Wd3 z(VkQ$z0X!uj9%$!EB_RECi0?~FO1^ntFW+R)+0;ldSsb&CK32x3n;ud*A@w6y-yCS z-HUcj*$Xdn2el=F-jDpLIT@1p^~fOigOK|HQ+6&a=@k=vL`_aX>t;ixuiXzgYwn@$ zt5xs7ju9>8rCVx%u#HOqIP^f}4aIT6*LYRcBQvjt^~eGuOx>oGB?Q4un1xP-Lw0jrGP(xcb-5lH{=E;sn^I<_>(wK399u++>yZ)0x@!Pt z>JF|W#++}yUWRM@A?gQi1K%$s&7W@RGIdro8{Z;g{VJt2CeluXQPjF$2=bN9baWi) z==k!AIDWe6b*Vd?M|aBIoO>yK1%Azu*rv9VkspPvldP@^7MDwVZ$ z!dfZz5qP9#@e`-H8lvel03M^xN4Oq5YeTYbsZ@Qx5EVy`icI13)Q>ieO%d$E-u&BBU8qG(0{4Q zy4>T^F7xydPE(q#Rvoj*{X)*k#4;&_t@LAS<c5+ zO#Ev&W9pGr6jak(@6)B=Td2p>s2&;J*`u1MM;4u4ymURX=v6wVYdOTUANDnK5+Vwd;`y)ihf;fbo4zfG#Ly6$5jfs-#?G zi-)u_1DeM*>XBj4?Nkh0dS2E^pra!-IJh2}G}rP=u199;Za4!`t~V?HrWzKdB&+Wi zntNSuPEtLxgo`*#6^7iG(Z%aV3aYhIk1Vu1!-TbFK!d>()gv>G8*`iLkx5exE?SR| z%s!R?`&ka(FVtc^GGMG5kqz`+t?Q8`?cA4pAvTAlsRXKoso?3d{vR|Pr;WgcXvyo5 zg(9?{FgA>dgL-5^b*lz-!btYD{BJCo1g(q$(}m&agi67;^~j2mdSr2Gk(K9A$G>0b z`o61mJu)d{OsnZ!`e8jX`#mk|9u;}udSucc)){F3ArRdg^;Bbdyud`*V&#Q`dSs3> zsgdE)S48M~WSUd<&fI)LlGY;wrEmD9V&i&bp~FM} zPc5sj5!sQkbt<_YnTXUQi;>L^>yZ@~5T@7!&}+`DncJu$RT!W&Tn}82tQ>z(9lER@ znd^po2#w_4CI*0E8DXg#BQ%n|*&n`YHKuNrG#9>9%|yh~LgZd@Ja?AoxmizF0qw_o zYwhLI zSDw53g}(n^KP3^FNY&v0dKQT3al)%fqAvtY;;_=b)(+;nlqawM$X~ZKejDnMNt?+@hFtX{~=)l*DucX-jFlqzNlYD@!ULp-n*88Y~h+ zc!&^JF@&06O$mv*AtrnXLKa)ze%!Aa&zYHf-|K$8``(@V?kjz_xp}X-I1vP zw&QGe3I$@@HUUAj0FBQ83IL3gAP9(0z0H{m0L*t4ibeQz2+jgcX#;|D!kv&X&&U6E zWp2clWx*`q=sWVeoPiW3AZH+CdM1MGy%4Gm1ICeg%eIYq6V5G3JM)DMypO)AIadg@ zBDzgkiD??oxd_2V$=MC~4XLj}>#vC`q9urE&J47{Tw8!NHXy_qw;3B~oL>EIRJsgm zekjqEHsFiqq0xcwZRrP;ISf8|HP!wSK^v~VPN7JO9Ua6e7UW873Q7Z*gH_lkzUvWp zc9!^_O9DTTKUa7OXNkWAsCDPj#~&VFQiWi39fK9ITj3lvD)+bMJ-+N2hX1;Ejk5L)9O5jk)ZHlSDI zNB{=?a_&?F2)RV7lzNjjjTmNN&~cm>?1IzDVARzzPo>(+QPMGhX()jmMBq>etFpLZ zybvPuvIILLQKpR6+euhVI%1wsC+-*JM`z=PqbO#mFH9H@E%bp1VekWhJ(4-@O*}aSS}g z3Yvis6@v{Y!!X=9I63qO&a{g=w*tht z4~)A|k8xKSs|NzyIy$oV!KS4a=UzYl*{*)@P{)!Q_Zh|-1RG$~$8!y6VCu(}aR(=B z8Fv*lIEihrZSD~n!e4LJod9O81tTnh3nY<&pP}z)sPH>{2A{@L6nwZJQoa&b?qnW21!6&=F!tIQENR+}pt(uF|S=0*rMe z^n;QQ&w~)e_q~QviN*y$CSo-a3Nu+eELm1qiXt|pKIkq3$v6s)?Qm9d7a-PmUQrb* zs6g)soP|<_6yumq2e@NoAxtem#Druhs2HmXe6#>Up-Ubac$IzRE&u}5II4=ELCEEd zP|6ofn<&AAk>tj_h3q>6oBDy7d!Un5w9YJU%n*$dB(y4{T8W|S8~8XYaU6IZ`pwZJ zHL?;4GIz6#LdO&V&MHvBBv}b3#LNJuQKGB_p?Psm;;aOEG4NhtO&fsG-vZd?Fa*}! zCf-6Cf!mDZAifK;u*Eo-`_WJDNY(yZgAeM7>d7;m2{Z#>$=sRJ>+XPsnhos!CqJR#68xY_TSaSD%@Zk5e-7iG!;vQia zZ^w}r%*MQUTA)KH4|*Wl*+Bz0`~5m42vv%g({czo zUZOnQIr;F-OK0W)q>aG}+bt01%e*I*j3RIo&T_f>3ThG48%HHgOZB1R4ET-$pk8qR ze4)RZgkJ5;9AKPDUid_}usc++LL=g~V&3VH-;HiNLt03mbP!AjQ@~pUx7YyClcOK{ zfLLb<^QLO=7vffNkUPs?06{tx?qOQ*wIDbfk?ELxTTd_-i!?0}jbwi1n-JgdJrutxnN;C{&kCE2%AT6Ycw6Tv&vCzz2U{G#(J@IEpVZ>mC59Mpr z`u7WQ*%oO?T0m3M&N?$!eHHgjYz4cxPcWxYmvKkN%6$(;{#JKaZ+`oQihKUq&z<5i z!kiT%Nnjr7JNGA|V5Y>}DQHthXsi;t zxeE}uQootpg%V2iC>*~8-l-%kMPBPYFg&do2cZ$)17v6c0k{e}sP^qrfY4KU(2N=x_C12JRiy4exuR#JUPQcWNa(1AS0#cH zPq7MjI6qEAF!a%p!5Uc!dx5NkfxK0!)+#HpiYCcQKtLaIOrPL8u;?XTj{Al5OF-#z znLk~7zYvW67GVA`cb0X_H<2{&b0ZM7`ncl0D|ldjzmUE2WUBVT@E7y-LNKj4&ro~6 zP+Nd=TL8O~Aa2arr?sK9{hoU&1d&^P(le9Q@+LR#lgUc$+7{lTSXmgL6LJ zYRn@~$Xk+t=5q%R9{i^3y8jj}av?9s6Y@5X?*#=XOe zJXnjWevP0WeJjSOE1!AhnZY0k{+BuD&eQ(}nPwhoYGb`j_eD$#fET`!yySulF1P{=>`{Zp`Y6)W z#_A+o)EW{XGHyKad*z7}CwAc(L5(twZIOmnnI2Ndd)G7qM3*$~r=EK1=0=Pg+hE%& zV{I&>nDT^;Ps4pV8s5yz%s-MckI!mjyiV52D7kT_cc>eu4&!_6w+~MgJ!k8kT)(Z>e zlLQqFNSH_GtlfAX!LsG*t4nH-?ZU|d`K|&MRCCm+t|q1+ zI$)JFs~(x9t20FPI8q`^UA96HtAR6k>lPrYMaC?1HTmSga4uk0Xttwg3 z2sPG7hne~G=AAEe7T02GgSoZ<25f+2U<0ISHb7~H=L;FAM>ck>R8^0RYRJrF(M!iE zkYYzse&T9uwjP-}8Q-0C_0j&Ju16MmDOHbbN*CS&Vll91$USL>UYRiu6u^KO| zsnIR=A^Bh+KvZl*sCr~P6TuW)s7iC3iwauh zp{x)W&>%rQGRso+$Q--V()GxqWj-4DEUH3BG^vAy)U5chc~yKiz$4Vl@IBf2LZ$J) zUI{`x4YSc(4cMyHCW~533q)#>eN6bif8+K2*Cab%2pHCWh~ozWSnD(qmAFV?#pJ+7ea!~sz;WT`MROR+Uu@{ z4ub6JkpXS&BU3E2cJE6^c4j04yLFj^H!+tg1)mr53<8phA_9 zkc-gfVo2Cnk4$Wbz)002<5-UjnU|#-WjQZdm#h`)k;%-m-ul2R>Qb_8t5jVLD+odz zb@{TaS0L+=wZQ2%Qs0Tj?NL242sZp|Rnm?Gx|XFX>(vVN$mHQIgoJ|YqH2|N zIaZd|DikkVlKDvGNK4cs(~*=u%10GXQ-V=WVu(1t#%q)i=G>S&8E?2tz*@_*Si~gawe<>Sl2%uY9XvMXCk{zY1J& zlB|RiI*u*tkxBJv0Rf__ioPGzK3~YP*cM>^FnE%dsYgatf-9SPWY7Nbc&hd{tXY+> p7c#M$8udbF+jZ8zANaoj0|1!5#dY8~T>$_9002ovPDHLkV1g=n*J}U( literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_iscsi_lun.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_iscsi_lun.png new file mode 100644 index 0000000000000000000000000000000000000000..8698a8336ede41dff7d9b58fd97bd3662483feba GIT binary patch literal 7993 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 literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_media_library.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_media_library.png new file mode 100644 index 0000000000000000000000000000000000000000..7e1477f6053ecc85befedc68a07c485d14b56fde GIT binary patch literal 10244 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 KMNUMnLSTZ17&n3d literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_network.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_network.png new file mode 100644 index 0000000000000000000000000000000000000000..4914a1a4b9a9e5e0c47bddd24ecfb60fdc334229 GIT binary patch literal 5374 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 literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_networkmap.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_networkmap.png new file mode 100644 index 0000000000000000000000000000000000000000..85b699ccef297774e5074a21998f45d2099ce54a GIT binary patch literal 5660 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 S>Z@D;0000A7X3rUy@P zy63&BSMPi8RdqcH0OBkkN}TcI%rg+5^Z}23V(U~1CXu&N52FnH+9$U+rIJresrpjV z71^u>lHO^N&V&P)+hE{2o_CFbl7T3W2T>fYD-{W)WMc+SvF!yBY>e*fTn~)SFA8Bw z26`*K^*Bk8kpvk~LdxZ0fJDa_BXpjLJj>S8AzjN$21pc;2|g18V#yc~j)6Q=EFD@K z>Wz{C6-C_oC`$Z!3F#M7Ywih^Yk}jHr6gcLSthX1c^MCCQ|bk#Rob3V<(E>lP(BOe zKss9apB%#ha9suVKc{J7;Z)m(m6op8xa@e!Ed$T>JbN=199GUZPS# z#R3+@prjRG42j)HZ*vTX$8&9a(uh{U#N}wNGbKD{21k3-R&VJ!2 z(LiLCrwUt(L1?TS9P!T95d&<-i(aYFbuZrcY)(_lqph?P$H_*VShQBIMT`@>Jj*Z3 zJloNEeg*$d89kADVm9d|n#>eNdT(pVKy(UQCl|R&b(UI&W|;(y8NeUjPLke6!uC=k z;y4a_K;-ztD$0Z$$_>15>_(^FEeBc3Cv=Z(D;zd5Q~|Vl_F#@$gswt zdn{k7Ap_3-sg)rqzm5MtR9Hu2bzrpao^9aLJaM8WlvcL!D|!H29nUl|3XvD9QTn`A zY7>=s_Jnmw&EE1hQG%CXF`ry2_=30?^c1WzxmP^_p>a!f`mSa1nwHg z2!4KzuF-eMz&<(NB*WYg(i&wrz_-w4JwPC29AR~wjD2R8HaVcWR#C|AM93e1{pWw2 z;^{A35x?X2hO*vEvh3a^puv*yrxB5V_y5*7;#UyCG^AQ#f-tltxd7LSnu2*!fZ#(|JC1Bf|k zaex?Axy6A>W6t4#xhEXB$3vsoxR9SHG!I#u{)Y>MCc-QVR|Uef0AN z8Y~Wkj#fxtwNpPm3axGIG@eWBbi^OX6bf6)f6LDNfx@1TtyeV{1~mHvDF0iUY^E-) z(SP{6zpT{bzkcnh<(Q!feNJc*jmxsM)9ABycw!t75)^`f3HrRFbaEUxJnU-zq7WmG zC#;VR`q*@&CQ3Se??H2sofLX`@rQh~(QHwp&B7T7hAr64p z$Nw);MZjiAT;zdaeL*4iFu1E+6hvG1bl-cmae#tbSZ+#V*1glN$XN#vi&~CgMcT?f z6=x?M5Utkk;;_rfi2KavK0oIf898EVP{<`4rXn23 z91rq*waPgI=M0?f9i=TrYh}Q-X_tqgw$eI$%xL%0D8d7I{nWqEDhZm*D0#jn;{&ncxCq%L; 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 FV1lkHDbfG{ literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_performance.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_performance.png new file mode 100644 index 0000000000000000000000000000000000000000..68ceedf0715bb1ee6f2168ba21a273bb69f38f62 GIT binary patch literal 8245 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 literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_portal.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_portal.png new file mode 100644 index 0000000000000000000000000000000000000000..1a717dc6b5a31babac35a9bb14a139feee79e5cf GIT binary patch literal 5136 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 M07*qoM6N<$f<9&RfdBvi literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_process.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_process.png new file mode 100644 index 0000000000000000000000000000000000000000..fd1d6061a176d9a1d02ec429282343cb063e341c GIT binary patch literal 6985 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 b{}W&UyUI}$wk?2C00000NkvXXu0mjfJcXBA literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_public_access.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_public_access.png new file mode 100644 index 0000000000000000000000000000000000000000..4933fe14cfccf8b2f2d08611abc3a0286d3103ad GIT binary patch literal 10097 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 TLr0ztU7!z`>-z1ONayN{X`DPc6^W*^Lf*y2>PP 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 literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_quickconnect.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_quickconnect.png new file mode 100644 index 0000000000000000000000000000000000000000..c3045a6a664ab2aca8f0244bc8219d3f6ec7d6db GIT binary patch literal 6400 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 literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_recommend.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_recommend.png new file mode 100644 index 0000000000000000000000000000000000000000..37a41fda29042e848937798a1dbd05d0058699fd GIT binary patch literal 5128 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 X@E|_E@$69`00000NkvXXu0mjfVhMo+ literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_speed.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_speed.png new file mode 100644 index 0000000000000000000000000000000000000000..4d3a18c0159b8be102a437166c793cadf65c2a56 GIT binary patch literal 10382 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 O0000N=ZaPRCwC#U4M*RMIE1+H@hd&64Ge0 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 O00000S literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_update_and_reset.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_update_and_reset.png new file mode 100644 index 0000000000000000000000000000000000000000..33e9b7091cec2c1f4c06e17b27c981134d3c00f4 GIT binary patch literal 8440 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 Hu0mjfF4c8W literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_volume.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_volume.png new file mode 100644 index 0000000000000000000000000000000000000000..fad9aa6d08b4cdd88a1b5418fb4c8366773b934d GIT binary patch literal 8423 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 JPDHLkV1hE_jOYLW literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_web_server.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_web_server.png new file mode 100644 index 0000000000000000000000000000000000000000..101e5e7b34f8f4453a3ca9780793487f08e5afb4 GIT binary patch literal 9096 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

QlcP__cki=`+rn|c8RSQdy; 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 literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/rt_button.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/rt_button.png new file mode 100644 index 0000000000000000000000000000000000000000..3d4f4d68aa9b7e7b20b7d2a0f894c09b62a886cc GIT binary patch literal 7805 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 literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/taskbar/more_apps.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/taskbar/more_apps.png new file mode 100644 index 0000000000000000000000000000000000000000..e533d7c2da231895486c2fe3188447716f8c75ad GIT binary patch literal 1915 zcma)7`BxGM7sX?fTb4_k3zI47Fm9O(Xqx5D7`Tj@rR5SxDroLIGNx&bm7{67=8|QK zQl{b-t|dsygqqtRIhs_Eh7yY?efIqW%{}M6`@_5Eo_EfB=e--A2v=oAO+^3zpbT?! z^4{UoJJBz{dndQeqP~+xyt9A&@6loLNg=T)z!_w8C`t#04MC&4Q6b2b7%IvZ0FVR1 zoX+?p&v7eQkwEADBWQFcldrEl*LFdvR!4VkvZL);jeQ{`0PN=MR{x=#w4X;MWqD+I zoN{qkD)+`5m3Nr>^m~A!F+cZZz?N)wMAHF_u{-6=N)37`bN-)4ux_j%%2Wh|au-VD z635fS634kY8Y74Gq;#sxPK!SRrMzSHa4JE$GnI$w0yGSmTqfKsez(p$?m)MIL2 z@vd!CRrrPund(=>N3=8$=boqd+Om5g_1LKUGXwde99c@LRCYv_)5vUEBQz$`{rr5{ zodh#;;P_dO1h@xW@b{ARA%TAABh~x!#_e5eM_p)%(+QHzD%?s~J>x+8!Fb;uEu*Qa z7ZaptDH#EN>BtYwoi!~(F1+n&`KK*$`+9(qVKhAOl?`D&Twu7{vsu8u9&!v<@H6LW z)Z!C6jmf#{KSZ96=t&UbsJ(q1N_Y z!@2HY0nMmhNvw&%<@Y+R2hv6;#C>A3jZQ8v^GCz^ul4@caC+5rPBnVwaa-Ua;+X1q zR+E3Q@Tq`3zU^;+QhaL)UGd{oEAN&@tG0?TR(rPtD zdwDTLm}gw~a~RWU@O=y0=^eAydOzgKP$<- z`}<2Q2yVMqS+jB4!jRmggDIVgK_MLj&0oiu?)aEfw|IkHq2cqekr`o&FO>e8^S1mp z$)Yx0qATP1lL7ec!Z}_>D8bwSYZP5vxZ_yubHc@}qXoKP;%&yBZFQPDf3C^G>T#_* z$yB@Fg9UfmA0+f5G#kJ$hLJWDVFj8-KxqG^zI?xRP*`!U#7;8TQU7HDvX7Akf;yOQ z$du*eww@Q+TAw(xH~(c^oT`GUTLYwUMRV}_6CHxQ>7KcW%*}cA&jE_2B@4-%f=Ybn zJs<6Wk;|NPqkKk^ULHqm<-)qfG9fNktZc1Q1gy+B?FU2ub#Z>E^914B*D{N-aS+}4 z4Ki2yEk3u7(z3ypvu)fC3hE6o!IS5Br=hL-50mK9jG7{a5PoN!FH$R*pH=oSVaAQr zEFg{SYmc7rVJ#9Nhapf@Z}9W0+mm1pz`7}P5%k8=)mcI<)yg7~AzA~ey%Pbc^)swf z0tAmON3c%URl&V)<@IdBvUv^*^pb;(*}pzeN7&N555-*8vQ}%i!fTsON!KpR{b^_4 zpIls~(70{GRn_-DmLIf;Wro-I`NTLvEo|!bBtX50<*i?YH{lFJ)+x4Frc35Z--*z{ zs2Z3kf~)dc`}n9|R8ryu$YqU}=fi8DAn+;-QzkhX5CyG%VG^7Dq30;vF`bx}=`T6G=+dGGi(M;!zS`d+ve`W4tJo@~f68n5tXo#C7 zy``wyuHH>b33Rd9pDR9nMC(EG7dv(_GCBi0?G1&dT2_~eLXs1-A>u z3P93ujABTL?}zG>7b(fwqYNlnO|o2cOQik%IsOQgBB^>XV3Q%*7JIFrzpG)+2&Wc@ H;H>`vmk4Y# literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/taskbar/showdesktop.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/taskbar/showdesktop.png new file mode 100644 index 0000000000000000000000000000000000000000..7838c6bed447d1ed8c80c82efd23403d87a723d1 GIT binary patch literal 1445 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 T85zLsA0E~g_SlCQ@A&@#vSsGi literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/taskbar/taskbar_bt_apps.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/taskbar/taskbar_bt_apps.png new file mode 100644 index 0000000000000000000000000000000000000000..7be67834d74fd16bcc1e51827cf0b289a1e0e328 GIT binary patch literal 10062 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 literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/taskbar/taskbar_bt_widgets_shadow.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/taskbar/taskbar_bt_widgets_shadow.png new file mode 100644 index 0000000000000000000000000000000000000000..f17628080b1317af710330f475ee753ab77de742 GIT binary patch literal 506 zcmV5MtVG*JK-nZLt3G?Q7C@6GCWeu1z%{#&?V%hK1;2xEMb% ze2m{1DN7IU7RILMX4_O=93ViP4VbN9YQ~_hU@V%|6f8FjxyD}QSNxTyM zYL%Egcpx4a;)Nyu9#j%c7(ieE zP7UyiPT?LZ4+Dy3iU3|RfMaGwk_SAK^}rB-%a|w!ctikhN3vthR1G+g-N=xE`hYuR z7T3;f6Nv(DGYg6}1iA=oQk#>MNqTz?CBI|q(%^w~f2l;Pl|7i7R cbZB5?5Z7XFjC!(pEl>x8r>mdKI;Vst0L)e=0{{R3 literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/taskbar/taskbar_split.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/taskbar/taskbar_split.png new file mode 100644 index 0000000000000000000000000000000000000000..b731ff8f5c937bc1f1baa101b70ff3f425e6cbd5 GIT binary patch literal 183 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 literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/taskbar/tray_icon_pilot_view.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/taskbar/tray_icon_pilot_view.png new file mode 100644 index 0000000000000000000000000000000000000000..5c1672c806f3ebdcfee43905670e82e744b1bf28 GIT binary patch literal 6852 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 literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/taskbar/tray_icon_search.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/taskbar/tray_icon_search.png new file mode 100644 index 0000000000000000000000000000000000000000..665d12961ef2fcb91bbee568ba58a901f02a6f68 GIT binary patch literal 7569 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

    wdjA~xFR)~!|8nhu{r?%G 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 literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/taskbar/user_menu_about.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/taskbar/user_menu_about.png new file mode 100644 index 0000000000000000000000000000000000000000..905febfedcc47374fcb1cc2d7eb14d76cb9097d0 GIT binary patch literal 3622 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 literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/taskbar/user_menu_restart.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/taskbar/user_menu_restart.png new file mode 100644 index 0000000000000000000000000000000000000000..8a0d37d58a62df96f0c75c14481733e7062e8bfb GIT binary patch literal 4950 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 U@amOpl>h($07*qoM6N<$f*$^YE&u=k literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/taskbar/user_menu_shutdown.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/taskbar/user_menu_shutdown.png new file mode 100644 index 0000000000000000000000000000000000000000..41928003010358d004fdbd2a9436fa378dd623d0 GIT binary patch literal 5475 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 ZFaVw~)rjs=iMjv)002ovPDHLkV1nb`iyQy| literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/widget_window/widget_rt_button.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/dsm/resources/images/widget_window/widget_rt_button.png new file mode 100644 index 0000000000000000000000000000000000000000..828bd5e2aa256fc26902ed11dfab6da0973cea99 GIT binary patch literal 9577 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

    tv;PXIt?e`T_~DXWPkf?d-PDhlh`%n5fQ+Ye+7a zBHPGg4P49cfKzep@zwn2#ymWagY=);E&j3%l`2YKwUnIAZ>)AqIYb*

    bwo@+jdM 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 Eg4mKjNB{r; literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/scrollbar/scrollbar_black_h.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/scrollbar/scrollbar_black_h.png new file mode 100644 index 0000000000000000000000000000000000000000..33ccb47515ac57ef316517f65d86487564188ff7 GIT binary patch literal 134 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eM!3HFEez+qDq$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~-c6=`_7IEGZ*O8WEvzdf^NLuaGQfkl})zvnMA>&cS1YEWWg gaLML4BZ~w>8U}fi7AzZCsS>JinKgk978H@CH?vT-=3KxL+ZAZL`u`^bbjNe3^g{b=0Ik5 hUK!H~5)1+f3?EC`MZL~ke-G5f;OXk;vd$@?2>?$@Cqe)K literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/scrollbar/scrollbar_white_h.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/scrollbar/scrollbar_white_h.png new file mode 100644 index 0000000000000000000000000000000000000000..f3680b1eb79ebefbd5d5cf6dbb35e1030355446e GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eM!3HFEez+qDq$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~-c6={09IEGZ*O8WEvzdf^NLuaGQ0j4AWGqVn_Xba?Zc4yYG gH@I|#t$~4=K`)&}^MH?^3{Vq;r>mdKI;Vst0Jw%Ij{pDw literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/scrollbar/scrollbar_white_v.png b/salt/idh/skins/http/opencanary/nasLogin/static/img/synohdpack/images/scrollbar/scrollbar_white_v.png new file mode 100644 index 0000000000000000000000000000000000000000..4991e7d54eb8e66f93b461912ec57d8994abddea GIT binary patch literal 127 zcmeAS@N?(olHy`uVBq!ia0vp^B0$W;!3HFgc;@~FQj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>JiWEIv978H@CH?vT-=10IfMg1jn}K20gB6X7+4x!-85r3Z Ywx;X9JS%Hu2vp4A>FVdQ&MBb@00S%}hX4Qo literal 0 HcmV?d00001 diff --git a/salt/idh/skins/http/opencanary/nasLogin/static/js/misc.js b/salt/idh/skins/http/opencanary/nasLogin/static/js/misc.js new file mode 100644 index 000000000..d602a0e4c --- /dev/null +++ b/salt/idh/skins/http/opencanary/nasLogin/static/js/misc.js @@ -0,0 +1,53 @@ +"use strict"; + +var montharray = new Array(); +montharray[0] = "Jan"; +montharray[1] = "Feb"; +montharray[2] = "Mar"; +montharray[3] = "Apr"; +montharray[4] = "May"; +montharray[5] = "Jun"; +montharray[6] = "Jul"; +montharray[7] = "Aug"; +montharray[8] = "Sep"; +montharray[9] = "Oct"; +montharray[10] = "Nov"; +montharray[11] = "Dec"; + +var dayarray = new Array(); +dayarray[0] = "Sun"; +dayarray[1] = "Mon"; +dayarray[2] = "Tue"; +dayarray[3] = "Wed"; +dayarray[4] = "Thu"; +dayarray[5] = "Fri"; +dayarray[6] = "Sat"; + + +function updateTime() { +var d = new Date(); +var h = d.getHours(); +var m = d.getMinutes(); +m = new String(m); +if (m.length == 1) + m = "0" + m; + +var pms = "AM"; +if (h > 12) +{ +pms = "PM" +h = h % 12; +} + +document.getElementById('ext-comp-1007').innerHTML = h + ":" + m + '' + pms + ''; + +var month = montharray[d.getMonth()]; +var wkday = dayarray[d.getDay()]; +var day = d.getDate(); + +document.getElementById('ext-comp-1008').innerHTML = wkday + ", " + month + " " + day; + +} + +updateTime(); +window.setInterval(updateTime, 2000); From 1463b35e2ef1bc8e9410ac264d0c158845b35435 Mon Sep 17 00:00:00 2001 From: Wes Date: Thu, 12 Sep 2024 15:31:12 +0000 Subject: [PATCH 015/175] Change name --- salt/idh/config.sls | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/salt/idh/config.sls b/salt/idh/config.sls index 8d1bd25d5..91f809f9e 100644 --- a/salt/idh/config.sls +++ b/salt/idh/config.sls @@ -51,7 +51,7 @@ idhhttpskinsdir: - makedirs: True # Copy over default http skins -copyoverhttpskins: +idhhttpskins: file.recurse: - name: /opt/so/conf/idh/http-skins - user: 939 @@ -59,7 +59,7 @@ copyoverhttpskins: - source: salt://idh/skins/http/opencanary # Copy over custom http skins -copyovercustomhttpskins: +idhcustomhttpskins: file.recurse: - name: /opt/so/conf/idh/http-skins - user: 939 From cac153909481e5538f33738f9846c48caa47919b Mon Sep 17 00:00:00 2001 From: Mike Reeves Date: Thu, 12 Sep 2024 13:08:01 -0400 Subject: [PATCH 016/175] Add to firewall settings and annotations --- salt/firewall/defaults.yaml | 20 ++++++++++++++++++++ salt/firewall/soc_firewall.yaml | 14 ++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/salt/firewall/defaults.yaml b/salt/firewall/defaults.yaml index fc5368e12..b9bfdbf63 100644 --- a/salt/firewall/defaults.yaml +++ b/salt/firewall/defaults.yaml @@ -10,6 +10,7 @@ firewall: elasticsearch_rest: [] endgame: [] eval: [] + external_suricata: [] fleet: [] heavynode: [] idh: [] @@ -86,6 +87,10 @@ firewall: tcp: - 3765 udp: [] + external_suricata: + tcp: + - 7789 + udp: [] influxdb: tcp: - 8086 @@ -216,6 +221,9 @@ firewall: analyst: portgroups: - nginx + external_suricata: + portgroups: + - external_suricata customhostgroup0: portgroups: [] customhostgroup1: @@ -462,6 +470,9 @@ firewall: endgame: portgroups: - endgame + external_suricata: + portgroups: + - external_suricata desktop: portgroups: - docker_registry @@ -654,6 +665,9 @@ firewall: endgame: portgroups: - endgame + external_suricata: + portgroups: + - external_suricata desktop: portgroups: - docker_registry @@ -850,6 +864,9 @@ firewall: endgame: portgroups: - endgame + external_suricata: + portgroups: + - external_suricata strelka_frontend: portgroups: - strelka_frontend @@ -1216,6 +1233,9 @@ firewall: - elastic_agent_control - elastic_agent_data - elastic_agent_update + external_suricata: + portgroups: + - external_suricata analyst: portgroups: - nginx diff --git a/salt/firewall/soc_firewall.yaml b/salt/firewall/soc_firewall.yaml index 3a8b4d3a0..222bcc8a2 100644 --- a/salt/firewall/soc_firewall.yaml +++ b/salt/firewall/soc_firewall.yaml @@ -32,6 +32,7 @@ firewall: elasticsearch_rest: *hostgroupsettingsadv endgame: *hostgroupsettingsadv eval: *hostgroupsettings + external_suricata: *hostgroupsettings fleet: *hostgroupsettings heavynode: *hostgroupsettings idh: *hostgroupsettings @@ -117,6 +118,9 @@ firewall: endgame: tcp: *tcpsettings udp: *udpsettings + external_suricata: + tcp: *tcpsettings + udp: *udpsettings influxdb: tcp: *tcpsettings udp: *udpsettings @@ -215,6 +219,8 @@ firewall: portgroups: *portgroupsdocker elastic_agent_endpoint: portgroups: *portgroupsdocker + external_suricata: + portgroups: *portgroupsdocker strelka_frontend: portgroups: *portgroupsdocker syslog: @@ -370,6 +376,8 @@ firewall: portgroups: *portgroupsdocker endgame: portgroups: *portgroupsdocker + external_suricata: + portgroups: *portgroupsdocker analyst: portgroups: *portgroupsdocker desktop: @@ -463,6 +471,8 @@ firewall: portgroups: *portgroupsdocker analyst: portgroups: *portgroupsdocker + external_suricata: + portgroups: *portgroupsdocker desktop: portgroups: *portgroupsdocker customhostgroup0: @@ -554,6 +564,8 @@ firewall: portgroups: *portgroupsdocker endgame: portgroups: *portgroupsdocker + external_suricata: + portgroups: *portgroupsdocker strelka_frontend: portgroups: *portgroupsdocker syslog: @@ -828,6 +840,8 @@ firewall: portgroups: *portgroupsdocker analyst: portgroups: *portgroupsdocker + external_suricata: + portgroups: *portgroupsdocker desktop: portgroups: *portgroupsdocker customhostgroup0: From 2ec3f52ea66d2418cc7874029e17cf2c1075e02b Mon Sep 17 00:00:00 2001 From: weslambert Date: Thu, 12 Sep 2024 17:57:41 -0400 Subject: [PATCH 017/175] Don't use state; set IFS --- .../sbin/so-elastic-fleet-integration-upgrade | 29 +++++++------------ 1 file changed, 10 insertions(+), 19 deletions(-) diff --git a/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-upgrade b/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-upgrade index d7f4257a9..4486e1244 100644 --- a/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-upgrade +++ b/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-upgrade @@ -6,17 +6,14 @@ . /usr/sbin/so-elastic-fleet-common -RETURN_CODE=0 +# Let's snag a cookie from Kibana +SESSIONCOOKIE=$(curl -s -K /opt/so/conf/elasticsearch/curl.config -c - -X GET http://localhost:5601/ | grep sid | awk '{print $7}') -if [ ! -f /opt/so/state/eaintegrationupgrade.txt ]; then - # Let's snag a cookie from Kibana - SESSIONCOOKIE=$(curl -s -K /opt/so/conf/elasticsearch/curl.config -c - -X GET http://localhost:5601/ | grep sid | awk '{print $7}') - - # List agent policies - for AGENT_POLICY in $(elastic_fleet_agent_policy_names); do - IFS=$'\n' - for INTEGRATION in $(elastic_fleet_integration_policy_names "$AGENT_POLICY"); do - if ! [[ "$INTEGRATION" == "elastic-defend-endpoints" ]] && ! [[ "$INTEGRATION" == "fleet_server-"* ]]; then +# List agent policies +for AGENT_POLICY in $(elastic_fleet_agent_policy_names); do + IFS=$'\n' + for INTEGRATION in $(elastic_fleet_integration_policy_names "$AGENT_POLICY"); do + if ! [[ "$INTEGRATION" == "elastic-defend-endpoints" ]] && ! [[ "$INTEGRATION" == "fleet_server-"* ]]; then # Get package name so we know what package to look for when checking the current and latest available version PACKAGE_NAME=$(elastic_fleet_integration_policy_package_name "$AGENT_POLICY" "$INTEGRATION") # Get currently installed version of package @@ -39,13 +36,7 @@ if [ ! -f /opt/so/state/eaintegrationupgrade.txt ]; then exit 1 fi fi - fi - done + fi done - if [[ "$RETURN_CODE" != "1" ]]; then - touch /opt/so/state/eaintegrationupgrade.txt - fi - echo -else - exit $RETURN_CODE -fi +done +echo From 2e85dcc36afd285cd9099052149ed1dba2bf321e Mon Sep 17 00:00:00 2001 From: weslambert Date: Thu, 12 Sep 2024 17:59:39 -0400 Subject: [PATCH 018/175] Set IFS --- .../elasticfleet/tools/sbin/so-elastic-fleet-integration-upgrade | 1 + 1 file changed, 1 insertion(+) diff --git a/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-upgrade b/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-upgrade index 4486e1244..d4463e7f3 100644 --- a/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-upgrade +++ b/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-upgrade @@ -10,6 +10,7 @@ SESSIONCOOKIE=$(curl -s -K /opt/so/conf/elasticsearch/curl.config -c - -X GET http://localhost:5601/ | grep sid | awk '{print $7}') # List agent policies +IFS=$'\n' for AGENT_POLICY in $(elastic_fleet_agent_policy_names); do IFS=$'\n' for INTEGRATION in $(elastic_fleet_integration_policy_names "$AGENT_POLICY"); do From 662f906f9d3710ff61532da61df0679e367b25f0 Mon Sep 17 00:00:00 2001 From: weslambert Date: Fri, 13 Sep 2024 09:16:53 -0400 Subject: [PATCH 019/175] Remove IFS --- .../elasticfleet/tools/sbin/so-elastic-fleet-integration-upgrade | 1 - 1 file changed, 1 deletion(-) diff --git a/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-upgrade b/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-upgrade index d4463e7f3..eb812ebf6 100644 --- a/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-upgrade +++ b/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-upgrade @@ -12,7 +12,6 @@ SESSIONCOOKIE=$(curl -s -K /opt/so/conf/elasticsearch/curl.config -c - -X GET ht # List agent policies IFS=$'\n' for AGENT_POLICY in $(elastic_fleet_agent_policy_names); do - IFS=$'\n' for INTEGRATION in $(elastic_fleet_integration_policy_names "$AGENT_POLICY"); do if ! [[ "$INTEGRATION" == "elastic-defend-endpoints" ]] && ! [[ "$INTEGRATION" == "fleet_server-"* ]]; then # Get package name so we know what package to look for when checking the current and latest available version From 06c0d5b0f53b6a7281fda18789657517b83916fa Mon Sep 17 00:00:00 2001 From: Josh Patterson Date: Fri, 13 Sep 2024 10:13:11 -0400 Subject: [PATCH 020/175] Update so-elastic-fleet-integration-upgrade --- .../sbin/so-elastic-fleet-integration-upgrade | 108 +++++++++++++----- 1 file changed, 79 insertions(+), 29 deletions(-) diff --git a/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-upgrade b/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-upgrade index eb812ebf6..99d0b82a9 100644 --- a/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-upgrade +++ b/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-upgrade @@ -6,37 +6,87 @@ . /usr/sbin/so-elastic-fleet-common -# Let's snag a cookie from Kibana -SESSIONCOOKIE=$(curl -s -K /opt/so/conf/elasticsearch/curl.config -c - -X GET http://localhost:5601/ | grep sid | awk '{print $7}') +curl_output=$(curl -s -K /opt/so/conf/elasticsearch/curl.config -c - -X GET http://localhost:5601/) +if [ $? -ne 0 ]; then + echo "Error: Failed to connect to localhost:5601 to obtain session cookie." + exit 1 +fi + +SESSIONCOOKIE=$(echo "$curl_output" | grep sid | awk '{print $7}') +if [ -z "$SESSIONCOOKIE" ]; then + echo "Warning: Session cookie is empty." +fi -# List agent policies IFS=$'\n' -for AGENT_POLICY in $(elastic_fleet_agent_policy_names); do - for INTEGRATION in $(elastic_fleet_integration_policy_names "$AGENT_POLICY"); do - if ! [[ "$INTEGRATION" == "elastic-defend-endpoints" ]] && ! [[ "$INTEGRATION" == "fleet_server-"* ]]; then - # Get package name so we know what package to look for when checking the current and latest available version - PACKAGE_NAME=$(elastic_fleet_integration_policy_package_name "$AGENT_POLICY" "$INTEGRATION") - # Get currently installed version of package - PACKAGE_VERSION=$(elastic_fleet_integration_policy_package_version "$AGENT_POLICY" "$INTEGRATION") - # Get latest available version of package - AVAILABLE_VERSION=$(elastic_fleet_package_latest_version_check "$PACKAGE_NAME") - INTEGRATION_ID=$(elastic_fleet_integration_id "$AGENT_POLICY" "$INTEGRATION" ) - if [[ "$PACKAGE_VERSION" != "$AVAILABLE_VERSION" ]]; then - # Dry run of upgrade - echo "Current $PACKAGE_NAME package version ($PACKAGE_VERSION) is not the same as the latest available package ($AVAILABLE_VERSION)..." - echo "Upgrading $INTEGRATION..." - echo "Starting dry run..." - DRYRUN_ERRORS=$(elastic_fleet_integration_policy_dryrun_upgrade "$INTEGRATION_ID" | jq .[].hasErrors) - # If no errors with dry run, proceed with actual upgrade - if [[ "$DRYRUN_ERRORS" == "false" ]]; then - echo "No errors detected. Proceeding with upgrade..." - elastic_fleet_integration_policy_upgrade "$INTEGRATION_ID" - else - echo "Errors detected. Stopping upgrade..." - exit 1 - fi - fi +agent_policies=$(elastic_fleet_agent_policy_names) +if [ $? -ne 0 ]; then + echo "Error: Failed to retrieve agent policies." + exit 1 +fi + +for AGENT_POLICY in $agent_policies; do + integrations=$(elastic_fleet_integration_policy_names "$AGENT_POLICY") + if [ $? -ne 0 ]; then + echo "Error: Failed to retrieve integration policies for agent policy '$AGENT_POLICY'." + exit 1 fi - done + + for INTEGRATION in $integrations; do + if ! [[ "$INTEGRATION" == "elastic-defend-endpoints" ]] && ! [[ "$INTEGRATION" == "fleet_server-"* ]]; then + # Get package name so we know what package to look for when checking the current and latest available version + PACKAGE_NAME=$(elastic_fleet_integration_policy_package_name "$AGENT_POLICY" "$INTEGRATION") + if [ $? -ne 0 ]; then + echo "Error: Failed to retrieve package name for integration '$INTEGRATION' in agent policy '$AGENT_POLICY'." + exit 1 + fi + + # Get currently installed version of package + PACKAGE_VERSION=$(elastic_fleet_integration_policy_package_version "$AGENT_POLICY" "$INTEGRATION") + if [ $? -ne 0 ]; then + echo "Error: Failed to retrieve package version for integration '$INTEGRATION' in agent policy '$AGENT_POLICY'." + exit 1 + fi + + # Get latest available version of package + AVAILABLE_VERSION=$(elastic_fleet_package_latest_version_check "$PACKAGE_NAME") + if [ $? -ne 0 ]; then + echo "Error: Failed to retrieve latest available version for package '$PACKAGE_NAME'." + exit 1 + fi + + INTEGRATION_ID=$(elastic_fleet_integration_id "$AGENT_POLICY" "$INTEGRATION") + if [ $? -ne 0 ]; then + echo "Error: Failed to retrieve integration ID for '$INTEGRATION' in agent policy '$AGENT_POLICY'." + exit 1 + fi + + if [[ "$PACKAGE_VERSION" != "$AVAILABLE_VERSION" ]]; then + # Dry run of the upgrade + echo "Current $PACKAGE_NAME package version ($PACKAGE_VERSION) is not the same as the latest available package ($AVAILABLE_VERSION)..." + echo "Upgrading $INTEGRATION..." + echo "Starting dry run..." + + DRYRUN_OUTPUT=$(elastic_fleet_integration_policy_dryrun_upgrade "$INTEGRATION_ID") + if [ $? -ne 0 ]; then + echo "Error: Dry run upgrade failed for integration ID '$INTEGRATION_ID'." + exit 1 + fi + + DRYRUN_ERRORS=$(echo "$DRYRUN_OUTPUT" | jq .[].hasErrors) + # If no errors with dry run, proceed with actual upgrade + if [[ "$DRYRUN_ERRORS" == "false" ]]; then + echo "No errors detected. Proceeding with upgrade..." + elastic_fleet_integration_policy_upgrade "$INTEGRATION_ID" + if [ $? -ne 0 ]; then + echo "Error: Upgrade failed for integration ID '$INTEGRATION_ID'." + exit 1 + fi + else + echo "Errors detected during dry run. Stopping upgrade..." + exit 1 + fi + fi + fi + done done echo From da47d247c98e7fcc37f886a4709e3dfeeede6a36 Mon Sep 17 00:00:00 2001 From: weslambert Date: Fri, 13 Sep 2024 13:24:55 -0400 Subject: [PATCH 021/175] Remove check for cookie --- .../tools/sbin/so-elastic-fleet-integration-upgrade | 5 ----- 1 file changed, 5 deletions(-) diff --git a/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-upgrade b/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-upgrade index 99d0b82a9..a8f8df27b 100644 --- a/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-upgrade +++ b/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-upgrade @@ -12,11 +12,6 @@ if [ $? -ne 0 ]; then exit 1 fi -SESSIONCOOKIE=$(echo "$curl_output" | grep sid | awk '{print $7}') -if [ -z "$SESSIONCOOKIE" ]; then - echo "Warning: Session cookie is empty." -fi - IFS=$'\n' agent_policies=$(elastic_fleet_agent_policy_names) if [ $? -ne 0 ]; then From fa333489104b4f88e4af052b4bfeafcf96368aee Mon Sep 17 00:00:00 2001 From: weslambert Date: Fri, 13 Sep 2024 13:26:17 -0400 Subject: [PATCH 022/175] Change message --- .../tools/sbin/so-elastic-fleet-integration-upgrade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-upgrade b/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-upgrade index a8f8df27b..5e2b95d5b 100644 --- a/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-upgrade +++ b/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-upgrade @@ -8,7 +8,7 @@ curl_output=$(curl -s -K /opt/so/conf/elasticsearch/curl.config -c - -X GET http://localhost:5601/) if [ $? -ne 0 ]; then - echo "Error: Failed to connect to localhost:5601 to obtain session cookie." + echo "Error: Failed to connect to Kibana." exit 1 fi From bc71af7a1fbc1995df388044fe88a83ebe5b8a6e Mon Sep 17 00:00:00 2001 From: weslambert Date: Fri, 13 Sep 2024 13:27:26 -0400 Subject: [PATCH 023/175] Check status --- .../tools/sbin/so-elastic-fleet-common | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/salt/elasticfleet/tools/sbin/so-elastic-fleet-common b/salt/elasticfleet/tools/sbin/so-elastic-fleet-common index d5b27c315..a07c7c8bc 100644 --- a/salt/elasticfleet/tools/sbin/so-elastic-fleet-common +++ b/salt/elasticfleet/tools/sbin/so-elastic-fleet-common @@ -104,34 +104,58 @@ elastic_fleet_package_is_installed() { elastic_fleet_agent_policy_names() { curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/agent_policies" | jq -r .items[].name + if [ $? -ne 0 ]; then + echo "Error: Failed to retrieve agent policies." + exit 1 + fi } elastic_fleet_integration_policy_names() { AGENT_POLICY=$1 curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/agent_policies/$AGENT_POLICY" | jq -r .item.package_policies[].name + if [ $? -ne 0 ]; then + echo "Error: Failed to retrieve integrations." + exit 1 + fi } elastic_fleet_integration_policy_package_name() { AGENT_POLICY=$1 INTEGRATION=$2 curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/agent_policies/$AGENT_POLICY" | jq -r --arg INTEGRATION "$INTEGRATION" '.item.package_policies[] | select(.name==$INTEGRATION)| .package.name' + if [ $? -ne 0 ]; then + echo "Error: Failed to retrieve package name." + exit 1 + fi } elastic_fleet_integration_policy_package_version() { AGENT_POLICY=$1 INTEGRATION=$2 curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/agent_policies/$AGENT_POLICY" | jq -r --arg INTEGRATION "$INTEGRATION" '.item.package_policies[] | select(.name==$INTEGRATION)| .package.version' + if [ $? -ne 0 ]; then + echo "Error: Failed to retrieve package version." + exit 1 + fi } elastic_fleet_integration_id() { AGENT_POLICY=$1 INTEGRATION=$2 curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/agent_policies/$AGENT_POLICY" | jq -r --arg INTEGRATION "$INTEGRATION" '.item.package_policies[] | select(.name==$INTEGRATION)| .id' + if [ $? -ne 0 ]; then + echo "Error: Failed to retrieve integration ID." + exit 1 + fi } elastic_fleet_integration_policy_dryrun_upgrade() { INTEGRATION_ID=$1 curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -H "Content-Type: application/json" -H 'kbn-xsrf: true' -L -X POST "localhost:5601/api/fleet/package_policies/upgrade/dryrun" -d "{\"packagePolicyIds\":[\"$INTEGRATION_ID\"]}" + if [ $? -ne 0 ]; then + echo "Error: Failed to complete dry run." + exit 1 + fi } elastic_fleet_policy_create() { From 973b93e33218828cf1de146d8e9d06f3b305d272 Mon Sep 17 00:00:00 2001 From: weslambert Date: Fri, 13 Sep 2024 13:49:53 -0400 Subject: [PATCH 024/175] Remove check for error --- .../sbin/so-elastic-fleet-integration-upgrade | 29 ++----------------- 1 file changed, 2 insertions(+), 27 deletions(-) diff --git a/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-upgrade b/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-upgrade index 5e2b95d5b..bdf93bad3 100644 --- a/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-upgrade +++ b/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-upgrade @@ -21,53 +21,28 @@ fi for AGENT_POLICY in $agent_policies; do integrations=$(elastic_fleet_integration_policy_names "$AGENT_POLICY") - if [ $? -ne 0 ]; then - echo "Error: Failed to retrieve integration policies for agent policy '$AGENT_POLICY'." - exit 1 - fi - for INTEGRATION in $integrations; do if ! [[ "$INTEGRATION" == "elastic-defend-endpoints" ]] && ! [[ "$INTEGRATION" == "fleet_server-"* ]]; then # Get package name so we know what package to look for when checking the current and latest available version PACKAGE_NAME=$(elastic_fleet_integration_policy_package_name "$AGENT_POLICY" "$INTEGRATION") - if [ $? -ne 0 ]; then - echo "Error: Failed to retrieve package name for integration '$INTEGRATION' in agent policy '$AGENT_POLICY'." - exit 1 - fi # Get currently installed version of package PACKAGE_VERSION=$(elastic_fleet_integration_policy_package_version "$AGENT_POLICY" "$INTEGRATION") - if [ $? -ne 0 ]; then - echo "Error: Failed to retrieve package version for integration '$INTEGRATION' in agent policy '$AGENT_POLICY'." - exit 1 - fi # Get latest available version of package AVAILABLE_VERSION=$(elastic_fleet_package_latest_version_check "$PACKAGE_NAME") - if [ $? -ne 0 ]; then - echo "Error: Failed to retrieve latest available version for package '$PACKAGE_NAME'." - exit 1 - fi + # Get integration ID INTEGRATION_ID=$(elastic_fleet_integration_id "$AGENT_POLICY" "$INTEGRATION") - if [ $? -ne 0 ]; then - echo "Error: Failed to retrieve integration ID for '$INTEGRATION' in agent policy '$AGENT_POLICY'." - exit 1 - fi if [[ "$PACKAGE_VERSION" != "$AVAILABLE_VERSION" ]]; then # Dry run of the upgrade echo "Current $PACKAGE_NAME package version ($PACKAGE_VERSION) is not the same as the latest available package ($AVAILABLE_VERSION)..." echo "Upgrading $INTEGRATION..." echo "Starting dry run..." - DRYRUN_OUTPUT=$(elastic_fleet_integration_policy_dryrun_upgrade "$INTEGRATION_ID") - if [ $? -ne 0 ]; then - echo "Error: Dry run upgrade failed for integration ID '$INTEGRATION_ID'." - exit 1 - fi - DRYRUN_ERRORS=$(echo "$DRYRUN_OUTPUT" | jq .[].hasErrors) + # If no errors with dry run, proceed with actual upgrade if [[ "$DRYRUN_ERRORS" == "false" ]]; then echo "No errors detected. Proceeding with upgrade..." From 57e06dced292004912f2a2853ada3a81828fc8ef Mon Sep 17 00:00:00 2001 From: weslambert Date: Fri, 13 Sep 2024 13:52:01 -0400 Subject: [PATCH 025/175] Change message --- salt/elasticfleet/tools/sbin/so-elastic-fleet-common | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/salt/elasticfleet/tools/sbin/so-elastic-fleet-common b/salt/elasticfleet/tools/sbin/so-elastic-fleet-common index a07c7c8bc..fadf18b5f 100644 --- a/salt/elasticfleet/tools/sbin/so-elastic-fleet-common +++ b/salt/elasticfleet/tools/sbin/so-elastic-fleet-common @@ -114,7 +114,7 @@ elastic_fleet_integration_policy_names() { AGENT_POLICY=$1 curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/agent_policies/$AGENT_POLICY" | jq -r .item.package_policies[].name if [ $? -ne 0 ]; then - echo "Error: Failed to retrieve integrations." + echo "Error: Failed to retrieve integrations for '$AGENT_POLICY'." exit 1 fi } @@ -124,7 +124,7 @@ elastic_fleet_integration_policy_package_name() { INTEGRATION=$2 curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/agent_policies/$AGENT_POLICY" | jq -r --arg INTEGRATION "$INTEGRATION" '.item.package_policies[] | select(.name==$INTEGRATION)| .package.name' if [ $? -ne 0 ]; then - echo "Error: Failed to retrieve package name." + echo "Error: Failed to retrieve package name for '$INTEGRATION' in '$AGENT_POLICY'." exit 1 fi } @@ -134,7 +134,7 @@ elastic_fleet_integration_policy_package_version() { INTEGRATION=$2 curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/agent_policies/$AGENT_POLICY" | jq -r --arg INTEGRATION "$INTEGRATION" '.item.package_policies[] | select(.name==$INTEGRATION)| .package.version' if [ $? -ne 0 ]; then - echo "Error: Failed to retrieve package version." + echo "Error: Failed to retrieve package version for '$INTEGRATION' in '$AGENT_POLICY'." exit 1 fi } @@ -144,7 +144,7 @@ elastic_fleet_integration_id() { INTEGRATION=$2 curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/agent_policies/$AGENT_POLICY" | jq -r --arg INTEGRATION "$INTEGRATION" '.item.package_policies[] | select(.name==$INTEGRATION)| .id' if [ $? -ne 0 ]; then - echo "Error: Failed to retrieve integration ID." + echo "Error: Failed to retrieve integration ID for '$INTEGRATION' in '$AGENT_POLICY'." exit 1 fi } @@ -153,7 +153,7 @@ elastic_fleet_integration_policy_dryrun_upgrade() { INTEGRATION_ID=$1 curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -H "Content-Type: application/json" -H 'kbn-xsrf: true' -L -X POST "localhost:5601/api/fleet/package_policies/upgrade/dryrun" -d "{\"packagePolicyIds\":[\"$INTEGRATION_ID\"]}" if [ $? -ne 0 ]; then - echo "Error: Failed to complete dry run." + echo "Error: Failed to complete dry run for '$INTEGRATION_ID'." exit 1 fi } From 217bb388a05d21151995f9c7e0ed3bb81bd25d40 Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Mon, 16 Sep 2024 10:05:17 -0400 Subject: [PATCH 026/175] Clarify enabled settings --- salt/elastalert/soc_elastalert.yaml | 2 +- .../soc_elastic-fleet-package-registry.yaml | 2 +- salt/elasticfleet/soc_elasticfleet.yaml | 2 +- salt/elasticsearch/soc_elasticsearch.yaml | 3 ++- salt/idh/soc_idh.yaml | 2 +- salt/idstools/soc_idstools.yaml | 2 +- salt/influxdb/soc_influxdb.yaml | 2 +- salt/kibana/soc_kibana.yaml | 2 +- salt/kratos/soc_kratos.yaml | 2 +- salt/logstash/soc_logstash.yaml | 2 +- salt/manager/soc_manager.yaml | 2 +- salt/nginx/soc_nginx.yaml | 2 +- salt/patch/soc_patch.yaml | 2 +- salt/pcap/soc_pcap.yaml | 2 +- salt/redis/soc_redis.yaml | 2 +- salt/registry/soc_registry.yaml | 2 +- salt/sensoroni/soc_sensoroni.yaml | 2 +- salt/soc/soc_soc.yaml | 2 +- salt/stig/soc_stig.yaml | 2 +- salt/strelka/soc_strelka.yaml | 2 +- salt/suricata/soc_suricata.yaml | 2 +- salt/telegraf/soc_telegraf.yaml | 3 ++- salt/zeek/soc_zeek.yaml | 2 +- 23 files changed, 25 insertions(+), 23 deletions(-) diff --git a/salt/elastalert/soc_elastalert.yaml b/salt/elastalert/soc_elastalert.yaml index 905fd3884..764ec87fc 100644 --- a/salt/elastalert/soc_elastalert.yaml +++ b/salt/elastalert/soc_elastalert.yaml @@ -1,6 +1,6 @@ elastalert: enabled: - description: You can enable or disable Elastalert. + description: Enables or disables the ElastAlert 2 process. This process is critical for ensuring alerts arrive in SOC, and for outbound notification delivery. helpLink: elastalert.html alerter_parameters: title: Custom Configuration Parameters diff --git a/salt/elastic-fleet-package-registry/soc_elastic-fleet-package-registry.yaml b/salt/elastic-fleet-package-registry/soc_elastic-fleet-package-registry.yaml index 70886c447..84303fd30 100644 --- a/salt/elastic-fleet-package-registry/soc_elastic-fleet-package-registry.yaml +++ b/salt/elastic-fleet-package-registry/soc_elastic-fleet-package-registry.yaml @@ -1,4 +1,4 @@ elastic_fleet_package_registry: enabled: - description: You can enable or disable Elastic Fleet Package Registry. + description: Enables or disables the Fleet package registry process. This process must remain enabled for proper HIDS functionality. advanced: True diff --git a/salt/elasticfleet/soc_elasticfleet.yaml b/salt/elasticfleet/soc_elasticfleet.yaml index 7ed97e6ec..b29d228a1 100644 --- a/salt/elasticfleet/soc_elasticfleet.yaml +++ b/salt/elasticfleet/soc_elasticfleet.yaml @@ -1,6 +1,6 @@ elasticfleet: enabled: - description: You can enable or disable Elastic Fleet. + description: Enables or disables the Elatic Fleet process. This process is critical for ensuring HIDS events are made available in SOC. advanced: True helpLink: elastic-fleet.html enable_manager_output: diff --git a/salt/elasticsearch/soc_elasticsearch.yaml b/salt/elasticsearch/soc_elasticsearch.yaml index b489bfe78..8c28d256a 100644 --- a/salt/elasticsearch/soc_elasticsearch.yaml +++ b/salt/elasticsearch/soc_elasticsearch.yaml @@ -1,6 +1,7 @@ elasticsearch: enabled: - description: You can enable or disable Elasticsearch. + description: Enables or disables the Elasticsearch process. This process provides the log event storage system. WARNING: Disabling this process is unsupported. + advanced: True helpLink: elasticsearch.html version: description: "This specifies the version of the following containers: so-elastic-fleet-package-registry, so-elastic-agent, so-elastic-fleet, so-kibana, so-logstash and so-elasticsearch. Modifying this value in the Elasticsearch defaults.yaml will result in catastrophic grid failure." diff --git a/salt/idh/soc_idh.yaml b/salt/idh/soc_idh.yaml index d3baaaab5..ecbc7cc43 100644 --- a/salt/idh/soc_idh.yaml +++ b/salt/idh/soc_idh.yaml @@ -1,6 +1,6 @@ idh: enabled: - description: You can enable or disable IDH. + description: Enables or disables the Intrustion Detection Honeypot (IDH) process. helpLink: idh.html opencanary: config: diff --git a/salt/idstools/soc_idstools.yaml b/salt/idstools/soc_idstools.yaml index 993abfd51..a27a0e683 100644 --- a/salt/idstools/soc_idstools.yaml +++ b/salt/idstools/soc_idstools.yaml @@ -1,6 +1,6 @@ idstools: enabled: - description: You can enable or disable IDSTools. + description: Enables or disables the IDS tools process, which is used by the Detection system. config: oinkcode: description: Enter your registration code or oinkcode for paid NIDS rulesets. diff --git a/salt/influxdb/soc_influxdb.yaml b/salt/influxdb/soc_influxdb.yaml index 42566a0a8..6234d17ac 100644 --- a/salt/influxdb/soc_influxdb.yaml +++ b/salt/influxdb/soc_influxdb.yaml @@ -1,6 +1,6 @@ influxdb: enabled: - description: You can enable or disable InfluxDB. + description: Enables the grid metrics collection storage system. Security Onion grid health monitoring requires this process to remain enabled. WARNING: Disabling the process is unsupported, and will cause unexpected results. helpLink: influxdb.html config: assets-path: diff --git a/salt/kibana/soc_kibana.yaml b/salt/kibana/soc_kibana.yaml index c95512b58..8ac0e8e47 100644 --- a/salt/kibana/soc_kibana.yaml +++ b/salt/kibana/soc_kibana.yaml @@ -1,6 +1,6 @@ kibana: enabled: - description: You can enable or disable Kibana. + description: Enables or disables the Kibana front-end interface to Elasticsearch. Due to Kibana being used for loading certain configuration details in Elasticsearch, this process should remain enabled. WARNING: Disabling the process is unsupported, and will cause unexpected results. helpLink: kibana.html config: elasticsearch: diff --git a/salt/kratos/soc_kratos.yaml b/salt/kratos/soc_kratos.yaml index 6285bf1ad..6e354e574 100644 --- a/salt/kratos/soc_kratos.yaml +++ b/salt/kratos/soc_kratos.yaml @@ -1,6 +1,6 @@ kratos: enabled: - description: You can enable or disable Kratos. + description: Enables or disables the Kratos authentication system. WARNING: Disabling this process will cause the grid to malfunction. Re-enabling this setting will require manual effort via SSH. advanced: True helpLink: kratos.html diff --git a/salt/logstash/soc_logstash.yaml b/salt/logstash/soc_logstash.yaml index cc81d3103..b617abfdd 100644 --- a/salt/logstash/soc_logstash.yaml +++ b/salt/logstash/soc_logstash.yaml @@ -1,6 +1,6 @@ logstash: enabled: - description: You can enable or disable Logstash. + description: Enables or disables the Logstash log event forwarding process. On most grid installations, when this process is disabled log events are unable to be ingested into the SOC backend. helpLink: logstash.html assigned_pipelines: roles: diff --git a/salt/manager/soc_manager.yaml b/salt/manager/soc_manager.yaml index 076725691..cf78658de 100644 --- a/salt/manager/soc_manager.yaml +++ b/salt/manager/soc_manager.yaml @@ -1,7 +1,7 @@ manager: reposync: enabled: - description: This is the daily task of syncing the Security Onion OS packages. It is recommended that you leave this enabled. + description: This is the daily task of syncing the Security Onion OS packages. It is recommended that this setting remain enabled to ensure important updates are applied to the grid on an automated, scheduled basis. global: True helpLink: soup.html hour: diff --git a/salt/nginx/soc_nginx.yaml b/salt/nginx/soc_nginx.yaml index 56bbd888f..4dcf5b3b9 100644 --- a/salt/nginx/soc_nginx.yaml +++ b/salt/nginx/soc_nginx.yaml @@ -1,6 +1,6 @@ nginx: enabled: - description: You can enable or disable Nginx. + description: Enables or disables the Nginx web server and reverse proxy. WARNING: Disabling this process will prevent access to SOC and other important web interfaces and APIs. Re-enabling the process is a manual effort. Do not change this setting without instruction from Security Onion support. advanced: True helpLink: nginx.html external_suricata: diff --git a/salt/patch/soc_patch.yaml b/salt/patch/soc_patch.yaml index ba9b5a4b3..26cfc695e 100644 --- a/salt/patch/soc_patch.yaml +++ b/salt/patch/soc_patch.yaml @@ -1,7 +1,7 @@ patch: os: enabled: - description: Enable OS updates. + description: Enable OS updates. WARNING: Disabling this setting will prevent important operating system updates from being applied on a scheduled basis. helpLink: soup.html schedule_to_run: description: Currently running schedule for updates. diff --git a/salt/pcap/soc_pcap.yaml b/salt/pcap/soc_pcap.yaml index 65fb99d86..c9136512f 100644 --- a/salt/pcap/soc_pcap.yaml +++ b/salt/pcap/soc_pcap.yaml @@ -1,6 +1,6 @@ pcap: enabled: - description: You can enable or disable Stenographer on all sensors or a single sensor. + description: Enables or disables the Stenographer packet recording process. This process may already be disabled if Suricata is being used as the packet capture process. helpLink: stenographer.html config: maxdirectoryfiles: diff --git a/salt/redis/soc_redis.yaml b/salt/redis/soc_redis.yaml index 45c63ffd3..76b7a1175 100644 --- a/salt/redis/soc_redis.yaml +++ b/salt/redis/soc_redis.yaml @@ -1,6 +1,6 @@ redis: enabled: - description: You can enable or disable Redis. + description: Enables the log event in-memory buffering process. Thsi may already be disabled on some installation types. Disabling this process on distributed-capable grids can result in loss of log events. helpLink: redis.html config: bind: diff --git a/salt/registry/soc_registry.yaml b/salt/registry/soc_registry.yaml index 7fc3a161f..b1d51c827 100644 --- a/salt/registry/soc_registry.yaml +++ b/salt/registry/soc_registry.yaml @@ -1,4 +1,4 @@ registry: enabled: - description: You can enable or disable the registry. + description: Enables or disables the Docker registry on the manager node. WARNING: If this process is disabled the grid will malfunction and a manual effort may be needed to re-enable the setting. advanced: True diff --git a/salt/sensoroni/soc_sensoroni.yaml b/salt/sensoroni/soc_sensoroni.yaml index 7b8495dc5..71a2c779b 100644 --- a/salt/sensoroni/soc_sensoroni.yaml +++ b/salt/sensoroni/soc_sensoroni.yaml @@ -1,6 +1,6 @@ sensoroni: enabled: - description: Enable or disable Sensoroni. + description: Enable or disable the per-node SOC agent process. This process is used for performing node-related jobs and reporting node metrics back to SOC. Disabling this process is unsupported and will result in an improperly functioning grid. advanced: True helpLink: grid.html config: diff --git a/salt/soc/soc_soc.yaml b/salt/soc/soc_soc.yaml index 760001120..2f0464779 100644 --- a/salt/soc/soc_soc.yaml +++ b/salt/soc/soc_soc.yaml @@ -1,6 +1,6 @@ soc: enabled: - description: You can enable or disable SOC. + description: Enables or disables SOC. WARNING: Disabling this setting is unsupported and will cause the grid to malfunction. Re-enabling this setting is a manual effort via SSH. advanced: True telemetryEnabled: title: SOC Telemetry diff --git a/salt/stig/soc_stig.yaml b/salt/stig/soc_stig.yaml index 597aab809..81794c5de 100644 --- a/salt/stig/soc_stig.yaml +++ b/salt/stig/soc_stig.yaml @@ -1,6 +1,6 @@ stig: enabled: - description: You can enable or disable the application of STIGS using oscap. Note that the actions performed by OSCAP are not automatically reversible. Requires a valid Security Onion license key. + description: Enables or disables the application of STIGS using oscap. Note that the actions performed by OSCAP are not automatically reversible. Requires a valid Security Onion license key. forcedType: bool advanced: True run_interval: diff --git a/salt/strelka/soc_strelka.yaml b/salt/strelka/soc_strelka.yaml index 947215bd5..1dc4fa455 100644 --- a/salt/strelka/soc_strelka.yaml +++ b/salt/strelka/soc_strelka.yaml @@ -1,7 +1,7 @@ strelka: backend: enabled: - description: You can enable or disable Strelka backend. + description: Enables or disables the Strelka file analysis process. helpLink: strelka.html config: backend: diff --git a/salt/suricata/soc_suricata.yaml b/salt/suricata/soc_suricata.yaml index f865468e1..35a9f6ce5 100644 --- a/salt/suricata/soc_suricata.yaml +++ b/salt/suricata/soc_suricata.yaml @@ -1,6 +1,6 @@ suricata: enabled: - description: You can enable or disable Suricata. + description: Enables or disables the Suricata process. This process is used for triggering alerts and optionally for packet meta-data collection and network packet recording. helpLink: suricata.html thresholding: sids__yaml: diff --git a/salt/telegraf/soc_telegraf.yaml b/salt/telegraf/soc_telegraf.yaml index e6e7ea9a2..9a7090fe6 100644 --- a/salt/telegraf/soc_telegraf.yaml +++ b/salt/telegraf/soc_telegraf.yaml @@ -1,6 +1,7 @@ telegraf: enabled: - description: You can enable or disable Telegraf. + description: Enables the grid metrics collection process. WARNING: Security Onion grid health monitoring requires this process to remain enabled. Disabling it will cause unexpected and unsupported results. + advanced: True helpLink: influxdb.html config: interval: diff --git a/salt/zeek/soc_zeek.yaml b/salt/zeek/soc_zeek.yaml index 1594eed58..47205bd69 100644 --- a/salt/zeek/soc_zeek.yaml +++ b/salt/zeek/soc_zeek.yaml @@ -1,6 +1,6 @@ zeek: enabled: - description: You can enable or disable ZEEK on all sensors or a single sensor. + description: Controls whether the Zeek (network packet inspection) process runs. Disabling this process could result in missed alerts and other important NIDS-related information. If Suricata was selected as the packet meta-data engine during setup then this will already be disabled. helpLink: zeek.html config: local: From e0c499645d699fdcd471125cd36537369fe855a9 Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Mon, 16 Sep 2024 10:12:09 -0400 Subject: [PATCH 027/175] Clarify enabled settings --- salt/elasticfleet/soc_elasticfleet.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/salt/elasticfleet/soc_elasticfleet.yaml b/salt/elasticfleet/soc_elasticfleet.yaml index b29d228a1..1c25e9d04 100644 --- a/salt/elasticfleet/soc_elasticfleet.yaml +++ b/salt/elasticfleet/soc_elasticfleet.yaml @@ -1,6 +1,6 @@ elasticfleet: enabled: - description: Enables or disables the Elatic Fleet process. This process is critical for ensuring HIDS events are made available in SOC. + description: Enables or disables the Elastic Fleet process. This process is critical for ensuring HIDS events are made available in SOC. advanced: True helpLink: elastic-fleet.html enable_manager_output: From 1f6735a14de27ca6a29c939ff421707e6e140cad Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Mon, 16 Sep 2024 10:12:54 -0400 Subject: [PATCH 028/175] Clarify enabled settings --- salt/idh/soc_idh.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/salt/idh/soc_idh.yaml b/salt/idh/soc_idh.yaml index ecbc7cc43..0d8ccb393 100644 --- a/salt/idh/soc_idh.yaml +++ b/salt/idh/soc_idh.yaml @@ -1,6 +1,6 @@ idh: enabled: - description: Enables or disables the Intrustion Detection Honeypot (IDH) process. + description: Enables or disables the Intrusion Detection Honeypot (IDH) process. helpLink: idh.html opencanary: config: From b4e8dd8a7b5bf9591e93690c808ad5c0f429796b Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Mon, 16 Sep 2024 10:14:52 -0400 Subject: [PATCH 029/175] Clarify enabled settings --- salt/redis/soc_redis.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/salt/redis/soc_redis.yaml b/salt/redis/soc_redis.yaml index 76b7a1175..621cc0fbb 100644 --- a/salt/redis/soc_redis.yaml +++ b/salt/redis/soc_redis.yaml @@ -1,6 +1,6 @@ redis: enabled: - description: Enables the log event in-memory buffering process. Thsi may already be disabled on some installation types. Disabling this process on distributed-capable grids can result in loss of log events. + description: Enables the log event in-memory buffering process. This process might already be disabled on some installation types. Disabling this process on distributed-capable grids can result in loss of log events. helpLink: redis.html config: bind: From 0566f46d5b889e5fcab034c5489d15300e08e69d Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Mon, 16 Sep 2024 10:41:01 -0400 Subject: [PATCH 030/175] Clarify enabled settings --- .../soc_elastic-fleet-package-registry.yaml | 2 +- salt/elasticfleet/soc_elasticfleet.yaml | 2 +- salt/idstools/soc_idstools.yaml | 2 +- salt/suricata/soc_suricata.yaml | 2 +- salt/zeek/soc_zeek.yaml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/salt/elastic-fleet-package-registry/soc_elastic-fleet-package-registry.yaml b/salt/elastic-fleet-package-registry/soc_elastic-fleet-package-registry.yaml index 84303fd30..3d8a2112b 100644 --- a/salt/elastic-fleet-package-registry/soc_elastic-fleet-package-registry.yaml +++ b/salt/elastic-fleet-package-registry/soc_elastic-fleet-package-registry.yaml @@ -1,4 +1,4 @@ elastic_fleet_package_registry: enabled: - description: Enables or disables the Fleet package registry process. This process must remain enabled for proper HIDS functionality. + description: Enables or disables the Fleet package registry process. This process must remain enabled to allow Elastic Agent packages to be updated. advanced: True diff --git a/salt/elasticfleet/soc_elasticfleet.yaml b/salt/elasticfleet/soc_elasticfleet.yaml index 1c25e9d04..26efce941 100644 --- a/salt/elasticfleet/soc_elasticfleet.yaml +++ b/salt/elasticfleet/soc_elasticfleet.yaml @@ -1,6 +1,6 @@ elasticfleet: enabled: - description: Enables or disables the Elastic Fleet process. This process is critical for ensuring HIDS events are made available in SOC. + description: Enables or disables the Elastic Fleet process. This process is critical for managing Elastic Agents. advanced: True helpLink: elastic-fleet.html enable_manager_output: diff --git a/salt/idstools/soc_idstools.yaml b/salt/idstools/soc_idstools.yaml index a27a0e683..4f7a53e91 100644 --- a/salt/idstools/soc_idstools.yaml +++ b/salt/idstools/soc_idstools.yaml @@ -1,6 +1,6 @@ idstools: enabled: - description: Enables or disables the IDS tools process, which is used by the Detection system. + description: Enables or disables the IDStools process which is used by the Detection system. config: oinkcode: description: Enter your registration code or oinkcode for paid NIDS rulesets. diff --git a/salt/suricata/soc_suricata.yaml b/salt/suricata/soc_suricata.yaml index 35a9f6ce5..8b5ce7b11 100644 --- a/salt/suricata/soc_suricata.yaml +++ b/salt/suricata/soc_suricata.yaml @@ -1,6 +1,6 @@ suricata: enabled: - description: Enables or disables the Suricata process. This process is used for triggering alerts and optionally for packet meta-data collection and network packet recording. + description: Enables or disables the Suricata process. This process is used for triggering alerts and optionally for protocol metadata collection and full packet capture. helpLink: suricata.html thresholding: sids__yaml: diff --git a/salt/zeek/soc_zeek.yaml b/salt/zeek/soc_zeek.yaml index 47205bd69..f5f718114 100644 --- a/salt/zeek/soc_zeek.yaml +++ b/salt/zeek/soc_zeek.yaml @@ -1,6 +1,6 @@ zeek: enabled: - description: Controls whether the Zeek (network packet inspection) process runs. Disabling this process could result in missed alerts and other important NIDS-related information. If Suricata was selected as the packet meta-data engine during setup then this will already be disabled. + description: Controls whether the Zeek (network packet inspection) process runs. Disabling this process could result in loss of network protocol metadata. If Suricata was selected as the protocol metadata engine during setup then this will already be disabled. helpLink: zeek.html config: local: From 56666ad82c237ffa068b5af7e0ec81ff53bfb0ea Mon Sep 17 00:00:00 2001 From: m0duspwnens Date: Mon, 16 Sep 2024 11:19:16 -0400 Subject: [PATCH 031/175] resolve 13247 --- salt/common/tools/sbin/so-common | 2 ++ salt/manager/tools/sbin/soup | 14 ++++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/salt/common/tools/sbin/so-common b/salt/common/tools/sbin/so-common index 6ae35324f..2b557a306 100755 --- a/salt/common/tools/sbin/so-common +++ b/salt/common/tools/sbin/so-common @@ -249,8 +249,10 @@ download_and_verify() { fi if ! verify_md5_checksum "$dest_file" "$md5_file"; then + set +e retry 15 10 "curl --fail --retry 5 --retry-delay 15 -L '$source_url' --output '$dest_file'" "" "" retry 15 10 "curl --fail --retry 5 --retry-delay 15 -L '$source_md5_url' --output '$md5_file'" "" "" + set -e if verify_md5_checksum "$dest_file" "$md5_file"; then echo "Source file and checksum are good." diff --git a/salt/manager/tools/sbin/soup b/salt/manager/tools/sbin/soup index 7807c9884..b14cf97e7 100755 --- a/salt/manager/tools/sbin/soup +++ b/salt/manager/tools/sbin/soup @@ -525,11 +525,17 @@ stop_salt_master() { pkill -9 -ef "/usr/bin/python3 /bin/salt" >> $SOUP_LOG 2>&1 echo "" - echo "Storing salt-master pid." + echo "Storing salt-master PID." MASTERPID=$(pgrep -f '/opt/saltstack/salt/bin/python3.10 /usr/bin/salt-master MainProcess') - echo "Found salt-master PID $MASTERPID" - systemctl_func "stop" "salt-master" - timeout 30 tail --pid=$MASTERPID -f /dev/null || echo "salt-master still running at $(date +"%T.%6N") after waiting 30s. We cannot kill due to systemd restart option." + if [ ! -z "$MASTERPID" ]; then + echo "Found salt-master PID $MASTERPID" + systemctl_func "stop" "salt-master" + if ps -p "$MASTERPID" > /dev/null 2>&1; then + timeout 30 tail --pid=$MASTERPID -f /dev/null || echo "salt-master still running at $(date +"%T.%6N") after waiting 30s. We cannot kill due to systemd restart option." + fi + else + echo "The salt-master PID was not found. The process '/usr/bin/salt-master MainProcess' is not running." + fi set -e } From 0ab2695cebbd20505392e35373fa373b19161008 Mon Sep 17 00:00:00 2001 From: m0duspwnens Date: Mon, 16 Sep 2024 13:11:08 -0400 Subject: [PATCH 032/175] move set to soup --- salt/common/tools/sbin/so-common | 2 -- salt/manager/tools/sbin/soup | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/salt/common/tools/sbin/so-common b/salt/common/tools/sbin/so-common index 2b557a306..6ae35324f 100755 --- a/salt/common/tools/sbin/so-common +++ b/salt/common/tools/sbin/so-common @@ -249,10 +249,8 @@ download_and_verify() { fi if ! verify_md5_checksum "$dest_file" "$md5_file"; then - set +e retry 15 10 "curl --fail --retry 5 --retry-delay 15 -L '$source_url' --output '$dest_file'" "" "" retry 15 10 "curl --fail --retry 5 --retry-delay 15 -L '$source_md5_url' --output '$md5_file'" "" "" - set -e if verify_md5_checksum "$dest_file" "$md5_file"; then echo "Source file and checksum are good." diff --git a/salt/manager/tools/sbin/soup b/salt/manager/tools/sbin/soup index b14cf97e7..452300bba 100755 --- a/salt/manager/tools/sbin/soup +++ b/salt/manager/tools/sbin/soup @@ -843,8 +843,10 @@ determine_elastic_agent_upgrade() { if [[ $is_airgap -eq 0 ]]; then update_elastic_agent_airgap else + set +e # the new elasticsearch defaults.yaml file is not yet placed in /opt/so/saltstack/default/salt/elasticsearch yet update_elastic_agent "$UPDATE_DIR" + set -e fi } From cce9e162d4846550fe07205d64321a35a72601f5 Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Mon, 16 Sep 2024 15:30:14 -0400 Subject: [PATCH 033/175] remove colon to avoid yaml parsing problems --- salt/elasticsearch/soc_elasticsearch.yaml | 2 +- salt/influxdb/soc_influxdb.yaml | 2 +- salt/kibana/soc_kibana.yaml | 2 +- salt/kratos/soc_kratos.yaml | 2 +- salt/nginx/soc_nginx.yaml | 2 +- salt/patch/soc_patch.yaml | 2 +- salt/registry/soc_registry.yaml | 2 +- salt/soc/soc_soc.yaml | 2 +- salt/telegraf/soc_telegraf.yaml | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/salt/elasticsearch/soc_elasticsearch.yaml b/salt/elasticsearch/soc_elasticsearch.yaml index 8c28d256a..31a8a7f6f 100644 --- a/salt/elasticsearch/soc_elasticsearch.yaml +++ b/salt/elasticsearch/soc_elasticsearch.yaml @@ -1,6 +1,6 @@ elasticsearch: enabled: - description: Enables or disables the Elasticsearch process. This process provides the log event storage system. WARNING: Disabling this process is unsupported. + description: Enables or disables the Elasticsearch process. This process provides the log event storage system. WARNING - Disabling this process is unsupported. advanced: True helpLink: elasticsearch.html version: diff --git a/salt/influxdb/soc_influxdb.yaml b/salt/influxdb/soc_influxdb.yaml index 6234d17ac..846152cf3 100644 --- a/salt/influxdb/soc_influxdb.yaml +++ b/salt/influxdb/soc_influxdb.yaml @@ -1,6 +1,6 @@ influxdb: enabled: - description: Enables the grid metrics collection storage system. Security Onion grid health monitoring requires this process to remain enabled. WARNING: Disabling the process is unsupported, and will cause unexpected results. + description: Enables the grid metrics collection storage system. Security Onion grid health monitoring requires this process to remain enabled. WARNING - Disabling the process is unsupported, and will cause unexpected results. helpLink: influxdb.html config: assets-path: diff --git a/salt/kibana/soc_kibana.yaml b/salt/kibana/soc_kibana.yaml index 8ac0e8e47..2c097ce1c 100644 --- a/salt/kibana/soc_kibana.yaml +++ b/salt/kibana/soc_kibana.yaml @@ -1,6 +1,6 @@ kibana: enabled: - description: Enables or disables the Kibana front-end interface to Elasticsearch. Due to Kibana being used for loading certain configuration details in Elasticsearch, this process should remain enabled. WARNING: Disabling the process is unsupported, and will cause unexpected results. + description: Enables or disables the Kibana front-end interface to Elasticsearch. Due to Kibana being used for loading certain configuration details in Elasticsearch, this process should remain enabled. WARNING - Disabling the process is unsupported, and will cause unexpected results. helpLink: kibana.html config: elasticsearch: diff --git a/salt/kratos/soc_kratos.yaml b/salt/kratos/soc_kratos.yaml index 6e354e574..a362bb299 100644 --- a/salt/kratos/soc_kratos.yaml +++ b/salt/kratos/soc_kratos.yaml @@ -1,6 +1,6 @@ kratos: enabled: - description: Enables or disables the Kratos authentication system. WARNING: Disabling this process will cause the grid to malfunction. Re-enabling this setting will require manual effort via SSH. + description: Enables or disables the Kratos authentication system. WARNING - Disabling this process will cause the grid to malfunction. Re-enabling this setting will require manual effort via SSH. advanced: True helpLink: kratos.html diff --git a/salt/nginx/soc_nginx.yaml b/salt/nginx/soc_nginx.yaml index 4dcf5b3b9..07abd32ce 100644 --- a/salt/nginx/soc_nginx.yaml +++ b/salt/nginx/soc_nginx.yaml @@ -1,6 +1,6 @@ nginx: enabled: - description: Enables or disables the Nginx web server and reverse proxy. WARNING: Disabling this process will prevent access to SOC and other important web interfaces and APIs. Re-enabling the process is a manual effort. Do not change this setting without instruction from Security Onion support. + description: Enables or disables the Nginx web server and reverse proxy. WARNING - Disabling this process will prevent access to SOC and other important web interfaces and APIs. Re-enabling the process is a manual effort. Do not change this setting without instruction from Security Onion support. advanced: True helpLink: nginx.html external_suricata: diff --git a/salt/patch/soc_patch.yaml b/salt/patch/soc_patch.yaml index 26cfc695e..1618a0f75 100644 --- a/salt/patch/soc_patch.yaml +++ b/salt/patch/soc_patch.yaml @@ -1,7 +1,7 @@ patch: os: enabled: - description: Enable OS updates. WARNING: Disabling this setting will prevent important operating system updates from being applied on a scheduled basis. + description: Enable OS updates. WARNING - Disabling this setting will prevent important operating system updates from being applied on a scheduled basis. helpLink: soup.html schedule_to_run: description: Currently running schedule for updates. diff --git a/salt/registry/soc_registry.yaml b/salt/registry/soc_registry.yaml index b1d51c827..7d6cefe8c 100644 --- a/salt/registry/soc_registry.yaml +++ b/salt/registry/soc_registry.yaml @@ -1,4 +1,4 @@ registry: enabled: - description: Enables or disables the Docker registry on the manager node. WARNING: If this process is disabled the grid will malfunction and a manual effort may be needed to re-enable the setting. + description: Enables or disables the Docker registry on the manager node. WARNING - If this process is disabled the grid will malfunction and a manual effort may be needed to re-enable the setting. advanced: True diff --git a/salt/soc/soc_soc.yaml b/salt/soc/soc_soc.yaml index 2f0464779..8087fe2c3 100644 --- a/salt/soc/soc_soc.yaml +++ b/salt/soc/soc_soc.yaml @@ -1,6 +1,6 @@ soc: enabled: - description: Enables or disables SOC. WARNING: Disabling this setting is unsupported and will cause the grid to malfunction. Re-enabling this setting is a manual effort via SSH. + description: Enables or disables SOC. WARNING - Disabling this setting is unsupported and will cause the grid to malfunction. Re-enabling this setting is a manual effort via SSH. advanced: True telemetryEnabled: title: SOC Telemetry diff --git a/salt/telegraf/soc_telegraf.yaml b/salt/telegraf/soc_telegraf.yaml index 9a7090fe6..b54913da7 100644 --- a/salt/telegraf/soc_telegraf.yaml +++ b/salt/telegraf/soc_telegraf.yaml @@ -1,6 +1,6 @@ telegraf: enabled: - description: Enables the grid metrics collection process. WARNING: Security Onion grid health monitoring requires this process to remain enabled. Disabling it will cause unexpected and unsupported results. + description: Enables the grid metrics collection process. WARNING - Security Onion grid health monitoring requires this process to remain enabled. Disabling it will cause unexpected and unsupported results. advanced: True helpLink: influxdb.html config: From cf0d56eee7cd772b0b0a954ef548494b5bd8c041 Mon Sep 17 00:00:00 2001 From: Wes Date: Tue, 17 Sep 2024 19:24:31 +0000 Subject: [PATCH 034/175] Fix suricata alerts for opnsense and pfsense --- .../files/ingest/logs-pfsense.log-1.16.0 | 2 +- .../ingest/logs-pfsense.log-1.16.0-suricata | 7 +- .../files/ingest/logs-pfsense.log-1.19.1 | 414 ++++++++++++++++++ .../files/ingest/suricata.alert_pfsense | 16 + .../files/ingest/suricata.common_pfsense | 23 + 5 files changed, 460 insertions(+), 2 deletions(-) create mode 100644 salt/elasticsearch/files/ingest/logs-pfsense.log-1.19.1 create mode 100644 salt/elasticsearch/files/ingest/suricata.alert_pfsense create mode 100644 salt/elasticsearch/files/ingest/suricata.common_pfsense diff --git a/salt/elasticsearch/files/ingest/logs-pfsense.log-1.16.0 b/salt/elasticsearch/files/ingest/logs-pfsense.log-1.16.0 index af31e1518..f53abb0e3 100644 --- a/salt/elasticsearch/files/ingest/logs-pfsense.log-1.16.0 +++ b/salt/elasticsearch/files/ingest/logs-pfsense.log-1.16.0 @@ -1,5 +1,5 @@ { - "description": "Pipeline for pfSense", + "description": "Pipeline for PFsense", "processors": [ { "set": { diff --git a/salt/elasticsearch/files/ingest/logs-pfsense.log-1.16.0-suricata b/salt/elasticsearch/files/ingest/logs-pfsense.log-1.16.0-suricata index f3a14af44..9cb10c2bb 100644 --- a/salt/elasticsearch/files/ingest/logs-pfsense.log-1.16.0-suricata +++ b/salt/elasticsearch/files/ingest/logs-pfsense.log-1.16.0-suricata @@ -1,9 +1,14 @@ { "description": "Pipeline for parsing pfSense Suricata logs.", "processors": [ + { "set": { + "field": "event.module", + "value": "suricata" + } + }, { "pipeline": { - "name": "suricata.common" + "name": "suricata.common_pfsense" } } ], diff --git a/salt/elasticsearch/files/ingest/logs-pfsense.log-1.19.1 b/salt/elasticsearch/files/ingest/logs-pfsense.log-1.19.1 new file mode 100644 index 000000000..6166f6b55 --- /dev/null +++ b/salt/elasticsearch/files/ingest/logs-pfsense.log-1.19.1 @@ -0,0 +1,414 @@ +{ + "description": "Pipeline for PFsense", + "processors": [ + { + "set": { + "field": "ecs.version", + "value": "8.11.0" + } + }, + { + "set": { + "field": "observer.vendor", + "value": "netgate" + } + }, + { + "set": { + "field": "observer.type", + "value": "firewall" + } + }, + { + "rename": { + "field": "message", + "target_field": "event.original", + "ignore_missing": true, + "if": "ctx.event?.original == null" + } + }, + { + "set": { + "field": "event.kind", + "value": "event" + } + }, + { + "set": { + "field": "event.timezone", + "value": "{{_tmp.tz_offset}}", + "if": "ctx._tmp?.tz_offset != null && ctx._tmp?.tz_offset != 'local'" + } + }, + { + "grok": { + "description": "Parse syslog header", + "field": "event.original", + "patterns": [ + "^(%{ECS_SYSLOG_PRI})?%{TIMESTAMP} %{GREEDYDATA:message}" + ], + "pattern_definitions": { + "ECS_SYSLOG_PRI": "<%{NONNEGINT:log.syslog.priority:long}>(\\d )?", + "TIMESTAMP": "(?:%{BSD_TIMESTAMP_FORMAT}|%{SYSLOG_TIMESTAMP_FORMAT})", + "BSD_TIMESTAMP_FORMAT": "%{SYSLOGTIMESTAMP:_tmp.timestamp}(%{SPACE}%{BSD_PROCNAME}|%{SPACE}%{OBSERVER}%{SPACE}%{BSD_PROCNAME})(\\[%{POSINT:process.pid:long}\\])?:", + "BSD_PROCNAME": "(?:\\b%{NAME:process.name}|\\(%{NAME:process.name}\\))", + "NAME": "[[[:alnum:]]_-]+", + "SYSLOG_TIMESTAMP_FORMAT": "%{TIMESTAMP_ISO8601:_tmp.timestamp8601}%{SPACE}%{OBSERVER}%{SPACE}%{PROCESS}%{SPACE}(%{POSINT:process.pid:long}|-) - (-|%{META})", + "TIMESTAMP_ISO8601": "%{YEAR}-%{MONTHNUM}-%{MONTHDAY}[T ]%{HOUR}:?%{MINUTE}(?::?%{SECOND})?%{ISO8601_TIMEZONE:event.timezone}?", + "OBSERVER": "(?:%{IP:observer.ip}|%{HOSTNAME:observer.name})", + "UNIXPATH": "(/([\\w_%!$@:.,+~-]+|\\\\.)*)*", + "PROCESS": "(\\(%{DATA:process.name}\\)|(?:%{UNIXPATH})%{BASEPATH:process.name})", + "BASEPATH": "[[[:alnum:]]_%!$@:.,+~-]+", + "META": "\\[[^\\]]*\\]" + } + } + }, + { + "date": { + "if": "ctx._tmp.timestamp8601 != null", + "field": "_tmp.timestamp8601", + "target_field": "@timestamp", + "formats": [ + "ISO8601" + ] + } + }, + { + "date": { + "if": "ctx.event?.timezone != null && ctx._tmp?.timestamp != null", + "field": "_tmp.timestamp", + "target_field": "@timestamp", + "formats": [ + "MMM d HH:mm:ss", + "MMM d HH:mm:ss", + "MMM dd HH:mm:ss" + ], + "timezone": "{{ event.timezone }}" + } + }, + { + "grok": { + "description": "Set Event Provider", + "field": "process.name", + "patterns": [ + "^%{HYPHENATED_WORDS:event.provider}" + ], + "pattern_definitions": { + "HYPHENATED_WORDS": "\\b[A-Za-z0-9_]+(-[A-Za-z_]+)*\\b" + } + } + }, + { + "pipeline": { + "name": "logs-pfsense.log-1.19.1-firewall", + "if": "ctx.event.provider == 'filterlog'" + } + }, + { + "pipeline": { + "name": "logs-pfsense.log-1.19.1-openvpn", + "if": "ctx.event.provider == 'openvpn'" + } + }, + { + "pipeline": { + "name": "logs-pfsense.log-1.19.1-ipsec", + "if": "ctx.event.provider == 'charon'" + } + }, + { + "pipeline": { + "name": "logs-pfsense.log-1.19.1-dhcp", + "if": "[\"dhcpd\", \"dhclient\", \"dhcp6c\"].contains(ctx.event.provider)" + } + }, + { + "pipeline": { + "name": "logs-pfsense.log-1.19.1-unbound", + "if": "ctx.event.provider == 'unbound'" + } + }, + { + "pipeline": { + "name": "logs-pfsense.log-1.19.1-haproxy", + "if": "ctx.event.provider == 'haproxy'" + } + }, + { + "pipeline": { + "name": "logs-pfsense.log-1.19.1-php-fpm", + "if": "ctx.event.provider == 'php-fpm'" + } + }, + { + "pipeline": { + "name": "logs-pfsense.log-1.19.1-squid", + "if": "ctx.event.provider == 'squid'" + } + }, + { + "pipeline": { + "name": "logs-pfsense.log-1.16.0-suricata", + "if": "ctx.event.provider == 'suricata'" + } + }, + { + "drop": { + "if": "![\"filterlog\", \"openvpn\", \"charon\", \"dhcpd\", \"dhclient\", \"dhcp6c\", \"unbound\", \"haproxy\", \"php-fpm\", \"squid\", \"suricata\"].contains(ctx.event?.provider)" + } + }, + { + "append": { + "field": "event.category", + "value": "network", + "if": "ctx.network != null" + } + }, + { + "convert": { + "field": "source.address", + "target_field": "source.ip", + "type": "ip", + "ignore_failure": true, + "ignore_missing": true + } + }, + { + "convert": { + "field": "destination.address", + "target_field": "destination.ip", + "type": "ip", + "ignore_failure": true, + "ignore_missing": true + } + }, + { + "set": { + "field": "network.type", + "value": "ipv6", + "if": "ctx.source?.ip != null && ctx.source.ip.contains(\":\")" + } + }, + { + "set": { + "field": "network.type", + "value": "ipv4", + "if": "ctx.source?.ip != null && ctx.source.ip.contains(\".\")" + } + }, + { + "geoip": { + "field": "source.ip", + "target_field": "source.geo", + "ignore_missing": true + } + }, + { + "geoip": { + "field": "destination.ip", + "target_field": "destination.geo", + "ignore_missing": true + } + }, + { + "geoip": { + "ignore_missing": true, + "database_file": "GeoLite2-ASN.mmdb", + "field": "source.ip", + "target_field": "source.as", + "properties": [ + "asn", + "organization_name" + ] + } + }, + { + "geoip": { + "database_file": "GeoLite2-ASN.mmdb", + "field": "destination.ip", + "target_field": "destination.as", + "properties": [ + "asn", + "organization_name" + ], + "ignore_missing": true + } + }, + { + "rename": { + "field": "source.as.asn", + "target_field": "source.as.number", + "ignore_missing": true + } + }, + { + "rename": { + "field": "source.as.organization_name", + "target_field": "source.as.organization.name", + "ignore_missing": true + } + }, + { + "rename": { + "field": "destination.as.asn", + "target_field": "destination.as.number", + "ignore_missing": true + } + }, + { + "rename": { + "field": "destination.as.organization_name", + "target_field": "destination.as.organization.name", + "ignore_missing": true + } + }, + { + "community_id": { + "target_field": "network.community_id", + "ignore_failure": true + } + }, + { + "grok": { + "field": "observer.ingress.interface.name", + "patterns": [ + "%{DATA}.%{NONNEGINT:observer.ingress.vlan.id}" + ], + "ignore_missing": true, + "ignore_failure": true + } + }, + { + "set": { + "field": "network.vlan.id", + "copy_from": "observer.ingress.vlan.id", + "ignore_empty_value": true + } + }, + { + "append": { + "field": "related.ip", + "value": "{{destination.ip}}", + "allow_duplicates": false, + "if": "ctx.destination?.ip != null" + } + }, + { + "append": { + "field": "related.ip", + "value": "{{source.ip}}", + "allow_duplicates": false, + "if": "ctx.source?.ip != null" + } + }, + { + "append": { + "field": "related.ip", + "value": "{{source.nat.ip}}", + "allow_duplicates": false, + "if": "ctx.source?.nat?.ip != null" + } + }, + { + "append": { + "field": "related.hosts", + "value": "{{destination.domain}}", + "if": "ctx.destination?.domain != null" + } + }, + { + "append": { + "field": "related.user", + "value": "{{user.name}}", + "if": "ctx.user?.name != null" + } + }, + { + "set": { + "field": "network.direction", + "value": "{{network.direction}}bound", + "if": "ctx.network?.direction != null && ctx.network?.direction =~ /^(in|out)$/" + } + }, + { + "remove": { + "field": [ + "_tmp" + ], + "ignore_failure": true + } + }, + { + "script": { + "lang": "painless", + "description": "This script processor iterates over the whole document to remove fields with null values.", + "source": "void handleMap(Map map) {\n for (def x : map.values()) {\n if (x instanceof Map) {\n handleMap(x);\n } else if (x instanceof List) {\n handleList(x);\n }\n }\n map.values().removeIf(v -> v == null || (v instanceof String && v == \"-\"));\n}\nvoid handleList(List list) {\n for (def x : list) {\n if (x instanceof Map) {\n handleMap(x);\n } else if (x instanceof List) {\n handleList(x);\n }\n }\n}\nhandleMap(ctx);\n" + } + }, + { + "remove": { + "field": "event.original", + "if": "ctx.tags == null || !(ctx.tags.contains('preserve_original_event'))", + "ignore_failure": true, + "ignore_missing": true + } + }, + { + "pipeline": { + "name": "global@custom", + "ignore_missing_pipeline": true, + "description": "[Fleet] Global pipeline for all data streams" + } + }, + { + "pipeline": { + "name": "logs@custom", + "ignore_missing_pipeline": true, + "description": "[Fleet] Pipeline for all data streams of type `logs`" + } + }, + { + "pipeline": { + "name": "logs-pfsense.integration@custom", + "ignore_missing_pipeline": true, + "description": "[Fleet] Pipeline for all data streams of type `logs` defined by the `pfsense` integration" + } + }, + { + "pipeline": { + "name": "logs-pfsense.log@custom", + "ignore_missing_pipeline": true, + "description": "[Fleet] Pipeline for the `pfsense.log` dataset" + } + } + ], + "on_failure": [ + { + "remove": { + "field": [ + "_tmp" + ], + "ignore_failure": true + } + }, + { + "set": { + "field": "event.kind", + "value": "pipeline_error" + } + }, + { + "append": { + "field": "error.message", + "value": "{{{ _ingest.on_failure_message }}}" + } + } + ], + "_meta": { + "managed_by": "fleet", + "managed": true, + "package": { + "name": "pfsense" + } + } +} diff --git a/salt/elasticsearch/files/ingest/suricata.alert_pfsense b/salt/elasticsearch/files/ingest/suricata.alert_pfsense new file mode 100644 index 000000000..32b0a285d --- /dev/null +++ b/salt/elasticsearch/files/ingest/suricata.alert_pfsense @@ -0,0 +1,16 @@ +{ + "description" : "suricata.alert", + "processors" : [ + { "set": { "field": "data_stream.dataset", "value": "suricata" } }, + { "set": { "field": "data_stream.namespace", "value": "so" } }, + { "set": { "field": "_index", "value": "logs-suricata.alerts-so" } }, + { "set": { "field": "tags","value": "alert" }}, + { "rename":{ "field": "message2.alert", "target_field": "rule", "ignore_failure": true } }, + { "rename":{ "field": "rule.signature", "target_field": "rule.name", "ignore_failure": true } }, + { "rename":{ "field": "rule.ref", "target_field": "rule.version", "ignore_failure": true } }, + { "rename":{ "field": "rule.signature_id", "target_field": "rule.uuid", "ignore_failure": true } }, + { "rename":{ "field": "rule.signature_id", "target_field": "rule.signature", "ignore_failure": true } }, + { "rename":{ "field": "message2.payload_printable", "target_field": "network.data.decoded", "ignore_failure": true } }, + { "pipeline": { "name": "common.nids" } } + ] +} diff --git a/salt/elasticsearch/files/ingest/suricata.common_pfsense b/salt/elasticsearch/files/ingest/suricata.common_pfsense new file mode 100644 index 000000000..04da7b482 --- /dev/null +++ b/salt/elasticsearch/files/ingest/suricata.common_pfsense @@ -0,0 +1,23 @@ +{ + "description" : "suricata.common", + "processors" : [ + { "json": { "field": "message", "target_field": "message2", "ignore_failure": true } }, + { "rename": { "field": "message2.pkt_src", "target_field": "network.packet_source","ignore_failure": true } }, + { "rename": { "field": "message2.proto", "target_field": "network.transport", "ignore_failure": true } }, + { "rename": { "field": "message2.in_iface", "target_field": "observer.ingress.interface.name", "ignore_failure": true } }, + { "rename": { "field": "message2.flow_id", "target_field": "log.id.uid", "ignore_failure": true } }, + { "rename": { "field": "message2.src_ip", "target_field": "source.ip", "ignore_failure": true } }, + { "rename": { "field": "message2.src_port", "target_field": "source.port", "ignore_failure": true } }, + { "rename": { "field": "message2.dest_ip", "target_field": "destination.ip", "ignore_failure": true } }, + { "rename": { "field": "message2.dest_port", "target_field": "destination.port", "ignore_failure": true } }, + { "rename": { "field": "message2.vlan", "target_field": "network.vlan.id", "ignore_failure": true } }, + { "rename": { "field": "message2.community_id", "target_field": "network.community_id", "ignore_missing": true } }, + { "rename": { "field": "message2.xff", "target_field": "xff.ip", "ignore_missing": true } }, + { "set": { "field": "event.dataset", "value": "{{ message2.event_type }}" } }, + { "set": { "field": "observer.name", "value": "{{agent.name}}" } }, + { "set": { "field": "event.ingested", "value": "{{@timestamp}}" } }, + { "date": { "field": "message2.timestamp", "target_field": "@timestamp", "formats": ["ISO8601", "UNIX"], "timezone": "UTC", "ignore_failure": true } }, + { "remove":{ "field": "agent", "ignore_failure": true } }, + { "pipeline": { "if": "ctx?.event?.dataset != null", "name": "suricata.{{event.dataset}}_pfsense" } } + ] +} From 764eb98bc2151c6756f65488eb49c9d4984f16e2 Mon Sep 17 00:00:00 2001 From: Wes Date: Tue, 17 Sep 2024 19:43:13 +0000 Subject: [PATCH 035/175] Add custom component for ints --- .../logs-1password.item_usages@custom.json | 36 +++++++++++++++++ ...logs-1password.signin_attempts@custom.json | 36 +++++++++++++++++ .../logs-apache.access@custom.json | 36 +++++++++++++++++ .../logs-apache.error@custom.json | 36 +++++++++++++++++ .../elastic-agent/logs-auditd.log@custom.json | 36 +++++++++++++++++ .../elastic-agent/logs-auth0.logs@custom.json | 36 +++++++++++++++++ .../logs-aws.cloudfront_logs@custom.json | 36 +++++++++++++++++ .../logs-aws.cloudtrail@custom.json | 36 +++++++++++++++++ .../logs-aws.cloudwatch_logs@custom.json | 36 +++++++++++++++++ .../logs-aws.ec2_logs@custom.json | 36 +++++++++++++++++ .../logs-aws.elb_logs@custom.json | 36 +++++++++++++++++ .../logs-aws.firewall_logs@custom.json | 36 +++++++++++++++++ .../logs-aws.guardduty@custom.json | 36 +++++++++++++++++ .../logs-aws.inspector@custom.json | 36 +++++++++++++++++ .../logs-aws.route53_public_logs@custom.json | 36 +++++++++++++++++ ...logs-aws.route53_resolver_logs@custom.json | 36 +++++++++++++++++ .../logs-aws.s3access@custom.json | 36 +++++++++++++++++ .../logs-aws.securityhub_findings@custom.json | 36 +++++++++++++++++ .../logs-aws.securityhub_insights@custom.json | 36 +++++++++++++++++ .../logs-aws.vpcflow@custom.json | 36 +++++++++++++++++ .../elastic-agent/logs-aws.waf@custom.json | 36 +++++++++++++++++ .../logs-azure.activitylogs@custom.json | 36 +++++++++++++++++ ...logs-azure.application_gateway@custom.json | 36 +++++++++++++++++ .../logs-azure.auditlogs@custom.json | 36 +++++++++++++++++ .../logs-azure.eventhub@custom.json | 36 +++++++++++++++++ .../logs-azure.firewall_logs@custom.json | 36 +++++++++++++++++ ...logs-azure.identity_protection@custom.json | 36 +++++++++++++++++ .../logs-azure.platformlogs@custom.json | 36 +++++++++++++++++ .../logs-azure.provisioning@custom.json | 36 +++++++++++++++++ .../logs-azure.signinlogs@custom.json | 36 +++++++++++++++++ .../logs-azure.springcloudlogs@custom.json | 36 +++++++++++++++++ .../logs-barracuda.waf@custom.json | 36 +++++++++++++++++ ...arracuda_cloudgen_firewall.log@custom.json | 36 +++++++++++++++++ .../logs-carbonblack_edr.log@custom.json | 36 +++++++++++++++++ .../elastic-agent/logs-cef.log@custom.json | 36 +++++++++++++++++ .../logs-checkpoint.firewall@custom.json | 36 +++++++++++++++++ .../logs-cisco_asa.log@custom.json | 36 +++++++++++++++++ .../logs-cisco_duo.admin@custom.json | 36 +++++++++++++++++ .../logs-cisco_duo.auth@custom.json | 36 +++++++++++++++++ ...s-cisco_duo.offline_enrollment@custom.json | 36 +++++++++++++++++ .../logs-cisco_duo.summary@custom.json | 36 +++++++++++++++++ .../logs-cisco_duo.telephony@custom.json | 36 +++++++++++++++++ .../logs-cisco_ftd.log@custom.json | 36 +++++++++++++++++ .../logs-cisco_ios.log@custom.json | 36 +++++++++++++++++ .../logs-cisco_ise.log@custom.json | 36 +++++++++++++++++ .../logs-cisco_meraki.events@custom.json | 36 +++++++++++++++++ .../logs-cisco_meraki.log@custom.json | 36 +++++++++++++++++ .../logs-cisco_umbrella.log@custom.json | 36 +++++++++++++++++ .../logs-citrix_adc.interface@custom.json | 36 +++++++++++++++++ .../logs-citrix_adc.lbvserver@custom.json | 36 +++++++++++++++++ .../logs-citrix_adc.service@custom.json | 36 +++++++++++++++++ .../logs-citrix_adc.system@custom.json | 36 +++++++++++++++++ .../logs-citrix_adc.vpn@custom.json | 36 +++++++++++++++++ .../logs-citrix_waf.log@custom.json | 36 +++++++++++++++++ .../logs-cloudflare.audit@custom.json | 36 +++++++++++++++++ .../logs-cloudflare.logpull@custom.json | 36 +++++++++++++++++ .../logs-crowdstrike.falcon@custom.json | 36 +++++++++++++++++ .../logs-crowdstrike.fdr@custom.json | 36 +++++++++++++++++ ...ogs-darktrace.ai_analyst_alert@custom.json | 36 +++++++++++++++++ ...s-darktrace.model_breach_alert@custom.json | 36 +++++++++++++++++ ...-darktrace.system_status_alert@custom.json | 36 +++++++++++++++++ .../logs-elastic_agent.apm_server@custom.json | 36 +++++++++++++++++ .../logs-elastic_agent.auditbeat@custom.json | 36 +++++++++++++++++ .../logs-elastic_agent.cloudbeat@custom.json | 36 +++++++++++++++++ ...lastic_agent.endpoint_security@custom.json | 36 +++++++++++++++++ .../logs-elastic_agent.filebeat@custom.json | 36 +++++++++++++++++ ...ogs-elastic_agent.fleet_server@custom.json | 36 +++++++++++++++++ .../logs-elastic_agent.heartbeat@custom.json | 36 +++++++++++++++++ .../logs-elastic_agent.metricbeat@custom.json | 36 +++++++++++++++++ ...logs-elastic_agent.osquerybeat@custom.json | 36 +++++++++++++++++ .../logs-elastic_agent.packetbeat@custom.json | 36 +++++++++++++++++ .../logs-elastic_agent@custom.json | 40 +++++++++++++++---- .../logs-endpoint.alerts@custom.json | 36 +++++++++++++++++ ...endpoint.diagnostic.collection@custom.json | 40 +++++++++++++++---- .../logs-endpoint.events.api@custom.json | 36 +++++++++++++++++ .../logs-endpoint.events.file@custom.json | 36 +++++++++++++++++ .../logs-endpoint.events.library@custom.json | 36 +++++++++++++++++ .../logs-endpoint.events.network@custom.json | 36 +++++++++++++++++ .../logs-endpoint.events.process@custom.json | 36 +++++++++++++++++ .../logs-endpoint.events.registry@custom.json | 36 +++++++++++++++++ .../logs-endpoint.events.security@custom.json | 36 +++++++++++++++++ .../logs-f5_bigip.log@custom.json | 36 +++++++++++++++++ .../elastic-agent/logs-fim.event@custom.json | 36 +++++++++++++++++ .../elastic-agent/logs-fireeye.nx@custom.json | 36 +++++++++++++++++ .../logs-fortinet.clientendpoint@custom.json | 36 +++++++++++++++++ .../logs-fortinet.firewall@custom.json | 36 +++++++++++++++++ .../logs-fortinet.fortimail@custom.json | 36 +++++++++++++++++ .../logs-fortinet.fortimanager@custom.json | 36 +++++++++++++++++ .../logs-fortinet_fortigate.log@custom.json | 36 +++++++++++++++++ .../elastic-agent/logs-gcp.audit@custom.json | 36 +++++++++++++++++ .../elastic-agent/logs-gcp.dns@custom.json | 36 +++++++++++++++++ .../logs-gcp.firewall@custom.json | 36 +++++++++++++++++ .../logs-gcp.loadbalancing_logs@custom.json | 36 +++++++++++++++++ .../logs-gcp.vpcflow@custom.json | 36 +++++++++++++++++ .../logs-github.audit@custom.json | 36 +++++++++++++++++ .../logs-github.code_scanning@custom.json | 36 +++++++++++++++++ .../logs-github.dependabot@custom.json | 36 +++++++++++++++++ .../logs-github.issues@custom.json | 36 +++++++++++++++++ .../logs-github.secret_scanning@custom.json | 36 +++++++++++++++++ ..._workspace.access_transparency@custom.json | 36 +++++++++++++++++ .../logs-google_workspace.admin@custom.json | 36 +++++++++++++++++ .../logs-google_workspace.alert@custom.json | 36 +++++++++++++++++ ...workspace.context_aware_access@custom.json | 36 +++++++++++++++++ .../logs-google_workspace.device@custom.json | 36 +++++++++++++++++ .../logs-google_workspace.drive@custom.json | 36 +++++++++++++++++ .../logs-google_workspace.gcp@custom.json | 36 +++++++++++++++++ ...gle_workspace.group_enterprise@custom.json | 36 +++++++++++++++++ .../logs-google_workspace.groups@custom.json | 36 +++++++++++++++++ .../logs-google_workspace.login@custom.json | 36 +++++++++++++++++ .../logs-google_workspace.rules@custom.json | 36 +++++++++++++++++ .../logs-google_workspace.saml@custom.json | 36 +++++++++++++++++ .../logs-google_workspace.token@custom.json | 36 +++++++++++++++++ ...google_workspace.user_accounts@custom.json | 36 +++++++++++++++++ .../logs-http_endpoint.generic@custom.json | 36 +++++++++++++++++ .../logs-httpjson.generic@custom.json | 36 +++++++++++++++++ .../elastic-agent/logs-iis.access@custom.json | 36 +++++++++++++++++ .../elastic-agent/logs-iis.error@custom.json | 36 +++++++++++++++++ .../logs-imperva_cloud_waf.event@custom.json | 36 +++++++++++++++++ .../logs-juniper.junos@custom.json | 36 +++++++++++++++++ .../logs-juniper.netscreen@custom.json | 36 +++++++++++++++++ .../logs-juniper.srx@custom.json | 36 +++++++++++++++++ .../logs-juniper_srx.log@custom.json | 36 +++++++++++++++++ .../logs-kafka_log.generic@custom.json | 36 +++++++++++++++++ ...astpass.detailed_shared_folder@custom.json | 36 +++++++++++++++++ .../logs-lastpass.event_report@custom.json | 36 +++++++++++++++++ .../logs-lastpass.user@custom.json | 36 +++++++++++++++++ .../logs-m365_defender.event@custom.json | 36 +++++++++++++++++ .../logs-m365_defender.incident@custom.json | 36 +++++++++++++++++ .../logs-m365_defender.log@custom.json | 36 +++++++++++++++++ ...icrosoft_defender_endpoint.log@custom.json | 36 +++++++++++++++++ .../logs-microsoft_dhcp.log@custom.json | 36 +++++++++++++++++ ...logs-microsoft_sqlserver.audit@custom.json | 36 +++++++++++++++++ .../logs-microsoft_sqlserver.log@custom.json | 36 +++++++++++++++++ .../logs-mimecast.audit_events@custom.json | 36 +++++++++++++++++ .../logs-mimecast.dlp_logs@custom.json | 36 +++++++++++++++++ .../logs-mimecast.siem_logs@custom.json | 36 +++++++++++++++++ ....threat_intel_malware_customer@custom.json | 36 +++++++++++++++++ ...cast.threat_intel_malware_grid@custom.json | 36 +++++++++++++++++ .../logs-mimecast.ttp_ap_logs@custom.json | 36 +++++++++++++++++ .../logs-mimecast.ttp_ip_logs@custom.json | 36 +++++++++++++++++ .../logs-mimecast.ttp_url_logs@custom.json | 36 +++++++++++++++++ .../logs-mysql.error@custom.json | 36 +++++++++++++++++ .../logs-mysql.slowlog@custom.json | 36 +++++++++++++++++ .../logs-netflow.log@custom.json | 36 +++++++++++++++++ .../logs-nginx.access@custom.json | 36 +++++++++++++++++ .../logs-nginx.error@custom.json | 36 +++++++++++++++++ .../elastic-agent/logs-o365.audit@custom.json | 36 +++++++++++++++++ .../logs-okta.system@custom.json | 36 +++++++++++++++++ .../elastic-agent/logs-panw.panos@custom.json | 36 +++++++++++++++++ .../logs-pfsense.log@custom.json | 36 +++++++++++++++++ ...-proofpoint_tap.clicks_blocked@custom.json | 36 +++++++++++++++++ ...roofpoint_tap.clicks_permitted@custom.json | 36 +++++++++++++++++ ...proofpoint_tap.message_blocked@custom.json | 36 +++++++++++++++++ ...oofpoint_tap.message_delivered@custom.json | 36 +++++++++++++++++ .../logs-pulse_connect_secure.log@custom.json | 36 +++++++++++++++++ .../logs-sentinel_one.activity@custom.json | 36 +++++++++++++++++ .../logs-sentinel_one.agent@custom.json | 36 +++++++++++++++++ .../logs-sentinel_one.alert@custom.json | 36 +++++++++++++++++ .../logs-sentinel_one.group@custom.json | 36 +++++++++++++++++ .../logs-sentinel_one.threat@custom.json | 36 +++++++++++++++++ .../elastic-agent/logs-snort.log@custom.json | 36 +++++++++++++++++ .../elastic-agent/logs-snyk.audit@custom.json | 36 +++++++++++++++++ .../logs-snyk.vulnerabilities@custom.json | 36 +++++++++++++++++ .../logs-sonicwall_firewall.log@custom.json | 36 +++++++++++++++++ .../elastic-agent/logs-sophos.utm@custom.json | 36 +++++++++++++++++ .../elastic-agent/logs-sophos.xg@custom.json | 36 +++++++++++++++++ .../logs-sophos_central.alert@custom.json | 36 +++++++++++++++++ .../logs-sophos_central.event@custom.json | 36 +++++++++++++++++ .../logs-symantec_endpoint.log@custom.json | 36 +++++++++++++++++ .../logs-system.application@custom.json | 36 +++++++++++++++++ .../logs-system.auth@custom.json | 36 +++++++++++++++++ .../logs-system.security@custom.json | 36 +++++++++++++++++ .../logs-system.syslog@custom.json | 38 ++++++++++++------ .../logs-system.system@custom.json | 36 +++++++++++++++++ .../logs-tenable_io.asset@custom.json | 36 +++++++++++++++++ .../logs-tenable_io.plugin@custom.json | 36 +++++++++++++++++ .../logs-tenable_io.scan@custom.json | 36 +++++++++++++++++ .../logs-tenable_io.vulnerability@custom.json | 36 +++++++++++++++++ .../logs-tenable_sc.asset@custom.json | 36 +++++++++++++++++ .../logs-tenable_sc.plugin@custom.json | 36 +++++++++++++++++ .../logs-tenable_sc.vulnerability@custom.json | 36 +++++++++++++++++ .../logs-ti_abusech.malware@custom.json | 36 +++++++++++++++++ .../logs-ti_abusech.malwarebazaar@custom.json | 36 +++++++++++++++++ .../logs-ti_abusech.threatfox@custom.json | 36 +++++++++++++++++ .../logs-ti_abusech.url@custom.json | 36 +++++++++++++++++ .../logs-ti_anomali.threatstream@custom.json | 36 +++++++++++++++++ .../logs-ti_cybersixgill.threat@custom.json | 36 +++++++++++++++++ .../logs-ti_misp.threat@custom.json | 36 +++++++++++++++++ ...logs-ti_misp.threat_attributes@custom.json | 36 +++++++++++++++++ .../logs-ti_otx.pulses_subscribed@custom.json | 36 +++++++++++++++++ .../logs-ti_otx.threat@custom.json | 36 +++++++++++++++++ ...rdedfuture.latest_ioc-template@custom.json | 36 +++++++++++++++++ .../logs-ti_recordedfuture.threat@custom.json | 36 +++++++++++++++++ .../logs-ti_threatq.threat@custom.json | 36 +++++++++++++++++ .../logs-vsphere.log@custom.json | 36 +++++++++++++++++ .../logs-windows.forwarded@custom.json | 36 +++++++++++++++++ .../logs-windows.powershell@custom.json | 36 +++++++++++++++++ ...windows.powershell_operational@custom.json | 36 +++++++++++++++++ ...ogs-windows.sysmon_operational@custom.json | 36 +++++++++++++++++ .../logs-winlog.winlog@custom.json | 36 +++++++++++++++++ .../logs-zscaler_zia.alerts@custom.json | 36 +++++++++++++++++ .../logs-zscaler_zia.dns@custom.json | 36 +++++++++++++++++ .../logs-zscaler_zia.firewall@custom.json | 36 +++++++++++++++++ .../logs-zscaler_zia.tunnel@custom.json | 36 +++++++++++++++++ .../logs-zscaler_zia.web@custom.json | 36 +++++++++++++++++ ...caler_zpa.app_connector_status@custom.json | 36 +++++++++++++++++ .../logs-zscaler_zpa.audit@custom.json | 36 +++++++++++++++++ ...ogs-zscaler_zpa.browser_access@custom.json | 36 +++++++++++++++++ ...logs-zscaler_zpa.user_activity@custom.json | 36 +++++++++++++++++ .../logs-zscaler_zpa.user_status@custom.json | 36 +++++++++++++++++ 210 files changed, 7542 insertions(+), 28 deletions(-) create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-1password.item_usages@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-1password.signin_attempts@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-apache.access@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-apache.error@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-auditd.log@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-auth0.logs@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-aws.cloudfront_logs@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-aws.cloudtrail@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-aws.cloudwatch_logs@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-aws.ec2_logs@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-aws.elb_logs@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-aws.firewall_logs@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-aws.guardduty@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-aws.inspector@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-aws.route53_public_logs@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-aws.route53_resolver_logs@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-aws.s3access@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-aws.securityhub_findings@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-aws.securityhub_insights@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-aws.vpcflow@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-aws.waf@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-azure.activitylogs@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-azure.application_gateway@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-azure.auditlogs@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-azure.eventhub@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-azure.firewall_logs@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-azure.identity_protection@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-azure.platformlogs@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-azure.provisioning@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-azure.signinlogs@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-azure.springcloudlogs@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-barracuda.waf@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-barracuda_cloudgen_firewall.log@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-carbonblack_edr.log@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-cef.log@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-checkpoint.firewall@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-cisco_asa.log@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-cisco_duo.admin@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-cisco_duo.auth@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-cisco_duo.offline_enrollment@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-cisco_duo.summary@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-cisco_duo.telephony@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-cisco_ftd.log@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-cisco_ios.log@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-cisco_ise.log@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-cisco_meraki.events@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-cisco_meraki.log@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-cisco_umbrella.log@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-citrix_adc.interface@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-citrix_adc.lbvserver@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-citrix_adc.service@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-citrix_adc.system@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-citrix_adc.vpn@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-citrix_waf.log@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-cloudflare.audit@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-cloudflare.logpull@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-crowdstrike.falcon@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-crowdstrike.fdr@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-darktrace.ai_analyst_alert@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-darktrace.model_breach_alert@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-darktrace.system_status_alert@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-elastic_agent.apm_server@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-elastic_agent.auditbeat@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-elastic_agent.cloudbeat@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-elastic_agent.endpoint_security@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-elastic_agent.filebeat@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-elastic_agent.fleet_server@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-elastic_agent.heartbeat@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-elastic_agent.metricbeat@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-elastic_agent.osquerybeat@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-elastic_agent.packetbeat@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-endpoint.alerts@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-endpoint.events.api@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-endpoint.events.file@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-endpoint.events.library@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-endpoint.events.network@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-endpoint.events.process@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-endpoint.events.registry@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-endpoint.events.security@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-f5_bigip.log@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-fim.event@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-fireeye.nx@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-fortinet.clientendpoint@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-fortinet.firewall@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-fortinet.fortimail@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-fortinet.fortimanager@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-fortinet_fortigate.log@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-gcp.audit@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-gcp.dns@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-gcp.firewall@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-gcp.loadbalancing_logs@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-gcp.vpcflow@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-github.audit@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-github.code_scanning@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-github.dependabot@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-github.issues@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-github.secret_scanning@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.access_transparency@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.admin@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.alert@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.context_aware_access@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.device@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.drive@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.gcp@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.group_enterprise@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.groups@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.login@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.rules@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.saml@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.token@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.user_accounts@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-http_endpoint.generic@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-httpjson.generic@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-iis.access@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-iis.error@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-imperva_cloud_waf.event@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-juniper.junos@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-juniper.netscreen@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-juniper.srx@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-juniper_srx.log@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-kafka_log.generic@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-lastpass.detailed_shared_folder@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-lastpass.event_report@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-lastpass.user@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-m365_defender.event@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-m365_defender.incident@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-m365_defender.log@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-microsoft_defender_endpoint.log@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-microsoft_dhcp.log@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-microsoft_sqlserver.audit@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-microsoft_sqlserver.log@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-mimecast.audit_events@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-mimecast.dlp_logs@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-mimecast.siem_logs@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-mimecast.threat_intel_malware_customer@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-mimecast.threat_intel_malware_grid@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-mimecast.ttp_ap_logs@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-mimecast.ttp_ip_logs@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-mimecast.ttp_url_logs@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-mysql.error@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-mysql.slowlog@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-netflow.log@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-nginx.access@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-nginx.error@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-o365.audit@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-okta.system@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-panw.panos@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-pfsense.log@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-proofpoint_tap.clicks_blocked@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-proofpoint_tap.clicks_permitted@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-proofpoint_tap.message_blocked@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-proofpoint_tap.message_delivered@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-pulse_connect_secure.log@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-sentinel_one.activity@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-sentinel_one.agent@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-sentinel_one.alert@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-sentinel_one.group@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-sentinel_one.threat@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-snort.log@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-snyk.audit@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-snyk.vulnerabilities@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-sonicwall_firewall.log@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-sophos.utm@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-sophos.xg@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-sophos_central.alert@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-sophos_central.event@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-symantec_endpoint.log@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-system.application@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-system.auth@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-system.security@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-system.system@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-tenable_io.asset@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-tenable_io.plugin@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-tenable_io.scan@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-tenable_io.vulnerability@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-tenable_sc.asset@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-tenable_sc.plugin@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-tenable_sc.vulnerability@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-ti_abusech.malware@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-ti_abusech.malwarebazaar@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-ti_abusech.threatfox@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-ti_abusech.url@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-ti_anomali.threatstream@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-ti_cybersixgill.threat@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-ti_misp.threat@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-ti_misp.threat_attributes@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-ti_otx.pulses_subscribed@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-ti_otx.threat@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-ti_recordedfuture.latest_ioc-template@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-ti_recordedfuture.threat@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-ti_threatq.threat@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-vsphere.log@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-windows.forwarded@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-windows.powershell@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-windows.powershell_operational@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-windows.sysmon_operational@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-winlog.winlog@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-zscaler_zia.alerts@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-zscaler_zia.dns@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-zscaler_zia.firewall@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-zscaler_zia.tunnel@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-zscaler_zia.web@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-zscaler_zpa.app_connector_status@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-zscaler_zpa.audit@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-zscaler_zpa.browser_access@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-zscaler_zpa.user_activity@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-zscaler_zpa.user_status@custom.json diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-1password.item_usages@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-1password.item_usages@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-1password.item_usages@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-1password.signin_attempts@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-1password.signin_attempts@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-1password.signin_attempts@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-apache.access@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-apache.access@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-apache.access@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-apache.error@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-apache.error@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-apache.error@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-auditd.log@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-auditd.log@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-auditd.log@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-auth0.logs@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-auth0.logs@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-auth0.logs@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-aws.cloudfront_logs@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-aws.cloudfront_logs@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-aws.cloudfront_logs@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-aws.cloudtrail@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-aws.cloudtrail@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-aws.cloudtrail@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-aws.cloudwatch_logs@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-aws.cloudwatch_logs@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-aws.cloudwatch_logs@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-aws.ec2_logs@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-aws.ec2_logs@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-aws.ec2_logs@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-aws.elb_logs@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-aws.elb_logs@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-aws.elb_logs@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-aws.firewall_logs@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-aws.firewall_logs@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-aws.firewall_logs@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-aws.guardduty@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-aws.guardduty@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-aws.guardduty@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-aws.inspector@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-aws.inspector@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-aws.inspector@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-aws.route53_public_logs@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-aws.route53_public_logs@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-aws.route53_public_logs@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-aws.route53_resolver_logs@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-aws.route53_resolver_logs@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-aws.route53_resolver_logs@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-aws.s3access@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-aws.s3access@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-aws.s3access@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-aws.securityhub_findings@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-aws.securityhub_findings@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-aws.securityhub_findings@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-aws.securityhub_insights@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-aws.securityhub_insights@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-aws.securityhub_insights@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-aws.vpcflow@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-aws.vpcflow@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-aws.vpcflow@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-aws.waf@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-aws.waf@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-aws.waf@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-azure.activitylogs@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-azure.activitylogs@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-azure.activitylogs@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-azure.application_gateway@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-azure.application_gateway@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-azure.application_gateway@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-azure.auditlogs@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-azure.auditlogs@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-azure.auditlogs@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-azure.eventhub@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-azure.eventhub@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-azure.eventhub@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-azure.firewall_logs@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-azure.firewall_logs@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-azure.firewall_logs@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-azure.identity_protection@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-azure.identity_protection@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-azure.identity_protection@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-azure.platformlogs@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-azure.platformlogs@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-azure.platformlogs@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-azure.provisioning@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-azure.provisioning@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-azure.provisioning@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-azure.signinlogs@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-azure.signinlogs@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-azure.signinlogs@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-azure.springcloudlogs@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-azure.springcloudlogs@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-azure.springcloudlogs@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-barracuda.waf@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-barracuda.waf@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-barracuda.waf@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-barracuda_cloudgen_firewall.log@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-barracuda_cloudgen_firewall.log@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-barracuda_cloudgen_firewall.log@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-carbonblack_edr.log@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-carbonblack_edr.log@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-carbonblack_edr.log@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-cef.log@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-cef.log@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-cef.log@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-checkpoint.firewall@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-checkpoint.firewall@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-checkpoint.firewall@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-cisco_asa.log@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-cisco_asa.log@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-cisco_asa.log@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-cisco_duo.admin@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-cisco_duo.admin@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-cisco_duo.admin@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-cisco_duo.auth@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-cisco_duo.auth@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-cisco_duo.auth@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-cisco_duo.offline_enrollment@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-cisco_duo.offline_enrollment@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-cisco_duo.offline_enrollment@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-cisco_duo.summary@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-cisco_duo.summary@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-cisco_duo.summary@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-cisco_duo.telephony@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-cisco_duo.telephony@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-cisco_duo.telephony@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-cisco_ftd.log@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-cisco_ftd.log@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-cisco_ftd.log@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-cisco_ios.log@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-cisco_ios.log@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-cisco_ios.log@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-cisco_ise.log@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-cisco_ise.log@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-cisco_ise.log@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-cisco_meraki.events@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-cisco_meraki.events@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-cisco_meraki.events@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-cisco_meraki.log@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-cisco_meraki.log@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-cisco_meraki.log@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-cisco_umbrella.log@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-cisco_umbrella.log@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-cisco_umbrella.log@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-citrix_adc.interface@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-citrix_adc.interface@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-citrix_adc.interface@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-citrix_adc.lbvserver@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-citrix_adc.lbvserver@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-citrix_adc.lbvserver@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-citrix_adc.service@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-citrix_adc.service@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-citrix_adc.service@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-citrix_adc.system@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-citrix_adc.system@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-citrix_adc.system@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-citrix_adc.vpn@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-citrix_adc.vpn@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-citrix_adc.vpn@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-citrix_waf.log@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-citrix_waf.log@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-citrix_waf.log@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-cloudflare.audit@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-cloudflare.audit@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-cloudflare.audit@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-cloudflare.logpull@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-cloudflare.logpull@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-cloudflare.logpull@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-crowdstrike.falcon@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-crowdstrike.falcon@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-crowdstrike.falcon@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-crowdstrike.fdr@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-crowdstrike.fdr@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-crowdstrike.fdr@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-darktrace.ai_analyst_alert@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-darktrace.ai_analyst_alert@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-darktrace.ai_analyst_alert@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-darktrace.model_breach_alert@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-darktrace.model_breach_alert@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-darktrace.model_breach_alert@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-darktrace.system_status_alert@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-darktrace.system_status_alert@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-darktrace.system_status_alert@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-elastic_agent.apm_server@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-elastic_agent.apm_server@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-elastic_agent.apm_server@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-elastic_agent.auditbeat@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-elastic_agent.auditbeat@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-elastic_agent.auditbeat@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-elastic_agent.cloudbeat@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-elastic_agent.cloudbeat@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-elastic_agent.cloudbeat@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-elastic_agent.endpoint_security@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-elastic_agent.endpoint_security@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-elastic_agent.endpoint_security@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-elastic_agent.filebeat@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-elastic_agent.filebeat@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-elastic_agent.filebeat@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-elastic_agent.fleet_server@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-elastic_agent.fleet_server@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-elastic_agent.fleet_server@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-elastic_agent.heartbeat@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-elastic_agent.heartbeat@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-elastic_agent.heartbeat@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-elastic_agent.metricbeat@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-elastic_agent.metricbeat@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-elastic_agent.metricbeat@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-elastic_agent.osquerybeat@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-elastic_agent.osquerybeat@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-elastic_agent.osquerybeat@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-elastic_agent.packetbeat@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-elastic_agent.packetbeat@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-elastic_agent.packetbeat@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-elastic_agent@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-elastic_agent@custom.json index fe77af1db..17319ab9f 100644 --- a/salt/elasticsearch/templates/component/elastic-agent/logs-elastic_agent@custom.json +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-elastic_agent@custom.json @@ -1,12 +1,36 @@ { "template": { - "settings": {} - }, - "_meta": { - "package": { - "name": "elastic_agent" - }, - "managed_by": "fleet", - "managed": true + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } } } diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-endpoint.alerts@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-endpoint.alerts@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-endpoint.alerts@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-endpoint.diagnostic.collection@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-endpoint.diagnostic.collection@custom.json index 1bf9313a9..17319ab9f 100644 --- a/salt/elasticsearch/templates/component/elastic-agent/logs-endpoint.diagnostic.collection@custom.json +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-endpoint.diagnostic.collection@custom.json @@ -1,12 +1,36 @@ { "template": { - "settings": {} - }, - "_meta": { - "package": { - "name": "endpoint" - }, - "managed_by": "fleet", - "managed": true + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } } } diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-endpoint.events.api@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-endpoint.events.api@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-endpoint.events.api@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-endpoint.events.file@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-endpoint.events.file@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-endpoint.events.file@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-endpoint.events.library@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-endpoint.events.library@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-endpoint.events.library@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-endpoint.events.network@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-endpoint.events.network@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-endpoint.events.network@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-endpoint.events.process@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-endpoint.events.process@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-endpoint.events.process@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-endpoint.events.registry@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-endpoint.events.registry@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-endpoint.events.registry@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-endpoint.events.security@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-endpoint.events.security@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-endpoint.events.security@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-f5_bigip.log@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-f5_bigip.log@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-f5_bigip.log@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-fim.event@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-fim.event@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-fim.event@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-fireeye.nx@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-fireeye.nx@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-fireeye.nx@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-fortinet.clientendpoint@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-fortinet.clientendpoint@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-fortinet.clientendpoint@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-fortinet.firewall@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-fortinet.firewall@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-fortinet.firewall@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-fortinet.fortimail@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-fortinet.fortimail@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-fortinet.fortimail@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-fortinet.fortimanager@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-fortinet.fortimanager@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-fortinet.fortimanager@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-fortinet_fortigate.log@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-fortinet_fortigate.log@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-fortinet_fortigate.log@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-gcp.audit@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-gcp.audit@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-gcp.audit@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-gcp.dns@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-gcp.dns@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-gcp.dns@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-gcp.firewall@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-gcp.firewall@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-gcp.firewall@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-gcp.loadbalancing_logs@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-gcp.loadbalancing_logs@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-gcp.loadbalancing_logs@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-gcp.vpcflow@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-gcp.vpcflow@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-gcp.vpcflow@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-github.audit@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-github.audit@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-github.audit@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-github.code_scanning@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-github.code_scanning@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-github.code_scanning@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-github.dependabot@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-github.dependabot@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-github.dependabot@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-github.issues@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-github.issues@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-github.issues@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-github.secret_scanning@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-github.secret_scanning@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-github.secret_scanning@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.access_transparency@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.access_transparency@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.access_transparency@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.admin@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.admin@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.admin@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.alert@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.alert@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.alert@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.context_aware_access@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.context_aware_access@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.context_aware_access@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.device@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.device@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.device@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.drive@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.drive@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.drive@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.gcp@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.gcp@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.gcp@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.group_enterprise@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.group_enterprise@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.group_enterprise@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.groups@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.groups@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.groups@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.login@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.login@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.login@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.rules@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.rules@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.rules@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.saml@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.saml@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.saml@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.token@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.token@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.token@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.user_accounts@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.user_accounts@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-google_workspace.user_accounts@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-http_endpoint.generic@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-http_endpoint.generic@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-http_endpoint.generic@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-httpjson.generic@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-httpjson.generic@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-httpjson.generic@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-iis.access@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-iis.access@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-iis.access@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-iis.error@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-iis.error@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-iis.error@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-imperva_cloud_waf.event@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-imperva_cloud_waf.event@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-imperva_cloud_waf.event@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-juniper.junos@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-juniper.junos@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-juniper.junos@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-juniper.netscreen@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-juniper.netscreen@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-juniper.netscreen@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-juniper.srx@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-juniper.srx@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-juniper.srx@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-juniper_srx.log@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-juniper_srx.log@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-juniper_srx.log@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-kafka_log.generic@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-kafka_log.generic@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-kafka_log.generic@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-lastpass.detailed_shared_folder@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-lastpass.detailed_shared_folder@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-lastpass.detailed_shared_folder@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-lastpass.event_report@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-lastpass.event_report@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-lastpass.event_report@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-lastpass.user@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-lastpass.user@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-lastpass.user@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-m365_defender.event@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-m365_defender.event@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-m365_defender.event@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-m365_defender.incident@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-m365_defender.incident@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-m365_defender.incident@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-m365_defender.log@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-m365_defender.log@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-m365_defender.log@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-microsoft_defender_endpoint.log@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-microsoft_defender_endpoint.log@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-microsoft_defender_endpoint.log@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-microsoft_dhcp.log@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-microsoft_dhcp.log@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-microsoft_dhcp.log@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-microsoft_sqlserver.audit@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-microsoft_sqlserver.audit@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-microsoft_sqlserver.audit@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-microsoft_sqlserver.log@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-microsoft_sqlserver.log@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-microsoft_sqlserver.log@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-mimecast.audit_events@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-mimecast.audit_events@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-mimecast.audit_events@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-mimecast.dlp_logs@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-mimecast.dlp_logs@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-mimecast.dlp_logs@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-mimecast.siem_logs@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-mimecast.siem_logs@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-mimecast.siem_logs@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-mimecast.threat_intel_malware_customer@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-mimecast.threat_intel_malware_customer@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-mimecast.threat_intel_malware_customer@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-mimecast.threat_intel_malware_grid@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-mimecast.threat_intel_malware_grid@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-mimecast.threat_intel_malware_grid@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-mimecast.ttp_ap_logs@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-mimecast.ttp_ap_logs@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-mimecast.ttp_ap_logs@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-mimecast.ttp_ip_logs@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-mimecast.ttp_ip_logs@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-mimecast.ttp_ip_logs@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-mimecast.ttp_url_logs@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-mimecast.ttp_url_logs@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-mimecast.ttp_url_logs@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-mysql.error@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-mysql.error@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-mysql.error@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-mysql.slowlog@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-mysql.slowlog@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-mysql.slowlog@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-netflow.log@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-netflow.log@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-netflow.log@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-nginx.access@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-nginx.access@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-nginx.access@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-nginx.error@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-nginx.error@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-nginx.error@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-o365.audit@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-o365.audit@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-o365.audit@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-okta.system@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-okta.system@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-okta.system@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-panw.panos@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-panw.panos@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-panw.panos@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-pfsense.log@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-pfsense.log@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-pfsense.log@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-proofpoint_tap.clicks_blocked@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-proofpoint_tap.clicks_blocked@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-proofpoint_tap.clicks_blocked@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-proofpoint_tap.clicks_permitted@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-proofpoint_tap.clicks_permitted@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-proofpoint_tap.clicks_permitted@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-proofpoint_tap.message_blocked@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-proofpoint_tap.message_blocked@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-proofpoint_tap.message_blocked@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-proofpoint_tap.message_delivered@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-proofpoint_tap.message_delivered@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-proofpoint_tap.message_delivered@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-pulse_connect_secure.log@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-pulse_connect_secure.log@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-pulse_connect_secure.log@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-sentinel_one.activity@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-sentinel_one.activity@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-sentinel_one.activity@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-sentinel_one.agent@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-sentinel_one.agent@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-sentinel_one.agent@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-sentinel_one.alert@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-sentinel_one.alert@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-sentinel_one.alert@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-sentinel_one.group@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-sentinel_one.group@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-sentinel_one.group@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-sentinel_one.threat@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-sentinel_one.threat@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-sentinel_one.threat@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-snort.log@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-snort.log@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-snort.log@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-snyk.audit@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-snyk.audit@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-snyk.audit@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-snyk.vulnerabilities@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-snyk.vulnerabilities@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-snyk.vulnerabilities@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-sonicwall_firewall.log@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-sonicwall_firewall.log@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-sonicwall_firewall.log@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-sophos.utm@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-sophos.utm@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-sophos.utm@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-sophos.xg@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-sophos.xg@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-sophos.xg@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-sophos_central.alert@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-sophos_central.alert@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-sophos_central.alert@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-sophos_central.event@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-sophos_central.event@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-sophos_central.event@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-symantec_endpoint.log@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-symantec_endpoint.log@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-symantec_endpoint.log@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-system.application@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-system.application@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-system.application@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-system.auth@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-system.auth@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-system.auth@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-system.security@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-system.security@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-system.security@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-system.syslog@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-system.syslog@custom.json index 0123fb956..17319ab9f 100644 --- a/salt/elasticsearch/templates/component/elastic-agent/logs-system.syslog@custom.json +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-system.syslog@custom.json @@ -2,21 +2,35 @@ "template": { "mappings": { "properties": { - "error": { - "properties": { - "message": { - "type": "match_only_text" + "host": { + "properties":{ + "ip": { + "type": "ip" } } - } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } } } - }, - "_meta": { - "package": { - "name": "system" - }, - "managed_by": "fleet", - "managed": true } } diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-system.system@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-system.system@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-system.system@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-tenable_io.asset@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-tenable_io.asset@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-tenable_io.asset@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-tenable_io.plugin@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-tenable_io.plugin@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-tenable_io.plugin@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-tenable_io.scan@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-tenable_io.scan@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-tenable_io.scan@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-tenable_io.vulnerability@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-tenable_io.vulnerability@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-tenable_io.vulnerability@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-tenable_sc.asset@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-tenable_sc.asset@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-tenable_sc.asset@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-tenable_sc.plugin@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-tenable_sc.plugin@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-tenable_sc.plugin@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-tenable_sc.vulnerability@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-tenable_sc.vulnerability@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-tenable_sc.vulnerability@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-ti_abusech.malware@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-ti_abusech.malware@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-ti_abusech.malware@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-ti_abusech.malwarebazaar@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-ti_abusech.malwarebazaar@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-ti_abusech.malwarebazaar@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-ti_abusech.threatfox@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-ti_abusech.threatfox@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-ti_abusech.threatfox@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-ti_abusech.url@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-ti_abusech.url@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-ti_abusech.url@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-ti_anomali.threatstream@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-ti_anomali.threatstream@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-ti_anomali.threatstream@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-ti_cybersixgill.threat@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-ti_cybersixgill.threat@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-ti_cybersixgill.threat@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-ti_misp.threat@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-ti_misp.threat@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-ti_misp.threat@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-ti_misp.threat_attributes@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-ti_misp.threat_attributes@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-ti_misp.threat_attributes@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-ti_otx.pulses_subscribed@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-ti_otx.pulses_subscribed@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-ti_otx.pulses_subscribed@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-ti_otx.threat@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-ti_otx.threat@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-ti_otx.threat@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-ti_recordedfuture.latest_ioc-template@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-ti_recordedfuture.latest_ioc-template@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-ti_recordedfuture.latest_ioc-template@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-ti_recordedfuture.threat@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-ti_recordedfuture.threat@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-ti_recordedfuture.threat@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-ti_threatq.threat@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-ti_threatq.threat@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-ti_threatq.threat@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-vsphere.log@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-vsphere.log@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-vsphere.log@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-windows.forwarded@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-windows.forwarded@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-windows.forwarded@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-windows.powershell@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-windows.powershell@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-windows.powershell@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-windows.powershell_operational@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-windows.powershell_operational@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-windows.powershell_operational@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-windows.sysmon_operational@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-windows.sysmon_operational@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-windows.sysmon_operational@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-winlog.winlog@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-winlog.winlog@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-winlog.winlog@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-zscaler_zia.alerts@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-zscaler_zia.alerts@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-zscaler_zia.alerts@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-zscaler_zia.dns@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-zscaler_zia.dns@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-zscaler_zia.dns@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-zscaler_zia.firewall@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-zscaler_zia.firewall@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-zscaler_zia.firewall@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-zscaler_zia.tunnel@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-zscaler_zia.tunnel@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-zscaler_zia.tunnel@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-zscaler_zia.web@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-zscaler_zia.web@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-zscaler_zia.web@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-zscaler_zpa.app_connector_status@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-zscaler_zpa.app_connector_status@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-zscaler_zpa.app_connector_status@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-zscaler_zpa.audit@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-zscaler_zpa.audit@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-zscaler_zpa.audit@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-zscaler_zpa.browser_access@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-zscaler_zpa.browser_access@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-zscaler_zpa.browser_access@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-zscaler_zpa.user_activity@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-zscaler_zpa.user_activity@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-zscaler_zpa.user_activity@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-zscaler_zpa.user_status@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-zscaler_zpa.user_status@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-zscaler_zpa.user_status@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} From 442f7a914ae7ca710535729f85983bc75a609492 Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Wed, 18 Sep 2024 14:16:43 -0400 Subject: [PATCH 036/175] add missing annotation file --- salt/elasticagent/soc_elasticagent.yaml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 salt/elasticagent/soc_elasticagent.yaml diff --git a/salt/elasticagent/soc_elasticagent.yaml b/salt/elasticagent/soc_elasticagent.yaml new file mode 100644 index 000000000..a24ac1985 --- /dev/null +++ b/salt/elasticagent/soc_elasticagent.yaml @@ -0,0 +1,4 @@ +elasticagent: + enabled: + description: Enables or disables the Elastic Agent process. This process must remain enabled to allow collection of node events. + advanced: True From 385054b7b85c752b16cea8a1bbb0d803bfeea8d2 Mon Sep 17 00:00:00 2001 From: reyesj2 <94730068+reyesj2@users.noreply.github.com> Date: Wed, 18 Sep 2024 14:18:47 -0400 Subject: [PATCH 037/175] enable stig for so desktop Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com> --- pillar/top.sls | 2 ++ salt/allowed_states.map.jinja | 3 ++- salt/top.sls | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/pillar/top.sls b/pillar/top.sls index 76d1a14e1..131b39a99 100644 --- a/pillar/top.sls +++ b/pillar/top.sls @@ -310,3 +310,5 @@ base: '*_desktop': - minions.{{ grains.id }} - minions.adv_{{ grains.id }} + - stig.soc_stig + - soc.license diff --git a/salt/allowed_states.map.jinja b/salt/allowed_states.map.jinja index 37795e9d7..a9a8b7c5e 100644 --- a/salt/allowed_states.map.jinja +++ b/salt/allowed_states.map.jinja @@ -202,7 +202,8 @@ 'so-desktop': [ 'ssl', 'docker_clean', - 'telegraf' + 'telegraf', + 'stig' ], }, grain='role') %} diff --git a/salt/top.sls b/salt/top.sls index 7365e0e83..d876806f2 100644 --- a/salt/top.sls +++ b/salt/top.sls @@ -271,6 +271,7 @@ base: - sensoroni - telegraf - elasticfleet.install_agent_grid + - stig 'J@desktop:gui:enabled:^[Tt][Rr][Uu][Ee]$ and ( G@saltversion:{{saltversion}} and G@os:OEL )': - match: compound From 074cc8e6ffb9150bd1459b64556471d865a1f899 Mon Sep 17 00:00:00 2001 From: defensivedepth Date: Fri, 20 Sep 2024 11:58:21 -0400 Subject: [PATCH 038/175] Initial commit --- salt/elasticfleet/config.sls | 42 ++++ .../soc/elastic-defend-custom-filters.yaml | 27 +++ .../soc/elastic-defend-disabled-filters.yaml | 3 + salt/elasticfleet/soc_elasticfleet.yaml | 24 ++ .../sbin/so-elastic-defend-manage-filters.py | 205 ++++++++++++++++++ .../sbin/so_elastic_defend_filters_helper.py | 123 +++++++++++ .../tools/sbin_jinja/so-kibana-space-defaults | 2 +- 7 files changed, 425 insertions(+), 1 deletion(-) create mode 100644 salt/elasticfleet/files/soc/elastic-defend-custom-filters.yaml create mode 100644 salt/elasticfleet/files/soc/elastic-defend-disabled-filters.yaml create mode 100644 salt/elasticfleet/tools/sbin/so-elastic-defend-manage-filters.py create mode 100644 salt/elasticfleet/tools/sbin/so_elastic_defend_filters_helper.py diff --git a/salt/elasticfleet/config.sls b/salt/elasticfleet/config.sls index f8566ed94..127ba895d 100644 --- a/salt/elasticfleet/config.sls +++ b/salt/elasticfleet/config.sls @@ -73,6 +73,48 @@ eapackageupgrade: - template: jinja {% if GLOBALS.role != "so-fleet" %} + +{% if not GLOBALS.airgap %} +soresourcesrepoclone: + git.latest: + - name: https://github.com/Security-Onion-Solutions/securityonion-resources.git + - target: /opt/so/saltstack/local/salt/elasticfleet/files/securityonion-resources + - rev: 'dev/defend-filters' + - depth: 1 + - force_fetch: true + - force_clone: true +{% endif %} + +elasticdefendconfdir: + file.directory: + - name: /opt/so/conf/elastic-fleet/defend-exclusions/rulesets + - user: 947 + - group: 939 + - makedirs: True + +elasticdefendrulesets: + file.recurse: + - name: /opt/so/conf/elastic-fleet/defend-exclusions/rulesets + - source: salt://elasticfleet/files/securityonion-resources/event-filters/ + - user: 947 + - group: 939 + +elasticdefenddisabled: + file.managed: + - name: /opt/so/conf/elastic-fleet/defend-exclusions/disabled-filters.yaml + - source: salt://elasticfleet/files/soc/elastic-defend-disabled-filters.yaml + - user: 947 + - group: 939 + - mode: 600 + +elasticdefendcustom: + file.managed: + - name: /opt/so/conf/elastic-fleet/defend-exclusions/rulesets/custom-filters-raw + - source: salt://elasticfleet/files/soc/elastic-defend-custom-filters.yaml + - user: 947 + - group: 939 + - mode: 600 + eaintegrationsdir: file.directory: - name: /opt/so/conf/elastic-fleet/integrations diff --git a/salt/elasticfleet/files/soc/elastic-defend-custom-filters.yaml b/salt/elasticfleet/files/soc/elastic-defend-custom-filters.yaml new file mode 100644 index 000000000..82ae203d8 --- /dev/null +++ b/salt/elasticfleet/files/soc/elastic-defend-custom-filters.yaml @@ -0,0 +1,27 @@ +title: 'Template 1' +id: '2B160E43-3B95-4B50-AA3F-25D99F51FA69' +description: 'Credit @ITProPaul' +references: 'https://github.com/Neo23x0/sysmon-config' +author: 'SOS' +date: '09/18/24' +event_type: 'NetworkConnect' +filter_type: 'exclude' +filter: + selection_1: + TargetField: 'DestinationIp' + Condition: 'begin with' + Pattern: 'fe80:0:0:0' +--- +title: 'Template2' +id: '3B160E43-3B95-4B50-AA3F-25D99F51FA69' +description: 'Credit @ITProPaul' +references: 'https://github.com/Neo23x0/sysmon-config' +author: 'SOS' +date: '09/18/24' +event_type: 'NetworkConnect' +filter_type: 'exclude' +filter: + selection_1: + TargetField: 'DestinationIp' + Condition: 'begin with' + Pattern: 'fe80:0:0:0' \ No newline at end of file diff --git a/salt/elasticfleet/files/soc/elastic-defend-disabled-filters.yaml b/salt/elasticfleet/files/soc/elastic-defend-disabled-filters.yaml new file mode 100644 index 000000000..52a646385 --- /dev/null +++ b/salt/elasticfleet/files/soc/elastic-defend-disabled-filters.yaml @@ -0,0 +1,3 @@ +'9EDAA51C-BB12-49D9-8748-2B61371F2E7D': + Date: '10/10/2024' + Notes: 'Example Disabled Filter - Leave this entry here, just copy and paste as needed.' \ No newline at end of file diff --git a/salt/elasticfleet/soc_elasticfleet.yaml b/salt/elasticfleet/soc_elasticfleet.yaml index 7ed97e6ec..bc9a61625 100644 --- a/salt/elasticfleet/soc_elasticfleet.yaml +++ b/salt/elasticfleet/soc_elasticfleet.yaml @@ -9,6 +9,24 @@ elasticfleet: global: True forcedType: bool helpLink: elastic-fleet.html + files: + soc: + elastic-defend-disabled-filters__yaml: + title: Disabled Elastic Defend filters + description: Enter the ID of the filter that should be disabled. + syntax: yaml + file: True + global: True + helpLink: elastic-fleet.html + advanced: True + elastic-defend-custom-filters__yaml: + title: Custom Elastic Defend filters + description: Enter custom filters. + syntax: yaml + file: True + global: True + helpLink: elastic-fleet.html + advanced: True logging: zeek: excluded: @@ -16,6 +34,12 @@ elasticfleet: forcedType: "[]string" helpLink: zeek.html config: + defend_filters: + enable_auto_configuration: + description: Enable auto-configuration and management of the Elastic Defend Exclusion filters. + global: True + helpLink: elastic-fleet.html + advanced: True server: custom_fqdn: description: Custom FQDN for Agents to connect to. One per line. diff --git a/salt/elasticfleet/tools/sbin/so-elastic-defend-manage-filters.py b/salt/elasticfleet/tools/sbin/so-elastic-defend-manage-filters.py new file mode 100644 index 000000000..874b6c049 --- /dev/null +++ b/salt/elasticfleet/tools/sbin/so-elastic-defend-manage-filters.py @@ -0,0 +1,205 @@ +import yaml +import sys +import getopt +from so_elastic_defend_filters_helper import * +import logging + +logging.basicConfig(level=logging.INFO, format='%(message)s') + +# Define mappings for conditional_field, event_type, and conditions +FIELD_MAPPINGS = { + "Image": "process.executable", + "ParentImage": "process.parent.executable", + "CommandLine": "process.command_line", + "ParentCommandLine": "process.parent.command_line", + "QueryName": "dns.question.name", + "DestinationIp": "destination.ip", + "TargetObject": "registry.path" +} + +DATASET_MAPPINGS = { + "ProcessCreate": "endpoint.events.process", + "NetworkConnect": "endpoint.events.network", + "FileCreate": "endpoint.events.file", + "RegistryEvent": "endpoint.events.registry", + "DnsQuery": "endpoint.events.network" +} + +CONDITION_MAPPINGS = { + "is": ("included", "match"), + "end with": ("included", "wildcard"), + "begin with": ("included", "wildcard"), + "contains": ("included", "wildcard"), + "contains any": ("included", "match_any"), + "excluded": ("excluded", "match") +} + +# Extract entries for a rule +def extract_entries(data): + entries = [] + filter_data = data.get('filter', {}) + for value in filter_data.values(): + target_field = FIELD_MAPPINGS.get(value.get('TargetField', '')) + condition = value.get('Condition', '') + pattern = value.get('Pattern', '') + + operator, match_type = CONDITION_MAPPINGS.get(condition, ("included", "match")) + + entries.append({ + "field": target_field, + "operator": operator, + "type": match_type, + "value": pattern + }) + return entries + +# Build the JSON entry +def build_json_entry(data, entries, guid, event_type, dataset, context): + return { + "comments": [], + "entries": entries, + "item_id": guid, + "name": f"SO - {event_type} - {guid}", + "description": f"{context}\n\n <<- Note: This filter is managed by Security Onion. ->>", + "namespace_type": "agnostic", + "tags": ["policy:all"], + "type": "simple", + "os_types": ["windows"], + "entries": entries + } + +# Check to see if the rule is disabled +# If it is, make sure it is not active +def disable_check(guid, disabled_rules, username, password): + if guid in disabled_rules: + logging.info(f"Rule {guid} is in the disabled rules list, confirming that is is actually disabled...") + existing_rule = api_request("GET", guid, username, password) + + if existing_rule: + if api_request("DELETE", guid, username, password): + logging.info(f"Successfully deleted rule {guid}") + return True, "deleted" + else: + logging.error(f"Error deleting rule {guid}.") + return True, "Error deleting" + return True, "NOP" + return False, None + +def process_rule_update_or_create(guid, json_entry, username, password): + existing_rule = api_request("GET", guid, username, password) + + if existing_rule: + existing_rule_data = extract_relevant_fields(existing_rule) + new_rule_data = extract_relevant_fields(json_entry) + if generate_hash(existing_rule_data) != generate_hash(new_rule_data): + logging.info(f"Updating rule {guid}") + json_entry.pop("list_id", None) + api_request("PUT", guid, username, password, json_data=json_entry) + return "updated" + logging.info(f"Rule {guid} is up to date.") + return "no_change" + else: + logging.info(f"Creating new rule {guid}") + json_entry["list_id"] = "endpoint_event_filters" + api_request("POST", guid, username, password, json_data=json_entry) + return "new" + +# Main function for processing rules +def process_rules(yaml_files, disabled_rules, username, password): + stats = {"rule_count": 0, "new": 0, "updated": 0, "no_change": 0, "disabled": 0, "deleted": 0} + for data in yaml_files: + logging.info(f"Processing rule: {data.get('id', '')}") + event_type = data.get('event_type', '') + guid = data.get('id', '') + dataset = DATASET_MAPPINGS.get(event_type, '') + context = data.get('description', '') + + rule_deleted, state = disable_check(guid, disabled_rules, username, password) + if rule_deleted: + stats["disabled"] += 1 + if state == "deleted": + stats["deleted"] += 1 + continue + + # Extract entries and build JSON + entries = extract_entries(data) + json_entry = build_json_entry(data, entries, guid, event_type, dataset, context) + + # Process rule creation or update + status = process_rule_update_or_create(guid, json_entry, username, password) + + stats[status] += 1 + stats["rule_count"] += 1 + return stats + +def parse_args(argv): + try: + opts, args = getopt.getopt(argv, "i:d:c:f:", ["input=", "disabled=", "credentials=", "flags_file="]) + except getopt.GetoptError: + print("Usage: python so-elastic-defend-manage-filters.py -c -d -i [-f ]") + sys.exit(2) + return opts + +def load_flags(file_path): + with open(file_path, 'r') as flags_file: + return flags_file.read().splitlines() + +def validate_inputs(credentials_file, disabled_file, yaml_directories): + if not credentials_file or not disabled_file or not yaml_directories: + print("Usage: python so-elastic-defend-manage-filters.py -c -d -i [-f ]") + sys.exit(2) + +def main(argv): + credentials_file = "" + disabled_file = "" + yaml_directories = [] + + opts = parse_args(argv) + + for opt, arg in opts: + if opt in ("-c", "--credentials"): + credentials_file = arg + elif opt in ("-d", "--disabled"): + disabled_file = arg + elif opt in ("-i", "--input"): + yaml_directories.append(arg) + elif opt in ("-f", "--flags_file"): + flags = load_flags(arg) + return main(argv + flags) + + validate_inputs(credentials_file, disabled_file, yaml_directories) + + credentials = load_credentials(credentials_file) + if not credentials: + raise Exception("Failed to load credentials") + + username, password = extract_auth_details(credentials) + if not username or not password: + raise Exception("Invalid credentials format") + + custom_rules_input = '/opt/so/conf/elastic-fleet/defend-exclusions/rulesets/custom-filters-raw' + custom_rules_output = '/opt/so/conf/elastic-fleet/defend-exclusions/rulesets/custom-filters' + prepare_custom_rules(custom_rules_input, custom_rules_output) + disabled_rules = load_disabled(disabled_file) + + total_stats = {"rule_count": 0, "new": 0, "updated": 0, "no_change": 0, "disabled": 0, "deleted": 0} + + for yaml_dir in yaml_directories: + yaml_files = load_yaml_files(yaml_dir) + stats = process_rules(yaml_files, disabled_rules, username, password) + + for key in total_stats: + total_stats[key] += stats[key] + + logging.info(f"\nProcessing Summary") + logging.info(f" - Total processed rules: {total_stats['rule_count']}") + logging.info(f" - New rules: {total_stats['new']}") + logging.info(f" - Updated rules: {total_stats['updated']}") + logging.info(f" - Disabled rules: {total_stats['deleted']}") + logging.info(f" - Rules with no changes: {total_stats['no_change']}") + logging.info(f"Rule status Summary") + logging.info(f" - Active rules: {total_stats['rule_count'] - total_stats['disabled']}") + logging.info(f" - Disabled rules: {total_stats['disabled']}") + +if __name__ == "__main__": + main(sys.argv[1:]) diff --git a/salt/elasticfleet/tools/sbin/so_elastic_defend_filters_helper.py b/salt/elasticfleet/tools/sbin/so_elastic_defend_filters_helper.py new file mode 100644 index 000000000..ab997f60e --- /dev/null +++ b/salt/elasticfleet/tools/sbin/so_elastic_defend_filters_helper.py @@ -0,0 +1,123 @@ + +import hashlib +import os +import json +import yaml +import requests +from requests.auth import HTTPBasicAuth +import shutil + +# Extract only the 'entries' and 'description' fields +def extract_relevant_fields(rule): + return { + 'entries': rule.get('entries', []), + 'description': rule.get('description', '') + } + +# Sort lists and recursively sort keys in dictionaries for consistency +def sorted_data(value): + if isinstance(value, dict): + return {k: sorted_data(v) for k, v in sorted(value.items())} + elif isinstance(value, list): + return sorted(sorted_data(v) for v in value) + return value + +# Generate a hash based on sorted relevant fields +def generate_hash(data): + sorted_data_string = json.dumps(sorted_data(data), sort_keys=True) + return hashlib.sha256(sorted_data_string.encode('utf-8')).hexdigest() + +# Load Elasticsearch credentials from the config file +def load_credentials(config_path): + with open(config_path, 'r') as file: + for line in file: + if line.startswith("user"): + credentials = line.split('=', 1)[1].strip().strip('"') + return credentials + return None + +# Extract username and password from credentials +def extract_auth_details(credentials): + if ':' in credentials: + return credentials.split(':', 1) + return None, None + +# Generalized API request function +def api_request(method, guid, username, password, json_data=None): + headers = { + 'kbn-xsrf': 'true', + 'Content-Type': 'application/json' + } + auth = HTTPBasicAuth(username, password) + + if method == "POST": + url = "http://localhost:5601/api/exception_lists/items?namespace_type=agnostic" + else: + url = f"http://localhost:5601/api/exception_lists/items?item_id={guid}&namespace_type=agnostic" + + response = requests.request(method, url, headers=headers, auth=auth, json=json_data) + + if response.status_code in [200, 201]: + return response.json() if response.content else True + elif response.status_code == 404 and method == "GET": + return None + else: + print(f"Error with {method} request: {response.status_code} - {response.text}") + return False + + +# Load YAML data for GUIDs to skip +def load_disabled(disabled_file_path): + if os.path.exists(disabled_file_path): + with open(disabled_file_path, 'r') as file: + return yaml.safe_load(file) or {} + return {} + +def load_yaml_files(*dirs): + yaml_files = [] + + for dir_path in dirs: + if os.path.isdir(dir_path): + # Recurse through the directory and subdirectories + for root, dirs, files in os.walk(dir_path): + for file_name in files: + if file_name.endswith(".yaml"): + full_path = os.path.join(root, file_name) + with open(full_path, 'r') as f: + try: + yaml_content = yaml.safe_load(f) + yaml_files.append(yaml_content) + except yaml.YAMLError as e: + print(f"Error loading {full_path}: {e}") + else: + print(f"Invalid directory: {dir_path}") + + return yaml_files + +def prepare_custom_rules(input_file, output_dir): + # Clear the output directory first + if os.path.exists(output_dir): + shutil.rmtree(output_dir) + os.makedirs(output_dir, exist_ok=True) + + try: + # Load the YAML file + with open(input_file, 'r') as f: + docs = yaml.safe_load_all(f) + + for doc in docs: + if 'id' not in doc: + print(f"Skipping rule, no 'id' found: {doc}") + continue + # Create a filename using the 'id' field + file_name = os.path.join(output_dir, f"{doc['id']}.yaml") + + # Write the individual YAML file + with open(file_name, 'w') as output_file: + yaml.dump(doc, output_file, default_flow_style=False) + print(f"Created file: {file_name}") + + except yaml.YAMLError as e: + print(f"Error parsing YAML: {e}") + except Exception as e: + print(f"Error processing file: {e}") diff --git a/salt/kibana/tools/sbin_jinja/so-kibana-space-defaults b/salt/kibana/tools/sbin_jinja/so-kibana-space-defaults index 430054e06..6e4959194 100755 --- a/salt/kibana/tools/sbin_jinja/so-kibana-space-defaults +++ b/salt/kibana/tools/sbin_jinja/so-kibana-space-defaults @@ -13,6 +13,6 @@ echo "Setting up default Space:" {% if HIGHLANDER %} curl -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X PUT "localhost:5601/api/spaces/space/default" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d' {"id":"default","name":"Default","disabledFeatures":["enterpriseSearch"]} ' >> /opt/so/log/kibana/misc.log {% else %} -curl -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X PUT "localhost:5601/api/spaces/space/default" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d' {"id":"default","name":"Default","disabledFeatures":["ml","enterpriseSearch","siem","logs","infrastructure","apm","uptime","monitoring","stackAlerts","actions","securitySolutionCases"]} ' >> /opt/so/log/kibana/misc.log +curl -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X PUT "localhost:5601/api/spaces/space/default" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d' {"id":"default","name":"Default","disabledFeatures":["ml","enterpriseSearch","logs","infrastructure","apm","uptime","monitoring","stackAlerts","actions","securitySolutionCases"]} ' >> /opt/so/log/kibana/misc.log {% endif %} echo From ef003ffbb5ac62aca878e195068e48a49987baf7 Mon Sep 17 00:00:00 2001 From: defensivedepth Date: Mon, 23 Sep 2024 12:55:07 -0400 Subject: [PATCH 039/175] Refactor --- salt/elasticfleet/config.sls | 30 +++++-- salt/elasticfleet/defaults.yaml | 2 + .../soc/elastic-defend-custom-filters.yaml | 38 ++++----- salt/elasticfleet/soc_elasticfleet.yaml | 2 +- .../sbin/so-elastic-defend-manage-filters.py | 84 ++++++++++++++----- .../sbin/so_elastic_defend_filters_helper.py | 19 +++-- 6 files changed, 120 insertions(+), 55 deletions(-) diff --git a/salt/elasticfleet/config.sls b/salt/elasticfleet/config.sls index 127ba895d..555a42288 100644 --- a/salt/elasticfleet/config.sls +++ b/salt/elasticfleet/config.sls @@ -75,14 +75,22 @@ eapackageupgrade: {% if GLOBALS.role != "so-fleet" %} {% if not GLOBALS.airgap %} +elasticdefendrepodir: + file.directory: + - name: /nsm/securityonion-resources + - user: 939 + - group: 939 + - makedirs: True + soresourcesrepoclone: git.latest: - name: https://github.com/Security-Onion-Solutions/securityonion-resources.git - - target: /opt/so/saltstack/local/salt/elasticfleet/files/securityonion-resources - - rev: 'dev/defend-filters' + - target: /nsm/securityonion-resources + - rev: 'dev/defend_filters' - depth: 1 - force_fetch: true - force_clone: true + - user: socore # id is not allowed for this {% endif %} elasticdefendconfdir: @@ -92,13 +100,6 @@ elasticdefendconfdir: - group: 939 - makedirs: True -elasticdefendrulesets: - file.recurse: - - name: /opt/so/conf/elastic-fleet/defend-exclusions/rulesets - - source: salt://elasticfleet/files/securityonion-resources/event-filters/ - - user: 947 - - group: 939 - elasticdefenddisabled: file.managed: - name: /opt/so/conf/elastic-fleet/defend-exclusions/disabled-filters.yaml @@ -115,6 +116,17 @@ elasticdefendcustom: - group: 939 - mode: 600 + cronelasticdefendfilters: + cron.present: + - name: python3 /sbin/so-elastic-defend-manage-filters.py -c /opt/so/conf/elasticsearch/curl.config -d /opt/so/conf/elastic-fleet/defend-exclusions/disabled-filters.yaml -i /nsm/securityonion-resources/event_filters/ -i /opt/so/conf/elastic-fleet/defend-exclusions/rulesets/custom-filters/ &>> /opt/so/log/elasticfleet/elastic-defend-manage-filters.log + - identifier: elastic-defend-filters + - user: root + - minute: '0' + - hour: '3' + - daymonth: '*' + - month: '*' + - dayweek: '*' + eaintegrationsdir: file.directory: - name: /opt/so/conf/elastic-fleet/integrations diff --git a/salt/elasticfleet/defaults.yaml b/salt/elasticfleet/defaults.yaml index 48b24809e..719d5d002 100644 --- a/salt/elasticfleet/defaults.yaml +++ b/salt/elasticfleet/defaults.yaml @@ -8,6 +8,8 @@ elasticfleet: endpoints_enrollment: '' es_token: '' grid_enrollment: '' + defend_filters: + enable_auto_configuration: False logging: zeek: excluded: diff --git a/salt/elasticfleet/files/soc/elastic-defend-custom-filters.yaml b/salt/elasticfleet/files/soc/elastic-defend-custom-filters.yaml index 82ae203d8..ed8121a71 100644 --- a/salt/elasticfleet/files/soc/elastic-defend-custom-filters.yaml +++ b/salt/elasticfleet/files/soc/elastic-defend-custom-filters.yaml @@ -1,27 +1,27 @@ title: 'Template 1' -id: '2B160E43-3B95-4B50-AA3F-25D99F51FA69' -description: 'Credit @ITProPaul' -references: 'https://github.com/Neo23x0/sysmon-config' -author: 'SOS' -date: '09/18/24' -event_type: 'NetworkConnect' +id: 'This needs to be a UUIDv4 id - https://www.uuidgenerator.net/version4' +description: 'Short description detailing what this rule is filtering and why.' +references: 'Relevant urls, etc' +author: '@SecurityOnion' +date: 'MM/DD/YY' +event_type: 'dns_query' filter_type: 'exclude' filter: selection_1: - TargetField: 'DestinationIp' - Condition: 'begin with' - Pattern: 'fe80:0:0:0' + TargetField: 'QueryName' + Condition: 'end with' + Pattern: '.thawte.com' --- -title: 'Template2' -id: '3B160E43-3B95-4B50-AA3F-25D99F51FA69' -description: 'Credit @ITProPaul' -references: 'https://github.com/Neo23x0/sysmon-config' -author: 'SOS' -date: '09/18/24' -event_type: 'NetworkConnect' +title: 'Template 2' +id: 'This needs to be a UUIDv4 id - https://www.uuidgenerator.net/version4' +description: 'Short description detailing what this rule is filtering and why.' +references: 'Relevant urls, etc' +author: '@SecurityOnion' +date: 'MM/DD/YY' +event_type: 'process_creation' filter_type: 'exclude' filter: selection_1: - TargetField: 'DestinationIp' - Condition: 'begin with' - Pattern: 'fe80:0:0:0' \ No newline at end of file + TargetField: 'ParentImage' + Condition: 'is' + Pattern: 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngentask.exe' \ No newline at end of file diff --git a/salt/elasticfleet/soc_elasticfleet.yaml b/salt/elasticfleet/soc_elasticfleet.yaml index bc9a61625..146dda50e 100644 --- a/salt/elasticfleet/soc_elasticfleet.yaml +++ b/salt/elasticfleet/soc_elasticfleet.yaml @@ -21,7 +21,7 @@ elasticfleet: advanced: True elastic-defend-custom-filters__yaml: title: Custom Elastic Defend filters - description: Enter custom filters. + description: Enter custom filters seperated by --- syntax: yaml file: True global: True diff --git a/salt/elasticfleet/tools/sbin/so-elastic-defend-manage-filters.py b/salt/elasticfleet/tools/sbin/so-elastic-defend-manage-filters.py index 874b6c049..f7ce39d1d 100644 --- a/salt/elasticfleet/tools/sbin/so-elastic-defend-manage-filters.py +++ b/salt/elasticfleet/tools/sbin/so-elastic-defend-manage-filters.py @@ -1,4 +1,4 @@ -import yaml +from datetime import datetime import sys import getopt from so_elastic_defend_filters_helper import * @@ -6,44 +6,51 @@ import logging logging.basicConfig(level=logging.INFO, format='%(message)s') -# Define mappings for conditional_field, event_type, and conditions -FIELD_MAPPINGS = { +# Define mappings for Target Field, Event Type, Conditions +TARGET_FIELD_MAPPINGS = { "Image": "process.executable", "ParentImage": "process.parent.executable", "CommandLine": "process.command_line", "ParentCommandLine": "process.parent.command_line", + "DestinationHostname": "destination.domain", "QueryName": "dns.question.name", "DestinationIp": "destination.ip", - "TargetObject": "registry.path" + "TargetObject": "registry.path", + "TargetFilename": "file.path" } DATASET_MAPPINGS = { - "ProcessCreate": "endpoint.events.process", - "NetworkConnect": "endpoint.events.network", - "FileCreate": "endpoint.events.file", - "RegistryEvent": "endpoint.events.registry", - "DnsQuery": "endpoint.events.network" + "process_create": "endpoint.events.process", + "network_connection": "endpoint.events.network", + "file_create": "endpoint.events.file", + "file_delete": "endpoint.events.file", + "registry_event": "endpoint.events.registry", + "dns_query": "endpoint.events.network" } CONDITION_MAPPINGS = { "is": ("included", "match"), "end with": ("included", "wildcard"), "begin with": ("included", "wildcard"), - "contains": ("included", "wildcard"), - "contains any": ("included", "match_any"), - "excluded": ("excluded", "match") + "contains": ("included", "wildcard") } # Extract entries for a rule -def extract_entries(data): +def extract_entries(data, event_type): entries = [] filter_data = data.get('filter', {}) for value in filter_data.values(): - target_field = FIELD_MAPPINGS.get(value.get('TargetField', '')) + target_field = TARGET_FIELD_MAPPINGS.get(value.get('TargetField', '')) condition = value.get('Condition', '') pattern = value.get('Pattern', '') - operator, match_type = CONDITION_MAPPINGS.get(condition, ("included", "match")) + if condition not in CONDITION_MAPPINGS: + logging.error(f"Invalid condition: {condition}") + + # Modify the pattern based on the condition + pattern = modify_pattern(condition, pattern) + + operator, match_type = CONDITION_MAPPINGS[condition] entries.append({ "field": target_field, @@ -51,10 +58,23 @@ def extract_entries(data): "type": match_type, "value": pattern }) + + # Add the event.dataset entry from DATASET_MAPPINGS + dataset_value = DATASET_MAPPINGS.get(event_type, '') + if dataset_value: + entries.append({ + "field": "event.dataset", + "operator": "included", + "type": "match", + "value": dataset_value + }) + else: + logging.error(f"No dataset mapping found for event_type: {event_type}") + return entries -# Build the JSON entry -def build_json_entry(data, entries, guid, event_type, dataset, context): +# Build the JSON +def build_json_entry(entries, guid, event_type, context): return { "comments": [], "entries": entries, @@ -85,6 +105,26 @@ def disable_check(guid, disabled_rules, username, password): return True, "NOP" return False, None +def modify_pattern(condition, pattern): + """ + Modify the pattern based on the condition. + - 'end with': Add '*' to the beginning of the pattern. + - 'begin with': Add '*' to the end of the pattern. + - 'contains': Add '*' to both the beginning and end of the pattern. + """ + if isinstance(pattern, list): + # Apply modification to each pattern in the list if it's a list of patterns + return [modify_pattern(condition, p) for p in pattern] + + if condition == "end with": + return f"*{pattern}" + elif condition == "begin with": + return f"{pattern}*" + elif condition == "contains": + return f"*{pattern}*" + return pattern + + def process_rule_update_or_create(guid, json_entry, username, password): existing_rule = api_request("GET", guid, username, password) @@ -122,8 +162,8 @@ def process_rules(yaml_files, disabled_rules, username, password): continue # Extract entries and build JSON - entries = extract_entries(data) - json_entry = build_json_entry(data, entries, guid, event_type, dataset, context) + entries = extract_entries(data, event_type) + json_entry = build_json_entry(entries, guid, event_type, context) # Process rule creation or update status = process_rule_update_or_create(guid, json_entry, username, password) @@ -167,6 +207,9 @@ def main(argv): flags = load_flags(arg) return main(argv + flags) + timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S') + logging.info(f"\n{timestamp}") + validate_inputs(credentials_file, disabled_file, yaml_directories) credentials = load_credentials(credentials_file) @@ -200,6 +243,9 @@ def main(argv): logging.info(f"Rule status Summary") logging.info(f" - Active rules: {total_stats['rule_count'] - total_stats['disabled']}") logging.info(f" - Disabled rules: {total_stats['disabled']}") + timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S') + logging.info(f"Execution completed at: {timestamp}") + if __name__ == "__main__": main(sys.argv[1:]) diff --git a/salt/elasticfleet/tools/sbin/so_elastic_defend_filters_helper.py b/salt/elasticfleet/tools/sbin/so_elastic_defend_filters_helper.py index ab997f60e..90031a237 100644 --- a/salt/elasticfleet/tools/sbin/so_elastic_defend_filters_helper.py +++ b/salt/elasticfleet/tools/sbin/so_elastic_defend_filters_helper.py @@ -7,19 +7,21 @@ import requests from requests.auth import HTTPBasicAuth import shutil -# Extract only the 'entries' and 'description' fields -def extract_relevant_fields(rule): +# Extract 'entries', 'description' and 'os_types' fields +def extract_relevant_fields(filter): return { - 'entries': rule.get('entries', []), - 'description': rule.get('description', '') + 'entries': filter.get('entries', []), + 'description': filter.get('description', '') } -# Sort lists and recursively sort keys in dictionaries for consistency +# Sort for consistency, so that a hash can be generated def sorted_data(value): if isinstance(value, dict): + # Recursively sort the dictionary by key return {k: sorted_data(v) for k, v in sorted(value.items())} elif isinstance(value, list): - return sorted(sorted_data(v) for v in value) + # Sort lists; for dictionaries, sort by a specific key + return sorted(value, key=lambda x: tuple(sorted(x.items())) if isinstance(x, dict) else x) return value # Generate a hash based on sorted relevant fields @@ -109,6 +111,9 @@ def prepare_custom_rules(input_file, output_dir): if 'id' not in doc: print(f"Skipping rule, no 'id' found: {doc}") continue + if doc.get('title') in ["Template 1", "Template 2"]: + print(f"Skipping template rule with title: {doc['title']}") + continue # Create a filename using the 'id' field file_name = os.path.join(output_dir, f"{doc['id']}.yaml") @@ -120,4 +125,4 @@ def prepare_custom_rules(input_file, output_dir): except yaml.YAMLError as e: print(f"Error parsing YAML: {e}") except Exception as e: - print(f"Error processing file: {e}") + print(f"Error processing file: {e}") \ No newline at end of file From 2a890a35a02d4982cda327664bdf9e75a5129071 Mon Sep 17 00:00:00 2001 From: defensivedepth Date: Mon, 23 Sep 2024 13:48:12 -0400 Subject: [PATCH 040/175] Update format --- salt/elasticfleet/config.sls | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/salt/elasticfleet/config.sls b/salt/elasticfleet/config.sls index 555a42288..91a1fe210 100644 --- a/salt/elasticfleet/config.sls +++ b/salt/elasticfleet/config.sls @@ -116,16 +116,16 @@ elasticdefendcustom: - group: 939 - mode: 600 - cronelasticdefendfilters: - cron.present: - - name: python3 /sbin/so-elastic-defend-manage-filters.py -c /opt/so/conf/elasticsearch/curl.config -d /opt/so/conf/elastic-fleet/defend-exclusions/disabled-filters.yaml -i /nsm/securityonion-resources/event_filters/ -i /opt/so/conf/elastic-fleet/defend-exclusions/rulesets/custom-filters/ &>> /opt/so/log/elasticfleet/elastic-defend-manage-filters.log - - identifier: elastic-defend-filters - - user: root - - minute: '0' - - hour: '3' - - daymonth: '*' - - month: '*' - - dayweek: '*' +cronelasticdefendfilters: + cron.present: + - name: python3 /sbin/so-elastic-defend-manage-filters.py -c /opt/so/conf/elasticsearch/curl.config -d /opt/so/conf/elastic-fleet/defend-exclusions/disabled-filters.yaml -i /nsm/securityonion-resources/event_filters/ -i /opt/so/conf/elastic-fleet/defend-exclusions/rulesets/custom-filters/ &>> /opt/so/log/elasticfleet/elastic-defend-manage-filters.log + - identifier: elastic-defend-filters + - user: root + - minute: '0' + - hour: '3' + - daymonth: '*' + - month: '*' + - dayweek: '*' eaintegrationsdir: file.directory: From 41112a59ec786b8c6368102f7bd6c9ef7ec33a4d Mon Sep 17 00:00:00 2001 From: Wes Date: Mon, 23 Sep 2024 20:12:14 +0000 Subject: [PATCH 041/175] Add back meta --- .../component/elastic-agent/logs-elastic_agent@custom.json | 7 +++++++ .../logs-endpoint.diagnostic.collection@custom.json | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-elastic_agent@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-elastic_agent@custom.json index 17319ab9f..d8d14a5a9 100644 --- a/salt/elasticsearch/templates/component/elastic-agent/logs-elastic_agent@custom.json +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-elastic_agent@custom.json @@ -32,5 +32,12 @@ } } } + }, + "_meta": { + "package": { + "name": "elastic_agent" + }, + "managed_by": "fleet", + "managed": true } } diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-endpoint.diagnostic.collection@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-endpoint.diagnostic.collection@custom.json index 17319ab9f..5bbe3c1fa 100644 --- a/salt/elasticsearch/templates/component/elastic-agent/logs-endpoint.diagnostic.collection@custom.json +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-endpoint.diagnostic.collection@custom.json @@ -32,5 +32,12 @@ } } } + }, + "_meta": { + "package": { + "name": "endpoint" + }, + "managed_by": "fleet", + "managed": true } } From 5cc81983023472c152fe84033994b41adedab9d5 Mon Sep 17 00:00:00 2001 From: defensivedepth Date: Mon, 23 Sep 2024 16:32:42 -0400 Subject: [PATCH 042/175] Fix permissions --- salt/elasticfleet/config.sls | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/salt/elasticfleet/config.sls b/salt/elasticfleet/config.sls index 91a1fe210..43bfb8af9 100644 --- a/salt/elasticfleet/config.sls +++ b/salt/elasticfleet/config.sls @@ -74,23 +74,19 @@ eapackageupgrade: {% if GLOBALS.role != "so-fleet" %} +soresourcesrepoconfig: + git.config_set: + - name: safe.directory + - value: /nsm/securityonion-resources + - global: True + {% if not GLOBALS.airgap %} -elasticdefendrepodir: - file.directory: - - name: /nsm/securityonion-resources - - user: 939 - - group: 939 - - makedirs: True - soresourcesrepoclone: git.latest: - name: https://github.com/Security-Onion-Solutions/securityonion-resources.git - target: /nsm/securityonion-resources - rev: 'dev/defend_filters' - depth: 1 - - force_fetch: true - - force_clone: true - - user: socore # id is not allowed for this {% endif %} elasticdefendconfdir: From 70c5a07913c2a2e53eb496a0f57afec6609e8b1c Mon Sep 17 00:00:00 2001 From: Wes Date: Mon, 23 Sep 2024 21:36:40 +0000 Subject: [PATCH 043/175] Add back meta ad error.message --- .../elastic-agent/logs-system.syslog@custom.json | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-system.syslog@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-system.syslog@custom.json index 17319ab9f..95a902bb9 100644 --- a/salt/elasticsearch/templates/component/elastic-agent/logs-system.syslog@custom.json +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-system.syslog@custom.json @@ -2,7 +2,14 @@ "template": { "mappings": { "properties": { - "host": { + "error": { + "properties": { + "message": { + "type": "match_only_text" + } + } + }, + "host": { "properties":{ "ip": { "type": "ip" @@ -32,5 +39,12 @@ } } } + }, + "_meta": { + "package": { + "name": "system" + }, + "managed_by": "fleet", + "managed": true } } From 52867394142c46721df55f85f1b14ba598b17a0f Mon Sep 17 00:00:00 2001 From: defensivedepth Date: Tue, 24 Sep 2024 10:51:52 -0400 Subject: [PATCH 044/175] Disable by default --- salt/elasticfleet/config.sls | 4 +++- salt/elasticfleet/enabled.sls | 11 +++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/salt/elasticfleet/config.sls b/salt/elasticfleet/config.sls index 43bfb8af9..c5be686a7 100644 --- a/salt/elasticfleet/config.sls +++ b/salt/elasticfleet/config.sls @@ -85,7 +85,7 @@ soresourcesrepoclone: git.latest: - name: https://github.com/Security-Onion-Solutions/securityonion-resources.git - target: /nsm/securityonion-resources - - rev: 'dev/defend_filters' + - rev: 'main' - depth: 1 {% endif %} @@ -112,6 +112,7 @@ elasticdefendcustom: - group: 939 - mode: 600 +{% if ELASTICFLEETMERGED.config.defend_filters.enable_auto_configuration %} cronelasticdefendfilters: cron.present: - name: python3 /sbin/so-elastic-defend-manage-filters.py -c /opt/so/conf/elasticsearch/curl.config -d /opt/so/conf/elastic-fleet/defend-exclusions/disabled-filters.yaml -i /nsm/securityonion-resources/event_filters/ -i /opt/so/conf/elastic-fleet/defend-exclusions/rulesets/custom-filters/ &>> /opt/so/log/elasticfleet/elastic-defend-manage-filters.log @@ -122,6 +123,7 @@ cronelasticdefendfilters: - daymonth: '*' - month: '*' - dayweek: '*' +{% endif %} eaintegrationsdir: file.directory: diff --git a/salt/elasticfleet/enabled.sls b/salt/elasticfleet/enabled.sls index 26738b688..8cc79bf57 100644 --- a/salt/elasticfleet/enabled.sls +++ b/salt/elasticfleet/enabled.sls @@ -17,10 +17,12 @@ include: - elasticfleet.sostatus - ssl +{% if grains.role not in ['so-fleet'] %} # Wait for Elasticsearch to be ready - no reason to try running Elastic Fleet server if ES is not ready wait_for_elasticsearch_elasticfleet: cmd.run: - name: so-elasticsearch-wait +{% endif %} # If enabled, automatically update Fleet Logstash Outputs {% if ELASTICFLEETMERGED.config.server.enable_auto_configuration and grains.role not in ['so-import', 'so-eval', 'so-fleet'] %} @@ -146,6 +148,15 @@ so-elastic-agent-grid-upgrade: so-elastic-fleet-integration-upgrade: cmd.run: - name: /usr/sbin/so-elastic-fleet-integration-upgrade + +{% if ELASTICFLEETMERGED.config.defend_filters.enable_auto_configuration %} +so-elastic-defend-manage-filters-file-watch: + cmd.run: + - name: python3 /sbin/so-elastic-defend-manage-filters.py -c /opt/so/conf/elasticsearch/curl.config -d /opt/so/conf/elastic-fleet/defend-exclusions/disabled-filters.yaml -i /nsm/securityonion-resources/event_filters/ -i /opt/so/conf/elastic-fleet/defend-exclusions/rulesets/custom-filters/ &>> /opt/so/log/elasticfleet/elastic-defend-manage-filters.log + - onchanges: + - file: /opt/so/conf/elastic-fleet/defend-exclusions/rulesets/custom-filters-raw + - file: /opt/so/conf/elastic-fleet/defend-exclusions/disabled-filters.yaml +{% endif %} {% endif %} delete_so-elastic-fleet_so-status.disabled: From 01f87218de9140d8b59ded233e47b2605af5668d Mon Sep 17 00:00:00 2001 From: defensivedepth Date: Tue, 24 Sep 2024 12:04:24 -0400 Subject: [PATCH 045/175] Airgap support --- salt/manager/tools/sbin/soup | 6 ++++++ setup/so-functions | 5 +++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/salt/manager/tools/sbin/soup b/salt/manager/tools/sbin/soup index 452300bba..2a1f3f2f8 100755 --- a/salt/manager/tools/sbin/soup +++ b/salt/manager/tools/sbin/soup @@ -888,6 +888,12 @@ update_airgap_rules() { rsync -av $UPDATE_DIR/agrules/suricata/* /nsm/rules/suricata/ rsync -av $UPDATE_DIR/agrules/detect-sigma/* /nsm/rules/detect-sigma/ rsync -av $UPDATE_DIR/agrules/detect-yara/* /nsm/rules/detect-yara/ + # Checkout the stable summaries branch and copy them over for SOC + git -C $UPDATE_DIR/agrules/securityonion-resources/ checkout generated-summaries-stable + rsync -av $UPDATE_DIR/agrules/securityonion-resources/* /opt/so/conf/soc/ai_summary_repos + # Checkout the main branch and copy them over to nsm + git -C $UPDATE_DIR/agrules/securityonion-resources/ checkout main + rsync -av $UPDATE_DIR/agrules/securityonion-resources/* /nsm/securityonion-resources/ } update_airgap_repo() { diff --git a/setup/so-functions b/setup/so-functions index 0c2cbf3e0..5693abcb3 100755 --- a/setup/so-functions +++ b/setup/so-functions @@ -42,9 +42,10 @@ logCmd() { ### End Logging Section ### airgap_rules() { - # Copy the rules for suricata if using Airgap + # Copy the rules for detections if using Airgap mkdir -p /nsm/rules - cp -Rv /root/SecurityOnion/agrules/* /nsm/rules/ + rsync -av --exclude='securityonion-resources' /root/SecurityOnion/agrules/ /nsm/rules/ + rsync -av /root/SecurityOnion/agrules/securityonion-resources/ /nsm/ } add_admin_user() { From 0a74a532549e127044e335d7a48c655275dc6a3f Mon Sep 17 00:00:00 2001 From: defensivedepth Date: Tue, 24 Sep 2024 12:38:49 -0400 Subject: [PATCH 046/175] Remove cron if disabled --- salt/elasticfleet/config.sls | 6 +++++- salt/elasticfleet/enabled.sls | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/salt/elasticfleet/config.sls b/salt/elasticfleet/config.sls index c5be686a7..4ff284ffa 100644 --- a/salt/elasticfleet/config.sls +++ b/salt/elasticfleet/config.sls @@ -113,7 +113,7 @@ elasticdefendcustom: - mode: 600 {% if ELASTICFLEETMERGED.config.defend_filters.enable_auto_configuration %} -cronelasticdefendfilters: +cron-elastic-defend-filters-add: cron.present: - name: python3 /sbin/so-elastic-defend-manage-filters.py -c /opt/so/conf/elasticsearch/curl.config -d /opt/so/conf/elastic-fleet/defend-exclusions/disabled-filters.yaml -i /nsm/securityonion-resources/event_filters/ -i /opt/so/conf/elastic-fleet/defend-exclusions/rulesets/custom-filters/ &>> /opt/so/log/elasticfleet/elastic-defend-manage-filters.log - identifier: elastic-defend-filters @@ -123,6 +123,10 @@ cronelasticdefendfilters: - daymonth: '*' - month: '*' - dayweek: '*' +{% else %} +cron-elastic-defend-filters-remove: + cron.absent: + - identifier: elastic-defend-filters {% endif %} eaintegrationsdir: diff --git a/salt/elasticfleet/enabled.sls b/salt/elasticfleet/enabled.sls index 8cc79bf57..51d2d1430 100644 --- a/salt/elasticfleet/enabled.sls +++ b/salt/elasticfleet/enabled.sls @@ -154,8 +154,8 @@ so-elastic-defend-manage-filters-file-watch: cmd.run: - name: python3 /sbin/so-elastic-defend-manage-filters.py -c /opt/so/conf/elasticsearch/curl.config -d /opt/so/conf/elastic-fleet/defend-exclusions/disabled-filters.yaml -i /nsm/securityonion-resources/event_filters/ -i /opt/so/conf/elastic-fleet/defend-exclusions/rulesets/custom-filters/ &>> /opt/so/log/elasticfleet/elastic-defend-manage-filters.log - onchanges: - - file: /opt/so/conf/elastic-fleet/defend-exclusions/rulesets/custom-filters-raw - - file: /opt/so/conf/elastic-fleet/defend-exclusions/disabled-filters.yaml + - file: elasticdefendcustom + - file: elasticdefenddisabled {% endif %} {% endif %} From d2397c3c1c1309176ab6dce8915e03a89a7d3653 Mon Sep 17 00:00:00 2001 From: defensivedepth Date: Tue, 24 Sep 2024 13:03:51 -0400 Subject: [PATCH 047/175] Refactor cron logic --- salt/elasticfleet/config.sls | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/salt/elasticfleet/config.sls b/salt/elasticfleet/config.sls index 4ff284ffa..d29b9ddb2 100644 --- a/salt/elasticfleet/config.sls +++ b/salt/elasticfleet/config.sls @@ -113,8 +113,12 @@ elasticdefendcustom: - mode: 600 {% if ELASTICFLEETMERGED.config.defend_filters.enable_auto_configuration %} -cron-elastic-defend-filters-add: - cron.present: +{% set ap = "present" %} +{% else %} +{% set ap = "absent" %} +{% endif %} +cron-elastic-defend-filters: + cron.{{ap}}: - name: python3 /sbin/so-elastic-defend-manage-filters.py -c /opt/so/conf/elasticsearch/curl.config -d /opt/so/conf/elastic-fleet/defend-exclusions/disabled-filters.yaml -i /nsm/securityonion-resources/event_filters/ -i /opt/so/conf/elastic-fleet/defend-exclusions/rulesets/custom-filters/ &>> /opt/so/log/elasticfleet/elastic-defend-manage-filters.log - identifier: elastic-defend-filters - user: root @@ -123,11 +127,6 @@ cron-elastic-defend-filters-add: - daymonth: '*' - month: '*' - dayweek: '*' -{% else %} -cron-elastic-defend-filters-remove: - cron.absent: - - identifier: elastic-defend-filters -{% endif %} eaintegrationsdir: file.directory: From 48aff374a3b3ed8f4c911ae45d5fecfccd9382fa Mon Sep 17 00:00:00 2001 From: defensivedepth Date: Tue, 24 Sep 2024 15:37:43 -0400 Subject: [PATCH 048/175] Use temp summaries branch --- setup/so-functions | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/setup/so-functions b/setup/so-functions index 5693abcb3..cf50c887a 100755 --- a/setup/so-functions +++ b/setup/so-functions @@ -45,7 +45,14 @@ airgap_rules() { # Copy the rules for detections if using Airgap mkdir -p /nsm/rules rsync -av --exclude='securityonion-resources' /root/SecurityOnion/agrules/ /nsm/rules/ + + # Copy over the securityonion-resources repo rsync -av /root/SecurityOnion/agrules/securityonion-resources/ /nsm/ + + # Copy summaries over to SOC and checkout the correct branch + rsync -av --chown=socore:socore /nsm/securityonion-resources/* /opt/so/conf/soc/ai_summary_repos + git config --global --add safe.directory /opt/so/conf/soc/ai_summary_repos/securityonion-resources + git -C /opt/so/conf/soc/ai_summary_repos/securityonion-resources checkout staging/generated-summaries-stable } add_admin_user() { From 50ae37c160fdc46e7bf27dd4ec339fe5469638c1 Mon Sep 17 00:00:00 2001 From: weslambert Date: Wed, 25 Sep 2024 08:25:20 -0400 Subject: [PATCH 049/175] Check if running during soup --- .../tools/sbin_jinja/so-elasticsearch-templates-load | 3 +++ 1 file changed, 3 insertions(+) diff --git a/salt/elasticsearch/tools/sbin_jinja/so-elasticsearch-templates-load b/salt/elasticsearch/tools/sbin_jinja/so-elasticsearch-templates-load index 76b1cc193..b2d9e36a0 100755 --- a/salt/elasticsearch/tools/sbin_jinja/so-elasticsearch-templates-load +++ b/salt/elasticsearch/tools/sbin_jinja/so-elasticsearch-templates-load @@ -23,6 +23,9 @@ else echo "This is the initial template load" fi +# If soup is running, ignore errors +pgrep soup > /dev/null && should_exit_on_failure=0 + load_failures=0 load_template() { From 445a9679bda4f56b8eb91bcc0a8cd78db0166004 Mon Sep 17 00:00:00 2001 From: defensivedepth Date: Wed, 25 Sep 2024 10:18:57 -0400 Subject: [PATCH 050/175] Add so repo back in --- setup/so-functions | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup/so-functions b/setup/so-functions index cf50c887a..5908a8b7a 100755 --- a/setup/so-functions +++ b/setup/so-functions @@ -44,7 +44,7 @@ logCmd() { airgap_rules() { # Copy the rules for detections if using Airgap mkdir -p /nsm/rules - rsync -av --exclude='securityonion-resources' /root/SecurityOnion/agrules/ /nsm/rules/ + rsync -av /root/SecurityOnion/agrules/ /nsm/rules/ # Copy over the securityonion-resources repo rsync -av /root/SecurityOnion/agrules/securityonion-resources/ /nsm/ From 073fb16e203b8f47a76b059a85cb19ca25e23b08 Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Wed, 25 Sep 2024 10:26:26 -0400 Subject: [PATCH 051/175] lowercase email when looking up ID; allow uppercase emails when modifying existing users but not when adding new users --- salt/manager/tools/sbin/so-user | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/salt/manager/tools/sbin/so-user b/salt/manager/tools/sbin/so-user index 40e0b01f8..e4b2b7464 100755 --- a/salt/manager/tools/sbin/so-user +++ b/salt/manager/tools/sbin/so-user @@ -173,7 +173,7 @@ function verifyEnvironment() { } function findIdByEmail() { - email=$1 + email=${1,,} response=$(curl -Ss -L ${kratosUrl}/identities) identityId=$(echo "${response}" | jq -r ".[] | select(.verifiable_addresses[0].value == \"$email\") | .id") @@ -195,12 +195,13 @@ function validatePassword() { function validateEmail() { email=$1 + requireLower=$2 # (?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\]) if [[ ! "$email" =~ ^[[:alnum:]._%+-]+@[[:alnum:].-]+\.[[:alpha:]]{2,}$ ]]; then fail "Email address is invalid" fi - if [[ "$email" =~ [A-Z] ]]; then + if [[ "$requireLower" == "true" && "$email" =~ [A-Z] ]]; then fail "Email addresses cannot contain uppercase letters" fi } @@ -581,7 +582,7 @@ case "${operation}" in [[ "$email" == "" ]] && fail "Email address must be provided" lock - validateEmail "$email" + validateEmail "$email" true updatePassword createUser "$email" "${role:-$DEFAULT_ROLE}" "${firstName}" "${lastName}" "${note}" syncAll @@ -687,13 +688,13 @@ case "${operation}" in ;; "validate") - validateEmail "$email" + validateEmail "$email" true updatePassword echo "Email and password are acceptable" ;; "valemail") - validateEmail "$email" + validateEmail "$email" true echo "Email is acceptable" ;; From aacd71537943494d944e8735b8b8c0385c2d0105 Mon Sep 17 00:00:00 2001 From: weslambert Date: Wed, 25 Sep 2024 13:07:01 -0400 Subject: [PATCH 052/175] Retry after 1 second --- .../tools/sbin_jinja/so-elasticsearch-templates-load | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/salt/elasticsearch/tools/sbin_jinja/so-elasticsearch-templates-load b/salt/elasticsearch/tools/sbin_jinja/so-elasticsearch-templates-load index b2d9e36a0..758f601eb 100755 --- a/salt/elasticsearch/tools/sbin_jinja/so-elasticsearch-templates-load +++ b/salt/elasticsearch/tools/sbin_jinja/so-elasticsearch-templates-load @@ -33,7 +33,7 @@ load_template() { file=$2 echo "Loading template file $i" - if ! retry 3 5 "so-elasticsearch-query $uri -d@$file -XPUT" "{\"acknowledged\":true}"; then + if ! retry 3 1 "so-elasticsearch-query $uri -d@$file -XPUT" "{\"acknowledged\":true}"; then if [[ $should_exit_on_failure -eq 1 ]]; then fail "Could not load template file: $file" else From 778d5be4076e4c3fc26357d6a2659eb0cc545a37 Mon Sep 17 00:00:00 2001 From: defensivedepth Date: Wed, 25 Sep 2024 15:35:08 -0400 Subject: [PATCH 053/175] Change summaries branch --- salt/manager/tools/sbin/soup | 2 +- salt/soc/defaults.yaml | 6 +++--- setup/so-functions | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/salt/manager/tools/sbin/soup b/salt/manager/tools/sbin/soup index 2a1f3f2f8..0440ea1bd 100755 --- a/salt/manager/tools/sbin/soup +++ b/salt/manager/tools/sbin/soup @@ -889,7 +889,7 @@ update_airgap_rules() { rsync -av $UPDATE_DIR/agrules/detect-sigma/* /nsm/rules/detect-sigma/ rsync -av $UPDATE_DIR/agrules/detect-yara/* /nsm/rules/detect-yara/ # Checkout the stable summaries branch and copy them over for SOC - git -C $UPDATE_DIR/agrules/securityonion-resources/ checkout generated-summaries-stable + git -C $UPDATE_DIR/agrules/securityonion-resources/ checkout generated-summaries-published rsync -av $UPDATE_DIR/agrules/securityonion-resources/* /opt/so/conf/soc/ai_summary_repos # Checkout the main branch and copy them over to nsm git -C $UPDATE_DIR/agrules/securityonion-resources/ checkout main diff --git a/salt/soc/defaults.yaml b/salt/soc/defaults.yaml index f191fd054..2d2a26c9a 100644 --- a/salt/soc/defaults.yaml +++ b/salt/soc/defaults.yaml @@ -1313,7 +1313,7 @@ soc: hostUrl: elastalertengine: aiRepoUrl: https://github.com/Security-Onion-Solutions/securityonion-resources - aiRepoBranch: generated-summaries-stable + aiRepoBranch: generated-summaries-published aiRepoPath: /opt/sensoroni/ai_summary_repos showAiSummaries: true autoUpdateEnabled: true @@ -1396,7 +1396,7 @@ soc: - rbac/users_roles strelkaengine: aiRepoUrl: https://github.com/Security-Onion-Solutions/securityonion-resources - aiRepoBranch: generated-summaries-stable + aiRepoBranch: generated-summaries-published aiRepoPath: /opt/sensoroni/ai_summary_repos showAiSummaries: true autoEnabledYaraRules: @@ -1421,7 +1421,7 @@ soc: integrityCheckFrequencySeconds: 1200 suricataengine: aiRepoUrl: https://github.com/Security-Onion-Solutions/securityonion-resources - aiRepoBranch: generated-summaries-stable + aiRepoBranch: generated-summaries-published aiRepoPath: /opt/sensoroni/ai_summary_repos showAiSummaries: true autoUpdateEnabled: true diff --git a/setup/so-functions b/setup/so-functions index 5908a8b7a..96d83e5d2 100755 --- a/setup/so-functions +++ b/setup/so-functions @@ -52,7 +52,7 @@ airgap_rules() { # Copy summaries over to SOC and checkout the correct branch rsync -av --chown=socore:socore /nsm/securityonion-resources/* /opt/so/conf/soc/ai_summary_repos git config --global --add safe.directory /opt/so/conf/soc/ai_summary_repos/securityonion-resources - git -C /opt/so/conf/soc/ai_summary_repos/securityonion-resources checkout staging/generated-summaries-stable + git -C /opt/so/conf/soc/ai_summary_repos/securityonion-resources checkout generated-summaries-published } add_admin_user() { From fe860481c5e93badadc244e44c9bf089477c0276 Mon Sep 17 00:00:00 2001 From: defensivedepth Date: Thu, 26 Sep 2024 08:52:53 -0400 Subject: [PATCH 054/175] Fix location for airgap --- salt/manager/tools/sbin/soup | 10 +++++----- setup/so-functions | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/salt/manager/tools/sbin/soup b/salt/manager/tools/sbin/soup index 0440ea1bd..c8b2387c7 100755 --- a/salt/manager/tools/sbin/soup +++ b/salt/manager/tools/sbin/soup @@ -888,11 +888,11 @@ update_airgap_rules() { rsync -av $UPDATE_DIR/agrules/suricata/* /nsm/rules/suricata/ rsync -av $UPDATE_DIR/agrules/detect-sigma/* /nsm/rules/detect-sigma/ rsync -av $UPDATE_DIR/agrules/detect-yara/* /nsm/rules/detect-yara/ - # Checkout the stable summaries branch and copy them over for SOC - git -C $UPDATE_DIR/agrules/securityonion-resources/ checkout generated-summaries-published - rsync -av $UPDATE_DIR/agrules/securityonion-resources/* /opt/so/conf/soc/ai_summary_repos - # Checkout the main branch and copy them over to nsm - git -C $UPDATE_DIR/agrules/securityonion-resources/ checkout main + # Copy the securityonion-resorces repo over for SOC Detection Summaries and checkout the published summaries branch + rsync -av --chown=socore:socore $UPDATE_DIR/agrules/securityonion-resources /opt/so/conf/soc/ai_summary_repos + git config --global --add safe.directory /opt/so/conf/soc/ai_summary_repos + git -C /opt/so/conf/soc/ai_summary_repos/securityonion-resources checkout generated-summaries-published + # Copy the securityonion-resorces repo over to nsm rsync -av $UPDATE_DIR/agrules/securityonion-resources/* /nsm/securityonion-resources/ } diff --git a/setup/so-functions b/setup/so-functions index 96d83e5d2..3f7440597 100755 --- a/setup/so-functions +++ b/setup/so-functions @@ -47,10 +47,10 @@ airgap_rules() { rsync -av /root/SecurityOnion/agrules/ /nsm/rules/ # Copy over the securityonion-resources repo - rsync -av /root/SecurityOnion/agrules/securityonion-resources/ /nsm/ + rsync -av /root/SecurityOnion/agrules/securityonion-resources /nsm/ # Copy summaries over to SOC and checkout the correct branch - rsync -av --chown=socore:socore /nsm/securityonion-resources/* /opt/so/conf/soc/ai_summary_repos + rsync -av --chown=socore:socore /nsm/securityonion-resources /opt/so/conf/soc/ai_summary_repos git config --global --add safe.directory /opt/so/conf/soc/ai_summary_repos/securityonion-resources git -C /opt/so/conf/soc/ai_summary_repos/securityonion-resources checkout generated-summaries-published } From d86694a01ce42885ed82dd45f87026344ae22869 Mon Sep 17 00:00:00 2001 From: defensivedepth Date: Thu, 26 Sep 2024 09:48:28 -0400 Subject: [PATCH 055/175] Fix path --- salt/manager/tools/sbin/soup | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/salt/manager/tools/sbin/soup b/salt/manager/tools/sbin/soup index c8b2387c7..091e471d4 100755 --- a/salt/manager/tools/sbin/soup +++ b/salt/manager/tools/sbin/soup @@ -890,7 +890,7 @@ update_airgap_rules() { rsync -av $UPDATE_DIR/agrules/detect-yara/* /nsm/rules/detect-yara/ # Copy the securityonion-resorces repo over for SOC Detection Summaries and checkout the published summaries branch rsync -av --chown=socore:socore $UPDATE_DIR/agrules/securityonion-resources /opt/so/conf/soc/ai_summary_repos - git config --global --add safe.directory /opt/so/conf/soc/ai_summary_repos + git config --global --add safe.directory /opt/so/conf/soc/ai_summary_repos/securityonion-resources git -C /opt/so/conf/soc/ai_summary_repos/securityonion-resources checkout generated-summaries-published # Copy the securityonion-resorces repo over to nsm rsync -av $UPDATE_DIR/agrules/securityonion-resources/* /nsm/securityonion-resources/ From 3567dfc0dc6b26c971e9d191a15b77bcb12dde0c Mon Sep 17 00:00:00 2001 From: defensivedepth Date: Thu, 26 Sep 2024 15:48:50 -0400 Subject: [PATCH 056/175] Move Airgap later in setup --- setup/so-functions | 6 ++++-- setup/so-setup | 4 ++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/setup/so-functions b/setup/so-functions index 3f7440597..5ebf76c17 100755 --- a/setup/so-functions +++ b/setup/so-functions @@ -48,11 +48,13 @@ airgap_rules() { # Copy over the securityonion-resources repo rsync -av /root/SecurityOnion/agrules/securityonion-resources /nsm/ +} - # Copy summaries over to SOC and checkout the correct branch +airgap_detection_summaries() { + # Copy summaries over to SOC and checkout the correct branch rsync -av --chown=socore:socore /nsm/securityonion-resources /opt/so/conf/soc/ai_summary_repos git config --global --add safe.directory /opt/so/conf/soc/ai_summary_repos/securityonion-resources - git -C /opt/so/conf/soc/ai_summary_repos/securityonion-resources checkout generated-summaries-published + git -C /opt/so/conf/soc/ai_summary_repos/securityonion-resources checkout generated-summaries-published } add_admin_user() { diff --git a/setup/so-setup b/setup/so-setup index cb4e7ebf0..85b26fa40 100755 --- a/setup/so-setup +++ b/setup/so-setup @@ -763,6 +763,10 @@ if ! [[ -f $install_opt_file ]]; then logCmd "salt-call state.apply suricata -l info" fi fi + if [[ $is_airgap ]]; then + title "Syncing AI-Generated Detection Summaries" + airgap_detection_summaries + fi title "Setting up Kibana Default Space" logCmd "so-kibana-space-defaults" add_web_user From 4913df229741f7179d3d834425db2a5546b5e561 Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Tue, 1 Oct 2024 08:54:14 -0400 Subject: [PATCH 057/175] adjustments for support of PKCE OIDC --- salt/kratos/defaults.yaml | 1 + salt/kratos/soc_kratos.yaml | 5 +++++ salt/nginx/etc/nginx.conf | 2 +- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/salt/kratos/defaults.yaml b/salt/kratos/defaults.yaml index 1e2eef5ed..b62e4d2ce 100644 --- a/salt/kratos/defaults.yaml +++ b/salt/kratos/defaults.yaml @@ -6,6 +6,7 @@ kratos: id: SSO mapper_url: file:///kratos-conf/oidc.jsonnet subject_source: userinfo + pkce: auto scope: - email - profile diff --git a/salt/kratos/soc_kratos.yaml b/salt/kratos/soc_kratos.yaml index a362bb299..86227aa37 100644 --- a/salt/kratos/soc_kratos.yaml +++ b/salt/kratos/soc_kratos.yaml @@ -70,6 +70,11 @@ kratos: global: True forcedType: "[]string" helpLink: oidc.html + pkce: + description: Set to 'force' if the OIDC provider does not support auto-detection of PKCE, but does support PKCE. Set to `never` to disable PKCE. The default setting automatically attempts to detect if PKCE is supported. The provider's `well-known/openid-configuration` JSON response must contain the `S256` algorithm within the `code_challenge_methods_supported` list in order for the auto-detection to correctly detect PKCE is supported. + global: True + forcedType: string + helpLink: oidc.html requested_claims: id_token: email: diff --git a/salt/nginx/etc/nginx.conf b/salt/nginx/etc/nginx.conf index 1c77426ef..1e45f0db5 100644 --- a/salt/nginx/etc/nginx.conf +++ b/salt/nginx/etc/nginx.conf @@ -193,7 +193,7 @@ http { proxy_set_header X-Forwarded-Proto $scheme; } - location ~ ^/auth/.*?(login|oidc/callback/) { + location ~ ^/auth/.*?(login|oidc/callback) { rewrite /auth/(.*) /$1 break; limit_req zone=auth_throttle burst={{ NGINXMERGED.config.throttle_login_burst }} nodelay; limit_req_status 429; From 24817a39198c3929a70fea2d32b2ab3cfe060300 Mon Sep 17 00:00:00 2001 From: m0duspwnens Date: Tue, 1 Oct 2024 09:21:56 -0400 Subject: [PATCH 058/175] user socore --- salt/elasticfleet/config.sls | 1 + 1 file changed, 1 insertion(+) diff --git a/salt/elasticfleet/config.sls b/salt/elasticfleet/config.sls index d29b9ddb2..bc96b9563 100644 --- a/salt/elasticfleet/config.sls +++ b/salt/elasticfleet/config.sls @@ -79,6 +79,7 @@ soresourcesrepoconfig: - name: safe.directory - value: /nsm/securityonion-resources - global: True + - user: socore {% if not GLOBALS.airgap %} soresourcesrepoclone: From 20127e6b1d24a9200a83696a15585a1ebf4a4a30 Mon Sep 17 00:00:00 2001 From: m0duspwnens Date: Tue, 1 Oct 2024 15:09:53 -0400 Subject: [PATCH 059/175] hard-reset to the remote revision --- salt/elasticfleet/config.sls | 1 + 1 file changed, 1 insertion(+) diff --git a/salt/elasticfleet/config.sls b/salt/elasticfleet/config.sls index bc96b9563..71bc369c6 100644 --- a/salt/elasticfleet/config.sls +++ b/salt/elasticfleet/config.sls @@ -88,6 +88,7 @@ soresourcesrepoclone: - target: /nsm/securityonion-resources - rev: 'main' - depth: 1 + - force_reset: True {% endif %} elasticdefendconfdir: From bbc65c32b630dae0387aedf8c623bd51c1698f4b Mon Sep 17 00:00:00 2001 From: Mike Reeves Date: Mon, 7 Oct 2024 09:55:54 -0400 Subject: [PATCH 060/175] 2.4.110 --- DOWNLOAD_AND_VERIFY_ISO.md | 22 ++++++++++---------- sigs/securityonion-2.4.110-20241004.iso.sig | Bin 0 -> 566 bytes 2 files changed, 11 insertions(+), 11 deletions(-) create mode 100644 sigs/securityonion-2.4.110-20241004.iso.sig diff --git a/DOWNLOAD_AND_VERIFY_ISO.md b/DOWNLOAD_AND_VERIFY_ISO.md index ffeb0fe32..bb4dfd672 100644 --- a/DOWNLOAD_AND_VERIFY_ISO.md +++ b/DOWNLOAD_AND_VERIFY_ISO.md @@ -1,17 +1,17 @@ -### 2.4.100-20240903 ISO image released on 2024/09/03 +### 2.4.110-20241004 ISO image released on 2024/10/07 ### Download and Verify -2.4.100-20240903 ISO image: -https://download.securityonion.net/file/securityonion/securityonion-2.4.100-20240903.iso +2.4.110-20241004 ISO image: +https://download.securityonion.net/file/securityonion/securityonion-2.4.110-20241004.iso -MD5: 856BBB4F0764C0A479D8949725FC096B -SHA1: B3FCFB8F1031EB8AA833A90C6C5BB61328A73842 -SHA256: 0103EB9D78970396BB47CBD18DA1FFE64524F5C1C559487A1B2D293E1882B265 +MD5: 1641E4AFD65DB1C218BFAD22E33909C6 +SHA1: 131E1115F7CA76302F72625CD80A212B91608114 +SHA256: 8598EB03E52B332EF5445520445AD205C68A99BC030F8497F6EBDE1249B8B576 Signature for ISO image: -https://github.com/Security-Onion-Solutions/securityonion/raw/2.4/main/sigs/securityonion-2.4.100-20240903.iso.sig +https://github.com/Security-Onion-Solutions/securityonion/raw/2.4/main/sigs/securityonion-2.4.110-20241004.iso.sig Signing key: https://raw.githubusercontent.com/Security-Onion-Solutions/securityonion/2.4/main/KEYS @@ -25,22 +25,22 @@ wget https://raw.githubusercontent.com/Security-Onion-Solutions/securityonion/2. Download the signature file for the ISO: ``` -wget https://github.com/Security-Onion-Solutions/securityonion/raw/2.4/main/sigs/securityonion-2.4.100-20240903.iso.sig +wget https://github.com/Security-Onion-Solutions/securityonion/raw/2.4/main/sigs/securityonion-2.4.110-20241004.iso.sig ``` Download the ISO image: ``` -wget https://download.securityonion.net/file/securityonion/securityonion-2.4.100-20240903.iso +wget https://download.securityonion.net/file/securityonion/securityonion-2.4.110-20241004.iso ``` Verify the downloaded ISO image using the signature file: ``` -gpg --verify securityonion-2.4.100-20240903.iso.sig securityonion-2.4.100-20240903.iso +gpg --verify securityonion-2.4.110-20241004.iso.sig securityonion-2.4.110-20241004.iso ``` The output should show "Good signature" and the Primary key fingerprint should match what's shown below: ``` -gpg: Signature made Sat 31 Aug 2024 05:05:05 PM EDT using RSA key ID FE507013 +gpg: Signature made Sat 05 Oct 2024 09:31:57 AM EDT using RSA key ID FE507013 gpg: Good signature from "Security Onion Solutions, LLC " gpg: WARNING: This key is not certified with a trusted signature! gpg: There is no indication that the signature belongs to the owner. diff --git a/sigs/securityonion-2.4.110-20241004.iso.sig b/sigs/securityonion-2.4.110-20241004.iso.sig new file mode 100644 index 0000000000000000000000000000000000000000..40bc093e276ee5ceb1f2dfc5d54e06404231fd9b GIT binary patch literal 566 zcmV-60?GY}0y6{v0SEvc79j-41gSkXz6^6dp_W8^5Ma0dP;e6k0%rj~%>W7s5PT3| zxBgIY6B6DK0JvtudFEy7>3{fv0?jN;AWVZ_s%u7%>ji}tqU7}yN}uH^hJbixmf$Fl z{u~27f(Gk-mZs6Yx&rVX^}G&0!MvQ#sW`Oyaq`fnu3fycAR=)NDUr-s6c3+dx1vBr zwx*eYV_s8aSrtJ7-BbV{2fD*`hxzAW;Pu69q4!qVaya}e$Ljs@$|r`1lY<4yB461>;DR*;3_DyU=bUGP;;Ef?mH6Np`{~d(zzpEu!5!%unm%2Qd10l!>{L(5!q^S|DFeEI+C7 zWZgL~6RPq?=Mi^dko^I8eC_|6s*6#;Yo5a9kj5#XZ0mXN;{$l+A!m?^``O%=LG{x7 zHT)RSd_Un+3X>i~S^OSRY#jY14Y5*AT`Yeb3L8Xj0iqKasri2|UV~l&AmUmXH-vr= zlkuMSk7w Date: Mon, 7 Oct 2024 15:30:49 -0400 Subject: [PATCH 061/175] Update VERSION --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 3cda1f5a4..b47ca7775 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.4.110 +2.4.120 From ba4fbb9953770be8683eff344459288957a49872 Mon Sep 17 00:00:00 2001 From: Doug Burks Date: Mon, 7 Oct 2024 16:05:45 -0400 Subject: [PATCH 062/175] Update 2-4.yml --- .github/DISCUSSION_TEMPLATE/2-4.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/DISCUSSION_TEMPLATE/2-4.yml b/.github/DISCUSSION_TEMPLATE/2-4.yml index 9c897d2bd..af5fa3a84 100644 --- a/.github/DISCUSSION_TEMPLATE/2-4.yml +++ b/.github/DISCUSSION_TEMPLATE/2-4.yml @@ -22,6 +22,7 @@ body: - 2.4.90 - 2.4.100 - 2.4.110 + - 2.4.120 - Other (please provide detail below) validations: required: true From 69857b6b5c6ea662ea8086c5911f37d8264b41a0 Mon Sep 17 00:00:00 2001 From: weslambert Date: Tue, 8 Oct 2024 10:54:54 -0400 Subject: [PATCH 063/175] Use ID instead of name --- salt/elasticfleet/tools/sbin/so-elastic-fleet-common | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/salt/elasticfleet/tools/sbin/so-elastic-fleet-common b/salt/elasticfleet/tools/sbin/so-elastic-fleet-common index fadf18b5f..296e578fc 100644 --- a/salt/elasticfleet/tools/sbin/so-elastic-fleet-common +++ b/salt/elasticfleet/tools/sbin/so-elastic-fleet-common @@ -102,6 +102,14 @@ elastic_fleet_package_is_installed() { curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET -H 'kbn-xsrf: true' "localhost:5601/api/fleet/epm/packages/$PACKAGE" | jq -r '.item.status' } +elastic_fleet_agent_policy_ids() { + curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/agent_policies" | jq -r .items[].id + if [ $? -ne 0 ]; then + echo "Error: Failed to retrieve agent policies." + exit 1 + fi +} + elastic_fleet_agent_policy_names() { curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/agent_policies" | jq -r .items[].name if [ $? -ne 0 ]; then From c58ed45cf034e5db2c6f7c1afbc13790efba2a22 Mon Sep 17 00:00:00 2001 From: weslambert Date: Tue, 8 Oct 2024 10:55:16 -0400 Subject: [PATCH 064/175] Use ID instead of name --- .../tools/sbin/so-elastic-fleet-integration-upgrade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-upgrade b/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-upgrade index bdf93bad3..baad389eb 100644 --- a/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-upgrade +++ b/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-upgrade @@ -13,7 +13,7 @@ if [ $? -ne 0 ]; then fi IFS=$'\n' -agent_policies=$(elastic_fleet_agent_policy_names) +agent_policies=$(elastic_fleet_agent_policy_ids) if [ $? -ne 0 ]; then echo "Error: Failed to retrieve agent policies." exit 1 From e2da31c2b708b0181e9ea0b0b6a082c9d345b000 Mon Sep 17 00:00:00 2001 From: Mike Reeves Date: Wed, 9 Oct 2024 14:15:43 -0400 Subject: [PATCH 065/175] Update soup --- salt/manager/tools/sbin/soup | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/salt/manager/tools/sbin/soup b/salt/manager/tools/sbin/soup index 091e471d4..5e3deff15 100755 --- a/salt/manager/tools/sbin/soup +++ b/salt/manager/tools/sbin/soup @@ -402,6 +402,7 @@ preupgrade_changes() { [[ "$INSTALLEDVERSION" == 2.4.70 ]] && up_to_2.4.80 [[ "$INSTALLEDVERSION" == 2.4.80 ]] && up_to_2.4.90 [[ "$INSTALLEDVERSION" == 2.4.90 ]] && up_to_2.4.100 + [[ "$INSTALLEDVERSION" == 2.4.100 ]] && up_to_2.4.110 true } @@ -422,6 +423,7 @@ postupgrade_changes() { [[ "$POSTVERSION" == 2.4.70 ]] && post_to_2.4.80 [[ "$POSTVERSION" == 2.4.80 ]] && post_to_2.4.90 [[ "$POSTVERSION" == 2.4.90 ]] && post_to_2.4.100 + [[ "$POSTVERSION" == 2.4.100 ]] && post_to_2.4.110 true } @@ -509,6 +511,11 @@ post_to_2.4.100() { POSTVERSION=2.4.100 } +post_to_2.4.110() { + echo "Nothing to apply" + POSTVERSION=2.4.110 +} + repo_sync() { echo "Sync the local repo." su socore -c '/usr/sbin/so-repo-sync' || fail "Unable to complete so-repo-sync." @@ -691,6 +698,11 @@ up_to_2.4.100() { determine_elastic_agent_upgrade INSTALLEDVERSION=2.4.100 } +up_to_2.4.110() { + echo "Nothing to do for 2.4.110" + + INSTALLEDVERSION=2.4.110 +} add_detection_test_pillars() { if [[ -n "$SOUP_INTERNAL_TESTING" ]]; then From 787336725c0616b5142fc6099b4290966f586ef8 Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Thu, 10 Oct 2024 06:25:59 -0400 Subject: [PATCH 066/175] 2.4.110 hotfix --- HOTFIX | 1 + 1 file changed, 1 insertion(+) diff --git a/HOTFIX b/HOTFIX index e69de29bb..7f0f80c64 100644 --- a/HOTFIX +++ b/HOTFIX @@ -0,0 +1 @@ +20241010 From 404f9a4eb3be4d06f810a99be5eca37618744715 Mon Sep 17 00:00:00 2001 From: Mike Reeves Date: Thu, 10 Oct 2024 10:37:12 -0400 Subject: [PATCH 067/175] 2.4.110 Hotfix --- DOWNLOAD_AND_VERIFY_ISO.md | 22 ++++++++++---------- sigs/securityonion-2.4.110-20241010.iso.sig | Bin 0 -> 566 bytes 2 files changed, 11 insertions(+), 11 deletions(-) create mode 100644 sigs/securityonion-2.4.110-20241010.iso.sig diff --git a/DOWNLOAD_AND_VERIFY_ISO.md b/DOWNLOAD_AND_VERIFY_ISO.md index bb4dfd672..18a38a91c 100644 --- a/DOWNLOAD_AND_VERIFY_ISO.md +++ b/DOWNLOAD_AND_VERIFY_ISO.md @@ -1,17 +1,17 @@ -### 2.4.110-20241004 ISO image released on 2024/10/07 +### 2.4.110-20241010 ISO image released on 2024/10/10 ### Download and Verify -2.4.110-20241004 ISO image: -https://download.securityonion.net/file/securityonion/securityonion-2.4.110-20241004.iso +2.4.110-20241010 ISO image: +https://download.securityonion.net/file/securityonion/securityonion-2.4.110-20241010.iso -MD5: 1641E4AFD65DB1C218BFAD22E33909C6 -SHA1: 131E1115F7CA76302F72625CD80A212B91608114 -SHA256: 8598EB03E52B332EF5445520445AD205C68A99BC030F8497F6EBDE1249B8B576 +MD5: A8003DEBC4510D538F06238D9DBB86C0 +SHA1: 441DE90A192C8FE8BEBAB9ACE1A3CC18F71A2B1F +SHA256: B087A0D12FC2CA3CCD02BD52E52421F4F60DC09BF826337A057E05A04D114CCE Signature for ISO image: -https://github.com/Security-Onion-Solutions/securityonion/raw/2.4/main/sigs/securityonion-2.4.110-20241004.iso.sig +https://github.com/Security-Onion-Solutions/securityonion/raw/2.4/main/sigs/securityonion-2.4.110-20241010.iso.sig Signing key: https://raw.githubusercontent.com/Security-Onion-Solutions/securityonion/2.4/main/KEYS @@ -25,22 +25,22 @@ wget https://raw.githubusercontent.com/Security-Onion-Solutions/securityonion/2. Download the signature file for the ISO: ``` -wget https://github.com/Security-Onion-Solutions/securityonion/raw/2.4/main/sigs/securityonion-2.4.110-20241004.iso.sig +wget https://github.com/Security-Onion-Solutions/securityonion/raw/2.4/main/sigs/securityonion-2.4.110-20241010.iso.sig ``` Download the ISO image: ``` -wget https://download.securityonion.net/file/securityonion/securityonion-2.4.110-20241004.iso +wget https://download.securityonion.net/file/securityonion/securityonion-2.4.110-20241010.iso ``` Verify the downloaded ISO image using the signature file: ``` -gpg --verify securityonion-2.4.110-20241004.iso.sig securityonion-2.4.110-20241004.iso +gpg --verify securityonion-2.4.110-20241010.iso.sig securityonion-2.4.110-20241010.iso ``` The output should show "Good signature" and the Primary key fingerprint should match what's shown below: ``` -gpg: Signature made Sat 05 Oct 2024 09:31:57 AM EDT using RSA key ID FE507013 +gpg: Signature made Thu 10 Oct 2024 07:05:30 AM EDT using RSA key ID FE507013 gpg: Good signature from "Security Onion Solutions, LLC " gpg: WARNING: This key is not certified with a trusted signature! gpg: There is no indication that the signature belongs to the owner. diff --git a/sigs/securityonion-2.4.110-20241010.iso.sig b/sigs/securityonion-2.4.110-20241010.iso.sig new file mode 100644 index 0000000000000000000000000000000000000000..90849a7b68afe29d504e56b29870860d6f9d77ee GIT binary patch literal 566 zcmV-60?GY}0y6{v0SEvc79j-41gSkXz6^6dp_W8^5Ma0dP;e6k0%r%b`TzV@U5+K}={y6*!?hr$z^nk87TJ4t@3mNI92_L5`?A{~nVnLX(j z`J`G)Zw|U2QckI`J{*LBa*$2NokO9Jaie4mLDi7keu|Qm$oc($9B%W2g~RsV-P?Y& zn5hJs-Q8@5=UC4v)Df|qQb|sm%<57z80titJ|6^*0EbeSny^o1HqilJUb?KrPQ-{K zPxW^)XeY=vD26+E>`FQX`WJ<|!H4s)MoLn$IKV^%^oI77nsH0|tKiIUft66#@ zhgIFcg)Y@?`c42F+qVEfp>62H(7ESy+8R?VZBS>p#@*V?(|8XIGRiOP#>a@7i1T-} z+1Tn7E5f@Ib!^xQbweVO?JR?zWtq!=nd|4&+*+wt71 z&VKYzXAgLKGwmrH09Mvm5MvU1e_PuODW(2_2#GL)g*$Ud#kz}Uo{DW;^jCYa)L!T9 z_im^`*MlW*eh8_uD}BlYD;!rAw)g1iO(M+N4pW)KOV literal 0 HcmV?d00001 From ec7fa5e24ad01e37447736814bf1ac0f9d159267 Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Thu, 10 Oct 2024 11:24:10 -0400 Subject: [PATCH 068/175] clear hotfix file --- HOTFIX | 1 - 1 file changed, 1 deletion(-) diff --git a/HOTFIX b/HOTFIX index 7f0f80c64..e69de29bb 100644 --- a/HOTFIX +++ b/HOTFIX @@ -1 +0,0 @@ -20241010 From d2bd9c0e26c23b1140a9ae11a0aa12c12e26a1e8 Mon Sep 17 00:00:00 2001 From: Corey Ogburn Date: Thu, 8 Aug 2024 12:03:54 -0600 Subject: [PATCH 069/175] Changes to allow reviews to start showing --- salt/soc/defaults.yaml | 1 + salt/soc/soc_soc.yaml | 3 +++ 2 files changed, 4 insertions(+) diff --git a/salt/soc/defaults.yaml b/salt/soc/defaults.yaml index 2d2a26c9a..00c45e5c5 100644 --- a/salt/soc/defaults.yaml +++ b/salt/soc/defaults.yaml @@ -2264,6 +2264,7 @@ soc: query: "_exists_:so_detection.overrides | groupby so_detection.language | groupby so_detection.ruleset so_detection.isEnabled" description: Show Detections that have Overrides detection: + showUnreviewedAiSummaries: false presets: severity: customEnabled: false diff --git a/salt/soc/soc_soc.yaml b/salt/soc/soc_soc.yaml index 8087fe2c3..af4668fc2 100644 --- a/salt/soc/soc_soc.yaml +++ b/salt/soc/soc_soc.yaml @@ -463,6 +463,9 @@ soc: dashboards: *appSettings detections: *appSettings detection: + showUnreviewedAiSummaries: + description: Show AI summaries in detections even if they have not yet been reviewed by a human. + global: True templateDetections: suricata: description: The template used when creating a new Suricata detection. [publicId] will be replaced with an unused Public Id. From cc19b601462df1b3e95adc5d22cfb91bb5bf8f22 Mon Sep 17 00:00:00 2001 From: m0duspwnens Date: Tue, 15 Oct 2024 09:32:14 -0400 Subject: [PATCH 070/175] restore services/top at start of soup --- salt/manager/tools/sbin/soup | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/salt/manager/tools/sbin/soup b/salt/manager/tools/sbin/soup index 091e471d4..6826bde2f 100755 --- a/salt/manager/tools/sbin/soup +++ b/salt/manager/tools/sbin/soup @@ -32,10 +32,7 @@ check_err() { if [[ $exit_code -ne 0 ]]; then set +e - systemctl_func "start" "$cron_service_name" - systemctl_func "start" "salt-master" - systemctl_func "start" "salt-minion" - enable_highstate + failed_soup_restore_items printf '%s' "Soup failed with error $exit_code: " case $exit_code in @@ -358,8 +355,12 @@ masterlock() { } masterunlock() { - echo "Unlocking Salt Master" - mv -v $BACKUPTOPFILE $TOPFILE + if [ -f $BACKUPTOPFILE ]; then + echo "Unlocking Salt Master" + mv -v $BACKUPTOPFILE $TOPFILE + else + echo "Salt Master does not need unlocked." + fi } phases_pillar_2_4_80() { @@ -1079,6 +1080,13 @@ apply_hotfix() { fi } +failed_soup_restore_items() { + systemctl_func "start" "$cron_service_name" + systemctl_func "start" "salt-master" + systemctl_func "start" "salt-minion" + enable_highstate + masterunlock +} #upgrade salt to 3004.1 #2_3_10_hotfix_1() { @@ -1118,6 +1126,8 @@ main() { echo "" require_manager + failed_soup_restore_items + check_pillar_items echo "Checking to see if this is an airgap install." From ac6637c6ab324a26d254e235346df33984cddd1c Mon Sep 17 00:00:00 2001 From: m0duspwnens Date: Tue, 15 Oct 2024 09:56:50 -0400 Subject: [PATCH 071/175] set vars global --- salt/manager/tools/sbin/soup | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/salt/manager/tools/sbin/soup b/salt/manager/tools/sbin/soup index 6826bde2f..912d8ecdb 100755 --- a/salt/manager/tools/sbin/soup +++ b/salt/manager/tools/sbin/soup @@ -19,6 +19,8 @@ SOUP_LOG=/root/soup.log WHATWOULDYOUSAYYAHDOHERE=soup whiptail_title='Security Onion UPdater' NOTIFYCUSTOMELASTICCONFIG=false +TOPFILE=/opt/so/saltstack/default/salt/top.sls +BACKUPTOPFILE=/opt/so/saltstack/default/salt/top.sls.backup # used to display messages to the user at the end of soup declare -a FINAL_MESSAGE_QUEUE=() @@ -344,8 +346,6 @@ highstate() { masterlock() { echo "Locking Salt Master" - TOPFILE=/opt/so/saltstack/default/salt/top.sls - BACKUPTOPFILE=/opt/so/saltstack/default/salt/top.sls.backup mv -v $TOPFILE $BACKUPTOPFILE echo "base:" > $TOPFILE echo " $MINIONID:" >> $TOPFILE From c46fb7e74c7366e7da02d5b60079cdee0b3fd862 Mon Sep 17 00:00:00 2001 From: m0duspwnens Date: Tue, 15 Oct 2024 11:46:09 -0400 Subject: [PATCH 072/175] check if service is running before trying to start it --- salt/manager/tools/sbin/soup | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/salt/manager/tools/sbin/soup b/salt/manager/tools/sbin/soup index 912d8ecdb..70245d618 100755 --- a/salt/manager/tools/sbin/soup +++ b/salt/manager/tools/sbin/soup @@ -1081,9 +1081,12 @@ apply_hotfix() { } failed_soup_restore_items() { - systemctl_func "start" "$cron_service_name" - systemctl_func "start" "salt-master" - systemctl_func "start" "salt-minion" + local services=("$cron_service_name", "salt-master", "salt-minion") + for SERVICE_NAME in "${services[@]}"; do + if ! systemctl is-active --quiet "$SERVICE_NAME"; then + systemctl_func "start" "$SERVICE_NAME" + fi + done enable_highstate masterunlock } From c2e46932eed53b61c84312e07514210290e587e6 Mon Sep 17 00:00:00 2001 From: m0duspwnens Date: Tue, 15 Oct 2024 12:01:53 -0400 Subject: [PATCH 073/175] fix array def --- salt/manager/tools/sbin/soup | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/salt/manager/tools/sbin/soup b/salt/manager/tools/sbin/soup index 70245d618..22cf98558 100755 --- a/salt/manager/tools/sbin/soup +++ b/salt/manager/tools/sbin/soup @@ -1081,7 +1081,7 @@ apply_hotfix() { } failed_soup_restore_items() { - local services=("$cron_service_name", "salt-master", "salt-minion") + local services=("$cron_service_name" "salt-master" "salt-minion") for SERVICE_NAME in "${services[@]}"; do if ! systemctl is-active --quiet "$SERVICE_NAME"; then systemctl_func "start" "$SERVICE_NAME" From 12168531a1eea8f50d1b4d4503969c4c2fb47815 Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Wed, 16 Oct 2024 12:33:03 -0400 Subject: [PATCH 074/175] avoid double SSO clicks on initial OIDC login --- salt/kratos/defaults.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/salt/kratos/defaults.yaml b/salt/kratos/defaults.yaml index b62e4d2ce..598a94fa1 100644 --- a/salt/kratos/defaults.yaml +++ b/salt/kratos/defaults.yaml @@ -50,6 +50,10 @@ kratos: ui_url: https://URL_BASE/login/ registration: ui_url: https://URL_BASE/login/ + after: + oidc: + hooks: + - hook: session default_browser_return_url: https://URL_BASE/ allowed_return_urls: - http://127.0.0.1 From 15c32f9103c4bfbdd1b7b90b8dd55b8c1df955fc Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Wed, 16 Oct 2024 12:33:14 -0400 Subject: [PATCH 075/175] connect routes --- salt/nginx/etc/nginx.conf | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/salt/nginx/etc/nginx.conf b/salt/nginx/etc/nginx.conf index 1e45f0db5..fc18e1fe8 100644 --- a/salt/nginx/etc/nginx.conf +++ b/salt/nginx/etc/nginx.conf @@ -219,6 +219,35 @@ http { proxy_set_header X-Forwarded-Proto $scheme; } + location /connect/token { + rewrite /connect/token(.*) /oauth2/token$1 break; + limit_req zone=auth_throttle burst={{ NGINXMERGED.config.throttle_login_burst }} nodelay; + limit_req_status 429; + proxy_pass http://{{ GLOBALS.manager }}:4444; + proxy_read_timeout 90; + proxy_connect_timeout 90; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Proxy ""; + proxy_set_header X-Forwarded-Proto $scheme; + } + + location /connect/api { + if ($http_authorization !~ "Bearer .*") { + return 403; + } + proxy_pass http://{{ GLOBALS.manager }}:9822/; + proxy_read_timeout 300; + proxy_connect_timeout 300; + proxy_set_header x-user-id ""; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Proxy ""; + proxy_set_header X-Forwarded-Proto $scheme; + } + location /cyberchef/ { auth_request /auth/sessions/whoami; proxy_read_timeout 90; From 523ff66389400f6c4ec4dca0aefa8de933accc90 Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Wed, 16 Oct 2024 13:44:01 -0400 Subject: [PATCH 076/175] connect work --- pillar/top.sls | 14 ++- salt/allowed_states.map.jinja | 5 + salt/backup/defaults.yaml | 1 + salt/common/tools/sbin/so-image-common | 2 + salt/docker/defaults.yaml | 8 ++ salt/docker/soc_docker.yaml | 1 + .../grid-nodes_general/hydra-logs.json | 30 +++++ salt/elasticsearch/defaults.yaml | 110 ++++++++++++++++++ salt/elasticsearch/files/ingest/hydra | 9 ++ salt/elasticsearch/soc_elasticsearch.yaml | 1 + salt/firewall/containers.map.jinja | 3 + salt/hydra/config.sls | 50 ++++++++ salt/hydra/defaults.yaml | 37 ++++++ salt/hydra/disabled.sls | 27 +++++ salt/hydra/enabled.sls | 105 +++++++++++++++++ salt/hydra/files/hydra.yaml.jinja | 1 + salt/hydra/init.sls | 13 +++ salt/hydra/map.jinja | 7 ++ salt/hydra/soc_hydra.yaml | 4 + salt/hydra/sostatus.sls | 21 ++++ salt/logrotate/defaults.yaml | 10 ++ salt/logrotate/soc_logrotate.yaml | 7 ++ salt/manager/tools/sbin/so-minion | 12 ++ salt/nginx/etc/nginx.conf | 2 + salt/soc/defaults.yaml | 7 ++ salt/top.sls | 5 + setup/so-functions | 23 +++- setup/so-variables | 6 + 28 files changed, 513 insertions(+), 8 deletions(-) create mode 100644 salt/elasticfleet/files/integrations/grid-nodes_general/hydra-logs.json create mode 100644 salt/elasticsearch/files/ingest/hydra create mode 100644 salt/hydra/config.sls create mode 100644 salt/hydra/defaults.yaml create mode 100644 salt/hydra/disabled.sls create mode 100644 salt/hydra/enabled.sls create mode 100644 salt/hydra/files/hydra.yaml.jinja create mode 100644 salt/hydra/init.sls create mode 100644 salt/hydra/map.jinja create mode 100644 salt/hydra/soc_hydra.yaml create mode 100644 salt/hydra/sostatus.sls diff --git a/pillar/top.sls b/pillar/top.sls index 131b39a99..0762f14a7 100644 --- a/pillar/top.sls +++ b/pillar/top.sls @@ -47,6 +47,8 @@ base: - kibana.adv_kibana - kratos.soc_kratos - kratos.adv_kratos + - hydra.soc_hydra + - hydra.adv_hydra - redis.nodes - redis.soc_redis - redis.adv_redis @@ -96,6 +98,7 @@ base: - kibana.secrets {% endif %} - kratos.soc_kratos + - kratos.adv_kratos - elasticsearch.soc_elasticsearch - elasticsearch.adv_elasticsearch - elasticfleet.soc_elasticfleet @@ -113,8 +116,8 @@ base: - kibana.adv_kibana - strelka.soc_strelka - strelka.adv_strelka - - kratos.soc_kratos - - kratos.adv_kratos + - hydra.soc_hydra + - hydra.adv_hydra - redis.soc_redis - redis.adv_redis - influxdb.soc_influxdb @@ -149,6 +152,8 @@ base: - idstools.adv_idstools - kratos.soc_kratos - kratos.adv_kratos + - hydra.soc_hydra + - hydra.adv_hydra - redis.nodes - redis.soc_redis - redis.adv_redis @@ -262,6 +267,7 @@ base: - kibana.secrets {% endif %} - kratos.soc_kratos + - kratos.adv_kratos - elasticsearch.soc_elasticsearch - elasticsearch.adv_elasticsearch - elasticfleet.soc_elasticfleet @@ -277,8 +283,8 @@ base: - kibana.adv_kibana - backup.soc_backup - backup.adv_backup - - kratos.soc_kratos - - kratos.adv_kratos + - hydra.soc_hydra + - hydra.adv_hydra - redis.soc_redis - redis.adv_redis - influxdb.soc_influxdb diff --git a/salt/allowed_states.map.jinja b/salt/allowed_states.map.jinja index a9a8b7c5e..a3d5c1354 100644 --- a/salt/allowed_states.map.jinja +++ b/salt/allowed_states.map.jinja @@ -24,6 +24,7 @@ 'influxdb', 'soc', 'kratos', + 'hydra', 'elasticfleet', 'elastic-fleet-package-registry', 'firewall', @@ -68,6 +69,7 @@ 'strelka.manager', 'soc', 'kratos', + 'hydra', 'influxdb', 'telegraf', 'firewall', @@ -95,6 +97,7 @@ 'strelka.manager', 'soc', 'kratos', + 'hydra', 'elasticfleet', 'elastic-fleet-package-registry', 'firewall', @@ -117,6 +120,7 @@ 'strelka.manager', 'soc', 'kratos', + 'hydra', 'elastic-fleet-package-registry', 'elasticfleet', 'firewall', @@ -151,6 +155,7 @@ 'influxdb', 'soc', 'kratos', + 'hydra', 'elastic-fleet-package-registry', 'elasticfleet', 'firewall', diff --git a/salt/backup/defaults.yaml b/salt/backup/defaults.yaml index 1aae64910..dde128a80 100644 --- a/salt/backup/defaults.yaml +++ b/salt/backup/defaults.yaml @@ -4,4 +4,5 @@ backup: - /etc/pki - /etc/salt - /nsm/kratos + - /nsm/hydra destination: "/nsm/backup" \ No newline at end of file diff --git a/salt/common/tools/sbin/so-image-common b/salt/common/tools/sbin/so-image-common index c57749570..7fd35d5ac 100755 --- a/salt/common/tools/sbin/so-image-common +++ b/salt/common/tools/sbin/so-image-common @@ -29,6 +29,7 @@ container_list() { "so-influxdb" "so-kibana" "so-kratos" + "so-hydra" "so-nginx" "so-pcaptools" "so-soc" @@ -53,6 +54,7 @@ container_list() { "so-kafka" "so-kibana" "so-kratos" + "so-hydra" "so-logstash" "so-nginx" "so-pcaptools" diff --git a/salt/docker/defaults.yaml b/salt/docker/defaults.yaml index 161dde485..d6cb0de9c 100644 --- a/salt/docker/defaults.yaml +++ b/salt/docker/defaults.yaml @@ -51,6 +51,14 @@ docker: custom_bind_mounts: [] extra_hosts: [] extra_env: [] + 'so-hydra': + final_octet: 28 + port_bindings: + - 0.0.0.0:4444:4444 + - 0.0.0.0:4454:4445 + custom_bind_mounts: [] + extra_hosts: [] + extra_env: [] 'so-logstash': final_octet: 29 port_bindings: diff --git a/salt/docker/soc_docker.yaml b/salt/docker/soc_docker.yaml index e7ecba6be..dacbf2302 100644 --- a/salt/docker/soc_docker.yaml +++ b/salt/docker/soc_docker.yaml @@ -45,6 +45,7 @@ docker: so-influxdb: *dockerOptions so-kibana: *dockerOptions so-kratos: *dockerOptions + so-hydra: *dockerOptions so-logstash: *dockerOptions so-nginx: *dockerOptions so-nginx-fleet-node: *dockerOptions diff --git a/salt/elasticfleet/files/integrations/grid-nodes_general/hydra-logs.json b/salt/elasticfleet/files/integrations/grid-nodes_general/hydra-logs.json new file mode 100644 index 000000000..f1b1dace9 --- /dev/null +++ b/salt/elasticfleet/files/integrations/grid-nodes_general/hydra-logs.json @@ -0,0 +1,30 @@ +{ + "package": { + "name": "log", + "version": "" + }, + "name": "hydra-logs", + "namespace": "so", + "description": "Hydra logs", + "policy_id": "so-grid-nodes_general", + "inputs": { + "logs-logfile": { + "enabled": true, + "streams": { + "log.logs": { + "enabled": true, + "vars": { + "paths": [ + "/opt/so/log/hydra/hydra.log" + ], + "data_stream.dataset": "hydra", + "tags": ["so-hydra"], + "processors": "- decode_json_fields:\n fields: [\"message\"]\n target: \"\"\n add_error_key: true \n- add_fields:\n target: event\n fields:\n category: iam\n module: hydra", + "custom": "pipeline: hydra" + } + } + } + } + }, + "force": true +} diff --git a/salt/elasticsearch/defaults.yaml b/salt/elasticsearch/defaults.yaml index 06f5392d8..823b33f22 100644 --- a/salt/elasticsearch/defaults.yaml +++ b/salt/elasticsearch/defaults.yaml @@ -794,6 +794,116 @@ elasticsearch: priority: 50 min_age: 30d warm: 7 + so-hydra: + close: 30 + delete: 365 + index_sorting: false + index_template: + composed_of: + - agent-mappings + - dtc-agent-mappings + - base-mappings + - dtc-base-mappings + - client-mappings + - dtc-client-mappings + - container-mappings + - destination-mappings + - dtc-destination-mappings + - pb-override-destination-mappings + - dll-mappings + - dns-mappings + - dtc-dns-mappings + - ecs-mappings + - dtc-ecs-mappings + - error-mappings + - event-mappings + - dtc-event-mappings + - file-mappings + - dtc-file-mappings + - group-mappings + - host-mappings + - dtc-host-mappings + - http-mappings + - dtc-http-mappings + - log-mappings + - network-mappings + - dtc-network-mappings + - observer-mappings + - dtc-observer-mappings + - organization-mappings + - package-mappings + - process-mappings + - dtc-process-mappings + - related-mappings + - rule-mappings + - dtc-rule-mappings + - server-mappings + - service-mappings + - dtc-service-mappings + - source-mappings + - dtc-source-mappings + - pb-override-source-mappings + - threat-mappings + - tls-mappings + - url-mappings + - user_agent-mappings + - dtc-user_agent-mappings + - common-settings + - common-dynamic-mappings + data_stream: + allow_custom_routing: false + hidden: false + ignore_missing_component_templates: [] + index_patterns: + - logs-hydra-so* + priority: 500 + template: + mappings: + date_detection: false + dynamic_templates: + - strings_as_keyword: + mapping: + ignore_above: 1024 + type: keyword + match_mapping_type: string + settings: + index: + lifecycle: + name: so-hydra-logs + mapping: + total_fields: + limit: 5000 + number_of_replicas: 0 + number_of_shards: 1 + refresh_interval: 30s + sort: + field: '@timestamp' + order: desc + policy: + phases: + cold: + actions: + set_priority: + priority: 0 + min_age: 60d + delete: + actions: + delete: {} + min_age: 365d + hot: + actions: + rollover: + max_age: 30d + max_primary_shard_size: 50gb + set_priority: + priority: 100 + min_age: 0ms + warm: + actions: + set_priority: + priority: 50 + min_age: 30d + warm: 7 so-lists: index_sorting: false index_template: diff --git a/salt/elasticsearch/files/ingest/hydra b/salt/elasticsearch/files/ingest/hydra new file mode 100644 index 000000000..6bb2c22d8 --- /dev/null +++ b/salt/elasticsearch/files/ingest/hydra @@ -0,0 +1,9 @@ +{ + "description" : "hydra", + "processors" : [ + {"set":{"field":"audience","value":"access","override":false,"ignore_failure":true}}, + {"set":{"field":"event.dataset","ignore_empty_value":true,"ignore_failure":true,"value":"hydra.{{{audience}}}","media_type":"text/plain"}}, + {"set":{"field":"event.action","ignore_failure":true,"copy_from":"msg" }}, + { "pipeline": { "name": "common" } } + ] +} \ No newline at end of file diff --git a/salt/elasticsearch/soc_elasticsearch.yaml b/salt/elasticsearch/soc_elasticsearch.yaml index 31a8a7f6f..7fd6d08b2 100644 --- a/salt/elasticsearch/soc_elasticsearch.yaml +++ b/salt/elasticsearch/soc_elasticsearch.yaml @@ -539,6 +539,7 @@ elasticsearch: so-suricata_x_alerts: *indexSettings so-import: *indexSettings so-kratos: *indexSettings + so-hydra: *indexSettings so-kismet: *indexSettings so-logstash: *indexSettings so-redis: *indexSettings diff --git a/salt/firewall/containers.map.jinja b/salt/firewall/containers.map.jinja index 02a1b7cac..cc0a20299 100644 --- a/salt/firewall/containers.map.jinja +++ b/salt/firewall/containers.map.jinja @@ -9,6 +9,7 @@ 'so-influxdb', 'so-kibana', 'so-kratos', + 'so-hydra', 'so-nginx', 'so-redis', 'so-soc', @@ -30,6 +31,7 @@ 'so-kafka', 'so-kibana', 'so-kratos', + 'so-hydra', 'so-logstash', 'so-nginx', 'so-redis', @@ -73,6 +75,7 @@ 'so-influxdb', 'so-kibana', 'so-kratos', + 'so-hydra', 'so-nginx', 'so-soc' ] %} diff --git a/salt/hydra/config.sls b/salt/hydra/config.sls new file mode 100644 index 000000000..6f914aa5f --- /dev/null +++ b/salt/hydra/config.sls @@ -0,0 +1,50 @@ +# Copyright Security Onion Solutions LLC and/or licensed to Security Onion Solutions LLC under one +# or more contributor license agreements. Licensed under the Elastic License 2.0 as shown at +# https://securityonion.net/license; you may not use this file except in compliance with the +# Elastic License 2.0. + +{% from 'allowed_states.map.jinja' import allowed_states %} +{% if sls.split('.')[0] in allowed_states %} +{% from "hydra/map.jinja" import hydraMERGED %} + +hydradir: + file.directory: + - name: /nsm/hydra + - user: 928 + - group: 928 + - mode: 700 + - makedirs: True + +hydradbdir: + file.directory: + - name: /nsm/hydra/db + - user: 928 + - group: 928 + - mode: 700 + - makedirs: True + +hydralogdir: + file.directory: + - name: /opt/so/log/hydra + - user: 928 + - group: 928 + - makedirs: True + +hydraconfig: + file.managed: + - name: /opt/so/conf/hydra/hydra.yaml + - source: salt://hydra/files/hydra.yaml.jinja + - user: 928 + - group: 928 + - mode: 600 + - template: jinja + - defaults: + hydraMERGED: {{ hydraMERGED }} + +{% else %} + +{{sls}}_state_not_allowed: + test.fail_without_changes: + - name: {{sls}}_state_not_allowed + +{% endif %} diff --git a/salt/hydra/defaults.yaml b/salt/hydra/defaults.yaml new file mode 100644 index 000000000..99615cb00 --- /dev/null +++ b/salt/hydra/defaults.yaml @@ -0,0 +1,37 @@ +hydra: + enabled: False + config: + serve: + cookies: + same_site_mode: Lax + + public: + port: 4444 + admin: + port: 4445 + urls: + self: + issuer: https://URL_BASE/connect + public: https://URL_BASE/connect + admin: http://localhost:4445 + login: https://URL_BASE/login + logout: https://URL_BASE/logout + identity_provider: + url: http://127.0.0.1:4434/admin + publicUrl: https://URL_BASE/auth + headers: + Authorization: Bearer some-token + + secrets: + system: [] + + oidc: + subject_identifiers: + supported_types: + - pairwise + - public + pairwise: + salt: "" + + sqa: + opt_out: true \ No newline at end of file diff --git a/salt/hydra/disabled.sls b/salt/hydra/disabled.sls new file mode 100644 index 000000000..c940a5bd6 --- /dev/null +++ b/salt/hydra/disabled.sls @@ -0,0 +1,27 @@ +# Copyright Security Onion Solutions LLC and/or licensed to Security Onion Solutions LLC under one +# or more contributor license agreements. Licensed under the Elastic License 2.0 as shown at +# https://securityonion.net/license; you may not use this file except in compliance with the +# Elastic License 2.0. + +{% from 'allowed_states.map.jinja' import allowed_states %} +{% if sls.split('.')[0] in allowed_states %} + +include: + - hydra.sostatus + +so-hydra: + docker_container.absent: + - force: True + +so-hydra_so-status.disabled: + file.comment: + - name: /opt/so/conf/so-status/so-status.conf + - regex: ^so-hydra$ + +{% else %} + +{{sls}}_state_not_allowed: + test.fail_without_changes: + - name: {{sls}}_state_not_allowed + +{% endif %} diff --git a/salt/hydra/enabled.sls b/salt/hydra/enabled.sls new file mode 100644 index 000000000..3548afb4f --- /dev/null +++ b/salt/hydra/enabled.sls @@ -0,0 +1,105 @@ +# Copyright Security Onion Solutions LLC and/or licensed to Security Onion Solutions LLC under one +# or more contributor license agreements. Licensed under the Elastic License 2.0 as shown at +# https://securityonion.net/license; you may not use this file except in compliance with the +# Elastic License 2.0. +# +# Note: Per the Elastic License 2.0, the second limitation states: +# +# "You may not move, change, disable, or circumvent the license key functionality +# in the software, and you may not remove or obscure any functionality in the +# software that is protected by the license key." + +{% from 'allowed_states.map.jinja' import allowed_states %} +{% if sls.split('.')[0] in allowed_states %} +{% from 'docker/docker.map.jinja' import DOCKER %} +{% from 'vars/globals.map.jinja' import GLOBALS %} +{% if 'api' in salt['pillar.get']('features', []) %} + +include: + - hydra.config + - hydra.sostatus + +so-hydra: + docker_container.running: + - image: {{ GLOBALS.registry_host }}:5000/{{ GLOBALS.image_repo }}/so-hydra:{{ GLOBALS.so_version }} + - hostname: hydra + - name: so-hydra + - networks: + - sobridge: + - ipv4_address: {{ DOCKER.containers['so-hydra'].ip }} + - binds: + - /opt/so/conf/hydra/:/hydra-conf:ro + - /opt/so/log/hydra/:/hydra-log:rw + - /nsm/hydra/db:/hydra-data:rw + {% if DOCKER.containers['so-hydra'].custom_bind_mounts %} + {% for BIND in DOCKER.containers['so-hydra'].custom_bind_mounts %} + - {{ BIND }} + {% endfor %} + {% endif %} + - port_bindings: + {% for BINDING in DOCKER.containers['so-hydra'].port_bindings %} + - {{ BINDING }} + {% endfor %} + {% if DOCKER.containers['so-hydra'].extra_hosts %} + - extra_hosts: + {% for XTRAHOST in DOCKER.containers['so-hydra'].extra_hosts %} + - {{ XTRAHOST }} + {% endfor %} + {% endif %} + {% if DOCKER.containers['so-hydra'].extra_env %} + - environment: + {% for XTRAENV in DOCKER.containers['so-hydra'].extra_env %} + - {{ XTRAENV }} + {% endfor %} + {% endif %} + - restart_policy: unless-stopped + - watch: + - file: hydraschema + - file: hydraconfig + - require: + - file: hydraschema + - file: hydraconfig + - file: hydralogdir + - file: hydradir + +delete_so-hydra_so-status.disabled: + file.uncomment: + - name: /opt/so/conf/so-status/so-status.conf + - regex: ^so-hydra$ + +wait_for_hydra: + http.wait_for_successful_query: + - name: 'http://{{ GLOBALS.manager }}:4444/' + - ssl: True + - verify_ssl: False + - status: + - 200 + - 301 + - 302 + - 404 + - status_type: list + - wait_for: 300 + - request_interval: 10 + - require: + - docker_container: so-hydra + +{% else %} + +{{sls}}_no_license_detected: + test.fail_without_changes: + - name: {{sls}}_no_license_detected + - comment: + - "This is a feature supported only for customers with a valid license. + Contact Security Onion Solutions, LLC via our website at https://securityonionsolutions.com + for more information about purchasing a license to enable this feature." +include: + - hydra.disabled +{% endif %} + +{% else %} + +{{sls}}_state_not_allowed: + test.fail_without_changes: + - name: {{sls}}_state_not_allowed + +{% endif %} diff --git a/salt/hydra/files/hydra.yaml.jinja b/salt/hydra/files/hydra.yaml.jinja new file mode 100644 index 000000000..fe6a33546 --- /dev/null +++ b/salt/hydra/files/hydra.yaml.jinja @@ -0,0 +1 @@ +{{ HYDRAMERGED.config | yaml(false) }} diff --git a/salt/hydra/init.sls b/salt/hydra/init.sls new file mode 100644 index 000000000..eb7792bca --- /dev/null +++ b/salt/hydra/init.sls @@ -0,0 +1,13 @@ +# Copyright Security Onion Solutions LLC and/or licensed to Security Onion Solutions LLC under one +# or more contributor license agreements. Licensed under the Elastic License 2.0 as shown at +# https://securityonion.net/license; you may not use this file except in compliance with the +# Elastic License 2.0. + +{% from 'hydra/map.jinja' import HYDRAMERGED %} + +include: +{% if HYDRAMERGED.enabled %} + - hydra.enabled +{% else %} + - hydra.disabled +{% endif %} diff --git a/salt/hydra/map.jinja b/salt/hydra/map.jinja new file mode 100644 index 000000000..e6cd747a4 --- /dev/null +++ b/salt/hydra/map.jinja @@ -0,0 +1,7 @@ +{# Copyright Security Onion Solutions LLC and/or licensed to Security Onion Solutions LLC under one + or more contributor license agreements. Licensed under the Elastic License 2.0 as shown at + https://securityonion.net/license; you may not use this file except in compliance with the + Elastic License 2.0. #} + +{% from 'vars/globals.map.jinja' import GLOBALS %} +{% import_yaml 'hydra/defaults.yaml' as HYDRADEFAULTS %} diff --git a/salt/hydra/soc_hydra.yaml b/salt/hydra/soc_hydra.yaml new file mode 100644 index 000000000..3f6c30442 --- /dev/null +++ b/salt/hydra/soc_hydra.yaml @@ -0,0 +1,4 @@ +hydra: + enabled: + description: Enables or disables the API authentication system, used for service account authentication. + helpLink: api.html diff --git a/salt/hydra/sostatus.sls b/salt/hydra/sostatus.sls new file mode 100644 index 000000000..8878bed4f --- /dev/null +++ b/salt/hydra/sostatus.sls @@ -0,0 +1,21 @@ +# Copyright Security Onion Solutions LLC and/or licensed to Security Onion Solutions LLC under one +# or more contributor license agreements. Licensed under the Elastic License 2.0 as shown at +# https://securityonion.net/license; you may not use this file except in compliance with the +# Elastic License 2.0. + +{% from 'allowed_states.map.jinja' import allowed_states %} +{% if sls.split('.')[0] in allowed_states %} + +append_so-hydra_so-status.conf: + file.append: + - name: /opt/so/conf/so-status/so-status.conf + - text: so-hydra + - unless: grep -q so-hydra /opt/so/conf/so-status/so-status.conf + +{% else %} + +{{sls}}_state_not_allowed: + test.fail_without_changes: + - name: {{sls}}_state_not_allowed + +{% endif %} diff --git a/salt/logrotate/defaults.yaml b/salt/logrotate/defaults.yaml index 7333c78e9..2f7247ff2 100644 --- a/salt/logrotate/defaults.yaml +++ b/salt/logrotate/defaults.yaml @@ -40,6 +40,16 @@ logrotate: - extension .log - dateext - dateyesterday + /opt/so/log/hydra/*_x_log: + - daily + - rotate 14 + - missingok + - copytruncate + - compress + - create + - extension .log + - dateext + - dateyesterday /opt/so/log/kibana/*_x_log: - daily - rotate 14 diff --git a/salt/logrotate/soc_logrotate.yaml b/salt/logrotate/soc_logrotate.yaml index 62aa935c9..56f879e4f 100644 --- a/salt/logrotate/soc_logrotate.yaml +++ b/salt/logrotate/soc_logrotate.yaml @@ -28,6 +28,13 @@ logrotate: multiline: True global: True forcedType: "[]string" + "/opt/so/log/hydra/*_x_log": + description: List of logrotate options for this file. + title: /opt/so/log/hydra/*.log + advanced: True + multiline: True + global: True + forcedType: "[]string" "/opt/so/log/kibana/*_x_log": description: List of logrotate options for this file. title: /opt/so/log/kibana/*.log diff --git a/salt/manager/tools/sbin/so-minion b/salt/manager/tools/sbin/so-minion index ebbfa8fff..c978803bb 100755 --- a/salt/manager/tools/sbin/so-minion +++ b/salt/manager/tools/sbin/so-minion @@ -368,6 +368,13 @@ function add_kratos_to_minion() { " " >> $PILLARFILE } +function add_hydra_to_minion() { + printf '%s\n'\ + "hydra:"\ + " enabled: True"\ + " " >> $PILLARFILE +} + function add_idstools_to_minion() { printf '%s\n'\ "idstools:"\ @@ -448,6 +455,7 @@ function createEVAL() { add_soc_to_minion add_registry_to_minion add_kratos_to_minion + add_hydra_to_minion add_idstools_to_minion add_elastic_fleet_package_registry_to_minion } @@ -468,6 +476,7 @@ function createSTANDALONE() { add_soc_to_minion add_registry_to_minion add_kratos_to_minion + add_hydra_to_minion add_idstools_to_minion add_elastic_fleet_package_registry_to_minion } @@ -484,6 +493,7 @@ function createMANAGER() { add_soc_to_minion add_registry_to_minion add_kratos_to_minion + add_hydra_to_minion add_idstools_to_minion add_elastic_fleet_package_registry_to_minion } @@ -500,6 +510,7 @@ function createMANAGERSEARCH() { add_soc_to_minion add_registry_to_minion add_kratos_to_minion + add_hydra_to_minion add_idstools_to_minion add_elastic_fleet_package_registry_to_minion } @@ -514,6 +525,7 @@ function createIMPORT() { add_soc_to_minion add_registry_to_minion add_kratos_to_minion + add_hydra_to_minion add_idstools_to_minion add_elastic_fleet_package_registry_to_minion } diff --git a/salt/nginx/etc/nginx.conf b/salt/nginx/etc/nginx.conf index fc18e1fe8..1521cc710 100644 --- a/salt/nginx/etc/nginx.conf +++ b/salt/nginx/etc/nginx.conf @@ -219,6 +219,7 @@ http { proxy_set_header X-Forwarded-Proto $scheme; } +{% if 'api' in salt['pillar.get']('features', []) %} location /connect/token { rewrite /connect/token(.*) /oauth2/token$1 break; limit_req zone=auth_throttle burst={{ NGINXMERGED.config.throttle_login_burst }} nodelay; @@ -247,6 +248,7 @@ http { proxy_set_header Proxy ""; proxy_set_header X-Forwarded-Proto $scheme; } +{%- endif %} location /cyberchef/ { auth_request /auth/sessions/whoami; diff --git a/salt/soc/defaults.yaml b/salt/soc/defaults.yaml index 2d2a26c9a..7a8ee697f 100644 --- a/salt/soc/defaults.yaml +++ b/salt/soc/defaults.yaml @@ -119,6 +119,13 @@ soc: - identity_id - http_request.headers.user-agent - msg + ':kratos:': + - soc_timestamp + - event.dataset + - http_request.headers.x-real-ip + - identity_id + - http_request.headers.user-agent + - msg '::conn': - soc_timestamp - event.dataset diff --git a/salt/top.sls b/salt/top.sls index d876806f2..c4ad5d12f 100644 --- a/salt/top.sls +++ b/salt/top.sls @@ -61,6 +61,7 @@ base: - influxdb - soc - kratos + - hydra - sensoroni - telegraf - firewall @@ -90,6 +91,7 @@ base: - strelka.manager - soc - kratos + - hydra - firewall - manager - sensoroni @@ -122,6 +124,7 @@ base: - influxdb - soc - kratos + - hydra - firewall - sensoroni - telegraf @@ -168,6 +171,7 @@ base: - strelka.manager - soc - kratos + - hydra - firewall - manager - sensoroni @@ -219,6 +223,7 @@ base: - strelka.manager - soc - kratos + - hydra - sensoroni - telegraf - firewall diff --git a/setup/so-functions b/setup/so-functions index 5ebf76c17..5e36851c2 100755 --- a/setup/so-functions +++ b/setup/so-functions @@ -791,6 +791,7 @@ create_manager_pillars() { redis_pillar idstools_pillar kratos_pillar + hydra_pillar soc_pillar idh_pillar influxdb_pillar @@ -1108,6 +1109,7 @@ generate_passwords(){ INFLUXTOKEN=$(head -c 64 /dev/urandom | base64 --wrap=0) SENSORONIKEY=$(get_random_value) KRATOSKEY=$(get_random_value) + HYDRAKEY=$(get_random_value) REDISPASS=$(get_random_value) SOCSRVKEY=$(get_random_value 64) IMPORTPASS=$(get_random_value) @@ -1303,6 +1305,18 @@ kratos_pillar() { "" > "$kratos_pillar_file" } +hydra_pillar() { + title "Create the Hydra pillar file" + touch $adv_hydra_pillar_file + printf '%s\n'\ + "hydra:"\ + " config:"\ + " secrets:"\ + " system:"\ + " - '$HYDRAKEY'"\ + "" > "$hydra_pillar_file" +} + create_global() { title "Creating the global.sls" touch $adv_global_pillar_file @@ -1404,10 +1418,10 @@ make_some_dirs() { mkdir -p $local_salt_dir/salt/firewall/portgroups mkdir -p $local_salt_dir/salt/firewall/ports - for THEDIR in bpf pcap elasticsearch ntp firewall redis backup influxdb strelka sensoroni soc docker zeek suricata nginx telegraf logstash soc manager kratos idstools idh elastalert stig global kafka;do - mkdir -p $local_salt_dir/pillar/$THEDIR - touch $local_salt_dir/pillar/$THEDIR/adv_$THEDIR.sls - touch $local_salt_dir/pillar/$THEDIR/soc_$THEDIR.sls + for THEDIR in bpf pcap elasticsearch ntp firewall redis backup influxdb strelka sensoroni soc docker zeek suricata nginx telegraf logstash soc manager kratos hydra idstools idh elastalert stig global kafka;do + mkdir -p $local_salt_dir/pillar/$THEDIR + touch $local_salt_dir/pillar/$THEDIR/adv_$THEDIR.sls + touch $local_salt_dir/pillar/$THEDIR/soc_$THEDIR.sls done } @@ -1639,6 +1653,7 @@ reinstall_init() { # Backup (and erase) directories in /nsm to prevent app errors backup_dir /nsm/mysql "$date_string" backup_dir /nsm/kratos "$date_string" + backup_dir /nsm/hydra "$date_string" backup_dir /nsm/influxdb "$date_string" # Uninstall local Elastic Agent, if installed diff --git a/setup/so-variables b/setup/so-variables index ecc29b554..fc253df0a 100644 --- a/setup/so-variables +++ b/setup/so-variables @@ -160,6 +160,12 @@ export kratos_pillar_file adv_kratos_pillar_file="$local_salt_dir/pillar/kratos/adv_kratos.sls" export adv_kratos_pillar_file +hydra_pillar_file="$local_salt_dir/pillar/hydra/soc_hydra.sls" +export hydra_pillar_file + +adv_hydra_pillar_file="$local_salt_dir/pillar/hydra/adv_hydra.sls" +export adv_hydra_pillar_file + idstools_pillar_file="$local_salt_dir/pillar/idstools/soc_idstools.sls" export idstools_pillar_file From 1e5bf3aa987b84c4e45728d8c8eaf1f89f52d5b7 Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Wed, 16 Oct 2024 14:21:11 -0400 Subject: [PATCH 077/175] connect upgrade --- salt/manager/tools/sbin/soup | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/salt/manager/tools/sbin/soup b/salt/manager/tools/sbin/soup index c592dffe4..2cd108d00 100755 --- a/salt/manager/tools/sbin/soup +++ b/salt/manager/tools/sbin/soup @@ -404,6 +404,7 @@ preupgrade_changes() { [[ "$INSTALLEDVERSION" == 2.4.80 ]] && up_to_2.4.90 [[ "$INSTALLEDVERSION" == 2.4.90 ]] && up_to_2.4.100 [[ "$INSTALLEDVERSION" == 2.4.100 ]] && up_to_2.4.110 + [[ "$INSTALLEDVERSION" == 2.4.110 ]] && up_to_2.4.120 true } @@ -425,6 +426,7 @@ postupgrade_changes() { [[ "$POSTVERSION" == 2.4.80 ]] && post_to_2.4.90 [[ "$POSTVERSION" == 2.4.90 ]] && post_to_2.4.100 [[ "$POSTVERSION" == 2.4.100 ]] && post_to_2.4.110 + [[ "$POSTVERSION" == 2.4.110 ]] && post_to_2.4.120 true } @@ -517,6 +519,11 @@ post_to_2.4.110() { POSTVERSION=2.4.110 } +post_to_2.4.120() { + echo "Nothing to apply" + POSTVERSION=2.4.120 +} + repo_sync() { echo "Sync the local repo." su socore -c '/usr/sbin/so-repo-sync' || fail "Unable to complete so-repo-sync." @@ -705,6 +712,29 @@ up_to_2.4.110() { INSTALLEDVERSION=2.4.110 } +up_to_2.4.120() { + echo "Nothing to do for 2.4.120" + + add_hydra_pillars + + INSTALLEDVERSION=2.4.120 +} + +add_hydra_pillars() { + mkdir -p /opt/so/saltstack/local/pillar/hydra + touch /opt/so/saltstack/local/pillar/hydra/soc_hydra.sls + chmod 660 /opt/so/saltstack/local/pillar/hydra/soc_hydra.sls + touch /opt/so/saltstack/local/pillar/hydra/adv_hydra.sls + HYDRAKEY=$(get_random_value) + printf '%s\n'\ + "hydra:"\ + " config:"\ + " secrets:"\ + " system:"\ + " - '$HYDRAKEY'"\ + "" > /opt/so/saltstack/local/pillar/hydra/soc_hydra.sls +} + add_detection_test_pillars() { if [[ -n "$SOUP_INTERNAL_TESTING" ]]; then echo "Adding detection pillar values for automated testing" From d8546bf74786f35c014f989c2c30e4bb34853f73 Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Wed, 16 Oct 2024 14:59:15 -0400 Subject: [PATCH 078/175] connect upgrade --- salt/hydra/map.jinja | 2 ++ 1 file changed, 2 insertions(+) diff --git a/salt/hydra/map.jinja b/salt/hydra/map.jinja index e6cd747a4..fdc5d2e9d 100644 --- a/salt/hydra/map.jinja +++ b/salt/hydra/map.jinja @@ -5,3 +5,5 @@ {% from 'vars/globals.map.jinja' import GLOBALS %} {% import_yaml 'hydra/defaults.yaml' as HYDRADEFAULTS %} + +{% set HYDRAMERGED = salt['pillar.get']('hydra', default=HYDRADEFAULTS.hydra, merge=true) %} \ No newline at end of file From dcdfaf66f4a0a29afabc24b8158d285581d50adf Mon Sep 17 00:00:00 2001 From: defensivedepth Date: Wed, 16 Oct 2024 15:20:52 -0400 Subject: [PATCH 079/175] Add process and file creation mappings --- salt/soc/files/soc/sigma_so_pipeline.yaml | 66 +++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/salt/soc/files/soc/sigma_so_pipeline.yaml b/salt/soc/files/soc/sigma_so_pipeline.yaml index 8314361f5..121bc06a6 100644 --- a/salt/soc/files/soc/sigma_so_pipeline.yaml +++ b/salt/soc/files/soc/sigma_so_pipeline.yaml @@ -106,3 +106,69 @@ transformations: - type: include_fields fields: - event.code + # Maps Windows + process_creation rules to endpoint process creation logs + - id: endpoint_process_create_windows_add-fields + type: add_condition + conditions: + event.category: 'process' + event.type: 'start' + host.os.type: 'windows' + rule_conditions: + - type: logsource + category: process_creation + product: windows + # Maps Linux + file_event rules to endpoint file creation logs + - id: endpoint_process_create_linux_add-fields + type: add_condition + conditions: + event.category: 'process' + event.type: 'start' + host.os.type: 'linux' + rule_conditions: + - type: logsource + category: process_creation + product: linux + # Maps macOS + file_event rules to endpoint file creation logs + - id: endpoint_process_create_macos_add-fields + type: add_condition + conditions: + event.category: 'process' + event.type: 'start' + host.os.type: 'macos' + rule_conditions: + - type: logsource + category: process_creation + product: macos + # Maps Windows + file_event rules to endpoint file creation logs + - id: endpoint_file_create_windows_add-fields + type: add_condition + conditions: + event.category: 'file' + event.type: 'creation' + host.os.type: 'windows' + rule_conditions: + - type: logsource + category: file_event + product: windows + # Maps Linux + file_event rules to endpoint file creation logs + - id: endpoint_file_create_linux_add-fields + type: add_condition + conditions: + event.category: 'file' + event.type: 'creation' + host.os.type: 'linux' + rule_conditions: + - type: logsource + category: file_event + product: linux + # Maps macOS + file_event rules to endpoint file creation logs + - id: endpoint_file_create_macos_add-fields + type: add_condition + conditions: + event.category: 'file' + event.type: 'creation' + host.os.type: 'macos' + rule_conditions: + - type: logsource + category: file_event + product: macos \ No newline at end of file From 322199358deaa8840fa9a02f4f183bc82253a77a Mon Sep 17 00:00:00 2001 From: reyesj2 <94730068+reyesj2@users.noreply.github.com> Date: Wed, 16 Oct 2024 16:45:46 -0400 Subject: [PATCH 080/175] add support for trendmicro integration Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com> --- salt/elasticfleet/defaults.yaml | 2 + salt/elasticsearch/defaults.yaml | 176 ++++++++++++++++++ salt/elasticsearch/soc_elasticsearch.yaml | 4 + ...s-trend_micro_vision_one.alert@custom.json | 36 ++++ ...s-trend_micro_vision_one.audit@custom.json | 36 ++++ ...end_micro_vision_one.detection@custom.json | 36 ++++ .../logs-trendmicro.deep_security@custom.json | 36 ++++ 7 files changed, 326 insertions(+) create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-trend_micro_vision_one.alert@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-trend_micro_vision_one.audit@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-trend_micro_vision_one.detection@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-trendmicro.deep_security@custom.json diff --git a/salt/elasticfleet/defaults.yaml b/salt/elasticfleet/defaults.yaml index c3ca0f828..e586100da 100644 --- a/salt/elasticfleet/defaults.yaml +++ b/salt/elasticfleet/defaults.yaml @@ -110,6 +110,8 @@ elasticfleet: - ti_otx - ti_recordedfuture - ti_threatq + - trendmicro + - trend_micro_vision_one - udp - vsphere - windows diff --git a/salt/elasticsearch/defaults.yaml b/salt/elasticsearch/defaults.yaml index 06f5392d8..f0178728e 100644 --- a/salt/elasticsearch/defaults.yaml +++ b/salt/elasticsearch/defaults.yaml @@ -10298,6 +10298,182 @@ elasticsearch: set_priority: priority: 50 min_age: 30d + so-logs-trend_micro_vision_one_x_alert: + index_sorting: False + index_template: + index_patterns: + - "logs-trend_micro_vision_one.alert-*" + template: + settings: + index: + number_of_replicas: 0 + composed_of: + - "logs-trend_micro_vision_one.alert@package" + - "logs-trend_micro_vision_one.alert@custom" + - "so-fleet_globals-1" + - "so-fleet_agent_id_verification-1" + ignore_missing_component_templates: + - "logs-trend_micro_vision_one.alert@custom" + priority: 501 + data_stream: + hidden: false + allow_custom_routing: false + policy: + phases: + cold: + actions: + set_priority: + priority: 0 + min_age: 60d + delete: + actions: + delete: {} + min_age: 365d + hot: + actions: + rollover: + max_age: 30d + max_primary_shard_size: 50gb + set_priority: + priority: 100 + min_age: 0ms + warm: + actions: + set_priority: + priority: 50 + min_age: 30d + so-logs-trend_micro_vision_one_x_audit: + index_sorting: False + index_template: + index_patterns: + - "logs-trend_micro_vision_one.audit-*" + template: + settings: + index: + number_of_replicas: 0 + ignore_missing_component_templates: + - "logs-trend_micro_vision_one.audit@custom" + composed_of: + - "logs-trend_micro_vision_one.audit@package" + - "logs-trend_micro_vision_one.audit@custom" + - "so-fleet_globals-1" + - "so-fleet_agent_id_verification-1" + priority: 501 + data_stream: + hidden: false + allow_custom_routing: false + policy: + phases: + cold: + actions: + set_priority: + priority: 0 + min_age: 60d + delete: + actions: + delete: {} + min_age: 365d + hot: + actions: + rollover: + max_age: 30d + max_primary_shard_size: 50gb + set_priority: + priority: 100 + min_age: 0ms + warm: + actions: + set_priority: + priority: 50 + min_age: 30d + so-logs-trend_micro_vision_one_x_detection: + index_sorting: False + index_template: + index_patterns: + - "logs-trend_micro_vision_one.detection-*" + template: + settings: + index: + number_of_replicas: 0 + ignore_missing_component_templates: + - "logs-trend_micro_vision_one.detection@custom" + composed_of: + - "logs-trend_micro_vision_one.detection@package" + - "logs-trend_micro_vision_one.detection@custom" + - "so-fleet_globals-1" + - "so-fleet_agent_id_verification-1" + priority: 501 + data_stream: + hidden: false + allow_custom_routing: false + policy: + phases: + cold: + actions: + set_priority: + priority: 0 + min_age: 60d + delete: + actions: + delete: {} + min_age: 365d + hot: + actions: + rollover: + max_age: 30d + max_primary_shard_size: 50gb + set_priority: + priority: 100 + min_age: 0ms + warm: + actions: + set_priority: + priority: 50 + min_age: 30d + so-logs-trendmicro_x_deep_security: + index_sorting: False + index_template: + index_patterns: + - "logs-trendmicro.deep_security-*" + template: + settings: + index: + number_of_replicas: 0 + ignore_missing_component_templates: + - "logs-trendmicro.deep_security@custom" + composed_of: + - "logs-trendmicro.deep_security@package" + - "logs-trendmicro.deep_security@custom" + - "so-fleet_globals-1" + - "so-fleet_agent_id_verification-1" + priority: 501 + data_stream: + hidden: false + allow_custom_routing: false + policy: + phases: + cold: + actions: + set_priority: + priority: 0 + min_age: 60d + delete: + actions: + delete: {} + min_age: 365d + hot: + actions: + rollover: + max_age: 30d + max_primary_shard_size: 50gb + set_priority: + priority: 100 + min_age: 0ms + warm: + actions: + set_priority: + priority: 50 + min_age: 30d so-logs-vsphere_x_log: index_sorting: false index_template: diff --git a/salt/elasticsearch/soc_elasticsearch.yaml b/salt/elasticsearch/soc_elasticsearch.yaml index 31a8a7f6f..266372708 100644 --- a/salt/elasticsearch/soc_elasticsearch.yaml +++ b/salt/elasticsearch/soc_elasticsearch.yaml @@ -494,6 +494,10 @@ elasticsearch: so-logs-ti_recordedfuture_x_latest_ioc-template: *indexSettings so-logs-ti_recordedfuture_x_threat: *indexSettings so-logs-ti_threatq_x_threat: *indexSettings + so-logs-trend_micro_vision_one_x_alert: *indexSettings + so-logs-trend_micro_vision_one_x_audit: *indexSettings + so-logs-trend_micro_vision_one_x_detection: *indexSettings + so-logs-trendmicro_x_deep_security: *indexSettings so-logs-zscaler_zia_x_alerts: *indexSettings so-logs-zscaler_zia_x_dns: *indexSettings so-logs-zscaler_zia_x_firewall: *indexSettings diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-trend_micro_vision_one.alert@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-trend_micro_vision_one.alert@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-trend_micro_vision_one.alert@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-trend_micro_vision_one.audit@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-trend_micro_vision_one.audit@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-trend_micro_vision_one.audit@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-trend_micro_vision_one.detection@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-trend_micro_vision_one.detection@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-trend_micro_vision_one.detection@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-trendmicro.deep_security@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-trendmicro.deep_security@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-trendmicro.deep_security@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} From 73ce5264676705802a4e1db90bd42695020c4a2e Mon Sep 17 00:00:00 2001 From: m0duspwnens Date: Wed, 16 Oct 2024 17:06:03 -0400 Subject: [PATCH 081/175] allow users to lock pkgs from upgrade --- pillar/top.sls | 2 ++ salt/versionlock/defaults.yaml | 3 +++ salt/versionlock/init.sls | 13 +++++++++++ salt/versionlock/map.jinja | 32 +++++++++++++++++++++++++++ salt/versionlock/soc_versionlock.yaml | 10 +++++++++ 5 files changed, 60 insertions(+) create mode 100644 salt/versionlock/defaults.yaml create mode 100644 salt/versionlock/init.sls create mode 100644 salt/versionlock/map.jinja create mode 100644 salt/versionlock/soc_versionlock.yaml diff --git a/pillar/top.sls b/pillar/top.sls index 131b39a99..9ae7e1e44 100644 --- a/pillar/top.sls +++ b/pillar/top.sls @@ -16,6 +16,8 @@ base: - sensoroni.adv_sensoroni - telegraf.soc_telegraf - telegraf.adv_telegraf + - versionlock.soc_versionlock + - versionlock.adv_versionlock '* and not *_desktop': - firewall.soc_firewall diff --git a/salt/versionlock/defaults.yaml b/salt/versionlock/defaults.yaml new file mode 100644 index 000000000..b7bce6c48 --- /dev/null +++ b/salt/versionlock/defaults.yaml @@ -0,0 +1,3 @@ +versionlock: + kernel: False + hold: [] diff --git a/salt/versionlock/init.sls b/salt/versionlock/init.sls new file mode 100644 index 000000000..ac27d69d7 --- /dev/null +++ b/salt/versionlock/init.sls @@ -0,0 +1,13 @@ +{% from 'versionlock/map.jinja' import VERSIONLOCKMERGED %} + +{% for pkg in VERSIONLOCKMERGED.hold %} +{{pkg}}_held: + pkg.held: + - name: {{pkg}} +{% endfor %} + +{% for pkg in VERSIONLOCKMERGED.UNHOLD %} +{{pkg}}_unheld: + pkg.unheld: + - name: {{pkg}} +{% endfor %} diff --git a/salt/versionlock/map.jinja b/salt/versionlock/map.jinja new file mode 100644 index 000000000..79ef1c45c --- /dev/null +++ b/salt/versionlock/map.jinja @@ -0,0 +1,32 @@ +{% import_yaml 'versionlock/defaults.yaml' as VERSIONLOCKDEFAULTS %} +{% set VERSIONLOCKMERGED = salt['pillar.get']('versionlock', VERSIONLOCKDEFAULTS.versionlock, merge=True) %} +{% set HELD = salt['pkg.list_holds']() %} + +{% set PACKAGES_HELD_IN_OTHER_STATES = [ + 'salt', + 'salt-master', + 'salt-minion', + 'containerd.io', + 'docker-ce', + 'docker-ce-cli', + 'docker-ce-rootless-extras' +] %} + +{% if VERSIONLOCKMERGED.kernel %} + {% do VERSIONLOCKMERGED['hold'].append('kernel') %} +{% endif %} + +{# remove packages held in other states from hold list #} +{% do VERSIONLOCKMERGED.update({'hold': VERSIONLOCKMERGED['hold'] | unique | reject('in', PACKAGES_HELD_IN_OTHER_STATES) | list }) %} + +{% do VERSIONLOCKMERGED.update({'UNHOLD': []}) %} + +{# if a package is currently held but not set to be held, unhold it #} +{% for item in HELD %} + {% set base_name = item.rsplit('-', 2)[0] %} + {% if base_name not in VERSIONLOCKMERGED['hold'] + and base_name not in PACKAGES_HELD_IN_OTHER_STATES + and base_name not in VERSIONLOCKMERGED['UNHOLD'] %} + {% do VERSIONLOCKMERGED['UNHOLD'].append(base_name) %} + {% endif %} +{% endfor %} diff --git a/salt/versionlock/soc_versionlock.yaml b/salt/versionlock/soc_versionlock.yaml new file mode 100644 index 000000000..b5f25c3a7 --- /dev/null +++ b/salt/versionlock/soc_versionlock.yaml @@ -0,0 +1,10 @@ +versionlock: + kernel: + description: Lock the kernel to prevent upgrade. + global: True + forcedType: bool + hold: + description: List of packages to hold + global: True + forcedType: "[]string" + multiline: True From f713dbacf87912bc26452742357489b297c8ed9a Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Wed, 16 Oct 2024 17:53:57 -0400 Subject: [PATCH 082/175] connect --- salt/soc/defaults.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/salt/soc/defaults.yaml b/salt/soc/defaults.yaml index 3fe1bf123..52ca5fe8c 100644 --- a/salt/soc/defaults.yaml +++ b/salt/soc/defaults.yaml @@ -119,7 +119,7 @@ soc: - identity_id - http_request.headers.user-agent - msg - ':kratos:': + ':hydra:': - soc_timestamp - event.dataset - http_request.headers.x-real-ip From 5fb660bc9ad082cf478d1b6fed842a803294616b Mon Sep 17 00:00:00 2001 From: m0duspwnens Date: Thu, 17 Oct 2024 09:29:03 -0400 Subject: [PATCH 083/175] remove kernel bool option, just use list --- salt/logstash/map.jinja | 4 ++-- salt/top.sls | 1 + salt/versionlock/defaults.yaml | 1 - salt/versionlock/init.sls | 5 +++++ salt/versionlock/map.jinja | 15 ++++++++------- salt/versionlock/soc_versionlock.yaml | 7 ++----- setup/so-functions | 2 +- 7 files changed, 19 insertions(+), 16 deletions(-) diff --git a/salt/logstash/map.jinja b/salt/logstash/map.jinja index 8fc3291e5..da2bc341a 100644 --- a/salt/logstash/map.jinja +++ b/salt/logstash/map.jinja @@ -1,5 +1,5 @@ {# Copyright Security Onion Solutions LLC and/or licensed to Security Onion Solutions LLC under one - or more contributor license agreements. Licensed under the Elastic License 2.0 as shown at + or more contributor license agreements. Licensed under the Elastic License 2.0 as shown at https://securityonion.net/license; you may not use this file except in compliance with the Elastic License 2.0. #} @@ -42,4 +42,4 @@ {% do LOGSTASH_MERGED.update({'enabled': False}) %} {% endif %} {% endif %} -{% endif %} \ No newline at end of file +{% endif %} diff --git a/salt/top.sls b/salt/top.sls index d876806f2..cffd1ebc8 100644 --- a/salt/top.sls +++ b/salt/top.sls @@ -12,6 +12,7 @@ base: '*': - cron.running - repo.client + - versionlock - ntp - schedule - logrotate diff --git a/salt/versionlock/defaults.yaml b/salt/versionlock/defaults.yaml index b7bce6c48..cacd1d7bb 100644 --- a/salt/versionlock/defaults.yaml +++ b/salt/versionlock/defaults.yaml @@ -1,3 +1,2 @@ versionlock: - kernel: False hold: [] diff --git a/salt/versionlock/init.sls b/salt/versionlock/init.sls index ac27d69d7..278809aee 100644 --- a/salt/versionlock/init.sls +++ b/salt/versionlock/init.sls @@ -1,3 +1,8 @@ +# Copyright Security Onion Solutions LLC and/or licensed to Security Onion Solutions LLC under one +# or more contributor license agreements. Licensed under the Elastic License 2.0 as shown at +# https://securityonion.net/license; you may not use this file except in compliance with the +# Elastic License 2.0. + {% from 'versionlock/map.jinja' import VERSIONLOCKMERGED %} {% for pkg in VERSIONLOCKMERGED.hold %} diff --git a/salt/versionlock/map.jinja b/salt/versionlock/map.jinja index 79ef1c45c..e078ff22d 100644 --- a/salt/versionlock/map.jinja +++ b/salt/versionlock/map.jinja @@ -1,7 +1,13 @@ +{# Copyright Security Onion Solutions LLC and/or licensed to Security Onion Solutions LLC under one + or more contributor license agreements. Licensed under the Elastic License 2.0 as shown at + https://securityonion.net/license; you may not use this file except in compliance with the + Elastic License 2.0. #} + {% import_yaml 'versionlock/defaults.yaml' as VERSIONLOCKDEFAULTS %} {% set VERSIONLOCKMERGED = salt['pillar.get']('versionlock', VERSIONLOCKDEFAULTS.versionlock, merge=True) %} {% set HELD = salt['pkg.list_holds']() %} +{# these are packages held / versionlock in other states #} {% set PACKAGES_HELD_IN_OTHER_STATES = [ 'salt', 'salt-master', @@ -12,21 +18,16 @@ 'docker-ce-rootless-extras' ] %} -{% if VERSIONLOCKMERGED.kernel %} - {% do VERSIONLOCKMERGED['hold'].append('kernel') %} -{% endif %} - {# remove packages held in other states from hold list #} {% do VERSIONLOCKMERGED.update({'hold': VERSIONLOCKMERGED['hold'] | unique | reject('in', PACKAGES_HELD_IN_OTHER_STATES) | list }) %} +{# initiate VERSIONLOCKMERGED.UNHOLD #} {% do VERSIONLOCKMERGED.update({'UNHOLD': []}) %} {# if a package is currently held but not set to be held, unhold it #} {% for item in HELD %} {% set base_name = item.rsplit('-', 2)[0] %} - {% if base_name not in VERSIONLOCKMERGED['hold'] - and base_name not in PACKAGES_HELD_IN_OTHER_STATES - and base_name not in VERSIONLOCKMERGED['UNHOLD'] %} + {% if base_name not in VERSIONLOCKMERGED['hold'] and base_name not in PACKAGES_HELD_IN_OTHER_STATES and base_name not in VERSIONLOCKMERGED['UNHOLD'] %} {% do VERSIONLOCKMERGED['UNHOLD'].append(base_name) %} {% endif %} {% endfor %} diff --git a/salt/versionlock/soc_versionlock.yaml b/salt/versionlock/soc_versionlock.yaml index b5f25c3a7..24b8676a9 100644 --- a/salt/versionlock/soc_versionlock.yaml +++ b/salt/versionlock/soc_versionlock.yaml @@ -1,10 +1,7 @@ versionlock: - kernel: - description: Lock the kernel to prevent upgrade. - global: True - forcedType: bool hold: - description: List of packages to hold + description: List of packages to hold. To reduce the frequency of required reboots, add 'kernel' to this list. global: True forcedType: "[]string" multiline: True + helpLink: versionlock.html diff --git a/setup/so-functions b/setup/so-functions index 5ebf76c17..8e83f822d 100755 --- a/setup/so-functions +++ b/setup/so-functions @@ -1404,7 +1404,7 @@ make_some_dirs() { mkdir -p $local_salt_dir/salt/firewall/portgroups mkdir -p $local_salt_dir/salt/firewall/ports - for THEDIR in bpf pcap elasticsearch ntp firewall redis backup influxdb strelka sensoroni soc docker zeek suricata nginx telegraf logstash soc manager kratos idstools idh elastalert stig global kafka;do + for THEDIR in bpf pcap elasticsearch ntp firewall redis backup influxdb strelka sensoroni soc docker zeek suricata nginx telegraf logstash soc manager kratos idstools idh elastalert stig global kafka versionlock; do mkdir -p $local_salt_dir/pillar/$THEDIR touch $local_salt_dir/pillar/$THEDIR/adv_$THEDIR.sls touch $local_salt_dir/pillar/$THEDIR/soc_$THEDIR.sls From 76ff0c56cd2570fd97194990fa7d5d02d041100b Mon Sep 17 00:00:00 2001 From: m0duspwnens Date: Thu, 17 Oct 2024 10:06:40 -0400 Subject: [PATCH 084/175] create versionlock pillar dir/files during soup to 120 --- salt/manager/tools/sbin/soup | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/salt/manager/tools/sbin/soup b/salt/manager/tools/sbin/soup index c592dffe4..3569029ac 100755 --- a/salt/manager/tools/sbin/soup +++ b/salt/manager/tools/sbin/soup @@ -404,6 +404,7 @@ preupgrade_changes() { [[ "$INSTALLEDVERSION" == 2.4.80 ]] && up_to_2.4.90 [[ "$INSTALLEDVERSION" == 2.4.90 ]] && up_to_2.4.100 [[ "$INSTALLEDVERSION" == 2.4.100 ]] && up_to_2.4.110 + [[ "$INSTALLEDVERSION" == 2.4.110 ]] && up_to_2.4.120 true } @@ -425,6 +426,7 @@ postupgrade_changes() { [[ "$POSTVERSION" == 2.4.80 ]] && post_to_2.4.90 [[ "$POSTVERSION" == 2.4.90 ]] && post_to_2.4.100 [[ "$POSTVERSION" == 2.4.100 ]] && post_to_2.4.110 + [[ "$POSTVERSION" == 2.4.110 ]] && post_to_2.4.120 true } @@ -517,6 +519,11 @@ post_to_2.4.110() { POSTVERSION=2.4.110 } +post_to_2.4.120() { + echo "Nothing to apply" + POSTVERSION=2.4.120 +} + repo_sync() { echo "Sync the local repo." su socore -c '/usr/sbin/so-repo-sync' || fail "Unable to complete so-repo-sync." @@ -694,17 +701,27 @@ up_to_2.4.90() { INSTALLEDVERSION=2.4.90 } + up_to_2.4.100() { # Elastic Update for this release, so download Elastic Agent files determine_elastic_agent_upgrade INSTALLEDVERSION=2.4.100 } + up_to_2.4.110() { echo "Nothing to do for 2.4.110" INSTALLEDVERSION=2.4.110 } +up_to_2.4.120() { + # this is needed for the new versionlock state + mkdir /opt/so/saltstack/local/pillar/versionlock + touch /opt/so/saltstack/local/pillar/versionlock/adv_versionlock.sls /opt/so/saltstack/local/pillar/versionlock/soc_versionlock.sls + + INSTALLEDVERSION=2.4.120 +} + add_detection_test_pillars() { if [[ -n "$SOUP_INTERNAL_TESTING" ]]; then echo "Adding detection pillar values for automated testing" From 435b9b14e3e72127bcdce56445c0c2b737aa1003 Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Thu, 17 Oct 2024 10:49:39 -0400 Subject: [PATCH 085/175] connect wip --- salt/hydra/soc_hydra.yaml | 2 +- salt/manager/tools/sbin/so-minion | 12 ------------ 2 files changed, 1 insertion(+), 13 deletions(-) diff --git a/salt/hydra/soc_hydra.yaml b/salt/hydra/soc_hydra.yaml index 3f6c30442..1b6523c22 100644 --- a/salt/hydra/soc_hydra.yaml +++ b/salt/hydra/soc_hydra.yaml @@ -1,4 +1,4 @@ hydra: enabled: - description: Enables or disables the API authentication system, used for service account authentication. + description: Enables or disables the API authentication system, used for service account authentication. Enabling this feature requires a valid Security Onion license key. Defaults to False. helpLink: api.html diff --git a/salt/manager/tools/sbin/so-minion b/salt/manager/tools/sbin/so-minion index c978803bb..ebbfa8fff 100755 --- a/salt/manager/tools/sbin/so-minion +++ b/salt/manager/tools/sbin/so-minion @@ -368,13 +368,6 @@ function add_kratos_to_minion() { " " >> $PILLARFILE } -function add_hydra_to_minion() { - printf '%s\n'\ - "hydra:"\ - " enabled: True"\ - " " >> $PILLARFILE -} - function add_idstools_to_minion() { printf '%s\n'\ "idstools:"\ @@ -455,7 +448,6 @@ function createEVAL() { add_soc_to_minion add_registry_to_minion add_kratos_to_minion - add_hydra_to_minion add_idstools_to_minion add_elastic_fleet_package_registry_to_minion } @@ -476,7 +468,6 @@ function createSTANDALONE() { add_soc_to_minion add_registry_to_minion add_kratos_to_minion - add_hydra_to_minion add_idstools_to_minion add_elastic_fleet_package_registry_to_minion } @@ -493,7 +484,6 @@ function createMANAGER() { add_soc_to_minion add_registry_to_minion add_kratos_to_minion - add_hydra_to_minion add_idstools_to_minion add_elastic_fleet_package_registry_to_minion } @@ -510,7 +500,6 @@ function createMANAGERSEARCH() { add_soc_to_minion add_registry_to_minion add_kratos_to_minion - add_hydra_to_minion add_idstools_to_minion add_elastic_fleet_package_registry_to_minion } @@ -525,7 +514,6 @@ function createIMPORT() { add_soc_to_minion add_registry_to_minion add_kratos_to_minion - add_hydra_to_minion add_idstools_to_minion add_elastic_fleet_package_registry_to_minion } From 25fe83cd4053f79585beb8feda2924ebf26a3405 Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Thu, 17 Oct 2024 11:22:10 -0400 Subject: [PATCH 086/175] connect wip --- salt/hydra/config.sls | 5 +++-- salt/hydra/enabled.sls | 2 -- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/salt/hydra/config.sls b/salt/hydra/config.sls index 6f914aa5f..f74726cc1 100644 --- a/salt/hydra/config.sls +++ b/salt/hydra/config.sls @@ -5,7 +5,7 @@ {% from 'allowed_states.map.jinja' import allowed_states %} {% if sls.split('.')[0] in allowed_states %} -{% from "hydra/map.jinja" import hydraMERGED %} +{% from "hydra/map.jinja" import HYDRAMERGED %} hydradir: file.directory: @@ -38,8 +38,9 @@ hydraconfig: - group: 928 - mode: 600 - template: jinja + - makedirs: True - defaults: - hydraMERGED: {{ hydraMERGED }} + HYDRAMERGED: {{ HYDRAMERGED }} {% else %} diff --git a/salt/hydra/enabled.sls b/salt/hydra/enabled.sls index 3548afb4f..e0f03e184 100644 --- a/salt/hydra/enabled.sls +++ b/salt/hydra/enabled.sls @@ -54,10 +54,8 @@ so-hydra: {% endif %} - restart_policy: unless-stopped - watch: - - file: hydraschema - file: hydraconfig - require: - - file: hydraschema - file: hydraconfig - file: hydralogdir - file: hydradir From 1537b69457b1ad8c2909ff16ae06c9d806ad28c0 Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Thu, 17 Oct 2024 11:25:40 -0400 Subject: [PATCH 087/175] connect wip --- salt/docker/defaults.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/salt/docker/defaults.yaml b/salt/docker/defaults.yaml index d6cb0de9c..9a33611c2 100644 --- a/salt/docker/defaults.yaml +++ b/salt/docker/defaults.yaml @@ -52,7 +52,7 @@ docker: extra_hosts: [] extra_env: [] 'so-hydra': - final_octet: 28 + final_octet: 30 port_bindings: - 0.0.0.0:4444:4444 - 0.0.0.0:4454:4445 From 4611ef371308415ba95f0646f8e80e429a2bd9a0 Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Thu, 17 Oct 2024 11:39:36 -0400 Subject: [PATCH 088/175] connect wip --- salt/hydra/defaults.yaml | 13 ++++--------- salt/hydra/map.jinja | 7 +++++++ 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/salt/hydra/defaults.yaml b/salt/hydra/defaults.yaml index 99615cb00..a9a26c151 100644 --- a/salt/hydra/defaults.yaml +++ b/salt/hydra/defaults.yaml @@ -2,13 +2,10 @@ hydra: enabled: False config: serve: - cookies: - same_site_mode: Lax - - public: - port: 4444 - admin: - port: 4445 + public: + port: 4444 + admin: + port: 4445 urls: self: issuer: https://URL_BASE/connect @@ -19,8 +16,6 @@ hydra: identity_provider: url: http://127.0.0.1:4434/admin publicUrl: https://URL_BASE/auth - headers: - Authorization: Bearer some-token secrets: system: [] diff --git a/salt/hydra/map.jinja b/salt/hydra/map.jinja index fdc5d2e9d..ca801a700 100644 --- a/salt/hydra/map.jinja +++ b/salt/hydra/map.jinja @@ -6,4 +6,11 @@ {% from 'vars/globals.map.jinja' import GLOBALS %} {% import_yaml 'hydra/defaults.yaml' as HYDRADEFAULTS %} +{% do HYDRADEFAULTS.hydra.config.urls.self.update({'issuer': HYDRADEFAULTS.hydra.config.urls.self.issuer | replace("URL_BASE", GLOBALS.url_base)}) %} +{% do HYDRADEFAULTS.hydra.config.urls.self.update({'public': HYDRADEFAULTS.hydra.config.urls.self.public | replace("URL_BASE", GLOBALS.url_base)}) %} +{% do HYDRADEFAULTS.hydra.config.urls.self.update({'admin': HYDRADEFAULTS.hydra.config.urls.self.admin | replace("URL_BASE", GLOBALS.url_base)}) %} +{% do HYDRADEFAULTS.hydra.config.urls.update({'login': HYDRADEFAULTS.hydra.config.urls.login | replace("URL_BASE", GLOBALS.url_base)}) %} +{% do HYDRADEFAULTS.hydra.config.urls.update({'logout': HYDRADEFAULTS.hydra.config.urls.logout | replace("URL_BASE", GLOBALS.url_base)}) %} +{% do HYDRADEFAULTS.hydra.config.urls.identity_provider.update({'publicUrl': HYDRADEFAULTS.hydra.config.urls.identity_provider.publicUrl | replace("URL_BASE", GLOBALS.url_base)}) %} + {% set HYDRAMERGED = salt['pillar.get']('hydra', default=HYDRADEFAULTS.hydra, merge=true) %} \ No newline at end of file From 39230159aecccc4613dea7695758dcfd93e98694 Mon Sep 17 00:00:00 2001 From: m0duspwnens Date: Thu, 17 Oct 2024 12:10:49 -0400 Subject: [PATCH 089/175] update description --- salt/versionlock/soc_versionlock.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/salt/versionlock/soc_versionlock.yaml b/salt/versionlock/soc_versionlock.yaml index 24b8676a9..f1e864d7d 100644 --- a/salt/versionlock/soc_versionlock.yaml +++ b/salt/versionlock/soc_versionlock.yaml @@ -1,6 +1,6 @@ versionlock: hold: - description: List of packages to hold. To reduce the frequency of required reboots, add 'kernel' to this list. + description: List of packages to prevent from upgrading. To reduce the frequency of required reboots, add 'kernel' to this list. global: True forcedType: "[]string" multiline: True From 8b11019712cf07e032eebccb1d7355d2146ac0c1 Mon Sep 17 00:00:00 2001 From: reyesj2 <94730068+reyesj2@users.noreply.github.com> Date: Fri, 18 Oct 2024 11:56:47 -0400 Subject: [PATCH 090/175] Add support for cybereason integration Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com> --- salt/elasticfleet/defaults.yaml | 1 + salt/elasticsearch/defaults.yaml | 264 ++++++++++++++++++ salt/elasticsearch/soc_elasticsearch.yaml | 6 + .../logs-cybereason.logon_session@custom.json | 36 +++ ...gs-cybereason.malop_connection@custom.json | 36 +++ .../logs-cybereason.malop_process@custom.json | 36 +++ .../logs-cybereason.malware@custom.json | 36 +++ .../logs-cybereason.poll_malop@custom.json | 36 +++ ...-cybereason.suspicions_process@custom.json | 36 +++ 9 files changed, 487 insertions(+) create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-cybereason.logon_session@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-cybereason.malop_connection@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-cybereason.malop_process@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-cybereason.malware@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-cybereason.poll_malop@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-cybereason.suspicions_process@custom.json diff --git a/salt/elasticfleet/defaults.yaml b/salt/elasticfleet/defaults.yaml index e586100da..6e4ce206b 100644 --- a/salt/elasticfleet/defaults.yaml +++ b/salt/elasticfleet/defaults.yaml @@ -53,6 +53,7 @@ elasticfleet: - citrix_waf - cloudflare - crowdstrike + - cybereason - darktrace - elastic_agent - elasticsearch diff --git a/salt/elasticsearch/defaults.yaml b/salt/elasticsearch/defaults.yaml index f0178728e..0a6463f06 100644 --- a/salt/elasticsearch/defaults.yaml +++ b/salt/elasticsearch/defaults.yaml @@ -3562,6 +3562,270 @@ elasticsearch: set_priority: priority: 50 min_age: 30d + so-logs-cybereason_x_logon_session: + index_sorting: False + index_template: + index_patterns: + - "logs-cybereason.logon_session-*" + template: + settings: + index: + number_of_replicas: 0 + composed_of: + - "logs-cybereason.logon_session@package" + - "logs-cybereason.logon_session@custom" + - "so-fleet_globals-1" + - "so-fleet_agent_id_verification-1" + priority: 501 + data_stream: + hidden: false + allow_custom_routing: false + ignore_missing_component_templates: + - logs-cybereason.logon_session@custom + policy: + phases: + cold: + actions: + set_priority: + priority: 0 + min_age: 60d + delete: + actions: + delete: {} + min_age: 365d + hot: + actions: + rollover: + max_age: 30d + max_primary_shard_size: 50gb + set_priority: + priority: 100 + min_age: 0ms + warm: + actions: + set_priority: + priority: 50 + min_age: 30d + so-logs-cybereason_x_malop_connection: + index_sorting: False + index_template: + index_patterns: + - "logs-cybereason.malop_connection-*" + template: + settings: + index: + number_of_replicas: 0 + composed_of: + - "logs-cybereason.malop_connection@package" + - "logs-cybereason.malop_connection@custom" + - "so-fleet_globals-1" + - "so-fleet_agent_id_verification-1" + priority: 501 + data_stream: + hidden: false + allow_custom_routing: false + ignore_missing_component_templates: + - logs-cybereason.malop_connection@custom + policy: + phases: + cold: + actions: + set_priority: + priority: 0 + min_age: 60d + delete: + actions: + delete: {} + min_age: 365d + hot: + actions: + rollover: + max_age: 30d + max_primary_shard_size: 50gb + set_priority: + priority: 100 + min_age: 0ms + warm: + actions: + set_priority: + priority: 50 + min_age: 30d + so-logs-cybereason_x_malop_process: + index_sorting: False + index_template: + index_patterns: + - "logs-cybereason.malop_process-*" + template: + settings: + index: + number_of_replicas: 0 + composed_of: + - "logs-cybereason.malop_process@package" + - "logs-cybereason.malop_process@custom" + - "so-fleet_globals-1" + - "so-fleet_agent_id_verification-1" + priority: 501 + data_stream: + hidden: false + allow_custom_routing: false + ignore_missing_component_templates: + - logs-cybereason.malop_process@custom + policy: + phases: + cold: + actions: + set_priority: + priority: 0 + min_age: 60d + delete: + actions: + delete: {} + min_age: 365d + hot: + actions: + rollover: + max_age: 30d + max_primary_shard_size: 50gb + set_priority: + priority: 100 + min_age: 0ms + warm: + actions: + set_priority: + priority: 50 + min_age: 30d + so-logs-cybereason_x_malware: + index_sorting: False + index_template: + index_patterns: + - "logs-cybereason.malware-*" + template: + settings: + index: + number_of_replicas: 0 + composed_of: + - "logs-cybereason.malware@package" + - "logs-cybereason.malware@custom" + - "so-fleet_globals-1" + - "so-fleet_agent_id_verification-1" + priority: 501 + data_stream: + hidden: false + allow_custom_routing: false + ignore_missing_component_templates: + - logs-cybereason.malware@custom + policy: + phases: + cold: + actions: + set_priority: + priority: 0 + min_age: 60d + delete: + actions: + delete: {} + min_age: 365d + hot: + actions: + rollover: + max_age: 30d + max_primary_shard_size: 50gb + set_priority: + priority: 100 + min_age: 0ms + warm: + actions: + set_priority: + priority: 50 + min_age: 30d + so-logs-cybereason_x_poll_malop: + index_sorting: False + index_template: + index_patterns: + - "logs-cybereason.poll_malop-*" + template: + settings: + index: + number_of_replicas: 0 + composed_of: + - "logs-cybereason.poll_malop@package" + - "logs-cybereason.poll_malop@custom" + - "so-fleet_globals-1" + - "so-fleet_agent_id_verification-1" + priority: 501 + data_stream: + hidden: false + allow_custom_routing: false + ignore_missing_component_templates: + - logs-cybereason.poll_malop@custom + policy: + phases: + cold: + actions: + set_priority: + priority: 0 + min_age: 60d + delete: + actions: + delete: {} + min_age: 365d + hot: + actions: + rollover: + max_age: 30d + max_primary_shard_size: 50gb + set_priority: + priority: 100 + min_age: 0ms + warm: + actions: + set_priority: + priority: 50 + min_age: 30d + so-logs-cybereason_x_suspicions_process: + index_sorting: False + index_template: + index_patterns: + - "logs-cybereason.suspicions_process-*" + template: + settings: + index: + number_of_replicas: 0 + composed_of: + - "logs-cybereason.suspicions_process@package" + - "logs-cybereason.suspicions_process@custom" + - "so-fleet_globals-1" + - "so-fleet_agent_id_verification-1" + priority: 501 + data_stream: + hidden: false + allow_custom_routing: false + ignore_missing_component_templates: + - logs-cybereason.suspicions_process@custom + policy: + phases: + cold: + actions: + set_priority: + priority: 0 + min_age: 60d + delete: + actions: + delete: {} + min_age: 365d + hot: + actions: + rollover: + max_age: 30d + max_primary_shard_size: 50gb + set_priority: + priority: 100 + min_age: 0ms + warm: + actions: + set_priority: + priority: 50 + min_age: 30d so-logs-darktrace_x_ai_analyst_alert: index_sorting: false index_template: diff --git a/salt/elasticsearch/soc_elasticsearch.yaml b/salt/elasticsearch/soc_elasticsearch.yaml index 266372708..284e4acc2 100644 --- a/salt/elasticsearch/soc_elasticsearch.yaml +++ b/salt/elasticsearch/soc_elasticsearch.yaml @@ -398,6 +398,12 @@ elasticsearch: so-logs-cloudflare_x_logpull: *indexSettings so-logs-crowdstrike_x_falcon: *indexSettings so-logs-crowdstrike_x_fdr: *indexSettings + so-logs-cybereason_x_logon_session: *indexSettings + so-logs-cybereason_x_malop_connection: *indexSettings + so-logs-cybereason_x_malop_process: *indexSettings + so-logs-cybereason_x_malware: *indexSettings + so-logs-cybereason_x_poll_malop: *indexSettings + so-logs-cybereason_x_suspicions_process: *indexSettings so-logs-darktrace_x_ai_analyst_alert: *indexSettings so-logs-darktrace_x_model_breach_alert: *indexSettings so-logs-darktrace_x_system_status_alert: *indexSettings diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-cybereason.logon_session@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-cybereason.logon_session@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-cybereason.logon_session@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-cybereason.malop_connection@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-cybereason.malop_connection@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-cybereason.malop_connection@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-cybereason.malop_process@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-cybereason.malop_process@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-cybereason.malop_process@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-cybereason.malware@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-cybereason.malware@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-cybereason.malware@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-cybereason.poll_malop@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-cybereason.poll_malop@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-cybereason.poll_malop@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-cybereason.suspicions_process@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-cybereason.suspicions_process@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-cybereason.suspicions_process@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} From 4d093735ecd37e16e2e56249114ce20b30fd48f0 Mon Sep 17 00:00:00 2001 From: m0duspwnens Date: Fri, 18 Oct 2024 14:41:23 -0400 Subject: [PATCH 091/175] prevent state from failing if versionlock plugin not installed --- salt/versionlock/init.sls | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/salt/versionlock/init.sls b/salt/versionlock/init.sls index 278809aee..a310356b4 100644 --- a/salt/versionlock/init.sls +++ b/salt/versionlock/init.sls @@ -3,16 +3,17 @@ # https://securityonion.net/license; you may not use this file except in compliance with the # Elastic License 2.0. -{% from 'versionlock/map.jinja' import VERSIONLOCKMERGED %} - -{% for pkg in VERSIONLOCKMERGED.hold %} +{% if grains.os_family == 'Debian' or (grains.os_family == 'RedHat' and salt['pkg.version']('python3-dnf-plugin-versionlock') != "") %} +{% from 'versionlock/map.jinja' import VERSIONLOCKMERGED %} +{% for pkg in VERSIONLOCKMERGED.hold %} {{pkg}}_held: pkg.held: - name: {{pkg}} -{% endfor %} +{% endfor %} -{% for pkg in VERSIONLOCKMERGED.UNHOLD %} +{% for pkg in VERSIONLOCKMERGED.UNHOLD %} {{pkg}}_unheld: pkg.unheld: - name: {{pkg}} -{% endfor %} +{% endfor %} +{% endif %} From cf95af66c66c1623190eff042965aa9f340a8ea8 Mon Sep 17 00:00:00 2001 From: Jorge Reyes <94730068+reyesj2@users.noreply.github.com> Date: Mon, 21 Oct 2024 15:23:05 -0400 Subject: [PATCH 092/175] Revert "Add support for cybereason integration" --- salt/elasticfleet/defaults.yaml | 1 - salt/elasticsearch/defaults.yaml | 264 ------------------ salt/elasticsearch/soc_elasticsearch.yaml | 6 - .../logs-cybereason.logon_session@custom.json | 36 --- ...gs-cybereason.malop_connection@custom.json | 36 --- .../logs-cybereason.malop_process@custom.json | 36 --- .../logs-cybereason.malware@custom.json | 36 --- .../logs-cybereason.poll_malop@custom.json | 36 --- ...-cybereason.suspicions_process@custom.json | 36 --- 9 files changed, 487 deletions(-) delete mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-cybereason.logon_session@custom.json delete mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-cybereason.malop_connection@custom.json delete mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-cybereason.malop_process@custom.json delete mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-cybereason.malware@custom.json delete mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-cybereason.poll_malop@custom.json delete mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-cybereason.suspicions_process@custom.json diff --git a/salt/elasticfleet/defaults.yaml b/salt/elasticfleet/defaults.yaml index 6e4ce206b..e586100da 100644 --- a/salt/elasticfleet/defaults.yaml +++ b/salt/elasticfleet/defaults.yaml @@ -53,7 +53,6 @@ elasticfleet: - citrix_waf - cloudflare - crowdstrike - - cybereason - darktrace - elastic_agent - elasticsearch diff --git a/salt/elasticsearch/defaults.yaml b/salt/elasticsearch/defaults.yaml index 0a6463f06..f0178728e 100644 --- a/salt/elasticsearch/defaults.yaml +++ b/salt/elasticsearch/defaults.yaml @@ -3562,270 +3562,6 @@ elasticsearch: set_priority: priority: 50 min_age: 30d - so-logs-cybereason_x_logon_session: - index_sorting: False - index_template: - index_patterns: - - "logs-cybereason.logon_session-*" - template: - settings: - index: - number_of_replicas: 0 - composed_of: - - "logs-cybereason.logon_session@package" - - "logs-cybereason.logon_session@custom" - - "so-fleet_globals-1" - - "so-fleet_agent_id_verification-1" - priority: 501 - data_stream: - hidden: false - allow_custom_routing: false - ignore_missing_component_templates: - - logs-cybereason.logon_session@custom - policy: - phases: - cold: - actions: - set_priority: - priority: 0 - min_age: 60d - delete: - actions: - delete: {} - min_age: 365d - hot: - actions: - rollover: - max_age: 30d - max_primary_shard_size: 50gb - set_priority: - priority: 100 - min_age: 0ms - warm: - actions: - set_priority: - priority: 50 - min_age: 30d - so-logs-cybereason_x_malop_connection: - index_sorting: False - index_template: - index_patterns: - - "logs-cybereason.malop_connection-*" - template: - settings: - index: - number_of_replicas: 0 - composed_of: - - "logs-cybereason.malop_connection@package" - - "logs-cybereason.malop_connection@custom" - - "so-fleet_globals-1" - - "so-fleet_agent_id_verification-1" - priority: 501 - data_stream: - hidden: false - allow_custom_routing: false - ignore_missing_component_templates: - - logs-cybereason.malop_connection@custom - policy: - phases: - cold: - actions: - set_priority: - priority: 0 - min_age: 60d - delete: - actions: - delete: {} - min_age: 365d - hot: - actions: - rollover: - max_age: 30d - max_primary_shard_size: 50gb - set_priority: - priority: 100 - min_age: 0ms - warm: - actions: - set_priority: - priority: 50 - min_age: 30d - so-logs-cybereason_x_malop_process: - index_sorting: False - index_template: - index_patterns: - - "logs-cybereason.malop_process-*" - template: - settings: - index: - number_of_replicas: 0 - composed_of: - - "logs-cybereason.malop_process@package" - - "logs-cybereason.malop_process@custom" - - "so-fleet_globals-1" - - "so-fleet_agent_id_verification-1" - priority: 501 - data_stream: - hidden: false - allow_custom_routing: false - ignore_missing_component_templates: - - logs-cybereason.malop_process@custom - policy: - phases: - cold: - actions: - set_priority: - priority: 0 - min_age: 60d - delete: - actions: - delete: {} - min_age: 365d - hot: - actions: - rollover: - max_age: 30d - max_primary_shard_size: 50gb - set_priority: - priority: 100 - min_age: 0ms - warm: - actions: - set_priority: - priority: 50 - min_age: 30d - so-logs-cybereason_x_malware: - index_sorting: False - index_template: - index_patterns: - - "logs-cybereason.malware-*" - template: - settings: - index: - number_of_replicas: 0 - composed_of: - - "logs-cybereason.malware@package" - - "logs-cybereason.malware@custom" - - "so-fleet_globals-1" - - "so-fleet_agent_id_verification-1" - priority: 501 - data_stream: - hidden: false - allow_custom_routing: false - ignore_missing_component_templates: - - logs-cybereason.malware@custom - policy: - phases: - cold: - actions: - set_priority: - priority: 0 - min_age: 60d - delete: - actions: - delete: {} - min_age: 365d - hot: - actions: - rollover: - max_age: 30d - max_primary_shard_size: 50gb - set_priority: - priority: 100 - min_age: 0ms - warm: - actions: - set_priority: - priority: 50 - min_age: 30d - so-logs-cybereason_x_poll_malop: - index_sorting: False - index_template: - index_patterns: - - "logs-cybereason.poll_malop-*" - template: - settings: - index: - number_of_replicas: 0 - composed_of: - - "logs-cybereason.poll_malop@package" - - "logs-cybereason.poll_malop@custom" - - "so-fleet_globals-1" - - "so-fleet_agent_id_verification-1" - priority: 501 - data_stream: - hidden: false - allow_custom_routing: false - ignore_missing_component_templates: - - logs-cybereason.poll_malop@custom - policy: - phases: - cold: - actions: - set_priority: - priority: 0 - min_age: 60d - delete: - actions: - delete: {} - min_age: 365d - hot: - actions: - rollover: - max_age: 30d - max_primary_shard_size: 50gb - set_priority: - priority: 100 - min_age: 0ms - warm: - actions: - set_priority: - priority: 50 - min_age: 30d - so-logs-cybereason_x_suspicions_process: - index_sorting: False - index_template: - index_patterns: - - "logs-cybereason.suspicions_process-*" - template: - settings: - index: - number_of_replicas: 0 - composed_of: - - "logs-cybereason.suspicions_process@package" - - "logs-cybereason.suspicions_process@custom" - - "so-fleet_globals-1" - - "so-fleet_agent_id_verification-1" - priority: 501 - data_stream: - hidden: false - allow_custom_routing: false - ignore_missing_component_templates: - - logs-cybereason.suspicions_process@custom - policy: - phases: - cold: - actions: - set_priority: - priority: 0 - min_age: 60d - delete: - actions: - delete: {} - min_age: 365d - hot: - actions: - rollover: - max_age: 30d - max_primary_shard_size: 50gb - set_priority: - priority: 100 - min_age: 0ms - warm: - actions: - set_priority: - priority: 50 - min_age: 30d so-logs-darktrace_x_ai_analyst_alert: index_sorting: false index_template: diff --git a/salt/elasticsearch/soc_elasticsearch.yaml b/salt/elasticsearch/soc_elasticsearch.yaml index 284e4acc2..266372708 100644 --- a/salt/elasticsearch/soc_elasticsearch.yaml +++ b/salt/elasticsearch/soc_elasticsearch.yaml @@ -398,12 +398,6 @@ elasticsearch: so-logs-cloudflare_x_logpull: *indexSettings so-logs-crowdstrike_x_falcon: *indexSettings so-logs-crowdstrike_x_fdr: *indexSettings - so-logs-cybereason_x_logon_session: *indexSettings - so-logs-cybereason_x_malop_connection: *indexSettings - so-logs-cybereason_x_malop_process: *indexSettings - so-logs-cybereason_x_malware: *indexSettings - so-logs-cybereason_x_poll_malop: *indexSettings - so-logs-cybereason_x_suspicions_process: *indexSettings so-logs-darktrace_x_ai_analyst_alert: *indexSettings so-logs-darktrace_x_model_breach_alert: *indexSettings so-logs-darktrace_x_system_status_alert: *indexSettings diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-cybereason.logon_session@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-cybereason.logon_session@custom.json deleted file mode 100644 index 17319ab9f..000000000 --- a/salt/elasticsearch/templates/component/elastic-agent/logs-cybereason.logon_session@custom.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "template": { - "mappings": { - "properties": { - "host": { - "properties":{ - "ip": { - "type": "ip" - } - } - }, - "related": { - "properties":{ - "ip": { - "type": "ip" - } - } - }, - "destination": { - "properties":{ - "ip": { - "type": "ip" - } - } - }, - "source": { - "properties":{ - "ip": { - "type": "ip" - } - } - } - } - } - } -} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-cybereason.malop_connection@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-cybereason.malop_connection@custom.json deleted file mode 100644 index 17319ab9f..000000000 --- a/salt/elasticsearch/templates/component/elastic-agent/logs-cybereason.malop_connection@custom.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "template": { - "mappings": { - "properties": { - "host": { - "properties":{ - "ip": { - "type": "ip" - } - } - }, - "related": { - "properties":{ - "ip": { - "type": "ip" - } - } - }, - "destination": { - "properties":{ - "ip": { - "type": "ip" - } - } - }, - "source": { - "properties":{ - "ip": { - "type": "ip" - } - } - } - } - } - } -} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-cybereason.malop_process@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-cybereason.malop_process@custom.json deleted file mode 100644 index 17319ab9f..000000000 --- a/salt/elasticsearch/templates/component/elastic-agent/logs-cybereason.malop_process@custom.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "template": { - "mappings": { - "properties": { - "host": { - "properties":{ - "ip": { - "type": "ip" - } - } - }, - "related": { - "properties":{ - "ip": { - "type": "ip" - } - } - }, - "destination": { - "properties":{ - "ip": { - "type": "ip" - } - } - }, - "source": { - "properties":{ - "ip": { - "type": "ip" - } - } - } - } - } - } -} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-cybereason.malware@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-cybereason.malware@custom.json deleted file mode 100644 index 17319ab9f..000000000 --- a/salt/elasticsearch/templates/component/elastic-agent/logs-cybereason.malware@custom.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "template": { - "mappings": { - "properties": { - "host": { - "properties":{ - "ip": { - "type": "ip" - } - } - }, - "related": { - "properties":{ - "ip": { - "type": "ip" - } - } - }, - "destination": { - "properties":{ - "ip": { - "type": "ip" - } - } - }, - "source": { - "properties":{ - "ip": { - "type": "ip" - } - } - } - } - } - } -} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-cybereason.poll_malop@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-cybereason.poll_malop@custom.json deleted file mode 100644 index 17319ab9f..000000000 --- a/salt/elasticsearch/templates/component/elastic-agent/logs-cybereason.poll_malop@custom.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "template": { - "mappings": { - "properties": { - "host": { - "properties":{ - "ip": { - "type": "ip" - } - } - }, - "related": { - "properties":{ - "ip": { - "type": "ip" - } - } - }, - "destination": { - "properties":{ - "ip": { - "type": "ip" - } - } - }, - "source": { - "properties":{ - "ip": { - "type": "ip" - } - } - } - } - } - } -} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-cybereason.suspicions_process@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-cybereason.suspicions_process@custom.json deleted file mode 100644 index 17319ab9f..000000000 --- a/salt/elasticsearch/templates/component/elastic-agent/logs-cybereason.suspicions_process@custom.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "template": { - "mappings": { - "properties": { - "host": { - "properties":{ - "ip": { - "type": "ip" - } - } - }, - "related": { - "properties":{ - "ip": { - "type": "ip" - } - } - }, - "destination": { - "properties":{ - "ip": { - "type": "ip" - } - } - }, - "source": { - "properties":{ - "ip": { - "type": "ip" - } - } - } - } - } - } -} From 21f359456c01084c07ab52764fd3aef3082bfdec Mon Sep 17 00:00:00 2001 From: m0duspwnens Date: Tue, 22 Oct 2024 11:35:08 -0400 Subject: [PATCH 093/175] install createrepo for airgap --- setup/so-functions | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/setup/so-functions b/setup/so-functions index 5ebf76c17..ad10752ea 100755 --- a/setup/so-functions +++ b/setup/so-functions @@ -1825,10 +1825,9 @@ repo_sync_local() { if [[ ! $is_airgap ]]; then curl --retry 5 --retry-delay 60 -A "netinstall/$SOVERSION/$OS/$(uname -r)/1" https://sigs.securityonion.net/checkup --output /tmp/install retry 5 60 "dnf reposync --norepopath -g --delete -m -c /opt/so/conf/reposync/repodownload.conf --repoid=securityonionsync --download-metadata -p /nsm/repo/" >> "$setup_log" 2>&1 || fail_setup - # After the download is complete run createrepo - create_repo fi - + # After the download is complete run createrepo + create_repo else # Add the proper repos for unsupported stuff echo "Adding Repos" From 8d2ae23ae65751cec3d855c4463b8b93767fc27a Mon Sep 17 00:00:00 2001 From: m0duspwnens Date: Tue, 22 Oct 2024 13:56:38 -0400 Subject: [PATCH 094/175] install createrepo on airgap and non airgap --- salt/manager/init.sls | 6 ++++++ setup/so-functions | 6 +++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/salt/manager/init.sls b/salt/manager/init.sls index 2feda45ae..31af523cc 100644 --- a/salt/manager/init.sls +++ b/salt/manager/init.sls @@ -45,6 +45,12 @@ yara_log_dir: - user - group +{% if GLOBALS.os_family == 'RedHat' %} +install_createrepo: + pkg.installed: + - name: createrepo +{% endif %} + repo_conf_dir: file.directory: - name: /opt/so/conf/reposync diff --git a/setup/so-functions b/setup/so-functions index ad10752ea..f4262152f 100755 --- a/setup/so-functions +++ b/setup/so-functions @@ -803,7 +803,6 @@ create_manager_pillars() { create_repo() { title "Create the repo directory" - logCmd "dnf -y install yum-utils createrepo" logCmd "createrepo /nsm/repo" } @@ -1821,13 +1820,14 @@ repo_sync_local() { echo "gpgcheck=1" >> /opt/so/conf/reposync/repodownload.conf logCmd "dnf repolist" + logCmd "dnf -y install yum-utils createrepo" if [[ ! $is_airgap ]]; then curl --retry 5 --retry-delay 60 -A "netinstall/$SOVERSION/$OS/$(uname -r)/1" https://sigs.securityonion.net/checkup --output /tmp/install retry 5 60 "dnf reposync --norepopath -g --delete -m -c /opt/so/conf/reposync/repodownload.conf --repoid=securityonionsync --download-metadata -p /nsm/repo/" >> "$setup_log" 2>&1 || fail_setup + # After the download is complete run createrepo + create_repo fi - # After the download is complete run createrepo - create_repo else # Add the proper repos for unsupported stuff echo "Adding Repos" From 7a0f6d5e9326c733248ad079eb274dc1086b5477 Mon Sep 17 00:00:00 2001 From: m0duspwnens Date: Tue, 22 Oct 2024 16:42:01 -0400 Subject: [PATCH 095/175] fix pkg name --- salt/manager/init.sls | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/salt/manager/init.sls b/salt/manager/init.sls index 31af523cc..96055df24 100644 --- a/salt/manager/init.sls +++ b/salt/manager/init.sls @@ -48,7 +48,7 @@ yara_log_dir: {% if GLOBALS.os_family == 'RedHat' %} install_createrepo: pkg.installed: - - name: createrepo + - name: createrepo_c {% endif %} repo_conf_dir: From 1df104967ebb426a52d5dbb0f109005c115b1a36 Mon Sep 17 00:00:00 2001 From: m0duspwnens Date: Tue, 22 Oct 2024 16:50:23 -0400 Subject: [PATCH 096/175] fix pkg name --- salt/manager/tools/sbin/soup | 2 +- setup/so-functions | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/salt/manager/tools/sbin/soup b/salt/manager/tools/sbin/soup index c592dffe4..1845918c1 100755 --- a/salt/manager/tools/sbin/soup +++ b/salt/manager/tools/sbin/soup @@ -914,7 +914,7 @@ update_airgap_repo() { echo "Syncing new updates to /nsm/repo" rsync -av $AGREPO/* /nsm/repo/ echo "Creating repo" - dnf -y install yum-utils createrepo + dnf -y install yum-utils createrepo_c createrepo /nsm/repo } diff --git a/setup/so-functions b/setup/so-functions index f4262152f..8e1297812 100755 --- a/setup/so-functions +++ b/setup/so-functions @@ -1820,7 +1820,7 @@ repo_sync_local() { echo "gpgcheck=1" >> /opt/so/conf/reposync/repodownload.conf logCmd "dnf repolist" - logCmd "dnf -y install yum-utils createrepo" + logCmd "dnf -y install yum-utils createrepo_c" if [[ ! $is_airgap ]]; then curl --retry 5 --retry-delay 60 -A "netinstall/$SOVERSION/$OS/$(uname -r)/1" https://sigs.securityonion.net/checkup --output /tmp/install From 8cc530dd4c1437d6f697f2da6c40c8582bc1b7ca Mon Sep 17 00:00:00 2001 From: m0duspwnens Date: Wed, 23 Oct 2024 09:36:17 -0400 Subject: [PATCH 097/175] fix HELD for debian families --- salt/versionlock/map.jinja | 7 ++++++- salt/versionlock/soc_versionlock.yaml | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/salt/versionlock/map.jinja b/salt/versionlock/map.jinja index e078ff22d..1477657bc 100644 --- a/salt/versionlock/map.jinja +++ b/salt/versionlock/map.jinja @@ -5,7 +5,12 @@ {% import_yaml 'versionlock/defaults.yaml' as VERSIONLOCKDEFAULTS %} {% set VERSIONLOCKMERGED = salt['pillar.get']('versionlock', VERSIONLOCKDEFAULTS.versionlock, merge=True) %} -{% set HELD = salt['pkg.list_holds']() %} + +{% if grains.os_family == 'RedHat' %} +{% set HELD = salt['pkg.list_holds']() %} +{% else %} +{% set HELD = salt['pkg.get_selections'](state='hold')['hold'] %} +{% endif %} {# these are packages held / versionlock in other states #} {% set PACKAGES_HELD_IN_OTHER_STATES = [ diff --git a/salt/versionlock/soc_versionlock.yaml b/salt/versionlock/soc_versionlock.yaml index f1e864d7d..92fd69875 100644 --- a/salt/versionlock/soc_versionlock.yaml +++ b/salt/versionlock/soc_versionlock.yaml @@ -1,6 +1,6 @@ versionlock: hold: - description: List of packages to prevent from upgrading. To reduce the frequency of required reboots, add 'kernel' to this list. + description: List of packages to prevent from upgrading. To reduce the frequency of required reboots, add 'kernel' to this list for RedHat based OS families. For Debian, please see the documentation. global: True forcedType: "[]string" multiline: True From 17ba048b50da30a9933573ddae9c875c9880f461 Mon Sep 17 00:00:00 2001 From: m0duspwnens Date: Wed, 23 Oct 2024 10:40:26 -0400 Subject: [PATCH 098/175] use manager state to install createrepo_c for airgap --- setup/so-functions | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup/so-functions b/setup/so-functions index 8e1297812..51ddabadf 100755 --- a/setup/so-functions +++ b/setup/so-functions @@ -803,6 +803,7 @@ create_manager_pillars() { create_repo() { title "Create the repo directory" + logCmd "dnf -y install yum-utils createrepo_c" logCmd "createrepo /nsm/repo" } @@ -1820,7 +1821,6 @@ repo_sync_local() { echo "gpgcheck=1" >> /opt/so/conf/reposync/repodownload.conf logCmd "dnf repolist" - logCmd "dnf -y install yum-utils createrepo_c" if [[ ! $is_airgap ]]; then curl --retry 5 --retry-delay 60 -A "netinstall/$SOVERSION/$OS/$(uname -r)/1" https://sigs.securityonion.net/checkup --output /tmp/install From 4d902da931f20278c42e324a2f68e70bb14f46b0 Mon Sep 17 00:00:00 2001 From: m0duspwnens Date: Wed, 23 Oct 2024 15:58:11 -0400 Subject: [PATCH 099/175] call airgap_rules if airgap. log rsync and git commands --- setup/so-functions | 10 +++++----- setup/so-setup | 6 ++++-- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/setup/so-functions b/setup/so-functions index 5ebf76c17..caeda5d6a 100755 --- a/setup/so-functions +++ b/setup/so-functions @@ -44,17 +44,17 @@ logCmd() { airgap_rules() { # Copy the rules for detections if using Airgap mkdir -p /nsm/rules - rsync -av /root/SecurityOnion/agrules/ /nsm/rules/ + logCmd "rsync -av /root/SecurityOnion/agrules/ /nsm/rules/" # Copy over the securityonion-resources repo - rsync -av /root/SecurityOnion/agrules/securityonion-resources /nsm/ + logCmd "rsync -av /root/SecurityOnion/agrules/securityonion-resources /nsm/" } airgap_detection_summaries() { # Copy summaries over to SOC and checkout the correct branch - rsync -av --chown=socore:socore /nsm/securityonion-resources /opt/so/conf/soc/ai_summary_repos - git config --global --add safe.directory /opt/so/conf/soc/ai_summary_repos/securityonion-resources - git -C /opt/so/conf/soc/ai_summary_repos/securityonion-resources checkout generated-summaries-published + logCmd "rsync -av --chown=socore:socore /nsm/securityonion-resources /opt/so/conf/soc/ai_summary_repos" + logCmd "git config --global --add safe.directory /opt/so/conf/soc/ai_summary_repos/securityonion-resources" + logCmd "git -C /opt/so/conf/soc/ai_summary_repos/securityonion-resources checkout generated-summaries-published" } add_admin_user() { diff --git a/setup/so-setup b/setup/so-setup index 85b26fa40..b7723da37 100755 --- a/setup/so-setup +++ b/setup/so-setup @@ -692,8 +692,10 @@ if ! [[ -f $install_opt_file ]]; then logCmd "so-minion -o=setup" title "Creating Global SLS" - # Airgap Rules - airgap_rules + if [[ $is_airgap ]]; then + # Airgap Rules + airgap_rules + fi manager_pillar From 5e6dd2e8b324f487870ed25e26c0b9227528992a Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Wed, 23 Oct 2024 16:49:02 -0400 Subject: [PATCH 100/175] connect --- salt/docker/defaults.yaml | 2 +- salt/hydra/defaults.yaml | 4 +- salt/manager/sync_es_users.sls | 1 + salt/manager/tools/sbin/so-user | 16 +++++++ salt/manager/tools/sbin/soup | 5 ++ salt/soc/defaults.yaml | 2 + salt/soc/enabled.sls | 1 + salt/soc/files/bin/salt-relay.sh | 78 +++++++++++++++++++++++++++++++- salt/vars/globals.map.jinja | 1 + setup/so-functions | 7 +++ 10 files changed, 114 insertions(+), 3 deletions(-) diff --git a/salt/docker/defaults.yaml b/salt/docker/defaults.yaml index 9a33611c2..21cdf606c 100644 --- a/salt/docker/defaults.yaml +++ b/salt/docker/defaults.yaml @@ -55,7 +55,7 @@ docker: final_octet: 30 port_bindings: - 0.0.0.0:4444:4444 - - 0.0.0.0:4454:4445 + - 0.0.0.0:4445:4445 custom_bind_mounts: [] extra_hosts: [] extra_env: [] diff --git a/salt/hydra/defaults.yaml b/salt/hydra/defaults.yaml index a9a26c151..af032da04 100644 --- a/salt/hydra/defaults.yaml +++ b/salt/hydra/defaults.yaml @@ -27,6 +27,8 @@ hydra: - public pairwise: salt: "" - + log: + level: debug + format: json sqa: opt_out: true \ No newline at end of file diff --git a/salt/manager/sync_es_users.sls b/salt/manager/sync_es_users.sls index 03645c699..829eeed14 100644 --- a/salt/manager/sync_es_users.sls +++ b/salt/manager/sync_es_users.sls @@ -16,6 +16,7 @@ sync_es_users: - /opt/so/saltstack/local/salt/elasticsearch/files/users - /opt/so/saltstack/local/salt/elasticsearch/files/users_roles - /opt/so/conf/soc/soc_users_roles + - /opt/so/conf/soc/soc_client_roles - show_changes: False - require: - docker_container: so-kratos diff --git a/salt/manager/tools/sbin/so-user b/salt/manager/tools/sbin/so-user index e4b2b7464..845e1585e 100755 --- a/salt/manager/tools/sbin/so-user +++ b/salt/manager/tools/sbin/so-user @@ -136,6 +136,7 @@ bcryptRounds=${BCRYPT_ROUNDS:-12} elasticUsersFile=${ELASTIC_USERS_FILE:-/opt/so/saltstack/local/salt/elasticsearch/files/users} elasticRolesFile=${ELASTIC_ROLES_FILE:-/opt/so/saltstack/local/salt/elasticsearch/files/users_roles} socRolesFile=${SOC_ROLES_FILE:-/opt/so/conf/soc/soc_users_roles} +clientRolesFile=${SOC_ROLES_FILE:-/opt/so/conf/soc/soc_client_roles} esUID=${ELASTIC_UID:-930} esGID=${ELASTIC_GID:-930} soUID=${SOCORE_UID:-939} @@ -282,6 +283,18 @@ function ensureRoleFileExists() { fi mv "${rolesTmpFile}" "${socRolesFile}" fi + + if [[ ! -f "$clientRolesFile" || ! -s "$clientRolesFile" ]]; then + # Generate the new client roles file + rolesTmpFile="${clientRolesFile}.tmp" + createFile "$rolesTmpFile" "$soUID" "$soGID" + + if [[ -d "$clientRolesFile" ]]; then + echo "Removing invalid roles directory created by Docker" + rm -fr "$clientRolesFile" + fi + mv "${rolesTmpFile}" "${clientRolesFile}" + fi } function syncElasticSystemUser() { @@ -374,6 +387,9 @@ function syncElastic() { [[ $? != 0 ]] && fail "Unable to read role identities from database" done < "$socRolesFile" + # Append the client roles + cat "$clientRolesFile" >> "$rolesTmpFile" + else echo "Database file or soc roles file does not exist yet, skipping users export" fi diff --git a/salt/manager/tools/sbin/soup b/salt/manager/tools/sbin/soup index 2cd108d00..fe5883294 100755 --- a/salt/manager/tools/sbin/soup +++ b/salt/manager/tools/sbin/soup @@ -726,12 +726,17 @@ add_hydra_pillars() { chmod 660 /opt/so/saltstack/local/pillar/hydra/soc_hydra.sls touch /opt/so/saltstack/local/pillar/hydra/adv_hydra.sls HYDRAKEY=$(get_random_value) + HYDRASALT=$(get_random_value) printf '%s\n'\ "hydra:"\ " config:"\ " secrets:"\ " system:"\ " - '$HYDRAKEY'"\ + " oidc:"\ + " subject_identifiers:"\ + " pairwise:"\ + " salt: '$HYDRASALT'"\ "" > /opt/so/saltstack/local/pillar/hydra/soc_hydra.sls } diff --git a/salt/soc/defaults.yaml b/salt/soc/defaults.yaml index 52ca5fe8c..f39a72f89 100644 --- a/salt/soc/defaults.yaml +++ b/salt/soc/defaults.yaml @@ -1318,6 +1318,8 @@ soc: jobDir: jobs kratos: hostUrl: + hydra: + hostUrl: elastalertengine: aiRepoUrl: https://github.com/Security-Onion-Solutions/securityonion-resources aiRepoBranch: generated-summaries-published diff --git a/salt/soc/enabled.sls b/salt/soc/enabled.sls index 99499115c..ac89a9763 100644 --- a/salt/soc/enabled.sls +++ b/salt/soc/enabled.sls @@ -44,6 +44,7 @@ so-soc: - /opt/so/conf/soc/custom.js:/opt/sensoroni/html/js/custom.js:ro - /opt/so/conf/soc/custom_roles:/opt/sensoroni/rbac/custom_roles:ro - /opt/so/conf/soc/soc_users_roles:/opt/sensoroni/rbac/users_roles:rw + - /opt/so/conf/soc/soc_client_roles:/opt/sensoroni/rbac/client_roles:rw - /opt/so/conf/soc/queue:/opt/sensoroni/queue:rw - /opt/so/saltstack:/opt/so/saltstack:rw - /opt/so/conf/soc/migrations:/opt/so/conf/soc/migrations:rw diff --git a/salt/soc/files/bin/salt-relay.sh b/salt/soc/files/bin/salt-relay.sh index 4b183b20a..d36e8549e 100755 --- a/salt/soc/files/bin/salt-relay.sh +++ b/salt/soc/files/bin/salt-relay.sh @@ -97,7 +97,7 @@ function manage_user() { response=$(echo "$password" | so-user "$op" --email "$email" --firstName "$firstName" --lastName "$lastName" --note "$note" --role "$role" --skip-sync) exit_code=$? ;; - add|enable|disable|delete) + enable|disable|delete) email=$(echo "$request" | jq -r .email) log "Performing user '$op' for user '$email'" response=$(so-user "$op" --email "$email" --skip-sync) @@ -155,6 +155,82 @@ function manage_user() { fi } +function manage_client() { + id=$1 + request=$2 + op=$(echo "$request" | jq -r .operation) + + webResponse="true" + max_tries=10 + tries=0 + while [[ $tries -lt $max_tries ]]; do + case "$op" in + add) + role=$(echo "$request" | jq -r .role) + name=$(echo "$request" | jq -r .name) + note=$(echo "$request" | jq -r .note) + log "Performing client '$op' for client with name '$name', note '$note' and role '$role'" + response=$(so-client "$op" --name "$name" --note "$note" --role "$role" --skip-sync) + webResponse=$resposne + exit_code=$? + ;; + delete) + id=$(echo "$request" | jq -r .id) + log "Performing client '$op' for client '$id'" + response=$(so-client "$op" --id "$id" --skip-sync) + exit_code=$? + ;; + addrole|delrole) + id=$(echo "$request" | jq -r .id) + role=$(echo "$request" | jq -r .role) + log "Performing '$op' for client '$id' with role '$role'" + response=$(so-client "$op" --id "$id" --role "$role" --skip-sync) + exit_code=$? + ;; + generate-secret) + id=$(echo "$request" | jq -r .id) + log "Performing '$op' operation for client '$id'" + response=$(so-client "$op" --id "$id" --skip-sync) + webResponse=$response + exit_code=$? + ;; + update) + id=$(echo "$request" | jq -r .id) + name=$(echo "$request" | jq -r .name) + note=$(echo "$request" | jq -r .note) + log "Performing '$op' update for client '$id' with name '$name', and note '$note'" + response=$(so-client "$op" --id "$id" --name "$name" --note "$note") + exit_code=$? + ;; + sync) + log "Performing '$op'" + response=$(so-user "$op") + exit_code=$? + ;; + *) + response="Unsupported client operation: $op" + exit_code=1 + ;; + esac + + tries=$((tries+1)) + if [[ "$response" == "Another process is using so-user"* ]]; then + log "Retrying after brief delay to let so-user unlock ($tries/$max_tries)" + sleep 5 + else + break + fi + done + + if [[ exit_code -eq 0 ]]; then + log "Successful command execution" + respond "$id" "$webResponse" + else + log "Unsuccessful command execution: $response ($exit_code)" + respond "$id" "false" + fi +} + function manage_salt() { id=$1 request=$2 diff --git a/salt/vars/globals.map.jinja b/salt/vars/globals.map.jinja index 0a4995c0c..000cfa354 100644 --- a/salt/vars/globals.map.jinja +++ b/salt/vars/globals.map.jinja @@ -53,6 +53,7 @@ {% do GLOBALS.update({ 'application_urls': { + 'hydra': 'http://' ~ GLOBALS.manager ~ ':4445/', 'kratos': 'http://' ~ GLOBALS.manager ~ ':4434/', 'elastic': 'https://' ~ GLOBALS.manager ~ ':9200/', 'influxdb': 'https://' ~ GLOBALS.manager ~ ':8086/' diff --git a/setup/so-functions b/setup/so-functions index 5e36851c2..be57776f7 100755 --- a/setup/so-functions +++ b/setup/so-functions @@ -1110,6 +1110,7 @@ generate_passwords(){ SENSORONIKEY=$(get_random_value) KRATOSKEY=$(get_random_value) HYDRAKEY=$(get_random_value) + HYDRASALT=$(get_random_value) REDISPASS=$(get_random_value) SOCSRVKEY=$(get_random_value 64) IMPORTPASS=$(get_random_value) @@ -1308,12 +1309,18 @@ kratos_pillar() { hydra_pillar() { title "Create the Hydra pillar file" touch $adv_hydra_pillar_file + touch $hydra_pillar_file + chmod 660 $hydra_pillar_file printf '%s\n'\ "hydra:"\ " config:"\ " secrets:"\ " system:"\ " - '$HYDRAKEY'"\ + " oidc:"\ + " subject_identifiers:"\ + " pairwise:"\ + " salt: '$HYDRASALT'"\ "" > "$hydra_pillar_file" } From 7c405ff9d73b47ff91a2497b928772d8c1f94821 Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Thu, 24 Oct 2024 08:47:52 -0400 Subject: [PATCH 101/175] connect --- salt/manager/sync_es_users.sls | 3 ++- salt/manager/tools/sbin/so-user | 2 +- salt/soc/config.sls | 6 ++++++ salt/soc/defaults.yaml | 1 + salt/soc/enabled.sls | 3 ++- 5 files changed, 12 insertions(+), 3 deletions(-) diff --git a/salt/manager/sync_es_users.sls b/salt/manager/sync_es_users.sls index 829eeed14..3aebef993 100644 --- a/salt/manager/sync_es_users.sls +++ b/salt/manager/sync_es_users.sls @@ -16,12 +16,13 @@ sync_es_users: - /opt/so/saltstack/local/salt/elasticsearch/files/users - /opt/so/saltstack/local/salt/elasticsearch/files/users_roles - /opt/so/conf/soc/soc_users_roles - - /opt/so/conf/soc/soc_client_roles + - /opt/so/conf/soc/soc_clients_roles - show_changes: False - require: - docker_container: so-kratos - http: wait_for_kratos - file: so-user.lock # require so-user.lock file to be missing + - file: so-client.lock # require so-client.lock file to be missing # we dont want this added too early in setup, so we add the onlyif to verify 'startup_states: highstate' # is in the minion config. That line is added before the final highstate during setup diff --git a/salt/manager/tools/sbin/so-user b/salt/manager/tools/sbin/so-user index 845e1585e..03855f661 100755 --- a/salt/manager/tools/sbin/so-user +++ b/salt/manager/tools/sbin/so-user @@ -136,7 +136,7 @@ bcryptRounds=${BCRYPT_ROUNDS:-12} elasticUsersFile=${ELASTIC_USERS_FILE:-/opt/so/saltstack/local/salt/elasticsearch/files/users} elasticRolesFile=${ELASTIC_ROLES_FILE:-/opt/so/saltstack/local/salt/elasticsearch/files/users_roles} socRolesFile=${SOC_ROLES_FILE:-/opt/so/conf/soc/soc_users_roles} -clientRolesFile=${SOC_ROLES_FILE:-/opt/so/conf/soc/soc_client_roles} +clientRolesFile=${SOC_ROLES_FILE:-/opt/so/conf/soc/soc_clients_roles} esUID=${ELASTIC_UID:-930} esGID=${ELASTIC_GID:-930} soUID=${SOCORE_UID:-939} diff --git a/salt/soc/config.sls b/salt/soc/config.sls index 7607da5ff..5174dd94e 100644 --- a/salt/soc/config.sls +++ b/salt/soc/config.sls @@ -176,6 +176,12 @@ socusersroles: - require: - sls: manager.sync_es_users +socclientsroles: + file.exists: + - name: /opt/so/conf/soc/soc_clients_roles + - require: + - sls: manager.sync_es_users + socuploaddir: file.directory: - name: /nsm/soc/uploads diff --git a/salt/soc/defaults.yaml b/salt/soc/defaults.yaml index f39a72f89..ae5f83edd 100644 --- a/salt/soc/defaults.yaml +++ b/salt/soc/defaults.yaml @@ -1403,6 +1403,7 @@ soc: - rbac/custom_roles userFiles: - rbac/users_roles + - rbac/clients_roles strelkaengine: aiRepoUrl: https://github.com/Security-Onion-Solutions/securityonion-resources aiRepoBranch: generated-summaries-published diff --git a/salt/soc/enabled.sls b/salt/soc/enabled.sls index ac89a9763..d1582721d 100644 --- a/salt/soc/enabled.sls +++ b/salt/soc/enabled.sls @@ -44,7 +44,7 @@ so-soc: - /opt/so/conf/soc/custom.js:/opt/sensoroni/html/js/custom.js:ro - /opt/so/conf/soc/custom_roles:/opt/sensoroni/rbac/custom_roles:ro - /opt/so/conf/soc/soc_users_roles:/opt/sensoroni/rbac/users_roles:rw - - /opt/so/conf/soc/soc_client_roles:/opt/sensoroni/rbac/client_roles:rw + - /opt/so/conf/soc/soc_clients_roles:/opt/sensoroni/rbac/clients_roles:rw - /opt/so/conf/soc/queue:/opt/sensoroni/queue:rw - /opt/so/saltstack:/opt/so/saltstack:rw - /opt/so/conf/soc/migrations:/opt/so/conf/soc/migrations:rw @@ -83,6 +83,7 @@ so-soc: - file: soccustom - file: soccustomroles - file: socusersroles + - file: socclientroles delete_so-soc_so-status.disabled: file.uncomment: From cacd5b06435b573e918cedffb96508a6f7580abd Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Thu, 24 Oct 2024 09:36:09 -0400 Subject: [PATCH 102/175] connect --- salt/manager/sync_es_users.sls | 4 + salt/manager/tools/sbin/so-client | 331 ++++++++++++++++++++++++++++++ salt/soc/enabled.sls | 2 +- 3 files changed, 336 insertions(+), 1 deletion(-) create mode 100644 salt/manager/tools/sbin/so-client diff --git a/salt/manager/sync_es_users.sls b/salt/manager/sync_es_users.sls index 3aebef993..c46b58ce2 100644 --- a/salt/manager/sync_es_users.sls +++ b/salt/manager/sync_es_users.sls @@ -6,6 +6,10 @@ so-user.lock: file.missing: - name: /var/tmp/so-user.lock +so-client.lock: + file.missing: + - name: /var/tmp/so-client.lock + # Must run before elasticsearch docker container is started! sync_es_users: cmd.run: diff --git a/salt/manager/tools/sbin/so-client b/salt/manager/tools/sbin/so-client new file mode 100644 index 000000000..04e540465 --- /dev/null +++ b/salt/manager/tools/sbin/so-client @@ -0,0 +1,331 @@ +#!/bin/bash + +# Copyright Security Onion Solutions LLC and/or licensed to Security Onion Solutions LLC under one +# or more contributor license agreements. Licensed under the Elastic License 2.0 as shown at +# https://securityonion.net/license; you may not use this file except in compliance with the +# Elastic License 2.0. + +if [[ -f /usr/sbin/so-common ]]; then + source /usr/sbin/so-common +else + source $(dirname $0)/../../../common/tools/sbin/so-common +fi + + +DEFAULT_ROLE=limited-auditor + +function usage() { + cat < [supporting parameters] + + where is one of the following: + + list: Lists all client IDs and roles currently defined in the oauth2 system + + add: Adds a new client to the oauth2 system and outputs the generated secret + Required parameters: + --name + Optional parameters: + --role (defaults to $DEFAULT_ROLE) + --note (defaults to blank) + + delete: Deletes a client from the oauth2 system + Required parameters: + --id + + addrole: Grants a role to an existing client + Required parameters: + --id + --role + + delrole: Removes a role from an existing client + Required parameters: + --id + --role + + generate-secret: Regenerates a client's secret and outputs the new secret. + Required parameters: + --id + Optional parameters: + --skip-sync (defers the Elastic sync until the next scheduled time) + +USAGE_EOF + exit 1 +} + +if [[ $# -lt 1 || $1 == --help || $1 == -h || $1 == -? || $1 == --h ]]; then + usage +fi + +operation=$1 +shift + +while [[ $# -gt 0 ]]; do + param=$1 + shift + case "$param" in + --id) + id=$1 + shift + ;; + --role) + role=$1 + shift + ;; + --name) + name=$1 + shift + ;; + --note) + note=$1 + shift + ;; + *) + echo "Encountered unexpected parameter: $param" + usage + ;; + esac +done + +hydraUrl=${HYDRA_URL:-http://127.0.0.1:4445/admin} +socRolesFile=${SOC_ROLES_FILE:-/opt/so/conf/soc/soc_clients_roles} +soUID=${SOCORE_UID:-939} +soGID=${SOCORE_GID:-939} + +function lock() { + # Obtain file descriptor lock + exec 99>/var/tmp/so-client.lock || fail "Unable to create lock descriptor; if the system was not shutdown gracefully you may need to remove /var/tmp/so-client.lock manually." + flock -w 10 99 || fail "Another process is using so-client; if the system was not shutdown gracefully you may need to remove /var/tmp/so-client.lock manually." + trap 'rm -f /var/tmp/so-client.lock' EXIT +} + +function fail() { + msg=$1 + echo "$1" + exit 1 +} + +function require() { + cmd=$1 + which "$1" 2>&1 > /dev/null + [[ $? != 0 ]] && fail "This script requires the following command be installed: ${cmd}" +} + +# Verify this environment is capable of running this script +function verifyEnvironment() { + require "jq" + require "curl" + response=$(curl -Ss -L ${hydraUrl}/) + [[ "$response" != "404 page not found" ]] && fail "Unable to communicate with Hydra; specify URL via HYDRA_URL environment variable" +} + +function createFile() { + filename=$1 + uid=$2 + gid=$3 + + mkdir -p $(dirname "$filename") + truncate -s 0 "$filename" + chmod 600 "$filename" + chown "${uid}:${gid}" "$filename" +} + +function ensureRoleFileExists() { + if [[ ! -f "$socRolesFile" || ! -s "$socRolesFile" ]]; then + # Generate the new roles file + rolesTmpFile="${socRolesFile}.tmp" + createFile "$rolesTmpFile" "$soUID" "$soGID" + + if [[ -d "$socRolesFile" ]]; then + echo "Removing invalid roles directory created by Docker" + rm -fr "$socRolesFile" + fi + mv "${rolesTmpFile}" "${socRolesFile}" + fi +} + +function listClients() { + response=$(curl -Ss -L ${hydraUrl}/admin/clients) + [[ $? != 0 ]] && fail "Unable to communicate with Hydra" + + clientIds=$(echo "${response}" | jq -r ".[] | .client_id" | sort) + for clientId in $clientIds; do + roles=$(grep ":$clientId\$" "$socRolesFile" | cut -d: -f1 | tr '\n' ' ') + echo "$clientId: $roles" + done +} + +function addClientRole() { + id=$1 + role=$2 + + adjustClientRole "$id" "$role" "add" +} + +function deleteClientRole() { + id=$1 + role=$2 + + adjustClientRole "$id" "$role" "del" +} + +function adjustClientRole() { + identityId=$1 + role=$2 + op=$3 + + [[ ${identityId} == "" ]] && fail "Client not found" + + ensureRoleFileExists + + filename="$socRolesFile" + hasRole=0 + grep "^$role:" "$socRolesFile" | grep -q "$identityId" && hasRole=1 + if [[ "$op" == "add" ]]; then + if [[ "$hasRole" == "1" ]]; then + echo "Client '$identityId' already has the role: $role" + return 1 + else + echo "$role:$identityId" >> "$filename" + fi + elif [[ "$op" == "del" ]]; then + if [[ "$hasRole" -ne 1 ]]; then + fail "Client '$identityId' does not have the role: $role" + else + sed "/^$role:$identityId\$/d" "$filename" > "$filename.tmp" + cat "$filename".tmp > "$filename" + rm -f "$filename".tmp + fi + else + fail "Unsupported role adjustment operation: $op" + fi + return 0 +} + +function convertNameToId() { + name=$1 + + name=${name//[^[:alnum:]]/_} + echo "$name" | tr '[:upper:]' '[:lower:]' +} + +function createClient() { + name=$1 + role=$2 + note=$3 + + id=$(convertNameToId "$name") + now=$(date -u +%FT%TZ) + body=$(cat < "$rolesTmpFile" + cat "$rolesTmpFile" > "$socRolesFile" +} + +case "${operation}" in + "add") + verifyEnvironment + [[ "$name" == "" ]] && fail "A short client name must be provided" + + lock + createClient "$name" "${role:-$DEFAULT_ROLE}" "${note}" + echo "Successfully added new client to SOC. Run 'so-user sync' to sync with Elasticsearch." + ;; + + "list") + verifyEnvironment + listClients + ;; + + "addrole") + verifyEnvironment + [[ "$id" == "" ]] && fail "Id must be provided" + [[ "$role" == "" ]] && fail "Role must be provided" + + lock + if addClientRole "$email" "$role"; then + echo "Successfully added role to client" + fi + ;; + + "delrole") + verifyEnvironment + [[ "$id" == "" ]] && fail "Id must be provided" + [[ "$role" == "" ]] && fail "Role must be provided" + + lock + deleteClientRole "$email" "$role" + echo "Successfully removed role from client" + ;; + + "generate-secret") + verifyEnvironment + [[ "$id" == "" ]] && fail "Id must be provided" + + lock + generateSecret "$id" + echo "Successfully generated secret" + ;; + + "delete") + verifyEnvironment + [[ "$id" == "" ]] && fail "Id must be provided" + + lock + deleteClient "$email" + echo "Successfully deleted client. Run 'so-user sync' to sync with Elasticsearch." + ;; + *) + fail "Unsupported operation: $operation" + usage + ;; +esac + +exit 0 diff --git a/salt/soc/enabled.sls b/salt/soc/enabled.sls index d1582721d..32437bd99 100644 --- a/salt/soc/enabled.sls +++ b/salt/soc/enabled.sls @@ -83,7 +83,7 @@ so-soc: - file: soccustom - file: soccustomroles - file: socusersroles - - file: socclientroles + - file: socclientsroles delete_so-soc_so-status.disabled: file.uncomment: From d9273ec369773d3a1d722ffd355932a938d52aa0 Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Thu, 24 Oct 2024 09:40:47 -0400 Subject: [PATCH 103/175] exec bit --- salt/manager/tools/sbin/so-client | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 salt/manager/tools/sbin/so-client diff --git a/salt/manager/tools/sbin/so-client b/salt/manager/tools/sbin/so-client old mode 100644 new mode 100755 From ca793966a8a9767981e945615e406609aa870eb1 Mon Sep 17 00:00:00 2001 From: m0duspwnens Date: Thu, 24 Oct 2024 10:32:42 -0400 Subject: [PATCH 104/175] set retry and interval to remove state warning --- salt/elasticfleet/enabled.sls | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/salt/elasticfleet/enabled.sls b/salt/elasticfleet/enabled.sls index 51d2d1430..f91074b39 100644 --- a/salt/elasticfleet/enabled.sls +++ b/salt/elasticfleet/enabled.sls @@ -143,7 +143,9 @@ so-elastic-fleet-integrations: so-elastic-agent-grid-upgrade: cmd.run: - name: /usr/sbin/so-elastic-agent-grid-upgrade - - retry: True + - retry: + attempts: 12 + interval: 5 so-elastic-fleet-integration-upgrade: cmd.run: From a0558ace16e3bcb5b94cb7c6b60a35d7051a04a1 Mon Sep 17 00:00:00 2001 From: m0duspwnens Date: Thu, 24 Oct 2024 10:33:16 -0400 Subject: [PATCH 105/175] replace: False to remove state warning --- salt/common/init.sls | 1 + salt/strelka/filestream/config.sls | 2 ++ 2 files changed, 3 insertions(+) diff --git a/salt/common/init.sls b/salt/common/init.sls index 8dd727f72..f385bd96d 100644 --- a/salt/common/init.sls +++ b/salt/common/init.sls @@ -182,6 +182,7 @@ sostatus_log: file.managed: - name: /opt/so/log/sostatus/status.log - mode: 644 + - replace: False # Install sostatus check cron. This is used to populate Grid. so-status_check_cron: diff --git a/salt/strelka/filestream/config.sls b/salt/strelka/filestream/config.sls index 0f9f38914..2809bd8b1 100644 --- a/salt/strelka/filestream/config.sls +++ b/salt/strelka/filestream/config.sls @@ -99,12 +99,14 @@ filecheck.log: - name: /opt/so/log/strelka/filecheck.log - user: {{ filecheck_runas }} - group: {{ filecheck_runas }} + - replace: False filecheck_stdout.log: file.managed: - name: /opt/so/log/strelka/filecheck_stdout.log - user: {{ filecheck_runas }} - group: {{ filecheck_runas }} + - replace: False {% if GLOBALS.md_engine == 'ZEEK' %} From cbb4d6846f98e4664fa704c980691db06f7f1ac8 Mon Sep 17 00:00:00 2001 From: Corey Ogburn Date: Tue, 8 Oct 2024 14:52:49 -0600 Subject: [PATCH 106/175] Detection Engine Status Queries A few for testing --- salt/soc/defaults.yaml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/salt/soc/defaults.yaml b/salt/soc/defaults.yaml index 00c45e5c5..bcdccf9ca 100644 --- a/salt/soc/defaults.yaml +++ b/salt/soc/defaults.yaml @@ -1447,6 +1447,13 @@ soc: casesEnabled: true detectionsEnabled: true inactiveTools: ['toolUnused'] + detectionEngineStatusQueries: + - suricata: + IntegrityFailure: 'tags:so-soc AND soc.fields.error: "integrity check failed; discrepancies found" AND soc.fields.detectionEngine:"suricata"' + - elastalert: + IntegrityFailure: 'tags:so-soc AND soc.fields.error: "integrity check failed; discrepancies found" AND soc.fields.detectionEngine:"elastalert"' + - strelka: + IntegrityFailure: 'tags:so-soc AND soc.fields.error: "integrity check failed; discrepancies found" AND soc.fields.detectionEngine:"strelka"' tools: - name: toolKibana description: toolKibanaHelp From 04ebe4efeacc8535add8b8cb0c8a49b49a6c49c3 Mon Sep 17 00:00:00 2001 From: Corey Ogburn Date: Tue, 8 Oct 2024 14:59:15 -0600 Subject: [PATCH 107/175] Array to Dictionary --- salt/soc/defaults.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/salt/soc/defaults.yaml b/salt/soc/defaults.yaml index bcdccf9ca..e0a5206bc 100644 --- a/salt/soc/defaults.yaml +++ b/salt/soc/defaults.yaml @@ -1448,11 +1448,11 @@ soc: detectionsEnabled: true inactiveTools: ['toolUnused'] detectionEngineStatusQueries: - - suricata: + suricata: IntegrityFailure: 'tags:so-soc AND soc.fields.error: "integrity check failed; discrepancies found" AND soc.fields.detectionEngine:"suricata"' - - elastalert: + elastalert: IntegrityFailure: 'tags:so-soc AND soc.fields.error: "integrity check failed; discrepancies found" AND soc.fields.detectionEngine:"elastalert"' - - strelka: + strelka: IntegrityFailure: 'tags:so-soc AND soc.fields.error: "integrity check failed; discrepancies found" AND soc.fields.detectionEngine:"strelka"' tools: - name: toolKibana From c77b0afd8e4c2c524461b778a64b6c9919709613 Mon Sep 17 00:00:00 2001 From: Corey Ogburn Date: Wed, 9 Oct 2024 08:40:54 -0600 Subject: [PATCH 108/175] Move to Client/Detections Added a basic annotation. --- salt/soc/defaults.yaml | 14 +++++++------- salt/soc/soc_soc.yaml | 7 ++++++- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/salt/soc/defaults.yaml b/salt/soc/defaults.yaml index e0a5206bc..d96e41a70 100644 --- a/salt/soc/defaults.yaml +++ b/salt/soc/defaults.yaml @@ -1447,13 +1447,6 @@ soc: casesEnabled: true detectionsEnabled: true inactiveTools: ['toolUnused'] - detectionEngineStatusQueries: - suricata: - IntegrityFailure: 'tags:so-soc AND soc.fields.error: "integrity check failed; discrepancies found" AND soc.fields.detectionEngine:"suricata"' - elastalert: - IntegrityFailure: 'tags:so-soc AND soc.fields.error: "integrity check failed; discrepancies found" AND soc.fields.detectionEngine:"elastalert"' - strelka: - IntegrityFailure: 'tags:so-soc AND soc.fields.error: "integrity check failed; discrepancies found" AND soc.fields.detectionEngine:"strelka"' tools: - name: toolKibana description: toolKibanaHelp @@ -2270,6 +2263,13 @@ soc: - name: "Detections with Overrides" query: "_exists_:so_detection.overrides | groupby so_detection.language | groupby so_detection.ruleset so_detection.isEnabled" description: Show Detections that have Overrides + detectionEngineStatusQueries: + suricata: + IntegrityFailure: 'tags:so-soc AND soc.fields.error: "integrity check failed; discrepancies found" AND soc.fields.detectionEngine:"suricata"' + elastalert: + IntegrityFailure: 'tags:so-soc AND soc.fields.error: "integrity check failed; discrepancies found" AND soc.fields.detectionEngine:"elastalert"' + strelka: + IntegrityFailure: 'tags:so-soc AND soc.fields.error: "integrity check failed; discrepancies found" AND soc.fields.detectionEngine:"strelka"' detection: showUnreviewedAiSummaries: false presets: diff --git a/salt/soc/soc_soc.yaml b/salt/soc/soc_soc.yaml index af4668fc2..06f562a6a 100644 --- a/salt/soc/soc_soc.yaml +++ b/salt/soc/soc_soc.yaml @@ -461,7 +461,12 @@ soc: alerts: *appSettings cases: *appSettings dashboards: *appSettings - detections: *appSettings + detections: + <<: *appSettings + detectionEngineStatusQueries: + description: Queries mapped to the detection engine status. + global: True + forcedType: "{}" detection: showUnreviewedAiSummaries: description: Show AI summaries in detections even if they have not yet been reviewed by a human. From ad0b0a5e95e06ae4a74f95db81ce3ab98782ec6c Mon Sep 17 00:00:00 2001 From: Corey Ogburn Date: Wed, 9 Oct 2024 12:54:55 -0600 Subject: [PATCH 109/175] Refactor to String To accomodate the config screen, the annotation now specifies it as a multiline string with a yaml syntax. The user can edit the yaml to add or remove queries. The UI will parse the YAML before use. Also updated the IntegrityFailure queries to specify table columns more relevant to a sync failure than the default ones. --- salt/soc/defaults.yaml | 9 +++++---- salt/soc/soc_soc.yaml | 6 ++++-- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/salt/soc/defaults.yaml b/salt/soc/defaults.yaml index d96e41a70..fe131ca58 100644 --- a/salt/soc/defaults.yaml +++ b/salt/soc/defaults.yaml @@ -2263,13 +2263,14 @@ soc: - name: "Detections with Overrides" query: "_exists_:so_detection.overrides | groupby so_detection.language | groupby so_detection.ruleset so_detection.isEnabled" description: Show Detections that have Overrides - detectionEngineStatusQueries: + detectionEngineStatusQueries: | suricata: - IntegrityFailure: 'tags:so-soc AND soc.fields.error: "integrity check failed; discrepancies found" AND soc.fields.detectionEngine:"suricata"' + default: + IntegrityFailure: 'event.action: "integrity check failed" AND soc.fields.detectionEngine:"suricata" | table event.dataset soc.fields.deployedButNotEnabledCount soc.fields.enabledButNotDeployedCount soc.fields.syncId' elastalert: - IntegrityFailure: 'tags:so-soc AND soc.fields.error: "integrity check failed; discrepancies found" AND soc.fields.detectionEngine:"elastalert"' + IntegrityFailure: 'event.action: "integrity check failed" AND soc.fields.detectionEngine:"elastalert" | table event.dataset soc.fields.deployedButNotEnabledCount soc.fields.enabledButNotDeployedCount soc.fields.syncId' strelka: - IntegrityFailure: 'tags:so-soc AND soc.fields.error: "integrity check failed; discrepancies found" AND soc.fields.detectionEngine:"strelka"' + IntegrityFailure: 'event.action: "integrity check failed" AND soc.fields.detectionEngine:"strelka" | table event.dataset soc.fields.deployedButNotEnabledCount soc.fields.enabledButNotDeployedCount soc.fields.syncId' detection: showUnreviewedAiSummaries: false presets: diff --git a/salt/soc/soc_soc.yaml b/salt/soc/soc_soc.yaml index 06f562a6a..14296dade 100644 --- a/salt/soc/soc_soc.yaml +++ b/salt/soc/soc_soc.yaml @@ -464,9 +464,11 @@ soc: detections: <<: *appSettings detectionEngineStatusQueries: - description: Queries mapped to the detection engine status. + description: Queries mapped to the detection engine statuses. Acceptable statuses are "Migrating", "Importing", "MigrationFailure", "IntegrityFailure", "SyncFailure", "ImportPending", "Syncing", and "Healthy" and will fallback to a "default" entry if specified. global: True - forcedType: "{}" + syntax: yaml + multiline: True + forcedType: "string" detection: showUnreviewedAiSummaries: description: Show AI summaries in detections even if they have not yet been reviewed by a human. From b7c392a2443538484bce8afb5d7ab862385a7a2c Mon Sep 17 00:00:00 2001 From: Corey Ogburn Date: Wed, 9 Oct 2024 14:26:03 -0600 Subject: [PATCH 110/175] Corrected a misspelling --- salt/soc/defaults.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/salt/soc/defaults.yaml b/salt/soc/defaults.yaml index fe131ca58..a9ab09e47 100644 --- a/salt/soc/defaults.yaml +++ b/salt/soc/defaults.yaml @@ -2244,7 +2244,7 @@ soc: description: Show all custom detections - name: "All Detections - Enabled" query: "so_detection.isEnabled:true | groupby so_detection.language | groupby so_detection.ruleset so_detection.severity" - description: Show all enalbed Detections + description: Show all enabled Detections - name: "All Detections - Disabled" query: "so_detection.isEnabled:false | groupby so_detection.language | groupby so_detection.ruleset so_detection.severity" description: Show all disabled Detections From f67fcecc6e2f539fddbbddedc5b090cd75ce2168 Mon Sep 17 00:00:00 2001 From: Corey Ogburn Date: Mon, 21 Oct 2024 09:47:58 -0600 Subject: [PATCH 111/175] Clean up StatusQueries String --- salt/soc/defaults.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/salt/soc/defaults.yaml b/salt/soc/defaults.yaml index a9ab09e47..00468e7a0 100644 --- a/salt/soc/defaults.yaml +++ b/salt/soc/defaults.yaml @@ -2265,7 +2265,6 @@ soc: description: Show Detections that have Overrides detectionEngineStatusQueries: | suricata: - default: IntegrityFailure: 'event.action: "integrity check failed" AND soc.fields.detectionEngine:"suricata" | table event.dataset soc.fields.deployedButNotEnabledCount soc.fields.enabledButNotDeployedCount soc.fields.syncId' elastalert: IntegrityFailure: 'event.action: "integrity check failed" AND soc.fields.detectionEngine:"elastalert" | table event.dataset soc.fields.deployedButNotEnabledCount soc.fields.enabledButNotDeployedCount soc.fields.syncId' From 6ce52bf9aba7946f5022640100b44397fa5cfa23 Mon Sep 17 00:00:00 2001 From: Corey Ogburn Date: Thu, 24 Oct 2024 13:11:49 -0600 Subject: [PATCH 112/175] Specify Defaults for detectionEngineStatusQueries Specify the defaults as an example to the user. --- salt/soc/defaults.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/salt/soc/defaults.yaml b/salt/soc/defaults.yaml index 00468e7a0..6a9a1bfc6 100644 --- a/salt/soc/defaults.yaml +++ b/salt/soc/defaults.yaml @@ -2265,10 +2265,13 @@ soc: description: Show Detections that have Overrides detectionEngineStatusQueries: | suricata: + default: 'tags:so-soc AND suricata | groupby log.level | groupby event.action | groupby soc.fields.error' IntegrityFailure: 'event.action: "integrity check failed" AND soc.fields.detectionEngine:"suricata" | table event.dataset soc.fields.deployedButNotEnabledCount soc.fields.enabledButNotDeployedCount soc.fields.syncId' elastalert: + default: 'tags:so-soc AND elastalert | groupby log.level | groupby event.action | groupby soc.fields.error' IntegrityFailure: 'event.action: "integrity check failed" AND soc.fields.detectionEngine:"elastalert" | table event.dataset soc.fields.deployedButNotEnabledCount soc.fields.enabledButNotDeployedCount soc.fields.syncId' strelka: + default: 'tags:so-soc AND strelka | groupby log.level | groupby event.action | groupby soc.fields.error' IntegrityFailure: 'event.action: "integrity check failed" AND soc.fields.detectionEngine:"strelka" | table event.dataset soc.fields.deployedButNotEnabledCount soc.fields.enabledButNotDeployedCount soc.fields.syncId' detection: showUnreviewedAiSummaries: false From d503c09ef2791fa9f2b0ed9aa7aa876ec8560428 Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Thu, 24 Oct 2024 15:45:18 -0400 Subject: [PATCH 113/175] connect --- salt/manager/tools/sbin/so-client | 54 ++++++++++++++++++------------- salt/nginx/etc/nginx.conf | 6 ++-- 2 files changed, 35 insertions(+), 25 deletions(-) diff --git a/salt/manager/tools/sbin/so-client b/salt/manager/tools/sbin/so-client index 04e540465..4177e84b0 100755 --- a/salt/manager/tools/sbin/so-client +++ b/salt/manager/tools/sbin/so-client @@ -87,7 +87,7 @@ while [[ $# -gt 0 ]]; do esac done -hydraUrl=${HYDRA_URL:-http://127.0.0.1:4445/admin} +hydraUrl=${HYDRA_URL:-http://127.0.0.1:4445} socRolesFile=${SOC_ROLES_FILE:-/opt/so/conf/soc/soc_clients_roles} soUID=${SOCORE_UID:-939} soGID=${SOCORE_GID:-939} @@ -116,7 +116,7 @@ function verifyEnvironment() { require "jq" require "curl" response=$(curl -Ss -L ${hydraUrl}/) - [[ "$response" != "404 page not found" ]] && fail "Unable to communicate with Hydra; specify URL via HYDRA_URL environment variable" + [[ "$response" != *"Error 404"* ]] && fail "Unable to communicate with Hydra; specify URL via HYDRA_URL environment variable" } function createFile() { @@ -145,7 +145,7 @@ function ensureRoleFileExists() { } function listClients() { - response=$(curl -Ss -L ${hydraUrl}/admin/clients) + response=$(curl -Ss -L -f ${hydraUrl}/admin/clients) [[ $? != 0 ]] && fail "Unable to communicate with Hydra" clientIds=$(echo "${response}" | jq -r ".[] | .client_id" | sort) @@ -192,7 +192,7 @@ function adjustClientRole() { if [[ "$hasRole" -ne 1 ]]; then fail "Client '$identityId' does not have the role: $role" else - sed "/^$role:$identityId\$/d" "$filename" > "$filename.tmp" + sed -e "\!^$role:$identityId\$!d" "$filename" > "$filename.tmp" cat "$filename".tmp > "$filename" rm -f "$filename".tmp fi @@ -206,7 +206,7 @@ function convertNameToId() { name=$1 name=${name//[^[:alnum:]]/_} - echo "$name" | tr '[:upper:]' '[:lower:]' + echo "socl_$name" | tr '[:upper:]' '[:lower:]' } function createClient() { @@ -216,11 +216,15 @@ function createClient() { id=$(convertNameToId "$name") now=$(date -u +%FT%TZ) + secret=$(get_random_value) body=$(cat < Date: Fri, 4 Oct 2024 14:22:27 -0600 Subject: [PATCH 114/175] Added Note to ES Mappings --- .../templates/component/so/detection-mappings.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/salt/elasticsearch/templates/component/so/detection-mappings.json b/salt/elasticsearch/templates/component/so/detection-mappings.json index 5e51b872b..51e13c829 100644 --- a/salt/elasticsearch/templates/component/so/detection-mappings.json +++ b/salt/elasticsearch/templates/component/so/detection-mappings.json @@ -142,6 +142,9 @@ "userId": { "ignore_above": 1024, "type": "keyword" + }, + "note": { + "type": "text" } } } From 1aa9d87c5db266bb89d79e2256d621047195e7d9 Mon Sep 17 00:00:00 2001 From: Corey Ogburn Date: Tue, 8 Oct 2024 09:57:52 -0600 Subject: [PATCH 115/175] Corrected Put the note on the right model this time. --- .../templates/component/so/detection-mappings.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/salt/elasticsearch/templates/component/so/detection-mappings.json b/salt/elasticsearch/templates/component/so/detection-mappings.json index 51e13c829..9f992f971 100644 --- a/salt/elasticsearch/templates/component/so/detection-mappings.json +++ b/salt/elasticsearch/templates/component/so/detection-mappings.json @@ -97,6 +97,9 @@ "updatedAt": { "type": "date" }, + "note": { + "type": "text" + }, "regex": { "type": "text" }, @@ -143,9 +146,6 @@ "ignore_above": 1024, "type": "keyword" }, - "note": { - "type": "text" - } } } } From 640f53d0857dfffb66db0e8d243e014347c32c4b Mon Sep 17 00:00:00 2001 From: Corey Ogburn Date: Tue, 8 Oct 2024 10:15:29 -0600 Subject: [PATCH 116/175] Cleanup Fix indentation and trailing comma. --- .../templates/component/so/detection-mappings.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/salt/elasticsearch/templates/component/so/detection-mappings.json b/salt/elasticsearch/templates/component/so/detection-mappings.json index 9f992f971..2e405912d 100644 --- a/salt/elasticsearch/templates/component/so/detection-mappings.json +++ b/salt/elasticsearch/templates/component/so/detection-mappings.json @@ -21,10 +21,10 @@ "properties": { "publicId": { "ignore_above": 1024, - "type": "keyword" + "type": "keyword" }, "title": { - "ignore_above": 1024, + "ignore_above": 1024, "type": "keyword" }, "severity": { @@ -38,15 +38,15 @@ "description": { "type": "text" }, - "category": { + "category": { "ignore_above": 1024, "type": "keyword" }, - "product": { + "product": { "ignore_above": 1024, "type": "keyword" }, - "service": { + "service": { "ignore_above": 1024, "type": "keyword" }, @@ -64,7 +64,7 @@ }, "tags": { "ignore_above": 1024, - "type": "keyword" + "type": "keyword" }, "ruleset": { "ignore_above": 1024, @@ -145,7 +145,7 @@ "userId": { "ignore_above": 1024, "type": "keyword" - }, + } } } } From f3ca5b1c4248f29422a87e00adbcd781b447bc29 Mon Sep 17 00:00:00 2001 From: defensivedepth Date: Mon, 28 Oct 2024 09:19:51 -0400 Subject: [PATCH 117/175] Remove OS-specific mappings --- salt/soc/files/soc/sigma_so_pipeline.yaml | 58 +++-------------------- 1 file changed, 6 insertions(+), 52 deletions(-) diff --git a/salt/soc/files/soc/sigma_so_pipeline.yaml b/salt/soc/files/soc/sigma_so_pipeline.yaml index 121bc06a6..df8b2709a 100644 --- a/salt/soc/files/soc/sigma_so_pipeline.yaml +++ b/salt/soc/files/soc/sigma_so_pipeline.yaml @@ -106,69 +106,23 @@ transformations: - type: include_fields fields: - event.code - # Maps Windows + process_creation rules to endpoint process creation logs + # Maps process_creation rules to endpoint process creation logs + # This is an OS-agnostic mapping, to account for logs that don't specify source OS - id: endpoint_process_create_windows_add-fields type: add_condition conditions: event.category: 'process' event.type: 'start' - host.os.type: 'windows' rule_conditions: - type: logsource category: process_creation - product: windows - # Maps Linux + file_event rules to endpoint file creation logs - - id: endpoint_process_create_linux_add-fields - type: add_condition - conditions: - event.category: 'process' - event.type: 'start' - host.os.type: 'linux' - rule_conditions: - - type: logsource - category: process_creation - product: linux - # Maps macOS + file_event rules to endpoint file creation logs - - id: endpoint_process_create_macos_add-fields - type: add_condition - conditions: - event.category: 'process' - event.type: 'start' - host.os.type: 'macos' - rule_conditions: - - type: logsource - category: process_creation - product: macos - # Maps Windows + file_event rules to endpoint file creation logs - - id: endpoint_file_create_windows_add-fields + # Maps file_event rules to endpoint file creation logs + # This is an OS-agnostic mapping, to account for logs that don't specify source OS + - id: endpoint_file_create_add-fields type: add_condition conditions: event.category: 'file' event.type: 'creation' - host.os.type: 'windows' rule_conditions: - type: logsource - category: file_event - product: windows - # Maps Linux + file_event rules to endpoint file creation logs - - id: endpoint_file_create_linux_add-fields - type: add_condition - conditions: - event.category: 'file' - event.type: 'creation' - host.os.type: 'linux' - rule_conditions: - - type: logsource - category: file_event - product: linux - # Maps macOS + file_event rules to endpoint file creation logs - - id: endpoint_file_create_macos_add-fields - type: add_condition - conditions: - event.category: 'file' - event.type: 'creation' - host.os.type: 'macos' - rule_conditions: - - type: logsource - category: file_event - product: macos \ No newline at end of file + category: file_event \ No newline at end of file From 12a76a9d35407ec0bf5c28353dbad3dd86ddb4cf Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Mon, 28 Oct 2024 19:11:26 -0400 Subject: [PATCH 118/175] connect --- salt/manager/tools/sbin/so-client | 47 +++++++++++++++++++++++++++++++ salt/soc/files/bin/salt-relay.sh | 6 ++-- 2 files changed, 50 insertions(+), 3 deletions(-) diff --git a/salt/manager/tools/sbin/so-client b/salt/manager/tools/sbin/so-client index 4177e84b0..944214dd5 100755 --- a/salt/manager/tools/sbin/so-client +++ b/salt/manager/tools/sbin/so-client @@ -42,6 +42,12 @@ function usage() { Required parameters: --id --role + + update: Updates a client name and note. + Required parameters: + --id + --name + --note generate-secret: Regenerates a client's secret and outputs the new secret. Required parameters: @@ -240,6 +246,36 @@ EOF addClientRole "$id" "$role" } +function update() { + clientId=$1 + name=$2 + note=$3 + + body=$(cat < Date: Mon, 28 Oct 2024 19:25:20 -0400 Subject: [PATCH 119/175] connect --- salt/soc/files/bin/salt-relay.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/salt/soc/files/bin/salt-relay.sh b/salt/soc/files/bin/salt-relay.sh index e803a613f..6a6164d31 100755 --- a/salt/soc/files/bin/salt-relay.sh +++ b/salt/soc/files/bin/salt-relay.sh @@ -395,6 +395,9 @@ while true; do list-minions) list_minions "$id" ;; + manage-client) + manage_client "$id" "${request}" + ;; manage-minion) manage_minion "$id" "${request}" ;; From 1243c7588b8d8bc7d0574811bda34240ed78db75 Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Mon, 28 Oct 2024 19:42:01 -0400 Subject: [PATCH 120/175] connect --- salt/soc/files/bin/salt-relay.sh | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/salt/soc/files/bin/salt-relay.sh b/salt/soc/files/bin/salt-relay.sh index 6a6164d31..8186e7941 100755 --- a/salt/soc/files/bin/salt-relay.sh +++ b/salt/soc/files/bin/salt-relay.sh @@ -175,31 +175,31 @@ function manage_client() { exit_code=$? ;; delete) - id=$(echo "$request" | jq -r .id) - log "Performing client '$op' for client '$id'" - response=$(so-client "$op" --id "$id") + client_id=$(echo "$request" | jq -r .id) + log "Performing client '$op' for client '$client_id'" + response=$(so-client "$op" --id "$client_id") exit_code=$? ;; addrole|delrole) - id=$(echo "$request" | jq -r .id) + client_id=$(echo "$request" | jq -r .id) role=$(echo "$request" | jq -r .role) - log "Performing '$op' for client '$id' with role '$role'" - response=$(so-client "$op" --id "$id" --role "$role") + log "Performing '$op' for client '$client_id' with role '$role'" + response=$(so-client "$op" --id "$client_id" --role "$role") exit_code=$? ;; generate-secret) - id=$(echo "$request" | jq -r .id) - log "Performing '$op' operation for client '$id'" - response=$(so-client "$op" --id "$id") + client_id=$(echo "$request" | jq -r .id) + log "Performing '$op' operation for client '$client_id'" + response=$(so-client "$op" --id "$client_id") webResponse=$response exit_code=$? ;; update) - id=$(echo "$request" | jq -r .id) + client_id=$(echo "$request" | jq -r .id) name=$(echo "$request" | jq -r .name) note=$(echo "$request" | jq -r .note) - log "Performing '$op' update for client '$id' with name '$name', and note '$note'" - response=$(so-client "$op" --id "$id" --name "$name" --note "$note") + log "Performing '$op' update for client '$client_id' with name '$name', and note '$note'" + response=$(so-client "$op" --id "$client_id" --name "$name" --note "$note") exit_code=$? ;; sync) From 4c5099d42980b26465ea231f5ab8ad2c549bfbc0 Mon Sep 17 00:00:00 2001 From: defensivedepth Date: Tue, 29 Oct 2024 10:27:54 -0400 Subject: [PATCH 121/175] Initial support for local lookup --- salt/elasticfleet/config.sls | 8 +++ .../grid-nodes_general/so-ip-mappings.json | 35 ++++++++++ .../so/9805_output_elastic_agent.conf.jinja | 67 ++++++++++++------- 3 files changed, 84 insertions(+), 26 deletions(-) create mode 100644 salt/elasticfleet/files/integrations/grid-nodes_general/so-ip-mappings.json diff --git a/salt/elasticfleet/config.sls b/salt/elasticfleet/config.sls index 71bc369c6..1dcc45896 100644 --- a/salt/elasticfleet/config.sls +++ b/salt/elasticfleet/config.sls @@ -63,6 +63,14 @@ eastatedir: - group: 939 - makedirs: True +custommappingsdir: + file.directory: + - name: /nsm/custom-mappings + - user: 947 + - group: 939 + - makedirs: True + + eapackageupgrade: file.managed: - name: /usr/sbin/so-elastic-fleet-package-upgrade diff --git a/salt/elasticfleet/files/integrations/grid-nodes_general/so-ip-mappings.json b/salt/elasticfleet/files/integrations/grid-nodes_general/so-ip-mappings.json new file mode 100644 index 000000000..fdcd36815 --- /dev/null +++ b/salt/elasticfleet/files/integrations/grid-nodes_general/so-ip-mappings.json @@ -0,0 +1,35 @@ +{ + "package": { + "name": "log", + "version": "" + }, + "name": "so-ip-mappings", + "namespace": "so", + "description": "IP Description mappings", + "policy_id": "so-grid-nodes_general", + "vars": {}, + "inputs": { + "logs-logfile": { + "enabled": true, + "streams": { + "log.logs": { + "enabled": true, + "vars": { + "paths": [ + "/nsm/custom-mappings/ip-descriptions.csv" + ], + "data_stream.dataset": "hostnamemappings", + "tags": [ + "so-ip-mappings" + ], + "processors": "- decode_csv_fields:\n fields:\n message: decoded.csv\n separator: \",\"\n ignore_missing: false\n overwrite_keys: true\n trim_leading_space: true\n fail_on_error: true\n\n- extract_array:\n field: decoded.csv\n mappings:\n so.ip_address: '0'\n so.description: '1'\n\n- script:\n lang: javascript\n source: >\n function process(event) {\n var ip = event.Get('so.ip_address');\n var validIpRegex = /^((25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]?\\d)\\.){3}(25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]?\\d)$/\n if (!validIpRegex.test(ip)) {\n event.Cancel();\n }\n }\n- fingerprint:\n fields: [\"so.ip_address\"]\n target_field: \"@metadata._id\"\n", + "custom": "" + } + } + } + } + }, + "force": true +} + + diff --git a/salt/logstash/pipelines/config/so/9805_output_elastic_agent.conf.jinja b/salt/logstash/pipelines/config/so/9805_output_elastic_agent.conf.jinja index 3a86cd8be..be7ec6898 100644 --- a/salt/logstash/pipelines/config/so/9805_output_elastic_agent.conf.jinja +++ b/salt/logstash/pipelines/config/so/9805_output_elastic_agent.conf.jinja @@ -1,18 +1,45 @@ output { - if "elastic-agent" in [tags] { - if [metadata][pipeline] { - if [metadata][_id] { - elasticsearch { - hosts => "{{ GLOBALS.hostname }}" - ecs_compatibility => v8 - data_stream => true - user => "{{ ES_USER }}" - password => "{{ ES_PASS }}" - document_id => "%{[metadata][_id]}" - pipeline => "%{[metadata][pipeline]}" - silence_errors_in_log => ["version_conflict_engine_exception"] - ssl => true - ssl_certificate_verification => false + if "elastic-agent" in [tags] and "so-ip-mappings" in [tags] { + elasticsearch { + hosts => "{{ GLOBALS.hostname }}" + data_stream => false + user => "{{ ES_USER }}" + password => "{{ ES_PASS }}" + document_id => "%{[metadata][_id]}" + index => "so-ip-mappings" + silence_errors_in_log => ["version_conflict_engine_exception"] + ssl => true + ssl_certificate_verification => false + } + } + else { + if "elastic-agent" in [tags] { + if [metadata][pipeline] { + if [metadata][_id] { + elasticsearch { + hosts => "{{ GLOBALS.hostname }}" + ecs_compatibility => v8 + data_stream => true + user => "{{ ES_USER }}" + password => "{{ ES_PASS }}" + document_id => "%{[metadata][_id]}" + pipeline => "%{[metadata][pipeline]}" + silence_errors_in_log => ["version_conflict_engine_exception"] + ssl => true + ssl_certificate_verification => false + } + } + else { + elasticsearch { + hosts => "{{ GLOBALS.hostname }}" + ecs_compatibility => v8 + data_stream => true + user => "{{ ES_USER }}" + password => "{{ ES_PASS }}" + pipeline => "%{[metadata][pipeline]}" + ssl => true + ssl_certificate_verification => false + } } } else { @@ -22,22 +49,10 @@ output { data_stream => true user => "{{ ES_USER }}" password => "{{ ES_PASS }}" - pipeline => "%{[metadata][pipeline]}" ssl => true ssl_certificate_verification => false } } } - else { - elasticsearch { - hosts => "{{ GLOBALS.hostname }}" - ecs_compatibility => v8 - data_stream => true - user => "{{ ES_USER }}" - password => "{{ ES_PASS }}" - ssl => true - ssl_certificate_verification => false - } - } } } From 11820a16f0919845d254530129fa90ee32bf9082 Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Tue, 29 Oct 2024 12:04:38 -0400 Subject: [PATCH 122/175] connect --- salt/manager/tools/sbin/so-client | 18 +++++++++++++++--- salt/soc/files/bin/salt-relay.sh | 4 ++-- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/salt/manager/tools/sbin/so-client b/salt/manager/tools/sbin/so-client index 944214dd5..c1d352328 100755 --- a/salt/manager/tools/sbin/so-client +++ b/salt/manager/tools/sbin/so-client @@ -28,6 +28,7 @@ function usage() { Optional parameters: --role (defaults to $DEFAULT_ROLE) --note (defaults to blank) + --raw only output generated secret delete: Deletes a client from the oauth2 system Required parameters: @@ -53,7 +54,7 @@ function usage() { Required parameters: --id Optional parameters: - --skip-sync (defers the Elastic sync until the next scheduled time) + --raw only output generated secret USAGE_EOF exit 1 @@ -86,6 +87,9 @@ while [[ $# -gt 0 ]]; do note=$1 shift ;; + --raw) + raw=1 + ;; *) echo "Encountered unexpected parameter: $param" usage @@ -322,7 +326,11 @@ case "${operation}" in lock createClient "$name" "${role:-$DEFAULT_ROLE}" "${note}" - echo "Successfully added user and generated secret: $secret" + if [[ "$raw" == "1" ]]; then + echo $secret + else + echo "Successfully added user and generated secret: $secret" + fi ;; "list") @@ -368,7 +376,11 @@ case "${operation}" in lock generateSecret "$id" - echo "Successfully generated secret: $secret" + if [[ "$raw" == "1" ]]; then + echo $secret + else + echo "Successfully generated secret: $secret" + fi ;; "delete") diff --git a/salt/soc/files/bin/salt-relay.sh b/salt/soc/files/bin/salt-relay.sh index 8186e7941..241e33663 100755 --- a/salt/soc/files/bin/salt-relay.sh +++ b/salt/soc/files/bin/salt-relay.sh @@ -170,7 +170,7 @@ function manage_client() { name=$(echo "$request" | jq -r .name) note=$(echo "$request" | jq -r .note) log "Performing client '$op' for client with name '$name', note '$note' and role '$role'" - response=$(so-client "$op" --name "$name" --note "$note" --role "$role" --skip-sync) + response=$(so-client "$op" --name "$name" --note "$note" --role "$role" --raw) webResponse=$resposne exit_code=$? ;; @@ -190,7 +190,7 @@ function manage_client() { generate-secret) client_id=$(echo "$request" | jq -r .id) log "Performing '$op' operation for client '$client_id'" - response=$(so-client "$op" --id "$client_id") + response=$(so-client "$op" --id "$client_id" --raw) webResponse=$response exit_code=$? ;; From 3f3ac21f509e8b2dab72fd61f38eb4cde2c1e5e5 Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Tue, 29 Oct 2024 12:28:24 -0400 Subject: [PATCH 123/175] connect --- salt/soc/files/bin/salt-relay.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/salt/soc/files/bin/salt-relay.sh b/salt/soc/files/bin/salt-relay.sh index 241e33663..bc8ac169f 100755 --- a/salt/soc/files/bin/salt-relay.sh +++ b/salt/soc/files/bin/salt-relay.sh @@ -171,7 +171,7 @@ function manage_client() { note=$(echo "$request" | jq -r .note) log "Performing client '$op' for client with name '$name', note '$note' and role '$role'" response=$(so-client "$op" --name "$name" --note "$note" --role "$role" --raw) - webResponse=$resposne + webResponse=$response exit_code=$? ;; delete) From 5406a263d57c90e10d4d6ee4f07b788ce20b64bd Mon Sep 17 00:00:00 2001 From: defensivedepth Date: Tue, 29 Oct 2024 19:42:06 -0400 Subject: [PATCH 124/175] Add local custom template --- salt/elasticfleet/config.sls | 9 +--- salt/manager/init.sls | 9 ++++ salt/soc/config.sls | 32 +++++++++++++ salt/soc/defaults.yaml | 12 +++++ ...tections_custom_repo_template_readme.jinja | 46 +++++++++++++++++++ 5 files changed, 100 insertions(+), 8 deletions(-) create mode 100644 salt/soc/files/soc/detections_custom_repo_template_readme.jinja diff --git a/salt/elasticfleet/config.sls b/salt/elasticfleet/config.sls index 1dcc45896..208fa2306 100644 --- a/salt/elasticfleet/config.sls +++ b/salt/elasticfleet/config.sls @@ -81,14 +81,7 @@ eapackageupgrade: - template: jinja {% if GLOBALS.role != "so-fleet" %} - -soresourcesrepoconfig: - git.config_set: - - name: safe.directory - - value: /nsm/securityonion-resources - - global: True - - user: socore - + {% if not GLOBALS.airgap %} soresourcesrepoclone: git.latest: diff --git a/salt/manager/init.sls b/salt/manager/init.sls index 96055df24..ca1296383 100644 --- a/salt/manager/init.sls +++ b/salt/manager/init.sls @@ -141,6 +141,15 @@ rules_dir: - group: socore - makedirs: True +git_config_set_safe_dirs: + git.config_set: + - name: safe.directory + - multivar: + - /nsm/rules/custom-local-repos/local-sigma + - /nsm/rules/custom-local-repos/local-yara + - /nsm/securityonion-resources + - /opt/so/conf/soc/ai_summary_repos/securityonion-resources + - global: True {% else %} {{sls}}_state_not_allowed: diff --git a/salt/soc/config.sls b/salt/soc/config.sls index 7607da5ff..52281db74 100644 --- a/salt/soc/config.sls +++ b/salt/soc/config.sls @@ -198,6 +198,38 @@ socsensoronirepos: - mode: 775 - makedirs: True +create_custom_local_yara_repo_template: + git.present: + - name: /nsm/rules/custom-local-repos/local-yara + - bare: False + - force: True + +add_readme_custom_local_yara_repo_template: + file.managed: + - name: /nsm/rules/custom-local-repos/local-yara/README + - source: salt://soc/files/soc/detections_custom_repo_template_readme.jinja + - user: 939 + - group: 939 + - template: jinja + - context: + repo_type: "yara" + +create_custom_local_sigma_repo_template: + git.present: + - name: /nsm/rules/custom-local-repos/local-sigma + - bare: False + - force: True + +add_readme_custom_local_sigma_repo_template: + file.managed: + - name: /nsm/rules/custom-local-repos/local-sigma/README + - source: salt://soc/files/soc/detections_custom_repo_template_readme.jinja + - user: 939 + - group: 939 + - template: jinja + - context: + repo_type: "sigma" + {% else %} {{sls}}_state_not_allowed: diff --git a/salt/soc/defaults.yaml b/salt/soc/defaults.yaml index 6a9a1bfc6..fe4edb12b 100644 --- a/salt/soc/defaults.yaml +++ b/salt/soc/defaults.yaml @@ -1342,11 +1342,17 @@ soc: license: Elastic-2.0 folder: sigma/stable community: true + - repo: file:///nsm/rules/custom-local-repos/local-sigma + license: Elastic-2.0 + community: false airgap: - repo: file:///nsm/rules/detect-sigma/repos/securityonion-resources license: Elastic-2.0 folder: sigma/stable community: true + - repo: file:///nsm/rules/custom-local-repos/local-sigma + license: Elastic-2.0 + community: false sigmaRulePackages: - core - emerging_threats_addon @@ -1412,10 +1418,16 @@ soc: - repo: https://github.com/Security-Onion-Solutions/securityonion-yara license: DRL community: true + - repo: file:///nsm/rules/custom-local-repos/local-yara + license: Elastic-2.0 + community: false airgap: - repo: file:///nsm/rules/detect-yara/repos/securityonion-yara license: DRL community: true + - repo: file:///nsm/rules/custom-local-repos/local-yara + license: Elastic-2.0 + community: false yaraRulesFolder: /opt/sensoroni/yara/rules stateFilePath: /opt/sensoroni/fingerprints/strelkaengine.state integrityCheckFrequencySeconds: 1200 diff --git a/salt/soc/files/soc/detections_custom_repo_template_readme.jinja b/salt/soc/files/soc/detections_custom_repo_template_readme.jinja new file mode 100644 index 000000000..1d391fec0 --- /dev/null +++ b/salt/soc/files/soc/detections_custom_repo_template_readme.jinja @@ -0,0 +1,46 @@ +{% if repo_type == 'yara' %} +# YARA Local Custom Rules Repository + +This folder has already been initialized as a git repo +and your Security Onion grid is configured to import any YARA rule files found here. + +Just add your rule file and commit it. + +For example: + +First, create the rule file; make sure to create the file with a .yar extension +`sudo vi my_custom_rule.yar` + +Next, use git to stage the new rule to be commited: +`sudo git add my_custom_rule.yar` + +Finally, commit it. +If this is your first time making changes to this repo, you will be asked to set some configuration. +`sudo git commit -m "Initial commit of my_custom_rule.yar"` + +The next time the Strelka / YARA engine syncs, the new rule should be imported +If there are errors, review the sync log to troubleshoot further. + +{% elif repo_type == 'sigma' %} +# Sigma Local Custom Rules Repository + +This folder has already been initialized as a git repo +and your Security Onion grid is configured to import any Sigma rule files found here. + +Just add your rule file and commit it. + +For example: + +First, create the rule file; make sure to create the file with a .yaml|.yml extension +`sudo vi my_custom_rule.yml` + +Next, use git to stage the new rule to be commited: +`sudo git add my_custom_rule.yml` + +Finally, commit it. +If this is your first time making changes to this repo, you will be asked to set some configuration. +`sudo git commit -m "Initial commit of my_custom_rule.yml"` + +The next time the Elastalert / Sigma engine syncs, the new rule should be imported +If there are errors, review the sync log to troubleshoot further. +{% endif %} \ No newline at end of file From 36fc3bbd6dd0df4d9ba4110f6269e3605ec8e347 Mon Sep 17 00:00:00 2001 From: reyesj2 <94730068+reyesj2@users.noreply.github.com> Date: Wed, 30 Oct 2024 10:24:11 -0400 Subject: [PATCH 125/175] add so-ip-mappings index Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com> --- salt/elasticsearch/defaults.yaml | 29 +++++++++++++++++++ .../component/so/so-ip-mappings.json | 22 ++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 salt/elasticsearch/templates/component/so/so-ip-mappings.json diff --git a/salt/elasticsearch/defaults.yaml b/salt/elasticsearch/defaults.yaml index f0178728e..c8684e775 100644 --- a/salt/elasticsearch/defaults.yaml +++ b/salt/elasticsearch/defaults.yaml @@ -599,6 +599,35 @@ elasticsearch: set_priority: priority: 50 min_age: 30d + so-ip-mappings: + index_sorting: false + index_template: + composed_of: + - so-ip-mappings + ignore_missing_component_templates: [] + index_patterns: + - so-ip* + priority: 500 + template: + mappings: + date_detection: false + dynamic_templates: + - strings_as_keyword: + mapping: + ignore_above: 1024 + type: keyword + match_mapping_type: string + settings: + index: + mapping: + total_fields: + limit: 1500 + number_of_replicas: 0 + number_of_shards: 1 + refresh_interval: 30s + sort: + field: '@timestamp' + order: desc so-items: index_sorting: false index_template: diff --git a/salt/elasticsearch/templates/component/so/so-ip-mappings.json b/salt/elasticsearch/templates/component/so/so-ip-mappings.json new file mode 100644 index 000000000..ab80e365c --- /dev/null +++ b/salt/elasticsearch/templates/component/so/so-ip-mappings.json @@ -0,0 +1,22 @@ +{ + "_meta": { + "documentation": "https://www.elastic.co/guide/en/ecs/current/ecs-network.html", + "ecs_version": "1.12.2" + }, + "template": { + "mappings": { + "properties": { + "so": { + "properties": { + "ip_address": { + "type": "ip" + }, + "description": { + "type": "text" + } + } + } + } + } + } +} \ No newline at end of file From c509dab5f18d0c2c807197b88f7d7ca0dbdc822c Mon Sep 17 00:00:00 2001 From: defensivedepth Date: Wed, 30 Oct 2024 11:03:14 -0400 Subject: [PATCH 126/175] Use socore user --- salt/manager/init.sls | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/salt/manager/init.sls b/salt/manager/init.sls index ca1296383..a3fb44e97 100644 --- a/salt/manager/init.sls +++ b/salt/manager/init.sls @@ -144,12 +144,13 @@ rules_dir: git_config_set_safe_dirs: git.config_set: - name: safe.directory + - global: True + - user: socore - multivar: - /nsm/rules/custom-local-repos/local-sigma - /nsm/rules/custom-local-repos/local-yara - /nsm/securityonion-resources - /opt/so/conf/soc/ai_summary_repos/securityonion-resources - - global: True {% else %} {{sls}}_state_not_allowed: From a146153ee920c77f3dfc3c0e76da176d0a4a50a9 Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Wed, 30 Oct 2024 12:44:01 -0400 Subject: [PATCH 127/175] switch to json --- salt/manager/tools/sbin/so-client | 18 +++++++++--------- salt/soc/files/bin/salt-relay.sh | 4 ++-- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/salt/manager/tools/sbin/so-client b/salt/manager/tools/sbin/so-client index c1d352328..5b8365f86 100755 --- a/salt/manager/tools/sbin/so-client +++ b/salt/manager/tools/sbin/so-client @@ -28,7 +28,7 @@ function usage() { Optional parameters: --role (defaults to $DEFAULT_ROLE) --note (defaults to blank) - --raw only output generated secret + --json output as JSON delete: Deletes a client from the oauth2 system Required parameters: @@ -54,7 +54,7 @@ function usage() { Required parameters: --id Optional parameters: - --raw only output generated secret + --json output as JSON USAGE_EOF exit 1 @@ -87,8 +87,8 @@ while [[ $# -gt 0 ]]; do note=$1 shift ;; - --raw) - raw=1 + --json) + json=1 ;; *) echo "Encountered unexpected parameter: $param" @@ -326,10 +326,10 @@ case "${operation}" in lock createClient "$name" "${role:-$DEFAULT_ROLE}" "${note}" - if [[ "$raw" == "1" ]]; then - echo $secret + if [[ "$json" == "1" ]]; then + echo "{\"id\":\"$id\",\"secret\":\"$secret\"}" else - echo "Successfully added user and generated secret: $secret" + echo "Successfully added user ID $id with generated secret: $secret" fi ;; @@ -376,8 +376,8 @@ case "${operation}" in lock generateSecret "$id" - if [[ "$raw" == "1" ]]; then - echo $secret + if [[ "$json" == "1" ]]; then + echo "{\"secret\":\"$secret\"}" else echo "Successfully generated secret: $secret" fi diff --git a/salt/soc/files/bin/salt-relay.sh b/salt/soc/files/bin/salt-relay.sh index bc8ac169f..8bd40384c 100755 --- a/salt/soc/files/bin/salt-relay.sh +++ b/salt/soc/files/bin/salt-relay.sh @@ -170,7 +170,7 @@ function manage_client() { name=$(echo "$request" | jq -r .name) note=$(echo "$request" | jq -r .note) log "Performing client '$op' for client with name '$name', note '$note' and role '$role'" - response=$(so-client "$op" --name "$name" --note "$note" --role "$role" --raw) + response=$(so-client "$op" --name "$name" --note "$note" --role "$role" --json) webResponse=$response exit_code=$? ;; @@ -190,7 +190,7 @@ function manage_client() { generate-secret) client_id=$(echo "$request" | jq -r .id) log "Performing '$op' operation for client '$client_id'" - response=$(so-client "$op" --id "$client_id" --raw) + response=$(so-client "$op" --id "$client_id" --json) webResponse=$response exit_code=$? ;; From 6b468eaed3ec886442ed1cfcf496ff7c2dc4e489 Mon Sep 17 00:00:00 2001 From: defensivedepth Date: Wed, 30 Oct 2024 16:52:44 -0400 Subject: [PATCH 128/175] rm eaintegration state file --- salt/manager/tools/sbin/soup | 3 +++ 1 file changed, 3 insertions(+) diff --git a/salt/manager/tools/sbin/soup b/salt/manager/tools/sbin/soup index 3fda54fb9..bd2db98d7 100755 --- a/salt/manager/tools/sbin/soup +++ b/salt/manager/tools/sbin/soup @@ -719,6 +719,9 @@ up_to_2.4.120() { mkdir /opt/so/saltstack/local/pillar/versionlock touch /opt/so/saltstack/local/pillar/versionlock/adv_versionlock.sls /opt/so/saltstack/local/pillar/versionlock/soc_versionlock.sls + # New Grid Integration added this release + rm -f /opt/so/state/eaintegrations.txt + INSTALLEDVERSION=2.4.120 } From 7896f951f3f7f267b7db65febf83b255280f8635 Mon Sep 17 00:00:00 2001 From: defensivedepth Date: Thu, 31 Oct 2024 10:24:58 -0400 Subject: [PATCH 129/175] timestamp fix --- salt/elasticsearch/templates/component/so/so-ip-mappings.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/salt/elasticsearch/templates/component/so/so-ip-mappings.json b/salt/elasticsearch/templates/component/so/so-ip-mappings.json index ab80e365c..a61eae5fd 100644 --- a/salt/elasticsearch/templates/component/so/so-ip-mappings.json +++ b/salt/elasticsearch/templates/component/so/so-ip-mappings.json @@ -6,6 +6,9 @@ "template": { "mappings": { "properties": { + "@timestamp": { + "type": "date" + }, "so": { "properties": { "ip_address": { From 370b1179384ecdfe45b8e7bd10c233ae3f755efe Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Thu, 31 Oct 2024 16:39:45 -0400 Subject: [PATCH 130/175] rename role --- salt/manager/tools/sbin/so-client | 82 +++++++++++++++---------------- 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/salt/manager/tools/sbin/so-client b/salt/manager/tools/sbin/so-client index 5b8365f86..482dc021c 100755 --- a/salt/manager/tools/sbin/so-client +++ b/salt/manager/tools/sbin/so-client @@ -11,22 +11,18 @@ else source $(dirname $0)/../../../common/tools/sbin/so-common fi - -DEFAULT_ROLE=limited-auditor - function usage() { cat < [supporting parameters] where is one of the following: - list: Lists all client IDs and roles currently defined in the oauth2 system + list: Lists all client IDs and permissions currently defined in the oauth2 system add: Adds a new client to the oauth2 system and outputs the generated secret Required parameters: --name Optional parameters: - --role (defaults to $DEFAULT_ROLE) --note (defaults to blank) --json output as JSON @@ -34,15 +30,15 @@ function usage() { Required parameters: --id - addrole: Grants a role to an existing client + addperm: Grants a permission to an existing client Required parameters: --id - --role + --permission - delrole: Removes a role from an existing client + delperm: Removes a permission from an existing client Required parameters: --id - --role + --permission update: Updates a client name and note. Required parameters: @@ -73,18 +69,22 @@ while [[ $# -gt 0 ]]; do case "$param" in --id) id=$1 + [[ ${#id} -gt 55 ]] && fail("id cannot be longer than 55 characters") shift ;; - --role) - role=$1 + --permission) + perm=$1 + [[ ${#perm} -gt 50 ]] && fail("permission cannot be longer than 50 characters") shift ;; --name) name=$1 + [[ ${#name} -gt 50 ]] && fail("name cannot be longer than 50 characters") shift ;; --note) note=$1 + [[ ${#note} -gt 50 ]] && fail("note cannot be longer than 500 characters") shift ;; --json) @@ -160,28 +160,28 @@ function listClients() { clientIds=$(echo "${response}" | jq -r ".[] | .client_id" | sort) for clientId in $clientIds; do - roles=$(grep ":$clientId\$" "$socRolesFile" | cut -d: -f1 | tr '\n' ' ') - echo "$clientId: $roles" + perms=$(grep ":$clientId\$" "$socRolesFile" | cut -d: -f1 | tr '\n' ' ') + echo "$clientId: $perms" done } -function addClientRole() { +function addClientPermission() { id=$1 - role=$2 + perm=$2 - adjustClientRole "$id" "$role" "add" + adjustClientPermission "$id" "$perm" "add" } -function deleteClientRole() { +function deleteClientPermission() { id=$1 - role=$2 + perm=$2 - adjustClientRole "$id" "$role" "del" + adjustClientPermission "$id" "$perm" "del" } -function adjustClientRole() { +function adjustClientPermission() { identityId=$1 - role=$2 + perm=$2 op=$3 [[ ${identityId} == "" ]] && fail "Client not found" @@ -189,25 +189,25 @@ function adjustClientRole() { ensureRoleFileExists filename="$socRolesFile" - hasRole=0 - grep "^$role:" "$socRolesFile" | grep -q "$identityId" && hasRole=1 + hasPerm=0 + grep "^$perm:" "$socRolesFile" | grep -q "$identityId" && hasPerm=1 if [[ "$op" == "add" ]]; then - if [[ "$hasRole" == "1" ]]; then - echo "Client '$identityId' already has the role: $role" + if [[ "$hasPerm" == "1" ]]; then + echo "Client '$identityId' already has the permission: $perm" return 1 else - echo "$role:$identityId" >> "$filename" + echo "$perm:$identityId" >> "$filename" fi elif [[ "$op" == "del" ]]; then - if [[ "$hasRole" -ne 1 ]]; then - fail "Client '$identityId' does not have the role: $role" + if [[ "$hasPermission" -ne 1 ]]; then + fail "Client '$identityId' does not have the permission: $perm" else - sed -e "\!^$role:$identityId\$!d" "$filename" > "$filename.tmp" + sed -e "\!^$perm:$identityId\$!d" "$filename" > "$filename.tmp" cat "$filename".tmp > "$filename" rm -f "$filename".tmp fi else - fail "Unsupported role adjustment operation: $op" + fail "Unsupported permission adjustment operation: $op" fi return 0 } @@ -221,7 +221,7 @@ function convertNameToId() { function createClient() { name=$1 - role=$2 + perm=$2 note=$3 id=$(convertNameToId "$name") @@ -247,7 +247,7 @@ EOF error=$(echo $response | jq .error) fail "Failed to submit request to Hydra: $error" fi - addClientRole "$id" "$role" + addClientPermission "$id" "$perm" } function update() { @@ -325,7 +325,7 @@ case "${operation}" in [[ "$name" == "" ]] && fail "A short client name must be provided" lock - createClient "$name" "${role:-$DEFAULT_ROLE}" "${note}" + createClient "$name" "${note}" if [[ "$json" == "1" ]]; then echo "{\"id\":\"$id\",\"secret\":\"$secret\"}" else @@ -338,25 +338,25 @@ case "${operation}" in listClients ;; - "addrole") + "addperm") verifyEnvironment [[ "$id" == "" ]] && fail "Id must be provided" - [[ "$role" == "" ]] && fail "Role must be provided" + [[ "$perm" == "" ]] && fail "Permission must be provided" lock - if addClientRole "$id" "$role"; then - echo "Successfully added role to client" + if addClientPermission "$id" "$perm"; then + echo "Successfully added permission to client" fi ;; - "delrole") + "delperm") verifyEnvironment [[ "$id" == "" ]] && fail "Id must be provided" - [[ "$role" == "" ]] && fail "Role must be provided" + [[ "$perm" == "" ]] && fail "Permission must be provided" lock - deleteClientRole "$id" "$role" - echo "Successfully removed role from client" + deleteClientPermission "$id" "$perm" + echo "Successfully removed permission from client" ;; "update") From 520c9d8d51ab08b380ee317ef2bd8e24c81c9608 Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Thu, 31 Oct 2024 16:42:42 -0400 Subject: [PATCH 131/175] rename role --- salt/manager/tools/sbin/so-client | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/salt/manager/tools/sbin/so-client b/salt/manager/tools/sbin/so-client index 482dc021c..3f6d9f6f4 100755 --- a/salt/manager/tools/sbin/so-client +++ b/salt/manager/tools/sbin/so-client @@ -69,22 +69,22 @@ while [[ $# -gt 0 ]]; do case "$param" in --id) id=$1 - [[ ${#id} -gt 55 ]] && fail("id cannot be longer than 55 characters") + [[ ${#id} -gt 55 ]] && fail "id cannot be longer than 55 characters" shift ;; --permission) perm=$1 - [[ ${#perm} -gt 50 ]] && fail("permission cannot be longer than 50 characters") + [[ ${#perm} -gt 50 ]] && fail "permission cannot be longer than 50 characters" shift ;; --name) name=$1 - [[ ${#name} -gt 50 ]] && fail("name cannot be longer than 50 characters") + [[ ${#name} -gt 50 ]] && fail "name cannot be longer than 50 characters" shift ;; --note) note=$1 - [[ ${#note} -gt 50 ]] && fail("note cannot be longer than 500 characters") + [[ ${#note} -gt 50 ]] && fail "note cannot be longer than 500 characters" shift ;; --json) From cd2e5bf2d0835702c8d95ef2f79f6f8c76ef90f8 Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Thu, 31 Oct 2024 17:20:44 -0400 Subject: [PATCH 132/175] rename role --- salt/manager/tools/sbin/so-client | 1 - salt/soc/files/bin/salt-relay.sh | 15 +++++++-------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/salt/manager/tools/sbin/so-client b/salt/manager/tools/sbin/so-client index 3f6d9f6f4..d9191bd59 100755 --- a/salt/manager/tools/sbin/so-client +++ b/salt/manager/tools/sbin/so-client @@ -247,7 +247,6 @@ EOF error=$(echo $response | jq .error) fail "Failed to submit request to Hydra: $error" fi - addClientPermission "$id" "$perm" } function update() { diff --git a/salt/soc/files/bin/salt-relay.sh b/salt/soc/files/bin/salt-relay.sh index 8bd40384c..42955a3e8 100755 --- a/salt/soc/files/bin/salt-relay.sh +++ b/salt/soc/files/bin/salt-relay.sh @@ -89,7 +89,7 @@ function manage_user() { add) email=$(echo "$request" | jq -r .email) password=$(echo "$request" | jq -r .password) - role=$(echo "$request" | jq -r .role) + perm=$(echo "$request" | jq -r .role) firstName=$(echo "$request" | jq -r .firstName) lastName=$(echo "$request" | jq -r .lastName) note=$(echo "$request" | jq -r .note) @@ -166,11 +166,10 @@ function manage_client() { while [[ $tries -lt $max_tries ]]; do case "$op" in add) - role=$(echo "$request" | jq -r .role) name=$(echo "$request" | jq -r .name) note=$(echo "$request" | jq -r .note) - log "Performing client '$op' for client with name '$name', note '$note' and role '$role'" - response=$(so-client "$op" --name "$name" --note "$note" --role "$role" --json) + log "Performing client '$op' for client with name '$name' and note '$note'" + response=$(so-client "$op" --name "$name" --note "$note" --json) webResponse=$response exit_code=$? ;; @@ -180,11 +179,11 @@ function manage_client() { response=$(so-client "$op" --id "$client_id") exit_code=$? ;; - addrole|delrole) + addperm|delperm) client_id=$(echo "$request" | jq -r .id) - role=$(echo "$request" | jq -r .role) - log "Performing '$op' for client '$client_id' with role '$role'" - response=$(so-client "$op" --id "$client_id" --role "$role") + perm=$(echo "$request" | jq -r .permission) + log "Performing '$op' for client '$client_id' with permission '$perm'" + response=$(so-client "$op" --id "$client_id" --permission "$perm") exit_code=$? ;; generate-secret) From 825dbb36ddfe350e5d35c1866b61c91652f799e2 Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Fri, 1 Nov 2024 15:37:59 -0400 Subject: [PATCH 133/175] connect --- salt/manager/tools/sbin/so-client | 17 ++++++++++++----- salt/manager/tools/sbin/so-user | 18 ------------------ salt/soc/files/bin/salt-relay.sh | 10 +++------- 3 files changed, 15 insertions(+), 30 deletions(-) diff --git a/salt/manager/tools/sbin/so-client b/salt/manager/tools/sbin/so-client index d9191bd59..87c0d8daa 100755 --- a/salt/manager/tools/sbin/so-client +++ b/salt/manager/tools/sbin/so-client @@ -45,6 +45,7 @@ function usage() { --id --name --note + --searchusername generate-secret: Regenerates a client's secret and outputs the new secret. Required parameters: @@ -84,7 +85,12 @@ while [[ $# -gt 0 ]]; do ;; --note) note=$1 - [[ ${#note} -gt 50 ]] && fail "note cannot be longer than 500 characters" + [[ ${#note} -gt 100 ]] && fail "note cannot be longer than 100 characters" + shift + ;; + --searchusername) + searchusername=$1 + [[ ${#searchusername} -gt 50 ]] && fail "search username cannot be longer than 50 characters" shift ;; --json) @@ -199,7 +205,7 @@ function adjustClientPermission() { echo "$perm:$identityId" >> "$filename" fi elif [[ "$op" == "del" ]]; then - if [[ "$hasPermission" -ne 1 ]]; then + if [[ "$hasPerm" -ne 1 ]]; then fail "Client '$identityId' does not have the permission: $perm" else sed -e "\!^$perm:$identityId\$!d" "$filename" > "$filename.tmp" @@ -328,7 +334,7 @@ case "${operation}" in if [[ "$json" == "1" ]]; then echo "{\"id\":\"$id\",\"secret\":\"$secret\"}" else - echo "Successfully added user ID $id with generated secret: $secret" + echo "Successfully added client ID $id with generated secret: $secret" fi ;; @@ -363,9 +369,10 @@ case "${operation}" in [[ "$id" == "" ]] && fail "Id must be provided" [[ "$name" == "" ]] && fail "Name must be provided" [[ "$note" == "" ]] && fail "Note must be provided" + [[ "$searchusername" == "" ]] && fail "Search Username must be provided" lock - update "$id" "$name" "$note" + update "$id" "$name" "$note" "$searchusername" echo "Successfully updated client" ;; @@ -388,7 +395,7 @@ case "${operation}" in lock deleteClient "$id" - echo "Successfully deleted client. Run 'so-user sync' to sync with Elasticsearch." + echo "Successfully deleted client." ;; *) fail "Unsupported operation: $operation" diff --git a/salt/manager/tools/sbin/so-user b/salt/manager/tools/sbin/so-user index 03855f661..e64bd1a8a 100755 --- a/salt/manager/tools/sbin/so-user +++ b/salt/manager/tools/sbin/so-user @@ -136,7 +136,6 @@ bcryptRounds=${BCRYPT_ROUNDS:-12} elasticUsersFile=${ELASTIC_USERS_FILE:-/opt/so/saltstack/local/salt/elasticsearch/files/users} elasticRolesFile=${ELASTIC_ROLES_FILE:-/opt/so/saltstack/local/salt/elasticsearch/files/users_roles} socRolesFile=${SOC_ROLES_FILE:-/opt/so/conf/soc/soc_users_roles} -clientRolesFile=${SOC_ROLES_FILE:-/opt/so/conf/soc/soc_clients_roles} esUID=${ELASTIC_UID:-930} esGID=${ELASTIC_GID:-930} soUID=${SOCORE_UID:-939} @@ -283,18 +282,6 @@ function ensureRoleFileExists() { fi mv "${rolesTmpFile}" "${socRolesFile}" fi - - if [[ ! -f "$clientRolesFile" || ! -s "$clientRolesFile" ]]; then - # Generate the new client roles file - rolesTmpFile="${clientRolesFile}.tmp" - createFile "$rolesTmpFile" "$soUID" "$soGID" - - if [[ -d "$clientRolesFile" ]]; then - echo "Removing invalid roles directory created by Docker" - rm -fr "$clientRolesFile" - fi - mv "${rolesTmpFile}" "${clientRolesFile}" - fi } function syncElasticSystemUser() { @@ -370,7 +357,6 @@ function syncElastic() { random_crypt=$(get_random_value 53) user_data_formatted=$(echo "${user_data_formatted}" | sed -r "s/^(.+:)\$/\\1\$2a\$12${random_crypt}/") fi - echo "${user_data_formatted}" >> "$usersTmpFile" # Append the user roles @@ -386,10 +372,6 @@ function syncElastic() { sqlite3 -cmd ".timeout ${databaseTimeout}" "$databasePath" >> "$rolesTmpFile" [[ $? != 0 ]] && fail "Unable to read role identities from database" done < "$socRolesFile" - - # Append the client roles - cat "$clientRolesFile" >> "$rolesTmpFile" - else echo "Database file or soc roles file does not exist yet, skipping users export" fi diff --git a/salt/soc/files/bin/salt-relay.sh b/salt/soc/files/bin/salt-relay.sh index 42955a3e8..0ffdf9ad2 100755 --- a/salt/soc/files/bin/salt-relay.sh +++ b/salt/soc/files/bin/salt-relay.sh @@ -197,13 +197,9 @@ function manage_client() { client_id=$(echo "$request" | jq -r .id) name=$(echo "$request" | jq -r .name) note=$(echo "$request" | jq -r .note) - log "Performing '$op' update for client '$client_id' with name '$name', and note '$note'" - response=$(so-client "$op" --id "$client_id" --name "$name" --note "$note") - exit_code=$? - ;; - sync) - log "Performing '$op'" - response=$(so-user "$op") + searchusername=$(echo "$request" | jq -r .searchusername) + log "Performing '$op' update for client '$client_id' with name '$name', search username '$searchusername', and note '$note'" + response=$(so-client "$op" --id "$client_id" --name "$name" --searchusername "$searchusername" --note "$note") exit_code=$? ;; *) From fb73517fc154f78e1c5a7f4eacd7139e42f37e6e Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Fri, 1 Nov 2024 15:43:26 -0400 Subject: [PATCH 134/175] connect --- salt/manager/tools/sbin/so-client | 1 + 1 file changed, 1 insertion(+) diff --git a/salt/manager/tools/sbin/so-client b/salt/manager/tools/sbin/so-client index 87c0d8daa..fdfb736e0 100755 --- a/salt/manager/tools/sbin/so-client +++ b/salt/manager/tools/sbin/so-client @@ -272,6 +272,7 @@ function update() { "path": "/metadata", "value": { "note": "$note" + "searchUsername": "$searchusername" } } ] From 755cfb4e13c45091103b0140f9c73473476ab442 Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Fri, 1 Nov 2024 15:47:33 -0400 Subject: [PATCH 135/175] connect --- salt/manager/tools/sbin/so-client | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/salt/manager/tools/sbin/so-client b/salt/manager/tools/sbin/so-client index fdfb736e0..524de58e8 100755 --- a/salt/manager/tools/sbin/so-client +++ b/salt/manager/tools/sbin/so-client @@ -243,6 +243,7 @@ function createClient() { "response_types": [ "code" ], "metadata": { "note": "$note" + "searchUsername": "" } } EOF @@ -271,7 +272,7 @@ function update() { "op": "replace", "path": "/metadata", "value": { - "note": "$note" + "note": "$note", "searchUsername": "$searchusername" } } From c9f6b5206a68f6488252ab1b50e7f684def6bbcd Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Fri, 1 Nov 2024 16:18:40 -0400 Subject: [PATCH 136/175] connect --- salt/manager/tools/sbin/so-client | 2 +- salt/soc/files/bin/salt-relay.sh | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/salt/manager/tools/sbin/so-client b/salt/manager/tools/sbin/so-client index 524de58e8..1eeaf7392 100755 --- a/salt/manager/tools/sbin/so-client +++ b/salt/manager/tools/sbin/so-client @@ -242,7 +242,7 @@ function createClient() { "grant_types": [ "client_credentials" ], "response_types": [ "code" ], "metadata": { - "note": "$note" + "note": "$note", "searchUsername": "" } } diff --git a/salt/soc/files/bin/salt-relay.sh b/salt/soc/files/bin/salt-relay.sh index 0ffdf9ad2..18ce8c0b0 100755 --- a/salt/soc/files/bin/salt-relay.sh +++ b/salt/soc/files/bin/salt-relay.sh @@ -170,8 +170,8 @@ function manage_client() { note=$(echo "$request" | jq -r .note) log "Performing client '$op' for client with name '$name' and note '$note'" response=$(so-client "$op" --name "$name" --note "$note" --json) - webResponse=$response exit_code=$? + webResponse=$response ;; delete) client_id=$(echo "$request" | jq -r .id) @@ -190,8 +190,8 @@ function manage_client() { client_id=$(echo "$request" | jq -r .id) log "Performing '$op' operation for client '$client_id'" response=$(so-client "$op" --id "$client_id" --json) - webResponse=$response exit_code=$? + webResponse=$response ;; update) client_id=$(echo "$request" | jq -r .id) From 25479ca71fdb02d9424af295e797eb5beecaa0b8 Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Fri, 1 Nov 2024 16:29:04 -0400 Subject: [PATCH 137/175] connect --- salt/manager/tools/sbin/so-client | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/salt/manager/tools/sbin/so-client b/salt/manager/tools/sbin/so-client index 1eeaf7392..261b8cc06 100755 --- a/salt/manager/tools/sbin/so-client +++ b/salt/manager/tools/sbin/so-client @@ -64,6 +64,9 @@ fi operation=$1 shift +searchUsername=__MISSING__ +note=__MISSING__ + while [[ $# -gt 0 ]]; do param=$1 shift @@ -89,8 +92,8 @@ while [[ $# -gt 0 ]]; do shift ;; --searchusername) - searchusername=$1 - [[ ${#searchusername} -gt 50 ]] && fail "search username cannot be longer than 50 characters" + searchUsername=$1 + [[ ${#searchUsername} -gt 50 ]] && fail "search username cannot be longer than 50 characters" shift ;; --json) @@ -260,6 +263,7 @@ function update() { clientId=$1 name=$2 note=$3 + username=$4 body=$(cat < Date: Fri, 1 Nov 2024 16:37:24 -0400 Subject: [PATCH 138/175] connect --- salt/manager/tools/sbin/so-client | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/salt/manager/tools/sbin/so-client b/salt/manager/tools/sbin/so-client index 261b8cc06..1b67ca4dc 100755 --- a/salt/manager/tools/sbin/so-client +++ b/salt/manager/tools/sbin/so-client @@ -375,10 +375,10 @@ case "${operation}" in [[ "$id" == "" ]] && fail "Id must be provided" [[ "$name" == "" ]] && fail "Name must be provided" [[ "$note" == "__MISSING__" ]] && fail "Note must be provided" - [[ "$searchusername" == "__MISSING__" ]] && fail "Search Username must be provided" + [[ "$searchUsername" == "__MISSING__" ]] && fail "Search Username must be provided" lock - update "$id" "$name" "$note" "$searchusername" + update "$id" "$name" "$note" "$searchUsername" echo "Successfully updated client" ;; From 083c678400f1905cb0abe25dee0ea22551f75e83 Mon Sep 17 00:00:00 2001 From: m0duspwnens Date: Mon, 4 Nov 2024 09:46:26 -0500 Subject: [PATCH 139/175] new salt repo --- setup/so-functions | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/setup/so-functions b/setup/so-functions index e3c8a5615..cc55ec21d 100755 --- a/setup/so-functions +++ b/setup/so-functions @@ -1843,9 +1843,9 @@ repo_sync_local() { fi dnf install -y yum-utils device-mapper-persistent-data lvm2 curl -fsSL https://repo.securityonion.net/file/so-repo/prod/2.4/so/so.repo | tee /etc/yum.repos.d/so.repo - rpm --import https://repo.saltproject.io/salt/py3/redhat/9/x86_64/SALT-PROJECT-GPG-PUBKEY-2023.pub + rpm --import https://packages.broadcom.com/artifactory/api/security/keypair/SaltProjectKey/public dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo - curl -fsSL "https://repo.saltproject.io/salt/py3/redhat/9/x86_64/minor/$SALTVERSION.repo" | tee /etc/yum.repos.d/salt.repo + curl -fsSL "https://github.com/saltstack/salt-install-guide/releases/latest/download/salt.repo" | tee /etc/yum.repos.d/salt.repo dnf repolist curl --retry 5 --retry-delay 60 -A "netinstall/$SOVERSION/$OS/$(uname -r)/1" https://sigs.securityonion.net/checkup --output /tmp/install else @@ -1878,24 +1878,19 @@ saltify() { logCmd "mkdir -vp /etc/apt/keyrings" logCmd "wget -q --inet4-only -O /etc/apt/keyrings/docker.pub https://download.docker.com/linux/ubuntu/gpg" + # Download public key + logCmd "curl -fsSL -o /etc/apt/keyrings/salt-archive-keyring-2023.pgp https://packages.broadcom.com/artifactory/api/security/keypair/SaltProjectKey/public" + # Create apt repo target configuration + echo "deb [signed-by=/etc/apt/keyrings/salt-archive-keyring-2023.pgp arch=amd64] https://packages.broadcom.com/artifactory/saltproject-deb/ stable main" | sudo tee /etc/apt/sources.list.d/salt.list + if [[ $is_ubuntu ]]; then - - # Add Salt Repo - logCmd "curl -fsSL -o /etc/apt/keyrings/salt-archive-keyring-2023.gpg https://repo.saltproject.io/salt/py3/ubuntu/$UBVER/amd64/minor/$SALTVERSION/SALT-PROJECT-GPG-PUBKEY-2023.gpg" - echo "deb [signed-by=/etc/apt/keyrings/salt-archive-keyring-2023.gpg] https://repo.saltproject.io/salt/py3/ubuntu/$UBVER/amd64/minor/$SALTVERSION/ $OSVER main" | sudo tee /etc/apt/sources.list.d/salt.list - # Add Docker Repo add-apt-repository -y "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" else - # Add Salt Repo *NOTE* You have to use debian 11 since it isn't out for 12 - logCmd "curl -fsSL -o /etc/apt/keyrings/salt-archive-keyring-2023.gpg https://repo.saltproject.io/salt/py3/debian/11/amd64/minor/$SALTVERSION/SALT-PROJECT-GPG-PUBKEY-2023.gpg" - echo "deb [signed-by=/etc/apt/keyrings/salt-archive-keyring-2023.gpg] https://repo.saltproject.io/salt/py3/debian/11/amd64/minor/$SALTVERSION/ bullseye main" | sudo tee /etc/apt/sources.list.d/salt.list - # Add Docker Repo curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg echo "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $OSVER stable" > /etc/apt/sources.list.d/docker.list - fi logCmd "apt-key add /etc/apt/keyrings/salt-archive-keyring-2023.gpg" From e8ab7bce0c0b85e7ba29f221e7ceed8a8838d019 Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Mon, 4 Nov 2024 10:49:30 -0500 Subject: [PATCH 140/175] connect --- salt/manager/tools/sbin/so-client | 15 +++++++-------- salt/manager/tools/sbin/so-user | 10 +++++----- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/salt/manager/tools/sbin/so-client b/salt/manager/tools/sbin/so-client index 1b67ca4dc..e55ef70b5 100755 --- a/salt/manager/tools/sbin/so-client +++ b/salt/manager/tools/sbin/so-client @@ -72,27 +72,27 @@ while [[ $# -gt 0 ]]; do shift case "$param" in --id) - id=$1 + id=$(echo $1 | sed 's/"/\\"/g') [[ ${#id} -gt 55 ]] && fail "id cannot be longer than 55 characters" shift ;; --permission) - perm=$1 + perm=$(echo $1 | sed 's/"/\\"/g') [[ ${#perm} -gt 50 ]] && fail "permission cannot be longer than 50 characters" shift ;; --name) - name=$1 + name=$(echo $1 | sed 's/"/\\"/g') [[ ${#name} -gt 50 ]] && fail "name cannot be longer than 50 characters" shift ;; --note) - note=$1 + note=$(echo $1 | sed 's/"/\\"/g') [[ ${#note} -gt 100 ]] && fail "note cannot be longer than 100 characters" shift ;; --searchusername) - searchUsername=$1 + searchUsername=$(echo $1 | sed 's/"/\\"/g') [[ ${#searchUsername} -gt 50 ]] && fail "search username cannot be longer than 50 characters" shift ;; @@ -230,8 +230,7 @@ function convertNameToId() { function createClient() { name=$1 - perm=$2 - note=$3 + note=$2 id=$(convertNameToId "$name") now=$(date -u +%FT%TZ) @@ -336,7 +335,7 @@ case "${operation}" in [[ "$name" == "" ]] && fail "A short client name must be provided" lock - createClient "$name" "${note}" + createClient "$name" "$note" if [[ "$json" == "1" ]]; then echo "{\"id\":\"$id\",\"secret\":\"$secret\"}" else diff --git a/salt/manager/tools/sbin/so-user b/salt/manager/tools/sbin/so-user index e64bd1a8a..f34681c04 100755 --- a/salt/manager/tools/sbin/so-user +++ b/salt/manager/tools/sbin/so-user @@ -100,23 +100,23 @@ while [[ $# -gt 0 ]]; do shift case "$param" in --email) - email=$1 + email=$(echo $1 | sed 's/"/\\"/g') shift ;; --role) - role=$1 + role=$(echo $1 | sed 's/"/\\"/g') shift ;; --firstName) - firstName=$1 + firstName=$(echo $1 | sed 's/"/\\"/g') shift ;; --lastName) - lastName=$1 + lastName=$(echo $1 | sed 's/"/\\"/g') shift ;; --note) - note=$1 + note=$(echo $1 | sed 's/"/\\"/g') shift ;; --skip-sync) From 6e14f7b6267d7419c9ac3807a1817dcde1280918 Mon Sep 17 00:00:00 2001 From: m0duspwnens Date: Mon, 4 Nov 2024 11:14:00 -0500 Subject: [PATCH 141/175] fix pub key name --- setup/so-functions | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup/so-functions b/setup/so-functions index cc55ec21d..c6aadef3d 100755 --- a/setup/so-functions +++ b/setup/so-functions @@ -1893,7 +1893,7 @@ saltify() { echo "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $OSVER stable" > /etc/apt/sources.list.d/docker.list fi - logCmd "apt-key add /etc/apt/keyrings/salt-archive-keyring-2023.gpg" + logCmd "apt-key add /etc/apt/keyrings/salt-archive-keyring-2023.pgp" #logCmd "apt-key add /opt/so/gpg/SALTSTACK-GPG-KEY.pub" logCmd "apt-key add /etc/apt/keyrings/docker.pub" From 69dd35c30a49587f08261c40f2b56458a7dbc96b Mon Sep 17 00:00:00 2001 From: Corey Ogburn Date: Mon, 4 Nov 2024 14:31:53 -0700 Subject: [PATCH 142/175] Add Option for Ignoring Ranges of SIDs in Suricata Integrity Check --- salt/soc/defaults.yaml | 2 ++ salt/soc/soc_soc.yaml | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/salt/soc/defaults.yaml b/salt/soc/defaults.yaml index 6a9a1bfc6..068a9c9b7 100644 --- a/salt/soc/defaults.yaml +++ b/salt/soc/defaults.yaml @@ -1435,6 +1435,8 @@ soc: rulesFingerprintFile: /opt/sensoroni/fingerprints/emerging-all.fingerprint stateFilePath: /opt/sensoroni/fingerprints/suricataengine.state integrityCheckFrequencySeconds: 1200 + ignoredSidRanges: + - '1100000-1199999' client: enableReverseLookup: false docsUrl: /docs/ diff --git a/salt/soc/soc_soc.yaml b/salt/soc/soc_soc.yaml index 14296dade..fd3295daf 100644 --- a/salt/soc/soc_soc.yaml +++ b/salt/soc/soc_soc.yaml @@ -390,6 +390,11 @@ soc: advanced: True forcedType: "[]{}" helpLink: suricata.html + ignoredSidRanges: + description: 'List of Suricata SID ranges to ignore during the Integrity Check. This is useful for ignoring specific rules not governed by the UI.' + global: True + advanced: True + forcedType: "[]string" client: enableReverseLookup: description: Set to true to enable reverse DNS lookups for IP addresses in the SOC UI. From 5e48ccafce5ab3b4a04d6e059b311b8efac975b4 Mon Sep 17 00:00:00 2001 From: Corey Ogburn Date: Tue, 5 Nov 2024 11:11:34 -0700 Subject: [PATCH 143/175] Update Default Value --- salt/soc/defaults.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/salt/soc/defaults.yaml b/salt/soc/defaults.yaml index 068a9c9b7..73446abd7 100644 --- a/salt/soc/defaults.yaml +++ b/salt/soc/defaults.yaml @@ -1436,7 +1436,7 @@ soc: stateFilePath: /opt/sensoroni/fingerprints/suricataengine.state integrityCheckFrequencySeconds: 1200 ignoredSidRanges: - - '1100000-1199999' + - '1100000-1101000' client: enableReverseLookup: false docsUrl: /docs/ From 25d55feeefd8f6955271daac729b94be1d2e4d4a Mon Sep 17 00:00:00 2001 From: Corey Ogburn Date: Tue, 5 Nov 2024 11:41:14 -0700 Subject: [PATCH 144/175] More Detailed Description --- salt/soc/soc_soc.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/salt/soc/soc_soc.yaml b/salt/soc/soc_soc.yaml index fd3295daf..3bd1774bc 100644 --- a/salt/soc/soc_soc.yaml +++ b/salt/soc/soc_soc.yaml @@ -391,7 +391,7 @@ soc: forcedType: "[]{}" helpLink: suricata.html ignoredSidRanges: - description: 'List of Suricata SID ranges to ignore during the Integrity Check. This is useful for ignoring specific rules not governed by the UI.' + description: 'List of Suricata SID ranges to ignore during the Integrity Check. This is useful for ignoring specific rules not governed by the UI. Each line should contain 1 range in the format "1100000-1200000". The ranges are treated as inclusive.' global: True advanced: True forcedType: "[]string" From 52a144c0521a3a4f5b7e476f60251b66f2c0a332 Mon Sep 17 00:00:00 2001 From: Corey Ogburn Date: Tue, 5 Nov 2024 12:11:17 -0700 Subject: [PATCH 145/175] Added Help Link to Annotation for IgnoredSidRanges --- salt/soc/soc_soc.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/salt/soc/soc_soc.yaml b/salt/soc/soc_soc.yaml index 3bd1774bc..c27228ab6 100644 --- a/salt/soc/soc_soc.yaml +++ b/salt/soc/soc_soc.yaml @@ -395,6 +395,7 @@ soc: global: True advanced: True forcedType: "[]string" + helpLink: detections.html#rule-engine-status client: enableReverseLookup: description: Set to true to enable reverse DNS lookups for IP addresses in the SOC UI. From 039d5c22ac8212c01bdd68a5e5afbcccb4b532a9 Mon Sep 17 00:00:00 2001 From: reyesj2 <94730068+reyesj2@users.noreply.github.com> Date: Wed, 6 Nov 2024 14:35:41 -0600 Subject: [PATCH 146/175] fix: crowdstrike integration Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com> --- salt/elasticsearch/defaults.yaml | 120 +++++++++++++++--- salt/elasticsearch/soc_elasticsearch.yaml | 2 + .../logs-crowdstrike.alert@custom.json | 36 ++++++ .../logs-crowdstrike.host@custom.json | 36 ++++++ 4 files changed, 176 insertions(+), 18 deletions(-) create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-crowdstrike.alert@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-crowdstrike.host@custom.json diff --git a/salt/elasticsearch/defaults.yaml b/salt/elasticsearch/defaults.yaml index c8684e775..e3259ecd5 100644 --- a/salt/elasticsearch/defaults.yaml +++ b/salt/elasticsearch/defaults.yaml @@ -3499,28 +3499,70 @@ elasticsearch: set_priority: priority: 50 min_age: 30d - so-logs-crowdstrike_x_falcon: - index_sorting: false + so-logs-crowdstrike_x_alert: + index_sorting: False index_template: + index_patterns: + - logs-crowdstrike.alert-* + template: + settings: + index: + number_of_replicas: 0 + composed_of: + - logs-crowdstrike.alert@package + - logs-crowdstrike.alert@custom + - so-fleet_globals-1 + - so-fleet_agent_id_verification-1 + priority: 501 + data_stream: + hidden: false + allow_custom_routing: false + ignore_missing_component_templates: + - logs-crowdstrike.alert@custom + policy: + phases: + cold: + actions: + set_priority: + priority: 0 + min_age: 60d + delete: + actions: + delete: {} + min_age: 365d + hot: + actions: + rollover: + max_age: 30d + max_primary_shard_size: 50gb + set_priority: + priority: 100 + min_age: 0ms + warm: + actions: + set_priority: + priority: 50 + min_age: 30d + so-logs-crowdstrike_x_falcon: + index_sorting: False + index_template: + index_patterns: + - logs-crowdstrike.falcon-* + template: + settings: + index: + number_of_replicas: 0 composed_of: - logs-crowdstrike.falcon@package - logs-crowdstrike.falcon@custom - so-fleet_globals-1 - so-fleet_agent_id_verification-1 + priority: 501 data_stream: - allow_custom_routing: false hidden: false + allow_custom_routing: false ignore_missing_component_templates: - logs-crowdstrike.falcon@custom - index_patterns: - - logs-crowdstrike.falcon-* - priority: 501 - template: - settings: - index: - lifecycle: - name: so-logs-crowdstrike.falcon-logs - number_of_replicas: 0 policy: phases: cold: @@ -3546,27 +3588,69 @@ elasticsearch: priority: 50 min_age: 30d so-logs-crowdstrike_x_fdr: - index_sorting: false + index_sorting: False index_template: + index_patterns: + - logs-crowdstrike.fdr-* + template: + settings: + index: + number_of_replicas: composed_of: - logs-crowdstrike.fdr@package - logs-crowdstrike.fdr@custom - so-fleet_globals-1 - so-fleet_agent_id_verification-1 + priority: 501 data_stream: - allow_custom_routing: false hidden: false + allow_custom_routing: false ignore_missing_component_templates: - logs-crowdstrike.fdr@custom + policy: + phases: + cold: + actions: + set_priority: + priority: 0 + min_age: 60d + delete: + actions: + delete: {} + min_age: 365d + hot: + actions: + rollover: + max_age: 30d + max_primary_shard_size: 50gb + set_priority: + priority: 100 + min_age: 0ms + warm: + actions: + set_priority: + priority: 50 + min_age: 30d + so-logs-crowdstrike_x_host: + index_sorting: False + index_template: index_patterns: - - logs-crowdstrike.fdr-* - priority: 501 + - logs-crowdstrike.host-* template: settings: index: - lifecycle: - name: so-logs-crowdstrike.fdr-logs number_of_replicas: 0 + composed_of: + - logs-crowdstrike.host@package + - logs-crowdstrike.host@custom + - so-fleet_globals-1 + - so-fleet_agent_id_verification-1 + priority: 501 + data_stream: + hidden: false + allow_custom_routing: false + ignore_missing_component_templates: + - logs-crowdstrike.host@custom policy: phases: cold: diff --git a/salt/elasticsearch/soc_elasticsearch.yaml b/salt/elasticsearch/soc_elasticsearch.yaml index 266372708..e26d1d705 100644 --- a/salt/elasticsearch/soc_elasticsearch.yaml +++ b/salt/elasticsearch/soc_elasticsearch.yaml @@ -396,8 +396,10 @@ elasticsearch: so-logs-citrix_waf_x_log: *indexSettings so-logs-cloudflare_x_audit: *indexSettings so-logs-cloudflare_x_logpull: *indexSettings + so-logs-crowdstrike_x_alert: *indexSettings so-logs-crowdstrike_x_falcon: *indexSettings so-logs-crowdstrike_x_fdr: *indexSettings + so-logs-crowdstrike_x_host: *indexSettings so-logs-darktrace_x_ai_analyst_alert: *indexSettings so-logs-darktrace_x_model_breach_alert: *indexSettings so-logs-darktrace_x_system_status_alert: *indexSettings diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-crowdstrike.alert@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-crowdstrike.alert@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-crowdstrike.alert@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-crowdstrike.host@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-crowdstrike.host@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-crowdstrike.host@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} From 80b82b0bd62b61739b0c689aa2e75967f35fc4af Mon Sep 17 00:00:00 2001 From: reyesj2 <94730068+reyesj2@users.noreply.github.com> Date: Wed, 6 Nov 2024 15:24:13 -0600 Subject: [PATCH 147/175] missing replica 0 Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com> --- salt/elasticsearch/defaults.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/salt/elasticsearch/defaults.yaml b/salt/elasticsearch/defaults.yaml index e3259ecd5..133c333e1 100644 --- a/salt/elasticsearch/defaults.yaml +++ b/salt/elasticsearch/defaults.yaml @@ -3595,7 +3595,7 @@ elasticsearch: template: settings: index: - number_of_replicas: + number_of_replicas: 0 composed_of: - logs-crowdstrike.fdr@package - logs-crowdstrike.fdr@custom From f5bd8ab58556c0f9bafa26717d83de33f6dd2862 Mon Sep 17 00:00:00 2001 From: defensivedepth Date: Thu, 7 Nov 2024 15:33:47 -0500 Subject: [PATCH 148/175] Rewrite docs --- ...tections_custom_repo_template_readme.jinja | 76 +++++++++++++++---- 1 file changed, 62 insertions(+), 14 deletions(-) diff --git a/salt/soc/files/soc/detections_custom_repo_template_readme.jinja b/salt/soc/files/soc/detections_custom_repo_template_readme.jinja index 1d391fec0..228a467bf 100644 --- a/salt/soc/files/soc/detections_custom_repo_template_readme.jinja +++ b/salt/soc/files/soc/detections_custom_repo_template_readme.jinja @@ -8,15 +8,39 @@ Just add your rule file and commit it. For example: -First, create the rule file; make sure to create the file with a .yar extension -`sudo vi my_custom_rule.yar` +** Note: If this is your first time making changes to this repo, you may run into the following error: -Next, use git to stage the new rule to be commited: -`sudo git add my_custom_rule.yar` +fatal: detected dubious ownership in repository at '/nsm/rules/custom-local-repos/local-yara' +To add an exception for this directory, call: + git config --global --add safe.directory /nsm/rules/custom-local-repos/local-yara -Finally, commit it. -If this is your first time making changes to this repo, you will be asked to set some configuration. -`sudo git commit -m "Initial commit of my_custom_rule.yar"` +This means that the user you are running commands as does not match the user that is used for this git repo (socore). +You will need to make sure your rule files are accessible to the socore user, so either su to socore +or add the exception and then chown the rule files later. + +Also, you will be asked to set some configuration: +``` +Author identity unknown +*** Please tell me who you are. +Run + git config --global user.email "you@example.com" + git config --global user.name "Your Name" +to set your account's default identity. +Omit --global to set the identity only in this repository. +``` + +Run these commands, ommitting the `--global`. + +With that out of the way: + +First, create the rule file with a .yar extension: +`vi my_custom_rule.yar` + +Next, use git to stage the new rule to be committed: +`git add my_custom_rule.yar` + +Finally, commit it: +`git commit -m "Initial commit of my_custom_rule.yar"` The next time the Strelka / YARA engine syncs, the new rule should be imported If there are errors, review the sync log to troubleshoot further. @@ -31,15 +55,39 @@ Just add your rule file and commit it. For example: -First, create the rule file; make sure to create the file with a .yaml|.yml extension -`sudo vi my_custom_rule.yml` +** Note: If this is your first time making changes to this repo, you may run into the following error: -Next, use git to stage the new rule to be commited: -`sudo git add my_custom_rule.yml` +fatal: detected dubious ownership in repository at '/nsm/rules/custom-local-repos/local-sigma' +To add an exception for this directory, call: + git config --global --add safe.directory /nsm/rules/custom-local-repos/local-sigma -Finally, commit it. -If this is your first time making changes to this repo, you will be asked to set some configuration. -`sudo git commit -m "Initial commit of my_custom_rule.yml"` +This means that the user you are running commands as does not match the user that is used for this git repo (socore). +You will need to make sure your rule files are accessible to the socore user, so either su to socore +or add the exception and then chown the rule files later. + +Also, you will be asked to set some configuration: +``` +Author identity unknown +*** Please tell me who you are. +Run + git config --global user.email "you@example.com" + git config --global user.name "Your Name" +to set your account's default identity. +Omit --global to set the identity only in this repository. +``` + +Run these commands, ommitting the `--global`. + +With that out of the way: + +First, create the rule file with a .yml or .yaml extension: +`vi my_custom_rule.yml` + +Next, use git to stage the new rule to be committed: +`git add my_custom_rule.yml` + +Finally, commit it: +`git commit -m "Initial commit of my_custom_rule.yml"` The next time the Elastalert / Sigma engine syncs, the new rule should be imported If there are errors, review the sync log to troubleshoot further. From ba0abb156a6949574af8a7f1cbfd839b908f3ad2 Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Thu, 7 Nov 2024 16:08:28 -0500 Subject: [PATCH 149/175] connect --- salt/hydra/soc_hydra.yaml | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/salt/hydra/soc_hydra.yaml b/salt/hydra/soc_hydra.yaml index 1b6523c22..1e33f00ea 100644 --- a/salt/hydra/soc_hydra.yaml +++ b/salt/hydra/soc_hydra.yaml @@ -1,4 +1,28 @@ hydra: enabled: description: Enables or disables the API authentication system, used for service account authentication. Enabling this feature requires a valid Security Onion license key. Defaults to False. - helpLink: api.html + helpLink: connect.html + config: + ttl: + access_token: + description: Amount of time that the generated access token will be valid. Specified in the form of 2h, which means 2 hours. + global: True + forcedType: string + helpLink: connect.html + log: + level: + description: Log level to use for Kratos logs. + global: True + helpLink: connect.html + format: + description: Log output format for Kratos logs. + global: True + helpLink: connect.html + secrets: + system: + description: Secrets used for token generation. Generated during installation. + global: True + sensitive: True + advanced: True + forcedType: "[]string" + helpLink: connect.html From 97f4cbdade381ee07a9acd3aed413ec0a1f45e16 Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Thu, 7 Nov 2024 16:16:37 -0500 Subject: [PATCH 150/175] connect --- salt/hydra/defaults.yaml | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/salt/hydra/defaults.yaml b/salt/hydra/defaults.yaml index af032da04..cbea72b97 100644 --- a/salt/hydra/defaults.yaml +++ b/salt/hydra/defaults.yaml @@ -11,15 +11,11 @@ hydra: issuer: https://URL_BASE/connect public: https://URL_BASE/connect admin: http://localhost:4445 - login: https://URL_BASE/login - logout: https://URL_BASE/logout - identity_provider: - url: http://127.0.0.1:4434/admin - publicUrl: https://URL_BASE/auth - + secrets: system: [] - + ttl: + access_token: 1h oidc: subject_identifiers: supported_types: From 31cf6a2ebc55397df2c0987f5c3db5d6dac1c018 Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Thu, 7 Nov 2024 16:17:30 -0500 Subject: [PATCH 151/175] connect --- salt/hydra/map.jinja | 3 --- 1 file changed, 3 deletions(-) diff --git a/salt/hydra/map.jinja b/salt/hydra/map.jinja index ca801a700..81e92073e 100644 --- a/salt/hydra/map.jinja +++ b/salt/hydra/map.jinja @@ -9,8 +9,5 @@ {% do HYDRADEFAULTS.hydra.config.urls.self.update({'issuer': HYDRADEFAULTS.hydra.config.urls.self.issuer | replace("URL_BASE", GLOBALS.url_base)}) %} {% do HYDRADEFAULTS.hydra.config.urls.self.update({'public': HYDRADEFAULTS.hydra.config.urls.self.public | replace("URL_BASE", GLOBALS.url_base)}) %} {% do HYDRADEFAULTS.hydra.config.urls.self.update({'admin': HYDRADEFAULTS.hydra.config.urls.self.admin | replace("URL_BASE", GLOBALS.url_base)}) %} -{% do HYDRADEFAULTS.hydra.config.urls.update({'login': HYDRADEFAULTS.hydra.config.urls.login | replace("URL_BASE", GLOBALS.url_base)}) %} -{% do HYDRADEFAULTS.hydra.config.urls.update({'logout': HYDRADEFAULTS.hydra.config.urls.logout | replace("URL_BASE", GLOBALS.url_base)}) %} -{% do HYDRADEFAULTS.hydra.config.urls.identity_provider.update({'publicUrl': HYDRADEFAULTS.hydra.config.urls.identity_provider.publicUrl | replace("URL_BASE", GLOBALS.url_base)}) %} {% set HYDRAMERGED = salt['pillar.get']('hydra', default=HYDRADEFAULTS.hydra, merge=true) %} \ No newline at end of file From 8334fd9c46d80ef12cc127b9a8d5c14eba04e0ac Mon Sep 17 00:00:00 2001 From: Corey Ogburn Date: Wed, 6 Nov 2024 10:52:34 -0700 Subject: [PATCH 152/175] Source Dates --- .../templates/component/so/detection-mappings.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/salt/elasticsearch/templates/component/so/detection-mappings.json b/salt/elasticsearch/templates/component/so/detection-mappings.json index 2e405912d..4dd5b45e7 100644 --- a/salt/elasticsearch/templates/component/so/detection-mappings.json +++ b/salt/elasticsearch/templates/component/so/detection-mappings.json @@ -64,7 +64,7 @@ }, "tags": { "ignore_above": 1024, - "type": "keyword" + "type": "keyword" }, "ruleset": { "ignore_above": 1024, @@ -82,6 +82,12 @@ "ignore_above": 1024, "type": "keyword" }, + "sourceCreated": { + "type": "date" + }, + "sourceUpdated": { + "type": "date" + }, "overrides": { "properties": { "type": { From 8b70aa9f0eedc3e05372362eae5bce1301628495 Mon Sep 17 00:00:00 2001 From: defensivedepth Date: Fri, 8 Nov 2024 09:19:41 -0500 Subject: [PATCH 153/175] Fix socore permissions --- salt/soc/config.sls | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/salt/soc/config.sls b/salt/soc/config.sls index 52281db74..c153ad7a6 100644 --- a/salt/soc/config.sls +++ b/salt/soc/config.sls @@ -198,11 +198,22 @@ socsensoronirepos: - mode: 775 - makedirs: True +make-repo-dir-yara: + file.directory: + - name: /nsm/rules/custom-local-repos/local-yara + - user: socore + - group: socore + - makedirs: True + - recurse: + - user + - group + create_custom_local_yara_repo_template: git.present: - name: /nsm/rules/custom-local-repos/local-yara - bare: False - force: True + - user: socore add_readme_custom_local_yara_repo_template: file.managed: @@ -214,11 +225,22 @@ add_readme_custom_local_yara_repo_template: - context: repo_type: "yara" +make-repo-dir-sigma: + file.directory: + - name: /nsm/rules/custom-local-repos/local-sigma + - user: socore + - group: socore + - makedirs: True + - recurse: + - user + - group + create_custom_local_sigma_repo_template: git.present: - name: /nsm/rules/custom-local-repos/local-sigma - bare: False - force: True + - user: socore add_readme_custom_local_sigma_repo_template: file.managed: From dcbb0e48d4684fc676d72a27e1744a84737d16ae Mon Sep 17 00:00:00 2001 From: defensivedepth Date: Fri, 8 Nov 2024 14:34:29 -0500 Subject: [PATCH 154/175] make sure its owned by socore --- salt/soc/config.sls | 29 +++++++++-------------------- 1 file changed, 9 insertions(+), 20 deletions(-) diff --git a/salt/soc/config.sls b/salt/soc/config.sls index c153ad7a6..89627d659 100644 --- a/salt/soc/config.sls +++ b/salt/soc/config.sls @@ -198,22 +198,12 @@ socsensoronirepos: - mode: 775 - makedirs: True -make-repo-dir-yara: - file.directory: - - name: /nsm/rules/custom-local-repos/local-yara - - user: socore - - group: socore - - makedirs: True - - recurse: - - user - - group create_custom_local_yara_repo_template: git.present: - name: /nsm/rules/custom-local-repos/local-yara - bare: False - force: True - - user: socore add_readme_custom_local_yara_repo_template: file.managed: @@ -225,22 +215,12 @@ add_readme_custom_local_yara_repo_template: - context: repo_type: "yara" -make-repo-dir-sigma: - file.directory: - - name: /nsm/rules/custom-local-repos/local-sigma - - user: socore - - group: socore - - makedirs: True - - recurse: - - user - - group create_custom_local_sigma_repo_template: git.present: - name: /nsm/rules/custom-local-repos/local-sigma - bare: False - force: True - - user: socore add_readme_custom_local_sigma_repo_template: file.managed: @@ -251,6 +231,15 @@ add_readme_custom_local_sigma_repo_template: - template: jinja - context: repo_type: "sigma" + +socore_own_custom_repos: + file.directory: + - name: /nsm/rules/custom-local-repos/ + - user: socore + - group: socore + - recurse: + - user + - group {% else %} From ee4405e75ea27035e43304932ca3d5c2d3cb38b0 Mon Sep 17 00:00:00 2001 From: m0duspwnens Date: Fri, 8 Nov 2024 16:13:44 -0500 Subject: [PATCH 155/175] only enable repo sync cron if OEL --- salt/manager/init.sls | 5 +---- salt/manager/map.jinja | 6 +++++- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/salt/manager/init.sls b/salt/manager/init.sls index 96055df24..07c39b371 100644 --- a/salt/manager/init.sls +++ b/salt/manager/init.sls @@ -6,10 +6,7 @@ {% from 'allowed_states.map.jinja' import allowed_states %} {% if sls in allowed_states %} {% from 'vars/globals.map.jinja' import GLOBALS %} -{% from 'strelka/map.jinja' import STRELKAMERGED %} -{% import_yaml 'manager/defaults.yaml' as MANAGERDEFAULTS %} -{% set MANAGERMERGED = salt['pillar.get']('manager', MANAGERDEFAULTS.manager, merge=true) %} -{% from 'strelka/map.jinja' import STRELKAMERGED %} +{% from 'manager/map.jinja' import MANAGERMERGED %} include: - salt.minion diff --git a/salt/manager/map.jinja b/salt/manager/map.jinja index 1ab9c12c3..4ea04a1cf 100644 --- a/salt/manager/map.jinja +++ b/salt/manager/map.jinja @@ -4,4 +4,8 @@ Elastic License 2.0. #} {% import_yaml 'manager/defaults.yaml' as MANAGERDEFAULTS %} -{% set MANAGERMERGED = salt['pillar.get']('manager', MANAGERDEFAULTS.manager, merge=True) %} \ No newline at end of file +{% set MANAGERMERGED = salt['pillar.get']('manager', MANAGERDEFAULTS.manager, merge=True) %} + +{% if grains.os != 'OEL' %} +{% do MANAGERMERGED.reposync.update({'enabled': False}) %} +{% endif %} From 7875406da1c977c8d328fdb3787405431af0531b Mon Sep 17 00:00:00 2001 From: m0duspwnens Date: Mon, 11 Nov 2024 10:54:51 -0500 Subject: [PATCH 156/175] update bootstrap-salt for broadcom changes --- salt/salt/scripts/bootstrap-salt.sh | 4185 ++++++++------------------- 1 file changed, 1221 insertions(+), 2964 deletions(-) diff --git a/salt/salt/scripts/bootstrap-salt.sh b/salt/salt/scripts/bootstrap-salt.sh index a016524e6..e6b25f2d3 100644 --- a/salt/salt/scripts/bootstrap-salt.sh +++ b/salt/salt/scripts/bootstrap-salt.sh @@ -1,9 +1,12 @@ -#!/bin/sh - +#!/bin/sh # WARNING: Changes to this file in the salt repo will be overwritten! # Please submit pull requests against the salt-bootstrap repo: # https://github.com/saltstack/salt-bootstrap - +# shellcheck disable=SC2317 +# shellcheck disable=SC2086 +# shellcheck disable=SC2329 +# #====================================================================================================================== # vim: softtabstop=4 shiftwidth=4 expandtab fenc=utf-8 spell spelllang=en cc=120 #====================================================================================================================== @@ -14,7 +17,7 @@ # # BUGS: https://github.com/saltstack/salt-bootstrap/issues # -# COPYRIGHT: (c) 2012-2022 by the SaltStack Team, see AUTHORS.rst for more +# COPYRIGHT: (c) 2012-2024 by the SaltStack Team, see AUTHORS.rst for more # details. # # LICENSE: Apache 2.0 @@ -23,7 +26,7 @@ #====================================================================================================================== set -o nounset # Treat unset variables as an error -__ScriptVersion="2023.08.03" +__ScriptVersion="2024.11.07" __ScriptName="bootstrap-salt.sh" __ScriptFullName="$0" @@ -121,16 +124,35 @@ __check_command_exists() { command -v "$1" > /dev/null 2>&1 } +#--- FUNCTION ------------------------------------------------------------------------------------------------------- +# NAME: __check_services_systemd_functional +# DESCRIPTION: Set _SYSTEMD_FUNCTIONAL = BS_TRUE or BS_FALSE case where systemd is functional (for example: container may not have systemd) +#---------------------------------------------------------------------------------------------------------------------- +__check_services_systemd_functional() { + + # check if systemd is functional, having systemctl present is insufficient + + if [ "$_SYSTEMD_FUNCTIONAL" -eq $BS_FALSE ]; then + # already determined systemd is not functional, default is 1 + return + fi + + if __check_command_exists systemctl; then + # shellcheck disable=SC2034 + _SYSTEMD_HELP="$(systemctl --help)" + else + _SYSTEMD_FUNCTIONAL=$BS_FALSE + echoerror "systemctl: command not found, assume systemd not implemented, _SYSTEMD_FUNCTIONAL $_SYSTEMD_FUNCTIONAL" + fi +} # ---------- end of function __check_services_systemd_functional ---------- + #--- FUNCTION ------------------------------------------------------------------------------------------------------- # NAME: __check_pip_allowed # DESCRIPTION: Simple function to let the users know that -P needs to be used. #---------------------------------------------------------------------------------------------------------------------- __check_pip_allowed() { - if [ $# -eq 1 ]; then - _PIP_ALLOWED_ERROR_MSG=$1 - else - _PIP_ALLOWED_ERROR_MSG="pip based installations were not allowed. Retry using '-P'" - fi + + _PIP_ALLOWED_ERROR_MSG="pip based installations were not allowed. Retry using '-P'" if [ "$_PIP_ALLOWED" -eq $BS_FALSE ]; then echoerror "$_PIP_ALLOWED_ERROR_MSG" @@ -228,6 +250,7 @@ _TEMP_KEYS_DIR="null" _SLEEP="${__DEFAULT_SLEEP}" _INSTALL_MASTER=$BS_FALSE _INSTALL_SYNDIC=$BS_FALSE +_INSTALL_SALT_API=$BS_FALSE _INSTALL_MINION=$BS_TRUE _INSTALL_CLOUD=$BS_FALSE _VIRTUALENV_DIR=${BS_VIRTUALENV_DIR:-"null"} @@ -266,19 +289,16 @@ _CUSTOM_REPO_URL="null" _CUSTOM_MASTER_CONFIG="null" _CUSTOM_MINION_CONFIG="null" _QUIET_GIT_INSTALLATION=$BS_FALSE -_REPO_URL="repo.saltproject.io" -_ONEDIR_DIR="salt" -_ONEDIR_NIGHTLY_DIR="salt-dev/${_ONEDIR_DIR}" +_REPO_URL="packages.broadcom.com/artifactory" _PY_EXE="python3" -_INSTALL_PY="$BS_FALSE" -_TORNADO_MAX_PY3_VERSION="5.0" -_POST_NEON_INSTALL=$BS_FALSE _MINIMUM_PIP_VERSION="9.0.1" -_MINIMUM_SETUPTOOLS_VERSION="9.1" -_POST_NEON_PIP_INSTALL_ARGS="--prefix=/usr" +_MINIMUM_SETUPTOOLS_VERSION="65.6.3" +_MAXIMUM_SETUPTOOLS_VERSION="69.0" +_PIP_INSTALL_ARGS="--prefix=/usr" _PIP_DOWNLOAD_ARGS="" _QUICK_START="$BS_FALSE" _AUTO_ACCEPT_MINION_KEYS="$BS_FALSE" +_SYSTEMD_FUNCTIONAL=$BS_TRUE # Defaults for install arguments ITYPE="stable" @@ -297,9 +317,9 @@ __usage() { - stable Install latest stable release. This is the default install type - stable [branch] Install latest version on a branch. Only supported - for packages available at repo.saltproject.io + for packages available at packages.broadcom.com - stable [version] Install a specific version. Only supported for - packages available at repo.saltproject.io + packages available at packages.broadcom.com To pin a 3xxx minor version, specify it as 3xxx.0 - testing RHEL-family specific: configure EPEL testing repo - git Install from the head of the master branch @@ -307,17 +327,11 @@ __usage() { commit) - onedir Install latest onedir release. - onedir [version] Install a specific version. Only supported for - onedir packages available at repo.saltproject.io + onedir packages available at packages.broadcom.com - onedir_rc Install latest onedir RC release. - onedir_rc [version] Install a specific version. Only supported for - onedir RC packages available at repo.saltproject.io - - old-stable Install latest old stable release. - - old-stable [branch] Install latest version on a branch. Only supported - for packages available at repo.saltproject.io - - old-stable [version] Install a specific version. Only supported for - packages available at repo.saltproject.io - To pin a 3xxx minor version, specify it as 3xxx.0 + onedir RC packages available at packages.broadcom.com Examples: - ${__ScriptName} @@ -326,16 +340,15 @@ __usage() { - ${__ScriptName} stable 3006.1 - ${__ScriptName} testing - ${__ScriptName} git - - ${__ScriptName} git 2017.7 - - ${__ScriptName} git v2017.7.2 + - ${__ScriptName} git 3006.7 + - ${__ScriptName} git v3006.8 + - ${__ScriptName} git 3007.1 + - ${__ScriptName} git v3007.1 - ${__ScriptName} git 06f249901a2e2f1ed310d58ea3921a129f214358 - ${__ScriptName} onedir - ${__ScriptName} onedir 3006 - ${__ScriptName} onedir_rc - - ${__ScriptName} onedir_rc 3006 - - ${__ScriptName} old-stable - - ${__ScriptName} old-stable 3005 - - ${__ScriptName} old-stable 3005.1 + - ${__ScriptName} onedir_rc 3008 Options: @@ -349,7 +362,7 @@ __usage() { step. -c Temporary configuration directory -C Only run the configuration function. Implies -F (forced overwrite). - To overwrite Master or Syndic configs, -M or -S, respectively, must + To overwrite Master, Syndic or Api configs, -M,-S or -W, respectively, must also be specified. Salt installation will be ommitted, but some of the dependencies could be installed to write configuration with -j or -J. -d Disables checking if Salt services are enabled to start on system boot. @@ -401,8 +414,8 @@ __usage() { And automatically accept the minion key. -R Specify a custom repository URL. Assumes the custom repository URL points to a repository that mirrors Salt packages located at - repo.saltproject.io. The option passed with -R replaces the - "repo.saltproject.io". If -R is passed, -r is also set. Currently only + packages.broadcom.com. The option passed with -R replaces the + "packages.broadcom.com". If -R is passed, -r is also set. Currently only works on CentOS/RHEL and Debian based distributions and macOS. -s Sleep time used when waiting for daemons to start, restart and when checking for the services running. Default: ${__DEFAULT_SLEEP} @@ -414,23 +427,15 @@ __usage() { -v Display script version -V Install Salt into virtualenv (only available for Ubuntu based distributions) - -x Changes the Python version used to install Salt. - For CentOS 6 git installations python2.7 is supported. - Fedora git installation, CentOS 7, Ubuntu 18.04 support python3. + -W Also install salt-api + -x Changes the Python version used to install Salt (default: Python 3). + Python 2.7 is no longer supported. -X Do not start daemons after installation - -y Installs a different python version on host. Currently this has only been - tested with CentOS 6 and is considered experimental. This will install the - ius repo on the box if disable repo is false. This must be used in conjunction - with -x . For example: - sh bootstrap.sh -P -y -x python2.7 git v2017.7.2 - The above will install python27 and install the git version of salt using the - python2.7 executable. This only works for git and pip installations. EOT } # ---------- end of function __usage ---------- - -while getopts ':hvnDc:g:Gyx:k:s:MSNXCPFUKIA:i:Lp:dH:bflV:J:j:rR:aqQ' opt +while getopts ':hvnDc:g:Gx:k:s:MSWNXCPFUKIA:i:Lp:dH:bflV:J:j:rR:aqQ' opt do case "${opt}" in @@ -450,6 +455,7 @@ do s ) _SLEEP=$OPTARG ;; M ) _INSTALL_MASTER=$BS_TRUE ;; S ) _INSTALL_SYNDIC=$BS_TRUE ;; + W ) _INSTALL_SALT_API=$BS_TRUE ;; N ) _INSTALL_MINION=$BS_FALSE ;; X ) _START_DAEMONS=$BS_FALSE ;; C ) _CONFIG_ONLY=$BS_TRUE ;; @@ -476,7 +482,6 @@ do q ) _QUIET_GIT_INSTALLATION=$BS_TRUE ;; Q ) _QUICK_START=$BS_TRUE ;; x ) _PY_EXE="$OPTARG" ;; - y ) _INSTALL_PY="$BS_TRUE" ;; \?) echo echoerror "Option does not exist : $OPTARG" @@ -488,7 +493,6 @@ do done shift $((OPTIND-1)) - # Define our logging file and pipe paths LOGFILE="/tmp/$( echo "$__ScriptName" | sed s/.sh/.log/g )" LOGPIPE="/tmp/$( echo "$__ScriptName" | sed s/.sh/.logpipe/g )" @@ -596,7 +600,15 @@ fi echoinfo "Running version: ${__ScriptVersion}" echoinfo "Executed by: ${CALLER}" echoinfo "Command line: '${__ScriptFullName} ${__ScriptArgs}'" -echowarn "Running the unstable version of ${__ScriptName}" + +# Defaults +STABLE_REV="latest" +ONEDIR_REV="latest" +_ONEDIR_REV="latest" +YUM_REPO_FILE="/etc/yum.repos.d/salt.repo" + +# check if systemd is functional +__check_services_systemd_functional # Define installation type if [ "$#" -gt 0 ];then @@ -606,17 +618,11 @@ if [ "$#" -gt 0 ];then fi # Check installation type -if [ "$(echo "$ITYPE" | grep -E '(stable|testing|git|onedir|onedir_rc|old-stable)')" = "" ]; then +if [ "$(echo "$ITYPE" | grep -E '(stable|testing|git|onedir|onedir_rc)')" = "" ]; then echoerror "Installation type \"$ITYPE\" is not known..." exit 1 fi -# Due to our modifications to install_centos_onedir it is easiest to just lock down to only allowing stable install -if [ "$(echo "$ITYPE" | grep stable)" = "" ]; then - echoerror "This script has been modified to only support stable installation type. Installation type \"$ITYPE\" is not allowed..." - exit 1 -fi - # If doing a git install, check what branch/tag/sha will be checked out if [ "$ITYPE" = "git" ]; then if [ "$#" -eq 0 ];then @@ -632,45 +638,25 @@ if [ "$ITYPE" = "git" ]; then # If doing stable install, check if version specified elif [ "$ITYPE" = "stable" ]; then if [ "$#" -eq 0 ];then + STABLE_REV="latest" ONEDIR_REV="latest" _ONEDIR_REV="latest" ITYPE="onedir" else - if [ "$(echo "$1" | grep -E '^(nightly|latest|3005|3006)$')" != "" ]; then + if [ "$(echo "$1" | grep -E '^(latest|3006|3007)$')" != "" ]; then + STABLE_REV="$1" ONEDIR_REV="$1" _ONEDIR_REV="$1" ITYPE="onedir" shift elif [ "$(echo "$1" | grep -E '^([3-9][0-5]{2}[5-9](\.[0-9]*)?)')" != "" ]; then - ONEDIR_REV="minor/$1" + STABLE_REV="$1" + ONEDIR_REV="$1" _ONEDIR_REV="$1" ITYPE="onedir" shift else - echo "Unknown stable version: $1 (valid: 3005, 3006, latest)" - exit 1 - fi - fi - -# If doing old-stable install, check if version specified -elif [ "$ITYPE" = "old-stable" ]; then - if [ "$#" -eq 0 ];then - ITYPE="stable" - else - if [ "$(echo "$1" | grep -E '^(3003|3004|3005)$')" != "" ]; then - STABLE_REV="$1" - ITYPE="stable" - shift - elif [ "$(echo "$1" | grep -E '^([3-9][0-5]{3}(\.[0-9]*)?)$')" != "" ]; then - # Handle the 3xxx.0 version as 3xxx archive (pin to minor) and strip the fake ".0" suffix - ITYPE="stable" - STABLE_REV=$(echo "$1" | sed -E 's/^([3-9][0-9]{3})\.0$/\1/') - if [ "$(uname)" != "Darwin" ]; then - STABLE_REV="archive/$STABLE_REV" - fi - shift - else - echo "Unknown old stable version: $1 (valid: 3003, 3004, 3005)" + echo "Unknown stable version: $1 (valid: 3006, 3007, latest), versions older than 3006 are not available" exit 1 fi fi @@ -678,52 +664,54 @@ elif [ "$ITYPE" = "old-stable" ]; then elif [ "$ITYPE" = "onedir" ]; then if [ "$#" -eq 0 ];then ONEDIR_REV="latest" + STABLE_REV="latest" else - if [ "$(echo "$1" | grep -E '^(nightly|latest|3005|3006)$')" != "" ]; then + if [ "$(echo "$1" | grep -E '^(latest|3006|3007)$')" != "" ]; then ONEDIR_REV="$1" - shift - elif [ "$(echo "$1" | grep -E '^(3005(\.[0-9]*)?)')" != "" ]; then - # Handle the 3005.0 version as 3005 archive (pin to minor) and strip the fake ".0" suffix - ONEDIR_REV=$(echo "$1" | sed -E 's/^(3005)\.0$/\1/') - ONEDIR_REV="minor/$ONEDIR_REV" + STABLE_REV="$1" shift elif [ "$(echo "$1" | grep -E '^([3-9][0-9]{3}(\.[0-9]*)?)')" != "" ]; then - ONEDIR_REV="minor/$1" + ONEDIR_REV="$1" + STABLE_REV="$1" shift else - echo "Unknown onedir version: $1 (valid: 3005, 3006, latest, nightly.)" + echo "Unknown onedir version: $1 (valid: 3006, 3007, latest), versions older than 3006 are not available" exit 1 fi fi elif [ "$ITYPE" = "onedir_rc" ]; then - # Change the _ONEDIR_DIR to be the location for the RC packages - _ONEDIR_DIR="salt_rc/salt" + echoerror "RC Releases are not supported at this time" - # Change ITYPE to onedir so we use the regular onedir functions - ITYPE="onedir" - - if [ "$#" -eq 0 ];then - ONEDIR_REV="latest" - else - if [ "$(echo "$1" | grep -E '^(latest)$')" != "" ]; then - ONEDIR_REV="$1" - shift - elif [ "$(echo "$1" | grep -E '^([3-9][0-9]{3}?rc[0-9]-[0-9]$)')" != "" ]; then - # Handle the 3xxx.0 version as 3xxx archive (pin to minor) and strip the fake ".0" suffix - #ONEDIR_REV=$(echo "$1" | sed -E 's/^([3-9][0-9]{3})\.0$/\1/') - ONEDIR_REV="minor/$1" - shift - elif [ "$(echo "$1" | grep -E '^([3-9][0-9]{3}\.[0-9]?rc[0-9]$)')" != "" ]; then - # Handle the 3xxx.0 version as 3xxx archive (pin to minor) and strip the fake ".0" suffix - #ONEDIR_REV=$(echo "$1" | sed -E 's/^([3-9][0-9]{3})\.0$/\1/') - ONEDIR_REV="minor/$1" - shift - else - echo "Unknown onedir_rc version: $1 (valid: 3005-1, latest.)" - exit 1 - fi - fi +## # Change the _ONEDIR_DIR to be the location for the RC packages +## _ONEDIR_DIR="salt_rc/salt" +## +## # Change ITYPE to onedir so we use the regular onedir functions +## ITYPE="onedir" +## +## if [ "$#" -eq 0 ];then +## ONEDIR_REV="latest" +## else +## if [ "$(echo "$1" | grep -E '^(latest)$')" != "" ]; then +## ONEDIR_REV="$1" +## shift +## elif [ "$(echo "$1" | grep -E '^([3-9][0-9]{3}?rc[0-9]-[0-9]$)')" != "" ]; then +## # Handle the 3xxx.0 version as 3xxx archive (pin to minor) and strip the fake ".0" suffix +## #ONEDIR_REV=$(echo "$1" | sed -E 's/^([3-9][0-9]{3})\.0$/\1/') +## ## ONEDIR_REV="minor/$1" don't have minor directory anymore +## ONEDIR_REV="$1" +## shift +## elif [ "$(echo "$1" | grep -E '^([3-9][0-9]{3}\.[0-9]?rc[0-9]$)')" != "" ]; then +## # Handle the 3xxx.0 version as 3xxx archive (pin to minor) and strip the fake ".0" suffix +## #ONEDIR_REV=$(echo "$1" | sed -E 's/^([3-9][0-9]{3})\.0$/\1/') +## ## ONEDIR_REV="minor/$1" don't have minor directory anymore +## ONEDIR_REV="$1" +## shift +## else +## echo "Unknown onedir_rc version: $1 (valid: 3006-8, 3007-1, latest)" +## exit 1 +## fi +## fi fi # Doing a quick start, so install master @@ -773,7 +761,7 @@ if [ "$($whoami)" != "root" ]; then fi # Check that we're actually installing one of minion/master/syndic -if [ "$_INSTALL_MINION" -eq $BS_FALSE ] && [ "$_INSTALL_MASTER" -eq $BS_FALSE ] && [ "$_INSTALL_SYNDIC" -eq $BS_FALSE ] && [ "$_CONFIG_ONLY" -eq $BS_FALSE ]; then +if [ "$_INSTALL_MINION" -eq $BS_FALSE ] && [ "$_INSTALL_MASTER" -eq $BS_FALSE ] && [ "$_INSTALL_SYNDIC" -eq $BS_FALSE ] && [ "$_INSTALL_SALT_API" -eq $BS_FALSE ] && [ "$_CONFIG_ONLY" -eq $BS_FALSE ]; then echowarn "Nothing to install or configure" exit 1 fi @@ -806,6 +794,12 @@ if [ "$_CUSTOM_MINION_CONFIG" != "null" ]; then fi fi + +# Default to Python 3, no longer support for Python 2 +PY_PKG_VER=3 +_PY_PKG_VER="python3" +_PY_MAJOR_VERSION="3" + # Check if we're installing via a different Python executable and set major version variables if [ -n "$_PY_EXE" ]; then if [ "$(uname)" = "Darwin" ]; then @@ -814,19 +808,21 @@ if [ -n "$_PY_EXE" ]; then _PY_PKG_VER=$(echo "$_PY_EXE" | sed -E "s/\\.//g") fi - _PY_MAJOR_VERSION=$(echo "$_PY_PKG_VER" | cut -c 7) - if [ "$_PY_MAJOR_VERSION" != 3 ] && [ "$_PY_MAJOR_VERSION" != 2 ]; then - echoerror "Detected -x option, but Python major version is not 2 or 3." - echoerror "The -x option must be passed as python2, python27, or python2.7 (or use the Python '3' versions of examples)." + TEST_PY_MAJOR_VERSION=$(echo "$_PY_PKG_VER" | cut -c 7) + if [ "$TEST_PY_MAJOR_VERSION" -eq 2 ]; then + echoerror "Python 2 is no longer supported, only Python 3" + return 1 + fi + + if [ "$TEST_PY_MAJOR_VERSION" != 3 ]; then + echoerror "Detected -x option, but Python major version is not 3." + echoerror "The -x option must be passed as python3, python38, or python3.8 (use the Python '3' versions of examples)." exit 1 fi if [ "$_PY_EXE" != "python3" ]; then echoinfo "Detected -x option. Using $_PY_EXE to install Salt." fi -else - _PY_PKG_VER="" - _PY_MAJOR_VERSION="" fi # If the configuration directory or archive does not exist, error out @@ -843,7 +839,7 @@ fi # -a and -V only work from git if [ "$ITYPE" != "git" ]; then - if [ $_PIP_ALL -eq $BS_TRUE ]; then + if [ "$_PIP_ALL" -eq $BS_TRUE ]; then echoerror "Pip installing all python packages with -a is only possible when installing Salt via git" exit 1 fi @@ -853,7 +849,7 @@ if [ "$ITYPE" != "git" ]; then fi fi -# Set the _REPO_URL value based on if -R was passed or not. Defaults to repo.saltproject.io. +# Set the _REPO_URL value based on if -R was passed or not. Defaults to packages.broadcom.com if [ "$_CUSTOM_REPO_URL" != "null" ]; then _REPO_URL="$_CUSTOM_REPO_URL" @@ -938,6 +934,7 @@ __fetch_url() { # DESCRIPTION: Retrieves a URL, verifies its content and writes it to standard output #---------------------------------------------------------------------------------------------------------------------- __fetch_verify() { + fetch_verify_url="$1" fetch_verify_sum="$2" fetch_verify_size="$3" @@ -959,6 +956,7 @@ __fetch_verify() { # DESCRIPTION: Checks if a URL exists #---------------------------------------------------------------------------------------------------------------------- __check_url_exists() { + _URL="$1" if curl --output /dev/null --silent --fail "${_URL}"; then return 0 @@ -1035,17 +1033,12 @@ __derive_debian_numeric_version() { INPUT_VERSION="$(cat /etc/debian_version)" fi if [ -z "$NUMERIC_VERSION" ]; then - if [ "$INPUT_VERSION" = "wheezy/sid" ]; then - # I've found an EC2 wheezy image which did not tell its version - NUMERIC_VERSION=$(__parse_version_string "7.0") - elif [ "$INPUT_VERSION" = "jessie/sid" ]; then - NUMERIC_VERSION=$(__parse_version_string "8.0") - elif [ "$INPUT_VERSION" = "stretch/sid" ]; then - NUMERIC_VERSION=$(__parse_version_string "9.0") - elif [ "$INPUT_VERSION" = "buster/sid" ]; then - NUMERIC_VERSION=$(__parse_version_string "10.0") - elif [ "$INPUT_VERSION" = "bullseye/sid" ]; then + if [ "$INPUT_VERSION" = "bullseye/sid" ]; then NUMERIC_VERSION=$(__parse_version_string "11.0") + elif [ "$INPUT_VERSION" = "bookworm/sid" ]; then + NUMERIC_VERSION=$(__parse_version_string "12.0") + elif [ "$INPUT_VERSION" = "trixie/sid" ]; then + NUMERIC_VERSION=$(__parse_version_string "13.0") else echowarn "Unable to parse the Debian Version (codename: '$INPUT_VERSION')" fi @@ -1129,6 +1122,7 @@ __gather_linux_system_info() { DISTRO_VERSION="" # Let's test if the lsb_release binary is available + # shellcheck disable=SC2327,SC2328 rv=$(lsb_release >/dev/null 2>&1) # shellcheck disable=SC2181 @@ -1186,7 +1180,7 @@ __gather_linux_system_info() { # We already have the distribution name and version return fi - # shellcheck disable=SC2035,SC2086 + # shellcheck disable=SC2035,SC2086,SC2269 for rsource in $(__sort_release_files "$( cd /etc && /bin/ls *[_-]release *[_-]version 2>/dev/null | env -i sort | \ sed -e '/^redhat-release$/d' -e '/^lsb-release$/d'; \ @@ -1288,127 +1282,6 @@ __gather_linux_system_info() { } -#--- FUNCTION ------------------------------------------------------------------------------------------------------- -# NAME: __install_python() -# DESCRIPTION: Install a different version of python on a host. Currently this has only been tested on CentOS 6 and -# is considered experimental. -#---------------------------------------------------------------------------------------------------------------------- -__install_python() { - if [ "$_PY_EXE" = "" ]; then - echoerror "Must specify -x with -y to install a specific python version" - exit 1 - fi - - __PACKAGES="$_PY_PKG_VER" - - if [ ${_DISABLE_REPOS} -eq ${BS_FALSE} ]; then - echoinfo "Attempting to install a repo to help provide a separate python package" - echoinfo "$DISTRO_NAME_L" - case "$DISTRO_NAME_L" in - "red_hat"|"centos") - __PYTHON_REPO_URL="https://repo.ius.io/ius-release-el${DISTRO_MAJOR_VERSION}.rpm" - ;; - *) - echoerror "Installing a repo to provide a python package is only supported on Redhat/CentOS. - If a repo is already available, please try running script with -r." - exit 1 - ;; - esac - - echoinfo "Installing IUS repo" - __yum_install_noinput "${__PYTHON_REPO_URL}" || return 1 - fi - - echoinfo "Installing ${__PACKAGES}" - __yum_install_noinput "${__PACKAGES}" || return 1 -} - - -#--- FUNCTION ------------------------------------------------------------------------------------------------------- -# NAME: __gather_sunos_system_info -# DESCRIPTION: Discover SunOS system info -#---------------------------------------------------------------------------------------------------------------------- -__gather_sunos_system_info() { - if [ -f /sbin/uname ]; then - DISTRO_VERSION=$(/sbin/uname -X | awk '/[kK][eE][rR][nN][eE][lL][iI][dD]/ { print $3 }') - fi - - DISTRO_NAME="" - if [ -f /etc/release ]; then - while read -r line; do - [ "${DISTRO_NAME}" != "" ] && break - case "$line" in - *OpenIndiana*oi_[0-9]*) - DISTRO_NAME="OpenIndiana" - DISTRO_VERSION=$(echo "$line" | sed -nE "s/OpenIndiana(.*)oi_([[:digit:]]+)(.*)/\\2/p") - break - ;; - *OpenSolaris*snv_[0-9]*) - DISTRO_NAME="OpenSolaris" - DISTRO_VERSION=$(echo "$line" | sed -nE "s/OpenSolaris(.*)snv_([[:digit:]]+)(.*)/\\2/p") - break - ;; - *Oracle*Solaris*[0-9]*) - DISTRO_NAME="Oracle Solaris" - DISTRO_VERSION=$(echo "$line" | sed -nE "s/(Oracle Solaris) ([[:digit:]]+)(.*)/\\2/p") - break - ;; - *Solaris*) - DISTRO_NAME="Solaris" - # Let's make sure we not actually on a Joyent's SmartOS VM since some releases - # don't have SmartOS in `/etc/release`, only `Solaris` - if uname -v | grep joyent >/dev/null 2>&1; then - DISTRO_NAME="SmartOS" - fi - break - ;; - *NexentaCore*) - DISTRO_NAME="Nexenta Core" - break - ;; - *SmartOS*) - DISTRO_NAME="SmartOS" - break - ;; - *OmniOS*) - DISTRO_NAME="OmniOS" - DISTRO_VERSION=$(echo "$line" | awk '{print $3}') - _SIMPLIFY_VERSION=$BS_FALSE - break - ;; - esac - done < /etc/release - fi - - if [ "${DISTRO_NAME}" = "" ]; then - DISTRO_NAME="Solaris" - DISTRO_VERSION=$( - echo "${OS_VERSION}" | - sed -e 's;^4\.;1.;' \ - -e 's;^5\.\([0-6]\)[^0-9]*$;2.\1;' \ - -e 's;^5\.\([0-9][0-9]*\).*;\1;' - ) - fi - - if [ "${DISTRO_NAME}" = "SmartOS" ]; then - VIRTUAL_TYPE="smartmachine" - if [ "$(zonename)" = "global" ]; then - VIRTUAL_TYPE="global" - fi - fi -} - - -#--- FUNCTION ------------------------------------------------------------------------------------------------------- -# NAME: __gather_bsd_system_info -# DESCRIPTION: Discover OpenBSD, NetBSD and FreeBSD systems information -#---------------------------------------------------------------------------------------------------------------------- -__gather_bsd_system_info() { - DISTRO_NAME=${OS_NAME} - DISTRO_VERSION=$(echo "${OS_VERSION}" | sed -e 's;[()];;' -e 's/-.*$//') -} - - #--- FUNCTION ------------------------------------------------------------------------------------------------------- # NAME: __gather_osx_system_info # DESCRIPTION: Discover MacOS X @@ -1428,12 +1301,6 @@ __gather_system_info() { linux ) __gather_linux_system_info ;; - sunos ) - __gather_sunos_system_info - ;; - openbsd|freebsd|netbsd ) - __gather_bsd_system_info - ;; darwin ) __gather_osx_system_info ;; @@ -1454,21 +1321,23 @@ __gather_system_info() { #---------------------------------------------------------------------------------------------------------------------- # shellcheck disable=SC2034 __ubuntu_derivatives_translation() { - UBUNTU_DERIVATIVES="(trisquel|linuxmint|linaro|elementary_os|neon|pop)" + UBUNTU_DERIVATIVES="(trisquel|linuxmint|elementary_os|pop|neon)" # Mappings - trisquel_6_ubuntu_base="12.04" - linuxmint_13_ubuntu_base="12.04" - linuxmint_17_ubuntu_base="14.04" - linuxmint_18_ubuntu_base="16.04" - linuxmint_19_ubuntu_base="18.04" - linuxmint_20_ubuntu_base="20.04" - linaro_12_ubuntu_base="12.04" - elementary_os_02_ubuntu_base="12.04" - neon_16_ubuntu_base="16.04" - neon_18_ubuntu_base="18.04" + trisquel_10_ubuntu_base="20.04" + trisquel_11_ubuntu_base="22.04" + trisquel_12_ubuntu_base="24.04" neon_20_ubuntu_base="20.04" neon_22_ubuntu_base="22.04" + neon_24_ubuntu_base="24.04" + linuxmint_20_ubuntu_base="20.04" + linuxmint_21_ubuntu_base="22.04" + linuxmint_22_ubuntu_base="24.04" + elementary_os_06_ubuntu_base="20.04" + elementary_os_07_ubuntu_base="22.04" + elementary_os_08_ubuntu_base="24.04" + pop_20_ubuntu_base="22.04" pop_22_ubuntu_base="22.04" + pop_24_ubuntu_base="24.04" # Translate Ubuntu derivatives to their base Ubuntu version match=$(echo "$DISTRO_NAME_L" | grep -E ${UBUNTU_DERIVATIVES}) @@ -1511,42 +1380,24 @@ __check_dpkg_architecture() { return 1 fi - __REPO_ARCH="$DPKG_ARCHITECTURE" - __REPO_ARCH_DEB='deb [signed-by=/usr/share/keyrings/salt-archive-keyring.gpg]' __return_code=0 case $DPKG_ARCHITECTURE in "i386") - error_msg="$_REPO_URL likely doesn't have all required 32-bit packages for $DISTRO_NAME $DISTRO_MAJOR_VERSION." + error_msg="$_REPO_URL likely doesn't have required 32-bit packages for $DISTRO_NAME $DISTRO_MAJOR_VERSION." # amd64 is just a part of repository URI, 32-bit pkgs are hosted under the same location - __REPO_ARCH="amd64" + __return_code=1 ;; "amd64") error_msg="" ;; "arm64") - if [ "$_CUSTOM_REPO_URL" != "null" ]; then - warn_msg="Support for arm64 is experimental, make sure the custom repository used has the expected structure and contents." - else - # Saltstack official repository has arm64 metadata beginning with Debian 11, - # use amd64 repositories on arm64 for anything older, since all pkgs are arch-independent - if [ "$DISTRO_NAME_L" = "debian" ] && [ "$DISTRO_MAJOR_VERSION" -lt 11 ]; then - __REPO_ARCH="amd64" - else - __REPO_ARCH="arm64" - fi - __REPO_ARCH_DEB="deb [signed-by=/usr/share/keyrings/salt-archive-keyring.gpg arch=$__REPO_ARCH]" - warn_msg="Support for arm64 packages is experimental and might rely on architecture-independent packages from the amd64 repository." - fi + # Saltstack official repository has full arm64 support since 3006 error_msg="" ;; "armhf") - if [ "$DISTRO_NAME_L" = "ubuntu" ] || [ "$DISTRO_MAJOR_VERSION" -lt 8 ]; then - error_msg="Support for armhf packages at $_REPO_URL is limited to Debian/Raspbian 8 platforms." - __return_code=1 - else - error_msg="" - fi + error_msg="$_REPO_URL doesn't have packages for your system architecture: $DPKG_ARCHITECTURE." + __return_code=1 ;; *) error_msg="$_REPO_URL doesn't have packages for your system architecture: $DPKG_ARCHITECTURE." @@ -1562,10 +1413,10 @@ __check_dpkg_architecture() { if [ "${error_msg}" != "" ]; then echoerror "${error_msg}" if [ "$ITYPE" != "git" ]; then - echoerror "You can try git installation mode, i.e.: sh ${__ScriptName} git v2017.7.2." + echoerror "You can try git installation mode, i.e.: sh ${__ScriptName} git v3006.6." echoerror "It may be necessary to use git installation mode with pip and disable the SaltStack apt repository." echoerror "For example:" - echoerror " sh ${__ScriptName} -r -P git v2017.7.2" + echoerror " sh ${__ScriptName} -r -P git v3006.6" fi fi @@ -1617,8 +1468,14 @@ __ubuntu_codename_translation() { "22") DISTRO_CODENAME="jammy" ;; + "23") + DISTRO_CODENAME="lunar" + ;; + "24") + DISTRO_CODENAME="noble" + ;; *) - DISTRO_CODENAME="trusty" + DISTRO_CODENAME="noble" ;; esac } @@ -1637,20 +1494,21 @@ __debian_derivatives_translation() { DEBIAN_DERIVATIVES="(cumulus|devuan|kali|linuxmint|raspbian|bunsenlabs|turnkey)" # Mappings - cumulus_2_debian_base="7.0" - cumulus_3_debian_base="8.0" - cumulus_4_debian_base="10.0" - devuan_1_debian_base="8.0" - devuan_2_debian_base="9.0" + cumulus_5_debian_base="11.0" + cumulus_6_debian_base="12.0" + devuan_4_debian_base="11.0" + devuan_5_debian_base="12.0" kali_1_debian_base="7.0" kali_2021_debian_base="10.0" - linuxmint_1_debian_base="8.0" - raspbian_8_debian_base="8.0" - raspbian_9_debian_base="9.0" - raspbian_10_debian_base="10.0" + linuxmint_4_debian_base="11.0" + linuxmint_5_debian_base="12.0" raspbian_11_debian_base="11.0" + raspbian_12_debian_base="12.0" bunsenlabs_9_debian_base="9.0" - turnkey_9_debian_base="9.0" + bunsenlabs_11_debian_base="11.0" + bunsenlabs_12_debian_base="12.0" + turnkey_11_debian_base="11.0" + turnkey_12_debian_base="12.0" # Translate Debian derivatives to their base Debian version match=$(echo "$DISTRO_NAME_L" | grep -E ${DEBIAN_DERIVATIVES}) @@ -1718,14 +1576,9 @@ __debian_codename_translation() { ;; "12") DISTRO_CODENAME="bookworm" - # FIXME - TEMPORARY - # use bullseye packages until bookworm packages are available - DISTRO_CODENAME="bullseye" - DISTRO_MAJOR_VERSION=11 - rv=11 ;; *) - DISTRO_CODENAME="stretch" + DISTRO_CODENAME="bookworm" ;; esac } @@ -1738,8 +1591,8 @@ __debian_codename_translation() { __check_end_of_life_versions() { case "${DISTRO_NAME_L}" in debian) - # Debian versions below 9 are not supported - if [ "$DISTRO_MAJOR_VERSION" -lt 9 ]; then + # Debian versions below 11 are not supported + if [ "$DISTRO_MAJOR_VERSION" -lt 11 ]; then echoerror "End of life distributions are not supported." echoerror "Please consider upgrading to the next stable. See:" echoerror " https://wiki.debian.org/DebianReleases" @@ -1750,18 +1603,18 @@ __check_end_of_life_versions() { ubuntu) # Ubuntu versions not supported # - # < 16.04 - # = 16.10 - # = 17.04, 17.10 - # = 18.10 - # = 19.04, 19.10 + # < 20.04 # = 20.10 - if [ "$DISTRO_MAJOR_VERSION" -lt 16 ] || \ - [ "$DISTRO_MAJOR_VERSION" -eq 17 ] || \ - [ "$DISTRO_MAJOR_VERSION" -eq 19 ] || \ - { [ "$DISTRO_MAJOR_VERSION" -eq 16 ] && [ "$DISTRO_MINOR_VERSION" -eq 10 ]; } || \ - { [ "$DISTRO_MAJOR_VERSION" -eq 18 ] && [ "$DISTRO_MINOR_VERSION" -eq 10 ]; } || \ - { [ "$DISTRO_MAJOR_VERSION" -eq 20 ] && [ "$DISTRO_MINOR_VERSION" -eq 10 ]; }; then + # = 21.04, 21.10 + # = 22.10 + # = 23.04, 23.10 + if [ "$DISTRO_MAJOR_VERSION" -lt 20 ] || \ + { [ "$DISTRO_MAJOR_VERSION" -eq 20 ] && [ "$DISTRO_MINOR_VERSION" -eq 10 ]; } || \ + { [ "$DISTRO_MAJOR_VERSION" -eq 21 ] && [ "$DISTRO_MINOR_VERSION" -eq 04 ]; } || \ + { [ "$DISTRO_MAJOR_VERSION" -eq 21 ] && [ "$DISTRO_MINOR_VERSION" -eq 10 ]; } || \ + { [ "$DISTRO_MAJOR_VERSION" -eq 22 ] && [ "$DISTRO_MINOR_VERSION" -eq 10 ]; } || \ + { [ "$DISTRO_MAJOR_VERSION" -eq 23 ] && [ "$DISTRO_MINOR_VERSION" -eq 04 ]; } || \ + { [ "$DISTRO_MAJOR_VERSION" -eq 23 ] && [ "$DISTRO_MINOR_VERSION" -eq 10 ]; }; then echoerror "End of life distributions are not supported." echoerror "Please consider upgrading to the next stable. See:" echoerror " https://wiki.ubuntu.com/Releases" @@ -1805,8 +1658,8 @@ __check_end_of_life_versions() { ;; fedora) - # Fedora lower than 33 are no longer supported - if [ "$DISTRO_MAJOR_VERSION" -lt 33 ]; then + # Fedora lower than 38 are no longer supported + if [ "$DISTRO_MAJOR_VERSION" -lt 39 ]; then echoerror "End of life distributions are not supported." echoerror "Please consider upgrading to the next stable. See:" echoerror " https://fedoraproject.org/wiki/Releases" @@ -1815,8 +1668,8 @@ __check_end_of_life_versions() { ;; centos) - # CentOS versions lower than 7 are no longer supported - if [ "$DISTRO_MAJOR_VERSION" -lt 7 ]; then + # CentOS versions lower than 8 are no longer supported + if [ "$DISTRO_MAJOR_VERSION" -lt 8 ]; then echoerror "End of life distributions are not supported." echoerror "Please consider upgrading to the next stable. See:" echoerror " http://wiki.centos.org/Download" @@ -1825,8 +1678,8 @@ __check_end_of_life_versions() { ;; red_hat*linux) - # Red Hat (Enterprise) Linux versions lower than 7 are no longer supported - if [ "$DISTRO_MAJOR_VERSION" -lt 7 ]; then + # Red Hat (Enterprise) Linux versions lower than 8 are no longer supported + if [ "$DISTRO_MAJOR_VERSION" -lt 8 ]; then echoerror "End of life distributions are not supported." echoerror "Please consider upgrading to the next stable. See:" echoerror " https://access.redhat.com/support/policy/updates/errata/" @@ -1835,8 +1688,8 @@ __check_end_of_life_versions() { ;; oracle*linux) - # Oracle Linux versions lower than 7 are no longer supported - if [ "$DISTRO_MAJOR_VERSION" -lt 7 ]; then + # Oracle Linux versions lower than 8 are no longer supported + if [ "$DISTRO_MAJOR_VERSION" -lt 8 ]; then echoerror "End of life distributions are not supported." echoerror "Please consider upgrading to the next stable. See:" echoerror " http://www.oracle.com/us/support/library/elsp-lifetime-069338.pdf" @@ -1845,8 +1698,8 @@ __check_end_of_life_versions() { ;; scientific*linux) - # Scientific Linux versions lower than 7 are no longer supported - if [ "$DISTRO_MAJOR_VERSION" -lt 7 ]; then + # Scientific Linux versions lower than 8 are no longer supported + if [ "$DISTRO_MAJOR_VERSION" -lt 8 ]; then echoerror "End of life distributions are not supported." echoerror "Please consider upgrading to the next stable. See:" echoerror " https://www.scientificlinux.org/downloads/sl-versions/" @@ -1855,8 +1708,8 @@ __check_end_of_life_versions() { ;; cloud*linux) - # Cloud Linux versions lower than 7 are no longer supported - if [ "$DISTRO_MAJOR_VERSION" -lt 7 ]; then + # Cloud Linux versions lower than 8 are no longer supported + if [ "$DISTRO_MAJOR_VERSION" -lt 8 ]; then echoerror "End of life distributions are not supported." echoerror "Please consider upgrading to the next stable. See:" echoerror " https://docs.cloudlinux.com/index.html?cloudlinux_life-cycle.html" @@ -1875,20 +1728,11 @@ __check_end_of_life_versions() { fi ;; - freebsd) - # FreeBSD versions lower than 11 are EOL - if [ "$DISTRO_MAJOR_VERSION" -lt 11 ]; then - echoerror "Versions lower than FreeBSD 11 are EOL and no longer supported." - exit 1 - fi - ;; - *) ;; esac } - __gather_system_info echo @@ -1963,8 +1807,16 @@ if [ "$_INSTALL_SYNDIC" -eq $BS_TRUE ]; then fi fi +if [ "$_INSTALL_SALT_API" -eq $BS_TRUE ]; then + if [ "$_CONFIG_ONLY" -eq $BS_FALSE ]; then + echoinfo "Installing salt api" + else + echoinfo "Configuring salt api" + fi +fi + if [ "$_INSTALL_CLOUD" -eq $BS_TRUE ] && [ "$_CONFIG_ONLY" -eq $BS_FALSE ]; then - echoinfo "Installing salt-cloud and required python-libcloud package" + echoinfo "Installing salt-cloud and required python3-libcloud package" fi if [ $_START_DAEMONS -eq $BS_FALSE ]; then @@ -2008,16 +1860,14 @@ fi if [ "$ITYPE" = "git" ]; then if [ "${GIT_REV}" = "master" ]; then - _POST_NEON_INSTALL=$BS_TRUE __TAG_REGEX_MATCH="MATCH" else case ${OS_NAME_L} in - openbsd|freebsd|netbsd|darwin ) + darwin ) __NEW_VS_TAG_REGEX_MATCH=$(echo "${GIT_REV}" | sed -E 's/^(v?3[0-9]{3}(\.[0-9]{1,2})?).*$/MATCH/') if [ "$__NEW_VS_TAG_REGEX_MATCH" = "MATCH" ]; then - _POST_NEON_INSTALL=$BS_TRUE __TAG_REGEX_MATCH="${__NEW_VS_TAG_REGEX_MATCH}" - echodebug "Post Neon Tag Regex Match On: ${GIT_REV}" + echodebug "Tag Regex Match On: ${GIT_REV}" else __TAG_REGEX_MATCH=$(echo "${GIT_REV}" | sed -E 's/^(v?[0-9]{1,4}\.[0-9]{1,2})(\.[0-9]{1,2})?.*$/MATCH/') echodebug "Pre Neon Tag Regex Match On: ${GIT_REV}" @@ -2026,9 +1876,8 @@ if [ "$ITYPE" = "git" ]; then * ) __NEW_VS_TAG_REGEX_MATCH=$(echo "${GIT_REV}" | sed 's/^.*\(v\?3[[:digit:]]\{3\}\(\.[[:digit:]]\{1,2\}\)\?\).*$/MATCH/') if [ "$__NEW_VS_TAG_REGEX_MATCH" = "MATCH" ]; then - _POST_NEON_INSTALL=$BS_TRUE __TAG_REGEX_MATCH="${__NEW_VS_TAG_REGEX_MATCH}" - echodebug "Post Neon Tag Regex Match On: ${GIT_REV}" + echodebug "Tag Regex Match On: ${GIT_REV}" else __TAG_REGEX_MATCH=$(echo "${GIT_REV}" | sed 's/^.*\(v\?[[:digit:]]\{1,4\}\.[[:digit:]]\{1,2\}\)\(\.[[:digit:]]\{1,2\}\)\?.*$/MATCH/') echodebug "Pre Neon Tag Regex Match On: ${GIT_REV}" @@ -2037,18 +1886,16 @@ if [ "$ITYPE" = "git" ]; then esac fi - if [ "$_POST_NEON_INSTALL" -eq $BS_TRUE ]; then - echo - echowarn "Post Neon git based installations will always install salt" - echowarn "and its dependencies using pip which will be upgraded to" - echowarn "at least v${_MINIMUM_PIP_VERSION}, and, in case the setuptools version is also" - echowarn "too old, it will be upgraded to at least v${_MINIMUM_SETUPTOOLS_VERSION}" - echo - echowarn "You have 10 seconds to cancel and stop the bootstrap process..." - echo - sleep 10 - _PIP_ALLOWED=$BS_TRUE - fi + echo + echowarn "git based installations will always install salt" + echowarn "and its dependencies using pip which will be upgraded to" + echowarn "at least v${_MINIMUM_PIP_VERSION}, and, in case the setuptools version is also" + echowarn "too old, it will be upgraded to at least v${_MINIMUM_SETUPTOOLS_VERSION} and less than v${_MAXIMUM_SETUPTOOLS_VERSION}" + echo + echowarn "You have 10 seconds to cancel and stop the bootstrap process..." + echo + sleep 10 + _PIP_ALLOWED=$BS_TRUE fi @@ -2080,12 +1927,17 @@ __wait_for_apt(){ # Timeout set at 15 minutes WAIT_TIMEOUT=900 + ## see if sync'ing the clocks helps + if [ -f /usr/sbin/hwclock ]; then + /usr/sbin/hwclock -s + fi + # Run our passed in apt command "${@}" 2>"$APT_ERR" APT_RETURN=$? # Make sure we're not waiting on a lock - while [ $APT_RETURN -ne 0 ] && grep -q '^E: Could not get lock' "$APT_ERR"; do + while [ "$APT_RETURN" -ne 0 ] && grep -q '^E: Could not get lock' "$APT_ERR"; do echoinfo "Aware of the lock. Patiently waiting $WAIT_TIMEOUT more seconds..." sleep 1 WAIT_TIMEOUT=$((WAIT_TIMEOUT - 1)) @@ -2109,6 +1961,7 @@ __wait_for_apt(){ # PARAMETERS: packages #---------------------------------------------------------------------------------------------------------------------- __apt_get_install_noinput() { + __wait_for_apt apt-get install -y -o DPkg::Options::=--force-confold "${@}"; return $? } # ---------- end of function __apt_get_install_noinput ---------- @@ -2118,6 +1971,7 @@ __apt_get_install_noinput() { # DESCRIPTION: (DRY) apt-get upgrade with noinput options #---------------------------------------------------------------------------------------------------------------------- __apt_get_upgrade_noinput() { + __wait_for_apt apt-get upgrade -y -o DPkg::Options::=--force-confold; return $? } # ---------- end of function __apt_get_upgrade_noinput ---------- @@ -2148,12 +2002,14 @@ __temp_gpg_pub() { # PARAMETERS: url #---------------------------------------------------------------------------------------------------------------------- __apt_key_fetch() { + + url=$1 tempfile="$(__temp_gpg_pub)" - __fetch_url "$tempfile" "$url" || return 1 - cp -f "$tempfile" /usr/share/keyrings/salt-archive-keyring.gpg && chmod 644 /usr/share/keyrings/salt-archive-keyring.gpg || return 1 + mkdir -p /etc/apt/keyrings + cp -f "$tempfile" /etc/apt/keyrings/salt-archive-keyring.pgp && chmod 644 /etc/apt/keyrings/salt-archive-keyring.pgp || return 1 rm -f "$tempfile" return 0 @@ -2166,6 +2022,7 @@ __apt_key_fetch() { # PARAMETERS: url #---------------------------------------------------------------------------------------------------------------------- __rpm_import_gpg() { + url=$1 tempfile="$(__temp_gpg_pub)" @@ -2290,10 +2147,15 @@ __git_clone_and_checkout() { if [ "$(git clone 2>&1 | grep 'single-branch')" != "" ]; then # The "--single-branch" option is supported, attempt shallow cloning echoinfo "Attempting to shallow clone $GIT_REV from Salt's repository ${_SALT_REPO_URL}" - if git clone --depth 1 --branch "$GIT_REV" "$_SALT_REPO_URL" "$__SALT_CHECKOUT_REPONAME"; then + ## Shallow cloning is resulting in the wrong version of Salt, even with a depth of 5 + ## getting 3007.0+0na.246d066 when it should be 3007.1+410.g246d066457, disabling for now + ## if git clone --depth 1 --branch "$GIT_REV" "$_SALT_REPO_URL" "$__SALT_CHECKOUT_REPONAME"; then + echodebug "git command, git clone --branch $GIT_REV $_SALT_REPO_URL $__SALT_CHECKOUT_REPONAME" + if git clone --branch "$GIT_REV" "$_SALT_REPO_URL" "$__SALT_CHECKOUT_REPONAME"; then # shellcheck disable=SC2164 cd "${_SALT_GIT_CHECKOUT_DIR}" __SHALLOW_CLONE=$BS_TRUE + echoinfo "shallow path (disabled shallow) git cloned $GIT_REV, version $(python3 salt/version.py)" else # Shallow clone above failed(missing upstream tags???), let's resume the old behaviour. echowarn "Failed to shallow clone." @@ -2307,10 +2169,13 @@ __git_clone_and_checkout() { fi if [ "$__SHALLOW_CLONE" -eq $BS_FALSE ]; then + echodebug "shallow clone false, BS_FALSE $BS_FALSE, git clone $_SALT_REPO_URL $__SALT_CHECKOUT_REPONAME" git clone "$_SALT_REPO_URL" "$__SALT_CHECKOUT_REPONAME" || return 1 # shellcheck disable=SC2164 cd "${_SALT_GIT_CHECKOUT_DIR}" + echoinfo "git cloned $GIT_REV, version $(python3 salt/version.py)" + if ! echo "$_SALT_REPO_URL" | grep -q -F -w "${_SALTSTACK_REPO_URL#*://}"; then # We need to add the saltstack repository as a remote and fetch tags for proper versioning echoinfo "Adding SaltStack's Salt repository as a remote" @@ -2403,7 +2268,7 @@ __movefile() { exit 1 fi - if [ $_KEEP_TEMP_FILES -eq $BS_TRUE ]; then + if [ "$_KEEP_TEMP_FILES" -eq $BS_TRUE ]; then # We're being told not to move files, instead copy them so we can keep # them around echodebug "Since BS_KEEP_TEMP_FILES=1 we're copying files instead of moving them" @@ -2520,14 +2385,17 @@ __overwriteconfig() { if [ -n "$_PY_EXE" ]; then good_python="$_PY_EXE" # If python does not have yaml installed we're on Arch and should use python2 + # but no more support, hence error out elif python -c "import yaml" 2> /dev/null; then - good_python=python + good_python=python # assume python is python 3 on Arch else - good_python=python2 + ## good_python=python2 + echoerror "Python 2 is no longer supported, only Python 3" + return 1 fi # Convert json string to a yaml string and write it to config file. Output is dumped into tempfile. - "$good_python" -c "import json; import yaml; jsn=json.loads('$json'); yml=yaml.safe_dump(jsn, line_break='\\n', default_flow_style=False); config_file=open('$target', 'w'); config_file.write(yml); config_file.close();" 2>$tempfile + "$good_python" -c "import json; import yaml; jsn=json.loads('$json'); yml=yaml.safe_dump(jsn, line_break='\\n', default_flow_style=False, sort_keys=False); config_file=open('$target', 'w'); config_file.write(yml); config_file.close();" 2>"$tempfile" # No python errors output to the tempfile if [ ! -s "$tempfile" ]; then @@ -2552,6 +2420,7 @@ __overwriteconfig() { # PARAMETERS: servicename #---------------------------------------------------------------------------------------------------------------------- __check_services_systemd() { + if [ $# -eq 0 ]; then echoerror "You need to pass a service name to check!" exit 1 @@ -2559,6 +2428,21 @@ __check_services_systemd() { echoerror "You need to pass a service name to check as the single argument to the function" fi + # check if systemd is functional, having systemctl present is insufficient + + if [ "$_SYSTEMD_FUNCTIONAL" -eq $BS_FALSE ]; then + # already determined systemd is not functional, default is 1 + return 1 + fi + + _SYSTEMD_ACTIVE=$(/bin/systemctl daemon-reload 2>&1 | grep 'System has not been booted with systemd') + echodebug "__check_services_systemd _SYSTEMD_ACTIVE result ,$_SYSTEMD_ACTIVE," + if [ "$_SYSTEMD_ACTIVE" != "" ]; then + _SYSTEMD_FUNCTIONAL=$BS_FALSE + echodebug "systemd is not functional, despite systemctl being present, setting _SYSTEMD_FUNCTIONAL false, $_SYSTEMD_FUNCTIONAL" + return 1 + fi + servicename=$1 echodebug "Checking if service ${servicename} is enabled" @@ -2578,6 +2462,7 @@ __check_services_systemd() { # PARAMETERS: servicename #---------------------------------------------------------------------------------------------------------------------- __check_services_upstart() { + if [ $# -eq 0 ]; then echoerror "You need to pass a service name to check!" exit 1 @@ -2605,6 +2490,7 @@ __check_services_upstart() { # PARAMETERS: servicename #---------------------------------------------------------------------------------------------------------------------- __check_services_sysvinit() { + if [ $# -eq 0 ]; then echoerror "You need to pass a service name to check!" exit 1 @@ -2631,6 +2517,7 @@ __check_services_sysvinit() { # PARAMETERS: servicename #---------------------------------------------------------------------------------------------------------------------- __check_services_debian() { + if [ $# -eq 0 ]; then echoerror "You need to pass a service name to check!" exit 1 @@ -2652,38 +2539,13 @@ __check_services_debian() { } # ---------- end of function __check_services_debian ---------- -#--- FUNCTION ------------------------------------------------------------------------------------------------------- -# NAME: __check_services_openbsd -# DESCRIPTION: Return 0 or 1 in case the service is enabled or not -# PARAMETERS: servicename -#---------------------------------------------------------------------------------------------------------------------- -__check_services_openbsd() { - if [ $# -eq 0 ]; then - echoerror "You need to pass a service name to check!" - exit 1 - elif [ $# -ne 1 ]; then - echoerror "You need to pass a service name to check as the single argument to the function" - fi - - servicename=$1 - echodebug "Checking if service ${servicename} is enabled" - - # shellcheck disable=SC2086,SC2046,SC2144 - if rcctl get ${servicename} status; then - echodebug "Service ${servicename} is enabled" - return 0 - else - echodebug "Service ${servicename} is NOT enabled" - return 1 - fi -} # ---------- end of function __check_services_openbsd ---------- - #--- FUNCTION ------------------------------------------------------------------------------------------------------- # NAME: __check_services_openrc # DESCRIPTION: Return 0 or 1 in case the service is enabled or not # PARAMETERS: servicename #---------------------------------------------------------------------------------------------------------------------- __check_services_openrc() { + if [ $# -eq 0 ]; then echoerror "You need to pass a service name to check!" exit 1 @@ -2710,9 +2572,10 @@ __check_services_openrc() { # DESCRIPTION: Return 0 or 1 depending on successful creation of virtualenv #---------------------------------------------------------------------------------------------------------------------- __create_virtualenv() { + if [ ! -d "$_VIRTUALENV_DIR" ]; then echoinfo "Creating virtualenv ${_VIRTUALENV_DIR}" - if [ $_PIP_ALL -eq $BS_TRUE ]; then + if [ "$_PIP_ALL" -eq $BS_TRUE ]; then virtualenv --no-site-packages "${_VIRTUALENV_DIR}" || return 1 else virtualenv --system-site-packages "${_VIRTUALENV_DIR}" || return 1 @@ -2727,6 +2590,7 @@ __create_virtualenv() { # DESCRIPTION: Return 0 or 1 depending on successful activation of virtualenv #---------------------------------------------------------------------------------------------------------------------- __activate_virtualenv() { + set +o nounset # Is virtualenv empty if [ -z "$_VIRTUALENV_DIR" ]; then @@ -2753,7 +2617,7 @@ __install_pip_pkgs() { _pip_cmd="${_py_exe} -m pip" if [ "${_py_exe}" = "" ]; then - _py_exe='python' + _py_exe='python3' fi __check_pip_allowed @@ -2781,17 +2645,6 @@ __install_pip_pkgs() { ${_pip_cmd} install ${_pip_pkgs} || return 1 } -#--- FUNCTION ------------------------------------------------------------------------------------------------------- -# NAME: __install_tornado_pip -# PARAMETERS: python executable -# DESCRIPTION: Return 0 or 1 if successfully able to install tornado<5.0 -#---------------------------------------------------------------------------------------------------------------------- -__install_tornado_pip() { - # OS needs tornado <5.0 from pip - __check_pip_allowed "You need to allow pip based installations (-P) for Tornado <5.0 in order to install Salt on Python 3" - ## install pip if its not installed and install tornado - __install_pip_pkgs "tornado<5.0" "${1}" || return 1 -} #--- FUNCTION ------------------------------------------------------------------------------------------------------- # NAME: __install_pip_deps @@ -2829,19 +2682,20 @@ __install_pip_deps() { } # ---------- end of function __install_pip_deps ---------- #--- FUNCTION ------------------------------------------------------------------------------------------------------- -# NAME: __install_salt_from_repo_post_neon +# NAME: __install_salt_from_repo # DESCRIPTION: Return 0 or 1 if successfully able to install. Can provide a different python version to # install pip packages with. If $py_exe is not specified it will use the default python version. # PARAMETERS: py_exe #---------------------------------------------------------------------------------------------------------------------- -__install_salt_from_repo_post_neon() { +__install_salt_from_repo() { + _py_exe="$1" if [ "${_py_exe}" = "" ]; then - _py_exe='python' + _py_exe="python3" fi - echodebug "__install_salt_from_repo_post_neon py_exe=$_py_exe" + echodebug "__install_salt_from_repo py_exe=$_py_exe" _py_version=$(${_py_exe} -c "import sys; print('{0}.{1}'.format(*sys.version_info))") _pip_cmd="pip${_py_version}" @@ -2879,14 +2733,9 @@ except ImportError: EOM ) if ! ${_py_exe} -c "$CHECK_PIP_VERSION_SCRIPT"; then - # Upgrade pip to at least 1.2 which is when we can start using "python -m pip" - if [ "${_py_version}" = "3.5" ]; then - echodebug "Running '${_pip_cmd} install ${_POST_NEON_PIP_INSTALL_ARGS} pip>=${_MINIMUM_PIP_VERSION},<21.0'" - ${_pip_cmd} install ${_POST_NEON_PIP_INSTALL_ARGS} -v "pip>=${_MINIMUM_PIP_VERSION},<21.0" - else - echodebug "Running '${_pip_cmd} install ${_POST_NEON_PIP_INSTALL_ARGS} pip>=${_MINIMUM_PIP_VERSION}'" - ${_pip_cmd} install ${_POST_NEON_PIP_INSTALL_ARGS} -v "pip>=${_MINIMUM_PIP_VERSION}" - fi + # Upgrade pip to at least 1.2 which is when we can start using "python3 -m pip" + echodebug "Running '${_pip_cmd} install ${_PIP_INSTALL_ARGS} pip>=${_MINIMUM_PIP_VERSION}'" + ${_pip_cmd} install ${_PIP_INSTALL_ARGS} -v "pip>=${_MINIMUM_PIP_VERSION}" sleep 1 echodebug "PATH: ${PATH}" _pip_cmd="pip${_py_version}" @@ -2905,26 +2754,43 @@ EOM echodebug "Installed pip version: $(${_pip_cmd} --version)" fi - _setuptools_dep="setuptools>=${_MINIMUM_SETUPTOOLS_VERSION}" - if [ "$_PY_MAJOR_VERSION" -eq 2 ]; then - # We also lock setuptools to <45 which is the latest release to support both py2 and py3 - _setuptools_dep="${_setuptools_dep},<45" + _setuptools_dep="setuptools>=${_MINIMUM_SETUPTOOLS_VERSION},<${_MAXIMUM_SETUPTOOLS_VERSION}" + if [ "$_PY_MAJOR_VERSION" -ne 3 ]; then + echoerror "Python version is no longer supported, only Python 3" + return 1 fi - echodebug "Running '${_pip_cmd} install wheel ${_setuptools_dep}'" - ${_pip_cmd} install --upgrade ${_POST_NEON_PIP_INSTALL_ARGS} wheel "${_setuptools_dep}" + _USE_BREAK_SYSTEM_PACKAGES="" + # shellcheck disable=SC2086,SC2090 + if { [ ${DISTRO_NAME_L} = "ubuntu" ] && [ "$DISTRO_MAJOR_VERSION" -ge 24 ]; } || \ + [ ${DISTRO_NAME_L} = "debian" ] && [ "$DISTRO_MAJOR_VERSION" -ge 12 ]; then + _USE_BREAK_SYSTEM_PACKAGES="--break-system-packages" + echodebug "OS is greater than / equal Debian 12 or Ubuntu 24.04, using ${_USE_BREAK_SYSTEM_PACKAGES}" + fi - echoinfo "Installing salt using ${_py_exe}" + echodebug "Running '${_pip_cmd} install ${_USE_BREAK_SYSTEM_PACKAGES} --upgrade ${_PIP_INSTALL_ARGS} wheel ${_setuptools_dep}" + ${_pip_cmd} install ${_USE_BREAK_SYSTEM_PACKAGES} --upgrade ${_PIP_INSTALL_ARGS} wheel "${_setuptools_dep}" + + echoinfo "Installing salt using ${_py_exe}, $(${_py_exe} --version)" cd "${_SALT_GIT_CHECKOUT_DIR}" || return 1 - mkdir /tmp/git/deps + mkdir -p /tmp/git/deps + echodebug "Created directory /tmp/git/deps" + echodebug "Installing Salt dependencies for Salt version $(python3 salt/version.py)" + + if [ ${DISTRO_NAME_L} = "ubuntu" ] && [ "$DISTRO_MAJOR_VERSION" -eq 22 ]; then + echodebug "Ubuntu 22.04 has problem with base.txt requirements file, not parsing sys_platform == 'win32', upgrading from default pip works" + echodebug "${_pip_cmd} install ${_USE_BREAK_SYSTEM_PACKAGES} --upgrade pip" + ${_pip_cmd} install ${_USE_BREAK_SYSTEM_PACKAGES} --upgrade pip || (echo "Failed to upgrade pip" && return 1) + fi + echoinfo "Downloading Salt Dependencies from PyPi" echodebug "Running '${_pip_cmd} download -d /tmp/git/deps ${_PIP_DOWNLOAD_ARGS} .'" ${_pip_cmd} download -d /tmp/git/deps ${_PIP_DOWNLOAD_ARGS} . || (echo "Failed to download salt dependencies" && return 1) echoinfo "Installing Downloaded Salt Dependencies" - echodebug "Running '${_pip_cmd} install --ignore-installed ${_POST_NEON_PIP_INSTALL_ARGS} /tmp/git/deps/*'" - ${_pip_cmd} install --ignore-installed ${_POST_NEON_PIP_INSTALL_ARGS} /tmp/git/deps/* || return 1 + echodebug "Running '${_pip_cmd} install ${_USE_BREAK_SYSTEM_PACKAGES} --ignore-installed ${_PIP_INSTALL_ARGS} /tmp/git/deps/*'" + ${_pip_cmd} install ${_USE_BREAK_SYSTEM_PACKAGES} --ignore-installed ${_PIP_INSTALL_ARGS} /tmp/git/deps/* || return 1 rm -f /tmp/git/deps/* echoinfo "Building Salt Python Wheel" @@ -2934,16 +2800,27 @@ EOM fi echodebug "Running '${_py_exe} setup.py --salt-config-dir=$_SALT_ETC_DIR --salt-cache-dir=${_SALT_CACHE_DIR} ${SETUP_PY_INSTALL_ARGS} bdist_wheel'" - ${_py_exe} setup.py --salt-config-dir="$_SALT_ETC_DIR" --salt-cache-dir="${_SALT_CACHE_DIR}" ${SETUP_PY_INSTALL_ARGS} bdist_wheel || return 1 + ${_py_exe} setup.py --salt-config-dir="$_SALT_ETC_DIR" --salt-cache-dir="${_SALT_CACHE_DIR} ${SETUP_PY_INSTALL_ARGS}" bdist_wheel || return 1 mv dist/salt*.whl /tmp/git/deps/ || return 1 cd "${__SALT_GIT_CHECKOUT_PARENT_DIR}" || return 1 echoinfo "Installing Built Salt Wheel" - ${_pip_cmd} uninstall --yes salt 2>/dev/null || true - echodebug "Running '${_pip_cmd} install --no-deps --force-reinstall ${_POST_NEON_PIP_INSTALL_ARGS} /tmp/git/deps/salt*.whl'" - ${_pip_cmd} install --no-deps --force-reinstall \ - ${_POST_NEON_PIP_INSTALL_ARGS} \ + ${_pip_cmd} uninstall --yes ${_USE_BREAK_SYSTEM_PACKAGES} salt 2>/dev/null || true + + # Hack for getting current Arch working with git-master + if [ "${DISTRO_NAME}" = "Arch Linux" ]; then + _arch_dep="cryptography==42.0.7" # debug matching current Arch version of python-cryptography + echodebug "Running '${_pip_cmd} install --force-reinstall --break-system-packages ${_arch_dep}'" + ${_pip_cmd} install --force-reinstall --break-system-packages "${_arch_dep}" + fi + + echodebug "Running '${_pip_cmd} install ${_USE_BREAK_SYSTEM_PACKAGES} --no-deps --force-reinstall ${_PIP_INSTALL_ARGS} /tmp/git/deps/salt*.whl'" + + echodebug "Running ${_pip_cmd} install ${_USE_BREAK_SYSTEM_PACKAGES} --no-deps --force-reinstall ${_PIP_INSTALL_ARGS} --global-option=--salt-config-dir=$_SALT_ETC_DIR --salt-cache-dir=${_SALT_CACHE_DIR} ${SETUP_PY_INSTALL_ARGS} /tmp/git/deps/salt*.whl" + + ${_pip_cmd} install ${_USE_BREAK_SYSTEM_PACKAGES} --no-deps --force-reinstall \ + ${_PIP_INSTALL_ARGS} \ --global-option="--salt-config-dir=$_SALT_ETC_DIR --salt-cache-dir=${_SALT_CACHE_DIR} ${SETUP_PY_INSTALL_ARGS}" \ /tmp/git/deps/salt*.whl || return 1 @@ -2966,21 +2843,16 @@ EOM return 1 fi return 0 -} # ---------- end of function __install_salt_from_repo_post_neon ---------- +} # ---------- end of function __install_salt_from_repo ---------- -if [ "${_POST_NEON_INSTALL}" -eq $BS_FALSE ]; then - if [ "x${_PY_MAJOR_VERSION}" = "x" ]; then - # Default to python 2 for pre Neon installs - _PY_MAJOR_VERSION=2 - fi -else - if [ "x${_PY_MAJOR_VERSION}" = "x" ]; then - # Default to python 3 for post Neon install - _PY_MAJOR_VERSION=3 - fi +# shellcheck disable=SC2268 +if [ "x${_PY_MAJOR_VERSION}" = "x" ]; then + # Default to python 3 for install + _PY_MAJOR_VERSION=3 fi + ####################################################################################################################### # # Distribution install functions @@ -3064,6 +2936,7 @@ fi # Ubuntu Install Functions # __enable_universe_repository() { + if [ "$(grep -R universe /etc/apt/sources.list /etc/apt/sources.list.d/ | grep -v '#')" != "" ]; then # The universe repository is already enabled return 0 @@ -3078,15 +2951,13 @@ __enable_universe_repository() { __install_saltstack_ubuntu_repository() { # Workaround for latest non-LTS Ubuntu + echodebug "__install_saltstack_ubuntu_repository() entry" + if { [ "$DISTRO_MAJOR_VERSION" -eq 20 ] && [ "$DISTRO_MINOR_VERSION" -eq 10 ]; } || \ - # remove 22 version when salt packages for 22.04 are available - [ "$DISTRO_MAJOR_VERSION" -eq 21 ] || [ "$DISTRO_MAJOR_VERSION" -eq 22 ]; then + { [ "$DISTRO_MAJOR_VERSION" -eq 22 ] && [ "$DISTRO_MINOR_VERSION" -eq 10 ]; } || \ + { [ "$DISTRO_MAJOR_VERSION" -eq 24 ] && [ "$DISTRO_MINOR_VERSION" -eq 10 ]; } || \ + [ "$DISTRO_MAJOR_VERSION" -eq 21 ] || [ "$DISTRO_MAJOR_VERSION" -eq 23 ] || [ "$DISTRO_MAJOR_VERSION" -eq 25 ]; then echowarn "Non-LTS Ubuntu detected, but stable packages requested. Trying packages for previous LTS release. You may experience problems." - UBUNTU_VERSION=20.04 - UBUNTU_CODENAME="focal" - else - UBUNTU_VERSION=${DISTRO_VERSION} - UBUNTU_CODENAME=${DISTRO_CODENAME} fi # Install downloader backend for GPG keys fetching @@ -3102,33 +2973,48 @@ __install_saltstack_ubuntu_repository() { __PACKAGES="${__PACKAGES} apt-transport-https ca-certificates" fi + ## include hwclock if not part of base OS (23.10 and up) + if [ ! -f /usr/sbin/hwclock ]; then + __PACKAGES="${__PACKAGES} util-linux-extra" + fi + # shellcheck disable=SC2086,SC2090 __apt_get_install_noinput ${__PACKAGES} || return 1 - __PY_VERSION_REPO="apt" - if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq 3 ]; then - __PY_VERSION_REPO="py3" + if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -ne 3 ]; then + echoerror "Python version is not supported, only Python 3" + return 1 fi # SaltStack's stable Ubuntu repository: - SALTSTACK_UBUNTU_URL="${HTTP_VAL}://${_REPO_URL}/${__PY_VERSION_REPO}/ubuntu/${UBUNTU_VERSION}/${__REPO_ARCH}/${STABLE_REV}" - echo "$__REPO_ARCH_DEB $SALTSTACK_UBUNTU_URL $UBUNTU_CODENAME main" > /etc/apt/sources.list.d/salt.list - - __apt_key_fetch "$SALTSTACK_UBUNTU_URL/salt-archive-keyring.gpg" || return 1 - + __fetch_url "/etc/apt/sources.list.d/salt.sources" "https://github.com/saltstack/salt-install-guide/releases/latest/download/salt.sources" + __apt_key_fetch "${HTTP_VAL}://${_REPO_URL}/api/security/keypair/SaltProjectKey/public" || return 1 __wait_for_apt apt-get update || return 1 + + if [ "$STABLE_REV" != "latest" ]; then + # latest is default + STABLE_REV_MAJOR=$(echo "$STABLE_REV" | cut -d '.' -f 1) + if [ "$STABLE_REV_MAJOR" -eq "3006" ]; then + echo "Package: salt-*" > /etc/apt/preferences.d/salt-pin-1001 + echo "Pin: version 3006.*" >> /etc/apt/preferences.d/salt-pin-1001 + echo "Pin-Priority: 1001" >> /etc/apt/preferences.d/salt-pin-1001 + elif [ "$STABLE_REV_MAJOR" -eq "3007" ]; then + echo "Package: salt-*" > /etc/apt/preferences.d/salt-pin-1001 + echo "Pin: version 3007.*" >> /etc/apt/preferences.d/salt-pin-1001 + echo "Pin-Priority: 1001" >> /etc/apt/preferences.d/salt-pin-1001 + fi + fi + } __install_saltstack_ubuntu_onedir_repository() { + + echodebug "__install_saltstack_ubuntu_onedir_repository() entry" # Workaround for latest non-LTS Ubuntu if { [ "$DISTRO_MAJOR_VERSION" -eq 20 ] && [ "$DISTRO_MINOR_VERSION" -eq 10 ]; } || \ - [ "$DISTRO_MAJOR_VERSION" -eq 21 ]; then + { [ "$DISTRO_MAJOR_VERSION" -eq 22 ] && [ "$DISTRO_MINOR_VERSION" -eq 10 ]; } || \ + [ "$DISTRO_MAJOR_VERSION" -eq 21 ] || [ "$DISTRO_MAJOR_VERSION" -eq 23 ] || [ "$DISTRO_MAJOR_VERSION" -eq 25 ]; then echowarn "Non-LTS Ubuntu detected, but stable packages requested. Trying packages for previous LTS release. You may experience problems." - UBUNTU_VERSION=20.04 - UBUNTU_CODENAME="focal" - else - UBUNTU_VERSION=${DISTRO_VERSION} - UBUNTU_CODENAME=${DISTRO_CODENAME} fi # Install downloader backend for GPG keys fetching @@ -3144,35 +3030,38 @@ __install_saltstack_ubuntu_onedir_repository() { __PACKAGES="${__PACKAGES} apt-transport-https ca-certificates" fi + ## include hwclock if not part of base OS (23.10 and up) + if [ ! -f /usr/sbin/hwclock ]; then + __PACKAGES="${__PACKAGES} util-linux-extra" + fi + # shellcheck disable=SC2086,SC2090 __apt_get_install_noinput ${__PACKAGES} || return 1 - __PY_VERSION_REPO="apt" - if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq 3 ]; then - __PY_VERSION_REPO="py3" - fi - # SaltStack's stable Ubuntu repository: - SALTSTACK_UBUNTU_URL="${HTTP_VAL}://${_REPO_URL}/${_ONEDIR_DIR}/${__PY_VERSION_REPO}/ubuntu/${UBUNTU_VERSION}/${__REPO_ARCH}/${ONEDIR_REV}/" - if [ "${ONEDIR_REV}" = "nightly" ] ; then - SALTSTACK_UBUNTU_URL="${HTTP_VAL}://${_REPO_URL}/${_ONEDIR_NIGHTLY_DIR}/${__PY_VERSION_REPO}/ubuntu/${UBUNTU_VERSION}/${__REPO_ARCH}/" - fi - echo "$__REPO_ARCH_DEB $SALTSTACK_UBUNTU_URL $UBUNTU_CODENAME main" > /etc/apt/sources.list.d/salt.list - - if [ "$(echo "${ONEDIR_REV}" | grep -E '(3004|3005)')" != "" ]; then - __apt_key_fetch "${SALTSTACK_UBUNTU_URL}salt-archive-keyring.gpg" || return 1 - elif [ "$(echo "${ONEDIR_REV}" | grep -E '(latest|nightly)')" != "" ]; then - __apt_key_fetch "${SALTSTACK_UBUNTU_URL}salt-archive-keyring.gpg" || \ - __apt_key_fetch "${SALTSTACK_UBUNTU_URL}SALT-PROJECT-GPG-PUBKEY-2023.gpg" || return 1 - else - __apt_key_fetch "${SALTSTACK_UBUNTU_URL}SALT-PROJECT-GPG-PUBKEY-2023.gpg" || return 1 - fi - + __fetch_url "/etc/apt/sources.list.d/salt.sources" "https://github.com/saltstack/salt-install-guide/releases/latest/download/salt.sources" + __apt_key_fetch "${HTTP_VAL}://${_REPO_URL}/api/security/keypair/SaltProjectKey/public" || return 1 __wait_for_apt apt-get update || return 1 + + if [ "$ONEDIR_REV" != "latest" ]; then + # latest is default + ONEDIR_REV_MAJOR=$(echo "$ONEDIR_REV" | cut -d '.' -f 1) + if [ "$ONEDIR_REV_MAJOR" -eq "3006" ]; then + echo "Package: salt-*" > /etc/apt/preferences.d/salt-pin-1001 + echo "Pin: version 3006.*" >> /etc/apt/preferences.d/salt-pin-1001 + echo "Pin-Priority: 1001" >> /etc/apt/preferences.d/salt-pin-1001 + elif [ "$ONEDIR_REV_MAJOR" -eq "3007" ]; then + echo "Package: salt-*" > /etc/apt/preferences.d/salt-pin-1001 + echo "Pin: version 3007.*" >> /etc/apt/preferences.d/salt-pin-1001 + echo "Pin-Priority: 1001" >> /etc/apt/preferences.d/salt-pin-1001 + fi + fi } install_ubuntu_deps() { - if [ $_DISABLE_REPOS -eq $BS_FALSE ]; then + + echodebug "install_ubuntu_deps() entry" + if [ "$_DISABLE_REPOS" -eq $BS_FALSE ]; then # Install add-apt-repository if ! __check_command_exists add-apt-repository; then __apt_get_install_noinput software-properties-common || return 1 @@ -3185,24 +3074,19 @@ install_ubuntu_deps() { __PACKAGES='' - if [ "$DISTRO_MAJOR_VERSION" -lt 16 ]; then - # Minimal systems might not have upstart installed, install it - __PACKAGES="upstart" + if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -ne 3 ]; then + echoerror "Python version is no longer supported, only Python 3" + return 1 fi - if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq 3 ]; then - PY_PKG_VER=3 - else - PY_PKG_VER="" - fi - - if [ "$DISTRO_MAJOR_VERSION" -ge 16 ] && [ -z "$_PY_EXE" ]; then - __PACKAGES="${__PACKAGES} python2.7" + if [ "$DISTRO_MAJOR_VERSION" -ge 20 ] && [ -z "$_PY_EXE" ]; then + __PACKAGES="${__PACKAGES} python${PY_PKG_VER}" fi if [ "$_VIRTUALENV_DIR" != "null" ]; then - __PACKAGES="${__PACKAGES} python-virtualenv" + __PACKAGES="${__PACKAGES} python${PY_PKG_VER}-virtualenv" fi + # Need python-apt for managing packages via Salt __PACKAGES="${__PACKAGES} python${PY_PKG_VER}-apt" @@ -3215,6 +3099,11 @@ install_ubuntu_deps() { # Additionally install procps and pciutils which allows for Docker bootstraps. See 366#issuecomment-39666813 __PACKAGES="${__PACKAGES} procps pciutils" + ## include hwclock if not part of base OS (23.10 and up) + if [ ! -f /usr/sbin/hwclock ]; then + __PACKAGES="${__PACKAGES} util-linux-extra" + fi + # shellcheck disable=SC2086,SC2090 __apt_get_install_noinput ${__PACKAGES} || return 1 @@ -3228,14 +3117,10 @@ install_ubuntu_deps() { } install_ubuntu_stable_deps() { - if [ "${_SLEEP}" -eq "${__DEFAULT_SLEEP}" ] && [ "$DISTRO_MAJOR_VERSION" -lt 16 ]; then - # The user did not pass a custom sleep value as an argument, let's increase the default value - echodebug "On Ubuntu systems we increase the default sleep value to 10." - echodebug "See https://github.com/saltstack/salt/issues/12248 for more info." - _SLEEP=10 - fi - if [ $_START_DAEMONS -eq $BS_FALSE ]; then + echodebug "install_ubuntu_stable_deps() entry" + + if [ "$_START_DAEMONS" -eq $BS_FALSE ]; then echowarn "Not starting daemons on Debian based distributions is not working mostly because starting them is the default behaviour." fi @@ -3246,7 +3131,8 @@ install_ubuntu_stable_deps() { if [ "${_UPGRADE_SYS}" -eq $BS_TRUE ]; then if [ "${_INSECURE_DL}" -eq $BS_TRUE ]; then - if [ "$DISTRO_MAJOR_VERSION" -ge 20 ] || [ "$DISTRO_MAJOR_VERSION" -ge 21 ] || [ "$DISTRO_MAJOR_VERSION" -ge 22 ]; then + ## apt-key is deprecated + if [ "$DISTRO_MAJOR_VERSION" -ge 20 ]; then __apt_get_install_noinput --allow-unauthenticated debian-archive-keyring && apt-get update || return 1 else __apt_get_install_noinput --allow-unauthenticated debian-archive-keyring && @@ -3266,6 +3152,9 @@ install_ubuntu_stable_deps() { } install_ubuntu_git_deps() { + + echodebug "install_ubuntu_git_deps() entry" + __wait_for_apt apt-get update || return 1 if ! __check_command_exists git; then @@ -3278,65 +3167,27 @@ install_ubuntu_git_deps() { __git_clone_and_checkout || return 1 - if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq 3 ]; then - PY_PKG_VER=3 - else - PY_PKG_VER="" + if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -ne 3 ]; then + echoerror "Python version is no longer supported, only Python 3" + return 1 fi - if [ "${_POST_NEON_INSTALL}" -eq $BS_FALSE ]; then - - __PACKAGES="" - - # See how we are installing packages - if [ "${_PIP_ALL}" -eq $BS_TRUE ]; then - __PACKAGES="${__PACKAGES} python-dev swig libssl-dev libzmq3 libzmq3-dev" - - if ! __check_command_exists pip; then - __PACKAGES="${__PACKAGES} python-setuptools python-pip" - fi - - # Get just the apt packages that are required to build all the pythons - # shellcheck disable=SC2086 - __apt_get_install_noinput ${__PACKAGES} || return 1 - # Install the pythons from requirements (only zmq for now) - __install_pip_deps "${_SALT_GIT_CHECKOUT_DIR}/requirements/zeromq.txt" || return 1 - else - install_ubuntu_stable_deps || return 1 - - if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq 3 ]; then - __PACKAGES="${__PACKAGES} python3-setuptools" - else - # There is no m2crypto package for Py3 at this time - only install for Py2 - __PACKAGES="${__PACKAGES} python-m2crypto" - fi - - __PACKAGES="${__PACKAGES} python${PY_PKG_VER}-crypto python${PY_PKG_VER}-jinja2" - __PACKAGES="${__PACKAGES} python${PY_PKG_VER}-msgpack python${PY_PKG_VER}-requests" - __PACKAGES="${__PACKAGES} python${PY_PKG_VER}-tornado python${PY_PKG_VER}-yaml" - __PACKAGES="${__PACKAGES} python${PY_PKG_VER}-zmq" - __PACKAGES="${__PACKAGES} python-concurrent.futures" - - if [ "$_INSTALL_CLOUD" -eq $BS_TRUE ]; then - # Install python-libcloud if asked to - __PACKAGES="${__PACKAGES} python${PY_PKG_VER}-libcloud" - fi - - # shellcheck disable=SC2086 - __apt_get_install_noinput ${__PACKAGES} || return 1 - fi - else - __PACKAGES="python${PY_PKG_VER}-dev python${PY_PKG_VER}-pip python${PY_PKG_VER}-setuptools gcc" - if [ "$DISTRO_MAJOR_VERSION" -ge 22 ]; then - __PACKAGES="${__PACKAGES} g++" - fi - # shellcheck disable=SC2086 - __apt_get_install_noinput ${__PACKAGES} || return 1 + __PACKAGES="python${PY_PKG_VER}-dev python${PY_PKG_VER}-pip python${PY_PKG_VER}-setuptools gcc" + if [ "$DISTRO_MAJOR_VERSION" -ge 22 ]; then + __PACKAGES="${__PACKAGES} g++" fi + ## include hwclock if not part of base OS (23.10 and up) + if [ ! -f /usr/sbin/hwclock ]; then + __PACKAGES="${__PACKAGES} util-linux-extra" + fi + + # shellcheck disable=SC2086 + __apt_get_install_noinput ${__PACKAGES} || return 1 + # Let's trigger config_salt() if [ "$_TEMP_CONFIG_DIR" = "null" ]; then - _TEMP_CONFIG_DIR="${_SALT_GIT_CHECKOUT_DIR}/conf/" + _TEMP_CONFIG_DIR="${_SALT_GIT_CHECKOUT_DIR}/conf" CONFIG_SALT_FUNC="config_salt" fi @@ -3344,14 +3195,8 @@ install_ubuntu_git_deps() { } install_ubuntu_onedir_deps() { - if [ "${_SLEEP}" -eq "${__DEFAULT_SLEEP}" ] && [ "$DISTRO_MAJOR_VERSION" -lt 16 ]; then - # The user did not pass a custom sleep value as an argument, let's increase the default value - echodebug "On Ubuntu systems we increase the default sleep value to 10." - echodebug "See https://github.com/saltstack/salt/issues/12248 for more info." - _SLEEP=10 - fi - if [ $_START_DAEMONS -eq $BS_FALSE ]; then + if [ "$_START_DAEMONS" -eq $BS_FALSE ]; then echowarn "Not starting daemons on Debian based distributions is not working mostly because starting them is the default behaviour." fi @@ -3362,7 +3207,8 @@ install_ubuntu_onedir_deps() { if [ "${_UPGRADE_SYS}" -eq $BS_TRUE ]; then if [ "${_INSECURE_DL}" -eq $BS_TRUE ]; then - if [ "$DISTRO_MAJOR_VERSION" -ge 20 ] || [ "$DISTRO_MAJOR_VERSION" -ge 21 ]; then + ## apt-key is deprecated + if [ "$DISTRO_MAJOR_VERSION" -ge 20 ]; then __apt_get_install_noinput --allow-unauthenticated debian-archive-keyring && apt-get update || return 1 else __apt_get_install_noinput --allow-unauthenticated debian-archive-keyring && @@ -3382,6 +3228,7 @@ install_ubuntu_onedir_deps() { } install_ubuntu_stable() { + __PACKAGES="" if [ "$_INSTALL_CLOUD" -eq $BS_TRUE ];then @@ -3397,6 +3244,10 @@ install_ubuntu_stable() { __PACKAGES="${__PACKAGES} salt-syndic" fi + if [ "$_INSTALL_SALT_API" -eq $BS_TRUE ]; then + __PACKAGES="${__PACKAGES} salt-api" + fi + # shellcheck disable=SC2086 __apt_get_install_noinput ${__PACKAGES} || return 1 @@ -3404,6 +3255,7 @@ install_ubuntu_stable() { } install_ubuntu_git() { + # Activate virtualenv before install if [ "${_VIRTUALENV_DIR}" != "null" ]; then __activate_virtualenv || return 1 @@ -3412,43 +3264,28 @@ install_ubuntu_git() { if [ -n "$_PY_EXE" ]; then _PYEXE=${_PY_EXE} else - _PYEXE=python2.7 + echoerror "Python 2 is no longer supported, only Python 3" + return 1 fi - if [ "${_POST_NEON_INSTALL}" -eq $BS_TRUE ]; then - # We can use --prefix on debian based ditributions - if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq 3 ]; then - _POST_NEON_PIP_INSTALL_ARGS="--target=/usr/lib/python3/dist-packages --install-option=--install-scripts=/usr/bin" - else - _POST_NEON_PIP_INSTALL_ARGS="--target=/usr/lib/python2.7/dist-packages --install-option=--install-scripts=/usr/bin" - fi - _POST_NEON_PIP_INSTALL_ARGS="" - __install_salt_from_repo_post_neon "${_PY_EXE}" || return 1 - cd "${_SALT_GIT_CHECKOUT_DIR}" || return 1 + _PIP_INSTALL_ARGS="" + __install_salt_from_repo "${_PY_EXE}" || return 1 + cd "${_SALT_GIT_CHECKOUT_DIR}" || return 1 - # Account for new path for services files in later releases - if [ -d "pkg/common" ]; then - _SERVICE_DIR="pkg/common" - else - _SERVICE_DIR="pkg" - fi - - sed -i 's:/usr/bin:/usr/local/bin:g' ${_SERVICE_DIR}/*.service - return 0 - fi - - if [ -f "${_SALT_GIT_CHECKOUT_DIR}/salt/syspaths.py" ]; then - # shellcheck disable=SC2086 - "${_PYEXE}" setup.py --salt-config-dir="$_SALT_ETC_DIR" --salt-cache-dir="${_SALT_CACHE_DIR}" ${SETUP_PY_INSTALL_ARGS} install --install-layout=deb || return 1 + # Account for new path for services files in later releases + if [ -d "pkg/common" ]; then + _SERVICE_DIR="pkg/common" else - # shellcheck disable=SC2086 - "${_PYEXE}" setup.py ${SETUP_PY_INSTALL_ARGS} install --install-layout=deb || return 1 + _SERVICE_DIR="pkg" fi + sed -i 's:/usr/bin:/usr/local/bin:g' "${_SERVICE_DIR}"/*.service return 0 + } install_ubuntu_onedir() { + __PACKAGES="" if [ "$_INSTALL_CLOUD" -eq $BS_TRUE ];then @@ -3464,6 +3301,10 @@ install_ubuntu_onedir() { __PACKAGES="${__PACKAGES} salt-syndic" fi + if [ "$_INSTALL_SALT_API" -eq $BS_TRUE ]; then + __PACKAGES="${__PACKAGES} salt-api" + fi + # shellcheck disable=SC2086 __apt_get_install_noinput ${__PACKAGES} || return 1 @@ -3471,6 +3312,7 @@ install_ubuntu_onedir() { } install_ubuntu_stable_post() { + for fname in api master minion syndic; do # Skip salt-api since the service should be opt-in and not necessarily started on boot [ $fname = "api" ] && continue @@ -3480,7 +3322,8 @@ install_ubuntu_stable_post() { [ $fname = "master" ] && [ "$_INSTALL_MASTER" -eq $BS_FALSE ] && continue [ $fname = "syndic" ] && [ "$_INSTALL_SYNDIC" -eq $BS_FALSE ] && continue - if [ -f /bin/systemctl ]; then + ## if [ -f /bin/systemctl ]; then + if [ "$_SYSTEMD_FUNCTIONAL" -eq $BS_TRUE ]; then # Using systemd /bin/systemctl is-enabled salt-$fname.service > /dev/null 2>&1 || ( /bin/systemctl preset salt-$fname.service > /dev/null 2>&1 && @@ -3497,6 +3340,7 @@ install_ubuntu_stable_post() { } install_ubuntu_git_post() { + for fname in api master minion syndic; do # Skip if not meant to be installed [ $fname = "api" ] && \ @@ -3512,7 +3356,7 @@ install_ubuntu_git_post() { _SERVICE_DIR="${_SALT_GIT_CHECKOUT_DIR}/pkg" fi - if [ -f /bin/systemctl ] && [ "$DISTRO_MAJOR_VERSION" -ge 16 ]; then + if [ "$_SYSTEMD_FUNCTIONAL" -eq $BS_TRUE ] && [ "$DISTRO_MAJOR_VERSION" -ge 16 ]; then __copyfile "${_SERVICE_DIR}/salt-${fname}.service" "/lib/systemd/system/salt-${fname}.service" # Skip salt-api since the service should be opt-in and not necessarily started on boot @@ -3521,21 +3365,6 @@ install_ubuntu_git_post() { systemctl is-enabled salt-$fname.service || (systemctl preset salt-$fname.service && systemctl enable salt-$fname.service) sleep 1 systemctl daemon-reload - elif [ -f /sbin/initctl ]; then - _upstart_conf="/etc/init/salt-$fname.conf" - # We have upstart support - echodebug "There's upstart support" - if [ ! -f $_upstart_conf ]; then - # upstart does not know about our service, let's copy the proper file - echowarn "Upstart does not appear to know about salt-$fname" - echodebug "Copying ${_SERVICE_DIR}/salt-$fname.upstart to $_upstart_conf" - __copyfile "${_SERVICE_DIR}/salt-${fname}.upstart" "$_upstart_conf" - # Set service to know about virtualenv - if [ "${_VIRTUALENV_DIR}" != "null" ]; then - echo "SALT_USE_VIRTUALENV=${_VIRTUALENV_DIR}" > /etc/default/salt-${fname} - fi - /sbin/initctl reload-configuration || return 1 - fi # No upstart support in Ubuntu!? elif [ -f "${_SALT_GIT_CHECKOUT_DIR}/pkg/salt-${fname}.init" ]; then echodebug "There's NO upstart support!?" @@ -3548,7 +3377,7 @@ install_ubuntu_git_post() { update-rc.d salt-$fname defaults else - echoerror "Neither upstart nor init.d was setup for salt-$fname" + echoerror "No init.d was setup for salt-$fname" fi done @@ -3556,13 +3385,12 @@ install_ubuntu_git_post() { } install_ubuntu_restart_daemons() { - [ $_START_DAEMONS -eq $BS_FALSE ] && return - # Ensure upstart configs / systemd units are loaded - if [ -f /bin/systemctl ] && [ "$DISTRO_MAJOR_VERSION" -ge 16 ]; then + [ "$_START_DAEMONS" -eq $BS_FALSE ] && return + + # Ensure systemd units are loaded + if [ "$_SYSTEMD_FUNCTIONAL" -eq $BS_TRUE ] && [ "$DISTRO_MAJOR_VERSION" -ge 16 ]; then systemctl daemon-reload - elif [ -f /sbin/initctl ]; then - /sbin/initctl reload-configuration fi for fname in api master minion syndic; do @@ -3574,7 +3402,7 @@ install_ubuntu_restart_daemons() { [ $fname = "minion" ] && [ "$_INSTALL_MINION" -eq $BS_FALSE ] && continue [ $fname = "syndic" ] && [ "$_INSTALL_SYNDIC" -eq $BS_FALSE ] && continue - if [ -f /bin/systemctl ] && [ "$DISTRO_MAJOR_VERSION" -ge 16 ]; then + if [ "$_SYSTEMD_FUNCTIONAL" -eq $BS_TRUE ] && [ "$DISTRO_MAJOR_VERSION" -ge 16 ]; then echodebug "There's systemd support while checking salt-$fname" systemctl stop salt-$fname > /dev/null 2>&1 systemctl start salt-$fname.service && continue @@ -3586,18 +3414,6 @@ install_ubuntu_restart_daemons() { fi fi - if [ -f /sbin/initctl ]; then - echodebug "There's upstart support while checking salt-$fname" - - if status salt-$fname 2>/dev/null | grep -q running; then - stop salt-$fname || (echodebug "Failed to stop salt-$fname" && return 1) - fi - - start salt-$fname && continue - # We failed to start the service, let's test the SysV code below - echodebug "Failed to start salt-$fname using Upstart" - fi - if [ ! -f /etc/init.d/salt-$fname ]; then echoerror "No init.d support for salt-$fname was found" return 1 @@ -3611,6 +3427,7 @@ install_ubuntu_restart_daemons() { } install_ubuntu_check_services() { + for fname in api master minion syndic; do # Skip salt-api since the service should be opt-in and not necessarily started on boot [ $fname = "api" ] && continue @@ -3620,10 +3437,8 @@ install_ubuntu_check_services() { [ $fname = "master" ] && [ "$_INSTALL_MASTER" -eq $BS_FALSE ] && continue [ $fname = "syndic" ] && [ "$_INSTALL_SYNDIC" -eq $BS_FALSE ] && continue - if [ -f /bin/systemctl ] && [ "$DISTRO_MAJOR_VERSION" -ge 16 ]; then + if [ "$_SYSTEMD_FUNCTIONAL" -eq $BS_TRUE ] && [ "$DISTRO_MAJOR_VERSION" -ge 16 ]; then __check_services_systemd salt-$fname || return 1 - elif [ -f /sbin/initctl ] && [ -f /etc/init/salt-${fname}.conf ]; then - __check_services_upstart salt-$fname || return 1 elif [ -f /etc/init.d/salt-$fname ]; then __check_services_debian salt-$fname || return 1 fi @@ -3641,12 +3456,12 @@ install_ubuntu_check_services() { # Debian Install Functions # __install_saltstack_debian_repository() { - DEBIAN_RELEASE="$DISTRO_MAJOR_VERSION" - DEBIAN_CODENAME="$DISTRO_CODENAME" - __PY_VERSION_REPO="apt" - if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq 3 ]; then - __PY_VERSION_REPO="py3" + echodebug "__install_saltstack_debian_repository() entry" + + if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -ne 3 ]; then + echoerror "Python version is no longer supported, only Python 3" + return 1 fi # Install downloader backend for GPG keys fetching @@ -3665,22 +3480,37 @@ __install_saltstack_debian_repository() { # shellcheck disable=SC2086,SC2090 __apt_get_install_noinput ${__PACKAGES} || return 1 - # amd64 is just a part of repository URI, 32-bit pkgs are hosted under the same location - SALTSTACK_DEBIAN_URL="${HTTP_VAL}://${_REPO_URL}/${__PY_VERSION_REPO}/debian/${DEBIAN_RELEASE}/${__REPO_ARCH}/${STABLE_REV}" - echo "$__REPO_ARCH_DEB $SALTSTACK_DEBIAN_URL $DEBIAN_CODENAME main" > "/etc/apt/sources.list.d/salt.list" - - __apt_key_fetch "$SALTSTACK_DEBIAN_URL/salt-archive-keyring.gpg" || return 1 + ## SALTSTACK_DEBIAN_URL="${HTTP_VAL}://${_REPO_URL}/${_ONEDIR_DIR}/${__PY_VERSION_REPO}/debian/${DEBIAN_RELEASE}/${__REPO_ARCH}/${STABLE_REV}" + ## echo "$__REPO_ARCH_DEB $SALTSTACK_DEBIAN_URL $DEBIAN_CODENAME main" > "/etc/apt/sources.list.d/salt.list" + ## __apt_key_fetch "$SALTSTACK_DEBIAN_URL/SALT-PROJECT-GPG-PUBKEY-2023.gpg" || return 1 + ## __wait_for_apt apt-get update || return 1 + __fetch_url "/etc/apt/sources.list.d/salt.sources" "https://github.com/saltstack/salt-install-guide/releases/latest/download/salt.sources" + __apt_key_fetch "${HTTP_VAL}://${_REPO_URL}/api/security/keypair/SaltProjectKey/public" || return 1 __wait_for_apt apt-get update || return 1 + + if [ "$STABLE_REV" != "latest" ]; then + # latest is default + STABLE_REV_MAJOR=$(echo "$STABLE_REV" | cut -d '.' -f 1) + if [ "$STABLE_REV_MAJOR" -eq "3006" ]; then + echo "Package: salt-*" > /etc/apt/preferences.d/salt-pin-1001 + echo "Pin: version 3006.*" >> /etc/apt/preferences.d/salt-pin-1001 + echo "Pin-Priority: 1001" >> /etc/apt/preferences.d/salt-pin-1001 + elif [ "$STABLE_REV_MAJOR" -eq "3007" ]; then + echo "Package: salt-*" > /etc/apt/preferences.d/salt-pin-1001 + echo "Pin: version 3007.*" >> /etc/apt/preferences.d/salt-pin-1001 + echo "Pin-Priority: 1001" >> /etc/apt/preferences.d/salt-pin-1001 + fi + fi } __install_saltstack_debian_onedir_repository() { - DEBIAN_RELEASE="$DISTRO_MAJOR_VERSION" - DEBIAN_CODENAME="$DISTRO_CODENAME" - __PY_VERSION_REPO="apt" - if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq 3 ]; then - __PY_VERSION_REPO="py3" + echodebug "__install_saltstack_debian_onedir_repository() entry" + + if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -ne 3 ]; then + echoerror "Python version is no longer supported, only Python 3" + return 1 fi # Install downloader backend for GPG keys fetching @@ -3699,80 +3529,30 @@ __install_saltstack_debian_onedir_repository() { # shellcheck disable=SC2086,SC2090 __apt_get_install_noinput ${__PACKAGES} || return 1 - # amd64 is just a part of repository URI, 32-bit pkgs are hosted under the same location - SALTSTACK_DEBIAN_URL="${HTTP_VAL}://${_REPO_URL}/${_ONEDIR_DIR}/${__PY_VERSION_REPO}/debian/${DEBIAN_RELEASE}/${__REPO_ARCH}/${ONEDIR_REV}/" - if [ "${ONEDIR_REV}" = "nightly" ] ; then - SALTSTACK_DEBIAN_URL="${HTTP_VAL}://${_REPO_URL}/${_ONEDIR_NIGHTLY_DIR}/${__PY_VERSION_REPO}/debian/${DEBIAN_RELEASE}/${__REPO_ARCH}/" - fi - echo "$__REPO_ARCH_DEB $SALTSTACK_DEBIAN_URL $DEBIAN_CODENAME main" > "/etc/apt/sources.list.d/salt.list" - - if [ "$(echo "${ONEDIR_REV}" | grep -E '(3004|3005)')" != "" ]; then - __apt_key_fetch "${SALTSTACK_DEBIAN_URL}salt-archive-keyring.gpg" || return 1 - elif [ "$(echo "${ONEDIR_REV}" | grep -E '(latest|nightly)')" != "" ]; then - __apt_key_fetch "${SALTSTACK_DEBIAN_URL}salt-archive-keyring.gpg" || \ - __apt_key_fetch "${SALTSTACK_DEBIAN_URL}SALT-PROJECT-GPG-PUBKEY-2023.gpg" || return 1 - else - __apt_key_fetch "${SALTSTACK_DEBIAN_URL}SALT-PROJECT-GPG-PUBKEY-2023.gpg" || return 1 - fi - - __wait_for_apt apt-get update || return 1 -} - -install_debian_deps() { - if [ $_START_DAEMONS -eq $BS_FALSE ]; then - echowarn "Not starting daemons on Debian based distributions is not working mostly because starting them is the default behaviour." - fi - - # No user interaction, libc6 restart services for example - export DEBIAN_FRONTEND=noninteractive - + __fetch_url "/etc/apt/sources.list.d/salt.sources" "https://github.com/saltstack/salt-install-guide/releases/latest/download/salt.sources" + __apt_key_fetch "${HTTP_VAL}://${_REPO_URL}/api/security/keypair/SaltProjectKey/public" || return 1 __wait_for_apt apt-get update || return 1 - if [ "${_UPGRADE_SYS}" -eq $BS_TRUE ]; then - # Try to update GPG keys first if allowed - if [ "${_INSECURE_DL}" -eq $BS_TRUE ]; then - if [ "$DISTRO_MAJOR_VERSION" -ge 10 ]; then - __apt_get_install_noinput --allow-unauthenticated debian-archive-keyring && apt-get update || return 1 - else - __apt_get_install_noinput --allow-unauthenticated debian-archive-keyring && - apt-key update && apt-get update || return 1 - fi + if [ "$ONEDIR_REV" != "latest" ]; then + # latest is default + ONEDIR_REV_MAJOR=$(echo "$ONEDIR_REV" | cut -d '.' -f 1) + if [ "$ONEDIR_REV_MAJOR" -eq "3006" ]; then + echo "Package: salt-*" > /etc/apt/preferences.d/salt-pin-1001 + echo "Pin: version 3006.*" >> /etc/apt/preferences.d/salt-pin-1001 + echo "Pin-Priority: 1001" >> /etc/apt/preferences.d/salt-pin-1001 + elif [ "$ONEDIR_REV_MAJOR" -eq "3007" ]; then + echo "Package: salt-*" > /etc/apt/preferences.d/salt-pin-1001 + echo "Pin: version 3007.*" >> /etc/apt/preferences.d/salt-pin-1001 + echo "Pin-Priority: 1001" >> /etc/apt/preferences.d/salt-pin-1001 fi - - __apt_get_upgrade_noinput || return 1 fi - - if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq 3 ]; then - PY_PKG_VER=3 - else - PY_PKG_VER="" - fi - - # Additionally install procps and pciutils which allows for Docker bootstraps. See 366#issuecomment-39666813 - __PACKAGES='procps pciutils' - - # YAML module is used for generating custom master/minion configs - __PACKAGES="${__PACKAGES} python${PY_PKG_VER}-yaml" - - # shellcheck disable=SC2086 - __apt_get_install_noinput ${__PACKAGES} || return 1 - - if [ "$_DISABLE_REPOS" -eq "$BS_FALSE" ] || [ "$_CUSTOM_REPO_URL" != "null" ]; then - __check_dpkg_architecture || return 1 - __install_saltstack_debian_repository || return 1 - fi - - if [ "${_EXTRA_PACKAGES}" != "" ]; then - echoinfo "Installing the following extra packages as requested: ${_EXTRA_PACKAGES}" - # shellcheck disable=SC2086 - __apt_get_install_noinput ${_EXTRA_PACKAGES} || return 1 - fi - - return 0 } install_debian_onedir_deps() { - if [ $_START_DAEMONS -eq $BS_FALSE ]; then + + echodebug "install_debian_onedir_git_deps() entry" + + if [ "$_START_DAEMONS" -eq $BS_FALSE ]; then echowarn "Not starting daemons on Debian based distributions is not working mostly because starting them is the default behaviour." fi @@ -3795,10 +3575,9 @@ install_debian_onedir_deps() { __apt_get_upgrade_noinput || return 1 fi - if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq 3 ]; then - PY_PKG_VER=3 - else - PY_PKG_VER="" + if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -ne 3 ]; then + echoerror "Python version is no longer supported, only Python 3" + return 1 fi # Additionally install procps and pciutils which allows for Docker bootstraps. See 366#issuecomment-39666813 @@ -3824,75 +3603,14 @@ install_debian_onedir_deps() { return 0 } -install_debian_git_pre() { - if ! __check_command_exists git; then - __apt_get_install_noinput git || return 1 - fi - - if [ "$_INSECURE_DL" -eq $BS_FALSE ] && [ "${_SALT_REPO_URL%%://*}" = "https" ]; then - __apt_get_install_noinput ca-certificates - fi - - __git_clone_and_checkout || return 1 - - # Let's trigger config_salt() - if [ "$_TEMP_CONFIG_DIR" = "null" ]; then - _TEMP_CONFIG_DIR="${_SALT_GIT_CHECKOUT_DIR}/conf/" - CONFIG_SALT_FUNC="config_salt" - fi -} - install_debian_git_deps() { - install_debian_deps || return 1 - install_debian_git_pre || return 1 - if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq 3 ]; then - PY_PKG_VER=3 - else - PY_PKG_VER="" - fi + echodebug "install_debian_git_deps() entry" - if [ "${_POST_NEON_INSTALL}" -eq $BS_FALSE ]; then - __PACKAGES="libzmq3 libzmq3-dev lsb-release python-apt python-backports.ssl-match-hostname" - __PACKAGES="${__PACKAGES} python-crypto python-jinja2 python-msgpack python-m2crypto" - __PACKAGES="${__PACKAGES} python-requests python-tornado python-yaml python-zmq" - - if [ "$_INSTALL_CLOUD" -eq $BS_TRUE ]; then - # Install python-libcloud if asked to - __PACKAGES="${__PACKAGES} python-libcloud" - fi - - # shellcheck disable=SC2086 - __apt_get_install_noinput ${__PACKAGES} || return 1 - else - __PACKAGES="python${PY_PKG_VER}-dev python${PY_PKG_VER}-pip python${PY_PKG_VER}-setuptools gcc" - echodebug "install_debian_git_deps() Installing ${__PACKAGES}" - # shellcheck disable=SC2086 - __apt_get_install_noinput ${__PACKAGES} || return 1 - fi - - return 0 -} - -install_debian_7_git_deps() { - install_debian_deps || return 1 - install_debian_git_deps || return 1 - - return 0 -} - -install_debian_8_git_deps() { - - if [ "${_POST_NEON_INSTALL}" -eq $BS_TRUE ]; then - echodebug "CALLING install_debian_git_deps" - install_debian_git_deps || return 1 - return 0 - fi - - install_debian_deps || return 1 + __wait_for_apt apt-get update || return 1 if ! __check_command_exists git; then - __apt_get_install_noinput git || return 1 + __apt_get_install_noinput git-core || return 1 fi if [ "$_INSECURE_DL" -eq $BS_FALSE ] && [ "${_SALT_REPO_URL%%://*}" = "https" ]; then @@ -3901,124 +3619,28 @@ install_debian_8_git_deps() { __git_clone_and_checkout || return 1 - __PACKAGES="libzmq3 libzmq3-dev lsb-release python-apt python-crypto python-jinja2" - __PACKAGES="${__PACKAGES} python-m2crypto python-msgpack python-requests python-systemd" - __PACKAGES="${__PACKAGES} python-yaml python-zmq python-concurrent.futures" - - if [ "$_INSTALL_CLOUD" -eq $BS_TRUE ]; then - # Install python-libcloud if asked to - __PACKAGES="${__PACKAGES} python-libcloud" + if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -ne 3 ]; then + echoerror "Python version is no longer supported, only Python 3" + return 1 fi - __PIP_PACKAGES='' - if (__check_pip_allowed >/dev/null 2>&1); then - __PIP_PACKAGES='tornado<5.0' - # Install development environment for building tornado Python module - __PACKAGES="${__PACKAGES} build-essential python-dev" - - if ! __check_command_exists pip; then - __PACKAGES="${__PACKAGES} python-pip" - fi - # Attempt to configure backports repo on non-x86_64 system - elif [ $_DISABLE_REPOS -eq $BS_FALSE ] && [ "$DPKG_ARCHITECTURE" != "amd64" ]; then - # Check if Debian Backports repo already configured - if ! apt-cache policy | grep -q 'Debian Backports'; then - echo 'deb http://httpredir.debian.org/debian jessie-backports main' > \ - /etc/apt/sources.list.d/backports.list - fi - - __wait_for_apt apt-get update || return 1 - - # python-tornado package should be installed from backports repo - __PACKAGES="${__PACKAGES} python-backports.ssl-match-hostname python-tornado/jessie-backports" - else - __PACKAGES="${__PACKAGES} python-backports.ssl-match-hostname python-tornado" - fi + __PACKAGES="python${PY_PKG_VER}-dev python${PY_PKG_VER}-pip python${PY_PKG_VER}-setuptools gcc" + echodebug "install_debian_git_deps() Installing ${__PACKAGES}" # shellcheck disable=SC2086 __apt_get_install_noinput ${__PACKAGES} || return 1 - if [ "${__PIP_PACKAGES}" != "" ]; then - # shellcheck disable=SC2086,SC2090 - pip install -U ${__PIP_PACKAGES} || return 1 - fi - # Let's trigger config_salt() if [ "$_TEMP_CONFIG_DIR" = "null" ]; then - _TEMP_CONFIG_DIR="${_SALT_GIT_CHECKOUT_DIR}/conf/" + _TEMP_CONFIG_DIR="${_SALT_GIT_CHECKOUT_DIR}/conf" CONFIG_SALT_FUNC="config_salt" fi return 0 } -install_debian_9_git_deps() { - - if [ "${_POST_NEON_INSTALL}" -eq $BS_TRUE ]; then - install_debian_git_deps || return 1 - return 0 - fi - - install_debian_deps || return 1 - install_debian_git_pre || return 1 - - __PACKAGES="libzmq5 lsb-release" - - if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq 3 ]; then - PY_PKG_VER=3 - else - PY_PKG_VER="" - - # These packages are PY2-ONLY - __PACKAGES="${__PACKAGES} python-backports-abc python-m2crypto python-concurrent.futures" - fi - - __PACKAGES="${__PACKAGES} python${PY_PKG_VER}-apt python${PY_PKG_VER}-crypto python${PY_PKG_VER}-jinja2" - __PACKAGES="${__PACKAGES} python${PY_PKG_VER}-msgpack python${PY_PKG_VER}-requests python${PY_PKG_VER}-systemd" - __PACKAGES="${__PACKAGES} python${PY_PKG_VER}-tornado python${PY_PKG_VER}-yaml python${PY_PKG_VER}-zmq" - - if [ "$_INSTALL_CLOUD" -eq $BS_TRUE ]; then - # Install python-libcloud if asked to - __PACKAGES="${__PACKAGES} python${PY_PKG_VER}-libcloud" - fi - - # shellcheck disable=SC2086 - __apt_get_install_noinput ${__PACKAGES} || return 1 - - return 0 -} - -install_debian_10_git_deps() { - - if [ "${_POST_NEON_INSTALL}" -eq $BS_TRUE ]; then - install_debian_git_deps || return 1 - return 0 - fi - - install_debian_deps || return 1 - install_debian_git_pre || return 1 - - if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq 3 ]; then - _py=${_PY_EXE} - PY_PKG_VER=3 - __PACKAGES="python${PY_PKG_VER}-distutils" - else - _py="python" - PY_PKG_VER="" - __PACKAGES="" - fi - - __install_tornado_pip ${_py}|| return 1 - __PACKAGES="${__PACKAGES} python${PY_PKG_VER}-msgpack python${PY_PKG_VER}-jinja2" - __PACKAGES="${__PACKAGES} python${PY_PKG_VER}-tornado python${PY_PKG_VER}-yaml python${PY_PKG_VER}-zmq" - - # shellcheck disable=SC2086 - __apt_get_install_noinput ${__PACKAGES} || return 1 - - return 0 -} - install_debian_stable() { + __PACKAGES="" if [ "$_INSTALL_CLOUD" -eq $BS_TRUE ];then @@ -4034,81 +3656,70 @@ install_debian_stable() { __PACKAGES="${__PACKAGES} salt-syndic" fi + if [ "$_INSTALL_SALT_API" -eq $BS_TRUE ]; then + __PACKAGES="${__PACKAGES} salt-api" + fi + # shellcheck disable=SC2086 __apt_get_install_noinput ${__PACKAGES} || return 1 return 0 } -install_debian_7_stable() { - install_debian_stable || return 1 +install_debian_11_git_deps() { + + install_debian_git_deps || return 1 return 0 } -install_debian_8_stable() { - install_debian_stable || return 1 - return 0 -} +install_debian_12_git_deps() { -install_debian_9_stable() { - install_debian_stable || return 1 + install_debian_git_deps || return 1 return 0 } install_debian_git() { + if [ -n "$_PY_EXE" ]; then _PYEXE=${_PY_EXE} else - _PYEXE=python + ## _PYEXE=python + echoerror "Python 2 is no longer supported, only Py3 packages" + return 1 fi - if [ "${_POST_NEON_INSTALL}" -eq $BS_TRUE ]; then - # We can use --prefix on debian based ditributions - if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq 3 ]; then - _POST_NEON_PIP_INSTALL_ARGS="--target=/usr/lib/python3/dist-packages --install-option=--install-scripts=/usr/bin" - else - _POST_NEON_PIP_INSTALL_ARGS="--target=/usr/lib/python2.7/dist-packages --install-option=--install-scripts=/usr/bin" - fi - _POST_NEON_PIP_INSTALL_ARGS="" - __install_salt_from_repo_post_neon "${_PY_EXE}" || return 1 - cd "${_SALT_GIT_CHECKOUT_DIR}" || return 1 + # We can use --prefix on debian based ditributions - # Account for new path for services files in later releases - if [ -d "pkg/common" ]; then - _SERVICE_DIR="pkg/common" - else - _SERVICE_DIR="pkg" - fi + _PIP_INSTALL_ARGS="" - sed -i 's:/usr/bin:/usr/local/bin:g' ${_SERVICE_DIR}/*.service - return 0 - fi + __install_salt_from_repo "${_PY_EXE}" || return 1 + cd "${_SALT_GIT_CHECKOUT_DIR}" || return 1 - if [ -f "${_SALT_GIT_CHECKOUT_DIR}/salt/syspaths.py" ]; then - # shellcheck disable=SC2086 - "${_PYEXE}" setup.py --salt-config-dir="$_SALT_ETC_DIR" --salt-cache-dir="${_SALT_CACHE_DIR}" ${SETUP_PY_INSTALL_ARGS} install --install-layout=deb || return 1 + # Account for new path for services files in later releases + if [ -d "pkg/common" ]; then + _SERVICE_DIR="pkg/common" else - # shellcheck disable=SC2086 - "${_PYEXE}" setup.py ${SETUP_PY_INSTALL_ARGS} install --install-layout=deb || return 1 + _SERVICE_DIR="pkg" fi + + sed -i 's:/usr/bin:/usr/local/bin:g' "${_SERVICE_DIR}"/*.service + return 0 } -install_debian_7_git() { +install_debian_11_git() { + install_debian_git || return 1 return 0 } -install_debian_8_git() { - install_debian_git || return 1 - return 0 -} +install_debian_12_git() { -install_debian_9_git() { install_debian_git || return 1 return 0 } install_debian_onedir() { + __PACKAGES="" if [ "$_INSTALL_CLOUD" -eq $BS_TRUE ];then @@ -4124,6 +3735,10 @@ install_debian_onedir() { __PACKAGES="${__PACKAGES} salt-syndic" fi + if [ "$_INSTALL_SALT_API" -eq $BS_TRUE ]; then + __PACKAGES="${__PACKAGES} salt-api" + fi + # shellcheck disable=SC2086 __apt_get_install_noinput ${__PACKAGES} || return 1 @@ -4131,6 +3746,7 @@ install_debian_onedir() { } install_debian_git_post() { + for fname in api master minion syndic; do # Skip if not meant to be installed [ "$fname" = "api" ] && \ @@ -4147,7 +3763,7 @@ install_debian_git_post() { fi # Configure SystemD for Debian 8 "Jessie" and later - if [ -f /bin/systemctl ]; then + if [ "$_SYSTEMD_FUNCTIONAL" -eq $BS_TRUE ]; then if [ ! -f /lib/systemd/system/salt-${fname}.service ] || \ { [ -f /lib/systemd/system/salt-${fname}.service ] && [ $_FORCE_OVERWRITE -eq $BS_TRUE ]; }; then if [ -f "${_SERVICE_DIR}/salt-${fname}.service" ]; then @@ -4165,29 +3781,12 @@ install_debian_git_post() { /bin/systemctl enable "salt-${fname}.service" SYSTEMD_RELOAD=$BS_TRUE - - # Install initscripts for Debian 7 "Wheezy" - elif [ ! -f "/etc/init.d/salt-$fname" ] || \ - { [ -f "/etc/init.d/salt-$fname" ] && [ "$_FORCE_OVERWRITE" -eq $BS_TRUE ]; }; then - __copyfile "${_SALT_GIT_CHECKOUT_DIR}/pkg/deb/salt-${fname}.init" "/etc/init.d/salt-${fname}" - __copyfile "${_SALT_GIT_CHECKOUT_DIR}/pkg/deb/salt-${fname}.environment" "/etc/default/salt-${fname}" - - if [ ! -f "/etc/init.d/salt-${fname}" ]; then - echowarn "The init script for salt-${fname} was not found, skipping it..." - continue - fi - - chmod +x "/etc/init.d/salt-${fname}" - - # Skip salt-api since the service should be opt-in and not necessarily started on boot - [ "$fname" = "api" ] && continue - - update-rc.d "salt-${fname}" defaults fi done } install_debian_2021_post() { + # Kali 2021 (debian derivative) disables all network services by default # Using archlinux post function to enable salt systemd services install_arch_linux_post || return 1 @@ -4195,6 +3794,7 @@ install_debian_2021_post() { } install_debian_restart_daemons() { + [ "$_START_DAEMONS" -eq $BS_FALSE ] && return 0 for fname in api master minion syndic; do @@ -4206,8 +3806,8 @@ install_debian_restart_daemons() { [ $fname = "minion" ] && [ "$_INSTALL_MINION" -eq $BS_FALSE ] && continue [ $fname = "syndic" ] && [ "$_INSTALL_SYNDIC" -eq $BS_FALSE ] && continue - if [ -f /bin/systemctl ]; then - # Debian 8 uses systemd + if [ "$_SYSTEMD_FUNCTIONAL" -eq $BS_TRUE ]; then + # Debian 8 and above uses systemd /bin/systemctl stop salt-$fname > /dev/null 2>&1 /bin/systemctl start salt-$fname.service && continue if [ "$_ECHO_DEBUG" -eq $BS_TRUE ]; then @@ -4223,6 +3823,7 @@ install_debian_restart_daemons() { } install_debian_check_services() { + for fname in api master minion syndic; do # Skip salt-api since the service should be opt-in and not necessarily started on boot [ $fname = "api" ] && continue @@ -4232,7 +3833,7 @@ install_debian_check_services() { [ $fname = "minion" ] && [ "$_INSTALL_MINION" -eq $BS_FALSE ] && continue [ $fname = "syndic" ] && [ "$_INSTALL_SYNDIC" -eq $BS_FALSE ] && continue - if [ -f /bin/systemctl ]; then + if [ "$_SYSTEMD_FUNCTIONAL" -eq $BS_TRUE ]; then __check_services_systemd salt-$fname || return 1 elif [ -f /etc/init.d/salt-$fname ]; then __check_services_debian salt-$fname || return 1 @@ -4251,54 +3852,55 @@ install_debian_check_services() { # __install_saltstack_fedora_onedir_repository() { - if [ "$ITYPE" = "stable" ]; then - REPO_REV="$ONEDIR_REV" - else - REPO_REV="latest" + + if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -ne 3 ]; then + echoerror "Python version is no longer supported, only Python 3" + return 1 fi - __PY_VERSION_REPO="yum" - if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq 3 ]; then - __PY_VERSION_REPO="py3" - fi - - GPG_KEY="SALT-PROJECT-GPG-PUBKEY-2023.pub" - - REPO_FILE="/etc/yum.repos.d/salt.repo" - - if [ ! -s "$REPO_FILE" ] || [ "$_FORCE_OVERWRITE" -eq $BS_TRUE ]; then - FETCH_URL="${HTTP_VAL}://${_REPO_URL}/${_ONEDIR_DIR}/${__PY_VERSION_REPO}/fedora/${DISTRO_MAJOR_VERSION}/${CPU_ARCH_L}/${ONEDIR_REV}" - if [ "${ONEDIR_REV}" = "nightly" ] ; then - FETCH_URL="${HTTP_VAL}://${_REPO_URL}/${_ONEDIR_NIGHTLY_DIR}/${__PY_VERSION_REPO}/fedora/${DISTRO_MAJOR_VERSION}/${CPU_ARCH_L}/" + if [ ! -s "$YUM_REPO_FILE" ] || [ "$_FORCE_OVERWRITE" -eq $BS_TRUE ]; then + FETCH_URL="https://github.com/saltstack/salt-install-guide/releases/latest/download/salt.repo" + __fetch_url "${YUM_REPO_FILE}" "${FETCH_URL}" + if [ "$ONEDIR_REV" != "latest" ]; then + # 3006.x is default + REPO_REV_MAJOR=$(echo "$ONEDIR_REV" | cut -d '.' -f 1) + if [ "$REPO_REV_MAJOR" -eq "3007" ]; then + # Enable the Salt 3007 STS repo + dnf config-manager --set-disable salt-repo-* + dnf config-manager --set-enabled salt-repo-3007-sts + fi + else + # Enable the Salt LATEST repo + dnf config-manager --set-disable salt-repo-* + dnf config-manager --set-enabled salt-repo-latest fi + dnf clean expire-cache || return 1 - __fetch_url "${REPO_FILE}" "${FETCH_URL}.repo" - - __rpm_import_gpg "${FETCH_URL}/${GPG_KEY}" || return 1 - - yum clean metadata || return 1 - elif [ "$REPO_REV" != "latest" ]; then + elif [ "$ONEDIR_REV" != "latest" ]; then echowarn "salt.repo already exists, ignoring salt version argument." - echowarn "Use -F (forced overwrite) to install $REPO_REV." + echowarn "Use -F (forced overwrite) to install $ONEDIR_REV." fi return 0 } install_fedora_deps() { + if [ "$_UPGRADE_SYS" -eq $BS_TRUE ]; then dnf -y update || return 1 fi __PACKAGES="${__PACKAGES:=}" - if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -lt 3 ]; then - echoerror "There are no Python 2 stable packages for Fedora, only Py3 packages" + if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -ne 3 ]; then + echoerror "Python version is no longer supported, only Python 3" return 1 fi # Salt on Fedora is Py3 PY_PKG_VER=3 + ## find no dnf-utils in Fedora packaging archives and yum-utils EL7 and F30, none after + ## but find it on 8 and 9 Centos Stream __PACKAGES="${__PACKAGES} dnf-utils libyaml procps-ng python${PY_PKG_VER}-crypto python${PY_PKG_VER}-jinja2" __PACKAGES="${__PACKAGES} python${PY_PKG_VER}-msgpack python${PY_PKG_VER}-requests python${PY_PKG_VER}-zmq" __PACKAGES="${__PACKAGES} python${PY_PKG_VER}-pip python${PY_PKG_VER}-m2crypto python${PY_PKG_VER}-pyyaml" @@ -4313,84 +3915,11 @@ install_fedora_deps() { return 0 } -install_fedora_stable() { - if [ "$STABLE_REV" = "latest" ]; then - __SALT_VERSION="" - else - __SALT_VERSION="$(dnf list --showduplicates salt | grep "$STABLE_REV" | head -n 1 | awk '{print $2}')" - if [ "x${__SALT_VERSION}" = "x" ]; then - echoerror "Could not find a stable install for Salt ${STABLE_REV}" - exit 1 - fi - echoinfo "Installing Stable Package Version ${__SALT_VERSION}" - __SALT_VERSION="-${__SALT_VERSION}" - fi - __PACKAGES="" - - if [ "$_INSTALL_CLOUD" -eq $BS_TRUE ];then - __PACKAGES="${__PACKAGES} salt-cloud${__SALT_VERSION}" - fi - if [ "$_INSTALL_MASTER" -eq $BS_TRUE ]; then - __PACKAGES="${__PACKAGES} salt-master${__SALT_VERSION}" - fi - if [ "$_INSTALL_MINION" -eq $BS_TRUE ]; then - __PACKAGES="${__PACKAGES} salt-minion${__SALT_VERSION}" - fi - if [ "$_INSTALL_SYNDIC" -eq $BS_TRUE ]; then - __PACKAGES="${__PACKAGES} salt-syndic${__SALT_VERSION}" - fi - - # shellcheck disable=SC2086 - __dnf_install_noinput ${__PACKAGES} || return 1 - - __python="python3" - if ! __check_command_exists python3; then - echoerror "Could not find a python3 binary?!" - return 1 - fi - - if [ "${_POST_NEON_INSTALL}" -eq $BS_FALSE ]; then - __check_pip_allowed "You need to allow pip based installations (-P) for Tornado <5.0 in order to install Salt" - __installed_tornado_rpm=$(rpm -qa | grep python${PY_PKG_VER}-tornado) - if [ -n "${__installed_tornado_rpm}" ]; then - echodebug "Removing system package ${__installed_tornado_rpm}" - rpm -e --nodeps "${__installed_tornado_rpm}" || return 1 - fi - __get_site_packages_dir_code=$(cat << EOM -import site -print([d for d in site.getsitepackages() if d.startswith('/usr/lib/python')][0]) -EOM -) - __target_path=$(${__python} -c "${__get_site_packages_dir_code}") - echodebug "Running '${__python}' -m pip install --target ${__target_path} 'tornado<5.0'" - "${__python}" -m pip install --target "${__target_path}" "tornado<5" || return 1 - fi - - return 0 -} - -install_fedora_stable_post() { - for fname in api master minion syndic; do - # Skip salt-api since the service should be opt-in and not necessarily started on boot - [ $fname = "api" ] && continue - - # Skip if not meant to be installed - [ $fname = "master" ] && [ "$_INSTALL_MASTER" -eq $BS_FALSE ] && continue - [ $fname = "minion" ] && [ "$_INSTALL_MINION" -eq $BS_FALSE ] && continue - [ $fname = "syndic" ] && [ "$_INSTALL_SYNDIC" -eq $BS_FALSE ] && continue - - systemctl is-enabled salt-$fname.service || (systemctl preset salt-$fname.service && systemctl enable salt-$fname.service) - sleep 1 - systemctl daemon-reload - done -} - install_fedora_git_deps() { - if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq 3 ]; then - # Packages are named python3- - PY_PKG_VER=3 - else - PY_PKG_VER=2 + + if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -ne 3 ]; then + echoerror "Python version is no longer supported, only Python 3" + return 1 fi __PACKAGES="" @@ -4409,79 +3938,40 @@ install_fedora_git_deps() { __git_clone_and_checkout || return 1 - if [ "${_POST_NEON_INSTALL}" -eq $BS_FALSE ]; then - - if [ "$_INSECURE_DL" -eq $BS_FALSE ] && [ "${_SALT_REPO_URL%%://*}" = "https" ]; then - __PACKAGES="${__PACKAGES} ca-certificates" - fi - if [ "$_INSTALL_CLOUD" -eq $BS_TRUE ]; then - __PACKAGES="${__PACKAGES} python${PY_PKG_VER}-libcloud python${PY_PKG_VER}-netaddr" - fi - - install_fedora_deps || return 1 - - if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq 3 ]; then - if __check_command_exists python3; then - __python="python3" - fi - elif [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq 2 ]; then - if __check_command_exists python2; then - __python="python2" - fi - else - if ! __check_command_exists python; then - echoerror "Unable to find a python binary?!" - return 1 - fi - # Let's hope it's the right one - __python="python" - fi - - grep tornado "${_SALT_GIT_CHECKOUT_DIR}/requirements/base.txt" | while IFS=' - ' read -r dep; do - echodebug "Running '${__python}' -m pip install '${dep}'" - "${__python}" -m pip install "${dep}" || return 1 - done - else - __PACKAGES="python${PY_PKG_VER}-devel python${PY_PKG_VER}-pip python${PY_PKG_VER}-setuptools gcc" - if [ "${DISTRO_VERSION}" -ge 35 ]; then - __PACKAGES="${__PACKAGES} gcc-c++" - fi - # shellcheck disable=SC2086 - __dnf_install_noinput ${__PACKAGES} || return 1 - fi + __PACKAGES="python${PY_PKG_VER}-devel python${PY_PKG_VER}-pip python${PY_PKG_VER}-setuptools gcc gcc-c++" + # shellcheck disable=SC2086 + __dnf_install_noinput ${__PACKAGES} || return 1 # Let's trigger config_salt() if [ "$_TEMP_CONFIG_DIR" = "null" ]; then - _TEMP_CONFIG_DIR="${_SALT_GIT_CHECKOUT_DIR}/conf/" + _TEMP_CONFIG_DIR="${_SALT_GIT_CHECKOUT_DIR}/conf" CONFIG_SALT_FUNC="config_salt" fi + _fedora_dep="contextvars" + echodebug "Running '${_PY_EXE} -m pip install --upgrade ${_fedora_dep}'" + ${_PY_EXE} -m pip install --upgrade "${_fedora_dep}" + return 0 } install_fedora_git() { + if [ "${_PY_EXE}" != "" ]; then _PYEXE=${_PY_EXE} echoinfo "Using the following python version: ${_PY_EXE} to install salt" else - _PYEXE='python2' + echoerror "Python 2 is no longer supported, only Py3 packages" + return 1 fi - if [ "${_POST_NEON_INSTALL}" -eq $BS_TRUE ]; then - __install_salt_from_repo_post_neon "${_PY_EXE}" || return 1 - return 0 - fi - - if [ -f "${_SALT_GIT_CHECKOUT_DIR}/salt/syspaths.py" ]; then - ${_PYEXE} setup.py --salt-config-dir="$_SALT_ETC_DIR" --salt-cache-dir="${_SALT_CACHE_DIR}" ${SETUP_PY_INSTALL_ARGS} install --prefix=/usr || return 1 - else - ${_PYEXE} setup.py ${SETUP_PY_INSTALL_ARGS} install --prefix=/usr || return 1 - fi + __install_salt_from_repo "${_PY_EXE}" || return 1 return 0 + } install_fedora_git_post() { + for fname in api master minion syndic; do # Skip if not meant to be installed [ $fname = "api" ] && \ @@ -4509,10 +3999,12 @@ install_fedora_git_post() { systemctl is-enabled salt-$fname.service || (systemctl preset salt-$fname.service && systemctl enable salt-$fname.service) sleep 1 systemctl daemon-reload + done } install_fedora_restart_daemons() { + [ $_START_DAEMONS -eq $BS_FALSE ] && return for fname in api master minion syndic; do @@ -4535,6 +4027,7 @@ install_fedora_restart_daemons() { } install_fedora_check_services() { + for fname in api master minion syndic; do # Skip salt-api since the service should be opt-in and not necessarily started on boot [ $fname = "api" ] && continue @@ -4567,19 +4060,13 @@ install_fedora_onedir_deps() { fi # If -R was passed, we need to configure custom repo url with rsync-ed packages - # Which is still handled in __install_saltstack_rhel_repository. This call has + # Which is still handled in __install_saltstack_rhel_onedir_repository. This call has # its own check in case -r was passed without -R. if [ "$_CUSTOM_REPO_URL" != "null" ]; then __install_saltstack_fedora_onedir_repository || return 1 fi - if [ "$DISTRO_MAJOR_VERSION" -ge 8 ]; then - __PACKAGES="dnf-utils chkconfig" - else - __PACKAGES="yum-utils chkconfig" - fi - - __PACKAGES="${__PACKAGES} procps" + __PACKAGES="dnf-utils chkconfig procps-ng" # shellcheck disable=SC2086 __yum_install_noinput ${__PACKAGES} || return 1 @@ -4596,6 +4083,7 @@ install_fedora_onedir_deps() { install_fedora_onedir() { + STABLE_REV=$ONEDIR_REV #install_fedora_stable || return 1 @@ -4614,6 +4102,10 @@ install_fedora_onedir() { __PACKAGES="${__PACKAGES} salt-syndic" fi + if [ "$_INSTALL_SALT_API" -eq $BS_TRUE ]; then + __PACKAGES="${__PACKAGES} salt-api" + fi + # shellcheck disable=SC2086 __yum_install_noinput ${__PACKAGES} || return 1 @@ -4621,11 +4113,26 @@ install_fedora_onedir() { } install_fedora_onedir_post() { + STABLE_REV=$ONEDIR_REV - install_fedora_stable_post || return 1 + + for fname in api master minion syndic; do + # Skip salt-api since the service should be opt-in and not necessarily started on boot + [ $fname = "api" ] && continue + + # Skip if not meant to be installed + [ $fname = "master" ] && [ "$_INSTALL_MASTER" -eq $BS_FALSE ] && continue + [ $fname = "minion" ] && [ "$_INSTALL_MINION" -eq $BS_FALSE ] && continue + [ $fname = "syndic" ] && [ "$_INSTALL_SYNDIC" -eq $BS_FALSE ] && continue + + systemctl is-enabled salt-$fname.service || (systemctl preset salt-$fname.service && systemctl enable salt-$fname.service) + sleep 1 + systemctl daemon-reload + done return 0 } + # # Ended Fedora Install Functions # @@ -4635,133 +4142,40 @@ install_fedora_onedir_post() { # # CentOS Install Functions # -__install_saltstack_rhel_repository() { - if [ "${DISTRO_MAJOR_VERSION}" -ge 9 ]; then - echoerror "Old stable repository unavailable on RH variants greater than or equal to 9" - echoerror "Use the stable install type." - exit 1 - fi - - if [ "$ITYPE" = "stable" ]; then - repo_rev="$STABLE_REV" - else - repo_rev="latest" - fi - - __PY_VERSION_REPO="yum" - if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq 3 ]; then - __PY_VERSION_REPO="py3" - fi - - # Avoid using '$releasever' variable for yum. - # Instead, this should work correctly on all RHEL variants. - base_url="${HTTP_VAL}://${_REPO_URL}/${__PY_VERSION_REPO}/redhat/${DISTRO_MAJOR_VERSION}/\$basearch/${repo_rev}/" - if [ "${DISTRO_MAJOR_VERSION}" -eq 7 ]; then - gpg_key="SALTSTACK-GPG-KEY.pub base/RPM-GPG-KEY-CentOS-7" - elif [ "${DISTRO_MAJOR_VERSION}" -ge 9 ]; then - gpg_key="SALTSTACK-GPG-KEY2.pub" - else - gpg_key="SALTSTACK-GPG-KEY.pub" - fi - - gpg_key_urls="" - for key in $gpg_key; do - gpg_key_urls=$(printf "${base_url}${key},%s" "$gpg_key_urls") - done - - repo_file="/etc/yum.repos.d/salt.repo" - - if [ ! -s "$repo_file" ] || [ "$_FORCE_OVERWRITE" -eq $BS_TRUE ]; then - cat <<_eof > "$repo_file" -[saltstack] -name=SaltStack ${repo_rev} Release Channel for RHEL/CentOS \$releasever -baseurl=${base_url} -skip_if_unavailable=True -gpgcheck=1 -gpgkey=${gpg_key_urls} -enabled=1 -enabled_metadata=1 -_eof - - fetch_url="${HTTP_VAL}://${_REPO_URL}/${__PY_VERSION_REPO}/redhat/${DISTRO_MAJOR_VERSION}/${CPU_ARCH_L}/${repo_rev}/" - for key in $gpg_key; do - __rpm_import_gpg "${fetch_url}${key}" || return 1 - done - - yum clean metadata || return 1 - elif [ "$repo_rev" != "latest" ]; then - echowarn "salt.repo already exists, ignoring salt version argument." - echowarn "Use -F (forced overwrite) to install $repo_rev." - fi - - return 0 -} - __install_saltstack_rhel_onedir_repository() { - if [ "$ITYPE" = "stable" ]; then - repo_rev="$ONEDIR_REV" - else - repo_rev="latest" + + if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -ne 3 ]; then + echoerror "Python version is no longer supported, only Python 3" + return 1 fi - __PY_VERSION_REPO="yum" - if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq 3 ]; then - __PY_VERSION_REPO="py3" - fi - - # Avoid using '$releasever' variable for yum. - # Instead, this should work correctly on all RHEL variants. - base_url="${HTTP_VAL}://${_REPO_URL}/${_ONEDIR_DIR}/${__PY_VERSION_REPO}/redhat/${DISTRO_MAJOR_VERSION}/\$basearch/${ONEDIR_REV}/" - if [ "${ONEDIR_REV}" = "nightly" ] ; then - base_url="${HTTP_VAL}://${_REPO_URL}/${_ONEDIR_NIGHTLY_DIR}/${__PY_VERSION_REPO}/redhat/${DISTRO_MAJOR_VERSION}/\$basearch/" - fi - if [ "$(echo "${ONEDIR_REV}" | grep -E '(3004|3005)')" != "" ] || [ "${ONEDIR_REV}" = "nightly" ]; then - if [ "${DISTRO_MAJOR_VERSION}" -eq 9 ]; then - gpg_key="SALTSTACK-GPG-KEY2.pub" - else - gpg_key="SALTSTACK-GPG-KEY.pub" - fi - else - gpg_key="SALT-PROJECT-GPG-PUBKEY-2023.pub" - fi - - gpg_key_urls="" - for key in $gpg_key; do - gpg_key_urls=$(printf "${base_url}${key},%s" "$gpg_key_urls") - done - - repo_file="/etc/yum.repos.d/salt.repo" - - if [ ! -s "$repo_file" ] || [ "$_FORCE_OVERWRITE" -eq $BS_TRUE ]; then - cat <<_eof > "$repo_file" -[saltstack] -name=SaltStack ${repo_rev} Release Channel for RHEL/CentOS \$releasever -baseurl=${base_url} -skip_if_unavailable=True -gpgcheck=1 -gpgkey=${gpg_key_urls} -enabled=1 -enabled_metadata=1 -_eof - - fetch_url="${HTTP_VAL}://${_REPO_URL}/${_ONEDIR_DIR}/${__PY_VERSION_REPO}/redhat/${DISTRO_MAJOR_VERSION}/${CPU_ARCH_L}/${ONEDIR_REV}/" - if [ "${ONEDIR_REV}" = "nightly" ] ; then - fetch_url="${HTTP_VAL}://${_REPO_URL}/${_ONEDIR_NIGHTLY_DIR}/${__PY_VERSION_REPO}/redhat/${DISTRO_MAJOR_VERSION}/${CPU_ARCH_L}/" + if [ ! -s "$YUM_REPO_FILE" ] || [ "$_FORCE_OVERWRITE" -eq $BS_TRUE ]; then + FETCH_URL="https://github.com/saltstack/salt-install-guide/releases/latest/download/salt.repo" + __fetch_url "${YUM_REPO_FILE}" "${FETCH_URL}" + if [ "$ONEDIR_REV" != "latest" ]; then + # 3006.x is default + REPO_REV_MAJOR=$(echo "$ONEDIR_REV" | cut -d '.' -f 1) + if [ "$REPO_REV_MAJOR" -eq "3007" ]; then + # Enable the Salt 3007 STS repo + dnf config-manager --set-disable salt-repo-* + dnf config-manager --set-enabled salt-repo-3007-sts + fi + else + # Enable the Salt LATEST repo + dnf config-manager --set-disable salt-repo-* + dnf config-manager --set-enabled salt-repo-latest fi - for key in $gpg_key; do - __rpm_import_gpg "${fetch_url}${key}" || return 1 - done - - yum clean metadata || return 1 - elif [ "$repo_rev" != "latest" ]; then + dnf clean expire-cache || return 1 + elif [ "$ONEDIR_REV" != "latest" ]; then echowarn "salt.repo already exists, ignoring salt version argument." - echowarn "Use -F (forced overwrite) to install $repo_rev." + echowarn "Use -F (forced overwrite) to install $ONEDIR_REV." fi return 0 } install_centos_stable_deps() { + if [ "$_UPGRADE_SYS" -eq $BS_TRUE ]; then yum -y update || return 1 fi @@ -4773,48 +4187,18 @@ install_centos_stable_deps() { fi if [ "$_DISABLE_REPOS" -eq "$BS_FALSE" ]; then - __install_saltstack_rhel_repository || return 1 + echoerror "old-stable packages are no longer supported and are End-Of-Life." + return 1 fi # If -R was passed, we need to configure custom repo url with rsync-ed packages - # Which is still handled in __install_saltstack_rhel_repository. This call has + # Which is still handled in __install_saltstack_rhel_onedir_repository. This call has # its own check in case -r was passed without -R. if [ "$_CUSTOM_REPO_URL" != "null" ]; then - __install_saltstack_rhel_repository || return 1 + __install_saltstack_rhel_onedir_repository || return 1 fi - if [ "$DISTRO_MAJOR_VERSION" -ge 8 ]; then - __PACKAGES="dnf-utils chkconfig" - else - __PACKAGES="yum-utils chkconfig" - fi - - if [ "${_POST_NEON_INSTALL}" -eq $BS_FALSE ]; then - if [ "$DISTRO_MAJOR_VERSION" -ge 8 ]; then - # YAML module is used for generating custom master/minion configs - if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq 3 ]; then - __PACKAGES="${__PACKAGES} python3-pyyaml python3-setuptools" - else - __PACKAGES="${__PACKAGES} python2-pyyaml" - fi - elif [ "$DISTRO_MAJOR_VERSION" -eq 7 ]; then - # YAML module is used for generating custom master/minion configs - if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq 3 ]; then - __PACKAGES="${__PACKAGES} python36-PyYAML python36-setuptools" - else - __PACKAGES="${__PACKAGES} PyYAML" - fi - else - # YAML module is used for generating custom master/minion configs - if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq 3 ]; then - __PACKAGES="${__PACKAGES} python34-PyYAML python34-setuptools" - else - __PACKAGES="${__PACKAGES} PyYAML" - fi - fi - fi - - __PACKAGES="${__PACKAGES} procps" + __PACKAGES="yum-utils chkconfig procps-ng findutils" # shellcheck disable=SC2086 __yum_install_noinput ${__PACKAGES} || return 1 @@ -4825,11 +4209,11 @@ install_centos_stable_deps() { __yum_install_noinput ${_EXTRA_PACKAGES} || return 1 fi - return 0 } install_centos_stable() { + __PACKAGES="" if [ "$_INSTALL_CLOUD" -eq $BS_TRUE ];then @@ -4845,6 +4229,10 @@ install_centos_stable() { __PACKAGES="${__PACKAGES} salt-syndic" fi + if [ "$_INSTALL_SALT_API" -eq $BS_TRUE ]; then + __PACKAGES="${__PACKAGES} salt-api" + fi + # shellcheck disable=SC2086 __yum_install_noinput ${__PACKAGES} || return 1 @@ -4859,6 +4247,7 @@ install_centos_stable() { } install_centos_stable_post() { + SYSTEMD_RELOAD=$BS_FALSE for fname in api master minion syndic; do @@ -4870,7 +4259,7 @@ install_centos_stable_post() { [ $fname = "minion" ] && [ "$_INSTALL_MINION" -eq $BS_FALSE ] && continue [ $fname = "syndic" ] && [ "$_INSTALL_SYNDIC" -eq $BS_FALSE ] && continue - if [ -f /bin/systemctl ]; then + if [ "$_SYSTEMD_FUNCTIONAL" -eq $BS_TRUE ]; then /bin/systemctl is-enabled salt-${fname}.service > /dev/null 2>&1 || ( /bin/systemctl preset salt-${fname}.service > /dev/null 2>&1 && /bin/systemctl enable salt-${fname}.service > /dev/null 2>&1 @@ -4890,14 +4279,14 @@ install_centos_stable_post() { } install_centos_git_deps() { + # First try stable deps then fall back to onedir deps if that one fails # if we're installing on a Red Hat based host that doesn't have the classic # package repos available. # Set ONEDIR_REV to STABLE_REV in case we # end up calling install_centos_onedir_deps ONEDIR_REV=${STABLE_REV} - install_centos_onedir_deps || \ - return 1 + install_centos_onedir_deps || return 1 if [ "$_INSECURE_DL" -eq $BS_FALSE ] && [ "${_SALT_REPO_URL%%://*}" = "https" ]; then __yum_install_noinput ca-certificates || return 1 @@ -4912,111 +4301,23 @@ install_centos_git_deps() { __PACKAGES="" if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq 3 ]; then - if [ "$DISTRO_MAJOR_VERSION" -ge 8 ]; then - # Packages are named python3- - PY_PKG_VER=3 - __PACKAGES="${__PACKAGES} python3" - else - # Packages are named python36- - PY_PKG_VER=36 - __PACKAGES="${__PACKAGES} python36" - fi + # Packages are named python3- + PY_PKG_VER=3 + __PACKAGES="${__PACKAGES} python3" else - PY_PKG_VER="" - if [ "$DISTRO_MAJOR_VERSION" -ge 8 ]; then - __PACKAGES="${__PACKAGES} python2" - elif [ "$DISTRO_MAJOR_VERSION" -eq 6 ]; then - PY_PKG_VER=27 - __PACKAGES="${__PACKAGES} python27" - else - __PACKAGES="${__PACKAGES} python" - fi + echoerror "Python 2 is no longer supported, only Python 3" + return 1 fi - if [ "${_POST_NEON_INSTALL}" -eq $BS_FALSE ]; then - _install_m2crypto_req=false - if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq 3 ]; then - _py=${_PY_EXE} - if [ "$DISTRO_MAJOR_VERSION" -gt 6 ]; then - _install_m2crypto_req=true - fi - else - if [ "$DISTRO_MAJOR_VERSION" -eq 6 ]; then - _install_m2crypto_req=true - fi - _py="python" + __PACKAGES="${__PACKAGES} python${PY_PKG_VER}-devel python${PY_PKG_VER}-pip python${PY_PKG_VER}-setuptools gcc" - # Only Py2 needs python-futures - __PACKAGES="${__PACKAGES} python-futures" + # shellcheck disable=SC2086 + __yum_install_noinput ${__PACKAGES} || return 1 - # There is no systemd-python3 package as of this writing - if [ "$DISTRO_MAJOR_VERSION" -ge 7 ]; then - __PACKAGES="${__PACKAGES} systemd-python" - fi - fi - - if [ "$DISTRO_MAJOR_VERSION" -ge 8 ]; then - __install_tornado_pip ${_py} || return 1 - __PACKAGES="${__PACKAGES} python3-m2crypto" - else - __PACKAGES="${__PACKAGES} m2crypto python${PY_PKG_VER}-crypto" - fi - - __PACKAGES="${__PACKAGES} python${PY_PKG_VER}-jinja2" - __PACKAGES="${__PACKAGES} python${PY_PKG_VER}-msgpack python${PY_PKG_VER}-requests" - __PACKAGES="${__PACKAGES} python${PY_PKG_VER}-tornado python${PY_PKG_VER}-zmq" - - if [ "$_INSTALL_CLOUD" -eq $BS_TRUE ]; then - __PACKAGES="${__PACKAGES} python${PY_PKG_VER}-libcloud" - fi - - if [ "${_INSTALL_PY}" -eq "${BS_TRUE}" ]; then - # Install Python if "-y" was passed in. - __install_python || return 1 - fi - - if [ "${_PY_EXE}" != "" ] && [ "$_PIP_ALLOWED" -eq "$BS_TRUE" ]; then - # If "-x" is defined, install dependencies with pip based on the Python version given. - _PIP_PACKAGES="m2crypto!=0.33.0 jinja2 msgpack-python pycrypto PyYAML tornado<5.0 zmq futures>=2.0" - - # install swig and openssl on cent6 - if $_install_m2crypto_req; then - __yum_install_noinput openssl-devel swig || return 1 - fi - - if [ -f "${_SALT_GIT_CHECKOUT_DIR}/requirements/base.txt" ]; then - # Filter out any commented lines from the requirements file - _REQ_LINES="$(grep '^[^#]' "${_SALT_GIT_CHECKOUT_DIR}/requirements/base.txt")" - for SINGLE_PACKAGE in ${_PIP_PACKAGES}; do - __REQUIRED_VERSION="$(grep "${SINGLE_PACKAGE}" "${_REQ_LINES}")" - if [ "${__REQUIRED_VERSION}" != "" ]; then - _PIP_PACKAGES=$(echo "$_PIP_PACKAGES" | sed "s/${SINGLE_PACKAGE}/${__REQUIRED_VERSION}/") - fi - done - fi - - if [ "$_INSTALL_CLOUD" -eq "${BS_TRUE}" ]; then - _PIP_PACKAGES="${_PIP_PACKAGES} apache-libcloud" - fi - - __install_pip_pkgs "${_PIP_PACKAGES}" "${_PY_EXE}" || return 1 - else - # shellcheck disable=SC2086 - __yum_install_noinput ${__PACKAGES} || return 1 - fi - else - if [ "${_INSTALL_PY}" -eq "${BS_TRUE}" ] && [ "$DISTRO_MAJOR_VERSION" -lt 8 ]; then - # Install Python if "-y" was passed in. - __install_python || return 1 - fi - __PACKAGES="${__PACKAGES} python${PY_PKG_VER}-devel python${PY_PKG_VER}-pip python${PY_PKG_VER}-setuptools gcc" - # shellcheck disable=SC2086 - __yum_install_noinput ${__PACKAGES} || return 1 - fi # Let's trigger config_salt() if [ "$_TEMP_CONFIG_DIR" = "null" ]; then - _TEMP_CONFIG_DIR="${_SALT_GIT_CHECKOUT_DIR}/conf/" + _TEMP_CONFIG_DIR="${_SALT_GIT_CHECKOUT_DIR}/conf" CONFIG_SALT_FUNC="config_salt" fi @@ -5024,29 +4325,23 @@ install_centos_git_deps() { } install_centos_git() { + if [ "${_PY_EXE}" != "" ]; then _PYEXE=${_PY_EXE} echoinfo "Using the following python version: ${_PY_EXE} to install salt" else - _PYEXE='python2' + echoerror "Python 2 is no longer supported, only Python 3" + return 1 fi echodebug "_PY_EXE: $_PY_EXE" - if [ "${_POST_NEON_INSTALL}" -eq $BS_TRUE ]; then - __install_salt_from_repo_post_neon "${_PY_EXE}" || return 1 - return 0 - fi - - if [ -f "${_SALT_GIT_CHECKOUT_DIR}/salt/syspaths.py" ]; then - $_PYEXE setup.py --salt-config-dir="$_SALT_ETC_DIR" --salt-cache-dir="${_SALT_CACHE_DIR}" ${SETUP_PY_INSTALL_ARGS} install --prefix=/usr || return 1 - else - $_PYEXE setup.py ${SETUP_PY_INSTALL_ARGS} install --prefix=/usr || return 1 - fi + __install_salt_from_repo "${_PY_EXE}" || return 1 return 0 } install_centos_git_post() { + SYSTEMD_RELOAD=$BS_FALSE for fname in api master minion syndic; do @@ -5063,7 +4358,8 @@ install_centos_git_post() { else _SERVICE_FILE="${_SALT_GIT_CHECKOUT_DIR}/pkg/rpm/salt-${fname}.service" fi - if [ -f /bin/systemctl ]; then + + if [ "$_SYSTEMD_FUNCTIONAL" -eq $BS_TRUE ]; then if [ ! -f "/usr/lib/systemd/system/salt-${fname}.service" ] || \ { [ -f "/usr/lib/systemd/system/salt-${fname}.service" ] && [ "$_FORCE_OVERWRITE" -eq $BS_TRUE ]; }; then __copyfile "${_SERVICE_FILE}" /usr/lib/systemd/system @@ -5087,7 +4383,8 @@ install_centos_git_post() { } install_centos_onedir_deps() { - if [ "$_UPGRADE_SYS" -eq $BS_TRUE ]; then + + if [ "$_UPGRADE_SYS" -eq "$BS_TRUE" ]; then yum -y update || return 1 fi @@ -5102,19 +4399,13 @@ install_centos_onedir_deps() { fi # If -R was passed, we need to configure custom repo url with rsync-ed packages - # Which is still handled in __install_saltstack_rhel_repository. This call has - # its own check in case -r was passed without -R. + # Which was still handled in __install_saltstack_rhel_repository, which was for old-stable which + # is removed since End-Of-Life. This call has its own check in case -r was passed without -R. if [ "$_CUSTOM_REPO_URL" != "null" ]; then __install_saltstack_rhel_onedir_repository || return 1 fi - if [ "$DISTRO_MAJOR_VERSION" -ge 8 ]; then - __PACKAGES="dnf-utils chkconfig" - else - __PACKAGES="yum-utils chkconfig" - fi - - __PACKAGES="${__PACKAGES} procps" + __PACKAGES="yum-utils chkconfig procps-ng findutils" # shellcheck disable=SC2086 __yum_install_noinput ${__PACKAGES} || return 1 @@ -5125,39 +4416,28 @@ install_centos_onedir_deps() { __yum_install_noinput ${_EXTRA_PACKAGES} || return 1 fi - return 0 } -# This function has been modified to allow for specific versions to be installed -# when not using the salt repo install_centos_onedir() { + __PACKAGES="" - local cloud='salt-cloud' - local master='salt-master' - local minion='salt-minion' - local syndic='salt-syndic' - local ver="$_ONEDIR_REV" - - if [ ! -z $ver ]; then - cloud+="-$ver" - master+="-$ver" - minion+="-$ver" - syndic+="-$ver" - fi - if [ "$_INSTALL_CLOUD" -eq $BS_TRUE ];then - __PACKAGES="${__PACKAGES} $cloud" + __PACKAGES="${__PACKAGES} salt-cloud" fi if [ "$_INSTALL_MASTER" -eq $BS_TRUE ];then - __PACKAGES="${__PACKAGES} $master" + __PACKAGES="${__PACKAGES} salt-master" fi if [ "$_INSTALL_MINION" -eq $BS_TRUE ]; then - __PACKAGES="${__PACKAGES} $minion" + __PACKAGES="${__PACKAGES} salt-minion" fi if [ "$_INSTALL_SYNDIC" -eq $BS_TRUE ];then - __PACKAGES="${__PACKAGES} $syndic" + __PACKAGES="${__PACKAGES} salt-syndic" + fi + + if [ "$_INSTALL_SALT_API" -eq $BS_TRUE ]; then + __PACKAGES="${__PACKAGES} salt-api" fi # shellcheck disable=SC2086 @@ -5167,6 +4447,7 @@ install_centos_onedir() { } install_centos_onedir_post() { + SYSTEMD_RELOAD=$BS_FALSE for fname in api master minion syndic; do @@ -5178,7 +4459,7 @@ install_centos_onedir_post() { [ $fname = "minion" ] && [ "$_INSTALL_MINION" -eq $BS_FALSE ] && continue [ $fname = "syndic" ] && [ "$_INSTALL_SYNDIC" -eq $BS_FALSE ] && continue - if [ -f /bin/systemctl ]; then + if [ "$_SYSTEMD_FUNCTIONAL" -eq $BS_TRUE ]; then /bin/systemctl is-enabled salt-${fname}.service > /dev/null 2>&1 || ( /bin/systemctl preset salt-${fname}.service > /dev/null 2>&1 && /bin/systemctl enable salt-${fname}.service > /dev/null 2>&1 @@ -5198,7 +4479,8 @@ install_centos_onedir_post() { } install_centos_restart_daemons() { - [ $_START_DAEMONS -eq $BS_FALSE ] && return + + [ "$_START_DAEMONS" -eq $BS_FALSE ] && return for fname in api master minion syndic; do # Skip salt-api since the service should be opt-in and not necessarily started on boot @@ -5209,26 +4491,11 @@ install_centos_restart_daemons() { [ $fname = "minion" ] && [ "$_INSTALL_MINION" -eq $BS_FALSE ] && continue [ $fname = "syndic" ] && [ "$_INSTALL_SYNDIC" -eq $BS_FALSE ] && continue - if [ -f /sbin/initctl ] && [ -f /etc/init/salt-${fname}.conf ]; then - # We have upstart support and upstart knows about our service - if ! /sbin/initctl status salt-$fname > /dev/null 2>&1; then - # Everything is in place and upstart gave us an error code? Fail! - return 1 - fi - - # upstart knows about this service. - # Let's try to stop it, and then start it - /sbin/initctl stop salt-$fname > /dev/null 2>&1 - # Restart service - if ! /sbin/initctl start salt-$fname > /dev/null 2>&1; then - # Failed the restart?! - return 1 - fi - elif [ -f /etc/init.d/salt-$fname ]; then + if [ -f /etc/init.d/salt-$fname ]; then # Disable stdin to fix shell session hang on killing tee pipe service salt-$fname stop < /dev/null > /dev/null 2>&1 service salt-$fname start < /dev/null - elif [ -f /usr/bin/systemctl ]; then + elif [ "$_SYSTEMD_FUNCTIONAL" -eq $BS_TRUE ]; then # CentOS 7 uses systemd /usr/bin/systemctl stop salt-$fname > /dev/null 2>&1 /usr/bin/systemctl start salt-$fname.service && continue @@ -5242,21 +4509,25 @@ install_centos_restart_daemons() { } install_centos_testing_deps() { + install_centos_stable_deps || return 1 return 0 } install_centos_testing() { + install_centos_stable || return 1 return 0 } install_centos_testing_post() { + install_centos_stable_post || return 1 return 0 } install_centos_check_services() { + for fname in api master minion syndic; do # Skip salt-api since the service should be opt-in and not necessarily started on boot [ $fname = "api" ] && continue @@ -5266,12 +4537,10 @@ install_centos_check_services() { [ $fname = "master" ] && [ "$_INSTALL_MASTER" -eq $BS_FALSE ] && continue [ $fname = "syndic" ] && [ "$_INSTALL_SYNDIC" -eq $BS_FALSE ] && continue - if [ -f /sbin/initctl ] && [ -f /etc/init/salt-${fname}.conf ]; then - __check_services_upstart salt-$fname || return 1 - elif [ -f /etc/init.d/salt-$fname ]; then - __check_services_sysvinit salt-$fname || return 1 - elif [ -f /usr/bin/systemctl ]; then - __check_services_systemd salt-$fname || return 1 + if [ -f "/etc/init.d/salt-$fname" ]; then + __check_services_sysvinit "salt-$fname" || return 1 + elif [ "$_SYSTEMD_FUNCTIONAL" -eq $BS_TRUE ]; then + __check_services_systemd "salt-$fname" || return 1 fi done @@ -5287,286 +4556,343 @@ install_centos_check_services() { # RedHat Install Functions # install_red_hat_linux_stable_deps() { + install_centos_stable_deps || return 1 return 0 } install_red_hat_linux_git_deps() { + install_centos_git_deps || return 1 return 0 } install_red_hat_linux_onedir_deps() { + install_centos_onedir_deps || return 1 return 0 } install_red_hat_enterprise_stable_deps() { + install_red_hat_linux_stable_deps || return 1 return 0 } install_red_hat_enterprise_git_deps() { + install_red_hat_linux_git_deps || return 1 return 0 } install_red_hat_enterprise_onedir_deps() { + install_red_hat_linux_onedir_deps || return 1 return 0 } install_red_hat_enterprise_linux_stable_deps() { + install_red_hat_linux_stable_deps || return 1 return 0 } install_red_hat_enterprise_linux_git_deps() { + install_red_hat_linux_git_deps || return 1 return 0 } install_red_hat_enterprise_linux_onedir_deps() { + install_red_hat_linux_onedir_deps || return 1 return 0 } install_red_hat_enterprise_server_stable_deps() { + install_red_hat_linux_stable_deps || return 1 return 0 } install_red_hat_enterprise_server_git_deps() { + install_red_hat_linux_git_deps || return 1 return 0 } install_red_hat_enterprise_server_onedir_deps() { + install_red_hat_linux_onedir_deps || return 1 return 0 } install_red_hat_enterprise_workstation_stable_deps() { + install_red_hat_linux_stable_deps || return 1 return 0 } install_red_hat_enterprise_workstation_git_deps() { + install_red_hat_linux_git_deps || return 1 return 0 } install_red_hat_enterprise_workstation_onedir_deps() { + install_red_hat_linux_timat_deps || return 1 return 0 } install_red_hat_linux_stable() { + install_centos_stable || return 1 return 0 } install_red_hat_linux_git() { + install_centos_git || return 1 return 0 } install_red_hat_linux_onedir() { + install_centos_onedir || return 1 return 0 } install_red_hat_enterprise_stable() { + install_red_hat_linux_stable || return 1 return 0 } install_red_hat_enterprise_git() { + install_red_hat_linux_git || return 1 return 0 } install_red_hat_enterprise_onedir() { + install_red_hat_linux_onedir || return 1 return 0 } install_red_hat_enterprise_linux_stable() { + install_red_hat_linux_stable || return 1 return 0 } install_red_hat_enterprise_linux_git() { + install_red_hat_linux_git || return 1 return 0 } install_red_hat_enterprise_linux_onedir() { + install_red_hat_linux_onedir || return 1 return 0 } install_red_hat_enterprise_server_stable() { + install_red_hat_linux_stable || return 1 return 0 } install_red_hat_enterprise_server_git() { + install_red_hat_linux_git || return 1 return 0 } install_red_hat_enterprise_server_onedir() { + install_red_hat_linux_onedir || return 1 return 0 } install_red_hat_enterprise_workstation_stable() { + install_red_hat_linux_stable || return 1 return 0 } install_red_hat_enterprise_workstation_git() { + install_red_hat_linux_git || return 1 return 0 } install_red_hat_enterprise_workstation_onedir() { + install_red_hat_linux_onedir || return 1 return 0 } install_red_hat_linux_stable_post() { + install_centos_stable_post || return 1 return 0 } install_red_hat_linux_restart_daemons() { + install_centos_restart_daemons || return 1 return 0 } install_red_hat_linux_git_post() { + install_centos_git_post || return 1 return 0 } install_red_hat_enterprise_stable_post() { + install_red_hat_linux_stable_post || return 1 return 0 } install_red_hat_enterprise_restart_daemons() { + install_red_hat_linux_restart_daemons || return 1 return 0 } install_red_hat_enterprise_git_post() { + install_red_hat_linux_git_post || return 1 return 0 } install_red_hat_enterprise_linux_stable_post() { + install_red_hat_linux_stable_post || return 1 return 0 } install_red_hat_enterprise_linux_restart_daemons() { + install_red_hat_linux_restart_daemons || return 1 return 0 } install_red_hat_enterprise_linux_git_post() { + install_red_hat_linux_git_post || return 1 return 0 } install_red_hat_enterprise_server_stable_post() { + install_red_hat_linux_stable_post || return 1 return 0 } install_red_hat_enterprise_server_restart_daemons() { + install_red_hat_linux_restart_daemons || return 1 return 0 } install_red_hat_enterprise_server_git_post() { + install_red_hat_linux_git_post || return 1 return 0 } install_red_hat_enterprise_workstation_stable_post() { + install_red_hat_linux_stable_post || return 1 return 0 } install_red_hat_enterprise_workstation_restart_daemons() { + install_red_hat_linux_restart_daemons || return 1 return 0 } install_red_hat_enterprise_workstation_git_post() { + install_red_hat_linux_git_post || return 1 return 0 } install_red_hat_linux_testing_deps() { + install_centos_testing_deps || return 1 return 0 } install_red_hat_linux_testing() { + install_centos_testing || return 1 return 0 } install_red_hat_linux_testing_post() { + install_centos_testing_post || return 1 return 0 } install_red_hat_enterprise_testing_deps() { + install_centos_testing_deps || return 1 return 0 } install_red_hat_enterprise_testing() { + install_centos_testing || return 1 return 0 } install_red_hat_enterprise_testing_post() { + install_centos_testing_post || return 1 return 0 } install_red_hat_enterprise_server_testing_deps() { + install_centos_testing_deps || return 1 return 0 } install_red_hat_enterprise_server_testing() { + install_centos_testing || return 1 return 0 } install_red_hat_enterprise_server_testing_post() { + install_centos_testing_post || return 1 return 0 } install_red_hat_enterprise_workstation_testing_deps() { + install_centos_testing_deps || return 1 return 0 } install_red_hat_enterprise_workstation_testing() { + install_centos_testing || return 1 return 0 } install_red_hat_enterprise_workstation_testing_post() { + install_centos_testing_post || return 1 return 0 } @@ -5580,11 +4906,13 @@ install_red_hat_enterprise_workstation_testing_post() { # Oracle Linux Install Functions # install_oracle_linux_stable_deps() { + # Install Oracle's EPEL. - if [ ${_EPEL_REPOS_INSTALLED} -eq $BS_FALSE ]; then + if [ "${_EPEL_REPOS_INSTALLED}" -eq $BS_FALSE ]; then _EPEL_REPO=oracle-epel-release-el${DISTRO_MAJOR_VERSION} if ! rpm -q "${_EPEL_REPO}" > /dev/null; then - __yum_install_noinput "${_EPEL_REPO}" + # shellcheck disable=SC2086 + __yum_install_noinput ${_EPEL_REPO} fi _EPEL_REPOS_INSTALLED=$BS_TRUE fi @@ -5969,6 +5297,7 @@ install_cloud_linux_check_services() { # Alpine Linux Install Functions # install_alpine_linux_stable_deps() { + _PIP_INSTALL_ARGS="" if ! grep -q '^[^#].\+alpine/.\+/community' /etc/apk/repositories; then # Add community repository entry based on the "main" repo URL __REPO=$(grep '^[^#].\+alpine/.\+/main\>' /etc/apk/repositories) @@ -5987,6 +5316,7 @@ install_alpine_linux_stable_deps() { } install_alpine_linux_git_deps() { + _PIP_INSTALL_ARGS="" install_alpine_linux_stable_deps || return 1 if ! __check_command_exists git; then @@ -5995,33 +5325,14 @@ install_alpine_linux_git_deps() { __git_clone_and_checkout || return 1 - if [ "${_POST_NEON_INSTALL}" -eq $BS_FALSE ]; then - apk -U add python2 py-virtualenv py2-crypto py2-m2crypto py2-setuptools \ - py2-jinja2 py2-yaml py2-markupsafe py2-msgpack py2-psutil \ - py2-zmq zeromq py2-requests || return 1 - - if [ -f "${_SALT_GIT_CHECKOUT_DIR}/requirements/base.txt" ]; then - # We're on the master branch, install whichever tornado is on the requirements file - __REQUIRED_TORNADO="$(grep tornado "${_SALT_GIT_CHECKOUT_DIR}/requirements/base.txt")" - if [ "${__REQUIRED_TORNADO}" != "" ]; then - apk -U add py2-tornado || return 1 - fi - fi - else - apk -U add python3 python3-dev py3-pip py3-setuptools g++ linux-headers zeromq-dev openrc || return 1 - _PY_EXE=python3 - return 0 - fi - - # Let's trigger config_salt() - if [ "$_TEMP_CONFIG_DIR" = "null" ]; then - _TEMP_CONFIG_DIR="${_SALT_GIT_CHECKOUT_DIR}/conf/" - CONFIG_SALT_FUNC="config_salt" - fi + apk -U add python3 python3-dev py3-pip py3-setuptools g++ linux-headers zeromq-dev openrc || return 1 + _PY_EXE=python3 + return 0 } install_alpine_linux_stable() { __PACKAGES="salt" + _PIP_INSTALL_ARGS="" if [ "$_INSTALL_CLOUD" -eq $BS_TRUE ];then __PACKAGES="${__PACKAGES} salt-cloud" @@ -6036,26 +5347,23 @@ install_alpine_linux_stable() { __PACKAGES="${__PACKAGES} salt-syndic" fi + if [ "$_INSTALL_SALT_API" -eq $BS_TRUE ]; then + __PACKAGES="${__PACKAGES} salt-api" + fi + # shellcheck disable=SC2086 - apk -U add ${__PACKAGES} || return 1 + apk -U add "${__PACKAGES}" || return 1 return 0 } install_alpine_linux_git() { - - if [ "${_POST_NEON_INSTALL}" -eq $BS_TRUE ]; then - __install_salt_from_repo_post_neon "${_PY_EXE}" || return 1 - return 0 - fi - - if [ -f "${_SALT_GIT_CHECKOUT_DIR}/salt/syspaths.py" ]; then - python2 setup.py --salt-config-dir="$_SALT_ETC_DIR" --salt-cache-dir="${_SALT_CACHE_DIR}" ${SETUP_PY_INSTALL_ARGS} install || return 1 - else - python2 setup.py ${SETUP_PY_INSTALL_ARGS} install || return 1 - fi + _PIP_INSTALL_ARGS="" + __install_salt_from_repo "${_PY_EXE}" || return 1 + return 0 } install_alpine_linux_post() { + _PIP_INSTALL_ARGS="" for fname in api master minion syndic; do # Skip if not meant to be installed [ $fname = "api" ] && \ @@ -6085,6 +5393,7 @@ install_alpine_linux_post() { } install_alpine_linux_restart_daemons() { + _PIP_INSTALL_ARGS="" [ "${_START_DAEMONS}" -eq $BS_FALSE ] && return for fname in api master minion syndic; do @@ -6103,6 +5412,7 @@ install_alpine_linux_restart_daemons() { } install_alpine_linux_check_services() { + _PIP_INSTALL_ARGS="" for fname in api master minion syndic; do # Skip salt-api since the service should be opt-in and not necessarily started on boot [ $fname = "api" ] && continue @@ -6119,6 +5429,7 @@ install_alpine_linux_check_services() { } daemons_running_alpine_linux() { + _PIP_INSTALL_ARGS="" [ "${_START_DAEMONS}" -eq $BS_FALSE ] && return FAILED_DAEMONS=0 @@ -6152,167 +5463,21 @@ daemons_running_alpine_linux() { # Amazon Linux AMI Install Functions # -install_amazon_linux_ami_deps() { - # Shim to figure out if we're using old (rhel) or new (aws) rpms. - _USEAWS=$BS_FALSE - pkg_append="python" - - if [ "$ITYPE" = "stable" ]; then - repo_rev="$STABLE_REV" - else - repo_rev="latest" - fi - - if echo $repo_rev | grep -E -q '^archive'; then - year=$(echo "$repo_rev" | cut -d '/' -f 2 | cut -c1-4) - else - year=$(echo "$repo_rev" | cut -c1-4) - fi - - if echo "$repo_rev" | grep -E -q '^(latest|2016\.11)$' || \ - [ "$year" -gt 2016 ]; then - _USEAWS=$BS_TRUE - pkg_append="python27" - fi - - # We need to install yum-utils before doing anything else when installing on - # Amazon Linux ECS-optimized images. See issue #974. - __yum_install_noinput yum-utils - - # Do upgrade early - if [ "$_UPGRADE_SYS" -eq $BS_TRUE ]; then - yum -y update || return 1 - fi - - if [ $_DISABLE_REPOS -eq $BS_FALSE ] || [ "$_CUSTOM_REPO_URL" != "null" ]; then - __REPO_FILENAME="salt.repo" - - # Set a few vars to make life easier. - if [ $_USEAWS -eq $BS_TRUE ]; then - base_url="$HTTP_VAL://${_REPO_URL}/yum/amazon/latest/\$basearch/$repo_rev/" - gpg_key="${base_url}SALTSTACK-GPG-KEY.pub" - repo_name="SaltStack repo for Amazon Linux" - else - base_url="$HTTP_VAL://${_REPO_URL}/yum/redhat/6/\$basearch/$repo_rev/" - gpg_key="${base_url}SALTSTACK-GPG-KEY.pub" - repo_name="SaltStack repo for RHEL/CentOS 6" - fi - - # This should prob be refactored to use __install_saltstack_rhel_repository() - # With args passed in to do the right thing. Reformatted to be more like the - # amazon linux yum file. - if [ ! -s "/etc/yum.repos.d/${__REPO_FILENAME}" ]; then - cat <<_eof > "/etc/yum.repos.d/${__REPO_FILENAME}" -[saltstack-repo] -name=$repo_name -failovermethod=priority -priority=10 -gpgcheck=1 -gpgkey=$gpg_key -baseurl=$base_url -_eof - fi - - fi - - if [ "${_POST_NEON_INSTALL}" -eq $BS_FALSE ]; then - # Package python-ordereddict-1.1-2.el6.noarch is obsoleted by python26-2.6.9-2.88.amzn1.x86_64 - # which is already installed - __PACKAGES="m2crypto ${pkg_append}-crypto ${pkg_append}-jinja2 ${pkg_append}-PyYAML" - __PACKAGES="${__PACKAGES} ${pkg_append}-msgpack ${pkg_append}-requests ${pkg_append}-zmq" - __PACKAGES="${__PACKAGES} ${pkg_append}-futures" - # shellcheck disable=SC2086 - __yum_install_noinput ${__PACKAGES} || return 1 - fi - - if [ "${_EXTRA_PACKAGES}" != "" ]; then - echoinfo "Installing the following extra packages as requested: ${_EXTRA_PACKAGES}" - # shellcheck disable=SC2086 - __yum_install_noinput ${_EXTRA_PACKAGES} || return 1 - fi -} - -install_amazon_linux_ami_git_deps() { - if [ "$_INSECURE_DL" -eq $BS_FALSE ] && [ "${_SALT_REPO_URL%%://*}" = "https" ]; then - yum -y install ca-certificates || return 1 - fi - - PIP_EXE='pip' - if __check_command_exists python2.7; then - if ! __check_command_exists pip2.7; then - if ! __check_command_exists easy_install-2.7; then - __yum_install_noinput python27-setuptools - fi - /usr/bin/easy_install-2.7 pip || return 1 - fi - PIP_EXE='/usr/local/bin/pip2.7' - _PY_EXE='python2.7' - fi - - install_amazon_linux_ami_deps || return 1 - - if ! __check_command_exists git; then - __yum_install_noinput git || return 1 - fi - - __git_clone_and_checkout || return 1 - - if [ "${_POST_NEON_INSTALL}" -eq $BS_FALSE ]; then - __PACKAGES="" - __PIP_PACKAGES="" - - if [ "$_INSTALL_CLOUD" -eq $BS_TRUE ]; then - __check_pip_allowed "You need to allow pip based installations (-P) in order to install apache-libcloud" - __PACKAGES="${__PACKAGES} python27-pip" - __PIP_PACKAGES="${__PIP_PACKAGES} apache-libcloud>=$_LIBCLOUD_MIN_VERSION" - fi - - if [ -f "${_SALT_GIT_CHECKOUT_DIR}/requirements/base.txt" ]; then - # We're on the master branch, install whichever tornado is on the requirements file - __REQUIRED_TORNADO="$(grep tornado "${_SALT_GIT_CHECKOUT_DIR}/requirements/base.txt")" - if [ "${__REQUIRED_TORNADO}" != "" ]; then - __PACKAGES="${__PACKAGES} ${pkg_append}-tornado" - fi - fi - - if [ "${__PACKAGES}" != "" ]; then - # shellcheck disable=SC2086 - __yum_install_noinput ${__PACKAGES} || return 1 - fi - - if [ "${__PIP_PACKAGES}" != "" ]; then - # shellcheck disable=SC2086 - ${PIP_EXE} install ${__PIP_PACKAGES} || return 1 - fi - else - __PACKAGES="python27-pip python27-setuptools python27-devel gcc" - # shellcheck disable=SC2086 - __yum_install_noinput ${__PACKAGES} || return 1 - fi - - # Let's trigger config_salt() - if [ "$_TEMP_CONFIG_DIR" = "null" ]; then - _TEMP_CONFIG_DIR="${_SALT_GIT_CHECKOUT_DIR}/conf/" - CONFIG_SALT_FUNC="config_salt" - fi - - return 0 -} - +# Support for Amazon Linux 2 install_amazon_linux_ami_2_git_deps() { if [ "$_INSECURE_DL" -eq $BS_FALSE ] && [ "${_SALT_REPO_URL%%://*}" = "https" ]; then yum -y install ca-certificates || return 1 fi + if [ "$_PY_MAJOR_VERSION" -eq 2 ]; then + echoerror "Python 2 is no longer supported, only Python 3" + return 1 + fi + install_amazon_linux_ami_2_deps || return 1 - if [ "$_PY_MAJOR_VERSION" -eq 2 ]; then - PY_PKG_VER=2 - PIP_EXE='/bin/pip' - else - PY_PKG_VER=3 - PIP_EXE='/bin/pip3' - fi + PY_PKG_VER=3 + PIP_EXE='/bin/pip3' __PACKAGES="python${PY_PKG_VER}-pip" if ! __check_command_exists "${PIP_EXE}"; then @@ -6326,61 +5491,14 @@ install_amazon_linux_ami_2_git_deps() { __git_clone_and_checkout || return 1 - if [ "${_POST_NEON_INSTALL}" -eq $BS_FALSE ]; then + __PACKAGES="python${PY_PKG_VER}-pip python${PY_PKG_VER}-setuptools python${PY_PKG_VER}-devel gcc" - __PACKAGES="" - __PIP_PACKAGES="" - - if [ "$_INSTALL_CLOUD" -eq "$BS_TRUE" ]; then - __check_pip_allowed "You need to allow pip based installations (-P) in order to install apache-libcloud" - if [ "$PARSED_VERSION" -eq "2" ]; then - if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq "3" ]; then - __PACKAGES="${__PACKAGES} python3-pip" - __PIP_PACKAGES="${__PIP_PACKAGES} tornado<$_TORNADO_MAX_PY3_VERSION" - else - __PACKAGES="${__PACKAGES} python2-pip" - fi - else - __PACKAGES="${__PACKAGES} python27-pip" - fi - __PIP_PACKAGES="${__PIP_PACKAGES} apache-libcloud>=$_LIBCLOUD_MIN_VERSION" - fi - - if [ -f "${_SALT_GIT_CHECKOUT_DIR}/requirements/base.txt" ]; then - # We're on the master branch, install whichever tornado is on the requirements file - __REQUIRED_TORNADO="$(grep tornado "${_SALT_GIT_CHECKOUT_DIR}/requirements/base.txt")" - if [ "${__REQUIRED_TORNADO}" != "" ]; then - if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq "3" ]; then - __PIP_PACKAGES="${__PIP_PACKAGES} tornado<$_TORNADO_MAX_PY3_VERSION" - else - __PACKAGES="${__PACKAGES} ${pkg_append}${PY_PKG_VER}-tornado" - fi - fi - fi - - if [ "${__PIP_PACKAGES}" != "" ]; then - __check_pip_allowed "You need to allow pip based installations (-P) in order to install ${__PIP_PACKAGES}" - __PACKAGES="${__PACKAGES} python${PY_PKG_VER}-pip" - fi - - if [ "${__PACKAGES}" != "" ]; then - # shellcheck disable=SC2086 - __yum_install_noinput ${__PACKAGES} || return 1 - fi - - if [ "${__PIP_PACKAGES}" != "" ]; then - # shellcheck disable=SC2086 - ${PIP_EXE} install ${__PIP_PACKAGES} || return 1 - fi - else - __PACKAGES="python${PY_PKG_VER}-pip python${PY_PKG_VER}-setuptools python${PY_PKG_VER}-devel gcc" - # shellcheck disable=SC2086 - __yum_install_noinput ${__PACKAGES} || return 1 - fi + # shellcheck disable=SC2086 + __yum_install_noinput ${__PACKAGES} || return 1 # Let's trigger config_salt() if [ "$_TEMP_CONFIG_DIR" = "null" ]; then - _TEMP_CONFIG_DIR="${_SALT_GIT_CHECKOUT_DIR}/conf/" + _TEMP_CONFIG_DIR="${_SALT_GIT_CHECKOUT_DIR}/conf" CONFIG_SALT_FUNC="config_salt" fi @@ -6388,26 +5506,9 @@ install_amazon_linux_ami_2_git_deps() { } install_amazon_linux_ami_2_deps() { - # Shim to figure out if we're using old (rhel) or new (aws) rpms. - _USEAWS=$BS_FALSE - pkg_append="python" - - if [ "$ITYPE" = "stable" ]; then - repo_rev="$STABLE_REV" - else - repo_rev="latest" - fi - - if echo $repo_rev | grep -E -q '^archive'; then - year=$(echo "$repo_rev" | cut -d '/' -f 2 | cut -c1-4) - else - year=$(echo "$repo_rev" | cut -c1-4) - fi - - if echo "$repo_rev" | grep -E -q '^(latest|2016\.11)$' || \ - [ "$year" -gt 2016 ]; then - _USEAWS=$BS_TRUE - pkg_append="python" + if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -ne 3 ]; then + echoerror "Python version is no longer supported, only Python 3" + return 1 fi # We need to install yum-utils before doing anything else when installing on @@ -6420,56 +5521,24 @@ install_amazon_linux_ami_2_deps() { fi if [ $_DISABLE_REPOS -eq $BS_FALSE ] || [ "$_CUSTOM_REPO_URL" != "null" ]; then - __REPO_FILENAME="salt.repo" - __PY_VERSION_REPO="yum" - PY_PKG_VER="" - repo_label="saltstack-repo" - repo_name="SaltStack repo for Amazon Linux 2" - if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq 3 ]; then - __REPO_FILENAME="salt.repo" - __PY_VERSION_REPO="py3" - PY_PKG_VER=3 - repo_label="saltstack-py3-repo" - repo_name="SaltStack Python 3 repo for Amazon Linux 2" + if [ ! -s "${YUM_REPO_FILE}" ]; then + FETCH_URL="https://github.com/saltstack/salt-install-guide/releases/latest/download/salt.repo" + __fetch_url "${YUM_REPO_FILE}" "${FETCH_URL}" + if [ "$STABLE_REV" != "latest" ]; then + # 3006.x is default + REPO_REV_MAJOR=$(echo "$STABLE_REV" | cut -d '.' -f 1) + if [ "$REPO_REV_MAJOR" -eq "3007" ]; then + # Enable the Salt 3007 STS repo + dnf config-manager --set-disable salt-repo-* + dnf config-manager --set-enabled salt-repo-3007-sts + fi + else + # Enable the Salt LATEST repo + dnf config-manager --set-disable salt-repo-* + dnf config-manager --set-enabled salt-repo-latest + fi + dnf clean expire-cache || return 1 fi - - base_url="$HTTP_VAL://${_REPO_URL}/${__PY_VERSION_REPO}/amazon/2/\$basearch/$repo_rev/" - gpg_key="${base_url}SALTSTACK-GPG-KEY.pub,${base_url}base/RPM-GPG-KEY-CentOS-7" - if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq 3 ]; then - gpg_key="${base_url}SALTSTACK-GPG-KEY.pub" - fi - - # This should prob be refactored to use __install_saltstack_rhel_repository() - # With args passed in to do the right thing. Reformatted to be more like the - # amazon linux yum file. - if [ ! -s "/etc/yum.repos.d/${__REPO_FILENAME}" ]; then - cat <<_eof > "/etc/yum.repos.d/${__REPO_FILENAME}" -[$repo_label] -name=$repo_name -failovermethod=priority -priority=10 -gpgcheck=1 -gpgkey=$gpg_key -baseurl=$base_url -_eof - fi - - fi - - if [ "${_POST_NEON_INSTALL}" -eq $BS_FALSE ]; then - # Package python-ordereddict-1.1-2.el6.noarch is obsoleted by python26-2.6.9-2.88.amzn1.x86_64 - # which is already installed - if [ -n "${PY_PKG_VER}" ] && [ "${PY_PKG_VER}" -eq 3 ]; then - __PACKAGES="${pkg_append}${PY_PKG_VER}-m2crypto ${pkg_append}${PY_PKG_VER}-pyyaml" - else - __PACKAGES="m2crypto PyYAML ${pkg_append}-futures" - fi - - __PACKAGES="${__PACKAGES} ${pkg_append}${PY_PKG_VER}-crypto ${pkg_append}${PY_PKG_VER}-jinja2 procps-ng" - __PACKAGES="${__PACKAGES} ${pkg_append}${PY_PKG_VER}-msgpack ${pkg_append}${PY_PKG_VER}-requests ${pkg_append}${PY_PKG_VER}-zmq" - - # shellcheck disable=SC2086 - __yum_install_noinput ${__PACKAGES} || return 1 fi if [ "${_EXTRA_PACKAGES}" != "" ]; then @@ -6480,20 +5549,9 @@ _eof } install_amazon_linux_ami_2_onedir_deps() { - # Shim to figure out if we're using old (rhel) or new (aws) rpms. - _USEAWS=$BS_FALSE - pkg_append="python" - - if [ "$ITYPE" = "onedir" ]; then - repo_rev="$ONEDIR_REV" - else - repo_rev="latest" - fi - - if echo $repo_rev | grep -E -q '^archive'; then - year=$(echo "$repo_rev" | cut -d '/' -f 2 | cut -c1-4) - else - year=$(echo "$repo_rev" | cut -c1-4) + if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -ne 3 ]; then + echoerror "Python version is no longer supported, only Python 3" + return 1 fi # We need to install yum-utils before doing anything else when installing on @@ -6506,64 +5564,24 @@ install_amazon_linux_ami_2_onedir_deps() { fi if [ $_DISABLE_REPOS -eq $BS_FALSE ] || [ "$_CUSTOM_REPO_URL" != "null" ]; then - __REPO_FILENAME="salt.repo" - __PY_VERSION_REPO="yum" - PY_PKG_VER="" - repo_label="saltstack-repo" - repo_name="SaltStack repo for Amazon Linux 2" - if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq 3 ]; then - __REPO_FILENAME="salt.repo" - __PY_VERSION_REPO="py3" - PY_PKG_VER=3 - repo_label="saltstack-py3-repo" - repo_name="SaltStack Python 3 repo for Amazon Linux 2" + if [ ! -s "${YUM_REPO_FILE}" ]; then + FETCH_URL="https://github.com/saltstack/salt-install-guide/releases/latest/download/salt.repo" + __fetch_url "${YUM_REPO_FILE}" "${FETCH_URL}" + if [ "$ONEDIR_REV" != "latest" ]; then + # 3006.x is default + REPO_REV_MAJOR=$(echo "$ONEDIR_REV" | cut -d '.' -f 1) + if [ "$REPO_REV_MAJOR" -eq "3007" ]; then + # Enable the Salt 3007 STS repo + dnf config-manager --set-disable salt-repo-* + dnf config-manager --set-enabled salt-repo-3007-sts + fi + else + # Enable the Salt LATEST repo + dnf config-manager --set-disable salt-repo-* + dnf config-manager --set-enabled salt-repo-latest + fi + dnf clean expire-cache || return 1 fi - - base_url="$HTTP_VAL://${_REPO_URL}/${_ONEDIR_DIR}/${__PY_VERSION_REPO}/amazon/2/\$basearch/$repo_rev/" - if [ "${ONEDIR_REV}" = "nightly" ] ; then - base_url="$HTTP_VAL://${_REPO_URL}/${_ONEDIR_NIGHTLY_DIR}/${__PY_VERSION_REPO}/amazon/2/\$basearch/" - fi - - if [ "$(echo "${ONEDIR_REV}" | grep -E '(3004|3005)')" != "" ] || [ "${ONEDIR_REV}" = "nightly" ]; then - gpg_key="${base_url}SALTSTACK-GPG-KEY.pub,${base_url}base/RPM-GPG-KEY-CentOS-7" - if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq 3 ]; then - gpg_key="${base_url}SALTSTACK-GPG-KEY.pub" - fi - else - gpg_key="${base_url}SALT-PROJECT-GPG-PUBKEY-2023.pub" - fi - - # This should prob be refactored to use __install_saltstack_rhel_repository() - # With args passed in to do the right thing. Reformatted to be more like the - # amazon linux yum file. - if [ ! -s "/etc/yum.repos.d/${__REPO_FILENAME}" ]; then - cat <<_eof > "/etc/yum.repos.d/${__REPO_FILENAME}" -[$repo_label] -name=$repo_name -failovermethod=priority -priority=10 -gpgcheck=1 -gpgkey=$gpg_key -baseurl=$base_url -_eof - fi - - fi - - if [ "${_POST_NEON_INSTALL}" -eq $BS_FALSE ]; then - # Package python-ordereddict-1.1-2.el6.noarch is obsoleted by python26-2.6.9-2.88.amzn1.x86_64 - # which is already installed - if [ -n "${PY_PKG_VER}" ] && [ "${PY_PKG_VER}" -eq 3 ]; then - __PACKAGES="${pkg_append}${PY_PKG_VER}-m2crypto ${pkg_append}${PY_PKG_VER}-pyyaml" - else - __PACKAGES="m2crypto PyYAML ${pkg_append}-futures" - fi - - __PACKAGES="${__PACKAGES} ${pkg_append}${PY_PKG_VER}-crypto ${pkg_append}${PY_PKG_VER}-jinja2 procps-ng" - __PACKAGES="${__PACKAGES} ${pkg_append}${PY_PKG_VER}-msgpack ${pkg_append}${PY_PKG_VER}-requests ${pkg_append}${PY_PKG_VER}-zmq" - - # shellcheck disable=SC2086 - __yum_install_noinput ${__PACKAGES} || return 1 fi if [ "${_EXTRA_PACKAGES}" != "" ]; then @@ -6573,41 +5591,6 @@ _eof fi } -install_amazon_linux_ami_stable() { - install_centos_stable || return 1 - return 0 -} - -install_amazon_linux_ami_stable_post() { - install_centos_stable_post || return 1 - return 0 -} - -install_amazon_linux_ami_restart_daemons() { - install_centos_restart_daemons || return 1 - return 0 -} - -install_amazon_linux_ami_git() { - install_centos_git || return 1 - return 0 -} - -install_amazon_linux_ami_git_post() { - install_centos_git_post || return 1 - return 0 -} - -install_amazon_linux_ami_testing() { - install_centos_testing || return 1 - return 0 -} - -install_amazon_linux_ami_testing_post() { - install_centos_testing_post || return 1 - return 0 -} - install_amazon_linux_ami_2_stable() { install_centos_stable || return 1 return 0 @@ -6658,6 +5641,133 @@ install_amazon_linux_ami_2_onedir_post() { return 0 } +# Support for Amazon Linux 2023 +# the following code needs adjustment to allow for 2023, 2024, 2025, etc - 2023 for now +install_amazon_linux_ami_2023_git_deps() { + if [ "$_INSECURE_DL" -eq $BS_FALSE ] && [ "${_SALT_REPO_URL%%://*}" = "https" ]; then + yum -y install ca-certificates || return 1 + fi + + install_amazon_linux_ami_2023_onedir_deps || return 1 + + PY_PKG_VER=3 + PIP_EXE='/bin/pip3' + __PACKAGES="python${PY_PKG_VER}-pip" + + if ! __check_command_exists "${PIP_EXE}"; then + # shellcheck disable=SC2086 + __yum_install_noinput ${__PACKAGES} || return 1 + fi + + if ! __check_command_exists git; then + __yum_install_noinput git || return 1 + fi + + __git_clone_and_checkout || return 1 + + __PACKAGES="python${PY_PKG_VER}-pip python${PY_PKG_VER}-setuptools python${PY_PKG_VER}-devel gcc" + + # shellcheck disable=SC2086 + __yum_install_noinput ${__PACKAGES} || return 1 + + # Let's trigger config_salt() + if [ "$_TEMP_CONFIG_DIR" = "null" ]; then + _TEMP_CONFIG_DIR="${_SALT_GIT_CHECKOUT_DIR}/conf" + CONFIG_SALT_FUNC="config_salt" + fi + + return 0 +} + +install_amazon_linux_ami_2023_onedir_deps() { + + # We need to install yum-utils before doing anything else when installing on + # Amazon Linux ECS-optimized images. See issue #974. + __yum_install_noinput yum-utils + + # Do upgrade early + if [ "$_UPGRADE_SYS" -eq $BS_TRUE ]; then + yum -y update || return 1 + fi + + if [ $_DISABLE_REPOS -eq $BS_FALSE ] || [ "$_CUSTOM_REPO_URL" != "null" ]; then + if [ ! -s "${YUM_REPO_FILE}" ]; then + FETCH_URL="https://github.com/saltstack/salt-install-guide/releases/latest/download/salt.repo" + __fetch_url "${YUM_REPO_FILE}" "${FETCH_URL}" + if [ "$ONEDIR_REV" != "latest" ]; then + # 3006.x is default + REPO_REV_MAJOR=$(echo "$ONEDIR_REV" | cut -d '.' -f 1) + if [ "$REPO_REV_MAJOR" -eq "3007" ]; then + # Enable the Salt 3007 STS repo + dnf config-manager --set-disable salt-repo-* + dnf config-manager --set-enabled salt-repo-3007-sts + fi + else + # Enable the Salt LATEST repo + dnf config-manager --set-disable salt-repo-* + dnf config-manager --set-enabled salt-repo-latest + fi + dnf clean expire-cache || return 1 + fi + fi + + if [ "${_EXTRA_PACKAGES}" != "" ]; then + echoinfo "Installing the following extra packages as requested: ${_EXTRA_PACKAGES}" + # shellcheck disable=SC2086 + __yum_install_noinput ${_EXTRA_PACKAGES} || return 1 + fi +} + +install_amazon_linux_ami_2023_stable() { + install_centos_stable || return 1 + return 0 +} + +install_amazon_linux_ami_2023_stable_post() { + install_centos_stable_post || return 1 + return 0 +} + +install_amazon_linux_ami_2023_restart_daemons() { + install_centos_restart_daemons || return 1 + return 0 +} + +install_amazon_linux_ami_2023_git() { + install_centos_git || return 1 + return 0 +} + +install_amazon_linux_ami_2023_git_post() { + install_centos_git_post || return 1 + return 0 +} + +install_amazon_linux_ami_2023_testing() { + install_centos_testing || return 1 + return 0 +} + +install_amazon_linux_ami_2023_testing_post() { + install_centos_testing_post || return 1 + return 0 +} + +install_amazon_linux_ami_2023_check_services() { + install_centos_check_services || return 1 + return 0 +} + +install_amazon_linux_ami_2023_onedir() { + install_centos_stable || return 1 + return 0 +} + +install_amazon_linux_ami_2023_onedir_post() { + install_centos_stable_post || return 1 + return 0 +} + # # Ended Amazon Linux AMI Install Functions # @@ -6685,7 +5795,8 @@ install_arch_linux_stable_deps() { fi if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq 2 ]; then - PY_PKG_VER=2 + echoerror "Python 2 is no longer supported, only Python 3" + return 1 else PY_PKG_VER="" fi @@ -6693,6 +5804,7 @@ install_arch_linux_stable_deps() { # YAML module is used for generating custom master/minion configs # shellcheck disable=SC2086 pacman -Su --noconfirm --needed python${PY_PKG_VER}-yaml + pacman -Su --noconfirm --needed python${PY_PKG_VER}-tornado if [ "$_INSTALL_CLOUD" -eq $BS_TRUE ]; then # shellcheck disable=SC2086 @@ -6716,33 +5828,21 @@ install_arch_linux_git_deps() { __git_clone_and_checkout || return 1 - if [ "${_POST_NEON_INSTALL}" -eq $BS_FALSE ]; then - pacman -R --noconfirm python2-distribute - pacman -Su --noconfirm --needed python2-crypto python2-setuptools python2-jinja \ - python2-m2crypto python2-markupsafe python2-msgpack python2-psutil \ - python2-pyzmq zeromq python2-requests python2-systemd || return 1 - - if [ -f "${_SALT_GIT_CHECKOUT_DIR}/requirements/base.txt" ]; then - # We're on the master branch, install whichever tornado is on the requirements file - __REQUIRED_TORNADO="$(grep tornado "${_SALT_GIT_CHECKOUT_DIR}/requirements/base.txt")" - if [ "${__REQUIRED_TORNADO}" != "" ]; then - pacman -Su --noconfirm --needed python2-tornado - fi - fi + if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq 2 ]; then + echoerror "Python 2 is no longer supported, only Python 3" + return 1 else - if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq 2 ]; then - PY_PKG_VER=2 - else - PY_PKG_VER="" - fi - __PACKAGES="python${PY_PKG_VER}-pip python${PY_PKG_VER}-setuptools gcc" - # shellcheck disable=SC2086 - pacman -Su --noconfirm --needed ${__PACKAGES} + PY_PKG_VER="" fi + __PACKAGES="python${PY_PKG_VER}-pip python${PY_PKG_VER}-setuptools gcc" + + # shellcheck disable=SC2086 + pacman -Su --noconfirm --needed ${__PACKAGES} + # Let's trigger config_salt() if [ "$_TEMP_CONFIG_DIR" = "null" ]; then - _TEMP_CONFIG_DIR="${_SALT_GIT_CHECKOUT_DIR}/conf/" + _TEMP_CONFIG_DIR="${_SALT_GIT_CHECKOUT_DIR}/conf" CONFIG_SALT_FUNC="config_salt" fi @@ -6770,19 +5870,16 @@ install_arch_linux_stable() { } install_arch_linux_git() { + if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq 2 ]; then + echoerror "Python 2 is no longer supported, only Python 3" + return 1 + fi - _POST_NEON_PIP_INSTALL_ARGS="${_POST_NEON_PIP_INSTALL_ARGS} --use-pep517" + _PIP_INSTALL_ARGS="${_PIP_INSTALL_ARGS} --use-pep517" _PIP_DOWNLOAD_ARGS="${_PIP_DOWNLOAD_ARGS} --use-pep517" - if [ "${_POST_NEON_INSTALL}" -eq $BS_TRUE ]; then - __install_salt_from_repo_post_neon "${_PY_EXE}" || return 1 - return 0 - fi - if [ -f "${_SALT_GIT_CHECKOUT_DIR}/salt/syspaths.py" ]; then - python2 setup.py --salt-config-dir="$_SALT_ETC_DIR" --salt-cache-dir="${_SALT_CACHE_DIR}" ${SETUP_PY_INSTALL_ARGS} install || return 1 - else - python2 setup.py ${SETUP_PY_INSTALL_ARGS} install || return 1 - fi + __install_salt_from_repo "${_PY_EXE}" || return 1 + return 0 } @@ -6806,7 +5903,7 @@ install_arch_linux_post() { # Skip salt-api since the service should be opt-in and not necessarily started on boot [ $fname = "api" ] && continue - if [ -f /usr/bin/systemctl ]; then + if [ "$_SYSTEMD_FUNCTIONAL" -eq $BS_TRUE ]; then # Using systemd /usr/bin/systemctl is-enabled salt-$fname.service > /dev/null 2>&1 || ( /usr/bin/systemctl preset salt-$fname.service > /dev/null 2>&1 && @@ -6837,7 +5934,7 @@ install_arch_linux_git_post() { _SERVICE_DIR="${_SALT_GIT_CHECKOUT_DIR}/pkg/rpm" fi - if [ -f /usr/bin/systemctl ]; then + if [ "$_SYSTEMD_FUNCTIONAL" -eq $BS_TRUE ]; then __copyfile "${_SERVICE_DIR}/salt-${fname}.service" "/lib/systemd/system/salt-${fname}.service" # Skip salt-api since the service should be opt-in and not necessarily started on boot @@ -6859,7 +5956,7 @@ install_arch_linux_git_post() { } install_arch_linux_restart_daemons() { - [ $_START_DAEMONS -eq $BS_FALSE ] && return + [ "$_START_DAEMONS" -eq $BS_FALSE ] && return for fname in api master minion syndic; do # Skip salt-api since the service should be opt-in and not necessarily started on boot @@ -6870,7 +5967,7 @@ install_arch_linux_restart_daemons() { [ $fname = "minion" ] && [ "$_INSTALL_MINION" -eq $BS_FALSE ] && continue [ $fname = "syndic" ] && [ "$_INSTALL_SYNDIC" -eq $BS_FALSE ] && continue - if [ -f /usr/bin/systemctl ]; then + if [ "$_SYSTEMD_FUNCTIONAL" -eq $BS_TRUE ]; then /usr/bin/systemctl stop salt-$fname.service > /dev/null 2>&1 /usr/bin/systemctl start salt-$fname.service && continue echodebug "Failed to start salt-$fname using systemd" @@ -6886,7 +5983,7 @@ install_arch_linux_restart_daemons() { } install_arch_check_services() { - if [ ! -f /usr/bin/systemctl ]; then + if [ "$_SYSTEMD_FUNCTIONAL" -eq $BS_TRUE ]; then # Not running systemd!? Don't check! return 0 fi @@ -6928,57 +6025,91 @@ install_arch_linux_onedir_post() { # __install_saltstack_photon_onedir_repository() { - if [ "$ITYPE" = "stable" ]; then - REPO_REV="$ONEDIR_REV" - else - REPO_REV="latest" + echodebug "__install_saltstack_photon_onedir_repository() entry" + + if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -ne 3 ]; then + echoerror "Python version is no longer supported, only Python 3" + return 1 fi - __PY_VERSION_REPO="yum" - if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq 3 ]; then - __PY_VERSION_REPO="py3" - fi - - REPO_FILE="/etc/yum.repos.d/salt.repo" - - if [ ! -s "$REPO_FILE" ] || [ "$_FORCE_OVERWRITE" -eq $BS_TRUE ]; then - FETCH_URL="${HTTP_VAL}://${_REPO_URL}/${_ONEDIR_DIR}/${__PY_VERSION_REPO}/photon/${DISTRO_MAJOR_VERSION}/${CPU_ARCH_L}/${ONEDIR_REV}" - if [ "${ONEDIR_REV}" = "nightly" ] ; then - FETCH_URL="${HTTP_VAL}://${_REPO_URL}/${_ONEDIR_NIGHTLY_DIR}/${__PY_VERSION_REPO}/photon/${DISTRO_MAJOR_VERSION}/${CPU_ARCH_L}/" + if [ ! -s "$YUM_REPO_FILE" ] || [ "$_FORCE_OVERWRITE" -eq $BS_TRUE ]; then + ## Photon tdnf doesn't support config-manager + ## FETCH_URL="https://github.com/saltstack/salt-install-guide/releases/latest/download/salt.repo" + ## __fetch_url "${YUM_REPO_FILE}" "${FETCH_URL}" + # shellcheck disable=SC2129 + if [ "$ONEDIR_REV" != "latest" ]; then + # 3006.x is default + REPO_REV_MAJOR=$(echo "$ONEDIR_REV" | cut -d '.' -f 1) + if [ "$REPO_REV_MAJOR" -eq "3007" ]; then + # Enable the Salt 3007 STS repo + ## tdnf config-manager --set-disable salt-repo-* + ## tdnf config-manager --set-enabled salt-repo-3007-sts + echo "[salt-repo-3007-sts]" > "${YUM_REPO_FILE}" + echo "name=Salt Repo for Salt v3007 STS" >> "${YUM_REPO_FILE}" + echo "baseurl=https://packages.broadcom.com/artifactory/saltproject-rpm/" >> "${YUM_REPO_FILE}" + echo "skip_if_unavailable=True" >> "${YUM_REPO_FILE}" + echo "priority=10" >> "${YUM_REPO_FILE}" + echo "enabled=1" >> "${YUM_REPO_FILE}" + echo "enabled_metadata=1" >> "${YUM_REPO_FILE}" + echo "gpgcheck=1" >> "${YUM_REPO_FILE}" + echo "exclude=*3006* *3008* *3009* *3010*" >> "${YUM_REPO_FILE}" + echo "gpgkey=https://packages.broadcom.com/artifactory/api/security/keypair/SaltProjectKey/public" >> "${YUM_REPO_FILE}" + else + # Salt 3006 repo + echo "[salt-repo-3006-lts]" > "${YUM_REPO_FILE}" + echo "name=Salt Repo for Salt v3006 LTS" >> "${YUM_REPO_FILE}" + echo "baseurl=https://packages.broadcom.com/artifactory/saltproject-rpm/" >> "${YUM_REPO_FILE}" + echo "skip_if_unavailable=True" >> "${YUM_REPO_FILE}" + echo "priority=10" >> "${YUM_REPO_FILE}" + echo "enabled=1" >> "${YUM_REPO_FILE}" + echo "enabled_metadata=1" >> "${YUM_REPO_FILE}" + echo "gpgcheck=1" >> "${YUM_REPO_FILE}" + echo "exclude=*3007* *3008* *3009* *3010*" >> "${YUM_REPO_FILE}" + echo "gpgkey=https://packages.broadcom.com/artifactory/api/security/keypair/SaltProjectKey/public" >> "${YUM_REPO_FILE}" + fi + else + # Enable the Salt LATEST repo + ## tdnf config-manager --set-disable salt-repo-* + ## tdnf config-manager --set-enabled salt-repo-latest + echo "[salt-repo-latest]" > "${YUM_REPO_FILE}" + echo "name=Salt Repo for Salt LATEST release" >> "${YUM_REPO_FILE}" + echo "baseurl=https://packages.broadcom.com/artifactory/saltproject-rpm/" >> "${YUM_REPO_FILE}" + echo "skip_if_unavailable=True" >> "${YUM_REPO_FILE}" + echo "priority=10" >> "${YUM_REPO_FILE}" + echo "enabled=1" >> "${YUM_REPO_FILE}" + echo "enabled_metadata=1" >> "${YUM_REPO_FILE}" + echo "gpgcheck=1" >> "${YUM_REPO_FILE}" + echo "gpgkey=https://packages.broadcom.com/artifactory/api/security/keypair/SaltProjectKey/public" >> "${YUM_REPO_FILE}" fi - - __fetch_url "${REPO_FILE}" "${FETCH_URL}.repo" - - GPG_KEY="SALT-PROJECT-GPG-PUBKEY-2023.pub" - - __rpm_import_gpg "${FETCH_URL}/${GPG_KEY}" || return 1 - tdnf makecache || return 1 - elif [ "$REPO_REV" != "latest" ]; then + elif [ "$ONEDIR_REV" != "latest" ]; then echowarn "salt.repo already exists, ignoring salt version argument." - echowarn "Use -F (forced overwrite) to install $REPO_REV." + echowarn "Use -F (forced overwrite) to install $ONEDIR_REV." fi return 0 } install_photon_deps() { + echodebug "install_photon_deps() entry" + + if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -ne 3 ]; then + echoerror "Python version is no longer supported, only Python 3" + return 1 + fi + if [ "$_UPGRADE_SYS" -eq $BS_TRUE ]; then tdnf -y update || return 1 fi __PACKAGES="${__PACKAGES:=}" - if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -lt 3 ]; then - echoerror "There are no Python 2 stable packages for Fedora, only Py3 packages" - return 1 - fi - PY_PKG_VER=3 __PACKAGES="${__PACKAGES} libyaml procps-ng python${PY_PKG_VER}-crypto python${PY_PKG_VER}-jinja2" __PACKAGES="${__PACKAGES} python${PY_PKG_VER}-msgpack python${PY_PKG_VER}-requests python${PY_PKG_VER}-zmq" __PACKAGES="${__PACKAGES} python${PY_PKG_VER}-pip python${PY_PKG_VER}-m2crypto python${PY_PKG_VER}-pyyaml" __PACKAGES="${__PACKAGES} python${PY_PKG_VER}-systemd" + if [ "${_EXTRA_PACKAGES}" != "" ]; then echoinfo "Installing the following extra packages as requested: ${_EXTRA_PACKAGES}" fi @@ -6990,6 +6121,8 @@ install_photon_deps() { } install_photon_stable_post() { + echodebug "install_photon_stable_post() entry" + for fname in api master minion syndic; do # Skip salt-api since the service should be opt-in and not necessarily started on boot [ $fname = "api" ] && continue @@ -7006,17 +6139,21 @@ install_photon_stable_post() { } install_photon_git_deps() { - if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq 3 ]; then - # Packages are named python3- - PY_PKG_VER=3 - else - PY_PKG_VER=2 + echodebug "install_photon_git_deps() entry" + + if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -ne 3 ]; then + echoerror "Python version is no longer supported, only Python 3" + return 1 fi + # Packages are named python3- + PY_PKG_VER=3 + __PACKAGES="" if ! __check_command_exists ps; then __PACKAGES="${__PACKAGES} procps-ng" fi + if ! __check_command_exists git; then __PACKAGES="${__PACKAGES} git" fi @@ -7029,55 +6166,28 @@ install_photon_git_deps() { __git_clone_and_checkout || return 1 - if [ "${_POST_NEON_INSTALL}" -eq $BS_FALSE ]; then + __PACKAGES="python${PY_PKG_VER}-devel python${PY_PKG_VER}-pip python${PY_PKG_VER}-setuptools gcc glibc-devel linux-devel.x86_64 cython${PY_PKG_VER}" - if [ "$_INSECURE_DL" -eq $BS_FALSE ] && [ "${_SALT_REPO_URL%%://*}" = "https" ]; then - __PACKAGES="${__PACKAGES} ca-certificates" - fi - if [ "$_INSTALL_CLOUD" -eq $BS_TRUE ]; then - __PACKAGES="${__PACKAGES} python${PY_PKG_VER}-libcloud python${PY_PKG_VER}-netaddr" - fi + echodebug "install_photon_git_deps() distro major version, ${DISTRO_MAJOR_VERSION}" - install_photon_deps || return 1 - - if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq 3 ]; then - if __check_command_exists python3; then - __python="python3" - fi - elif [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq 2 ]; then - if __check_command_exists python2; then - __python="python2" - fi - else - if ! __check_command_exists python; then - echoerror "Unable to find a python binary?!" - return 1 - fi - # Let's hope it's the right one - __python="python" - fi - - grep tornado "${_SALT_GIT_CHECKOUT_DIR}/requirements/base.txt" | while IFS=' - ' read -r dep; do - echodebug "Running '${__python}' -m pip install '${dep}'" - "${__python}" -m pip install "${dep}" || return 1 - done - else - __PACKAGES="python${PY_PKG_VER}-devel python${PY_PKG_VER}-pip python${PY_PKG_VER}-setuptools gcc glibc-devel linux-devel.x86_64" - # shellcheck disable=SC2086 - __tdnf_install_noinput ${__PACKAGES} || return 1 + ## Photon 5 container is missing systemd on default installation + if [ "${DISTRO_MAJOR_VERSION}" -lt 5 ]; then + __PACKAGES="${__PACKAGES} python${PY_PKG_VER}-tornado" fi + # shellcheck disable=SC2086 + __tdnf_install_noinput ${__PACKAGES} || return 1 + if [ "${DISTRO_MAJOR_VERSION}" -gt 3 ]; then # Need newer version of setuptools on Photon - _setuptools_dep="setuptools>=${_MINIMUM_SETUPTOOLS_VERSION}" - echodebug "Running '${_PY_EXE} -m pip --upgrade install ${_setuptools_dep}'" + _setuptools_dep="setuptools>=${_MINIMUM_SETUPTOOLS_VERSION},<${_MAXIMUM_SETUPTOOLS_VERSION}" + echodebug "Running '${_PY_EXE} -m pip install --upgrade ${_setuptools_dep}'" ${_PY_EXE} -m pip install --upgrade "${_setuptools_dep}" fi # Let's trigger config_salt() if [ "$_TEMP_CONFIG_DIR" = "null" ]; then - _TEMP_CONFIG_DIR="${_SALT_GIT_CHECKOUT_DIR}/conf/" + _TEMP_CONFIG_DIR="${_SALT_GIT_CHECKOUT_DIR}/conf" CONFIG_SALT_FUNC="config_salt" fi @@ -7085,11 +6195,14 @@ install_photon_git_deps() { } install_photon_git() { + echodebug "install_photon_git() entry" + if [ "${_PY_EXE}" != "" ]; then _PYEXE=${_PY_EXE} echoinfo "Using the following python version: ${_PY_EXE} to install salt" else - _PYEXE='python2' + echoerror "Python 2 is no longer supported, only Python 3" + return 1 fi if [ -f "${_SALT_GIT_CHECKOUT_DIR}/salt/syspaths.py" ]; then @@ -7101,6 +6214,8 @@ install_photon_git() { } install_photon_git_post() { + echodebug "install_photon_git_post() entry" + for fname in api master minion syndic; do # Skip if not meant to be installed [ $fname = "api" ] && \ @@ -7132,7 +6247,9 @@ install_photon_git_post() { } install_photon_restart_daemons() { - [ $_START_DAEMONS -eq $BS_FALSE ] && return + [ "$_START_DAEMONS" -eq $BS_FALSE ] && return + echodebug "install_photon_restart_daemons() entry" + for fname in api master minion syndic; do # Skip salt-api since the service should be opt-in and not necessarily started on boot @@ -7154,6 +6271,8 @@ install_photon_restart_daemons() { } install_photon_check_services() { + echodebug "install_photon_check_services() entry" + for fname in api master minion syndic; do # Skip salt-api since the service should be opt-in and not necessarily started on boot [ $fname = "api" ] && continue @@ -7170,6 +6289,8 @@ install_photon_check_services() { } install_photon_onedir_deps() { + echodebug "install_photon_onedir_deps() entry" + if [ "$_UPGRADE_SYS" -eq $BS_TRUE ]; then tdnf -y update || return 1 @@ -7186,8 +6307,8 @@ install_photon_onedir_deps() { fi # If -R was passed, we need to configure custom repo url with rsync-ed packages - # Which is still handled in __install_saltstack_rhel_repository. This call has - # its own check in case -r was passed without -R. + # Which was handled in __install_saltstack_rhel_repository buu that hanlded old-stable which is for + # releases which are End-Of-Life. This call has its own check in case -r was passed without -R. if [ "$_CUSTOM_REPO_URL" != "null" ]; then __install_saltstack_photon_onedir_repository || return 1 fi @@ -7209,6 +6330,8 @@ install_photon_onedir_deps() { install_photon_onedir() { + echodebug "install_photon_onedir() entry" + STABLE_REV=$ONEDIR_REV __PACKAGES="" @@ -7226,6 +6349,10 @@ install_photon_onedir() { __PACKAGES="${__PACKAGES} salt-syndic" fi + if [ "$_INSTALL_SALT_API" -eq $BS_TRUE ]; then + __PACKAGES="${__PACKAGES} salt-api" + fi + # shellcheck disable=SC2086 __tdnf_install_noinput ${__PACKAGES} || return 1 @@ -7243,526 +6370,6 @@ install_photon_onedir_post() { # ####################################################################################################################### -####################################################################################################################### -# -# FreeBSD Install Functions -# - -# Using a separate conf step to head for idempotent install... -__configure_freebsd_pkg_details() { - _SALT_ETC_DIR="/usr/local/etc/salt" - _PKI_DIR=${_SALT_ETC_DIR}/pki - _POST_NEON_PIP_INSTALL_ARGS="--prefix=/usr/local" -} - -install_freebsd_deps() { - __configure_freebsd_pkg_details - pkg install -y pkg -} - -install_freebsd_git_deps() { - install_freebsd_deps || return 1 - - if ! __check_command_exists git; then - /usr/local/sbin/pkg install -y git || return 1 - fi - __git_clone_and_checkout || return 1 - - if [ "${_POST_NEON_INSTALL}" -eq $BS_FALSE ]; then - - SALT_DEPENDENCIES=$(/usr/local/sbin/pkg rquery %dn py39-salt) - # shellcheck disable=SC2086 - /usr/local/sbin/pkg install -y ${SALT_DEPENDENCIES} python || return 1 - - /usr/local/sbin/pkg install -y py39-requests || return 1 - /usr/local/sbin/pkg install -y py39-tornado4 || return 1 - - else - /usr/local/sbin/pkg install -y python py39-pip py39-setuptools libzmq4 libunwind || return 1 - fi - - echodebug "Adapting paths to FreeBSD" - # The list of files was taken from Salt's BSD port Makefile - for file in doc/man/salt-key.1 doc/man/salt-cp.1 doc/man/salt-minion.1 \ - doc/man/salt-syndic.1 doc/man/salt-master.1 doc/man/salt-run.1 \ - doc/man/salt.7 doc/man/salt.1 doc/man/salt-call.1; do - [ ! -f $file ] && continue - echodebug "Patching ${file}" - sed -in -e "s|/etc/salt|${_SALT_ETC_DIR}|" \ - -e "s|/srv/salt|${_SALT_ETC_DIR}/states|" \ - -e "s|/srv/pillar|${_SALT_ETC_DIR}/pillar|" ${file} - done - if [ ! -f salt/syspaths.py ]; then - # We still can't provide the system paths, salt 0.16.x - # Let's patch salt's source and adapt paths to what's expected on FreeBSD - echodebug "Replacing occurrences of '/etc/salt' with ${_SALT_ETC_DIR}" - # The list of files was taken from Salt's BSD port Makefile - for file in conf/minion conf/master salt/config.py salt/client.py \ - salt/modules/mysql.py salt/utils/parsers.py salt/modules/tls.py \ - salt/modules/postgres.py salt/utils/migrations.py; do - [ ! -f $file ] && continue - echodebug "Patching ${file}" - sed -in -e "s|/etc/salt|${_SALT_ETC_DIR}|" \ - -e "s|/srv/salt|${_SALT_ETC_DIR}/states|" \ - -e "s|/srv/pillar|${_SALT_ETC_DIR}/pillar|" ${file} - done - fi - echodebug "Finished patching" - - # Let's trigger config_salt() - if [ "$_TEMP_CONFIG_DIR" = "null" ]; then - _TEMP_CONFIG_DIR="${_SALT_GIT_CHECKOUT_DIR}/conf/" - CONFIG_SALT_FUNC="config_salt" - - fi - - return 0 -} - -install_freebsd_stable() { -# -# installing latest version of salt from FreeBSD CURRENT ports repo -# - # shellcheck disable=SC2086 - /usr/local/sbin/pkg install -y py39-salt || return 1 - - return 0 -} - -install_freebsd_git() { - - # /usr/local/bin/python3 in FreeBSD is a symlink to /usr/local/bin/python3.7 - __PYTHON_PATH=$(readlink -f "$(command -v python3)") - __ESCAPED_PYTHON_PATH=$(echo "${__PYTHON_PATH}" | sed 's/\//\\\//g') - - if [ "${_POST_NEON_INSTALL}" -eq $BS_TRUE ]; then - __install_salt_from_repo_post_neon "${__PYTHON_PATH}" || return 1 - for script in salt_api salt_master salt_minion salt_proxy salt_syndic; do - __fetch_url "/usr/local/etc/rc.d/${script}" "https://raw.githubusercontent.com/freebsd/freebsd-ports/master/sysutils/py-salt/files/${script}.in" || return 1 - sed -i '' 's/%%PREFIX%%/\/usr\/local/g' /usr/local/etc/rc.d/${script} - sed -i '' "s/%%PYTHON_CMD%%/${__ESCAPED_PYTHON_PATH}/g" /usr/local/etc/rc.d/${script} - chmod +x /usr/local/etc/rc.d/${script} || return 1 - done - - return 0 - fi - - # Install from git - if [ ! -f salt/syspaths.py ]; then - # We still can't provide the system paths, salt 0.16.x - ${__PYTHON_PATH} setup.py ${SETUP_PY_INSTALL_ARGS} install || return 1 - else - ${__PYTHON_PATH} setup.py \ - --salt-root-dir=/ \ - --salt-config-dir="${_SALT_ETC_DIR}" \ - --salt-cache-dir="${_SALT_CACHE_DIR}" \ - --salt-sock-dir=/var/run/salt \ - --salt-srv-root-dir="${_SALT_ETC_DIR}" \ - --salt-base-file-roots-dir="${_SALT_ETC_DIR}/states" \ - --salt-base-pillar-roots-dir="${_SALT_ETC_DIR}/pillar" \ - --salt-base-master-roots-dir="${_SALT_ETC_DIR}/salt-master" \ - --salt-logs-dir=/var/log/salt \ - --salt-pidfile-dir=/var/run \ - ${SETUP_PY_INSTALL_ARGS} install \ - || return 1 - fi - - for script in salt_api salt_master salt_minion salt_proxy salt_syndic; do - __fetch_url "/usr/local/etc/rc.d/${script}" "https://raw.githubusercontent.com/freebsd/freebsd-ports/master/sysutils/py-salt/files/${script}.in" || return 1 - sed -i '' 's/%%PREFIX%%/\/usr\/local/g' /usr/local/etc/rc.d/${script} - sed -i '' "s/%%PYTHON_CMD%%/${__ESCAPED_PYTHON_PATH}/g" /usr/local/etc/rc.d/${script} - chmod +x /usr/local/etc/rc.d/${script} || return 1 - done - - # And we're good to go - return 0 -} - -install_freebsd_stable_post() { - for fname in api master minion syndic; do - # Skip salt-api since the service should be opt-in and not necessarily started on boot - [ $fname = "api" ] && continue - - # Skip if not meant to be installed - [ $fname = "minion" ] && [ "$_INSTALL_MINION" -eq $BS_FALSE ] && continue - [ $fname = "master" ] && [ "$_INSTALL_MASTER" -eq $BS_FALSE ] && continue - [ $fname = "syndic" ] && [ "$_INSTALL_SYNDIC" -eq $BS_FALSE ] && continue - - enable_string="salt_${fname}_enable=YES" - grep "$enable_string" /etc/rc.conf >/dev/null 2>&1 - [ $? -eq 1 ] && sysrc $enable_string - - done -} - -install_freebsd_git_post() { - install_freebsd_stable_post || return 1 - return 0 -} - -install_freebsd_restart_daemons() { - [ $_START_DAEMONS -eq $BS_FALSE ] && return - - for fname in api master minion syndic; do - # Skip salt-api since the service should be opt-in and not necessarily started on boot - [ $fname = "api" ] && continue - - # Skip if not meant to be installed - [ $fname = "master" ] && [ "$_INSTALL_MASTER" -eq $BS_FALSE ] && continue - [ $fname = "minion" ] && [ "$_INSTALL_MINION" -eq $BS_FALSE ] && continue - [ $fname = "syndic" ] && [ "$_INSTALL_SYNDIC" -eq $BS_FALSE ] && continue - - service salt_$fname stop > /dev/null 2>&1 - service salt_$fname start - done -} - -install_freebsd_onedir() { -# -# call install_freebsd_stable -# - install_freebsd_stable || return 1 - - return 0 -} -# -# Ended FreeBSD Install Functions -# -####################################################################################################################### - -####################################################################################################################### -# -# OpenBSD Install Functions -# - -install_openbsd_deps() { - if [ $_DISABLE_REPOS -eq $BS_FALSE ]; then - OPENBSD_REPO='https://cdn.openbsd.org/pub/OpenBSD' - echoinfo "setting package repository to $OPENBSD_REPO" - echo "${OPENBSD_REPO}" >/etc/installurl || return 1 - fi - - if [ "${_EXTRA_PACKAGES}" != "" ]; then - echoinfo "Installing the following extra packages as requested: ${_EXTRA_PACKAGES}" - # shellcheck disable=SC2086 - pkg_add -I -v ${_EXTRA_PACKAGES} || return 1 - fi - return 0 -} - -install_openbsd_git_deps() { - install_openbsd_deps || return 1 - - if ! __check_command_exists git; then - pkg_add -I -v git || return 1 - fi - __git_clone_and_checkout || return 1 - - if [ "${_POST_NEON_INSTALL}" -eq $BS_TRUE ]; then - pkg_add -I -v py3-pip py3-setuptools - fi - - # - # Let's trigger config_salt() - # - if [ "$_TEMP_CONFIG_DIR" = "null" ]; then - _TEMP_CONFIG_DIR="${_SALT_GIT_CHECKOUT_DIR}/conf/" - CONFIG_SALT_FUNC="config_salt" - fi - - return 0 -} - -install_openbsd_git() { - # - # Install from git - # - if [ "${_POST_NEON_INSTALL}" -eq $BS_TRUE ]; then - __install_salt_from_repo_post_neon "${_PY_EXE}" || return 1 - return 0 - fi - - if [ ! -f salt/syspaths.py ]; then - # We still can't provide the system paths, salt 0.16.x - /usr/local/bin/python2.7 setup.py ${SETUP_PY_INSTALL_ARGS} install || return 1 - fi - return 0 -} - -install_openbsd_stable() { - pkg_add -r -I -v salt || return 1 - return 0 -} - -install_openbsd_post() { - for fname in api master minion syndic; do - [ $fname = "api" ] && continue - [ $fname = "minion" ] && [ "$_INSTALL_MINION" -eq $BS_FALSE ] && continue - [ $fname = "master" ] && [ "$_INSTALL_MASTER" -eq $BS_FALSE ] && continue - [ $fname = "syndic" ] && [ "$_INSTALL_SYNDIC" -eq $BS_FALSE ] && continue - - rcctl enable salt_$fname - done - - return 0 -} - -install_openbsd_check_services() { - for fname in api master minion syndic; do - # Skip salt-api since the service should be opt-in and not necessarily started on boot - [ $fname = "api" ] && continue - - # Skip if not meant to be installed - [ $fname = "master" ] && [ "$_INSTALL_MASTER" -eq $BS_FALSE ] && continue - [ $fname = "minion" ] && [ "$_INSTALL_MINION" -eq $BS_FALSE ] && continue - [ $fname = "syndic" ] && continue - - if [ -f /etc/rc.d/salt_${fname} ]; then - __check_services_openbsd salt_${fname} || return 1 - fi - done - - return 0 -} - -install_openbsd_restart_daemons() { - [ $_START_DAEMONS -eq $BS_FALSE ] && return - - for fname in api master minion syndic; do - # Skip salt-api since the service should be opt-in and not necessarily started on boot - [ $fname = "api" ] && continue - - # Skip if not meant to be installed - [ $fname = "master" ] && [ "$_INSTALL_MASTER" -eq $BS_FALSE ] && continue - [ $fname = "minion" ] && [ "$_INSTALL_MINION" -eq $BS_FALSE ] && continue - [ $fname = "syndic" ] && [ "$_INSTALL_SYNDIC" -eq $BS_FALSE ] && continue - - rcctl restart salt_${fname} - done - - return 0 -} - -install_openbsd_onedir() { -# -# Call install_openbsd_stable -# - install_openbsd_stable || return 1 - - return 0 -} -# -# Ended OpenBSD Install Functions -# -####################################################################################################################### - -####################################################################################################################### -# -# SmartOS Install Functions -# -install_smartos_deps() { - smartos_deps="$(pkgin show-deps salt | grep '^\s' | grep -v '\snot' | xargs) py27-m2crypto" - pkgin -y install "${smartos_deps}" || return 1 - - # Set _SALT_ETC_DIR to SmartOS default if they didn't specify - _SALT_ETC_DIR=${BS_SALT_ETC_DIR:-/opt/local/etc/salt} - # We also need to redefine the PKI directory - _PKI_DIR=${_SALT_ETC_DIR}/pki - - # Let's trigger config_salt() - if [ "$_TEMP_CONFIG_DIR" = "null" ]; then - # Let's set the configuration directory to /tmp - _TEMP_CONFIG_DIR="/tmp" - CONFIG_SALT_FUNC="config_salt" - - # Let's download, since they were not provided, the default configuration files - if [ ! -f "$_SALT_ETC_DIR/minion" ] && [ ! -f "$_TEMP_CONFIG_DIR/minion" ]; then - # shellcheck disable=SC2086 - curl $_CURL_ARGS -s -o "$_TEMP_CONFIG_DIR/minion" -L \ - https://raw.githubusercontent.com/saltstack/salt/master/conf/minion || return 1 - fi - if [ ! -f "$_SALT_ETC_DIR/master" ] && [ ! -f $_TEMP_CONFIG_DIR/master ]; then - # shellcheck disable=SC2086 - curl $_CURL_ARGS -s -o "$_TEMP_CONFIG_DIR/master" -L \ - https://raw.githubusercontent.com/saltstack/salt/master/conf/master || return 1 - fi - fi - - if [ "$_INSTALL_CLOUD" -eq $BS_TRUE ]; then - pkgin -y install py27-apache-libcloud || return 1 - fi - - if [ "${_EXTRA_PACKAGES}" != "" ]; then - echoinfo "Installing the following extra packages as requested: ${_EXTRA_PACKAGES}" - # shellcheck disable=SC2086 - pkgin -y install ${_EXTRA_PACKAGES} || return 1 - fi - - return 0 -} - -install_smartos_git_deps() { - install_smartos_deps || return 1 - - if ! __check_command_exists git; then - pkgin -y install git || return 1 - fi - - __git_clone_and_checkout || return 1 - - if [ "${_POST_NEON_INSTALL}" -eq $BS_FALSE ]; then - - if [ -f "${_SALT_GIT_CHECKOUT_DIR}/requirements/base.txt" ]; then - # Install whichever tornado is in the requirements file - __REQUIRED_TORNADO="$(grep tornado "${_SALT_GIT_CHECKOUT_DIR}/requirements/base.txt")" - __check_pip_allowed "You need to allow pip based installations (-P) in order to install the python package '${__REQUIRED_TORNADO}'" - - # Install whichever futures is in the requirements file - __REQUIRED_FUTURES="$(grep futures "${_SALT_GIT_CHECKOUT_DIR}/requirements/base.txt")" - __check_pip_allowed "You need to allow pip based installations (-P) in order to install the python package '${__REQUIRED_FUTURES}'" - - if [ "${__REQUIRED_TORNADO}" != "" ]; then - if ! __check_command_exists pip; then - pkgin -y install py27-pip - fi - pip install -U "${__REQUIRED_TORNADO}" - fi - - if [ "${__REQUIRED_FUTURES}" != "" ]; then - if ! __check_command_exists pip; then - pkgin -y install py27-pip - fi - pip install -U "${__REQUIRED_FUTURES}" - fi - fi - else - if ! __check_command_exists pip; then - pkgin -y install py27-pip - fi - pkgin -y install py27-setuptools - fi - - # Let's trigger config_salt() - if [ "$_TEMP_CONFIG_DIR" = "null" ]; then - _TEMP_CONFIG_DIR="${_SALT_GIT_CHECKOUT_DIR}/conf/" - CONFIG_SALT_FUNC="config_salt" - fi - - return 0 -} - -install_smartos_stable() { - pkgin -y install salt || return 1 - return 0 -} - -install_smartos_git() { - - if [ "${_POST_NEON_INSTALL}" -eq $BS_TRUE ]; then - __install_salt_from_repo_post_neon "${_PY_EXE}" || return 1 - return 0 - fi - - # Use setuptools in order to also install dependencies - # lets force our config path on the setup for now, since salt/syspaths.py only got fixed in 2015.5.0 - USE_SETUPTOOLS=1 /opt/local/bin/python setup.py --salt-config-dir="$_SALT_ETC_DIR" --salt-cache-dir="${_SALT_CACHE_DIR}" ${SETUP_PY_INSTALL_ARGS} install || return 1 - return 0 -} - -install_smartos_post() { - smf_dir="/opt/custom/smf" - - # Install manifest files if needed. - for fname in api master minion syndic; do - # Skip if not meant to be installed - [ $fname = "api" ] && \ - ([ "$_INSTALL_MASTER" -eq $BS_FALSE ] || ! __check_command_exists "salt-${fname}") && continue - [ $fname = "master" ] && [ "$_INSTALL_MASTER" -eq $BS_FALSE ] && continue - [ $fname = "minion" ] && [ "$_INSTALL_MINION" -eq $BS_FALSE ] && continue - [ $fname = "syndic" ] && [ "$_INSTALL_SYNDIC" -eq $BS_FALSE ] && continue - - svcs network/salt-$fname > /dev/null 2>&1 - if [ $? -eq 1 ]; then - if [ ! -f "$_TEMP_CONFIG_DIR/salt-$fname.xml" ]; then - # shellcheck disable=SC2086 - curl $_CURL_ARGS -s -o "$_TEMP_CONFIG_DIR/salt-$fname.xml" -L \ - "https://raw.githubusercontent.com/saltstack/salt/master/pkg/smartos/salt-$fname.xml" - fi - svccfg import "$_TEMP_CONFIG_DIR/salt-$fname.xml" - if [ "${VIRTUAL_TYPE}" = "global" ]; then - if [ ! -d "$smf_dir" ]; then - mkdir -p "$smf_dir" || return 1 - fi - if [ ! -f "$smf_dir/salt-$fname.xml" ]; then - __copyfile "$_TEMP_CONFIG_DIR/salt-$fname.xml" "$smf_dir/" || return 1 - fi - fi - fi - done - - return 0 -} - -install_smartos_git_post() { - smf_dir="/opt/custom/smf" - - # Install manifest files if needed. - for fname in api master minion syndic; do - # Skip if not meant to be installed - [ $fname = "api" ] && \ - ([ "$_INSTALL_MASTER" -eq $BS_FALSE ] || ! __check_command_exists "salt-${fname}") && continue - [ $fname = "master" ] && [ "$_INSTALL_MASTER" -eq $BS_FALSE ] && continue - [ $fname = "minion" ] && [ "$_INSTALL_MINION" -eq $BS_FALSE ] && continue - [ $fname = "syndic" ] && [ "$_INSTALL_SYNDIC" -eq $BS_FALSE ] && continue - - svcs "network/salt-$fname" > /dev/null 2>&1 - if [ $? -eq 1 ]; then - svccfg import "${_SALT_GIT_CHECKOUT_DIR}/pkg/smartos/salt-$fname.xml" - if [ "${VIRTUAL_TYPE}" = "global" ]; then - if [ ! -d $smf_dir ]; then - mkdir -p "$smf_dir" - fi - if [ ! -f "$smf_dir/salt-$fname.xml" ]; then - __copyfile "${_SALT_GIT_CHECKOUT_DIR}/pkg/smartos/salt-$fname.xml" "$smf_dir/" - fi - fi - fi - done - - return 0 -} - -install_smartos_restart_daemons() { - [ $_START_DAEMONS -eq $BS_FALSE ] && return - - for fname in api master minion syndic; do - # Skip salt-api since the service should be opt-in and not necessarily started on boot - [ $fname = "api" ] && continue - - # Skip if not meant to be installed - [ $fname = "master" ] && [ "$_INSTALL_MASTER" -eq $BS_FALSE ] && continue - [ $fname = "minion" ] && [ "$_INSTALL_MINION" -eq $BS_FALSE ] && continue - [ $fname = "syndic" ] && [ "$_INSTALL_SYNDIC" -eq $BS_FALSE ] && continue - - # Stop if running && Start service - svcadm disable salt-$fname > /dev/null 2>&1 - svcadm enable salt-$fname - done - - return 0 -} -install_smartos_onedir() { -# -# call install_smartos_stable -# - install_smartos_stable || return 1 - - return 0 -} -# -# Ended SmartOS Install Functions -# -####################################################################################################################### ####################################################################################################################### # @@ -7844,7 +6451,7 @@ __zypper_install() { __opensuse_prep_install() { # DRY function for common installation preparatory steps for SUSE - if [ $_DISABLE_REPOS -eq $BS_FALSE ]; then + if [ "$_DISABLE_REPOS" -eq $BS_FALSE ]; then # Is the repository already known __set_suse_pkg_repo # Check zypper repos and refresh if necessary @@ -7876,7 +6483,7 @@ install_opensuse_stable_deps() { # YAML module is used for generating custom master/minion configs # requests is still used by many salt modules # Salt needs python-zypp installed in order to use the zypper module - __PACKAGES="python-PyYAML python-requests python-zypp" + __PACKAGES="python${PY_PKG_VER}-PyYAML python${PY_PKG_VER}-requests python${PY_PKG_VER}-zypp" # shellcheck disable=SC2086 __zypper_install ${__PACKAGES} || return 1 @@ -7903,27 +6510,11 @@ install_opensuse_git_deps() { __git_clone_and_checkout || return 1 - if [ "${_POST_NEON_INSTALL}" -eq $BS_FALSE ]; then - __zypper_install patch || return 1 - - __PACKAGES="libzmq5 python-Jinja2 python-m2crypto python-msgpack-python python-pycrypto python-pyzmq python-xml python-futures" - - if [ -f "${_SALT_GIT_CHECKOUT_DIR}/requirements/base.txt" ]; then - # We're on the master branch, install whichever tornado is on the requirements file - __REQUIRED_TORNADO="$(grep tornado "${_SALT_GIT_CHECKOUT_DIR}/requirements/base.txt")" - if [ "${__REQUIRED_TORNADO}" != "" ]; then - __PACKAGES="${__PACKAGES} python-tornado" - fi - fi - - if [ "$_INSTALL_CLOUD" -eq $BS_TRUE ]; then - __PACKAGES="${__PACKAGES} python-apache-libcloud" - fi # Check for Tumbleweed - elif [ "${DISTRO_MAJOR_VERSION}" -ge 20210101 ]; then + if [ "${DISTRO_MAJOR_VERSION}" -ge 20210101 ]; then __PACKAGES="python3-pip gcc-c++ python3-pyzmq-devel" else - __PACKAGES="python-pip python-setuptools gcc" + __PACKAGES="python3-pip python3-setuptools gcc" fi # shellcheck disable=SC2086 @@ -7931,7 +6522,7 @@ install_opensuse_git_deps() { # Let's trigger config_salt() if [ "$_TEMP_CONFIG_DIR" = "null" ]; then - _TEMP_CONFIG_DIR="${_SALT_GIT_CHECKOUT_DIR}/conf/" + _TEMP_CONFIG_DIR="${_SALT_GIT_CHECKOUT_DIR}/conf" CONFIG_SALT_FUNC="config_salt" fi @@ -7958,6 +6549,10 @@ install_opensuse_stable() { __PACKAGES="${__PACKAGES} salt-syndic" fi + if [ "$_INSTALL_SALT_API" -eq $BS_TRUE ]; then + __PACKAGES="${__PACKAGES} salt-api" + fi + # shellcheck disable=SC2086 __zypper_install $__PACKAGES || return 1 @@ -7965,12 +6560,7 @@ install_opensuse_stable() { } install_opensuse_git() { - if [ "${_POST_NEON_INSTALL}" -eq $BS_TRUE ]; then - __install_salt_from_repo_post_neon "${_PY_EXE}" || return 1 - return 0 - fi - - python setup.py ${SETUP_PY_INSTALL_ARGS} install --prefix=/usr || return 1 + __install_salt_from_repo "${_PY_EXE}" || return 1 return 0 } @@ -7988,7 +6578,7 @@ install_opensuse_stable_post() { [ $fname = "minion" ] && [ "$_INSTALL_MINION" -eq $BS_FALSE ] && continue [ $fname = "syndic" ] && [ "$_INSTALL_SYNDIC" -eq $BS_FALSE ] && continue - if [ -f /bin/systemctl ] || [ -f /usr/bin/systemctl ]; then + if [ "$_SYSTEMD_FUNCTIONAL" -eq $BS_TRUE ]; then systemctl is-enabled salt-$fname.service || (systemctl preset salt-$fname.service && systemctl enable salt-$fname.service) sleep 1 systemctl daemon-reload @@ -8011,7 +6601,7 @@ install_opensuse_git_post() { [ $fname = "minion" ] && [ "$_INSTALL_MINION" -eq $BS_FALSE ] && continue [ $fname = "syndic" ] && [ "$_INSTALL_SYNDIC" -eq $BS_FALSE ] && continue - if command -v systemctl; then + if [ "$_SYSTEMD_FUNCTIONAL" -eq $BS_TRUE ]; then use_usr_lib=$BS_FALSE if [ "${DISTRO_MAJOR_VERSION}" -ge 15 ]; then @@ -8052,7 +6642,7 @@ install_opensuse_onedir_post() { } install_opensuse_restart_daemons() { - [ $_START_DAEMONS -eq $BS_FALSE ] && return + [ "$_START_DAEMONS" -eq $BS_FALSE ] && return for fname in api master minion syndic; do # Skip salt-api since the service should be opt-in and not necessarily started on boot @@ -8063,7 +6653,7 @@ install_opensuse_restart_daemons() { [ $fname = "minion" ] && [ "$_INSTALL_MINION" -eq $BS_FALSE ] && continue [ $fname = "syndic" ] && [ "$_INSTALL_SYNDIC" -eq $BS_FALSE ] && continue - if [ -f /bin/systemctl ]; then + if [ "$_SYSTEMD_FUNCTIONAL" -eq $BS_TRUE ]; then systemctl stop salt-$fname > /dev/null 2>&1 systemctl start salt-$fname.service && continue echodebug "Failed to start salt-$fname using systemd" @@ -8079,7 +6669,7 @@ install_opensuse_restart_daemons() { } install_opensuse_check_services() { - if [ ! -f /bin/systemctl ]; then + if [ "$_SYSTEMD_FUNCTIONAL" -eq $BS_TRUE ]; then # Not running systemd!? Don't check! return 0 fi @@ -8113,11 +6703,10 @@ install_opensuse_15_stable_deps() { # SUSE only packages Salt for Python 3 on Leap 15 # Py3 is the default bootstrap install for Leap 15 - # However, git installs might specify "-x python2" - if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq 2 ]; then - PY_PKG_VER=2 - else - PY_PKG_VER=3 + # However, git installs that specify "-x python2" are disallowed + if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -ne 3 ]; then + echoerror "Python version is no longer supported, only Python 3" + return 1 fi # YAML module is used for generating custom master/minion configs @@ -8145,47 +6734,20 @@ install_opensuse_15_git_deps() { __git_clone_and_checkout || return 1 - if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq 2 ]; then - PY_PKG_VER=2 - else - PY_PKG_VER=3 + if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -ne 3 ]; then + echoerror "Python version is no longer supported, only Python 3" + return 1 fi - __PACKAGES="python${PY_PKG_VER}-xml" - - if [ "${_POST_NEON_INSTALL}" -eq $BS_FALSE ]; then - - # Py3 is the default bootstrap install for Leap 15 - # However, git installs might specify "-x python2" - if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq 2 ]; then - # This is required by some of the python2 packages below - __PACKAGES="${__PACKAGES} libpython2_7-1_0 python2-futures python-ipaddress" - fi - - __PACKAGES="${__PACKAGES} libzmq5 python${PY_PKG_VER}-Jinja2 python${PY_PKG_VER}-msgpack" - __PACKAGES="${__PACKAGES} python${PY_PKG_VER}-pycrypto python${PY_PKG_VER}-pyzmq" - - if [ -f "${_SALT_GIT_CHECKOUT_DIR}/requirements/base.txt" ]; then - # We're on the master branch, install whichever tornado is on the requirements file - __REQUIRED_TORNADO="$(grep tornado "${_SALT_GIT_CHECKOUT_DIR}/requirements/base.txt")" - if [ "${__REQUIRED_TORNADO}" != "" ]; then - __PACKAGES="${__PACKAGES} python${PY_PKG_VER}-tornado" - fi - fi - - if [ "$_INSTALL_CLOUD" -eq $BS_TRUE ]; then - __PACKAGES="${__PACKAGES} python${PY_PKG_VER}-apache-libcloud" - fi - else - __PACKAGES="${__PACKAGES} python${PY_PKG_VER}-devel python${PY_PKG_VER}-pip python${PY_PKG_VER}-setuptools gcc" - fi + PY_PKG_VER=3 + __PACKAGES="python${PY_PKG_VER}-xml python${PY_PKG_VER}-devel python${PY_PKG_VER}-pip python${PY_PKG_VER}-setuptools gcc" # shellcheck disable=SC2086 __zypper_install ${__PACKAGES} || return 1 # Let's trigger config_salt() if [ "$_TEMP_CONFIG_DIR" = "null" ]; then - _TEMP_CONFIG_DIR="${_SALT_GIT_CHECKOUT_DIR}/conf/" + _TEMP_CONFIG_DIR="${_SALT_GIT_CHECKOUT_DIR}/conf" CONFIG_SALT_FUNC="config_salt" fi @@ -8196,17 +6758,12 @@ install_opensuse_15_git() { # Py3 is the default bootstrap install for Leap 15 if [ -n "$_PY_EXE" ]; then - _PYEXE=${_PY_EXE} + _PYEXE="${_PY_EXE}" else _PYEXE=python3 fi - if [ "${_POST_NEON_INSTALL}" -eq $BS_TRUE ]; then - __install_salt_from_repo_post_neon "${_PY_EXE}" || return 1 - return 0 - fi - - ${_PYEXE} setup.py ${SETUP_PY_INSTALL_ARGS} install --prefix=/usr || return 1 + __install_salt_from_repo "${_PY_EXE}" || return 1 return 0 } @@ -8291,266 +6848,6 @@ install_suse_15_restart_daemons() { # ####################################################################################################################### -####################################################################################################################### -# -# SUSE Enterprise 12 -# - -install_suse_12_stable_deps() { - __opensuse_prep_install || return 1 - - # YAML module is used for generating custom master/minion configs - # requests is still used by many salt modules - # Salt needs python-zypp installed in order to use the zypper module - __PACKAGES="python-PyYAML python-requests python-zypp" - - if [ "$_INSTALL_CLOUD" -eq $BS_TRUE ]; then - __PACKAGES="${__PACKAGES} python-apache-libcloud" - fi - - # shellcheck disable=SC2086,SC2090 - __zypper_install ${__PACKAGES} || return 1 - - # SLES 11 SP3 ships with both python-M2Crypto-0.22.* and python-m2crypto-0.21 and we will be asked which - # we want to install, even with --non-interactive. - # Let's try to install the higher version first and then the lower one in case of failure - __zypper_install 'python-M2Crypto>=0.22' || __zypper_install 'python-M2Crypto>=0.21' || return 1 - - if [ "${_EXTRA_PACKAGES}" != "" ]; then - echoinfo "Installing the following extra packages as requested: ${_EXTRA_PACKAGES}" - # shellcheck disable=SC2086 - __zypper_install ${_EXTRA_PACKAGES} || return 1 - fi - - return 0 -} - -install_suse_12_git_deps() { - install_suse_12_stable_deps || return 1 - - if ! __check_command_exists git; then - __zypper_install git-core || return 1 - fi - - __git_clone_and_checkout || return 1 - - __PACKAGES="" - # shellcheck disable=SC2089 - __PACKAGES="${__PACKAGES} libzmq4 python-Jinja2 python-msgpack-python python-pycrypto" - __PACKAGES="${__PACKAGES} python-pyzmq python-xml" - - if [ -f "${_SALT_GIT_CHECKOUT_DIR}/requirements/base.txt" ]; then - # We're on the master branch, install whichever tornado is on the requirements file - __REQUIRED_TORNADO="$(grep tornado "${_SALT_GIT_CHECKOUT_DIR}/requirements/base.txt")" - if [ "${__REQUIRED_TORNADO}" != "" ]; then - __PACKAGES="${__PACKAGES} python-tornado" - fi - fi - - if [ "$_INSTALL_CLOUD" -eq $BS_TRUE ]; then - __PACKAGES="${__PACKAGES} python-apache-libcloud" - fi - - # shellcheck disable=SC2086 - __zypper_install ${__PACKAGES} || return 1 - - # Let's trigger config_salt() - if [ "$_TEMP_CONFIG_DIR" = "null" ]; then - _TEMP_CONFIG_DIR="${_SALT_GIT_CHECKOUT_DIR}/conf/" - CONFIG_SALT_FUNC="config_salt" - fi - - return 0 -} - -install_suse_12_onedir_deps() { - install_suse_12_stable_deps || return 1 - return 0 -} - -install_suse_12_stable() { - install_opensuse_stable || return 1 - return 0 -} - -install_suse_12_git() { - install_opensuse_git || return 1 - return 0 -} - -install_suse_12_onedir() { - install_opensuse_stable || return 1 - return 0 -} - -install_suse_12_stable_post() { - install_opensuse_stable_post || return 1 - return 0 -} - -install_suse_12_git_post() { - install_opensuse_git_post || return 1 - return 0 -} - -install_suse_12_onedir_post() { - install_opensuse_stable_post || return 1 - return 0 -} - -install_suse_12_restart_daemons() { - install_opensuse_restart_daemons || return 1 - return 0 -} - -# -# End of SUSE Enterprise 12 -# -####################################################################################################################### - -####################################################################################################################### -# -# SUSE Enterprise 11 -# - -install_suse_11_stable_deps() { - __opensuse_prep_install || return 1 - - # YAML module is used for generating custom master/minion configs - __PACKAGES="python-PyYAML" - - # shellcheck disable=SC2086,SC2090 - __zypper_install ${__PACKAGES} || return 1 - - # SLES 11 SP3 ships with both python-M2Crypto-0.22.* and python-m2crypto-0.21 and we will be asked which - # we want to install, even with --non-interactive. - # Let's try to install the higher version first and then the lower one in case of failure - __zypper_install 'python-M2Crypto>=0.22' || __zypper_install 'python-M2Crypto>=0.21' || return 1 - - if [ "${_EXTRA_PACKAGES}" != "" ]; then - echoinfo "Installing the following extra packages as requested: ${_EXTRA_PACKAGES}" - # shellcheck disable=SC2086 - __zypper_install ${_EXTRA_PACKAGES} || return 1 - fi - - return 0 -} - -install_suse_11_git_deps() { - install_suse_11_stable_deps || return 1 - - if ! __check_command_exists git; then - __zypper_install git || return 1 - fi - - __git_clone_and_checkout || return 1 - - __PACKAGES="" - # shellcheck disable=SC2089 - __PACKAGES="${__PACKAGES} libzmq4 python-Jinja2 python-msgpack-python python-pycrypto" - __PACKAGES="${__PACKAGES} python-pyzmq python-xml python-zypp" - - if [ -f "${_SALT_GIT_CHECKOUT_DIR}/requirements/base.txt" ]; then - # We're on the master branch, install whichever tornado is on the requirements file - __REQUIRED_TORNADO="$(grep tornado "${_SALT_GIT_CHECKOUT_DIR}/requirements/base.txt")" - if [ "${__REQUIRED_TORNADO}" != "" ]; then - __PACKAGES="${__PACKAGES} python-tornado" - fi - fi - - if [ "$_INSTALL_CLOUD" -eq $BS_TRUE ]; then - __PACKAGES="${__PACKAGES} python-apache-libcloud" - fi - - # shellcheck disable=SC2086 - __zypper_install ${__PACKAGES} || return 1 - - # Let's trigger config_salt() - if [ "$_TEMP_CONFIG_DIR" = "null" ]; then - _TEMP_CONFIG_DIR="${_SALT_GIT_CHECKOUT_DIR}/conf/" - CONFIG_SALT_FUNC="config_salt" - fi - - return 0 -} - -install_suse_11_onedir_deps() { - install_suse_11_stable_deps || return 1 - return 0 -} - -install_suse_11_stable() { - install_opensuse_stable || return 1 - return 0 -} - -install_suse_11_git() { - install_opensuse_git || return 1 - return 0 -} - -install_suse_11_onedir() { - install_opensuse_stable || return 1 - return 0 -} - -install_suse_11_stable_post() { - install_opensuse_stable_post || return 1 - return 0 -} - -install_suse_11_git_post() { - install_opensuse_git_post || return 1 - return 0 -} - -install_suse_11_onedir_post() { - install_opensuse_stable_post || return 1 - return 0 -} - -install_suse_11_restart_daemons() { - install_opensuse_restart_daemons || return 1 - return 0 -} - - -# -# End of SUSE Enterprise 11 -# -####################################################################################################################### - -####################################################################################################################### -# -# SUSE Enterprise General Functions -# - -# Used for both SLE 11 and 12 -install_suse_check_services() { - if [ ! -f /bin/systemctl ]; then - # Not running systemd!? Don't check! - return 0 - fi - - for fname in api master minion syndic; do - # Skip salt-api since the service should be opt-in and not necessarily started on boot - [ $fname = "api" ] && continue - - # Skip if not meant to be installed - [ $fname = "master" ] && [ "$_INSTALL_MASTER" -eq $BS_FALSE ] && continue - [ $fname = "minion" ] && [ "$_INSTALL_MINION" -eq $BS_FALSE ] && continue - [ $fname = "syndic" ] && [ "$_INSTALL_SYNDIC" -eq $BS_FALSE ] && continue - - __check_services_systemd salt-$fname || return 1 - done - - return 0 -} - -# -# End of SUSE Enterprise General Functions -# -####################################################################################################################### ####################################################################################################################### # @@ -8608,9 +6905,15 @@ __gentoo_pre_dep() { mkdir /etc/portage fi - # Enable Python 3.7 target for Salt Neon using GIT - if [ "${ITYPE}" = "git" ] && [ "${GIT_REV}" = "v3000" ]; then - EXTRA_PYTHON_TARGET=python3_7 + # Enable Python 3.10 target for Salt 3006 or later, otherwise 3.7 as previously, using GIT + if [ "${ITYPE}" = "git" ]; then + GIT_REV_MAJOR=$(echo "${GIT_REV}" | awk -F "." '{print $1}') + if [ "${GIT_REV_MAJOR}" = "v3006" ] || [ "${GIT_REV_MAJOR}" = "v3007" ]; then + EXTRA_PYTHON_TARGET=python3_10 + else + # assume pre-3006, so leave it as Python 3.7 + EXTRA_PYTHON_TARGET=python3_7 + fi fi if [ -n "${EXTRA_PYTHON_TARGET:-}" ]; then @@ -8626,7 +6929,6 @@ __gentoo_post_dep() { echoinfo "Installing the following extra packages as requested: ${_EXTRA_PACKAGES}" # shellcheck disable=SC2086 __autounmask ${_EXTRA_PACKAGES} || return 1 - # shellcheck disable=SC2086 __emerge ${_EXTRA_PACKAGES} || return 1 fi @@ -8670,27 +6972,6 @@ install_gentoo_git_deps() { GENTOO_GIT_PACKAGES="${GENTOO_GIT_PACKAGES:-} dev-vcs/git" fi - # Salt <3000 does not automatically install dependencies. It has to be done manually. - if [ "${_POST_NEON_INSTALL}" -eq $BS_FALSE ]; then - GENTOO_GIT_PACKAGES="${GENTOO_GIT_PACKAGES:-} - sys-apps/pciutils - dev-python/pyyaml - dev-python/pyzmq - dev-python/libnacl - dev-python/pycryptodome - dev-python/py - dev-python/requests - /etc/paths.d/salt fi @@ -9159,17 +7403,20 @@ install_macosx_stable_post() { } install_macosx_onedir_post() { + install_macosx_stable_post || return 1 return 0 } install_macosx_git_post() { + install_macosx_stable_post || return 1 return 0 } install_macosx_restart_daemons() { - [ $_START_DAEMONS -eq $BS_FALSE ] && return + + [ "$_START_DAEMONS" -eq $BS_FALSE ] && return if [ "$_INSTALL_MINION" -eq $BS_TRUE ]; then /bin/launchctl unload -w /Library/LaunchDaemons/com.saltstack.salt.minion.plist || return 1 @@ -9194,6 +7441,7 @@ install_macosx_restart_daemons() { # the -c options is passed. # config_salt() { + # If the configuration directory is not passed, return [ "$_TEMP_CONFIG_DIR" = "null" ] && return @@ -9237,7 +7485,7 @@ config_salt() { # Check if a minion config file already exists and move to .bak if needed if [ -f "$_SALT_ETC_DIR/minion" ] && [ "$CREATE_BAK" -eq "$BS_TRUE" ]; then - __movefile "$_SALT_ETC_DIR/minion" "$_SALT_ETC_DIR/minion.bak" $BS_TRUE || return 1 + __movefile "$_SALT_ETC_DIR/minion" "$_SALT_ETC_DIR/minion.bak" "$BS_TRUE" || return 1 CONFIGURED_ANYTHING=$BS_TRUE fi @@ -9280,8 +7528,11 @@ config_salt() { if [ "$_INSTALL_SYNDIC" -eq $BS_TRUE ] && [ "$_CONFIG_ONLY" -eq $BS_TRUE ]; then OVERWRITE_MASTER_CONFIGS=$BS_TRUE fi + if [ "$_INSTALL_SALT_API" -eq $BS_TRUE ] && [ "$_CONFIG_ONLY" -eq $BS_TRUE ]; then + OVERWRITE_MASTER_CONFIGS=$BS_TRUE + fi - if [ "$_INSTALL_MASTER" -eq $BS_TRUE ] || [ "$_INSTALL_SYNDIC" -eq $BS_TRUE ] || [ "$OVERWRITE_MASTER_CONFIGS" -eq $BS_TRUE ] || [ "$_CUSTOM_MASTER_CONFIG" != "null" ]; then + if [ "$_INSTALL_MASTER" -eq $BS_TRUE ] || [ "$_INSTALL_SYNDIC" -eq $BS_TRUE ] || [ "$_INSTALL_SALT_API" -eq $BS_TRUE ] || [ "$OVERWRITE_MASTER_CONFIGS" -eq $BS_TRUE ] || [ "$_CUSTOM_MASTER_CONFIG" != "null" ]; then # Create the PKI directory [ -d "$_PKI_DIR/master" ] || (mkdir -p "$_PKI_DIR/master" && chmod 700 "$_PKI_DIR/master") || return 1 @@ -9290,7 +7541,7 @@ config_salt() { # Check if a master config file already exists and move to .bak if needed if [ -f "$_SALT_ETC_DIR/master" ] && [ "$CREATE_BAK" -eq "$BS_TRUE" ]; then - __movefile "$_SALT_ETC_DIR/master" "$_SALT_ETC_DIR/master.bak" $BS_TRUE || return 1 + __movefile "$_SALT_ETC_DIR/master" "$_SALT_ETC_DIR/master.bak" "$BS_TRUE" || return 1 CONFIGURED_ANYTHING=$BS_TRUE fi @@ -9304,7 +7555,7 @@ config_salt() { CONFIGURED_ANYTHING=$BS_TRUE fi - # Copy the master's keys if found + # Copy the masters keys if found if [ -f "$_TEMP_CONFIG_DIR/master.pem" ]; then __movefile "$_TEMP_CONFIG_DIR/master.pem" "$_PKI_DIR/master/" || return 1 chmod 400 "$_PKI_DIR/master/master.pem" || return 1 @@ -9334,7 +7585,7 @@ config_salt() { done fi - if [ "$_CONFIG_ONLY" -eq $BS_TRUE ] && [ $CONFIGURED_ANYTHING -eq $BS_FALSE ]; then + if [ "$_CONFIG_ONLY" -eq $BS_TRUE ] && [ "$CONFIGURED_ANYTHING" -eq $BS_FALSE ]; then echowarn "No configuration or keys were copied over. No configuration was done!" exit 0 fi @@ -9352,6 +7603,7 @@ config_salt() { # as long as the -k option is passed. # preseed_master() { + # Create the PKI directory if [ "$(find "$_TEMP_KEYS_DIR" -maxdepth 1 -type f | wc -l)" -lt 1 ]; then @@ -9386,6 +7638,7 @@ preseed_master() { # This function checks if all of the installed daemons are running or not. # daemons_running_onedir() { + [ "$_START_DAEMONS" -eq $BS_FALSE ] && return 0 FAILED_DAEMONS=0 @@ -9423,6 +7676,7 @@ daemons_running_onedir() { # This function checks if all of the installed daemons are running or not. # daemons_running() { + [ "$_START_DAEMONS" -eq $BS_FALSE ] && return 0 FAILED_DAEMONS=0 @@ -9437,7 +7691,7 @@ daemons_running() { # shellcheck disable=SC2009 if [ "${DISTRO_NAME}" = "SmartOS" ]; then - if [ "$(svcs -Ho STA salt-$fname)" != "ON" ]; then + if [ "$(svcs -Ho STA "salt-$fname")" != "ON" ]; then echoerror "salt-$fname was not found running" FAILED_DAEMONS=$((FAILED_DAEMONS + 1)) fi @@ -9447,7 +7701,7 @@ daemons_running() { fi done - return $FAILED_DAEMONS + return ${FAILED_DAEMONS} } # # Ended daemons running check function @@ -9470,9 +7724,10 @@ if [ ${_NO_DEPS} -eq $BS_FALSE ]; then fi DEPS_INSTALL_FUNC="null" -for FUNC_NAME in $(__strip_duplicates "$DEP_FUNC_NAMES"); do - if __function_defined "$FUNC_NAME"; then - DEPS_INSTALL_FUNC="$FUNC_NAME" +# shellcheck disable=SC2086 +for FUNC_NAME in $(__strip_duplicates ${DEP_FUNC_NAMES}); do + if __function_defined ${FUNC_NAME}; then + DEPS_INSTALL_FUNC=${FUNC_NAME} break fi done @@ -9582,7 +7837,7 @@ for FUNC_NAME in $(__strip_duplicates "$DAEMONS_RUNNING_FUNC_NAMES"); do done echodebug "DAEMONS_RUNNING_FUNC=${DAEMONS_RUNNING_FUNC}" -# Let's get the check services function +# Lets get the check services function if [ ${_DISABLE_SALT_CHECKS} -eq $BS_FALSE ]; then CHECK_SERVICES_FUNC_NAMES="install_${DISTRO_NAME_L}${PREFIXED_DISTRO_MAJOR_VERSION}_${ITYPE}_check_services" CHECK_SERVICES_FUNC_NAMES="$CHECK_SERVICES_FUNC_NAMES install_${DISTRO_NAME_L}${PREFIXED_DISTRO_MAJOR_VERSION}${PREFIXED_DISTRO_MINOR_VERSION}_${ITYPE}_check_services" @@ -9615,7 +7870,7 @@ fi # Install dependencies -if [ ${_NO_DEPS} -eq $BS_FALSE ] && [ $_CONFIG_ONLY -eq $BS_FALSE ]; then +if [ "${_NO_DEPS}" -eq $BS_FALSE ] && [ "$_CONFIG_ONLY" -eq $BS_FALSE ]; then # Only execute function is not in config mode only echoinfo "Running ${DEPS_INSTALL_FUNC}()" if ! ${DEPS_INSTALL_FUNC}; then @@ -9639,7 +7894,7 @@ if [ "$_CUSTOM_MASTER_CONFIG" != "null" ] || [ "$_CUSTOM_MINION_CONFIG" != "null _TEMP_CONFIG_DIR="$_SALT_ETC_DIR" fi - if [ ${_NO_DEPS} -eq $BS_FALSE ] && [ $_CONFIG_ONLY -eq $BS_TRUE ]; then + if [ "${_NO_DEPS}" -eq $BS_FALSE ] && [ "$_CONFIG_ONLY" -eq $BS_TRUE ]; then # Execute function to satisfy dependencies for configuration step echoinfo "Running ${DEPS_INSTALL_FUNC}()" if ! ${DEPS_INSTALL_FUNC}; then @@ -9713,6 +7968,7 @@ fi if [ "$STARTDAEMONS_INSTALL_FUNC" != "null" ] && [ ${_START_DAEMONS} -eq $BS_TRUE ]; then echoinfo "Running ${STARTDAEMONS_INSTALL_FUNC}()" echodebug "Waiting ${_SLEEP} seconds for processes to settle before checking for them" + # shellcheck disable=SC2086 sleep ${_SLEEP} if ! ${STARTDAEMONS_INSTALL_FUNC}; then echoerror "Failed to run ${STARTDAEMONS_INSTALL_FUNC}()!!!" @@ -9724,6 +7980,7 @@ fi if [ "$DAEMONS_RUNNING_FUNC" != "null" ] && [ ${_START_DAEMONS} -eq $BS_TRUE ]; then echoinfo "Running ${DAEMONS_RUNNING_FUNC}()" echodebug "Waiting ${_SLEEP} seconds for processes to settle before checking for them" + # shellcheck disable=SC2086 sleep ${_SLEEP} # Sleep a little bit to let daemons start if ! ${DAEMONS_RUNNING_FUNC}; then echoerror "Failed to run ${DAEMONS_RUNNING_FUNC}()!!!" @@ -9746,7 +8003,7 @@ if [ "$DAEMONS_RUNNING_FUNC" != "null" ] && [ ${_START_DAEMONS} -eq $BS_TRUE ]; echodebug "Running salt-$fname by hand outputs: $(nohup salt-$fname -l debug)" - [ ! -f /var/log/salt/$fname ] && echodebug "/var/log/salt/$fname does not exist. Can't cat its contents!" && continue + [ ! -f "/var/log/salt/$fname" ] && echodebug "/var/log/salt/$fname does not exist. Can't cat its contents!" && continue echodebug "DAEMON LOGS for $fname:" echodebug "$(cat /var/log/salt/$fname)" From d4ed34d0ea7041b0bd87a1a16261fc470022b5d1 Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Mon, 11 Nov 2024 11:56:19 -0500 Subject: [PATCH 157/175] connect --- salt/nginx/etc/nginx.conf | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/salt/nginx/etc/nginx.conf b/salt/nginx/etc/nginx.conf index 9eda44e73..09c40624e 100644 --- a/salt/nginx/etc/nginx.conf +++ b/salt/nginx/etc/nginx.conf @@ -235,7 +235,7 @@ http { location /connect/ { if ($http_authorization !~ "Bearer .*") { - return 403; + return 401; } rewrite /connect/(.*) /api/$1 break; proxy_pass http://{{ GLOBALS.manager }}:9822/; @@ -360,6 +360,9 @@ http { error_page 429 = @error429; location @error401 { + if ($request_uri ~* (^/connect/.*|^/oauth2/.*)) { + return 401; + } if ($request_uri ~* ^/(?!(^/api/.*))) { add_header Set-Cookie "AUTH_REDIRECT=$request_uri;Path=/;Max-Age=14400"; } @@ -367,6 +370,9 @@ http { } location @error403 { + if ($request_uri ~* (^/connect/.*|^/oauth2/.*)) { + return 403; + } add_header Set-Cookie "ory_kratos_session=;Path=/;Max-Age=0;expires=Thu, 01 Jan 1970 00:00:00 GMT;"; return 302 /auth/self-service/login/browser; } From 6dbe0645e5007d23b21747eefad91354096eee8c Mon Sep 17 00:00:00 2001 From: reyesj2 <94730068+reyesj2@users.noreply.github.com> Date: Mon, 11 Nov 2024 13:51:48 -0600 Subject: [PATCH 158/175] use auto_expand_replica, configure ilm for so-case* & so-detection* Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com> --- salt/elasticsearch/defaults.yaml | 16 ++++++++++++++++ salt/manager/tools/sbin/soup | 11 ++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/salt/elasticsearch/defaults.yaml b/salt/elasticsearch/defaults.yaml index 133c333e1..84e1731d5 100644 --- a/salt/elasticsearch/defaults.yaml +++ b/salt/elasticsearch/defaults.yaml @@ -111,15 +111,23 @@ elasticsearch: match_mapping_type: string settings: index: + lifecycle: + name: so-case-logs mapping: total_fields: limit: 1500 number_of_replicas: 0 + auto_expand_replicas: 0-2 number_of_shards: 1 refresh_interval: 30s sort: field: '@timestamp' order: desc + policy: + phases: + hot: + actions: {} + min_age: 0ms so-common: close: 30 delete: 365 @@ -258,15 +266,23 @@ elasticsearch: match_mapping_type: string settings: index: + lifecycle: + name: so-detection-logs mapping: total_fields: limit: 1500 number_of_replicas: 0 + auto_expand_replicas: 0-2 number_of_shards: 1 refresh_interval: 30s sort: field: '@timestamp' order: desc + policy: + phases: + hot: + actions: {} + min_age: 0ms so-endgame: index_sorting: false index_template: diff --git a/salt/manager/tools/sbin/soup b/salt/manager/tools/sbin/soup index bd2db98d7..6fa4c44ab 100755 --- a/salt/manager/tools/sbin/soup +++ b/salt/manager/tools/sbin/soup @@ -520,7 +520,16 @@ post_to_2.4.110() { } post_to_2.4.120() { - echo "Nothing to apply" + for idx in "so-detection" "so-detectionhistory" "so-case" "so-casehistory"; do + JSON_STRING=$( jq -n \ + --arg INDEX_NAME "$idx" \ + '{"settings": {"index.auto_expand_replicas":"0-2","index.lifecycle.name":($INDEX_NAME) + "-logs"}}' + ) + echo "Updating $idx index settings" + retry 5 15 "so-elasticsearch-query $idx/_settings -d "$JSON_STRING" -XPUT| grep '{\"acknowledged\":true}'" + echo "" + done + POSTVERSION=2.4.120 } From 69245e4fad9c6e30da7df188cd7612919072eadb Mon Sep 17 00:00:00 2001 From: m0duspwnens Date: Mon, 11 Nov 2024 15:31:57 -0500 Subject: [PATCH 159/175] have soup_scripts remove old salt repo file --- salt/common/soup_scripts.sls | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/salt/common/soup_scripts.sls b/salt/common/soup_scripts.sls index 508b95b67..da9fd1a90 100644 --- a/salt/common/soup_scripts.sls +++ b/salt/common/soup_scripts.sls @@ -11,6 +11,7 @@ {% else %} {% set UPDATE_DIR='/tmp/sogh/securityonion' %} {% endif %} +{% set SOVERSION = salt['file.read']('/etc/version').strip() %} remove_common_soup: file.absent: @@ -107,6 +108,17 @@ copy_so-repo-sync_sbin: - force: True - preserve: True +{# this is added in 2.4.120 to remove salt repo files pointing to saltproject.io to accomodate the move to broadcom and new bootstrap-salt script #} +{% if salt['pkg.version_cmp'](SOVERSION, '2.4.120') == -1 %} +{% set saltrepofile = '/etc/yum.repos.d/salt.repo' %} +{% if grains.os_family == 'Debian' %} +{% set saltrepofile = '/etc/apt/sources.list.d/salt.list' %} +{% endif %} +remove_saltproject_io_repo: + file.absent: + - name: {{ saltrepofile }} +{% endif %} + {% else %} fix_23_soup_sbin: cmd.run: From 43f7989d731dcb0e542a6c68eb6baeb4b3fb037b Mon Sep 17 00:00:00 2001 From: reyesj2 <94730068+reyesj2@users.noreply.github.com> Date: Mon, 11 Nov 2024 14:47:17 -0600 Subject: [PATCH 160/175] () Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com> --- salt/manager/tools/sbin/soup | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/salt/manager/tools/sbin/soup b/salt/manager/tools/sbin/soup index 6fa4c44ab..df2e83f5d 100755 --- a/salt/manager/tools/sbin/soup +++ b/salt/manager/tools/sbin/soup @@ -523,7 +523,7 @@ post_to_2.4.120() { for idx in "so-detection" "so-detectionhistory" "so-case" "so-casehistory"; do JSON_STRING=$( jq -n \ --arg INDEX_NAME "$idx" \ - '{"settings": {"index.auto_expand_replicas":"0-2","index.lifecycle.name":($INDEX_NAME) + "-logs"}}' + '{"settings": {"index.auto_expand_replicas":"0-2","index.lifecycle.name":($INDEX_NAME + "-logs")}}' ) echo "Updating $idx index settings" retry 5 15 "so-elasticsearch-query $idx/_settings -d "$JSON_STRING" -XPUT| grep '{\"acknowledged\":true}'" From 9e5d0e88de01a5572c3a97d5e9268d3131b17a6a Mon Sep 17 00:00:00 2001 From: m0duspwnens Date: Mon, 11 Nov 2024 15:56:01 -0500 Subject: [PATCH 161/175] fix soversion path --- salt/common/soup_scripts.sls | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/salt/common/soup_scripts.sls b/salt/common/soup_scripts.sls index da9fd1a90..c5b75b0f2 100644 --- a/salt/common/soup_scripts.sls +++ b/salt/common/soup_scripts.sls @@ -11,7 +11,7 @@ {% else %} {% set UPDATE_DIR='/tmp/sogh/securityonion' %} {% endif %} -{% set SOVERSION = salt['file.read']('/etc/version').strip() %} +{% set SOVERSION = salt['file.read']('/etc/soversion').strip() %} remove_common_soup: file.absent: From ce9bd18947745b337da3898dd70dc4e2022c3a3a Mon Sep 17 00:00:00 2001 From: reyesj2 <94730068+reyesj2@users.noreply.github.com> Date: Mon, 11 Nov 2024 14:59:42 -0600 Subject: [PATCH 162/175] no error when versionlock dir exists after re-running soup Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com> --- salt/manager/tools/sbin/soup | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/salt/manager/tools/sbin/soup b/salt/manager/tools/sbin/soup index df2e83f5d..d5aa26bae 100755 --- a/salt/manager/tools/sbin/soup +++ b/salt/manager/tools/sbin/soup @@ -725,7 +725,7 @@ up_to_2.4.110() { up_to_2.4.120() { # this is needed for the new versionlock state - mkdir /opt/so/saltstack/local/pillar/versionlock + mkdir -p /opt/so/saltstack/local/pillar/versionlock touch /opt/so/saltstack/local/pillar/versionlock/adv_versionlock.sls /opt/so/saltstack/local/pillar/versionlock/soc_versionlock.sls # New Grid Integration added this release From 5b74a55c3ce574f373a7bd389e80880544ddc838 Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Mon, 11 Nov 2024 17:21:42 -0500 Subject: [PATCH 163/175] ensure roles file exists since no longer syncing clients to es --- salt/soc/config.sls | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/salt/soc/config.sls b/salt/soc/config.sls index 129d669d3..4134d8b77 100644 --- a/salt/soc/config.sls +++ b/salt/soc/config.sls @@ -177,10 +177,13 @@ socusersroles: - sls: manager.sync_es_users socclientsroles: - file.exists: + file.managed: - name: /opt/so/conf/soc/soc_clients_roles - - require: - - sls: manager.sync_es_users + - user: 939 + - group: 939 + - mode: 600 + - allow_empty: true + - create: true socuploaddir: file.directory: From aaf9f536956b1206a4f51ebb0cac06bf19f77588 Mon Sep 17 00:00:00 2001 From: reyesj2 <94730068+reyesj2@users.noreply.github.com> Date: Mon, 11 Nov 2024 22:40:06 -0600 Subject: [PATCH 164/175] update soup; check for index before applying new index setting Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com> --- salt/manager/tools/sbin/soup | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/salt/manager/tools/sbin/soup b/salt/manager/tools/sbin/soup index d5aa26bae..98a7f9402 100755 --- a/salt/manager/tools/sbin/soup +++ b/salt/manager/tools/sbin/soup @@ -520,16 +520,7 @@ post_to_2.4.110() { } post_to_2.4.120() { - for idx in "so-detection" "so-detectionhistory" "so-case" "so-casehistory"; do - JSON_STRING=$( jq -n \ - --arg INDEX_NAME "$idx" \ - '{"settings": {"index.auto_expand_replicas":"0-2","index.lifecycle.name":($INDEX_NAME + "-logs")}}' - ) - echo "Updating $idx index settings" - retry 5 15 "so-elasticsearch-query $idx/_settings -d "$JSON_STRING" -XPUT| grep '{\"acknowledged\":true}'" - echo "" - done - + update_elasticsearch_index_settings POSTVERSION=2.4.120 } @@ -947,6 +938,23 @@ update_airgap_repo() { createrepo /nsm/repo } +update_elasticsearch_index_settings() { + # Update managed indices to reflect latest index template + for idx in "so-detection" "so-detectionhistory" "so-case" "so-casehistory"; do + JSON_STRING=$( jq -n --arg INDEX_NAME "$idx" '{"settings": {"index.auto_expand_replicas":"0-2","index.lifecycle.name":($INDEX_NAME + "-logs")}}') + echo "Checking if index \"$idx\" exists" + exists=$(curl -K /opt/so/conf/elasticsearch/curl.config -s -o /dev/null -w "%{http_code}" -k -L -H "Content-Type: application/json" "https://localhost:9200/$idx") + if [ $exists -eq 200 ]; then + echo "$idx index found..." + echo "Updating $idx index settings" + so-elasticsearch-query $idx/_settings -d "$JSON_STRING" -XPUT + echo -e "\n" + else + echo -e "Skipping $idx... index does not exist\n" + fi + done +} + update_salt_mine() { echo "Populating the mine with mine_functions for each host." set +e From 33fdc239659ef2022a2fd82c4c5ab09088b04776 Mon Sep 17 00:00:00 2001 From: m0duspwnens Date: Tue, 12 Nov 2024 11:31:42 -0500 Subject: [PATCH 165/175] remove salt repo files created by saltbootstrap --- salt/common/soup_scripts.sls | 2 +- salt/salt/minion.sls | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/salt/common/soup_scripts.sls b/salt/common/soup_scripts.sls index c5b75b0f2..60215f949 100644 --- a/salt/common/soup_scripts.sls +++ b/salt/common/soup_scripts.sls @@ -114,7 +114,7 @@ copy_so-repo-sync_sbin: {% if grains.os_family == 'Debian' %} {% set saltrepofile = '/etc/apt/sources.list.d/salt.list' %} {% endif %} -remove_saltproject_io_repo: +remove_saltproject_io_repo_manager: file.absent: - name: {{ saltrepofile }} {% endif %} diff --git a/salt/salt/minion.sls b/salt/salt/minion.sls index a5953e8e1..ee7c1f14c 100644 --- a/salt/salt/minion.sls +++ b/salt/salt/minion.sls @@ -19,6 +19,17 @@ include: {% if INSTALLEDSALTVERSION|string != SALTVERSION|string %} +{# this is added in 2.4.120 to remove salt repo files pointing to saltproject.io to accomodate the move to broadcom and new bootstrap-salt script #} +{% if salt['pkg.version_cmp'](GLOBALS.so_version, '2.4.120') == -1 %} +{% set saltrepofile = '/etc/yum.repos.d/salt.repo' %} +{% if grains.os_family == 'Debian' %} +{% set saltrepofile = '/etc/apt/sources.list.d/salt.list' %} +{% endif %} +remove_saltproject_io_repo_minion: + file.absent: + - name: {{ saltrepofile }} +{% endif %} + unhold_salt_packages: pkg.unheld: - pkgs: From a4d763c1e571152d82b0e4c48a05d7f7a316932a Mon Sep 17 00:00:00 2001 From: reyesj2 <94730068+reyesj2@users.noreply.github.com> Date: Tue, 12 Nov 2024 14:50:04 -0600 Subject: [PATCH 166/175] use curl vs es query to force PUT request Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com> --- salt/manager/tools/sbin/soup | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/salt/manager/tools/sbin/soup b/salt/manager/tools/sbin/soup index 98a7f9402..3a1e60fd2 100755 --- a/salt/manager/tools/sbin/soup +++ b/salt/manager/tools/sbin/soup @@ -947,7 +947,7 @@ update_elasticsearch_index_settings() { if [ $exists -eq 200 ]; then echo "$idx index found..." echo "Updating $idx index settings" - so-elasticsearch-query $idx/_settings -d "$JSON_STRING" -XPUT + curl -K /opt/so/conf/elasticsearch/curl.config -s -k -L -H "Content-Type: application/json" "https://localhost:9200/$idx/_settings" -d "$JSON_STRING" -XPUT echo -e "\n" else echo -e "Skipping $idx... index does not exist\n" From f3a88de0c393568aed54ef361ae3de9cac685805 Mon Sep 17 00:00:00 2001 From: reyesj2 <94730068+reyesj2@users.noreply.github.com> Date: Tue, 12 Nov 2024 16:28:01 -0600 Subject: [PATCH 167/175] so-(case/detection)history uses same ilm policy as so-(case/detection) Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com> --- salt/manager/tools/sbin/soup | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/salt/manager/tools/sbin/soup b/salt/manager/tools/sbin/soup index 3a1e60fd2..96d955422 100755 --- a/salt/manager/tools/sbin/soup +++ b/salt/manager/tools/sbin/soup @@ -941,7 +941,14 @@ update_airgap_repo() { update_elasticsearch_index_settings() { # Update managed indices to reflect latest index template for idx in "so-detection" "so-detectionhistory" "so-case" "so-casehistory"; do - JSON_STRING=$( jq -n --arg INDEX_NAME "$idx" '{"settings": {"index.auto_expand_replicas":"0-2","index.lifecycle.name":($INDEX_NAME + "-logs")}}') + ilm_name=$idx + if [ "$idx" = "so-detectionhistory" ]; then + ilm_name="so-detection" + elif [ "$idx" = "so-casehistory" ]; then + ilm_name="so-case" + fi + JSON_STRING=$( jq -n --arg ILM_NAME "$ilm_name" '{"settings": {"index.auto_expand_replicas":"0-2","index.lifecycle.name":($ILM_NAME + "-logs")}}') + echo "Checking if index \"$idx\" exists" exists=$(curl -K /opt/so/conf/elasticsearch/curl.config -s -o /dev/null -w "%{http_code}" -k -L -H "Content-Type: application/json" "https://localhost:9200/$idx") if [ $exists -eq 200 ]; then From ba7a6dbbf0cbad5dfd6dd8116f5268c37bdb11ed Mon Sep 17 00:00:00 2001 From: reyesj2 <94730068+reyesj2@users.noreply.github.com> Date: Tue, 12 Nov 2024 18:37:46 -0600 Subject: [PATCH 168/175] Remove tuning/defaults "Remove in v7.1 The policy/tuning/defaults package is deprecated. The options set here are now the defaults for Zeek in general." Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com> --- salt/zeek/defaults.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/salt/zeek/defaults.yaml b/salt/zeek/defaults.yaml index 2621c2738..c0d873917 100644 --- a/salt/zeek/defaults.yaml +++ b/salt/zeek/defaults.yaml @@ -26,7 +26,6 @@ zeek: local: load: - misc/loaded-scripts - - tuning/defaults - misc/capture-loss - frameworks/software/vulnerable - frameworks/software/version-changes From b1ddaa72116b64d5bdeea681851a565162b3a558 Mon Sep 17 00:00:00 2001 From: m0duspwnens Date: Thu, 14 Nov 2024 09:07:41 -0500 Subject: [PATCH 169/175] support installing specified version for rhel variants. remove bootstrap -x python3 since not needed --- salt/manager/tools/sbin/soup | 6 +++--- salt/salt/map.jinja | 4 ++-- salt/salt/scripts/bootstrap-salt.sh | 13 +++++++------ 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/salt/manager/tools/sbin/soup b/salt/manager/tools/sbin/soup index bd2db98d7..222adae95 100755 --- a/salt/manager/tools/sbin/soup +++ b/salt/manager/tools/sbin/soup @@ -1003,12 +1003,12 @@ upgrade_salt() { # if oracle run with -r to ignore repos set by bootstrap if [[ $OS == 'oracle' ]]; then run_check_net_err \ - "sh $UPDATE_DIR/salt/salt/scripts/bootstrap-salt.sh -X -r -F -M -x python3 stable \"$NEWSALTVERSION\"" \ + "sh $UPDATE_DIR/salt/salt/scripts/bootstrap-salt.sh -X -r -F -M stable \"$NEWSALTVERSION\"" \ "Could not update salt, please check $SOUP_LOG for details." # if another rhel family variant we want to run without -r to allow the bootstrap script to manage repos else run_check_net_err \ - "sh $UPDATE_DIR/salt/salt/scripts/bootstrap-salt.sh -X -F -M -x python3 stable \"$NEWSALTVERSION\"" \ + "sh $UPDATE_DIR/salt/salt/scripts/bootstrap-salt.sh -X -F -M stable \"$NEWSALTVERSION\"" \ "Could not update salt, please check $SOUP_LOG for details." fi set -e @@ -1028,7 +1028,7 @@ upgrade_salt() { echo "" set +e run_check_net_err \ - "sh $UPDATE_DIR/salt/salt/scripts/bootstrap-salt.sh -X -F -M -x python3 stable \"$NEWSALTVERSION\"" \ + "sh $UPDATE_DIR/salt/salt/scripts/bootstrap-salt.sh -X -F -M stable \"$NEWSALTVERSION\"" \ "Could not update salt, please check $SOUP_LOG for details." set -e echo "Applying apt hold for Salt." diff --git a/salt/salt/map.jinja b/salt/salt/map.jinja index cc388edb4..8feb06763 100644 --- a/salt/salt/map.jinja +++ b/salt/salt/map.jinja @@ -15,9 +15,9 @@ {% if grains.saltversion|string != SALTVERSION|string %} {% if grains.os_family|lower == 'redhat' %} - {% set UPGRADECOMMAND = 'yum clean all ; /usr/sbin/bootstrap-salt.sh -s 120 -r -F -x python3 stable ' ~ SALTVERSION %} + {% set UPGRADECOMMAND = 'yum clean all ; /usr/sbin/bootstrap-salt.sh -s 120 -r -F stable ' ~ SALTVERSION %} {% elif grains.os_family|lower == 'debian' %} - {% set UPGRADECOMMAND = '/usr/sbin/bootstrap-salt.sh -s 120 -F -x python3 stable ' ~ SALTVERSION %} + {% set UPGRADECOMMAND = '/usr/sbin/bootstrap-salt.sh -s 120 -F stable ' ~ SALTVERSION %} {% endif %} {% else %} {% set UPGRADECOMMAND = 'echo Already running Salt Minion version ' ~ SALTVERSION %} diff --git a/salt/salt/scripts/bootstrap-salt.sh b/salt/salt/scripts/bootstrap-salt.sh index e6b25f2d3..4e65008dc 100644 --- a/salt/salt/scripts/bootstrap-salt.sh +++ b/salt/salt/scripts/bootstrap-salt.sh @@ -4420,29 +4420,30 @@ install_centos_onedir_deps() { } install_centos_onedir() { + yum clean metadata + yum makecache __PACKAGES="" if [ "$_INSTALL_CLOUD" -eq $BS_TRUE ];then - __PACKAGES="${__PACKAGES} salt-cloud" + __PACKAGES="${__PACKAGES} salt-cloud-${STABLE_REV}" fi if [ "$_INSTALL_MASTER" -eq $BS_TRUE ];then - __PACKAGES="${__PACKAGES} salt-master" + __PACKAGES="${__PACKAGES} salt-master-${STABLE_REV}" fi if [ "$_INSTALL_MINION" -eq $BS_TRUE ]; then - __PACKAGES="${__PACKAGES} salt-minion" + __PACKAGES="${__PACKAGES} salt-minion-${STABLE_REV}" fi if [ "$_INSTALL_SYNDIC" -eq $BS_TRUE ];then - __PACKAGES="${__PACKAGES} salt-syndic" + __PACKAGES="${__PACKAGES} salt-syndic-${STABLE_REV}" fi if [ "$_INSTALL_SALT_API" -eq $BS_TRUE ]; then - __PACKAGES="${__PACKAGES} salt-api" + __PACKAGES="${__PACKAGES} salt-api-${STABLE_REV}" fi # shellcheck disable=SC2086 __yum_install_noinput ${__PACKAGES} || return 1 - return 0 } From 1113c3924fc18aeb332e92881880cbde3d9aaf91 Mon Sep 17 00:00:00 2001 From: reyesj2 <94730068+reyesj2@users.noreply.github.com> Date: Thu, 14 Nov 2024 09:09:23 -0600 Subject: [PATCH 170/175] zeek http2 Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com> --- salt/elasticsearch/files/ingest/zeek.http2 | 37 ++++++++++++++++++++++ salt/kibana/files/saved_objects.ndjson | 4 +-- salt/soc/defaults.yaml | 12 +++---- salt/zeek/defaults.yaml | 1 + 4 files changed, 46 insertions(+), 8 deletions(-) create mode 100644 salt/elasticsearch/files/ingest/zeek.http2 diff --git a/salt/elasticsearch/files/ingest/zeek.http2 b/salt/elasticsearch/files/ingest/zeek.http2 new file mode 100644 index 000000000..eeeecef8c --- /dev/null +++ b/salt/elasticsearch/files/ingest/zeek.http2 @@ -0,0 +1,37 @@ +{ + "description" : "zeek.http2", + "processors" : [ + { "set": { "field": "event.dataset", "value": "http2" } }, + { "set": { "field": "network.transport", "value": "tcp" } }, + { "json": { "field": "message", "target_field": "message2", "ignore_failure": true } }, + { "rename": { "field": "message2.trans_depth", "target_field": "http.trans_depth", "ignore_missing": true } }, + { "rename": { "field": "message2.method", "target_field": "http.method", "ignore_missing": true } }, + { "rename": { "field": "message2.host", "target_field": "http.virtual_host", "ignore_missing": true } }, + { "rename": { "field": "message2.uri", "target_field": "http.uri", "ignore_missing": true } }, + { "rename": { "field": "message2.referrer", "target_field": "http.referrer", "ignore_missing": true } }, + { "rename": { "field": "message2.version", "target_field": "http.version", "ignore_missing": true } }, + { "rename": { "field": "message2.user_agent", "target_field": "http.useragent", "ignore_missing": true } }, + { "rename": { "field": "message2.request_body_len", "target_field": "http.request.body.length", "ignore_missing": true } }, + { "rename": { "field": "message2.response_body_len", "target_field": "http.response.body.length", "ignore_missing": true } }, + { "rename": { "field": "message2.status_code", "target_field": "http.status_code", "ignore_missing": true } }, + { "rename": { "field": "message2.status_msg", "target_field": "http.status_message", "ignore_missing": true } }, + { "rename": { "field": "message2.info_code", "target_field": "http.info_code", "ignore_missing": true } }, + { "rename": { "field": "message2.info_msg", "target_field": "http.info_message", "ignore_missing": true } }, + { "rename": { "field": "message2.username", "target_field": "http.user", "ignore_missing": true } }, + { "rename": { "field": "message2.password", "target_field": "http.password", "ignore_missing": true } }, + { "rename": { "field": "message2.proxied", "target_field": "http.proxied", "ignore_missing": true } }, + { "rename": { "field": "message2.orig_fuids", "target_field": "log.id.orig_fuids", "ignore_missing": true } }, + { "rename": { "field": "message2.orig_filenames", "target_field": "file.orig_filenames", "ignore_missing": true } }, + { "rename": { "field": "message2.orig_mime_types", "target_field": "file.orig_mime_types", "ignore_missing": true } }, + { "rename": { "field": "message2.resp_fuids", "target_field": "log.id.resp_fuids", "ignore_missing": true } }, + { "rename": { "field": "message2.resp_filenames", "target_field": "file.resp_filenames", "ignore_missing": true } }, + { "rename": { "field": "message2.resp_mime_types", "target_field": "file.resp_mime_types", "ignore_missing": true } }, + { "rename": { "field": "message2.stream_id", "target_field": "http2.stream_id", "ignore_missing": true } }, + { "remove": { "field": "message2.tags", "ignore_failure": true } }, + { "remove": { "field": ["host"], "ignore_failure": true } }, + { "script": { "lang": "painless", "source": "ctx.uri_length = ctx.uri.length()", "ignore_failure": true } }, + { "script": { "lang": "painless", "source": "ctx.useragent_length = ctx.useragent.length()", "ignore_failure": true } }, + { "script": { "lang": "painless", "source": "ctx.virtual_host_length = ctx.virtual_host.length()", "ignore_failure": true } }, + { "pipeline": { "name": "zeek.common" } } + ] +} diff --git a/salt/kibana/files/saved_objects.ndjson b/salt/kibana/files/saved_objects.ndjson index 01b69b081..7aabe4404 100644 --- a/salt/kibana/files/saved_objects.ndjson +++ b/salt/kibana/files/saved_objects.ndjson @@ -167,7 +167,7 @@ {"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"filter\":[]}"},"savedSearchRefName":"search_0","title":"OSSEC - Log Count Over Time","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"OSSEC - Log Count Over Time\",\"type\":\"line\",\"params\":{\"grid\":{\"categoryLines\":false,\"style\":{\"color\":\"#eee\"}},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"truncate\":100},\"title\":{\"text\":\"@timestamp per 12 hours\"}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"}}],\"seriesParams\":[{\"show\":true,\"mode\":\"normal\",\"type\":\"line\",\"drawLinesBetweenPoints\":true,\"showCircles\":true,\"interpolate\":\"linear\",\"lineWidth\":2,\"data\":{\"id\":\"1\",\"label\":\"Count\"},\"valueAxis\":\"ValueAxis-1\"}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"showCircles\":true,\"interpolate\":\"linear\",\"scale\":\"linear\",\"drawLinesBetweenPoints\":true,\"radiusRatio\":9,\"times\":[],\"addTimeMarker\":false,\"defaultYExtents\":false,\"setYExtents\":false,\"legendSize\":\"auto\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"@timestamp\",\"interval\":\"auto\",\"min_doc_count\":1,\"extended_bounds\":{}}}],\"listeners\":{}}"},"coreMigrationVersion":"8.7.1","created_at":"2023-07-20T15:26:57.180Z","id":"2817b300-3643-11e7-a6f7-4f44d7bf1c33","migrationVersion":{"visualization":"8.5.0"},"references":[{"id":"efba60c0-3642-11e7-a6f7-4f44d7bf1c33","name":"search_0","type":"search"}],"sort":[1689866817180,4686],"type":"visualization","updated_at":"2023-07-20T15:26:57.180Z","version":"WzQyNDIsMV0="} {"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Security Onion - PE - Machine","uiStateJSON":"{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}","version":1,"visState":"{\"title\":\"Security Onion - PE - Machine\",\"type\":\"table\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{\"emptyAsNull\":false},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"file.machine\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":25,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"includeIsRegex\":true,\"excludeIsRegex\":true,\"customLabel\":\"Machine\"},\"schema\":\"bucket\"}],\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"percentageCol\":\"\",\"showToolbar\":true,\"autoFitRowToContent\":false}}"},"coreMigrationVersion":"8.7.1","created_at":"2023-07-20T15:26:57.180Z","id":"282bf2c0-c763-11ea-bebb-37c5ab5894ea","migrationVersion":{"visualization":"8.5.0"},"references":[{"id":"logs-*","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1689866817180,4688],"type":"visualization","updated_at":"2023-07-20T15:26:57.180Z","version":"WzQyNDMsMV0="} {"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Security Onion - X.509 - Key Type (Donut)","uiStateJSON":"{}","version":1,"visState":"{\"type\":\"pie\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"x509.certificate.key.type.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":25,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}],\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"legendPosition\":\"right\",\"isDonut\":true,\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100},\"dimensions\":{\"metric\":{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"label\":\"Count\",\"aggType\":\"count\"},\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"boolean\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\",\"parsedUrl\":{\"origin\":\"https://PLACEHOLDER\",\"pathname\":\"/kibana/app/kibana\",\"basePath\":\"/kibana\"}}},\"params\":{},\"label\":\"x509.basic_constraints.ca: Descending\",\"aggType\":\"terms\"}]},\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"distinctColors\":true,\"legendDisplay\":\"show\",\"legendSize\":\"auto\"},\"title\":\"Security Onion - X.509 - Key Type (Donut)\"}"},"coreMigrationVersion":"8.7.1","created_at":"2023-07-20T15:26:57.180Z","id":"2895c940-75ef-11ea-9565-7315f4ee5cac","migrationVersion":{"visualization":"8.5.0"},"references":[{"id":"logs-*","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1689866817180,4690],"type":"visualization","updated_at":"2023-07-20T15:26:57.180Z","version":"WzQyNDQsMV0="} -{"attributes":{"columns":["_source"],"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"highlightAll\":true,\"version\":true,\"query\":{\"query\":\"tags:http\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"sort":[["@timestamp","desc"]],"title":"Security Onion - HTTP","version":1},"coreMigrationVersion":"8.7.1","created_at":"2023-07-20T15:26:57.180Z","id":"9ee33aa0-6eb1-11ea-9266-1fd14ca6af34","migrationVersion":{"search":"8.0.0"},"references":[{"id":"logs-*","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1689866817180,4692],"type":"search","updated_at":"2023-07-20T15:26:57.180Z","version":"WzQyNDUsMV0="} +{"attributes":{"columns":["_source"],"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"highlightAll\":true,\"version\":true,\"query\":{\"query\":\"tags:http or http2\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"sort":[["@timestamp","desc"]],"title":"Security Onion - HTTP","version":1},"coreMigrationVersion":"8.7.1","created_at":"2023-07-20T15:26:57.180Z","id":"9ee33aa0-6eb1-11ea-9266-1fd14ca6af34","migrationVersion":{"search":"8.0.0"},"references":[{"id":"logs-*","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1689866817180,4692],"type":"search","updated_at":"2023-07-20T15:26:57.180Z","version":"WzQyNDUsMV0="} {"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"},"savedSearchRefName":"search_0","title":"Security Onion - HTTP - Virtual Host","uiStateJSON":"{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}","version":1,"visState":"{\"title\":\"Security Onion - HTTP - Virtual Host\",\"type\":\"table\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{\"emptyAsNull\":false},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"http.virtual_host\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":10,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"includeIsRegex\":true,\"excludeIsRegex\":true,\"customLabel\":\"Virtual Host\"},\"schema\":\"bucket\"}],\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"percentageCol\":\"\",\"dimensions\":{\"metrics\":[{\"accessor\":0,\"format\":{\"id\":\"number\"},\"params\":{},\"label\":\"Count\",\"aggType\":\"count\"}],\"buckets\":[]},\"showToolbar\":true,\"autoFitRowToContent\":false}}"},"coreMigrationVersion":"8.7.1","created_at":"2023-07-20T15:26:57.180Z","id":"28bf2ef0-6eb7-11ea-9266-1fd14ca6af34","migrationVersion":{"visualization":"8.5.0"},"references":[{"id":"9ee33aa0-6eb1-11ea-9266-1fd14ca6af34","name":"search_0","type":"search"}],"sort":[1689866817180,4694],"type":"visualization","updated_at":"2023-07-20T15:26:57.180Z","version":"WzQyNDYsMV0="} {"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"filter\":[]}"},"savedSearchRefName":"search_0","title":"Connections - Top Source IPs","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Connections - Top Source IPs\",\"type\":\"pie\",\"params\":{\"addTooltip\":true,\"legendPosition\":\"right\",\"isDonut\":false,\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"distinctColors\":true,\"legendDisplay\":\"show\",\"legendSize\":\"auto\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"source_ip\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\"}}],\"listeners\":{}}"},"coreMigrationVersion":"8.7.1","created_at":"2023-07-20T15:26:57.180Z","id":"28c27f80-3b05-11e7-a83b-b1b4da7d15f4","migrationVersion":{"visualization":"8.5.0"},"references":[{"id":"9bf42190-342d-11e7-9e93-53b62e1857b2","name":"search_0","type":"search"}],"sort":[1689866817180,4696],"type":"visualization","updated_at":"2023-07-20T15:26:57.180Z","version":"WzQyNDcsMV0="} {"attributes":{"columns":["source_ip","source_port","destination_ip","destination_port","request_type","uid","_id"],"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"highlightAll\":true,\"version\":true,\"filter\":[],\"query\":{\"query_string\":{\"query\":\"event_type:bro_kerberos\",\"analyze_wildcard\":true}},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"sort":[["@timestamp","desc"]],"title":"Kerberos - Logs","version":1},"coreMigrationVersion":"8.7.1","created_at":"2023-07-20T15:26:57.180Z","id":"452daa10-342e-11e7-9e93-53b62e1857b2","migrationVersion":{"search":"8.0.0"},"references":[{"id":"*:logstash-*","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1689866817180,4698],"type":"search","updated_at":"2023-07-20T15:26:57.180Z","version":"WzQyNDgsMV0="} @@ -263,7 +263,7 @@ {"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{}"},"savedSearchRefName":"search_0","title":"Security Onion - HTTP - Destination Port","uiStateJSON":"{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}","version":1,"visState":"{\"title\":\"Security Onion - HTTP - Destination Port\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"percentageCol\":\"\",\"dimensions\":{\"metrics\":[{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"label\":\"Count\",\"aggType\":\"count\"}],\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"number\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\",\"parsedUrl\":{\"origin\":\"https://PLACEHOLDER\",\"pathname\":\"/kibana/app/kibana\",\"basePath\":\"/kibana\"}}},\"params\":{},\"label\":\"destination.port: Descending\",\"aggType\":\"terms\"}]},\"showToolbar\":true},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"destination.port\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":10,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Port\"}}]}"},"coreMigrationVersion":"8.7.1","created_at":"2023-07-20T15:26:57.180Z","id":"51ad64d0-6eb7-11ea-9266-1fd14ca6af34","migrationVersion":{"visualization":"8.5.0"},"references":[{"id":"9ee33aa0-6eb1-11ea-9266-1fd14ca6af34","name":"search_0","type":"search"}],"sort":[1689866817180,4907],"type":"visualization","updated_at":"2023-07-20T15:26:57.180Z","version":"WzQzMzgsMV0="} {"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"},"savedSearchRefName":"search_0","title":"Security Onion - HTTP - UserAgent","uiStateJSON":"{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}","version":1,"visState":"{\"title\":\"Security Onion - HTTP - UserAgent\",\"type\":\"table\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{\"emptyAsNull\":false},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"http.useragent\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":100,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"includeIsRegex\":true,\"excludeIsRegex\":true,\"customLabel\":\"UserAgent\"},\"schema\":\"bucket\"}],\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"percentageCol\":\"\",\"dimensions\":{\"metrics\":[{\"accessor\":0,\"format\":{\"id\":\"number\"},\"params\":{},\"label\":\"Count\",\"aggType\":\"count\"}],\"buckets\":[]},\"showToolbar\":true,\"autoFitRowToContent\":false}}"},"coreMigrationVersion":"8.7.1","created_at":"2023-07-20T15:26:57.180Z","id":"c2f93f40-6ed7-11ea-9266-1fd14ca6af34","migrationVersion":{"visualization":"8.5.0"},"references":[{"id":"9ee33aa0-6eb1-11ea-9266-1fd14ca6af34","name":"search_0","type":"search"}],"sort":[1689866817180,4909],"type":"visualization","updated_at":"2023-07-20T15:26:57.180Z","version":"WzQzMzksMV0="} {"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"},"savedSearchRefName":"search_0","title":"Security Onion - HTTP - URI","uiStateJSON":"{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}","version":1,"visState":"{\"title\":\"Security Onion - HTTP - URI\",\"type\":\"table\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{\"emptyAsNull\":false},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"http.uri\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":10,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"includeIsRegex\":true,\"excludeIsRegex\":true,\"customLabel\":\"URI\"},\"schema\":\"bucket\"}],\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"percentageCol\":\"\",\"dimensions\":{\"metrics\":[{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"label\":\"Count\",\"aggType\":\"count\"}],\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\",\"parsedUrl\":{\"origin\":\"https://PLACEHOLDER\",\"pathname\":\"/kibana/app/kibana\",\"basePath\":\"/kibana\"}}},\"params\":{},\"label\":\"http.uri.keyword: Descending\",\"aggType\":\"terms\"}]},\"showToolbar\":true,\"autoFitRowToContent\":false}}"},"coreMigrationVersion":"8.7.1","created_at":"2023-07-20T15:26:57.180Z","id":"f22e8660-6eb6-11ea-9266-1fd14ca6af34","migrationVersion":{"visualization":"8.5.0"},"references":[{"id":"9ee33aa0-6eb1-11ea-9266-1fd14ca6af34","name":"search_0","type":"search"}],"sort":[1689866817180,4911],"type":"visualization","updated_at":"2023-07-20T15:26:57.180Z","version":"WzQzNDAsMV0="} -{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"tags:http\",\"language\":\"kuery\"},\"filter\":[]}"},"optionsJSON":"{\"useMargins\":true,\"syncColors\":false,\"syncCursor\":true,\"syncTooltips\":false,\"hidePanelTitles\":false}","panelsJSON":"[{\"version\":\"8.7.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":0,\"w\":14,\"h\":9,\"i\":\"6e3caf86-a1ea-4363-9c73-205de5f43ba9\"},\"panelIndex\":\"6e3caf86-a1ea-4363-9c73-205de5f43ba9\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_6e3caf86-a1ea-4363-9c73-205de5f43ba9\"},{\"version\":\"8.7.1\",\"type\":\"visualization\",\"gridData\":{\"x\":14,\"y\":0,\"w\":16,\"h\":9,\"i\":\"0b0546ef-637b-4a40-b87b-a454b78cc810\"},\"panelIndex\":\"0b0546ef-637b-4a40-b87b-a454b78cc810\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_0b0546ef-637b-4a40-b87b-a454b78cc810\"},{\"version\":\"8.7.1\",\"type\":\"visualization\",\"gridData\":{\"x\":30,\"y\":0,\"w\":18,\"h\":9,\"i\":\"9c49b93a-5b5d-4613-8342-c01c69970bce\"},\"panelIndex\":\"9c49b93a-5b5d-4613-8342-c01c69970bce\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_9c49b93a-5b5d-4613-8342-c01c69970bce\"},{\"version\":\"8.7.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":9,\"w\":8,\"h\":18,\"i\":\"15d7c88b-1619-4290-8968-fa2adfddd72f\"},\"panelIndex\":\"15d7c88b-1619-4290-8968-fa2adfddd72f\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_15d7c88b-1619-4290-8968-fa2adfddd72f\"},{\"version\":\"8.7.1\",\"type\":\"visualization\",\"gridData\":{\"x\":8,\"y\":9,\"w\":8,\"h\":18,\"i\":\"d1219968-6b7f-4040-9c75-0611b9cbf8a0\"},\"panelIndex\":\"d1219968-6b7f-4040-9c75-0611b9cbf8a0\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_d1219968-6b7f-4040-9c75-0611b9cbf8a0\"},{\"version\":\"8.7.1\",\"type\":\"visualization\",\"gridData\":{\"x\":16,\"y\":9,\"w\":9,\"h\":18,\"i\":\"377e3099-7aec-474c-9201-2f1845c58d24\"},\"panelIndex\":\"377e3099-7aec-474c-9201-2f1845c58d24\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_377e3099-7aec-474c-9201-2f1845c58d24\"},{\"version\":\"8.7.1\",\"type\":\"visualization\",\"gridData\":{\"x\":25,\"y\":9,\"w\":23,\"h\":18,\"i\":\"1b444602-2f1c-4c32-85fc-1e5f46235303\"},\"panelIndex\":\"1b444602-2f1c-4c32-85fc-1e5f46235303\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_1b444602-2f1c-4c32-85fc-1e5f46235303\"},{\"version\":\"8.7.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":27,\"w\":11,\"h\":18,\"i\":\"9b1df72c-b6fd-4abd-a961-32176c26cc3d\"},\"panelIndex\":\"9b1df72c-b6fd-4abd-a961-32176c26cc3d\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_9b1df72c-b6fd-4abd-a961-32176c26cc3d\"},{\"version\":\"8.7.1\",\"type\":\"visualization\",\"gridData\":{\"x\":11,\"y\":27,\"w\":10,\"h\":18,\"i\":\"52c3ab70-9b8d-4c26-953d-f1a943fdff38\"},\"panelIndex\":\"52c3ab70-9b8d-4c26-953d-f1a943fdff38\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_52c3ab70-9b8d-4c26-953d-f1a943fdff38\"},{\"version\":\"8.7.1\",\"type\":\"visualization\",\"gridData\":{\"x\":21,\"y\":27,\"w\":27,\"h\":18,\"i\":\"ea97cb71-fbb6-46ae-bb4a-4d01c3a6edb2\"},\"panelIndex\":\"ea97cb71-fbb6-46ae-bb4a-4d01c3a6edb2\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_ea97cb71-fbb6-46ae-bb4a-4d01c3a6edb2\"},{\"version\":\"8.7.1\",\"type\":\"search\",\"gridData\":{\"x\":0,\"y\":45,\"w\":48,\"h\":29,\"i\":\"17d41692-eb81-4c13-aaa3-2a4bccc125df\"},\"panelIndex\":\"17d41692-eb81-4c13-aaa3-2a4bccc125df\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_17d41692-eb81-4c13-aaa3-2a4bccc125df\"}]","timeRestore":false,"title":"Security Onion - HTTP","version":1},"coreMigrationVersion":"8.7.1","created_at":"2023-07-20T15:26:57.180Z","id":"44e9c820-6eb1-11ea-9266-1fd14ca6af34","migrationVersion":{"dashboard":"8.7.0"},"references":[{"id":"7f822930-6ea4-11ea-9266-1fd14ca6af34","name":"6e3caf86-a1ea-4363-9c73-205de5f43ba9:panel_6e3caf86-a1ea-4363-9c73-205de5f43ba9","type":"visualization"},{"id":"d04b5130-6e99-11ea-9266-1fd14ca6af34","name":"0b0546ef-637b-4a40-b87b-a454b78cc810:panel_0b0546ef-637b-4a40-b87b-a454b78cc810","type":"visualization"},{"id":"6411e5b0-6eb2-11ea-9266-1fd14ca6af34","name":"9c49b93a-5b5d-4613-8342-c01c69970bce:panel_9c49b93a-5b5d-4613-8342-c01c69970bce","type":"visualization"},{"id":"6d0fb2b0-6eb6-11ea-9266-1fd14ca6af34","name":"15d7c88b-1619-4290-8968-fa2adfddd72f:panel_15d7c88b-1619-4290-8968-fa2adfddd72f","type":"visualization"},{"id":"30e97190-6eb6-11ea-9266-1fd14ca6af34","name":"d1219968-6b7f-4040-9c75-0611b9cbf8a0:panel_d1219968-6b7f-4040-9c75-0611b9cbf8a0","type":"visualization"},{"id":"51ad64d0-6eb7-11ea-9266-1fd14ca6af34","name":"377e3099-7aec-474c-9201-2f1845c58d24:panel_377e3099-7aec-474c-9201-2f1845c58d24","type":"visualization"},{"id":"c2f93f40-6ed7-11ea-9266-1fd14ca6af34","name":"1b444602-2f1c-4c32-85fc-1e5f46235303:panel_1b444602-2f1c-4c32-85fc-1e5f46235303","type":"visualization"},{"id":"088aad70-7377-11ea-a3da-cbdb4f8a90c0","name":"9b1df72c-b6fd-4abd-a961-32176c26cc3d:panel_9b1df72c-b6fd-4abd-a961-32176c26cc3d","type":"visualization"},{"id":"28bf2ef0-6eb7-11ea-9266-1fd14ca6af34","name":"52c3ab70-9b8d-4c26-953d-f1a943fdff38:panel_52c3ab70-9b8d-4c26-953d-f1a943fdff38","type":"visualization"},{"id":"f22e8660-6eb6-11ea-9266-1fd14ca6af34","name":"ea97cb71-fbb6-46ae-bb4a-4d01c3a6edb2:panel_ea97cb71-fbb6-46ae-bb4a-4d01c3a6edb2","type":"visualization"},{"id":"8b6f3150-72a2-11ea-8dd2-9d8795a1200b","name":"17d41692-eb81-4c13-aaa3-2a4bccc125df:panel_17d41692-eb81-4c13-aaa3-2a4bccc125df","type":"search"}],"sort":[1689866817180,4923],"type":"dashboard","updated_at":"2023-07-20T15:26:57.180Z","version":"WzQzNDEsMV0="} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"tags:http or http2\",\"language\":\"kuery\"},\"filter\":[]}"},"optionsJSON":"{\"useMargins\":true,\"syncColors\":false,\"syncCursor\":true,\"syncTooltips\":false,\"hidePanelTitles\":false}","panelsJSON":"[{\"version\":\"8.7.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":0,\"w\":14,\"h\":9,\"i\":\"6e3caf86-a1ea-4363-9c73-205de5f43ba9\"},\"panelIndex\":\"6e3caf86-a1ea-4363-9c73-205de5f43ba9\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_6e3caf86-a1ea-4363-9c73-205de5f43ba9\"},{\"version\":\"8.7.1\",\"type\":\"visualization\",\"gridData\":{\"x\":14,\"y\":0,\"w\":16,\"h\":9,\"i\":\"0b0546ef-637b-4a40-b87b-a454b78cc810\"},\"panelIndex\":\"0b0546ef-637b-4a40-b87b-a454b78cc810\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_0b0546ef-637b-4a40-b87b-a454b78cc810\"},{\"version\":\"8.7.1\",\"type\":\"visualization\",\"gridData\":{\"x\":30,\"y\":0,\"w\":18,\"h\":9,\"i\":\"9c49b93a-5b5d-4613-8342-c01c69970bce\"},\"panelIndex\":\"9c49b93a-5b5d-4613-8342-c01c69970bce\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_9c49b93a-5b5d-4613-8342-c01c69970bce\"},{\"version\":\"8.7.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":9,\"w\":8,\"h\":18,\"i\":\"15d7c88b-1619-4290-8968-fa2adfddd72f\"},\"panelIndex\":\"15d7c88b-1619-4290-8968-fa2adfddd72f\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_15d7c88b-1619-4290-8968-fa2adfddd72f\"},{\"version\":\"8.7.1\",\"type\":\"visualization\",\"gridData\":{\"x\":8,\"y\":9,\"w\":8,\"h\":18,\"i\":\"d1219968-6b7f-4040-9c75-0611b9cbf8a0\"},\"panelIndex\":\"d1219968-6b7f-4040-9c75-0611b9cbf8a0\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_d1219968-6b7f-4040-9c75-0611b9cbf8a0\"},{\"version\":\"8.7.1\",\"type\":\"visualization\",\"gridData\":{\"x\":16,\"y\":9,\"w\":9,\"h\":18,\"i\":\"377e3099-7aec-474c-9201-2f1845c58d24\"},\"panelIndex\":\"377e3099-7aec-474c-9201-2f1845c58d24\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_377e3099-7aec-474c-9201-2f1845c58d24\"},{\"version\":\"8.7.1\",\"type\":\"visualization\",\"gridData\":{\"x\":25,\"y\":9,\"w\":23,\"h\":18,\"i\":\"1b444602-2f1c-4c32-85fc-1e5f46235303\"},\"panelIndex\":\"1b444602-2f1c-4c32-85fc-1e5f46235303\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_1b444602-2f1c-4c32-85fc-1e5f46235303\"},{\"version\":\"8.7.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":27,\"w\":11,\"h\":18,\"i\":\"9b1df72c-b6fd-4abd-a961-32176c26cc3d\"},\"panelIndex\":\"9b1df72c-b6fd-4abd-a961-32176c26cc3d\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_9b1df72c-b6fd-4abd-a961-32176c26cc3d\"},{\"version\":\"8.7.1\",\"type\":\"visualization\",\"gridData\":{\"x\":11,\"y\":27,\"w\":10,\"h\":18,\"i\":\"52c3ab70-9b8d-4c26-953d-f1a943fdff38\"},\"panelIndex\":\"52c3ab70-9b8d-4c26-953d-f1a943fdff38\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_52c3ab70-9b8d-4c26-953d-f1a943fdff38\"},{\"version\":\"8.7.1\",\"type\":\"visualization\",\"gridData\":{\"x\":21,\"y\":27,\"w\":27,\"h\":18,\"i\":\"ea97cb71-fbb6-46ae-bb4a-4d01c3a6edb2\"},\"panelIndex\":\"ea97cb71-fbb6-46ae-bb4a-4d01c3a6edb2\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_ea97cb71-fbb6-46ae-bb4a-4d01c3a6edb2\"},{\"version\":\"8.7.1\",\"type\":\"search\",\"gridData\":{\"x\":0,\"y\":45,\"w\":48,\"h\":29,\"i\":\"17d41692-eb81-4c13-aaa3-2a4bccc125df\"},\"panelIndex\":\"17d41692-eb81-4c13-aaa3-2a4bccc125df\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_17d41692-eb81-4c13-aaa3-2a4bccc125df\"}]","timeRestore":false,"title":"Security Onion - HTTP","version":1},"coreMigrationVersion":"8.7.1","created_at":"2023-07-20T15:26:57.180Z","id":"44e9c820-6eb1-11ea-9266-1fd14ca6af34","migrationVersion":{"dashboard":"8.7.0"},"references":[{"id":"7f822930-6ea4-11ea-9266-1fd14ca6af34","name":"6e3caf86-a1ea-4363-9c73-205de5f43ba9:panel_6e3caf86-a1ea-4363-9c73-205de5f43ba9","type":"visualization"},{"id":"d04b5130-6e99-11ea-9266-1fd14ca6af34","name":"0b0546ef-637b-4a40-b87b-a454b78cc810:panel_0b0546ef-637b-4a40-b87b-a454b78cc810","type":"visualization"},{"id":"6411e5b0-6eb2-11ea-9266-1fd14ca6af34","name":"9c49b93a-5b5d-4613-8342-c01c69970bce:panel_9c49b93a-5b5d-4613-8342-c01c69970bce","type":"visualization"},{"id":"6d0fb2b0-6eb6-11ea-9266-1fd14ca6af34","name":"15d7c88b-1619-4290-8968-fa2adfddd72f:panel_15d7c88b-1619-4290-8968-fa2adfddd72f","type":"visualization"},{"id":"30e97190-6eb6-11ea-9266-1fd14ca6af34","name":"d1219968-6b7f-4040-9c75-0611b9cbf8a0:panel_d1219968-6b7f-4040-9c75-0611b9cbf8a0","type":"visualization"},{"id":"51ad64d0-6eb7-11ea-9266-1fd14ca6af34","name":"377e3099-7aec-474c-9201-2f1845c58d24:panel_377e3099-7aec-474c-9201-2f1845c58d24","type":"visualization"},{"id":"c2f93f40-6ed7-11ea-9266-1fd14ca6af34","name":"1b444602-2f1c-4c32-85fc-1e5f46235303:panel_1b444602-2f1c-4c32-85fc-1e5f46235303","type":"visualization"},{"id":"088aad70-7377-11ea-a3da-cbdb4f8a90c0","name":"9b1df72c-b6fd-4abd-a961-32176c26cc3d:panel_9b1df72c-b6fd-4abd-a961-32176c26cc3d","type":"visualization"},{"id":"28bf2ef0-6eb7-11ea-9266-1fd14ca6af34","name":"52c3ab70-9b8d-4c26-953d-f1a943fdff38:panel_52c3ab70-9b8d-4c26-953d-f1a943fdff38","type":"visualization"},{"id":"f22e8660-6eb6-11ea-9266-1fd14ca6af34","name":"ea97cb71-fbb6-46ae-bb4a-4d01c3a6edb2:panel_ea97cb71-fbb6-46ae-bb4a-4d01c3a6edb2","type":"visualization"},{"id":"8b6f3150-72a2-11ea-8dd2-9d8795a1200b","name":"17d41692-eb81-4c13-aaa3-2a4bccc125df:panel_17d41692-eb81-4c13-aaa3-2a4bccc125df","type":"search"}],"sort":[1689866817180,4923],"type":"dashboard","updated_at":"2023-07-20T15:26:57.180Z","version":"WzQzNDEsMV0="} {"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}"},"savedSearchRefName":"search_0","title":"Modbus - Function","uiStateJSON":"{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}","version":1,"visState":"{\"title\":\"Modbus - Function\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMeticsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"showToolbar\":true},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"function.keyword\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":20,\"order\":\"desc\",\"orderBy\":\"1\",\"customLabel\":\"Function\"}}]}"},"coreMigrationVersion":"8.7.1","created_at":"2023-07-20T15:26:57.180Z","id":"453f8b90-4a58-11e8-9b0a-f1d33346f773","migrationVersion":{"visualization":"8.5.0"},"references":[{"id":"52dc9fe0-342e-11e7-9e93-53b62e1857b2","name":"search_0","type":"search"}],"sort":[1689866817180,4925],"type":"visualization","updated_at":"2023-07-20T15:26:57.180Z","version":"WzQzNDIsMV0="} {"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}"},"savedSearchRefName":"search_0","title":"NIDS Alerts - Category","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"NIDS Alerts - Category\",\"type\":\"histogram\",\"params\":{\"addLegend\":true,\"addTimeMarker\":false,\"addTooltip\":true,\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"labels\":{\"filter\":false,\"rotate\":0,\"show\":true,\"truncate\":200},\"position\":\"left\",\"scale\":{\"type\":\"linear\"},\"show\":true,\"style\":{},\"title\":{\"text\":\"Category\"},\"type\":\"category\"}],\"defaultYExtents\":false,\"drawLinesBetweenPoints\":true,\"grid\":{\"categoryLines\":false,\"style\":{\"color\":\"#eee\"}},\"interpolate\":\"linear\",\"legendPosition\":\"right\",\"radiusRatio\":9,\"scale\":\"linear\",\"seriesParams\":[{\"data\":{\"id\":\"1\",\"label\":\"Count\"},\"drawLinesBetweenPoints\":true,\"mode\":\"normal\",\"show\":true,\"showCircles\":true,\"type\":\"histogram\",\"valueAxis\":\"ValueAxis-1\",\"circlesRadius\":1}],\"setYExtents\":false,\"showCircles\":true,\"times\":[],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"labels\":{\"filter\":true,\"rotate\":75,\"show\":true,\"truncate\":100},\"name\":\"LeftAxis-1\",\"position\":\"bottom\",\"scale\":{\"mode\":\"normal\",\"type\":\"linear\"},\"show\":true,\"style\":{},\"title\":{\"text\":\"Count\"},\"type\":\"value\"}],\"type\":\"histogram\",\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"isVislibVis\":true,\"detailedTooltip\":true,\"legendSize\":\"auto\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"category.keyword\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":100,\"order\":\"desc\",\"orderBy\":\"1\",\"customLabel\":\"Category\"}}]}"},"coreMigrationVersion":"8.7.1","created_at":"2023-07-20T15:26:57.180Z","id":"45464b50-3af6-11e7-a83b-b1b4da7d15f4","migrationVersion":{"visualization":"8.5.0"},"references":[{"id":"9a5a35c0-342f-11e7-9e93-53b62e1857b2","name":"search_0","type":"search"}],"sort":[1689866817180,4927],"type":"visualization","updated_at":"2023-07-20T15:26:57.180Z","version":"WzQzNDMsMV0="} {"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}"},"savedSearchRefName":"search_0","title":"DNS - Query Class (Pie Chart)","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"DNS - Query Class (Pie Chart)\",\"type\":\"pie\",\"params\":{\"addTooltip\":true,\"legendPosition\":\"right\",\"isDonut\":true,\"type\":\"pie\",\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100},\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"distinctColors\":true,\"legendDisplay\":\"show\",\"legendSize\":\"auto\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"query_class_name.keyword\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":10,\"order\":\"desc\",\"orderBy\":\"1\",\"customLabel\":\"Query Class\"}}]}"},"coreMigrationVersion":"8.7.1","created_at":"2023-07-20T15:26:57.180Z","id":"45a652b0-34c1-11e7-917c-af7a9d11771a","migrationVersion":{"visualization":"8.5.0"},"references":[{"id":"d46522e0-342d-11e7-9e93-53b62e1857b2","name":"search_0","type":"search"}],"sort":[1689866817180,4929],"type":"visualization","updated_at":"2023-07-20T15:26:57.180Z","version":"WzQzNDQsMV0="} diff --git a/salt/soc/defaults.yaml b/salt/soc/defaults.yaml index 6147af73b..d61588b42 100644 --- a/salt/soc/defaults.yaml +++ b/salt/soc/defaults.yaml @@ -1649,23 +1649,23 @@ soc: showSubtitle: true - name: HTTP description: HTTP grouped by destination port - query: 'tags:http | groupby destination.port' + query: 'tags:(http OR http2) | groupby destination.port' showSubtitle: true - name: HTTP description: HTTP grouped by status code and message - query: 'tags:http | groupby http.status_code http.status_message' + query: 'tags:(http OR http2) | groupby http.status_code http.status_message' showSubtitle: true - name: HTTP description: HTTP grouped by method and user agent - query: 'tags:http | groupby http.method http.useragent' + query: 'tags:(http OR http2) | groupby http.method http.useragent' showSubtitle: true - name: HTTP description: HTTP grouped by virtual host - query: 'tags:http | groupby http.virtual_host' + query: 'tags:(http OR http2) | groupby http.virtual_host' showSubtitle: true - name: HTTP description: HTTP with exe downloads - query: 'tags:http AND file.resp_mime_types:*exec* | groupby http.virtual_host' + query: 'tags:(http OR http2) AND file.resp_mime_types:*exec* | groupby http.virtual_host' showSubtitle: true - name: Intel description: Intel framework hits grouped by indicator @@ -1892,7 +1892,7 @@ soc: query: 'tags:ftp | groupby ftp.command | groupby -sankey ftp.command source.ip | groupby source.ip | groupby -sankey source.ip destination.ip | groupby destination.ip | groupby destination.port | groupby destination_geo.organization_name | groupby ftp.argument | groupby ftp.user' - name: HTTP description: HTTP (Hyper Text Transport Protocol) network metadata - query: 'tags:http | groupby http.method | groupby -sankey http.method http.virtual_host | groupby http.virtual_host | groupby http.uri | groupby http.useragent | groupby http.status_code | groupby http.status_message | groupby file.resp_mime_types | groupby source.ip | groupby destination.ip | groupby destination.port | groupby destination_geo.organization_name' + query: 'tags:(http OR http2) | groupby http.method | groupby -sankey http.method http.virtual_host | groupby http.virtual_host | groupby http.uri | groupby http.useragent | groupby http.status_code | groupby http.status_message | groupby file.resp_mime_types | groupby source.ip | groupby destination.ip | groupby destination.port | groupby destination_geo.organization_name' - name: Intel description: Zeek Intel framework hits query: 'tags:intel | groupby intel.indicator | groupby -sankey intel.indicator source.ip | groupby source.ip | groupby -sankey source.ip destination.ip | groupby destination.ip | groupby destination.port | groupby intel.indicator_type | groupby intel.seen_where' diff --git a/salt/zeek/defaults.yaml b/salt/zeek/defaults.yaml index c0d873917..b4291640a 100644 --- a/salt/zeek/defaults.yaml +++ b/salt/zeek/defaults.yaml @@ -69,6 +69,7 @@ zeek: - zeek-plugin-profinet - zeek-spicy-wireguard - zeek-spicy-stun + - http2 load-sigs: - frameworks/signatures/detect-windows-shells redef: From 44ec23744787db6d55e9e441c051b39eabbb57fd Mon Sep 17 00:00:00 2001 From: reyesj2 <94730068+reyesj2@users.noreply.github.com> Date: Fri, 15 Nov 2024 11:39:01 -0600 Subject: [PATCH 171/175] additional integration support - cisco secure email gateway - rapid7 threat command Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com> --- salt/elasticfleet/defaults.yaml | 2 + salt/elasticsearch/defaults.yaml | 176 ++++++++++++++++++ ...cisco_secure_email_gateway.log@custom.json | 36 ++++ ...ti_rapid7_threat_command.alert@custom.json | 36 ++++ ...s-ti_rapid7_threat_command.ioc@custom.json | 36 ++++ ...7_threat_command.vulnerability@custom.json | 36 ++++ 6 files changed, 322 insertions(+) create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-cisco_secure_email_gateway.log@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-ti_rapid7_threat_command.alert@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-ti_rapid7_threat_command.ioc@custom.json create mode 100644 salt/elasticsearch/templates/component/elastic-agent/logs-ti_rapid7_threat_command.vulnerability@custom.json diff --git a/salt/elasticfleet/defaults.yaml b/salt/elasticfleet/defaults.yaml index e586100da..2f237cac1 100644 --- a/salt/elasticfleet/defaults.yaml +++ b/salt/elasticfleet/defaults.yaml @@ -48,6 +48,7 @@ elasticfleet: - cisco_ios - cisco_ise - cisco_meraki + - cisco_secure_email_gateway - cisco_umbrella - citrix_adc - citrix_waf @@ -108,6 +109,7 @@ elasticfleet: - ti_cybersixgill - ti_misp - ti_otx + - ti_rapid7_threat_command - ti_recordedfuture - ti_threatq - trendmicro diff --git a/salt/elasticsearch/defaults.yaml b/salt/elasticsearch/defaults.yaml index 618d778ea..56ac2475c 100644 --- a/salt/elasticsearch/defaults.yaml +++ b/salt/elasticsearch/defaults.yaml @@ -3211,6 +3211,50 @@ elasticsearch: set_priority: priority: 50 min_age: 30d + so-logs-cisco_secure_email_gateway_x_log: + index_sorting: false + index_template: + composed_of: + - logs-cisco_secure_email_gateway.log@package + - logs-cisco_secure_email_gateway.log@custom + - so-fleet_globals-1 + - so-fleet_agent_id_verification-1 + data_stream: + hidden: false + allow_custom_routing: false + ignore_missing_component_templates: + - logs-cisco_secure_email_gateway.log@custom + index_patterns: + - logs-cisco_secure_email_gateway.log-* + priority: 501 + template: + settings: + index: + number_of_replicas: 0 + policy: + phases: + cold: + actions: + set_priority: + priority: 0 + min_age: 60d + delete: + actions: + delete: {} + min_age: 365d + hot: + actions: + rollover: + max_age: 30d + max_primary_shard_size: 50gb + set_priority: + priority: 100 + min_age: 0ms + warm: + actions: + set_priority: + priority: 50 + min_age: 30d so-logs-cisco_umbrella_x_log: index_sorting: false index_template: @@ -10399,6 +10443,138 @@ elasticsearch: set_priority: priority: 50 min_age: 30d + so-logs-ti_rapid7_threat_command_x_alert: + index_sorting: false + index_template: + composed_of: + - logs-ti_rapid7_threat_command.alert@package + - logs-ti_rapid7_threat_command.alert@custom + - so-fleet_globals-1 + - so-fleet_agent_id_verification-1 + data_stream: + hidden: false + allow_custom_routing: false + ignore_missing_component_templates: + - logs-ti_rapid7_threat_command.alert@custom + index_patterns: + - logs-ti_rapid7_threat_command.alert-* + priority: 501 + template: + settings: + index: + number_of_replicas: 0 + policy: + phases: + cold: + actions: + set_priority: + priority: 0 + min_age: 60d + delete: + actions: + delete: {} + min_age: 365d + hot: + actions: + rollover: + max_age: 30d + max_primary_shard_size: 50gb + set_priority: + priority: 100 + min_age: 0ms + warm: + actions: + set_priority: + priority: 50 + min_age: 30d + so-logs-ti_rapid7_threat_command_x_ioc: + index_sorting: false + index_template: + composed_of: + - logs-ti_rapid7_threat_command.ioc@package + - logs-ti_rapid7_threat_command.ioc@custom + - so-fleet_globals-1 + - so-fleet_agent_id_verification-1 + data_stream: + hidden: false + allow_custom_routing: false + ignore_missing_component_templates: + - logs-ti_rapid7_threat_command.ioc@custom + index_patterns: + - logs-ti_rapid7_threat_command.ioc-* + priority: 501 + template: + settings: + index: + number_of_replicas: 0 + policy: + phases: + cold: + actions: + set_priority: + priority: 0 + min_age: 60d + delete: + actions: + delete: {} + min_age: 365d + hot: + actions: + rollover: + max_age: 30d + max_primary_shard_size: 50gb + set_priority: + priority: 100 + min_age: 0ms + warm: + actions: + set_priority: + priority: 50 + min_age: 30d + so-logs-ti_rapid7_threat_command_x_vulnerability: + index_sorting: false + index_template: + composed_of: + - logs-ti_rapid7_threat_command.vulnerability@package + - logs-ti_rapid7_threat_command.vulnerability@custom + - so-fleet_globals-1 + - so-fleet_agent_id_verification-1 + data_stream: + hidden: false + allow_custom_routing: false + ignore_missing_component_templates: + - logs-ti_rapid7_threat_command.vulnerability@custom + index_patterns: + - logs-ti_rapid7_threat_command.vulnerability-* + priority: 501 + template: + settings: + index: + number_of_replicas: 0 + policy: + phases: + cold: + actions: + set_priority: + priority: 0 + min_age: 60d + delete: + actions: + delete: {} + min_age: 365d + hot: + actions: + rollover: + max_age: 30d + max_primary_shard_size: 50gb + set_priority: + priority: 100 + min_age: 0ms + warm: + actions: + set_priority: + priority: 50 + min_age: 30d so-logs-ti_recordedfuture_x_latest_ioc-template: index_sorting: false index_template: diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-cisco_secure_email_gateway.log@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-cisco_secure_email_gateway.log@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-cisco_secure_email_gateway.log@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-ti_rapid7_threat_command.alert@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-ti_rapid7_threat_command.alert@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-ti_rapid7_threat_command.alert@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-ti_rapid7_threat_command.ioc@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-ti_rapid7_threat_command.ioc@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-ti_rapid7_threat_command.ioc@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} diff --git a/salt/elasticsearch/templates/component/elastic-agent/logs-ti_rapid7_threat_command.vulnerability@custom.json b/salt/elasticsearch/templates/component/elastic-agent/logs-ti_rapid7_threat_command.vulnerability@custom.json new file mode 100644 index 000000000..17319ab9f --- /dev/null +++ b/salt/elasticsearch/templates/component/elastic-agent/logs-ti_rapid7_threat_command.vulnerability@custom.json @@ -0,0 +1,36 @@ +{ + "template": { + "mappings": { + "properties": { + "host": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "related": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "destination": { + "properties":{ + "ip": { + "type": "ip" + } + } + }, + "source": { + "properties":{ + "ip": { + "type": "ip" + } + } + } + } + } + } +} From e4de376394b2e45b25155208c96f98948b1c174d Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Fri, 15 Nov 2024 13:42:02 -0500 Subject: [PATCH 172/175] connect api --- salt/hydra/defaults.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/salt/hydra/defaults.yaml b/salt/hydra/defaults.yaml index cbea72b97..d65843dbf 100644 --- a/salt/hydra/defaults.yaml +++ b/salt/hydra/defaults.yaml @@ -1,5 +1,5 @@ hydra: - enabled: False + enabled: True config: serve: public: From f290e52fbd5c55ba5ee273fdd5466b059e271192 Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Fri, 15 Nov 2024 14:25:11 -0500 Subject: [PATCH 173/175] connect --- salt/manager/tools/sbin/soup | 1 + 1 file changed, 1 insertion(+) diff --git a/salt/manager/tools/sbin/soup b/salt/manager/tools/sbin/soup index 2c91430e7..b40b71ecc 100755 --- a/salt/manager/tools/sbin/soup +++ b/salt/manager/tools/sbin/soup @@ -736,6 +736,7 @@ add_hydra_pillars() { HYDRASALT=$(get_random_value) printf '%s\n'\ "hydra:"\ + " enabled: ${HYDRAENABLED:-False}"\ " config:"\ " secrets:"\ " system:"\ From dc838e71483403b2894aa83f001251664519ad9b Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Fri, 15 Nov 2024 14:25:52 -0500 Subject: [PATCH 174/175] connect --- salt/hydra/defaults.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/salt/hydra/defaults.yaml b/salt/hydra/defaults.yaml index d65843dbf..cbea72b97 100644 --- a/salt/hydra/defaults.yaml +++ b/salt/hydra/defaults.yaml @@ -1,5 +1,5 @@ hydra: - enabled: True + enabled: False config: serve: public: From 73521dd7a7fd02537f049f5fbe0a0c7b89eb2c08 Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Sat, 16 Nov 2024 11:09:44 -0500 Subject: [PATCH 175/175] revert prev commit --- salt/manager/tools/sbin/soup | 1 - 1 file changed, 1 deletion(-) diff --git a/salt/manager/tools/sbin/soup b/salt/manager/tools/sbin/soup index b40b71ecc..2c91430e7 100755 --- a/salt/manager/tools/sbin/soup +++ b/salt/manager/tools/sbin/soup @@ -736,7 +736,6 @@ add_hydra_pillars() { HYDRASALT=$(get_random_value) printf '%s\n'\ "hydra:"\ - " enabled: ${HYDRAENABLED:-False}"\ " config:"\ " secrets:"\ " system:"\