diff --git a/.gitignore b/.gitignore index 1c0e74995ff5448ddb62960a00e23b5dd7629e09..2cf455511ae19574a3658348de7be6735c909984 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ out/ /build/ .idea/ /src/main/resources/git.properties +/src/test/shell/tmp/ diff --git a/src/main/java/net/geant/nmaas/portal/persistent/entity/Configuration.java b/src/main/java/net/geant/nmaas/portal/persistent/entity/Configuration.java index 269809fe2a99e063de2e433ab8272c12cab21a67..8bce01da1e44e78f5beafed30c2507fea26c349c 100644 --- a/src/main/java/net/geant/nmaas/portal/persistent/entity/Configuration.java +++ b/src/main/java/net/geant/nmaas/portal/persistent/entity/Configuration.java @@ -47,6 +47,7 @@ public class Configuration { @Column(nullable = false) private boolean sendAppInstanceFailureEmails = false; + @Builder.Default @Column(nullable = false) @Getter(value = AccessLevel.PRIVATE) @Setter(value = AccessLevel.PRIVATE) diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 218b67437f063485bd2735c3ecaae9037ba1f040..5a8dd313b88ec564297c1e02afa125bae5390a4d 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -106,7 +106,7 @@ spring.quartz.properties.org.quartz.jobStore.driverDelegateClass=org.quartz.impl # ----- # # Other # # ----- # -upload.dir=/tmp +upload.dir=./src/test/shell/tmp/ jwt.tokenValidFor=3600000 jwt.refreshTokenValidFor=13600000 jwt.issuer=NMaaS @@ -175,6 +175,7 @@ kubernetes.deployment.smtpServerHostname=nmaas-postfix kubernetes.deployment.smtpServerPort=587 kubernetes.deployment.smtpServerUsername= kubernetes.deployment.smtpServerPassword= +kubernetes.deployment.smtpFromDefaultDomain= kubernetes.deployment.defaultStorageClass=storageClass # -------------------- # @@ -186,5 +187,5 @@ portal.config.defaultLanguage=en portal.config.testInstance=false portal.config.sendAppInstanceFailureEmails=false portal.config.showDomainRegistrationSelector=true -# string - list of emails with ':' as a separator, e.g. admin1@nmaas.eu;admin2@nmaas.eu +# string - list of emails with ':' as a separator, e.g., admin1@nmaas.eu;admin2@nmaas.eu portal.config.appInstanceFailureEmailList=admin@nmaas.eu diff --git a/src/test/shell/data/apps/app01-librenms.json b/src/test/shell/data/apps/app01-librenms.json deleted file mode 100644 index a77a7d5bde5426608e98d2e1121ad9d31127659c..0000000000000000000000000000000000000000 --- a/src/test/shell/data/apps/app01-librenms.json +++ /dev/null @@ -1,278 +0,0 @@ -{ - "applicationBase": { - "id": null, - "name": "LibreNMS", - "license": "GPL 3.0", - "licenseUrl": "https://www.gnu.org/licenses/gpl-3.0.html", - "wwwUrl": "http://www.librenms.org", - "sourceUrl": "https://github.com/librenms/librenms", - "issuesUrl": "https://github.com/librenms/librenms/issues", - "nmaasDocumentationUrl": "https://wiki.geant.org/display/NMAAS/NMaaS+Tools#NMaaSTools-LibreNMS", - "descriptions": [ - { - "language": "en", - "briefDescription": "Autodiscovering SNMP based network monitoring tool", - "fullDescription": "<p>LibreNMS is an autodiscovering PHP/MySQL/SNMP based network monitoring which includes support for a wide range of network hardware and operating systems including Cisco, Linux, FreeBSD, Juniper, Brocade, Foundry, HP and many more.<br>LibreNMS is a community-based fork of Observium.<br><br>We intend LibreNMS to be a viable project and community that:<ul><li>encourages contribution,</li><li>focuses on the needs of its users,</li><li>offers a welcoming, friendly environment for everyone.</li></ul><br>The Debian Social Contract will be the basis of our priority system, and mutual respect is the basis of our behaviour towards others.<br>For more about the culture we're trying to build, please read the Freenode philosophy,including guidelines for running an IRC channel and being a community catalyst.</p>" - }, - { - "language": "de", - "briefDescription": "Autodiscovering SNMP based network monitoring tool", - "fullDescription": "<p>LibreNMS is an autodiscovering PHP/MySQL/SNMP based network monitoring which includes support for a wide range of network hardware and operating systems including Cisco, Linux, FreeBSD, Juniper, Brocade, Foundry, HP and many more.<br>LibreNMS is a community-based fork of Observium.<br><br>We intend LibreNMS to be a viable project and community that:<ul><li>encourages contribution,</li><li>focuses on the needs of its users,</li><li>offers a welcoming, friendly environment for everyone.</li></ul><br>The Debian Social Contract will be the basis of our priority system, and mutual respect is the basis of our behaviour towards others.<br>For more about the culture we're trying to build, please read the Freenode philosophy,including guidelines for running an IRC channel and being a community catalyst.</p>" - }, - { - "language": "fr", - "briefDescription": "Autodiscovering SNMP based network monitoring tool", - "fullDescription": "<p>LibreNMS is an autodiscovering PHP/MySQL/SNMP based network monitoring which includes support for a wide range of network hardware and operating systems including Cisco, Linux, FreeBSD, Juniper, Brocade, Foundry, HP and many more.<br>LibreNMS is a community-based fork of Observium.<br><br>We intend LibreNMS to be a viable project and community that:<ul><li>encourages contribution,</li><li>focuses on the needs of its users,</li><li>offers a welcoming, friendly environment for everyone.</li></ul><br>The Debian Social Contract will be the basis of our priority system, and mutual respect is the basis of our behaviour towards others.<br>For more about the culture we're trying to build, please read the Freenode philosophy,including guidelines for running an IRC channel and being a community catalyst.</p>" - }, - { - "language": "pl", - "briefDescription": "Autodiscovering SNMP based network monitoring tool", - "fullDescription": "<p>LibreNMS is an autodiscovering PHP/MySQL/SNMP based network monitoring which includes support for a wide range of network hardware and operating systems including Cisco, Linux, FreeBSD, Juniper, Brocade, Foundry, HP and many more.<br>LibreNMS is a community-based fork of Observium.<br><br>We intend LibreNMS to be a viable project and community that:<ul><li>encourages contribution,</li><li>focuses on the needs of its users,</li><li>offers a welcoming, friendly environment for everyone.</li></ul><br>The Debian Social Contract will be the basis of our priority system, and mutual respect is the basis of our behaviour towards others.<br>For more about the culture we're trying to build, please read the Freenode philosophy,including guidelines for running an IRC channel and being a community catalyst.</p>" - } - ], - "tags": [ - "management", - "monitoring" - ] - }, - "application": { - "id": null, - "name": "LibreNMS", - "version": "1.47", - "configWizardTemplate": { - "template": { - "components": [ - { - "label": "Tabs", - "components": [ - { - "label": "Base", - "key": "configTab", - "components": [ - { - "label": "Mandatory parameters", - "hideLabel": true, - "tableView": true, - "type": "container", - "input": true, - "tab": 0, - "key": "mandatoryParameters", - "components": [ - { - "label": "Default username", - "type": "textfield", - "input": true, - "key": "librenms#default#USER", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain" - }, - { - "label": "Default user password", - "type": "password", - "input": true, - "key": "librenms#default#PASSWORD", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain" - }, - { - "label": "Default user email", - "type": "email", - "input": true, - "key": "librenms#default#EMAIL", - "tab": 0, - "validate": { - "required": false - }, - "inputFormat": "plain" - } - ] - }, - { - "label": "Configuration", - "hideLabel": true, - "tableView": true, - "type": "container", - "input": true, - "tab": 0, - "key": "configuration", - "components": [ - { - "label": "Targets", - "hideLabel": true, - "tab": 0, - "disableAddingRemovingRows": false, - "addAnother": "Add device", - "addAnotherPosition": "bottom", - "multiple": true, - "tableView": true, - "type": "datagrid", - "input": true, - "key": "targets", - "validate": { - "required": true - }, - "components": [ - { - "label": "Device (IP address)", - "hideLabel": true, - "tableView": true, - "type": "textfield", - "input": true, - "tab": 0, - "key": "ipAddress", - "placeholder": "127.0.0.1", - "defaultValue": "", - "validate": { - "required": true, - "pattern": "^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$", - "unique": false, - "customMessage": "", - "json": "" - }, - "inputFormat": "plain" - }, - { - "label": "SNMP community", - "type": "textfield", - "input": true, - "key": "snmpCommunity", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain" - }, - { - "label": "SNMP version", - "placeholder": "Select SNMP version", - "tableView": true, - "type": "select", - "input": true, - "key": "snmpVersion", - "defaultValue": "", - "validate": { - "required": true - }, - "data": { - "values": [ - { - "label": "v1", - "value": "v1" - }, - { - "label": "v2c", - "value": "v2c" - }, - { - "label": "v3", - "value": "v3" - } - ] - }, - "valueProperty": "value", - "tab": 0 - } - ] - } - ] - } - ] - }, - { - "label": "Advanced", - "key": "advancedTab", - "components": [ - { - "label": "Advanced", - "hideLabel": true, - "tableView": true, - "type": "container", - "input": true, - "tab": 1, - "key": "advanced", - "components": [ - { - "label": "Storage space (GB):", - "type": "number", - "input": true, - "key": "storageSpace", - "placeholder": "Default value: 20GB", - "tab": 1 - } - ] - } - ] - } - ], - "type": "tabs", - "input": false, - "key": "tabs" - }, - { - "type": "button", - "label": "Apply configuration", - "disableOnInvalid": true, - "theme": "primary", - "input": false, - "tableView": true - } - ] - } - }, - "configUpdateWizardTemplate": null, - "appDeploymentSpec": { - "supportedDeploymentEnvironments": [ - "KUBERNETES" - ], - "kubernetesTemplate": { - "chart": { - "name": "nmaas-librenms", - "version": "2.0.1" - } - }, - "storageVolumes": [ - { - "type": "MAIN", - "defaultStorageSpace": 20, - "deployParameters": { - "PERSISTENCE_ENABLED": "persistence.enabled", - "PERSISTENCE_NAME": "persistence.name", - "PERSISTENCE_STORAGE_CLASS": "persistence.storageClass", - "PERSISTENCE_STORAGE_SPACE": "persistence.size" - } - } - ], - "exposesWebUI": true, - "accessMethods": [ - { - "type": "DEFAULT", - "name": "LibreNMS", - "tag": "librenms", - "deployParameters": { - "INGRESS_ENABLED": "ingress.enabled", - "INGRESS_HOSTS": "ingress.hosts", - "INGRESS_TLS_ENABLED": "ingress.tls.enabled", - "INGRESS_CLASS": "ingress.class", - "INGRESS_LETSENCRYPT": "ingress.tls.acme", - "INGRESS_WILDCARD_OR_ISSUER": "ingress.tls.certOrIssuer" - } - } - ] - }, - "appConfigurationSpec": { - "configFileRepositoryRequired": true, - "templates": [ - { - "configFileName": "addhosts.cfg", - "configFileTemplateContent": "<#list targets as target>\n-f ${target.ipAddress} ${target.snmpCommunity} ${target.snmpVersion}\n</#list>" - } - ] - } - } -} \ No newline at end of file diff --git a/src/test/shell/data/apps/app05-prometheus.json b/src/test/shell/data/apps/app01-prometheus.json similarity index 99% rename from src/test/shell/data/apps/app05-prometheus.json rename to src/test/shell/data/apps/app01-prometheus.json index bc8593099e65844e5a5afc9b77db558688677122..8be46a089aea684450e0f805d9f78e2d08f5fd32 100644 --- a/src/test/shell/data/apps/app05-prometheus.json +++ b/src/test/shell/data/apps/app01-prometheus.json @@ -7,7 +7,7 @@ "wwwUrl": "https://prometheus.io", "sourceUrl": "https://github.com/prometheus/prometheus", "issuesUrl": "https://github.com/prometheus/prometheus/issues", - "nmaasDocumentationUrl": "https://wiki.geant.org/display/NMAAS/NMaaS+Tools#NMaaSTools-Prometheus", + "nmaasDocumentationUrl": "https://docs.nmaas.eu/nmaas-applications/tutorials/prometheus/", "descriptions": [ { "language": "en", diff --git a/src/test/shell/data/apps/app06-grafana.json b/src/test/shell/data/apps/app02-grafana.json similarity index 83% rename from src/test/shell/data/apps/app06-grafana.json rename to src/test/shell/data/apps/app02-grafana.json index 80ff42fea3610baa4fbecc6fe9121f6911ac38cb..5d42475cbd33c2b699f4955bd761a5a0cff933af 100644 --- a/src/test/shell/data/apps/app06-grafana.json +++ b/src/test/shell/data/apps/app02-grafana.json @@ -7,7 +7,7 @@ "wwwUrl": "https://grafana.com/", "sourceUrl": "https://github.com/grafana/grafana", "issuesUrl": "https://github.com/grafana/grafana/issues", - "nmaasDocumentationUrl": "https://wiki.geant.org/display/NMAAS/nmaas+Tools#nmaasTools-Grafana", + "nmaasDocumentationUrl": "https://docs.nmaas.eu/nmaas-applications/tutorials/grafana/", "descriptions": [ { "language": "en", @@ -38,7 +38,7 @@ "application": { "id": null, "name": "Grafana", - "version": "6.5.2", + "version": "11.0.0", "configWizardTemplate": { "template": { "components": [ @@ -103,7 +103,7 @@ "optionsLabelPosition": "right", "values": [ { - "label": "nmaas Prometheus instance", + "label": "NMaaS Prometheus instance", "value": "inCluster" }, { @@ -159,47 +159,6 @@ } ] }, - { - "label": "Additional", - "key": "additionalParametersTab", - "components": [ - { - "label": "additionalParameters", - "hideLabel": true, - "type": "container", - "input": true, - "tab": 1, - "key": "additionalParameters", - "components": [ - { - "label": "SMTP host (by default uses in-cluster Postfix)", - "type": "textfield", - "input": true, - "key": "smtp#host", - "inputFormat": "plain", - "defaultValue": "nmaas-postfix.nmaas-system:587", - "tab": 1 - }, - { - "label": "SMTP username", - "type": "textfield", - "input": true, - "key": "smtp#user", - "inputFormat": "plain", - "tab": 1 - }, - { - "label": "SMTP user password", - "type": "password", - "input": true, - "key": "smtp#password", - "inputFormat": "plain", - "tab": 1 - } - ] - } - ] - }, { "label": "Advanced", "key": "advancedTab", @@ -249,9 +208,13 @@ "kubernetesTemplate": { "chart": { "name": "nmaas-grafana", - "version": "2.0.1" + "version": "8.0.0" } }, + "globalDeployParameters": { + "smtp.host": "nmaas-postfix.nmaas-system:587", + "smtp.defaultFrom": "noreply-grafana@nmaas.eu" + }, "storageVolumes": [ { "type": "MAIN", diff --git a/src/test/shell/data/apps/app02-oxidized.json b/src/test/shell/data/apps/app02-oxidized.json deleted file mode 100644 index 406967607cc65d0b041a7bb2d4e2b42f017b1be8..0000000000000000000000000000000000000000 --- a/src/test/shell/data/apps/app02-oxidized.json +++ /dev/null @@ -1,313 +0,0 @@ -{ - "applicationBase": { - "id": null, - "name": "Oxidized", - "license": "Apache 2.0", - "licenseUrl": "https://www.apache.org/licenses/LICENSE-2.0", - "wwwUrl": "https://github.com/ytti/oxidized/wiki", - "sourceUrl": "https://github.com/ytti/oxidized", - "issuesUrl": "https://github.com/ytti/oxidized/issues", - "nmaasDocumentationUrl": "https://wiki.geant.org/display/NMAAS/NMaaS+Tools#NMaaSTools-Oxidized", - "descriptions": [ - { - "language": "en", - "briefDescription": "Network device configuration backup tool", - "fullDescription": "Oxidized is a network device configuration backup tool. It's a great RANCID replacement.<br>Main features:<ul><li>automatically adds/removes threads to meet configured retrieval interval</li><li>restful API to move node immediately to head-of-queue (GET/POST /node/next/[NODE])</li><li>syslog udp+file example to catch config change event (ios/junos) and trigger config fetch</li><li>will signal ios/junos user who made change, which output modules can use (via POST)</li><li>The git output module uses this info - 'git blame' will for each line show who made the change and when</li><li>restful API to reload list of nodes (GET /reload)</li><li>restful API to fetch configurations (/node/fetch/[NODE] or /node/fetch/group/[NODE])</li><li>restful API to show list of nodes (GET /nodes)</li><li>restful API to show list of version for a node (/node/version[NODE]) and diffs</li></ul>" - }, - { - "language": "de", - "briefDescription": "Network device configuration backup tool", - "fullDescription": "Oxidized is a network device configuration backup tool. It's a great RANCID replacement.<br>Main features:<ul><li>automatically adds/removes threads to meet configured retrieval interval</li><li>restful API to move node immediately to head-of-queue (GET/POST /node/next/[NODE])</li><li>syslog udp+file example to catch config change event (ios/junos) and trigger config fetch</li><li>will signal ios/junos user who made change, which output modules can use (via POST)</li><li>The git output module uses this info - 'git blame' will for each line show who made the change and when</li><li>restful API to reload list of nodes (GET /reload)</li><li>restful API to fetch configurations (/node/fetch/[NODE] or /node/fetch/group/[NODE])</li><li>restful API to show list of nodes (GET /nodes)</li><li>restful API to show list of version for a node (/node/version[NODE]) and diffs</li></ul>" - }, - { - "language": "fr", - "briefDescription": "Network device configuration backup tool", - "fullDescription": "Oxidized is a network device configuration backup tool. It's a great RANCID replacement.<br>Main features:<ul><li>automatically adds/removes threads to meet configured retrieval interval</li><li>restful API to move node immediately to head-of-queue (GET/POST /node/next/[NODE])</li><li>syslog udp+file example to catch config change event (ios/junos) and trigger config fetch</li><li>will signal ios/junos user who made change, which output modules can use (via POST)</li><li>The git output module uses this info - 'git blame' will for each line show who made the change and when</li><li>restful API to reload list of nodes (GET /reload)</li><li>restful API to fetch configurations (/node/fetch/[NODE] or /node/fetch/group/[NODE])</li><li>restful API to show list of nodes (GET /nodes)</li><li>restful API to show list of version for a node (/node/version[NODE]) and diffs</li></ul>" - }, - { - "language": "pl", - "briefDescription": "Narzędzie do tworzenia kopii zapasowej konfiguracji urządzenia sieciowego", - "fullDescription": "Oxidized is a network device configuration backup tool. It's a great RANCID replacement.<br>Main features:<ul><li>automatically adds/removes threads to meet configured retrieval interval</li><li>restful API to move node immediately to head-of-queue (GET/POST /node/next/[NODE])</li><li>syslog udp+file example to catch config change event (ios/junos) and trigger config fetch</li><li>will signal ios/junos user who made change, which output modules can use (via POST)</li><li>The git output module uses this info - 'git blame' will for each line show who made the change and when</li><li>restful API to reload list of nodes (GET /reload)</li><li>restful API to fetch configurations (/node/fetch/[NODE] or /node/fetch/group/[NODE])</li><li>restful API to show list of nodes (GET /nodes)</li><li>restful API to show list of version for a node (/node/version[NODE]) and diffs</li></ul>" - } - ], - "tags": [ - "management", - "backup", - "configuration" - ] - }, - "application": { - "id": null, - "name": "Oxidized", - "version": "0.28.0", - "configWizardTemplate": { - "template": { - "components": [ - { - "label": "Tabs", - "components": [ - { - "label": "Base", - "key": "configTab", - "components": [ - { - "label": "Access credentials", - "hideLabel": true, - "tableView": true, - "type": "container", - "input": true, - "tab": 0, - "key": "accessCredentials", - "components": [ - { - "label": "Oxidized access username", - "type": "textfield", - "input": true, - "key": "accessUsername", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain" - }, - { - "label": "Oxidized access password", - "type": "password", - "input": true, - "key": "accessPassword", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain" - } - ] - }, - { - "label": "Configuration", - "hideLabel": true, - "tableView": true, - "type": "container", - "input": true, - "tab": 0, - "key": "configuration", - "components": [ - { - "label": "Device access username", - "type": "textfield", - "input": true, - "key": "oxidizedUsername", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain" - }, - { - "label": "Device access password", - "type": "password", - "input": true, - "key": "oxidizedPassword", - "tab": 0, - "validate": { - "required": true - } - }, - { - "label": "Targets", - "hideLabel": true, - "disableAddingRemovingRows": false, - "addAnother": "Add device", - "addAnotherPosition": "bottom", - "multiple": true, - "tableView": true, - "alwaysEnabled": false, - "type": "datagrid", - "input": true, - "key": "targets", - "tab": 0, - "defaultValue": [ - { - "ipAddress": "" - } - ], - "validate": { - "required": true - }, - "components": [ - { - "label": "Device (IP address)", - "hideLabel": true, - "tableView": true, - "type": "textfield", - "input": true, - "key": "ipAddress", - "placeholder": "127.0.0.1", - "tab": 0, - "defaultValue": "", - "validate": { - "required": true, - "pattern": "^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$" - }, - "inputFormat": "plain", - "row": "0-0" - } - ] - } - ] - } - ] - }, - { - "label": "Advanced", - "key": "advancedTab", - "components": [ - { - "label": "Advanced", - "hideLabel": true, - "tableView": true, - "type": "container", - "input": true, - "tab": 1, - "key": "advanced", - "components": [ - { - "label": "Storage space (GB):", - "type": "number", - "input": true, - "key": "storageSpace", - "placeholder": "Default value: 1GB", - "tab": 1 - } - ] - } - ] - } - ], - "type": "tabs", - "input": false, - "key": "tabs" - }, - { - "type": "button", - "label": "Apply configuration", - "disableOnInvalid": true, - "theme": "primary", - "input": false, - "tableView": true - } - ] - } - }, - "configUpdateWizardTemplate": { - "template": { - "components": [ - { - "label": "Access credentials", - "hideLabel": false, - "tableView": true, - "type": "container", - "input": true, - "tab": 0, - "key": "accessCredentials", - "components": [ - { - "label": "Oxidized access username", - "type": "textfield", - "input": true, - "key": "accessUsername", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain" - }, - { - "label": "Oxidized access password", - "type": "password", - "input": true, - "key": "accessPassword", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain" - } - ] - }, - { - "type": "button", - "label": "Apply configuration", - "disableOnInvalid": true, - "theme": "primary", - "input": false, - "tableView": true - } - ] - } - }, - "appDeploymentSpec": { - "supportedDeploymentEnvironments": [ - "KUBERNETES" - ], - "kubernetesTemplate": { - "chart": { - "name": "nmaas-oxidized", - "version": "2.0.1" - } - }, - "globalDeployParameters": { - "image.tag": "0.28.0" - }, - "storageVolumes": [ - { - "type": "MAIN", - "defaultStorageSpace": 1, - "deployParameters": { - "PERSISTENCE_ENABLED": "persistence.enabled", - "PERSISTENCE_NAME": "persistence.name", - "PERSISTENCE_STORAGE_CLASS": "persistence.storageClass", - "PERSISTENCE_STORAGE_SPACE": "persistence.size" - } - } - ], - "exposesWebUI": true, - "accessMethods": [ - { - "type": "DEFAULT", - "name": "Oxidized", - "tag": "oxidized", - "deployParameters": { - "INGRESS_ENABLED": "ingress.enabled", - "INGRESS_HOSTS": "ingress.hosts", - "INGRESS_TLS_ENABLED": "ingress.tls.enabled", - "INGRESS_CLASS": "ingress.class", - "INGRESS_LETSENCRYPT": "ingress.tls.acme", - "INGRESS_WILDCARD_OR_ISSUER": "ingress.tls.certOrIssuer" - } - } - ] - }, - "appConfigurationSpec": { - "configFileRepositoryRequired": true, - "configUpdateEnabled": true, - "templates": [ - { - "configFileName": "config", - "configFileDirectory": "base", - "configFileTemplateContent": "---\nusername: ${oxidizedUsername}\npassword: ${oxidizedPassword}\nmodel: junos\ninterval: 600\nuse_syslog: false\ndebug: false\nthreads: 30\ntimeout: 20\nretries: 3\nprompt: !ruby/regexp /^([\\w.@-]+[#>]\\s?)$/\nrest: 0.0.0.0:8888\nvars: {}\ngroups: {}\npid: \"/storage/pid\"\ninput:\n default: ssh, telnet\n debug: false\n ssh:\n secure: false\noutput:\n default: git\n file:\n directory: \"/storage/configs\"\n git:\n user: oxidized\n email: oxidized@man.poznan.pl\n repo: \"/storage/oxidized.git\"\nsource:\n default: csv\n csv:\n file: \"/root/.config/oxidized/router.db\"\n delimiter: !ruby/regexp /:/\n map:\n name: 0\n model: 1\nmodel_map:\n cisco: ios\n juniper: junos" - }, - { - "configFileName": "router.db", - "configFileDirectory": "base", - "configFileTemplateContent": "<#list targets as target>\n${target.ipAddress}:junos\n</#list>" - }, - { - "configFileName": "readme.txt", - "configFileDirectory": "model", - "configFileTemplateContent": "Specific model specification files should be placed in this directory" - } - ] - } - } -} \ No newline at end of file diff --git a/src/test/shell/data/apps/app03-nav.json b/src/test/shell/data/apps/app03-nav.json deleted file mode 100644 index 1adeb72a1006934a7cd9d98cf2c31fb1f48f9d95..0000000000000000000000000000000000000000 --- a/src/test/shell/data/apps/app03-nav.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "applicationBase": { - "id": null, - "name": "NAV", - "license": "GPL 3.0", - "licenseUrl": "https://www.gnu.org/licenses/gpl-3.0.html", - "wwwUrl": "https://nav.uninett.no/", - "sourceUrl": "https://github.com/UNINETT/nav", - "issuesUrl": "https://github.com/UNINETT/nav/issues", - "nmaasDocumentationUrl": "https://wiki.geant.org/display/NMAAS/NMaaS+Tools#NMaaSTools-NAV", - "descriptions": [ - { - "language": "en", - "briefDescription": "Network Administration Visualized - network management system", - "fullDescription": "Network Administration Visualized is an advanced software suite to monitor large computer networks. It automatically discovers network topology, monitors network load and outages, and can send alerts on network events by e-mail and SMS, allowing for flexible configuration of alert profiles." - }, - { - "language": "de", - "briefDescription": "Network Administration Visualized - network management system", - "fullDescription": "Network Administration Visualized is an advanced software suite to monitor large computer networks. It automatically discovers network topology, monitors network load and outages, and can send alerts on network events by e-mail and SMS, allowing for flexible configuration of alert profiles." - }, - { - "language": "fr", - "briefDescription": "Network Administration Visualized - network management system", - "fullDescription": "Network Administration Visualized is an advanced software suite to monitor large computer networks. It automatically discovers network topology, monitors network load and outages, and can send alerts on network events by e-mail and SMS, allowing for flexible configuration of alert profiles." - }, - { - "language": "pl", - "briefDescription": "Network Administration Visualized - system do zarządzania siecią", - "fullDescription": "Network Administration Visualized is an advanced software suite to monitor large computer networks. It automatically discovers network topology, monitors network load and outages, and can send alerts on network events by e-mail and SMS, allowing for flexible configuration of alert profiles." - } - ], - "tags": [ - "management", - "monitoring" - ] - }, - "application": { - "id": null, - "name": "NAV", - "version": "4.8.6", - "configWizardTemplate": { - "template": { - "components": [ - { - "label": "Tabs", - "components": [ - { - "label": "Base", - "key": "configTab", - "components": [ - { - "type": "htmlelement", - "input": false, - "content": "<p>All required configuration should be applied using NAV graphical interface</p>", - "tab": 0 - } - ] - }, - { - "label": "Additional", - "key": "additionalParametersTab", - "components": [ - { - "label": "additionalParameters", - "hideLabel": true, - "type": "container", - "input": true, - "tab": 2, - "key": "additionalParameters", - "components": [ - { - "label": "Admin email", - "type": "email", - "input": true, - "key": "nav#config#ADMIN_MAIL", - "inputFormat": "plain", - "tab": 2 - }, - { - "label": "Default sender email", - "type": "email", - "input": true, - "key": "nav#config#DEFAULT_FROM_EMAIL", - "inputFormat": "plain", - "tab": 2 - } - ] - } - ] - }, - { - "label": "Advanced", - "key": "advancedTab", - "components": [ - { - "label": "Advanced", - "hideLabel": true, - "tableView": true, - "type": "container", - "input": true, - "tab": 1, - "key": "advanced", - "components": [ - { - "label": "Storage space (GB):", - "type": "number", - "input": true, - "key": "storageSpace", - "placeholder": "Default value: 20GB", - "tab": 1 - } - ] - } - ] - } - ], - "type": "tabs", - "input": false, - "key": "tabs" - }, - { - "type": "button", - "label": "Apply configuration", - "disableOnInvalid": true, - "theme": "primary", - "input": false, - "tableView": true - } - ] - } - }, - "configUpdateWizardTemplate": null, - "appDeploymentSpec": { - "supportedDeploymentEnvironments": [ - "KUBERNETES" - ], - "kubernetesTemplate": { - "chart": { - "name": "nav", - "version": "2.0.1" - } - }, - "storageVolumes": [ - { - "type": "MAIN", - "defaultStorageSpace": 20, - "deployParameters": { - "PERSISTENCE_ENABLED": "persistence.enabled", - "PERSISTENCE_NAME": "persistence.name", - "PERSISTENCE_STORAGE_CLASS": "persistence.storageClass", - "PERSISTENCE_STORAGE_SPACE": "persistence.size" - } - } - ], - "deployParameters": { - "SMTP_HOSTNAME": "nav.config.EMAIL_HOST", - "SMTP_PORT": "nav.config.EMAIL_PORT", - "SMTP_USERNAME": "nav.config.EMAIL_HOST_USER", - "SMTP_PASSWORD": "nav.config.EMAIL_HOST_PASSWORD" - }, - "exposesWebUI": true, - "accessMethods": [ - { - "type": "DEFAULT", - "name": "NAV", - "tag": "nav", - "deployParameters": { - "INGRESS_ENABLED": "ingress.enabled", - "INGRESS_HOSTS": "ingress.hosts", - "INGRESS_TLS_ENABLED": "ingress.tls.enabled", - "INGRESS_CLASS": "ingress.class", - "INGRESS_LETSENCRYPT": "ingress.tls.acme", - "INGRESS_WILDCARD_OR_ISSUER": "ingress.tls.certOrIssuer" - } - } - ] - }, - "appConfigurationSpec": { - "configFileRepositoryRequired": false - } - } -} \ No newline at end of file diff --git a/src/test/shell/data/apps/app26-uptime-kuma.json b/src/test/shell/data/apps/app03-uptime-kuma.json similarity index 98% rename from src/test/shell/data/apps/app26-uptime-kuma.json rename to src/test/shell/data/apps/app03-uptime-kuma.json index 5986f426dc0534793b4121df45920636008c35cc..6033a1354ec2f8ddc356486d6d28a4efece5413a 100644 --- a/src/test/shell/data/apps/app26-uptime-kuma.json +++ b/src/test/shell/data/apps/app03-uptime-kuma.json @@ -7,7 +7,7 @@ "wwwUrl": "https://uptime.kuma.pet/docs/", "sourceUrl": "https://github.com/louislam/uptime-kuma", "issuesUrl": "https://github.com/louislam/uptime-kuma/issues", - "nmaasDocumentationUrl": "https://wiki.geant.org/display/NMAAS/NMaaS+Tools#NMaaSTools-UptimeKuma", + "nmaasDocumentationUrl": "https://docs.nmaas.eu/nmaas-applications/tutorials/uptime-kuma/", "descriptions": [ { "language": "en", @@ -40,7 +40,7 @@ "application": { "id": null, "name": "Uptime Kuma", - "version": "1.21.3", + "version": "1.23.11", "configWizardTemplate": { "template": { "components": [ @@ -148,7 +148,7 @@ "kubernetesTemplate": { "chart": { "name": "nmaas-uptimekuma", - "version": "2.0.0" + "version": "2.0.1" } }, "deployParameters": { diff --git a/src/test/shell/data/apps/app30-healthchecks.json b/src/test/shell/data/apps/app04-healthchecks.json similarity index 98% rename from src/test/shell/data/apps/app30-healthchecks.json rename to src/test/shell/data/apps/app04-healthchecks.json index fbe1193c1952c62d8fdab1518cfb17f4872455c0..d1616f604773770b5bc79b869a202599ec77e26f 100644 --- a/src/test/shell/data/apps/app30-healthchecks.json +++ b/src/test/shell/data/apps/app04-healthchecks.json @@ -7,7 +7,7 @@ "wwwUrl": "https://healthchecks.io/", "sourceUrl": "https://github.com/healthchecks/healthchecks", "issuesUrl": "https://github.com/healthchecks/healthchecks/issues", - "nmaasDocumentationUrl": "https://wiki.geant.org/display/NMAAS/nmaas+Tools#NMaaSTools-Healthchecks", + "nmaasDocumentationUrl": "https://wiki.geant.org/display/NMAAS/NMaaS+Tools#NMaaSTools-Healthchecks", "descriptions": [ { "language": "en", @@ -40,7 +40,7 @@ "application": { "id": null, "name": "Healthchecks", - "version": "2.1", + "version": "3.1.0", "configWizardTemplate": { "template": { "components": [ @@ -170,7 +170,7 @@ "kubernetesTemplate": { "chart": { "name": "nmaas-healthchecks", - "version": "1.0.2" + "version": "1.1.0" }, "mainDeploymentName": "nmaas-healthchecks" }, diff --git a/src/test/shell/data/apps/app04-opennti.json b/src/test/shell/data/apps/app04-opennti.json deleted file mode 100644 index 85cd1c993dda3b8f4b813c919fb5f64bd5e95c3f..0000000000000000000000000000000000000000 --- a/src/test/shell/data/apps/app04-opennti.json +++ /dev/null @@ -1,303 +0,0 @@ -{ - "applicationBase": { - "id": null, - "name": "OpenNTI", - "license": "Apache 2.0", - "licenseUrl": "https://www.apache.org/licenses/LICENSE-2.0", - "wwwUrl": "http://open-nti.readthedocs.io/en/latest", - "sourceUrl": "https://github.com/Juniper/open-nti", - "issuesUrl": "https://github.com/Juniper/open-nti/issues", - "nmaasDocumentationUrl": null, - "descriptions": [ - { - "language": "en", - "briefDescription": "Open Network Telemetry Collector built with open source tools.", - "fullDescription": "OpenNTI is a container packaged with all tools needed to collect and visualize time series data from network devices. Data can be collected from different sources: Data Collection Agent - Collect data on devices using CLI/Shell or Netconf, Data Streaming Collector - Take all data streamed by Juniper devices as Input (JTI, Analyticsd, soon Openconfig with gRPC) or Statsd interface - Accept any Statsd packets. It's pre-configured with all tools and with a default dashboard .. Send it data, it will graph it" - }, - { - "language": "de", - "briefDescription": "Open Network Telemetry Collector built with open source tools.", - "fullDescription": "OpenNTI is a container packaged with all tools needed to collect and visualize time series data from network devices. Data can be collected from different sources: Data Collection Agent - Collect data on devices using CLI/Shell or Netconf, Data Streaming Collector - Take all data streamed by Juniper devices as Input (JTI, Analyticsd, soon Openconfig with gRPC) or Statsd interface - Accept any Statsd packets. It's pre-configured with all tools and with a default dashboard .. Send it data, it will graph it" - }, - { - "language": "fr", - "briefDescription": "Open Network Telemetry Collector built with open source tools.", - "fullDescription": "OpenNTI is a container packaged with all tools needed to collect and visualize time series data from network devices. Data can be collected from different sources: Data Collection Agent - Collect data on devices using CLI/Shell or Netconf, Data Streaming Collector - Take all data streamed by Juniper devices as Input (JTI, Analyticsd, soon Openconfig with gRPC) or Statsd interface - Accept any Statsd packets. It's pre-configured with all tools and with a default dashboard .. Send it data, it will graph it" - }, - { - "language": "pl", - "briefDescription": "Open Network Telemetry Collector napisany za pomocą narzędzi open source.", - "fullDescription": "OpenNTI is a container packaged with all tools needed to collect and visualize time series data from network devices. Data can be collected from different sources: Data Collection Agent - Collect data on devices using CLI/Shell or Netconf, Data Streaming Collector - Take all data streamed by Juniper devices as Input (JTI, Analyticsd, soon Openconfig with gRPC) or Statsd interface - Accept any Statsd packets. It's pre-configured with all tools and with a default dashboard .. Send it data, it will graph it" - } - ], - "tags": [ - "management", - "monitoring", - "telemetry" - ] - }, - "application": { - "id": null, - "name": "OpenNTI", - "version": "0.1", - "configWizardTemplate": { - "template": { - "components": [ - { - "label": "Tabs", - "components": [ - { - "label": "Base", - "key": "configTab", - "components": [ - { - "label": "Mandatory parameters", - "hideLabel": true, - "tableView": true, - "type": "container", - "input": true, - "tab": 0, - "key": "mandatoryParameters", - "components": [ - { - "label": "Default user username", - "type": "textfield", - "key": "openntiUsername", - "input": true, - "inputFormat": "plain", - "validate": { - "required": true - } - }, - { - "label": "Default user password", - "type": "password", - "key": "openntiPassword", - "input": true, - "inputFormat": "plain", - "validate": { - "required": true - } - } - ] - }, - { - "label": "Configuration", - "hideLabel": true, - "tableView": true, - "type": "container", - "input": true, - "tab": 0, - "key": "configuration", - "components": [ - { - "label": "Targets", - "hideLabel": true, - "tab": 0, - "disableAddingRemovingRows": false, - "addAnother": "Add device", - "addAnotherPosition": "bottom", - "multiple": true, - "tableView": true, - "type": "datagrid", - "input": true, - "key": "inputs#snmp", - "validate": { - "required": true - }, - "components": [ - { - "label": "Agent (IP address)", - "hideLabel": true, - "tableView": true, - "type": "textfield", - "input": true, - "tab": 0, - "key": "agents", - "placeholder": "127.0.0.1", - "defaultValue": "", - "validate": { - "required": true, - "pattern": "^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$", - "unique": false, - "customMessage": "", - "json": "" - }, - "inputFormat": "plain" - }, - { - "label": "SNMP community", - "type": "textfield", - "input": true, - "key": "community", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain" - }, - { - "label": "SNMP version", - "placeholder": "Select SNMP version", - "tableView": true, - "type": "select", - "input": true, - "key": "version", - "defaultValue": "", - "validate": { - "required": true - }, - "data": { - "values": [ - { - "label": "1", - "value": "1" - }, - { - "label": "2c", - "value": "2c" - }, - { - "label": "3", - "value": "3" - } - ] - }, - "valueProperty": "value", - "tab": 0 - }, - { - "label": "SNMP name", - "placeholder": "Select SNMP name", - "tableView": true, - "type": "textfield", - "input": true, - "key": "name", - "defaultValue": "", - "validate": { - "required": true - } - }, - { - "label": "Fields", - "hideLabel": false, - "disableAddingRemovingRows": false, - "addAnother": "Add field", - "addAnotherPosition": "bottom", - "multiple": true, - "tableView": true, - "alwaysEnabled": false, - "type": "datagrid", - "input": true, - "key": "field", - "defaultValue": [], - "components": [ - { - "label": "Field name", - "type": "textfield", - "input": true, - "inputFormat": "plain", - "key": "name", - "row": "0-4" - }, - { - "label": "Field oid", - "type": "textfield", - "input": true, - "inputFormat": "plain", - "key": "oid", - "validate": { - "pattern": "^.[0-9][0-9.]*[0-9]" - }, - "row": "0-0" - } - ], - "row": "0-5" - } - ] - } - ] - } - ] - }, - { - "label": "Advanced", - "key": "advancedTab", - "components": [ - { - "label": "Advanced", - "hideLabel": true, - "tableView": true, - "type": "container", - "input": true, - "tab": 1, - "key": "advanced", - "components": [ - { - "label": "Storage space (GB):", - "type": "number", - "input": true, - "key": "storageSpace", - "placeholder": "Default value: 20GB", - "tab": 1 - } - ] - } - ] - } - ], - "type": "tabs", - "input": false, - "key": "tabs" - }, - { - "type": "button", - "label": "Apply configuration", - "disableOnInvalid": true, - "theme": "primary", - "input": false, - "tableView": true - } - ] - } - }, - "configUpdateWizardTemplate": null, - "appDeploymentSpec": { - "supportedDeploymentEnvironments": [ - "KUBERNETES" - ], - "kubernetesTemplate": { - "chart": { - "name": "nmaas-opennti", - "version": "0.0.2-alfa" - } - }, - "defaultStorageSpace": 20, - "exposesWebUI": true, - "accessMethods": [ - { - "type": "DEFAULT", - "name": "OpenNTI", - "tag": "opennti", - "deployParameters": { - "INGRESS_ENABLED": "ingress.enabled", - "INGRESS_HOSTS": "ingress.hosts", - "INGRESS_TLS_ENABLED": "ingress.tls.enabled", - "INGRESS_CLASS": "ingress.class", - "INGRESS_LETSENCRYPT": "ingress.tls.acme", - "INGRESS_WILDCARD_OR_ISSUER": "ingress.tls.certOrIssuer" - } - } - ] - }, - "appConfigurationSpec": { - "configFileRepositoryRequired": true, - "templates": [ - { - "configFileName": "hosts.yaml", - "configFileTemplateContent": "<#list targets as target>\n${target.ipAddress}: generic\n</#list>" - } - ] - } - } -} \ No newline at end of file diff --git a/src/test/shell/data/apps/app36-postgresql.json b/src/test/shell/data/apps/app05-postgresql.json similarity index 96% rename from src/test/shell/data/apps/app36-postgresql.json rename to src/test/shell/data/apps/app05-postgresql.json index 18ccd220577b86d50174dec91b7ab91ab008a806..12996100a4e82cc9b096512add1fc742a41c8e06 100644 --- a/src/test/shell/data/apps/app36-postgresql.json +++ b/src/test/shell/data/apps/app05-postgresql.json @@ -31,10 +31,7 @@ } ], "tags": [ - "DBMS", - "Relational Database", - "SQL", - "Development Tools" + "DBMS", "Relational Database", "Development Tools", "SQL" ] }, "application": { @@ -138,21 +135,16 @@ "url": "https://artifactory.software.geant.org/artifactory/nmaas-helm-mirror" } }, - "deployParameters": { - "DOMAIN_CODENAME": "primary.service.annotations.\"metallb\\.universe\\.tf/address-pool\"=%VALUE%" - }, - "globalDeployParameters": { - "primary.persistence.size": "8Gi", - "primary.service.type": "LoadBalancer" - }, - "storageVolumes": [], - "exposesWebUI": true, "allowSshAccess": false, + "allowLogAccess": false, + "exposesWebUI": true, + "storageVolumes": [], "accessMethods": [ { "type": "INTERNAL", "name": "ip", "tag": "postgresql", + "conditionType": "NONE", "deployParameters": { "K8S_SERVICE_PORT": "22" } @@ -161,17 +153,25 @@ "type": "LOCAL", "name": "service", "tag": "postgresql", + "conditionType": "NONE", "deployParameters": { "K8S_SERVICE_PORT": "22" } } - ] + ], + "deployParameters": { + "DOMAIN_CODENAME": "primary.service.annotations.\"metallb\\.universe\\.tf/address-pool\"=%VALUE%" + }, + "globalDeployParameters": { + "primary.persistence.size": "8Gi", + "primary.service.type": "LoadBalancer" + } }, "appConfigurationSpec": { + "templates": [], "configFileRepositoryRequired": false, "configUpdateEnabled": false, - "termsAcceptanceRequired": false, - "templates": [] + "termsAcceptanceRequired": false } } -} +} \ No newline at end of file diff --git a/src/test/shell/data/apps/app06-grafana_v7.2.0.json b/src/test/shell/data/apps/app06-grafana_v7.2.0.json deleted file mode 100644 index cd2c2b922c32b733825c7fc2aa705f0e714e7ee0..0000000000000000000000000000000000000000 --- a/src/test/shell/data/apps/app06-grafana_v7.2.0.json +++ /dev/null @@ -1,283 +0,0 @@ -{ - "id": null, - "name": "Grafana", - "version": "7.2.0", - "configWizardTemplate": { - "template": { - "components": [ - { - "label": "Tabs", - "components": [ - { - "label": "Base", - "key": "configTab", - "components": [ - { - "label": "Mandatory parameters", - "hideLabel": true, - "tableView": true, - "type": "container", - "input": true, - "tab": 0, - "key": "mandatoryParameters", - "components": [ - { - "label": "Grafana admin username", - "type": "textfield", - "key": "adminUser", - "input": true, - "inputFormat": "plain", - "validate": { - "required": true - } - }, - { - "label": "Grafana admin password", - "type": "password", - "key": "adminPassword", - "input": true, - "inputFormat": "plain", - "validate": { - "required": true - } - }, - { - "label": "Access options", - "type": "radio", - "input": true, - "tableView": true, - "inputType": "radio", - "key": "accessmethods#public#grafana", - "values": [ - { - "value": "yes", - "label": "Public" - }, - { - "value": "no", - "label": "VPN" - } - ], - "defaultValue": "yes", - "validate": { - "required": true - }, - "labelPosition": "top", - "optionsLabelPosition": "right" - } - ] - }, - { - "label": "Configuration", - "hideLabel": true, - "tableView": true, - "type": "container", - "input": true, - "tab": 0, - "key": "configuration", - "components": [ - { - "label": "Connect to existing Prometheus instance", - "type": "checkbox", - "defaultValue": false, - "key": "use_name", - "input": true, - "inputFormat": "plain" - }, - { - "label": "Existing Prometheus instance", - "hideLabel": true, - "optionsLabelPosition": "right", - "values": [ - { - "label": "NMaaS Prometheus instance", - "value": "inCluster" - }, - { - "label": "External Prometheus instance", - "value": "external" - } - ], - "inline": true, - "type": "radio", - "key": "prometheus", - "defaultValue": "external", - "conditional": { - "show": true, - "when": "use_name", - "eq": true - } - }, - { - "label": "Data source name", - "type": "textfield", - "input": true, - "key": "source_name", - "validate": { - "required": true - }, - "inputFormat": "plain", - "customConditional": "show = (row.use_name === true)" - }, - { - "label": "Prometheus instance address", - "type": "textfield", - "input": true, - "key": "prom_ext_addr", - "validate": { - "required": true - }, - "inputFormat": "plain", - "customConditional": "show = (row.use_name === true && row.prometheus === 'external')" - }, - { - "label": "Select Prometheus instance", - "type": "select", - "key": "prom_int_addr", - "data": { - "values": "insert-app-instances-here" - }, - "validate": { - "required": true - }, - "customConditional": "show = (row.use_name === true && row.prometheus === 'inCluster')" - } - ] - } - ] - }, - { - "label": "Additional", - "key": "additionalParametersTab", - "components": [ - { - "label": "additionalParameters", - "hideLabel": true, - "type": "container", - "input": true, - "tab": 1, - "key": "additionalParameters", - "components": [ - { - "label": "SMTP host (by default uses in-cluster Postfix)", - "type": "textfield", - "input": true, - "key": "smtp#host", - "inputFormat": "plain", - "defaultValue": "nmaas-postfix.nmaas-system:587", - "tab": 1 - }, - { - "label": "SMTP username", - "type": "textfield", - "input": true, - "key": "smtp#user", - "inputFormat": "plain", - "tab": 1 - }, - { - "label": "SMTP user password", - "type": "password", - "input": true, - "key": "smtp#password", - "inputFormat": "plain", - "tab": 1 - } - ] - } - ] - }, - { - "label": "Advanced", - "key": "advancedTab", - "components": [ - { - "label": "Advanced", - "hideLabel": true, - "tableView": true, - "type": "container", - "input": true, - "tab": 2, - "key": "advanced", - "components": [ - { - "label": "Storage space (GB):", - "type": "number", - "input": true, - "key": "storageSpace", - "placeholder": "Default value: 1GB", - "tab": 2 - } - ] - } - ] - } - ], - "type": "tabs", - "input": false, - "key": "tabs" - }, - { - "type": "button", - "label": "Apply configuration", - "disableOnInvalid": true, - "theme": "primary", - "input": false, - "tableView": true - } - ] - } - }, - "configUpdateWizardTemplate": null, - "appDeploymentSpec": { - "supportedDeploymentEnvironments": [ - "KUBERNETES" - ], - "kubernetesTemplate": { - "chart": { - "name": "nmaas-grafana", - "version": "2.0.1" - } - }, - "storageVolumes": [ - { - "type": "MAIN", - "defaultStorageSpace": 1, - "deployParameters": { - "PERSISTENCE_ENABLED": "persistence.enabled", - "PERSISTENCE_NAME": "persistence.name", - "PERSISTENCE_STORAGE_CLASS": "persistence.storageClass", - "PERSISTENCE_STORAGE_SPACE": "persistence.size" - } - } - ], - "globalDeployParameters": { - "image.tag": "7.2.0" - }, - "exposesWebUI": true, - "accessMethods": [ - { - "type": "PUBLIC", - "name": "Grafana", - "tag": "grafana", - "deployParameters": { - "INGRESS_ENABLED": "ingress.enabled", - "INGRESS_HOSTS": "ingress.hosts", - "INGRESS_TLS_ENABLED": "ingress.tls.enabled", - "INGRESS_CLASS": "ingress.class", - "INGRESS_LETSENCRYPT": "ingress.tls.acme", - "INGRESS_WILDCARD_OR_ISSUER": "ingress.tls.certOrIssuer" - } - } - ] - }, - "appConfigurationSpec": { - "configFileRepositoryRequired": true, - "templates": [ - { - "configFileName": "datasource.yaml", - "configFileTemplateContent": "<#if source_name?has_content>apiVersion: 1\ndeleteDatasources:\n - name: ${source_name}\n orgId: 1\ndatasources:\n- name: ${source_name}\n type: prometheus\n access: proxy\n orgId: 1\n url: \"http://<#if prom_ext_addr?has_content>${prom_ext_addr}<#else>${prom_int_addr}</#if>\"\n basicAuth: false\n isDefault: true\n version: 1\n editable: true</#if>" - } - ] - } -} \ No newline at end of file diff --git a/src/test/shell/data/apps/app07-bastion.json b/src/test/shell/data/apps/app07-bastion.json deleted file mode 100644 index c31ad50314ca09f38ea16611f6765d663e1c94b9..0000000000000000000000000000000000000000 --- a/src/test/shell/data/apps/app07-bastion.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "applicationBase": { - "id": null, - "name": "Bastion-NG", - "license": "MIT License", - "licenseUrl": "https://opensource.org/license/mit/", - "wwwUrl": "https://github.com/nmaas-platform/nmaas-bastion-ng", - "sourceUrl": "https://github.com/nmaas-platform/nmaas-bastion-ng", - "issuesUrl": "https://github.com/nmaas-platform/nmaas-bastion-ng/issues", - "nmaasDocumentationUrl": "https://wiki.geant.org/display/NMAAS/nmaas+Tools#Bastion-NG", - "descriptions": [ - { - "language": "en", - "briefDescription": "Bastion-NG is next-generation versatile Bastion container", - "fullDescription": "Bastion-NG can serve multiple purposes, including a remote development environment (via VSCode), jump host for accessing firewalled resources, or simply as a testing ground for new software." - }, - { - "language": "de", - "briefDescription": "Bastion-NG is next-generation versatile Bastion container", - "fullDescription": "Bastion-NG can serve multiple purposes, including a remote development environment (via VSCode), jump host for accessing firewalled resources, or simply as a testing ground for new software." - }, - { - "language": "fr", - "briefDescription": "Bastion-NG is next-generation versatile Bastion container", - "fullDescription": "Bastion-NG can serve multiple purposes, including a remote development environment (via VSCode), jump host for accessing firewalled resources, or simply as a testing ground for new software." - }, - { - "language": "pl", - "briefDescription": "Bastion-NG is next-generation versatile Bastion container", - "fullDescription": "Bastion-NG can serve multiple purposes, including a remote development environment (via VSCode), jump host for accessing firewalled resources, or simply as a testing ground for new software." - } - ], - "tags": [ - "Bastion", - "Jump Host", - "Remote Development", - "SSH" - ] - }, - "application": { - "id": null, - "name": "Bastion-NG", - "version": "22.04.0", - "configWizardTemplate": { - "template": { - "components": [ - { - "label": "Tabs", - "components": [ - { - "label": "Base", - "key": "configTab", - "components": [ - { - "label": "Additional Parameters", - "hideLabel": true, - "type": "container", - "input": true, - "tab": 0, - "key": "additionalParameters", - "components": [ - { - "label": "Username", - "type": "textfield", - "input": true, - "key": "properties#username", - "inputFormat": "plain", - "validate": { - "required": true - }, - "tab": 0 - }, - { - "label": "SSH keys (comma separated)", - "type": "textfield", - "input": true, - "key": "properties#ssh_keys", - "inputFormat": "plain", - "validate": { - "required": true - }, - "tab": 0 - } - ] - } - ] - } - ], - "type": "tabs", - "input": false, - "key": "tabs" - }, - { - "type": "button", - "label": "Apply configuration", - "disableOnInvalid": true, - "theme": "primary", - "input": false, - "tableView": true - } - ] - } - }, - "configUpdateWizardTemplate": null, - "appDeploymentSpec": { - "supportedDeploymentEnvironments": [ - "KUBERNETES" - ], - "kubernetesTemplate": { - "chart": { - "name": "nmaas-bastion-ng", - "version": "3.0.1" - }, - "mainDeploymentName": "nmaas-bastion-ng" - }, - "deployParameters": { - "DOMAIN_CODENAME": "service.annotations.\"metallb\\.universe\\.tf/address-pool\"=%VALUE%" - }, - "globalDeployParameters": { - "persistence.size": "10Gi", - "properties.flavor": "python", - "service.type": "LoadBalancer" - }, - "storageVolumes": [], - "exposesWebUI": false, - "allowSshAccess": false, - "accessMethods": [ - { - "type": "INTERNAL", - "name": "SSH", - "tag": "bastion", - "deployParameters": { - "K8S_SERVICE_SUFFIX": "nmaas-bastion-ng", - "K8S_SERVICE_PORT": "22" - } - } - ] - }, - "appConfigurationSpec": { - "configFileRepositoryRequired": false - } - } -} diff --git a/src/test/shell/data/apps/app08-perfsonar-pwa.json b/src/test/shell/data/apps/app08-perfsonar-pwa.json deleted file mode 100644 index 3f8977807139e12571f062a6bf47af2466dbf09b..0000000000000000000000000000000000000000 --- a/src/test/shell/data/apps/app08-perfsonar-pwa.json +++ /dev/null @@ -1,213 +0,0 @@ -{ - "applicationBase": { - "id": null, - "name": "pSConfig Web Admin", - "license": "Apache 2.0", - "licenseUrl": "https://www.apache.org/licenses/LICENSE-2.0", - "wwwUrl": "http://docs.perfsonar.net/pwa.html", - "sourceUrl": "https://github.com/perfsonar/psconfig-web", - "issuesUrl": "https://github.com/perfsonar/psconfig-web/issues", - "nmaasDocumentationUrl": "https://wiki.geant.org/display/NMAAS/NMaaS+Tools#NMaaSTools-pSConfigWebAdmin(perfSONAR)", - "descriptions": [ - { - "language": "en", - "briefDescription": "Web-based UI for perfSONAR administrators", - "fullDescription": "pSConfig Web Admin (PWA) is a web-based UI for perfSONAR administrators to define and publish MeshConfig/pSConfig meshes, which automates tests executed by test nodes, and provides topology information to various services, such as MadDash.<br>In addition to providing a user-friendly interface for creating pSConfig/MeshConfig output to define meshes, PWA allows multiple users to collaborate on the configuration of testspecs, host groups, and configs. Users can be designated super-admins or normal users, depending on how much access they need. It is also possible to allow users to edit some meshes, but not others." - }, - { - "language": "de", - "briefDescription": "Web-based UI for perfSONAR administrators", - "fullDescription": "pSConfig Web Admin (PWA) is a web-based UI for perfSONAR administrators to define and publish MeshConfig/pSConfig meshes, which automates tests executed by test nodes, and provides topology information to various services, such as MadDash.<br>In addition to providing a user-friendly interface for creating pSConfig/MeshConfig output to define meshes, PWA allows multiple users to collaborate on the configuration of testspecs, host groups, and configs. Users can be designated super-admins or normal users, depending on how much access they need. It is also possible to allow users to edit some meshes, but not others." - }, - { - "language": "fr", - "briefDescription": "Web-based UI for perfSONAR administrators", - "fullDescription": "pSConfig Web Admin (PWA) is a web-based UI for perfSONAR administrators to define and publish MeshConfig/pSConfig meshes, which automates tests executed by test nodes, and provides topology information to various services, such as MadDash.<br>In addition to providing a user-friendly interface for creating pSConfig/MeshConfig output to define meshes, PWA allows multiple users to collaborate on the configuration of testspecs, host groups, and configs. Users can be designated super-admins or normal users, depending on how much access they need. It is also possible to allow users to edit some meshes, but not others." - }, - { - "language": "pl", - "briefDescription": "Web-based UI for perfSONAR administrators", - "fullDescription": "pSConfig Web Admin (PWA) is a web-based UI for perfSONAR administrators to define and publish MeshConfig/pSConfig meshes, which automates tests executed by test nodes, and provides topology information to various services, such as MadDash.<br>In addition to providing a user-friendly interface for creating pSConfig/MeshConfig output to define meshes, PWA allows multiple users to collaborate on the configuration of testspecs, host groups, and configs. Users can be designated super-admins or normal users, depending on how much access they need. It is also possible to allow users to edit some meshes, but not others." - } - ], - "tags": [ - "management", - "configuration" - ] - }, - "application": { - "id": null, - "name": "pSConfig Web Admin", - "version": "4.2.4", - "configWizardTemplate": { - "template": { - "components": [ - { - "label": "Tabs", - "components": [ - { - "label": "Base", - "key": "configTab", - "components": [ - { - "label": "Mandatory parameters", - "hideLabel": true, - "type": "container", - "input": true, - "tab": 0, - "key": "mandatoryParameters", - "components": [ - { - "label": "Default username", - "type": "textfield", - "input": true, - "key": "nmaas-perfsonar-centralmanagement-sca-auth#env#username", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain" - }, - { - "label": "Default password", - "type": "password", - "input": true, - "key": "nmaas-perfsonar-centralmanagement-sca-auth#env#password", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain" - }, - { - "label": "Default email", - "type": "email", - "input": true, - "key": "nmaas-perfsonar-centralmanagement-sca-auth#env#email", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain" - } - ] - } - ] - }, - { - "label": "Advanced", - "key": "advancedTab", - "components": [ - { - "label": "Advanced", - "hideLabel": true, - "tableView": true, - "type": "container", - "input": true, - "tab": 1, - "key": "advanced", - "components": [ - { - "label": "Storage space (GB):", - "type": "number", - "input": true, - "key": "storageSpace", - "placeholder": "Default value: 1GB", - "tab": 1 - } - ] - } - ] - } - ], - "type": "tabs", - "input": false, - "key": "tabs" - }, - { - "type": "button", - "label": "Apply configuration", - "disableOnInvalid": true, - "theme": "primary", - "input": false, - "tableView": true - } - ] - } - }, - "configUpdateWizardTemplate": null, - "appDeploymentSpec": { - "supportedDeploymentEnvironments": [ - "KUBERNETES" - ], - "kubernetesTemplate": { - "chart": { - "name": "nmaas-perfsonar-pwa", - "version": "2.1.0" - }, - "mainDeploymentName": "pwa-admin" - }, - "storageVolumes": [ - { - "type": "MAIN", - "defaultStorageSpace": 1, - "deployParameters": { - "PERSISTENCE_ENABLED": "nmaas-perfsonar-centralmanagement-sca-auth.persistence.enabled", - "PERSISTENCE_NAME": "nmaas-perfsonar-centralmanagement-sca-auth.persistence.name", - "PERSISTENCE_STORAGE_CLASS": "nmaas-perfsonar-centralmanagement-sca-auth.persistence.storageClass", - "PERSISTENCE_STORAGE_SPACE": "nmaas-perfsonar-centralmanagement-sca-auth.persistence.size" - } - }, - { - "type": "SHARED", - "defaultStorageSpace": 1, - "deployParameters": { - "PERSISTENCE_ENABLED": "nmaas-perfsonar-centralmanagement-pwa-pub.persistence.enabled", - "PERSISTENCE_NAME": "nmaas-perfsonar-centralmanagement-pwa-pub.persistence.name", - "PERSISTENCE_STORAGE_CLASS": "nmaas-perfsonar-centralmanagement-pwa-pub.persistence.storageClass", - "PERSISTENCE_STORAGE_SPACE": "nmaas-perfsonar-centralmanagement-pwa-pub.persistence.size" - } - }, - { - "type": "SHARED", - "defaultStorageSpace": 1, - "deployParameters": { - "PERSISTENCE_ENABLED": "nmaas-perfsonar-centralmanagement-pwa-admin.persistence.enabled", - "PERSISTENCE_NAME": "nmaas-perfsonar-centralmanagement-pwa-admin.persistence.name", - "PERSISTENCE_STORAGE_CLASS": "nmaas-perfsonar-centralmanagement-pwa-admin.persistence.storageClass", - "PERSISTENCE_STORAGE_SPACE": "nmaas-perfsonar-centralmanagement-pwa-admin.persistence.size" - } - }, - { - "type": "SHARED", - "defaultStorageSpace": 1, - "deployParameters": { - "PERSISTENCE_ENABLED": "nmaas-perfsonar-centralmanagement-nginx.persistence.enabled", - "PERSISTENCE_NAME": "nmaas-perfsonar-centralmanagement-nginx.persistence.name", - "PERSISTENCE_STORAGE_CLASS": "nmaas-perfsonar-centralmanagement-nginx.persistence.storageClass", - "PERSISTENCE_STORAGE_SPACE": "nmaas-perfsonar-centralmanagement-nginx.persistence.size" - } - } - ], - "exposesWebUI": true, - "accessMethods": [ - { - "type": "DEFAULT", - "name": "PWA", - "tag": "pwa", - "deployParameters": { - "INGRESS_ENABLED": "nmaas-perfsonar-centralmanagement-nginx.ingress.enabled", - "INGRESS_HOSTS": "nmaas-perfsonar-centralmanagement-nginx.ingress.hosts", - "INGRESS_TLS_ENABLED": "nmaas-perfsonar-centralmanagement-nginx.ingress.tls.enabled", - "INGRESS_CLASS": "nmaas-perfsonar-centralmanagement-nginx.ingress.class", - "INGRESS_LETSENCRYPT": "nmaas-perfsonar-centralmanagement-nginx.ingress.tls.acme", - "INGRESS_WILDCARD_OR_ISSUER": "nmaas-perfsonar-centralmanagement-nginx.ingress.tls.certOrIssuer" - } - } - ] - }, - "appConfigurationSpec": { - "configFileRepositoryRequired": false - } - } -} \ No newline at end of file diff --git a/src/test/shell/data/apps/app09-librebooking.json b/src/test/shell/data/apps/app09-librebooking.json deleted file mode 100644 index 9f5bb5c5e78344c2f17a3ea249e14f4d2d6cbd16..0000000000000000000000000000000000000000 --- a/src/test/shell/data/apps/app09-librebooking.json +++ /dev/null @@ -1,196 +0,0 @@ -{ - "applicationBase": { - "id": null, - "name": "LibreBooking", - "license": "GPL 3.0", - "licenseUrl": "https://www.gnu.org/licenses/gpl-3.0.html", - "wwwUrl": "https://www.bookedscheduler.com", - "sourceUrl": "https://github.com/LibreBooking/app", - "issuesUrl": "https://github.com/LibreBooking/app/issues", - "nmaasDocumentationUrl": "https://wiki.geant.org/display/NMAAS/NMaaS+Tools#NMaaSTools-Booked", - "descriptions": [ - { - "language": "en", - "briefDescription": "Web-based calendar and schedule", - "fullDescription": "A web-based calendar and resource scheduling system that allows administered management of reservations on any number of resources. Typical applications are conference room or machine reservation management." - }, - { - "language": "de", - "briefDescription": "Web-based calendar and schedule", - "fullDescription": "A web-based calendar and resource scheduling system that allows administered management of reservations on any number of resources. Typical applications are conference room or machine reservation management." - }, - { - "language": "fr", - "briefDescription": "Web-based calendar and schedule", - "fullDescription": "A web-based calendar and resource scheduling system that allows administered management of reservations on any number of resources. Typical applications are conference room or machine reservation management." - }, - { - "language": "pl", - "briefDescription": "Web-based calendar and schedule", - "fullDescription": "A web-based calendar and resource scheduling system that allows administered management of reservations on any number of resources. Typical applications are conference room or machine reservation management." - } - ], - "tags": [ - "management", - "calendar" - ] - }, - "application": { - "id": null, - "name": "LibreBooking", - "version": "2.8.5", - "configWizardTemplate": { - "template": { - "components": [ - { - "label": "Tabs", - "components": [ - { - "label": "Base", - "key": "configTab", - "components": [ - { - "label": "Mandatory parameters", - "hideLabel": true, - "type": "container", - "input": true, - "tab": 0, - "key": "mandatoryParameters", - "components": [ - { - "label": "Administrator user email address", - "type": "email", - "input": true, - "key": "booked#config#BOOKED_ADMIN_EMAIL", - "inputFormat": "plain", - "validate": { - "required": true - }, - "tab": 0 - }, - { - "type": "htmlelement", - "input": false, - "content": "<p>Default credentials for administrator user are: admin/password</p>", - "tab": 0 - }, - { - "label": "Enable email notifications", - "type": "checkbox", - "defaultValue": true, - "input": true, - "key": "booked#config#BOOKED_ENABLE_EMAIL", - "inputFormat": "plain", - "tab": 0 - }, - { - "label": "Enable user registration", - "type": "checkbox", - "defaultValue": false, - "input": true, - "key": "booked#config#BOOKED_REGISTRATION", - "inputFormat": "plain", - "tab": 0 - }, - { - "label": "Enable use of Booked API", - "type": "checkbox", - "defaultValue": false, - "input": true, - "key": "booked#config#BOOKED_ENABLE_API", - "inputFormat": "plain", - "tab": 0 - } - ] - } - ] - }, - { - "label": "Advanced", - "key": "advancedTab", - "components": [ - { - "label": "Advanced", - "hideLabel": true, - "tableView": true, - "type": "container", - "input": true, - "tab": 1, - "key": "advanced", - "components": [ - { - "label": "Storage space (GB):", - "type": "number", - "input": true, - "key": "storageSpace", - "placeholder": "Default value: 1GB", - "tab": 1 - } - ] - } - ] - } - ], - "type": "tabs", - "input": false, - "key": "tabs" - }, - { - "type": "button", - "label": "Apply configuration", - "disableOnInvalid": true, - "theme": "primary", - "input": false, - "tableView": true - } - ] - } - }, - "configUpdateWizardTemplate": null, - "appDeploymentSpec": { - "supportedDeploymentEnvironments": [ - "KUBERNETES" - ], - "kubernetesTemplate": { - "chart": { - "name": "nmaas-booked", - "version": "3.0.0" - } - }, - "storageVolumes": [ - { - "type": "MAIN", - "defaultStorageSpace": 1, - "deployParameters": { - "PERSISTENCE_ENABLED": "persistence.enabled", - "PERSISTENCE_NAME": "persistence.name", - "PERSISTENCE_STORAGE_CLASS": "persistence.storageClass", - "PERSISTENCE_STORAGE_SPACE": "persistence.size" - } - } - ], - "deployParameters": { - "BASE_URL": "baseDomain" - }, - "exposesWebUI": true, - "accessMethods": [ - { - "type": "DEFAULT", - "name": "Booked", - "tag": "booked", - "deployParameters": { - "INGRESS_ENABLED": "ingress.enabled", - "INGRESS_HOSTS": "ingress.hosts", - "INGRESS_TLS_ENABLED": "ingress.tls.enabled", - "INGRESS_CLASS": "ingress.class", - "INGRESS_LETSENCRYPT": "ingress.tls.acme", - "INGRESS_WILDCARD_OR_ISSUER": "ingress.tls.certOrIssuer" - } - } - ] - }, - "appConfigurationSpec": { - "configFileRepositoryRequired": false - } - } -} \ No newline at end of file diff --git a/src/test/shell/data/apps/app10-spa-inventory.json b/src/test/shell/data/apps/app10-spa-inventory.json deleted file mode 100644 index 8e3bf5aa2509b70b5b5ea748d2e148ef3b5ac50e..0000000000000000000000000000000000000000 --- a/src/test/shell/data/apps/app10-spa-inventory.json +++ /dev/null @@ -1,173 +0,0 @@ -{ - "applicationBase": { - "id": null, - "name": "SPA Inventory", - "license": "", - "licenseUrl": "", - "wwwUrl": "https://wiki.geant.org/display/NETDEV/SPA", - "sourceUrl": "", - "issuesUrl": "", - "nmaasDocumentationUrl": "https://wiki.geant.org/display/NMAAS/NMaaS+Tools#NMaaSTools-SPAInventory", - "descriptions": [ - { - "language": "en", - "briefDescription": "Resource and Service Inventory with TMF-compliant API", - "fullDescription": "SPA Inventory - a database that stores the information about topology resources and service instances and offers TMF Open APIs for standardised access." - }, - { - "language": "de", - "briefDescription": "Resource and Service Inventory with TMF-compliant API", - "fullDescription": "SPA Inventory - a database that stores the information about topology resources and service instances and offers TMF Open APIs for standardised access." - }, - { - "language": "fr", - "briefDescription": "Resource and Service Inventory with TMF-compliant API", - "fullDescription": "SPA Inventory - a database that stores the information about topology resources and service instances and offers TMF Open APIs for standardised access." - }, - { - "language": "pl", - "briefDescription": "Resource and Service Inventory with TMF-compliant API", - "fullDescription": "SPA Inventory - a database that stores the information about topology resources and service instances and offers TMF Open APIs for standardised access." - } - ], - "tags": [ - "management", "inventory" - ] - }, - "application": { - "id": null, - "name": "SPA Inventory", - "version": "2.0", - "configWizardTemplate": { - "template": { - "components": [ - { - "label": "Tabs", - "components": [ - { - "label": "Base", - "key": "configTab", - "components": [ - { - "label": "Mandatory parameters", - "hideLabel": true, - "type": "container", - "input": true, - "tab": 0, - "key": "mandatoryParameters", - "components": [ - { - "label": "Inventory access username", - "type": "textfield", - "input": true, - "key": "properties#inventory#user", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain" - }, - { - "label": "Inventory access password", - "type": "password", - "input": true, - "key": "properties#inventory#password", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain" - } - ] - } - ] - }, - { - "label": "Advanced", - "key": "advancedTab", - "components": [ - { - "label": "Advanced", - "hideLabel": true, - "tableView": true, - "type": "container", - "input": true, - "tab": 1, - "key": "advanced", - "components": [ - { - "label": "Storage space (GB):", - "type": "number", - "input": true, - "key": "storageSpace", - "placeholder": "Default value: 1GB", - "tab": 1 - } - ] - } - ] - } - ], - "type": "tabs", - "input": false, - "key": "tabs" - }, - { - "type": "button", - "label": "Apply configuration", - "disableOnInvalid": true, - "theme": "primary", - "input": false, - "tableView": true - } - ] - } - }, - "configUpdateWizardTemplate": null, - "appDeploymentSpec": { - "supportedDeploymentEnvironments": [ - "KUBERNETES" - ], - "kubernetesTemplate": { - "chart": { - "name": "nmaas-spa-inventory", - "version": "2.0.1" - } - }, - "storageVolumes": [ - { - "type": "MAIN", - "defaultStorageSpace": 1, - "deployParameters": { - "PERSISTENCE_ENABLED": "persistence.enabled", - "PERSISTENCE_NAME": "persistence.name", - "PERSISTENCE_STORAGE_CLASS": "persistence.storageClass", - "PERSISTENCE_STORAGE_SPACE": "persistence.size" - } - } - ], - "globalDeployParameters": { - "image.tag": "2.0.0" - }, - "exposesWebUI": true, - "accessMethods": [ - { - "type": "DEFAULT", - "name": "SPA Inventory", - "tag": "spa", - "deployParameters": { - "INGRESS_ENABLED": "ingress.enabled", - "INGRESS_HOSTS": "ingress.hosts", - "INGRESS_TLS_ENABLED": "ingress.tls.enabled", - "INGRESS_CLASS": "ingress.class", - "INGRESS_LETSENCRYPT": "ingress.tls.acme", - "INGRESS_WILDCARD_OR_ISSUER": "ingress.tls.certOrIssuer" - } - } - ] - }, - "appConfigurationSpec": { - "configFileRepositoryRequired": false - } - } -} \ No newline at end of file diff --git a/src/test/shell/data/apps/app11-statping.json b/src/test/shell/data/apps/app11-statping.json deleted file mode 100644 index e99f4208497323078c8abc647dc796b468c5adbf..0000000000000000000000000000000000000000 --- a/src/test/shell/data/apps/app11-statping.json +++ /dev/null @@ -1,171 +0,0 @@ -{ - "applicationBase": { - "id": null, - "name": "Statping", - "license": "GPL 3.0", - "licenseUrl": "https://www.gnu.org/licenses/gpl-3.0.html", - "wwwUrl": "https://statping.com", - "sourceUrl": "https://github.com/statping/statping", - "issuesUrl": "https://github.com/statping/statping/issues", - "nmaasDocumentationUrl": "https://wiki.geant.org/display/NMAAS/NMaaS+Tools#NMaaSTools-Statping", - "descriptions": [ - { - "language": "en", - "briefDescription": "Status Page & Monitoring Server", - "fullDescription": "An easy to use Status Page for your websites and applications. Statping will automatically fetch the application and render a beautiful status page with tons of features for you to build an even better status page. This Status Page generator allows you to use MySQL, Postgres, or SQLite on multiple operating systems." - }, - { - "language": "de", - "briefDescription": "Status Page & Monitoring Server", - "fullDescription": "An easy to use Status Page for your websites and applications. Statping will automatically fetch the application and render a beautiful status page with tons of features for you to build an even better status page. This Status Page generator allows you to use MySQL, Postgres, or SQLite on multiple operating systems." - }, - { - "language": "fr", - "briefDescription": "Status Page & Monitoring Server", - "fullDescription": "An easy to use Status Page for your websites and applications. Statping will automatically fetch the application and render a beautiful status page with tons of features for you to build an even better status page. This Status Page generator allows you to use MySQL, Postgres, or SQLite on multiple operating systems." - }, - { - "language": "pl", - "briefDescription": "Status Page & Monitoring Server", - "fullDescription": "An easy to use Status Page for your websites and applications. Statping will automatically fetch the application and render a beautiful status page with tons of features for you to build an even better status page. This Status Page generator allows you to use MySQL, Postgres, or SQLite on multiple operating systems." - } - ], - "tags": [ - "monitoring", - "visualization" - ] - }, - "application": { - "id": null, - "name": "Statping", - "version": "0.90.17", - "configWizardTemplate": { - "template": { - "components": [ - { - "label": "Tabs", - "components": [ - { - "label": "Base", - "key": "configTab", - "components": [ - { - "label": "Mandatory parameters", - "hideLabel": true, - "type": "container", - "input": true, - "tab": 0, - "key": "mandatoryParameters", - "components": [ - { - "label": "Statping admin username", - "type": "textfield", - "input": true, - "key": "properties#statping#user", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain" - }, - { - "label": "Statping admin password", - "type": "password", - "input": true, - "key": "properties#statping#password", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain" - } - ] - } - ] - }, - { - "label": "Advanced", - "key": "advancedTab", - "components": [ - { - "label": "Advanced", - "hideLabel": true, - "tableView": true, - "type": "container", - "input": true, - "tab": 1, - "key": "advanced", - "components": [ - { - "label": "Storage space (GB):", - "type": "number", - "input": true, - "key": "storageSpace", - "placeholder": "Default value: 2GB", - "tab": 1 - } - ] - } - ] - } - ], - "type": "tabs", - "input": false, - "key": "tabs" - }, - { - "type": "button", - "label": "Apply configuration", - "disableOnInvalid": true, - "theme": "primary", - "input": false, - "tableView": true - } - ] - } - }, - "configUpdateWizardTemplate": null, - "appDeploymentSpec": { - "supportedDeploymentEnvironments": [ - "KUBERNETES" - ], - "kubernetesTemplate": { - "chart": { - "name": "nmaas-statping", - "version": "2.0.1" - } - }, - "storageVolumes": [ - { - "type": "MAIN", - "defaultStorageSpace": 2, - "deployParameters": { - "PERSISTENCE_ENABLED": "persistence.enabled", - "PERSISTENCE_NAME": "persistence.name", - "PERSISTENCE_STORAGE_CLASS": "persistence.storageClass", - "PERSISTENCE_STORAGE_SPACE": "persistence.size" - } - } - ], - "exposesWebUI": true, - "accessMethods": [ - { - "type": "DEFAULT", - "name": "Statping", - "tag": "statping", - "deployParameters": { - "INGRESS_ENABLED": "ingress.enabled", - "INGRESS_HOSTS": "ingress.hosts", - "INGRESS_TLS_ENABLED": "ingress.tls.enabled", - "INGRESS_CLASS": "ingress.class", - "INGRESS_LETSENCRYPT": "ingress.tls.acme", - "INGRESS_WILDCARD_OR_ISSUER": "ingress.tls.certOrIssuer" - } - } - ] - }, - "appConfigurationSpec": { - "configFileRepositoryRequired": false - } - } -} \ No newline at end of file diff --git a/src/test/shell/data/apps/app12-perfsonar-maddash.json b/src/test/shell/data/apps/app12-perfsonar-maddash.json deleted file mode 100644 index 98285de979971b3fa0d2d2d53d4ee19f2e7852f6..0000000000000000000000000000000000000000 --- a/src/test/shell/data/apps/app12-perfsonar-maddash.json +++ /dev/null @@ -1,234 +0,0 @@ -{ - "applicationBase": { - "id": null, - "name": "MaDDash", - "license": "", - "licenseUrl": "", - "wwwUrl": "http://docs.perfsonar.net/maddash_intro.html", - "sourceUrl": "https://github.com/perfsonar/maddash", - "issuesUrl": "https://github.com/perfsonar/maddash/issues", - "nmaasDocumentationUrl": null, - "descriptions": [ - { - "language": "en", - "briefDescription": "Monitoring and Debugging Dashboard", - "fullDescription": "The Monitoring and Debugging Dashboard (MaDDash) is a tool for collecting large amounts of inherently two-dimensional data and presenting it in visually useful ways. The project consists of the server side that schedules jobs to collect data and a web front-end to display that data. A summary of the collected data is also made available as a JSON REST API. This initial use case was collecting point-to-point network measurements published by perfSONAR and displaying them as an organized collection grids on the web front-end. These were presented with one endpoint as the row and the second endpoint as the column. In principle though, MaDDash can be extended to support any two-dimensional data." - }, - { - "language": "de", - "briefDescription": "Monitoring and Debugging Dashboard", - "fullDescription": "The Monitoring and Debugging Dashboard (MaDDash) is a tool for collecting large amounts of inherently two-dimensional data and presenting it in visually useful ways. The project consists of the server side that schedules jobs to collect data and a web front-end to display that data. A summary of the collected data is also made available as a JSON REST API. This initial use case was collecting point-to-point network measurements published by perfSONAR and displaying them as an organized collection grids on the web front-end. These were presented with one endpoint as the row and the second endpoint as the column. In principle though, MaDDash can be extended to support any two-dimensional data." - }, - { - "language": "fr", - "briefDescription": "Monitoring and Debugging Dashboard", - "fullDescription": "The Monitoring and Debugging Dashboard (MaDDash) is a tool for collecting large amounts of inherently two-dimensional data and presenting it in visually useful ways. The project consists of the server side that schedules jobs to collect data and a web front-end to display that data. A summary of the collected data is also made available as a JSON REST API. This initial use case was collecting point-to-point network measurements published by perfSONAR and displaying them as an organized collection grids on the web front-end. These were presented with one endpoint as the row and the second endpoint as the column. In principle though, MaDDash can be extended to support any two-dimensional data." - }, - { - "language": "pl", - "briefDescription": "Monitoring and Debugging Dashboard", - "fullDescription": "The Monitoring and Debugging Dashboard (MaDDash) is a tool for collecting large amounts of inherently two-dimensional data and presenting it in visually useful ways. The project consists of the server side that schedules jobs to collect data and a web front-end to display that data. A summary of the collected data is also made available as a JSON REST API. This initial use case was collecting point-to-point network measurements published by perfSONAR and displaying them as an organized collection grids on the web front-end. These were presented with one endpoint as the row and the second endpoint as the column. In principle though, MaDDash can be extended to support any two-dimensional data." - } - ], - "tags": [ - "visualization" - ] - }, - "application": { - "id": null, - "name": "MaDDash", - "version": "4.3.4", - "configWizardTemplate": { - "template": { - "components": [ - { - "label": "Tabs", - "components": [ - { - "label": "Base", - "key": "configTab", - "components": [ - { - "label": "Mandatory parameters", - "hideLabel": true, - "type": "container", - "input": true, - "tab": 0, - "key": "mandatoryParameters", - "components": [ - { - "label": "Admin username", - "type": "textfield", - "input": true, - "key": "env#MADDASH_USERNAME", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain" - }, - { - "label": "Admin password", - "type": "password", - "input": true, - "key": "env#MADDASH_PASSWORD", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain" - }, - { - "label": "Log access username", - "type": "textfield", - "input": true, - "key": "env#LOG_USERNAME", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain" - }, - { - "label": "Log access password", - "type": "password", - "input": true, - "key": "env#LOG_PASSWORD", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain" - }, - { - "label": "Access options", - "type": "radio", - "input": true, - "tableView": true, - "inputType": "radio", - "key": "accessmethods#public#maddash", - "values": [ - { - "value": "yes", - "label": "Public" - }, - { - "value": "no", - "label": "VPN" - } - ], - "defaultValue": "yes", - "validate": { - "required": true - }, - "labelPosition": "top", - "optionsLabelPosition": "right" - } - ] - } - ] - }, - { - "label": "Advanced", - "key": "advancedTab", - "components": [ - { - "label": "Advanced", - "hideLabel": true, - "tableView": true, - "type": "container", - "input": true, - "tab": 1, - "key": "advanced", - "components": [ - { - "label": "Storage space (GB):", - "type": "number", - "input": true, - "key": "storageSpace", - "placeholder": "Default value: 5GB", - "tab": 1 - } - ] - } - ] - } - ], - "type": "tabs", - "input": false, - "key": "tabs" - }, - { - "type": "button", - "label": "Apply configuration", - "disableOnInvalid": true, - "theme": "primary", - "input": false, - "tableView": true - } - ] - } - }, - "configUpdateWizardTemplate": null, - "appDeploymentSpec": { - "supportedDeploymentEnvironments": [ - "KUBERNETES" - ], - "kubernetesTemplate": { - "chart": { - "name": "nmaas-perfsonar-maddash", - "version": "2.2.4" - }, - "mainDeploymentName": "maddash" - }, - "storageVolumes": [ - { - "type": "MAIN", - "defaultStorageSpace": 5, - "deployParameters": { - "PERSISTENCE_ENABLED": "persistence.enabled", - "PERSISTENCE_NAME": "persistence.name", - "PERSISTENCE_STORAGE_CLASS": "persistence.storageClass", - "PERSISTENCE_STORAGE_SPACE": "persistence.size" - } - } - ], - "exposesWebUI": true, - "allowSshAccess": true, - "accessMethods": [ - { - "type": "PUBLIC", - "name": "MaDDash", - "tag": "maddash", - "deployParameters": { - "INGRESS_ENABLED": "ingress.enabled", - "INGRESS_HOSTS": "ingress.hosts", - "INGRESS_TLS_ENABLED": "ingress.tls.enabled", - "INGRESS_CLASS": "ingress.class", - "INGRESS_LETSENCRYPT": "ingress.tls.acme", - "INGRESS_WILDCARD_OR_ISSUER": "ingress.tls.certOrIssuer" - } - }, - { - "type": "EXTERNAL", - "name": "Logs", - "tag": "logs", - "deployParameters": { - "INGRESS_HOSTS": "logs.ingress.hosts", - "INGRESS_CLASS": "logs.ingress.class" - } - } - ] - }, - "appConfigurationSpec": { - "configFileRepositoryRequired": true, - "configUpdateEnabled": true, - "templates": [ - { - "configFileName": "mesh.txt", - "configFileTemplateContent": "" - } - ] - } - } -} \ No newline at end of file diff --git a/src/test/shell/data/apps/app13-debian-repository.json b/src/test/shell/data/apps/app13-debian-repository.json deleted file mode 100644 index 61ff2903e93043e917f3446638750b4c8f5dbc2f..0000000000000000000000000000000000000000 --- a/src/test/shell/data/apps/app13-debian-repository.json +++ /dev/null @@ -1,170 +0,0 @@ -{ - "applicationBase": { - "id": null, - "name": "Debian repository", - "license": "Debian", - "licenseUrl": "", - "wwwUrl": "https://wiki.debian.org/DebianRepository/SetupWithReprepro", - "sourceUrl": "", - "issuesUrl": "", - "nmaasDocumentationUrl": "https://wiki.geant.org/display/NMAAS/NMaaS+Tools#NMaaSTools-Debianrepository", - "descriptions": [ - { - "language": "en", - "briefDescription": "Debian package repository based on Reprepro", - "fullDescription": "Reprepro is a tool for managing APT repositories.<br><br>Reprepro is able to manage multiple repositories for multiple distribution versions and one package pool. It can process updates from an incoming directory, copy package (references) between distribution versions, list all packages and/or package versions available in the repository, etc.<br><br>More information about the tool can be found at <a href=https://wiki.debian.org/DebianRepository/SetupWithReprepro>Debian Wiki</a>." - }, - { - "language": "de", - "briefDescription": "Debian package repository based on Reprepro", - "fullDescription": "Reprepro is a tool for managing APT repositories.<br><br>Reprepro is able to manage multiple repositories for multiple distribution versions and one package pool. It can process updates from an incoming directory, copy package (references) between distribution versions, list all packages and/or package versions available in the repository, etc.<br><br>More information about the tool can be found at <a href=https://wiki.debian.org/DebianRepository/SetupWithReprepro>Debian Wiki</a>." - }, - { - "language": "fr", - "briefDescription": "Debian package repository based on Reprepro", - "fullDescription": "Reprepro is a tool for managing APT repositories.<br><br>Reprepro is able to manage multiple repositories for multiple distribution versions and one package pool. It can process updates from an incoming directory, copy package (references) between distribution versions, list all packages and/or package versions available in the repository, etc.<br><br>More information about the tool can be found at <a href=https://wiki.debian.org/DebianRepository/SetupWithReprepro>Debian Wiki</a>." - }, - { - "language": "pl", - "briefDescription": "Debian package repository based on Reprepro", - "fullDescription": "Reprepro is a tool for managing APT repositories.<br><br>Reprepro is able to manage multiple repositories for multiple distribution versions and one package pool. It can process updates from an incoming directory, copy package (references) between distribution versions, list all packages and/or package versions available in the repository, etc.<br><br>More information about the tool can be found at <a href=https://wiki.debian.org/DebianRepository/SetupWithReprepro>Debian Wiki</a>." - } - ], - "tags": [ - "management" - ] - }, - "application": { - "id": null, - "name": "Debian repository", - "version": "1.0", - "configWizardTemplate": { - "template": { - "components": [ - { - "label": "Tabs", - "components": [ - { - "label": "Base", - "key": "configTab", - "components": [ - { - "label": "Mandatory parameters", - "hideLabel": true, - "type": "container", - "input": true, - "tab": 0, - "key": "mandatoryParameters", - "components": [ - { - "label": "SSH keys (comma separated)", - "type": "textfield", - "input": true, - "key": "env#ssh_keys", - "inputFormat": "plain", - "validate": { - "required": true - }, - "tab": 0 - } - ] - } - ] - }, - { - "label": "Advanced", - "key": "advancedTab", - "components": [ - { - "label": "Advanced", - "hideLabel": true, - "tableView": true, - "type": "container", - "input": true, - "tab": 1, - "key": "advanced", - "components": [ - { - "label": "Storage space (GB):", - "type": "number", - "input": true, - "key": "storageSpace", - "placeholder": "Default value: 10GB", - "tab": 1 - } - ] - } - ] - } - ], - "type": "tabs", - "input": false, - "key": "tabs" - }, - { - "type": "button", - "label": "Apply configuration", - "disableOnInvalid": true, - "theme": "primary", - "input": false, - "tableView": true - } - ] - } - }, - "configUpdateWizardTemplate": null, - "appDeploymentSpec": { - "supportedDeploymentEnvironments": [ - "KUBERNETES" - ], - "kubernetesTemplate": { - "chart": { - "name": "nmaas-reprepro", - "version": "2.0.1" - } - }, - "storageVolumes": [ - { - "type": "MAIN", - "defaultStorageSpace": 10, - "deployParameters": { - "PERSISTENCE_ENABLED": "persistence.enabled", - "PERSISTENCE_NAME": "persistence.name", - "PERSISTENCE_STORAGE_CLASS": "persistence.storageClass", - "PERSISTENCE_STORAGE_SPACE": "persistence.size" - } - } - ], - "deployParameters": { - "DOMAIN_CODENAME": "metallb.subnet_name" - }, - "exposesWebUI": false, - "accessMethods": [ - { - "type": "DEFAULT", - "name": "Reprepro", - "tag": "reprepro", - "deployParameters": { - "INGRESS_ENABLED": "ingress.enabled", - "INGRESS_HOSTS": "ingress.hosts", - "INGRESS_TLS_ENABLED": "ingress.tls.enabled", - "INGRESS_CLASS": "ingress.class", - "INGRESS_LETSENCRYPT": "ingress.tls.acme", - "INGRESS_WILDCARD_OR_ISSUER": "ingress.tls.certOrIssuer" - } - }, - { - "type": "INTERNAL", - "name": "SSH", - "tag": "reprepro", - "deployParameters": { - "K8S_SERVICE_PORT": "22" - } - } - ] - }, - "appConfigurationSpec": { - "configFileRepositoryRequired": false - } - } -} \ No newline at end of file diff --git a/src/test/shell/data/apps/app14-influxdb.json b/src/test/shell/data/apps/app14-influxdb.json deleted file mode 100644 index 62195a18a7943dd73cfc7e9ad4b34823ca1eadc7..0000000000000000000000000000000000000000 --- a/src/test/shell/data/apps/app14-influxdb.json +++ /dev/null @@ -1,184 +0,0 @@ -{ - "applicationBase": { - "id": null, - "name": "InfluxDB", - "license": "MIT", - "licenseUrl": "https://github.com/influxdata/influxdb/blob/master/LICENSE", - "wwwUrl": "https://www.influxdata.com/products/influxdb-overview", - "sourceUrl": "https://github.com/influxdata/influxdb", - "issuesUrl": "https://github.com/influxdata/influxdb/issues", - "nmaasDocumentationUrl": "https://wiki.geant.org/display/NMAAS/NMaaS+Tools#NMaaSTools-InfluxDB", - "descriptions": [ - { - "language": "en", - "briefDescription": "Time series database", - "fullDescription": "InfluxDB is an open-source time series database (TSDB) developed by InfluxData. It is written in Go and optimized for fast, high-availability storage and retrieval of time series data in fields such as operations monitoring, application metrics, Internet of Things sensor data, and real-time analytics. It also has support for processing data from Graphite.<br><br>InfluxDB has no external dependencies and provides a SQL-like language, listening on port 8086, with built-in time-centric functions for querying a data structure composed of measurements, series, and points. Each point consists of several key-value pairs called the fieldset and a timestamp. When grouped together by a set of key-value pairs called the tagset, these define a series. Finally, series are grouped together by a string identifier to form a measurement.<br><br>Values can be 64-bit integers, 64-bit floating points, strings, and booleans. Points are indexed by their time and tagset. Retention policies are defined on a measurement and control how data is downsampled and deleted. Continuous Queries run periodically, storing results in a target measurement." - }, - { - "language": "de", - "briefDescription": "Time series database", - "fullDescription": "InfluxDB is an open-source time series database (TSDB) developed by InfluxData. It is written in Go and optimized for fast, high-availability storage and retrieval of time series data in fields such as operations monitoring, application metrics, Internet of Things sensor data, and real-time analytics. It also has support for processing data from Graphite.<br><br>InfluxDB has no external dependencies and provides a SQL-like language, listening on port 8086, with built-in time-centric functions for querying a data structure composed of measurements, series, and points. Each point consists of several key-value pairs called the fieldset and a timestamp. When grouped together by a set of key-value pairs called the tagset, these define a series. Finally, series are grouped together by a string identifier to form a measurement.<br><br>Values can be 64-bit integers, 64-bit floating points, strings, and booleans. Points are indexed by their time and tagset. Retention policies are defined on a measurement and control how data is downsampled and deleted. Continuous Queries run periodically, storing results in a target measurement." - }, - { - "language": "fr", - "briefDescription": "Time series database", - "fullDescription": "InfluxDB is an open-source time series database (TSDB) developed by InfluxData. It is written in Go and optimized for fast, high-availability storage and retrieval of time series data in fields such as operations monitoring, application metrics, Internet of Things sensor data, and real-time analytics. It also has support for processing data from Graphite.<br><br>InfluxDB has no external dependencies and provides a SQL-like language, listening on port 8086, with built-in time-centric functions for querying a data structure composed of measurements, series, and points. Each point consists of several key-value pairs called the fieldset and a timestamp. When grouped together by a set of key-value pairs called the tagset, these define a series. Finally, series are grouped together by a string identifier to form a measurement.<br><br>Values can be 64-bit integers, 64-bit floating points, strings, and booleans. Points are indexed by their time and tagset. Retention policies are defined on a measurement and control how data is downsampled and deleted. Continuous Queries run periodically, storing results in a target measurement." - }, - { - "language": "pl", - "briefDescription": "Time series database", - "fullDescription": "InfluxDB is an open-source time series database (TSDB) developed by InfluxData. It is written in Go and optimized for fast, high-availability storage and retrieval of time series data in fields such as operations monitoring, application metrics, Internet of Things sensor data, and real-time analytics. It also has support for processing data from Graphite.<br><br>InfluxDB has no external dependencies and provides a SQL-like language, listening on port 8086, with built-in time-centric functions for querying a data structure composed of measurements, series, and points. Each point consists of several key-value pairs called the fieldset and a timestamp. When grouped together by a set of key-value pairs called the tagset, these define a series. Finally, series are grouped together by a string identifier to form a measurement.<br><br>Values can be 64-bit integers, 64-bit floating points, strings, and booleans. Points are indexed by their time and tagset. Retention policies are defined on a measurement and control how data is downsampled and deleted. Continuous Queries run periodically, storing results in a target measurement." - } - ], - "tags": [ - "database" - ] - }, - "application": { - "id": null, - "name": "InfluxDB", - "version": "1.7.10", - "configWizardTemplate": { - "template": { - "components": [ - { - "label": "Tabs", - "components": [ - { - "label": "Base", - "key": "configTab", - "components": [ - { - "label": "Mandatory parameters", - "hideLabel": true, - "type": "container", - "input": true, - "tab": 0, - "key": "mandatoryParameters", - "components": [ - { - "label": "InfluxDB admin username", - "type": "textfield", - "input": true, - "key": "setDefaultUser#user#username", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain" - }, - { - "label": "InfluxDB admin password", - "type": "password", - "input": true, - "key": "setDefaultUser#user#password", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain" - } - ] - } - ] - }, - { - "label": "Advanced", - "key": "advancedTab", - "components": [ - { - "label": "Advanced", - "hideLabel": true, - "tableView": true, - "type": "container", - "input": true, - "tab": 1, - "key": "advanced", - "components": [ - { - "label": "Storage space (GB):", - "type": "number", - "input": true, - "key": "storageSpace", - "placeholder": "Default value: 20GB", - "tab": 1 - } - ] - } - ] - } - ], - "type": "tabs", - "input": false, - "key": "tabs" - }, - { - "type": "button", - "label": "Apply configuration", - "disableOnInvalid": true, - "theme": "primary", - "input": false, - "tableView": true - } - ] - } - }, - "configUpdateWizardTemplate": null, - "appDeploymentSpec": { - "supportedDeploymentEnvironments": [ - "KUBERNETES" - ], - "kubernetesTemplate": { - "chart": { - "name": "influxdata/influxdb", - "version": "4.4.8" - } - }, - "storageVolumes": [ - { - "type": "MAIN", - "defaultStorageSpace": 20, - "deployParameters": { - "PERSISTENCE_ENABLED": "persistence.enabled", - "PERSISTENCE_NAME": "persistence.name", - "PERSISTENCE_STORAGE_CLASS": "persistence.storageClass", - "PERSISTENCE_STORAGE_SPACE": "persistence.size" - } - } - ], - "deployParameters": { - "DOMAIN_CODENAME": "service.annotations.\"metallb\\.universe\\.tf/address-pool\"=%VALUE%" - }, - "globalDeployParameters": { - "service.type": "LoadBalancer", - "resources.requests.memory": "512Mi", - "resources.requests.cpu": "250m", - "resources.limits.memory": "2Gi", - "resources.limits.cpu": "2000m", - "setDefaultUser.enabled": "true" - }, - "exposesWebUI": true, - "accessMethods": [ - { - "type": "DEFAULT", - "name": "InfluxDB", - "tag": "influxdb", - "deployParameters": { - "INGRESS_ENABLED": "ingress.enabled", - "INGRESS_HOSTS": "ingress.hostname=%VALUE%", - "INGRESS_CLASS": "ingress.annotations.\"kubernetes\\.io/ingress\\.class\"=%VALUE%", - "INGRESS_TLS_ENABLED": "ingress.tls" - } - }, - { - "type": "LOCAL", - "name": "in-cluster", - "tag": "influxdb" - } - ] - }, - "appConfigurationSpec": { - "configFileRepositoryRequired": false - } - } -} \ No newline at end of file diff --git a/src/test/shell/data/apps/app15-jenkins.json b/src/test/shell/data/apps/app15-jenkins.json deleted file mode 100644 index 3b96ca63489b88453de4ca8d39d59b747f71caa7..0000000000000000000000000000000000000000 --- a/src/test/shell/data/apps/app15-jenkins.json +++ /dev/null @@ -1,198 +0,0 @@ -{ - "applicationBase": { - "id": null, - "name": "Jenkins", - "license": "MIT", - "licenseUrl": "https://github.com/jenkinsci/jenkins/blob/master/LICENSE.txt", - "wwwUrl": "https://www.jenkins.io", - "sourceUrl": "https://github.com/jenkinsci/jenkins", - "issuesUrl": "", - "nmaasDocumentationUrl": "https://wiki.geant.org/display/NMAAS/NMaaS+Tools#NMaaSTools-Jenkins", - "descriptions": [ - { - "language": "en", - "briefDescription": "Leading open-source automation server", - "fullDescription": "Jenkins is a self-contained, open source automation server which can be used to automate all sorts of tasks related to building, testing, and delivering or deploying software." - }, - { - "language": "de", - "briefDescription": "Leading open-source automation server", - "fullDescription": "Jenkins is a self-contained, open source automation server which can be used to automate all sorts of tasks related to building, testing, and delivering or deploying software." - }, - { - "language": "fr", - "briefDescription": "Leading open-source automation server", - "fullDescription": "Jenkins is a self-contained, open source automation server which can be used to automate all sorts of tasks related to building, testing, and delivering or deploying software." - }, - { - "language": "pl", - "briefDescription": "Leading open-source automation server", - "fullDescription": "Jenkins is a self-contained, open source automation server which can be used to automate all sorts of tasks related to building, testing, and delivering or deploying software." - } - ], - "tags": [ - "ci" - ] - }, - "application": { - "id": null, - "name": "Jenkins", - "version": "2.263.4", - "configWizardTemplate": { - "template": { - "components": [ - { - "label": "Tabs", - "components": [ - { - "label": "Base", - "key": "configTab", - "components": [ - { - "label": "Mandatory parameters", - "hideLabel": true, - "type": "container", - "input": true, - "tab": 0, - "key": "mandatoryParameters", - "components": [ - { - "label": "Jenkins admin username", - "type": "textfield", - "input": true, - "key": "controller#adminUser", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain" - }, - { - "label": "Jenkins admin password", - "type": "password", - "input": true, - "key": "controller#adminPassword", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain" - }, - { - "label": "Administrator email address", - "type": "email", - "input": true, - "key": "controller#jenkinsAdminEmail", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain" - } - ] - } - ] - }, - { - "label": "Advanced", - "key": "advancedTab", - "components": [ - { - "label": "Advanced", - "hideLabel": true, - "tableView": true, - "type": "container", - "input": true, - "tab": 1, - "key": "advanced", - "components": [ - { - "label": "Storage space (GB):", - "type": "number", - "input": true, - "key": "storageSpace", - "placeholder": "Default value: 8GB", - "tab": 1 - } - ] - } - ] - } - ], - "type": "tabs", - "input": false, - "key": "tabs" - }, - { - "type": "button", - "label": "Apply configuration", - "disableOnInvalid": true, - "theme": "primary", - "input": false, - "tableView": true - } - ] - } - }, - "configUpdateWizardTemplate": null, - "appDeploymentSpec": { - "supportedDeploymentEnvironments": [ - "KUBERNETES" - ], - "kubernetesTemplate": { - "chart": { - "name": "nmaas-jenkins", - "version": "3.1.13" - }, - "mainDeploymentName": "nmaas-jenkins" - }, - "storageVolumes": [ - { - "type": "MAIN", - "defaultStorageSpace": 8, - "deployParameters": { - "PERSISTENCE_ENABLED": "persistence.enabled", - "PERSISTENCE_NAME": "persistence.name", - "PERSISTENCE_STORAGE_CLASS": "persistence.storageClass", - "PERSISTENCE_STORAGE_SPACE": "persistence.size" - } - } - ], - "deployParameters": { - "DOMAIN_CODENAME": "agent.namespace" - }, - "globalDeployParameters": { - "clusterZone": "geant.local", - "controller.installPlugins[0]": "kubernetes:1.29.0", - "controller.installPlugins[1]": "workflow-job:2.40", - "controller.installPlugins[2]": "workflow-aggregator:2.6", - "controller.installPlugins[3]": "credentials-binding:1.24", - "controller.installPlugins[4]": "git:4.5.2", - "controller.installPlugins[5]": "configuration-as-code:1.51", - "controller.installPlugins[6]": "locale:1.4", - "controller.installPlugins[7]": "ssh:2.6.1", - "controller.installPlugins[8]": "ansible:1.1", - "runAsUser": "1000", - "fsGroup": "1000", - "useSecurity": "true" - }, - "exposesWebUI": true, - "accessMethods": [ - { - "type": "DEFAULT", - "name": "Jenkins", - "tag": "jenkins", - "deployParameters": { - "INGRESS_ENABLED": "controller.ingress.enabled", - "INGRESS_HOSTS": "controller.ingress.hostName=%VALUE%", - "INGRESS_CLASS": "controller.ingress.annotations.\"kubernetes\\.io/ingress\\.class\"=%VALUE%", - "INGRESS_TLS_HOSTS": "controller.ingress.tls[0].hosts" - } - } - ] - }, - "appConfigurationSpec": { - "configFileRepositoryRequired": false - } - } -} \ No newline at end of file diff --git a/src/test/shell/data/apps/app16-elasticstack.json b/src/test/shell/data/apps/app16-elasticstack.json deleted file mode 100644 index c92c4cde8ef0389da0332ef5062e7cd101d8feec..0000000000000000000000000000000000000000 --- a/src/test/shell/data/apps/app16-elasticstack.json +++ /dev/null @@ -1,195 +0,0 @@ -{ - "applicationBase": { - "id": null, - "name": "ELK Stack", - "license": "Apache 2.0", - "licenseUrl": "https://www.apache.org/licenses/LICENSE-2.0", - "wwwUrl": "https://www.elastic.co", - "sourceUrl": "https://github.com/elastic", - "issuesUrl": "https://github.com/elastic/elasticsearch/issues", - "nmaasDocumentationUrl": "https://wiki.geant.org/display/NMAAS/NMaaS+Tools#NMaaSTools-ELK", - "descriptions": [ - { - "language": "en", - "briefDescription": "Elasticsearch, Logstash and Kibana", - "fullDescription": "\"ELK\" is the acronym for three open source projects: Elasticsearch, Logstash, and Kibana. Elasticsearch is a search and analytics engine. Logstash is a server-side data processing pipeline that ingests data from multiple sources simultaneously, transforms it, and then sends it to a \"stash\" like Elasticsearch. Kibana lets users visualize data with charts and graphs in Elasticsearch." - }, - { - "language": "de", - "briefDescription": "Elasticsearch, Logstash and Kibana", - "fullDescription": "\"ELK\" is the acronym for three open source projects: Elasticsearch, Logstash, and Kibana. Elasticsearch is a search and analytics engine. Logstash is a server-side data processing pipeline that ingests data from multiple sources simultaneously, transforms it, and then sends it to a \"stash\" like Elasticsearch. Kibana lets users visualize data with charts and graphs in Elasticsearch." - }, - { - "language": "fr", - "briefDescription": "Elasticsearch, Logstash and Kibana", - "fullDescription": "\"ELK\" is the acronym for three open source projects: Elasticsearch, Logstash, and Kibana. Elasticsearch is a search and analytics engine. Logstash is a server-side data processing pipeline that ingests data from multiple sources simultaneously, transforms it, and then sends it to a \"stash\" like Elasticsearch. Kibana lets users visualize data with charts and graphs in Elasticsearch." - }, - { - "language": "pl", - "briefDescription": "Elasticsearch, Logstash and Kibana", - "fullDescription": "\"ELK\" is the acronym for three open source projects: Elasticsearch, Logstash, and Kibana. Elasticsearch is a search and analytics engine. Logstash is a server-side data processing pipeline that ingests data from multiple sources simultaneously, transforms it, and then sends it to a \"stash\" like Elasticsearch. Kibana lets users visualize data with charts and graphs in Elasticsearch." - } - ], - "tags": [ - "monitoring", - "visualization" - ] - }, - "application": { - "id": null, - "name": "ELK Stack", - "version": "7.7.1", - "configWizardTemplate": { - "template": { - "components": [ - { - "label": "Tabs", - "components": [ - { - "label": "Base", - "key": "configTab", - "components": [ - { - "label": "Mandatory parameters", - "hideLabel": true, - "type": "container", - "input": true, - "tab": 0, - "key": "mandatoryParameters", - "components": [ - { - "label": "Elasticsearch storage space (GB):", - "type": "textfield", - "input": true, - "key": "elasticsearch#volumeClaimTemplate#resources#requests#storage", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain", - "defaultValue": "10Gi" - }, - { - "label": "Logstash storage space (GB):", - "type": "textfield", - "input": true, - "key": "logstash#volumeClaimTemplate#resources#requests#storage", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain", - "defaultValue": "5Gi" - } - ] - } - ] - } - ], - "type": "tabs", - "input": false, - "key": "tabs" - }, - { - "type": "button", - "label": "Apply configuration", - "disableOnInvalid": true, - "theme": "primary", - "input": false, - "tableView": true - } - ] - } - }, - "configUpdateWizardTemplate": null, - "appDeploymentSpec": { - "supportedDeploymentEnvironments": [ - "KUBERNETES" - ], - "kubernetesTemplate": { - "chart": { - "name": "elastic-stack", - "version": "1.8.0" - }, - "mainDeploymentName": "pllabprod" - }, - "deployParameters": { - "DOMAIN_CODENAME_ELASTICSEARCH": "elasticsearch.service.annotations.\"metallb\\.universe\\.tf/address-pool\"=%VALUE%", - "DOMAIN_CODENAME_LOGSTASH": "logstash.service.annotations.\"metallb\\.universe\\.tf/address-pool\"=%VALUE%", - "RELEASE_NAME_ELASTICSEARCH_CLUSTER_NAME": "elasticsearch.clusterName", - "RELEASE_NAME_KIBANA": "kibana.elasticsearchHosts=http://%VALUE%-pllabprod:9200", - "RELEASE_NAME_LOGSTASH": "logstash.logstashPipeline.\"uptime\\.conf\"=\"input { exec { command => \"uptime\" interval => 30 } } output { elasticsearch { hosts => [\"http://%VALUE%-pllabprod:9200\"] index => \"logstash\" } }\"", - "RELEASE_NAME_ELASTICSEARCH_MASTER_SERVICE": "elasticsearch.masterService=%VALUE%-pllabprod" - }, - "globalDeployParameters": { - "elasticsearch.nodeGroup": "pllabprod", - "elasticsearch.imageTag": "7.7.1", - "logstash.imageTag": "7.7.1", - "kibana.imageTag": "7.7.1", - "elasticsearch.clusterHealthCheckParams": "\"wait_for_status=yellow&timeout=1s\"" - }, - "exposesWebUI": true, - "accessMethods": [ - { - "type": "EXTERNAL", - "name": "Elasticsearch", - "tag": "elasticsearch", - "deployParameters": { - "INGRESS_ENABLED": "elasticsearch.ingress.enabled", - "INGRESS_HOSTS": "elasticsearch.ingress.hosts", - "INGRESS_CLASS": "elasticsearch.ingress.annotations.\"kubernetes\\.io/ingress\\.class\"=%VALUE%", - "INGRESS_TLS_HOSTS": "elasticsearch.ingress.tls[0].hosts" - } - }, - { - "type": "EXTERNAL", - "name": "Kibana", - "tag": "kibana", - "deployParameters": { - "INGRESS_ENABLED": "kibana.ingress.enabled", - "INGRESS_HOSTS": "kibana.ingress.hosts", - "INGRESS_CLASS": "kibana.ingress.annotations.\"kubernetes\\.io/ingress\\.class\"=%VALUE%", - "INGRESS_TLS_HOSTS": "kibana.ingress.tls[0].hosts" - } - }, - { - "type": "INTERNAL", - "name": "DATA", - "tag": "logstash", - "deployParameters": { - "K8S_SERVICE_SUFFIX": "logstash" - } - }, - { - "type": "INTERNAL", - "name": "DATA", - "tag": "elasticsearch", - "deployParameters": { - "K8S_SERVICE_SUFFIX": "pllabprod" - } - } - ] - }, - "appConfigurationSpec": { - "configFileRepositoryRequired": true, - "configUpdateEnabled": true, - "templates": [ - { - "configFileName": "kibana.yml", - "configFileDirectory": "kibana", - "configFileTemplateContent": "server.name: kibana\nserver.host: \"0\"\nelasticsearch.hosts: [ \"http://elasticsearch:9200\" ]\nmonitoring.ui.container.elasticsearch.enabled: true\nelasticsearch.username: \"kibana\"\nelasticsearch.password: \"pristap\" \nxpack.security.encryptionKey: \"${helper.randomString(32)}\"\nxpack.encryptedSavedObjects.encryptionKey: \"${helper.randomString(32)}\"" - }, - { - "configFileName": "logstash.yml", - "configFileDirectory": "logstash", - "configFileTemplateContent": "" - }, - { - "configFileName": "elasticsearch.yml", - "configFileDirectory": "es-config", - "configFileTemplateContent": "cluster.name: \"${RELEASE_NAME}\"\nnetwork.host: 0.0.0.0\nxpack.security.enabled: true\nxpack.monitoring.enabled: true\nxpack.monitoring.collection.enabled: true\nxpack.security.transport.ssl.enabled: true" - } - ] - } - } -} \ No newline at end of file diff --git a/src/test/shell/data/apps/app17-perfsonar-esmond.json b/src/test/shell/data/apps/app17-perfsonar-esmond.json deleted file mode 100644 index 32432b1c9318c8ca6db562c41bc0b6da70c6626e..0000000000000000000000000000000000000000 --- a/src/test/shell/data/apps/app17-perfsonar-esmond.json +++ /dev/null @@ -1,206 +0,0 @@ -{ - "applicationBase": { - "id": null, - "name": "esmond", - "license": "", - "licenseUrl": "", - "wwwUrl": "https://docs.perfsonar.net/multi_ma_install.html", - "sourceUrl": "https://github.com/perfsonar/esmond", - "issuesUrl": "https://github.com/perfsonar/esmond/issues", - "nmaasDocumentationUrl": null, - "descriptions": [ - { - "language": "en", - "briefDescription": "Central Measurement Archive", - "fullDescription": "esmond is a system for collecting, storing, visualizing and analysing large sets of timeseries data. esmond has a RESTful API which allows easy access to the data which is collected. The original focus was on collecting SNMP timeseries data which is still the system's forte, but there is support for generalized timeseries data. The perfSONAR project has begun using esmond to store timeseries of network measurements.\nesmond uses a hybrid model for storing data. Timeseries data such as interface counters is stored using Cassandra. esmond will save the raw data, and create summarizations similar to RRD. However, the system never discards data through summarization, which distinguishes it from RRD (and whisper/ceres). Metadata (such as interface description and interface types from SNMP) are stored in an SQL database. Storing this data in an SQL database allows us to use the full expressiveness of SQL to query this data. Data can be visualized using Graphite or through custom visualizations which can query the RESTful API." - }, - { - "language": "de", - "briefDescription": "Central Measurement Archive", - "fullDescription": "esmond is a system for collecting, storing, visualizing and analysing large sets of timeseries data. esmond has a RESTful API which allows easy access to the data which is collected. The original focus was on collecting SNMP timeseries data which is still the system's forte, but there is support for generalized timeseries data. The perfSONAR project has begun using esmond to store timeseries of network measurements.\nesmond uses a hybrid model for storing data. Timeseries data such as interface counters is stored using Cassandra. esmond will save the raw data, and create summarizations similar to RRD. However, the system never discards data through summarization, which distinguishes it from RRD (and whisper/ceres). Metadata (such as interface description and interface types from SNMP) are stored in an SQL database. Storing this data in an SQL database allows us to use the full expressiveness of SQL to query this data. Data can be visualized using Graphite or through custom visualizations which can query the RESTful API." - }, - { - "language": "fr", - "briefDescription": "Central Measurement Archive", - "fullDescription": "esmond is a system for collecting, storing, visualizing and analysing large sets of timeseries data. esmond has a RESTful API which allows easy access to the data which is collected. The original focus was on collecting SNMP timeseries data which is still the system's forte, but there is support for generalized timeseries data. The perfSONAR project has begun using esmond to store timeseries of network measurements.\nesmond uses a hybrid model for storing data. Timeseries data such as interface counters is stored using Cassandra. esmond will save the raw data, and create summarizations similar to RRD. However, the system never discards data through summarization, which distinguishes it from RRD (and whisper/ceres). Metadata (such as interface description and interface types from SNMP) are stored in an SQL database. Storing this data in an SQL database allows us to use the full expressiveness of SQL to query this data. Data can be visualized using Graphite or through custom visualizations which can query the RESTful API." - }, - { - "language": "pl", - "briefDescription": "Central Measurement Archive", - "fullDescription": "esmond is a system for collecting, storing, visualizing and analysing large sets of timeseries data. esmond has a RESTful API which allows easy access to the data which is collected. The original focus was on collecting SNMP timeseries data which is still the system's forte, but there is support for generalized timeseries data. The perfSONAR project has begun using esmond to store timeseries of network measurements.\nesmond uses a hybrid model for storing data. Timeseries data such as interface counters is stored using Cassandra. esmond will save the raw data, and create summarizations similar to RRD. However, the system never discards data through summarization, which distinguishes it from RRD (and whisper/ceres). Metadata (such as interface description and interface types from SNMP) are stored in an SQL database. Storing this data in an SQL database allows us to use the full expressiveness of SQL to query this data. Data can be visualized using Graphite or through custom visualizations which can query the RESTful API." - } - ], - "tags": [ - "database", - "archive" - ] - }, - "application": { - "id": null, - "name": "esmond", - "version": "4.3.4", - "configWizardTemplate": { - "template": { - "components": [ - { - "label": "Tabs", - "components": [ - { - "label": "Advanced", - "key": "advancedTab", - "components": [ - { - "label": "Mandatory parameters", - "hideLabel": true, - "type": "container", - "input": true, - "tab": 0, - "key": "mandatoryParameters", - "components": [ - { - "label": "Access options", - "type": "radio", - "input": true, - "tableView": true, - "inputType": "radio", - "key": "accessmethods#public#esmond", - "values": [ - { - "value": "yes", - "label": "Public" - }, - { - "value": "no", - "label": "VPN" - } - ], - "defaultValue": "yes", - "validate": { - "required": true - }, - "labelPosition": "top", - "optionsLabelPosition": "right" - }, - { - "label": "Log access username", - "type": "textfield", - "input": true, - "key": "env#LOG_USERNAME", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain" - }, - { - "label": "Log access password", - "type": "password", - "input": true, - "key": "env#LOG_PASSWORD", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain" - } - ] - }, - { - "label": "Advanced", - "hideLabel": true, - "tableView": true, - "type": "container", - "input": true, - "tab": 0, - "key": "advanced", - "components": [ - { - "label": "Storage space (GB):", - "type": "number", - "input": true, - "key": "storageSpace", - "placeholder": "Default value: 10GB", - "tab": 1 - } - ] - } - ] - } - ], - "type": "tabs", - "input": false, - "key": "tabs" - }, - { - "type": "button", - "label": "Apply configuration", - "disableOnInvalid": true, - "theme": "primary", - "input": false, - "tableView": true - } - ] - } - }, - "configUpdateWizardTemplate": null, - "appDeploymentSpec": { - "supportedDeploymentEnvironments": [ - "KUBERNETES" - ], - "kubernetesTemplate": { - "chart": { - "name": "nmaas-perfsonar-esmond", - "version": "2.2.0" - }, - "mainDeploymentName": "esmond" - }, - "storageVolumes": [ - { - "type": "MAIN", - "defaultStorageSpace": 10, - "deployParameters": { - "PERSISTENCE_ENABLED": "persistence.enabled", - "PERSISTENCE_STORAGE_CLASS": "persistence.storageClass", - "PERSISTENCE_STORAGE_SPACE": "persistence.size" - } - } - ], - "exposesWebUI": true, - "allowSshAccess": true, - "accessMethods": [ - { - "type": "PUBLIC", - "name": "esmond", - "tag": "esmond", - "deployParameters": { - "INGRESS_ENABLED": "ingress.enabled", - "INGRESS_HOSTS": "ingress.hosts", - "INGRESS_TLS_ENABLED": "ingress.tls.enabled", - "INGRESS_CLASS": "ingress.class", - "INGRESS_LETSENCRYPT": "ingress.tls.acme", - "INGRESS_WILDCARD_OR_ISSUER": "ingress.tls.certOrIssuer" - } - }, - { - "type": "EXTERNAL", - "name": "Logs", - "tag": "logs", - "deployParameters": { - "INGRESS_HOSTS": "logs.ingress.hosts", - "INGRESS_CLASS": "logs.ingress.class" - } - } - ] - }, - "appConfigurationSpec": { - "configFileRepositoryRequired": true, - "configUpdateEnabled": true, - "templates": [ - { - "configFileName": "ip-auth.txt", - "configFileTemplateContent": "" - } - ] - } - } -} \ No newline at end of file diff --git a/src/test/shell/data/apps/app18-wifimon.json b/src/test/shell/data/apps/app18-wifimon.json deleted file mode 100644 index 7953c27720ca98fb71e923310288741ae8a38eea..0000000000000000000000000000000000000000 --- a/src/test/shell/data/apps/app18-wifimon.json +++ /dev/null @@ -1,308 +0,0 @@ -{ - "applicationBase": { - "id": null, - "name": "WiFiMon", - "license": "GÉANT Standard Open Source Software Outward Licence", - "licenseUrl": "https://geant3plus.archive.geant.net/About/Documents/GN3_10_325GEANTIPRPolicyv1.2_30SEP11.pdf", - "wwwUrl": "https://www.geant.org/wifimon", - "sourceUrl": "https://bitbucket.software.geant.org/projects/WFMON/repos/agent/browse", - "issuesUrl": "https://jira.software.geant.org/projects/WIFIM", - "nmaasDocumentationUrl": "https://wiki.geant.org/display/NMAAS/NMaaS+Tools#NMaaSTools-Wifimon", - "descriptions": [ - { - "language": "en", - "briefDescription": "Wireless Crowdsourced Performance Monitoring and Verification", - "fullDescription": "WiFiMon is a WiFi network monitoring and performance verification system. It is capable of detecting performance issues, to visualise the workload of the network, and to provide technical information about the WiFi network (e.g. signal strength, link quality, bit rate, etc.)." - }, - { - "language": "de", - "briefDescription": "Wireless Crowdsourced Performance Monitoring and Verification", - "fullDescription": "WiFiMon is a WiFi network monitoring and performance verification system. It is capable of detecting performance issues, to visualise the workload of the network, and to provide technical information about the WiFi network (e.g. signal strength, link quality, bit rate, etc.)." - }, - { - "language": "fr", - "briefDescription": "Wireless Crowdsourced Performance Monitoring and Verification", - "fullDescription": "WiFiMon is a WiFi network monitoring and performance verification system. It is capable of detecting performance issues, to visualise the workload of the network, and to provide technical information about the WiFi network (e.g. signal strength, link quality, bit rate, etc.)." - }, - { - "language": "pl", - "briefDescription": "Wireless Crowdsourced Performance Monitoring and Verification", - "fullDescription": "WiFiMon is a WiFi network monitoring and performance verification system. It is capable of detecting performance issues, to visualise the workload of the network, and to provide technical information about the WiFi network (e.g. signal strength, link quality, bit rate, etc.)." - } - ], - "tags": [ - "monitoring", "wifi" - ] - }, - "application": { - "id": null, - "name": "WiFiMon", - "version": "0.1.1", - "configWizardTemplate": { - "template": { - "components": [ - { - "label": "Tabs", - "components": [ - { - "label": "Base", - "key": "configTab", - "components": [ - { - "label": "Configuration", - "hideLabel": true, - "tableView": true, - "type": "container", - "input": true, - "tab": 0, - "key": "configuration", - "components": [ - { - "label": "WiFiMon UI default user email address", - "type": "email", - "input": true, - "key": "defaultEmailAddress", - "inputFormat": "plain", - "validate": { - "required": true - }, - "tab": 0 - }, - { - "label": "WiFiMon UI default access password", - "type": "password", - "input": true, - "key": "defaultAccessPassword", - "inputFormat": "plain", - "validate": { - "required": true - }, - "tab": 0 - } - ] - }, - { - "label": "Mandatory parameters", - "hideLabel": true, - "type": "container", - "input": true, - "tab": 0, - "key": "mandatoryParameters", - "components": [ - { - "label": "WiFiMon UI storage space (GB):", - "type": "textfield", - "input": true, - "key": "ui#persistence#size", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain", - "defaultValue": "1Gi" - }, - { - "label": "WiFiMon SP storage space (GB):", - "type": "textfield", - "input": true, - "key": "sp#persistence#size", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain", - "defaultValue": "1Gi" - }, - { - "label": "WiFiMon SP number of instances:", - "type": "number", - "input": true, - "key": "sp#replicas", - "tab": 0, - "validate": { - "required": true, - "min": 1, - "max": 8, - "step": "any", - "integer": "", - "multiple": "", - "custom": "" - }, - "inputFormat": "number", - "defaultValue": 1 - }, - { - "label": "Elasticsearch storage space (GB):", - "type": "textfield", - "input": true, - "key": "elastic-stack#elasticsearch#volumeClaimTemplate#resources#requests#storage", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain", - "defaultValue": "10Gi" - }, - { - "label": "Logstash storage space (GB):", - "type": "textfield", - "input": true, - "key": "elastic-stack#logstash#volumeClaimTemplate#resources#requests#storage", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain", - "defaultValue": "5Gi" - } - ] - } - ] - } - ], - "type": "tabs", - "input": false, - "key": "tabs" - }, - { - "type": "button", - "label": "Apply configuration", - "disableOnInvalid": true, - "theme": "primary", - "input": false, - "tableView": true - } - ] - } - }, - "configUpdateWizardTemplate": null, - "appDeploymentSpec": { - "supportedDeploymentEnvironments": [ - "KUBERNETES" - ], - "kubernetesTemplate": { - "chart": { - "name": "nmaas-wifimon", - "version": "2.0.1" - }, - "mainDeploymentName": "ui" - }, - "deployParameters": { - "DOMAIN_CODENAME_ELASTICSEARCH": "elastic-stack.elasticsearch.service.annotations.\"metallb\\.universe\\.tf/address-pool\"=%VALUE%", - "DOMAIN_CODENAME_LOGSTASH": "elastic-stack.logstash.service.annotations.\"metallb\\.universe\\.tf/address-pool\"=%VALUE%", - "RELEASE_NAME_ELASTICSEARCH_CLUSTER_NAME": "elastic-stack.elasticsearch.clusterName", - "RELEASE_NAME_KIBANA": "elastic-stack.kibana.elasticsearchHosts=http://%VALUE%-pllabprod:9200", - "RELEASE_NAME_ELASTICSEARCH_MASTER_SERVICE": "elastic-stack.elasticsearch.masterService=%VALUE%-pllabprod" - }, - "globalDeployParameters": { - "elastic-stack.elasticsearch.nodeGroup": "pllabprod", - "elastic-stack.elasticsearch.imageTag": "7.7.1", - "elastic-stack.logstash.imageTag": "7.7.1", - "elastic-stack.kibana.imageTag": "7.7.1", - "elastic-stack.elasticsearch.clusterHealthCheckParams": "\"wait_for_status=yellow&timeout=1s\"", - "elastic-stack.logstash.extraEnvs[0].name": "ENCRYPTION_STRING", - "elastic-stack.logstash.extraEnvs[0].value": "%RANDOM_STRING_32%" - }, - "exposesWebUI": true, - "allowSshAccess": false, - "accessMethods": [ - { - "type": "EXTERNAL", - "name": "WiFiMon UI", - "tag": "ui", - "deployParameters": { - "INGRESS_ENABLED": "ui.ingress.enabled", - "INGRESS_HOSTS": "ui.ingress.hosts", - "INGRESS_TLS_ENABLED": "ui.ingress.tls.enabled", - "INGRESS_CLASS": "ui.ingress.class", - "INGRESS_LETSENCRYPT": "ui.ingress.tls.acme", - "INGRESS_WILDCARD_OR_ISSUER": "ui.ingress.tls.certOrIssuer" - } - }, - { - "type": "PUBLIC", - "name": "WiFiMon SP", - "tag": "sp", - "deployParameters": { - "INGRESS_ENABLED": "sp.ingress.enabled", - "INGRESS_HOSTS": "sp.ingress.hosts", - "INGRESS_TLS_ENABLED": "sp.ingress.tls.enabled", - "INGRESS_CLASS": "sp.ingress.class", - "INGRESS_LETSENCRYPT": "sp.ingress.tls.acme", - "INGRESS_WILDCARD_OR_ISSUER": "sp.ingress.tls.certOrIssuer" - } - }, - { - "type": "EXTERNAL", - "name": "Elasticsearch", - "tag": "elasticsearch", - "deployParameters": { - "INGRESS_ENABLED": "elastic-stack.elasticsearch.ingress.enabled", - "INGRESS_HOSTS": "elastic-stack.elasticsearch.ingress.hosts", - "INGRESS_CLASS": "elastic-stack.elasticsearch.ingress.annotations.\"kubernetes\\.io/ingress\\.class\"=%VALUE%", - "INGRESS_TLS_HOSTS": "elastic-stack.elasticsearch.ingress.tls[0].hosts" - } - }, - { - "type": "EXTERNAL", - "name": "Kibana", - "tag": "kibana", - "deployParameters": { - "INGRESS_ENABLED": "elastic-stack.kibana.ingress.enabled", - "INGRESS_HOSTS": "elastic-stack.kibana.ingress.hosts", - "INGRESS_CLASS": "elastic-stack.kibana.ingress.annotations.\"kubernetes\\.io/ingress\\.class\"=%VALUE%", - "INGRESS_TLS_HOSTS": "elastic-stack.kibana.ingress.tls[0].hosts" - } - }, - { - "type": "INTERNAL", - "name": "DATA", - "tag": "logstash", - "deployParameters": { - "K8S_SERVICE_SUFFIX": "logstash" - } - }, - { - "type": "INTERNAL", - "name": "DATA", - "tag": "elasticsearch", - "deployParameters": { - "K8S_SERVICE_SUFFIX": "pllabprod" - } - } - ], - "storageVolumes": [] - }, - "appConfigurationSpec": { - "configFileRepositoryRequired": true, - "configUpdateEnabled": false, - "templates": [ - { - "configFileName": "init.sql", - "configFileDirectory": "ui-init", - "configFileTemplateContent": "CREATE TABLE subnets (\nsubnet text,\nsubnet_id serial PRIMARY KEY );\nCREATE TABLE users (\nid serial PRIMARY KEY,\nemail text NOT NULL,\npassword_hash text NOT NULL,\nrole text NOT NULL);\nCREATE TABLE accesspoints (\napid serial PRIMARY KEY,\nmac text NOT NULL,\nlatitude text,\nlongitude text,\nbuilding text,\nfloor text,\nnotes text);\nCREATE TABLE options (\noptionsid serial PRIMARY KEY,\nuserdata text NOT NULL,\nuservisualoption text NOT NULL,\ncorrelationmethod text NOT NULL\n);\nGRANT USAGE ON SCHEMA public to wifimon_user;\nGRANT CONNECT ON DATABASE wifimon_database to wifimon_user;\nGRANT USAGE ON SCHEMA public to wifimon_user;\nGRANT SELECT ON subnets, users, accesspoints, options TO wifimon_user;\nGRANT INSERT ON subnets, users, accesspoints, options TO wifimon_user;\nGRANT DELETE ON subnets, users, accesspoints, options TO wifimon_user;\nGRANT UPDATE ON accesspoints, options TO wifimon_user;\nGRANT USAGE, SELECT ON SEQUENCE subnets_subnet_id_seq TO wifimon_user;\nGRANT USAGE, SELECT ON SEQUENCE users_id_seq TO wifimon_user;\nGRANT USAGE, SELECT, UPDATE ON SEQUENCE options_optionsid_seq TO wifimon_user;\nGRANT USAGE, SELECT, UPDATE ON SEQUENCE accesspoints_apid_seq TO wifimon_user;\nINSERT INTO users VALUES ('1', '${defaultEmailAddress}', '${helper.encode(defaultAccessPassword)}', 'ADMIN');" - }, - { - "configFileName": "uptime.conf", - "configFileDirectory": "pipelines", - "configFileTemplateContent": "input { exec { command => \"uptime\" interval => 30 } } output { elasticsearch { hosts => [\"http://${RELEASE_NAME}-pllabprod:9200\"] index => \"logstash\" } }" - }, - { - "configFileName": "beats-pipeline.yml", - "configFileDirectory": "pipelines", - "configFileTemplateContent": "input {\n beats {\n port => 5044\n }\n}\n\noutput {\n if ([logtype] == \"radius\") {\n pipeline { send_to => radiuslogs }\n } else { \n pipeline { send_to => dhcplogs }\n }\n}\n" - }, - { - "configFileName": "dhcp-pipeline.yml", - "configFileDirectory": "pipelines", - "configFileTemplateContent": "input {\n pipeline { address => dhcplogs }\n}\n\nfilter {\n dissect {\n mapping => {\n \"message\" => \"%{} DHCPACK on %{ip} to %{mac} %{}\"\n }\n\n remove_field => [\n \"logtype\",\n \"message\",\n \"@version\"\n ]\n }\n\n if \"beats_input_codec_plain_applied\" in [tags] {\n mutate { remove_tag => [\"beats_input_codec_plain_applied\"] }\n }\n\n fingerprint {\n key => \"${r\"${ENCRYPTION_STRING}\"}\"\n method => \"SHA512\"\n source => \"ip\"\n target => \"ip\"\n }\n\n fingerprint {\n key => \"${r\"${ENCRYPTION_STRING}\"}\"\n method => \"SHA512\"\n source => \"mac\"\n target => \"mac\"\n }\n}\n\noutput {\n elasticsearch {\n hosts => [\"http://${RELEASE_NAME}-pllabprod:9200\"]\n index => \"dhcplogs\"\n }\n}\n" - }, - { - "configFileName": "radius-pipeline.yml", - "configFileDirectory": "pipelines", - "configFileTemplateContent": "input {\n pipeline { address => radiuslogs }\n}\n\nfilter {\n mutate { gsub => [ \"message\", \"[\\n\\t]+\", \" \" ] }\n\n kv {\n allow_duplicate_values => false\n\n include_keys => [\n \"Calling-Station-Id\",\n \"Framed-IP-Address\",\n \"Timestamp\",\n \"Called-Station-Id\",\n \"NAS-IP-Address\",\n \"Acct-Status-Type\"\n ]\n\n remove_field => [\n \"logtype\",\n \"message\",\n \"@version\"\n ]\n }\n\n if \"beats_input_codec_plain_applied\" in [tags] {\n mutate { remove_tag => [\"beats_input_codec_plain_applied\"] }\n }\n\n geoip { source => \"NAS-IP-Address\" }\n\n fingerprint {\n key => \"${r\"${ENCRYPTION_STRING}\"}\"\n method => \"SHA512\"\n source => \"Calling-Station-Id\"\n target => \"Calling-Station-Id\"\n }\n\n fingerprint {\n key => \"${r\"${ENCRYPTION_STRING}\"}\"\n method => \"SHA512\"\n source => \"Framed-IP-Address\"\n target => \"Framed-IP-Address\"\n }\n}\n\noutput {\n elasticsearch {\n hosts => [\"http://${RELEASE_NAME}-pllabprod:9200\"]\n index => \"radiuslogs\"\n }\n}\n" - } - ] - } - } -} \ No newline at end of file diff --git a/src/test/shell/data/apps/app18-wifimon_v1.6.0.json b/src/test/shell/data/apps/app18-wifimon_v1.6.0.json deleted file mode 100644 index 1729dd3c90216d6972a18e66b4a2d8aabcce5a9f..0000000000000000000000000000000000000000 --- a/src/test/shell/data/apps/app18-wifimon_v1.6.0.json +++ /dev/null @@ -1,263 +0,0 @@ -{ - "id": null, - "name": "WiFiMon", - "version": "1.6.0", - "configWizardTemplate": { - "template": { - "components": [ - { - "label": "Tabs", - "components": [ - { - "label": "Base", - "key": "configTab", - "components": [ - { - "label": "Configuration", - "hideLabel": true, - "tableView": true, - "type": "container", - "input": true, - "tab": 0, - "key": "configuration", - "components": [ - { - "label": "WiFiMon UI default user email address", - "type": "email", - "input": true, - "key": "defaultEmailAddress", - "inputFormat": "plain", - "validate": { - "required": true - }, - "tab": 0 - }, - { - "label": "WiFiMon UI default access password", - "type": "password", - "input": true, - "key": "defaultAccessPassword", - "inputFormat": "plain", - "validate": { - "required": true - }, - "tab": 0 - } - ] - }, - { - "label": "Mandatory parameters", - "hideLabel": true, - "type": "container", - "input": true, - "tab": 0, - "key": "mandatoryParameters", - "components": [ - { - "label": "WiFiMon UI storage space (GB):", - "type": "textfield", - "input": true, - "key": "ui#persistence#size", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain", - "defaultValue": "1Gi" - }, - { - "label": "WiFiMon SP storage space (GB):", - "type": "textfield", - "input": true, - "key": "sp#persistence#size", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain", - "defaultValue": "1Gi" - }, - { - "label": "WiFiMon SP number of instances:", - "type": "number", - "input": true, - "key": "sp#replicas", - "tab": 0, - "validate": { - "required": true, - "min": 1, - "max": 8, - "step": "any", - "integer": "", - "multiple": "", - "custom": "" - }, - "inputFormat": "number", - "defaultValue": 1 - }, - { - "label": "Elasticsearch storage space (GB):", - "type": "textfield", - "input": true, - "key": "elastic-stack#elasticsearch#volumeClaimTemplate#resources#requests#storage", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain", - "defaultValue": "10Gi" - }, - { - "label": "Logstash storage space (GB):", - "type": "textfield", - "input": true, - "key": "elastic-stack#logstash#volumeClaimTemplate#resources#requests#storage", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain", - "defaultValue": "5Gi" - } - ] - } - ] - } - ], - "type": "tabs", - "input": false, - "key": "tabs" - }, - { - "type": "button", - "label": "Apply configuration", - "disableOnInvalid": true, - "theme": "primary", - "input": false, - "tableView": true - } - ] - } - }, - "configUpdateWizardTemplate": null, - "appDeploymentSpec": { - "supportedDeploymentEnvironments": [ - "KUBERNETES" - ], - "kubernetesTemplate": { - "chart": { - "name": "nmaas-wifimon", - "version": "2.0.2" - }, - "mainDeploymentName": "ui" - }, - "deployParameters": { - "DOMAIN_CODENAME_ELASTICSEARCH": "elastic-stack.elasticsearch.service.annotations.\"metallb\\.universe\\.tf/address-pool\"=%VALUE%", - "DOMAIN_CODENAME_LOGSTASH": "elastic-stack.logstash.service.annotations.\"metallb\\.universe\\.tf/address-pool\"=%VALUE%", - "RELEASE_NAME_ELASTICSEARCH_CLUSTER_NAME": "elastic-stack.elasticsearch.clusterName", - "RELEASE_NAME_KIBANA": "elastic-stack.kibana.elasticsearchHosts=http://%VALUE%-pllabprod:9200", - "RELEASE_NAME_ELASTICSEARCH_MASTER_SERVICE": "elastic-stack.elasticsearch.masterService=%VALUE%-pllabprod" - }, - "globalDeployParameters": { - "elastic-stack.elasticsearch.nodeGroup": "pllabprod", - "elastic-stack.elasticsearch.clusterHealthCheckParams": "\"wait_for_status=yellow&timeout=1s\"", - "elastic-stack.logstash.extraEnvs[0].name": "ENCRYPTION_STRING", - "elastic-stack.logstash.extraEnvs[0].value": "%RANDOM_STRING_32%" - }, - "exposesWebUI": true, - "allowSshAccess": false, - "accessMethods": [ - { - "type": "EXTERNAL", - "name": "WiFiMon UI", - "tag": "ui", - "deployParameters": { - "INGRESS_ENABLED": "ui.ingress.enabled", - "INGRESS_HOSTS": "ui.ingress.hosts", - "INGRESS_TLS_ENABLED": "ui.ingress.tls.enabled", - "INGRESS_CLASS": "ui.ingress.class", - "INGRESS_LETSENCRYPT": "ui.ingress.tls.acme", - "INGRESS_WILDCARD_OR_ISSUER": "ui.ingress.tls.certOrIssuer" - } - }, - { - "type": "PUBLIC", - "name": "WiFiMon SP", - "tag": "sp", - "deployParameters": { - "INGRESS_ENABLED": "sp.ingress.enabled", - "INGRESS_HOSTS": "sp.ingress.hosts", - "INGRESS_TLS_ENABLED": "sp.ingress.tls.enabled", - "INGRESS_CLASS": "sp.ingress.class", - "INGRESS_LETSENCRYPT": "sp.ingress.tls.acme", - "INGRESS_WILDCARD_OR_ISSUER": "sp.ingress.tls.certOrIssuer" - } - }, - { - "type": "EXTERNAL", - "name": "Elasticsearch", - "tag": "elasticsearch", - "deployParameters": { - "INGRESS_ENABLED": "elastic-stack.elasticsearch.ingress.enabled", - "INGRESS_HOSTS": "elastic-stack.elasticsearch.ingress.hosts", - "INGRESS_CLASS": "elastic-stack.elasticsearch.ingress.annotations.\"kubernetes\\.io/ingress\\.class\"=%VALUE%", - "INGRESS_TLS_HOSTS": "elastic-stack.elasticsearch.ingress.tls[0].hosts" - } - }, - { - "type": "EXTERNAL", - "name": "Kibana", - "tag": "kibana", - "deployParameters": { - "INGRESS_ENABLED": "elastic-stack.kibana.ingress.enabled", - "INGRESS_HOSTS": "elastic-stack.kibana.ingress.hosts", - "INGRESS_CLASS": "elastic-stack.kibana.ingress.annotations.\"kubernetes\\.io/ingress\\.class\"=%VALUE%", - "INGRESS_TLS_HOSTS": "elastic-stack.kibana.ingress.tls[0].hosts" - } - }, - { - "type": "INTERNAL", - "name": "DATA", - "tag": "logstash", - "deployParameters": { - "K8S_SERVICE_SUFFIX": "logstash" - } - }, - { - "type": "INTERNAL", - "name": "DATA", - "tag": "elasticsearch", - "deployParameters": { - "K8S_SERVICE_SUFFIX": "pllabprod" - } - } - ], - "storageVolumes": [] - }, - "appConfigurationSpec": { - "configFileRepositoryRequired": true, - "configUpdateEnabled": true, - "templates": [ - { - "configFileName": "init.sql", - "configFileDirectory": "ui-init", - "configFileTemplateContent": "CREATE TABLE subnets (\nsubnet text,\nsubnet_id serial PRIMARY KEY );\nCREATE TABLE users (\nid serial PRIMARY KEY,\nemail text NOT NULL,\npassword_hash text NOT NULL,\nrole text NOT NULL);\nCREATE TABLE accesspoints (\napid serial PRIMARY KEY,\nmac text NOT NULL,\nlatitude text,\nlongitude text,\nbuilding text,\nfloor text,\nnotes text);\nCREATE TABLE options (\noptionsid serial PRIMARY KEY,\nuserdata text NOT NULL,\nuservisualoption text NOT NULL,\ncorrelationmethod text NOT NULL\n);\nGRANT USAGE ON SCHEMA public to wifimon_user;\nGRANT CONNECT ON DATABASE wifimon_database to wifimon_user;\nGRANT USAGE ON SCHEMA public to wifimon_user;\nGRANT SELECT ON subnets, users, accesspoints, options TO wifimon_user;\nGRANT INSERT ON subnets, users, accesspoints, options TO wifimon_user;\nGRANT DELETE ON subnets, users, accesspoints, options TO wifimon_user;\nGRANT UPDATE ON accesspoints, options TO wifimon_user;\nGRANT USAGE, SELECT ON SEQUENCE subnets_subnet_id_seq TO wifimon_user;\nGRANT USAGE, SELECT ON SEQUENCE users_id_seq TO wifimon_user;\nGRANT USAGE, SELECT, UPDATE ON SEQUENCE options_optionsid_seq TO wifimon_user;\nGRANT USAGE, SELECT, UPDATE ON SEQUENCE accesspoints_apid_seq TO wifimon_user;\nINSERT INTO users VALUES ('1', '${defaultEmailAddress}', '${helper.encode(defaultAccessPassword)}', 'ADMIN');" - }, - { - "configFileName": "beats-pipeline.yml", - "configFileDirectory": "pipelines", - "configFileTemplateContent": "#\n# beats pipeline\n#\ninput {\n beats {\n port => 5044\n }\n}\n\noutput {\n\tif [logtype] == \"radius\" {\n\t\tpipeline { send_to => radiuslogs }\n\t} else if [logtype] == \"dhcp\" { # logtype is dhcp\n\t\tpipeline { send_to => dhcplogs }\n\t}\n}" - }, - { - "configFileName": "dhcp-pipeline.yml", - "configFileDirectory": "pipelines", - "configFileTemplateContent": "#\n# dhcp pipeline\n#\n\ninput {\n pipeline { address => dhcplogs }\n}\n\nfilter {\n dissect {\n mapping => {\n \"message\" => \"%{Timestamp} %{+Timestamp} %{+Timestamp} %{} DHCPACK on %{IP-Address} to %{MAC-Address} %{}\"\n }\n\n remove_field => [\n \"logtype\",\n \"message\",\n \"@version\"\n ]\n }\n\n date {\n match => [ \"Timestamp\", \"MMM d HH:mm:ss\", \"MMM dd HH:mm:ss\" ]\n target => \"DHCP-Timestamp\"\n remove_field => [ \"Timestamp\" ]\n }\n\n if \"beats_input_codec_plain_applied\" in [tags] {\n mutate { remove_tag => [\"beats_input_codec_plain_applied\"] }\n }\n\n fingerprint {\n key => \"${r\"${ENCRYPTION_STRING}\"}\"\n method => \"SHA512\"\n source => \"IP-Address\"\n target => \"IP-Address\"\n }\n\n fingerprint {\n key => \"${r\"${ENCRYPTION_STRING}\"}\"\n method => \"SHA512\"\n source => \"MAC-Address\"\n target => \"MAC-Address\"\n }\n}\n\noutput {\n elasticsearch {\n hosts => [\"http://${RELEASE_NAME}-pllabprod:9200\"]\n index => \"dhcplogs\"\n ilm_enabled => true\n ilm_policy => \"wifimon_policy\"\n }\n}" - }, - { - "configFileName": "radius-pipeline.yml", - "configFileDirectory": "pipelines", - "configFileTemplateContent": "#\n# radius pipeline\n#\n\ninput {\n pipeline { address => radiuslogs }\n}\n\nfilter {\n mutate { gsub => [ \"message\", \"[\\n\\t]+\", \" \" ] }\n\n kv {\n allow_duplicate_values => false\n\n include_keys => [\n \"Calling-Station-Id\",\n \"Framed-IP-Address\",\n \"Event-Timestamp\",\n \"Called-Station-Id\",\n \"NAS-IP-Address\",\n \"Acct-Status-Type\"\n ]\n\n remove_field => [\n \"logtype\",\n \"message\",\n \"@version\"\n ]\n }\n\n date {\n match => [ \"Event-Timestamp\", \"MMM d yyyy HH:mm:ss ZZZ\", \"MMM dd yyyy HH:mm:ss ZZZ\" ]\n target => \"RADIUS-Timestamp\"\n remove_field => [ \"Event-Timestamp\" ]\n }\n\n if \"beats_input_codec_plain_applied\" in [tags] {\n mutate { remove_tag => [\"beats_input_codec_plain_applied\"] }\n }\n\n geoip { source => \"NAS-IP-Address\" }\n\n fingerprint {\n key => \"${r\"${ENCRYPTION_STRING}\"}\"\n method => \"SHA512\"\n source => \"Calling-Station-Id\"\n target => \"Calling-Station-Id\"\n }\n\n fingerprint {\n key => \"${r\"${ENCRYPTION_STRING}\"}\"\n method => \"SHA512\"\n source => \"Framed-IP-Address\"\n target => \"Framed-IP-Address\"\n }\n}\n\noutput {\n elasticsearch {\n hosts => [\"http://${RELEASE_NAME}-pllabprod:9200\"]\n index => \"radiuslogs\"\n ilm_enabled => true\n ilm_policy => \"wifimon_policy\"\n }\n}\n" - } - ] - } -} \ No newline at end of file diff --git a/src/test/shell/data/apps/app19-perfsonar-centralmanagement.json b/src/test/shell/data/apps/app19-perfsonar-centralmanagement.json deleted file mode 100644 index 640b2421a24d34aaf208fac94a7bf36e86a5e011..0000000000000000000000000000000000000000 --- a/src/test/shell/data/apps/app19-perfsonar-centralmanagement.json +++ /dev/null @@ -1,420 +0,0 @@ -{ - "applicationBase": { - "id": null, - "name": "Central Management", - "license": "", - "licenseUrl": "", - "wwwUrl": "https://docs.perfsonar.net", - "sourceUrl": "https://github.com/perfsonar", - "issuesUrl": "https://github.com/perfsonar", - "nmaasDocumentationUrl": "https://wiki.geant.org/display/NMAAS/NMaaS+Tools#NMaaSTools-perfSONARCentralManagement", - "descriptions": [ - { - "language": "en", - "briefDescription": "perfSONAR Central Management", - "fullDescription": "A set of perfSONAR central management components comprising psConfig Web Admin, MaDDash and Esmond." - }, - { - "language": "de", - "briefDescription": "perfSONAR Central Management", - "fullDescription": "A set of perfSONAR central management components comprising psConfig Web Admin, MaDDash and Esmond." - }, - { - "language": "fr", - "briefDescription": "perfSONAR Central Management", - "fullDescription": "A set of perfSONAR central management components comprising psConfig Web Admin, MaDDash and Esmond." - }, - { - "language": "pl", - "briefDescription": "perfSONAR Central Management", - "fullDescription": "A set of perfSONAR central management components comprising psConfig Web Admin, MaDDash and Esmond." - } - ], - "tags": [ - "database", - "archive", - "visualization", - "dashboard", - "management", - "configuration" - ] - }, - "application": { - "id": null, - "name": "Central Management", - "version": "4.3.4", - "configWizardTemplate": { - "template": { - "components": [ - { - "label": "Tabs", - "components": [ - { - "label": "Base", - "key": "configTab", - "components": [ - { - "label": "Mandatory parameters", - "hideLabel": true, - "type": "container", - "input": true, - "tab": 0, - "key": "mandatoryParameters", - "components": [ - { - "title": "pSConfig Web Admin", - "key": "nmaas-perfsonar-pwa", - "input": false, - "tableView": false, - "type": "panel", - "theme": "default", - "breadcrumb": "default", - "hideLabel": false, - "components": [ - { - "label": "Default username", - "type": "textfield", - "input": true, - "key": "nmaas-perfsonar-centralmanagement-sca-auth#env#username", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain" - }, - { - "label": "Default password", - "type": "password", - "input": true, - "key": "nmaas-perfsonar-centralmanagement-sca-auth#env#password", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain" - }, - { - "label": "Default email", - "type": "email", - "input": true, - "key": "nmaas-perfsonar-centralmanagement-sca-auth#env#email", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain" - }, - { - "label": "Allocated storage space (GB)", - "type": "textfield", - "input": true, - "key": "nmaas-perfsonar-centralmanagement-sca-auth#persistence#size", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain", - "defaultValue": "1Gi", - "placeholder": "Default value: 1Gi" - } - ], - "style": { - "margin-bottom": "5px" - } - }, - { - "title": "MaDDash", - "key": "nmaas-perfsonar-maddash", - "input": false, - "tableView": false, - "type": "panel", - "theme": "default", - "breadcrumb": "default", - "hideLabel": false, - "components": [ - { - "label": "Default admin username", - "type": "textfield", - "input": true, - "key": "nmaas-perfsonar-maddash#env#MADDASH_USERNAME", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain" - }, - { - "label": "Default admin password", - "type": "password", - "input": true, - "key": "nmaas-perfsonar-maddash#env#MADDASH_PASSWORD", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain" - }, - { - "label": "Log access username", - "type": "textfield", - "input": true, - "key": "nmaas-perfsonar-maddash#env#LOG_USERNAME", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain" - }, - { - "label": "Log access password", - "type": "password", - "input": true, - "key": "nmaas-perfsonar-maddash#env#LOG_PASSWORD", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain" - }, - { - "label": "Access options", - "type": "radio", - "input": true, - "tableView": true, - "inputType": "radio", - "key": "accessmethods#public#maddash", - "values": [ - { - "value": "yes", - "label": "Public" - }, - { - "value": "no", - "label": "VPN" - } - ], - "defaultValue": "yes", - "validate": { - "required": true - }, - "labelPosition": "top", - "optionsLabelPosition": "right" - }, - { - "label": "Allocated storage space (GB)", - "type": "textfield", - "input": true, - "key": "nmaas-perfsonar-maddash#persistence#size", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain", - "defaultValue": "5Gi", - "placeholder": "Default value: 5Gi" - } - ], - "style": { - "margin-bottom": "5px" - } - }, - { - "title": "Esmond", - "key": "nmaas-perfsonar-esmond", - "input": false, - "tableView": false, - "type": "panel", - "theme": "default", - "breadcrumb": "default", - "hideLabel": false, - "components": [ - { - "label": "Log access username", - "type": "textfield", - "input": true, - "key": "nmaas-perfsonar-esmond#env#LOG_USERNAME", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain" - }, - { - "label": "Log access password", - "type": "password", - "input": true, - "key": "nmaas-perfsonar-esmond#env#LOG_PASSWORD", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain" - }, - { - "label": "Access options", - "type": "radio", - "input": true, - "tableView": true, - "inputType": "radio", - "key": "accessmethods#public#esmond", - "values": [ - { - "value": "yes", - "label": "Public" - }, - { - "value": "no", - "label": "VPN" - } - ], - "defaultValue": "yes", - "validate": { - "required": true - }, - "labelPosition": "top", - "optionsLabelPosition": "right" - }, - { - "label": "Allocated storage space (GB)", - "type": "textfield", - "input": true, - "key": "nmaas-perfsonar-esmond#persistence#size", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain", - "defaultValue": "10Gi", - "placeholder": "Default value: 10Gi" - } - ], - "style": { - "margin-bottom": "5px" - } - } - ] - } - ] - } - ], - "type": "tabs", - "input": false, - "key": "tabs" - }, - { - "type": "button", - "label": "Apply configuration", - "disableOnInvalid": true, - "theme": "primary", - "input": false, - "tableView": true - } - ] - } - }, - "configUpdateWizardTemplate": null, - "appDeploymentSpec": { - "supportedDeploymentEnvironments": [ - "KUBERNETES" - ], - "kubernetesTemplate": { - "chart": { - "name": "nmaas-perfsonar-centralmanagement", - "version": "2.2.0" - }, - "mainDeploymentName": "pwa-admin" - }, - "deployParameters": { - "RELEASE_NAME_PWA_SCA_AUTH_PV_NAME": "nmaas-perfsonar-pwa.nmaas-perfsonar-centralmanagement-sca-auth.persistence.name=%VALUE%-pwa", - "RELEASE_NAME_PWA_NGINX_PV_NAME": "nmaas-perfsonar-pwa.nmaas-perfsonar-centralmanagement-nginx.persistence.name=%VALUE%-pwa", - "RELEASE_NAME_PWA_ADMIN_PV_NAME": "nmaas-perfsonar-pwa.nmaas-perfsonar-centralmanagement-pwa-admin.persistence.name=%VALUE%-pwa", - "RELEASE_NAME_PWA_PUB_AUTH_PV_NAME": "nmaas-perfsonar-pwa.nmaas-perfsonar-centralmanagement-pwa-pub.persistence.name=%VALUE%-pwa", - "RELEASE_NAME_ESMOND_PV_NAME": "nmaas-perfsonar-esmond.persistence.name=%VALUE%-esmond", - "RELEASE_NAME_MADDASH_PV_NAME": "nmaas-perfsonar-maddash.persistence.name=%VALUE%-maddash", - "RELEASE_NAME_ESMOND_SERVICE_ACCOUNT_NAME": "nmaas-perfsonar-esmond.serviceAccount.name=%VALUE%-esmond", - "RELEASE_NAME_MADDASH_SERVICE_ACCOUNT_NAME": "nmaas-perfsonar-maddash.serviceAccount.name=%VALUE%-maddash" - }, - "globalDeployParameters": { - "nmaas-perfsonar-pwa.mongodb.nameOverride": "mongodb" - }, - "storageVolumes": [], - "exposesWebUI": true, - "allowSshAccess": true, - "accessMethods": [ - { - "type": "EXTERNAL", - "name": "PWA", - "tag": "pwa", - "deployParameters": { - "INGRESS_ENABLED": "nmaas-perfsonar-pwa.nmaas-perfsonar-centralmanagement-nginx.ingress.enabled", - "INGRESS_HOSTS": "nmaas-perfsonar-pwa.nmaas-perfsonar-centralmanagement-nginx.ingress.hosts", - "INGRESS_TLS_ENABLED": "nmaas-perfsonar-pwa.nmaas-perfsonar-centralmanagement-nginx.ingress.tls.enabled", - "INGRESS_CLASS": "nmaas-perfsonar-pwa.nmaas-perfsonar-centralmanagement-nginx.ingress.class", - "INGRESS_LETSENCRYPT": "nmaas-perfsonar-pwa.nmaas-perfsonar-centralmanagement-nginx.ingress.tls.acme", - "INGRESS_WILDCARD_OR_ISSUER": "nmaas-perfsonar-pwa.nmaas-perfsonar-centralmanagement-nginx.ingress.tls.certOrIssuer" - } - }, - { - "type": "PUBLIC", - "name": "MaDDash", - "tag": "maddash", - "deployParameters": { - "INGRESS_ENABLED": "nmaas-perfsonar-maddash.ingress.enabled", - "INGRESS_HOSTS": "nmaas-perfsonar-maddash.ingress.hosts", - "INGRESS_TLS_ENABLED": "nmaas-perfsonar-maddash.ingress.tls.enabled", - "INGRESS_CLASS": "nmaas-perfsonar-maddash.ingress.class", - "INGRESS_LETSENCRYPT": "nmaas-perfsonar-maddash.ingress.tls.acme", - "INGRESS_WILDCARD_OR_ISSUER": "nmaas-perfsonar-maddash.ingress.tls.certOrIssuer" - } - }, - { - "type": "EXTERNAL", - "name": "MaDDash logs", - "tag": "maddash-logs", - "deployParameters": { - "INGRESS_HOSTS": "nmaas-perfsonar-maddash.logs.ingress.hosts", - "INGRESS_CLASS": "nmaas-perfsonar-maddash.logs.ingress.class" - } - }, - { - "type": "PUBLIC", - "name": "Esmond", - "tag": "esmond", - "deployParameters": { - "INGRESS_ENABLED": "nmaas-perfsonar-esmond.ingress.enabled", - "INGRESS_HOSTS": "nmaas-perfsonar-esmond.ingress.hosts", - "INGRESS_TLS_ENABLED": "nmaas-perfsonar-esmond.ingress.tls.enabled", - "INGRESS_CLASS": "nmaas-perfsonar-esmond.ingress.class", - "INGRESS_LETSENCRYPT": "nmaas-perfsonar-esmond.ingress.tls.acme", - "INGRESS_WILDCARD_OR_ISSUER": "nmaas-perfsonar-esmond.ingress.tls.certOrIssuer" - } - }, - { - "type": "EXTERNAL", - "name": "Esmond logs", - "tag": "esmond-logs", - "deployParameters": { - "INGRESS_HOSTS": "nmaas-perfsonar-esmond.logs.ingress.hosts", - "INGRESS_CLASS": "nmaas-perfsonar-esmond.logs.ingress.class" - } - } - ] - }, - "appConfigurationSpec": { - "configFileRepositoryRequired": true, - "configUpdateEnabled": true, - "templates": [ - { - "configFileName": "mesh.txt", - "configFileDirectory": "maddash", - "configFileTemplateContent": " " - }, - { - "configFileName": "ip-auth.txt", - "configFileDirectory": "esmond", - "configFileTemplateContent": " " - } - ] - } - } -} \ No newline at end of file diff --git a/src/test/shell/data/apps/app20-icinga.json b/src/test/shell/data/apps/app20-icinga.json deleted file mode 100644 index 4c17d6921001430d2624d0fae699c1cc5dc53c10..0000000000000000000000000000000000000000 --- a/src/test/shell/data/apps/app20-icinga.json +++ /dev/null @@ -1,245 +0,0 @@ -{ - "applicationBase": { - "id": null, - "name": "Icinga2", - "license": "GPL 2.0", - "licenseUrl": "https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt", - "wwwUrl": "https://icinga.com", - "sourceUrl": "https://github.com/Icinga/icinga2", - "issuesUrl": "https://github.com/Icinga/icinga2/issues", - "nmaasDocumentationUrl": "https://wiki.geant.org/display/NMAAS/NMaaS+Tools#NMaaSTools-Icinga2", - "descriptions": [ - { - "language": "en", - "briefDescription": "Scalable and extensible monitoring system", - "fullDescription": "Icinga is a monitoring system which checks the availability of your network resources, notifies users of outages, and generates performance data for reporting. Scalable and extensible, Icinga can monitor large, complex environments across multiple locations. <br><br>Icinga 2 is the monitoring server and requires Icinga Web 2 on top in your Icinga Stack, which is already included as part of the NMaaS deployment. <br><br>The configuration can be easily managed with either the Icinga Director, config management tools or plain text within the Icinga DSL." - }, - { - "language": "de", - "briefDescription": "Scalable and extensible monitoring system", - "fullDescription": "Icinga is a monitoring system which checks the availability of your network resources, notifies users of outages, and generates performance data for reporting. Scalable and extensible, Icinga can monitor large, complex environments across multiple locations. <br><br>Icinga 2 is the monitoring server and requires Icinga Web 2 on top in your Icinga Stack, which is already included as part of the NMaaS deployment. <br><br>The configuration can be easily managed with either the Icinga Director, config management tools or plain text within the Icinga DSL." - }, - { - "language": "fr", - "briefDescription": "Scalable and extensible monitoring system", - "fullDescription": "Icinga is a monitoring system which checks the availability of your network resources, notifies users of outages, and generates performance data for reporting. Scalable and extensible, Icinga can monitor large, complex environments across multiple locations. <br><br>Icinga 2 is the monitoring server and requires Icinga Web 2 on top in your Icinga Stack, which is already included as part of the NMaaS deployment. <br><br>The configuration can be easily managed with either the Icinga Director, config management tools or plain text within the Icinga DSL." - }, - { - "language": "pl", - "briefDescription": "Scalable and extensible monitoring system", - "fullDescription": "Icinga is a monitoring system which checks the availability of your network resources, notifies users of outages, and generates performance data for reporting. Scalable and extensible, Icinga can monitor large, complex environments across multiple locations. <br><br>Icinga 2 is the monitoring server and requires Icinga Web 2 on top in your Icinga Stack, which is already included as part of the NMaaS deployment. <br><br>The configuration can be easily managed with either the Icinga Director, config management tools or plain text within the Icinga DSL." - } - ], - "tags": [ - "monitoring", - "visualization", - "alerting" - ] - }, - "application": { - "id": null, - "name": "Icinga2", - "version": "2.11.4", - "configWizardTemplate": { - "template": { - "components": [ - { - "label": "Tabs", - "components": [ - { - "label": "Base", - "key": "configTab", - "components": [ - { - "label": "Mandatory parameters", - "hideLabel": true, - "type": "container", - "input": true, - "tab": 0, - "key": "mandatoryParameters", - "components": [ - { - "label": "Default web admin user", - "type": "textfield", - "input": true, - "key": "env#ICINGAWEB2_ADMIN_USER", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain" - }, - { - "label": "Default web admin password", - "type": "password", - "input": true, - "key": "env#ICINGAWEB2_ADMIN_PASS", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain" - }, - { - "label": "Allocated configuration directory storage (GB)", - "type": "textfield", - "input": true, - "key": "persistence#size", - "tab": 0, - "validate": { - "required": true - }, - "defaultValue": "1Gi", - "placeholder": "Default value: 1Gi", - "inputFormat": "plain" - }, - { - "label": "Allocated SQL database storage (GB)", - "type": "textfield", - "input": true, - "key": "mariadb#primary#persistence#size", - "tab": 0, - "validate": { - "required": true - }, - "defaultValue": "16Gi", - "placeholder": "Default value: 16Gi", - "inputFormat": "plain" - } - ] - }, - { - "label": "Configuration", - "hideLabel": true, - "tableView": true, - "type": "container", - "input": true, - "tab": 0, - "key": "configuration", - "components": [ - { - "label": "Email address for sending email alerts", - "type": "email", - "input": true, - "key": "notificationsEmail", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain" - } - ] - } - ] - } - ], - "type": "tabs", - "input": false, - "key": "tabs" - }, - { - "type": "button", - "label": "Apply configuration", - "disableOnInvalid": true, - "theme": "primary", - "input": false, - "tableView": true - } - ] - } - }, - "configUpdateWizardTemplate": null, - "appDeploymentSpec": { - "supportedDeploymentEnvironments": [ - "KUBERNETES" - ], - "kubernetesTemplate": { - "chart": { - "name": "nmaas-icinga2", - "version": "2.0.1" - } - }, - "deployParameters": { - "DOMAIN_CODENAME": "metallb.subnetName=%VALUE%" - }, - "globalDeployParameters": { - "manualConfig": "false" - }, - "storageVolumes": [], - "exposesWebUI": true, - "allowSshAccess": false, - "accessMethods": [ - { - "type": "DEFAULT", - "name": "Icinga", - "tag": "icinga", - "deployParameters": { - "INGRESS_ENABLED": "ingress.enabled", - "INGRESS_HOSTS": "ingress.hosts", - "INGRESS_CLASS": "ingress.class", - "INGRESS_TLS_ENABLED": "ingress.tls.enabled" - } - }, - { - "type": "INTERNAL", - "name": "API", - "tag": "api", - "deployParameters": { - "K8S_SERVICE_SUFFIX": "api", - "K8S_SERVICE_PORT": "5665" - } - } - ] - }, - "appConfigurationSpec": { - "configFileRepositoryRequired": true, - "configUpdateEnabled": true, - "templates": [ - { - "configFileName": "app.conf", - "configFileTemplateContent": "object IcingaApplication \"app\" { }" - }, - { - "configFileName": "apt.conf", - "configFileTemplateContent": "apply Service \"apt\" {\n import \"generic-service\"\n\n check_command = \"apt\"\n\n assign where host.name == NodeName\n}" - }, - { - "configFileName": "commands.conf", - "configFileTemplateContent": "/* Command objects */\n\n/* Notification Commands\n *\n * Please check the documentation for all required and\n * optional parameters.\n */\n\nobject NotificationCommand \"mail-host-notification\" {\n command = [ ConfigDir + \"/scripts/mail-host-notification.sh\" ]\n\n arguments += {\n\t\"-4\" = \"$notification_address$\"\n\t\"-6\" = \"$notification_address6$\"\n\t\"-b\" = \"$notification_author$\"\n\t\"-c\" = \"$notification_comment$\"\n\t\"-d\" = {\n\t required = true\n\t value = \"$notification_date$\"\n\t}\n\t\"-f\" = {\n\t value = \"$notification_from$\"\n\t description = \"Set from address. Requires GNU mailutils (Debian/Ubuntu) or mailx (RHEL/SUSE)\"\n\t}\n\t\"-i\" = \"$notification_icingaweb2url$\"\n\t\"-l\" = {\n\t required = true\n\t value = \"$notification_hostname$\"\n\t}\n\t\"-n\" = {\n\t required = true\n\t value = \"$notification_hostdisplayname$\"\n\t}\n\t\"-o\" = {\n\t required = true\n\t value = \"$notification_hostoutput$\"\n\t}\n\t\"-r\" = {\n\t required = true\n\t value = \"$notification_useremail$\"\n\t}\n\t\"-s\" = {\n\t required = true\n\t value = \"$notification_hoststate$\"\n\t}\n\t\"-t\" = {\n\t required = true\n\t value = \"$notification_type$\"\n\t}\n\t\"-v\" = \"$notification_logtosyslog$\"\n }\n\n vars += {\n\tnotification_address = \"$address$\"\n\tnotification_address6 = \"$address6$\"\n\tnotification_author = \"$notification.author$\"\n\tnotification_comment = \"$notification.comment$\"\n\tnotification_type = \"$notification.type$\"\n\tnotification_date = \"$icinga.long_date_time$\"\n\tnotification_hostname = \"$host.name$\"\n\tnotification_hostdisplayname = \"$host.display_name$\"\n\tnotification_hostoutput = \"$host.output$\"\n\tnotification_hoststate = \"$host.state$\"\n\tnotification_useremail = \"$user.email$\"\n }\n}\n\nobject NotificationCommand \"mail-service-notification\" {\n command = [ ConfigDir + \"/scripts/mail-service-notification.sh\" ]\n\n arguments += {\n\t\"-4\" = \"$notification_address$\"\n\t\"-6\" = \"$notification_address6$\"\n\t\"-b\" = \"$notification_author$\"\n\t\"-c\" = \"$notification_comment$\"\n\t\"-d\" = {\n\t required = true\n\t value = \"$notification_date$\"\n\t}\n\t\"-e\" = {\n\t required = true\n\t value = \"$notification_servicename$\"\n\t}\n\t\"-f\" = {\n\t value = \"$notification_from$\"\n\t description = \"Set from address. Requires GNU mailutils (Debian/Ubuntu) or mailx (RHEL/SUSE)\"\n\t}\n\t\"-i\" = \"$notification_icingaweb2url$\"\n\t\"-l\" = {\n\t required = true\n\t value = \"$notification_hostname$\"\n\t}\n\t\"-n\" = {\n\t required = true\n\t value = \"$notification_hostdisplayname$\"\n\t}\n\t\"-o\" = {\n\t required = true\n\t value = \"$notification_serviceoutput$\"\n\t}\n\t\"-r\" = {\n\t required = true\n\t value = \"$notification_useremail$\"\n\t}\n\t\"-s\" = {\n\t required = true\n\t value = \"$notification_servicestate$\"\n\t}\n\t\"-t\" = {\n\t required = true\n\t value = \"$notification_type$\"\n\t}\n\t\"-u\" = {\n\t required = true\n\t value = \"$notification_servicedisplayname$\"\n\t}\n\t\"-v\" = \"$notification_logtosyslog$\"\n }\n\n vars += {\n\tnotification_address = \"$address$\"\n\tnotification_address6 = \"$address6$\"\n\tnotification_author = \"$notification.author$\"\n\tnotification_comment = \"$notification.comment$\"\n\tnotification_type = \"$notification.type$\"\n\tnotification_date = \"$icinga.long_date_time$\"\n\tnotification_hostname = \"$host.name$\"\n\tnotification_hostdisplayname = \"$host.display_name$\"\n\tnotification_servicename = \"$service.name$\"\n\tnotification_serviceoutput = \"$service.output$\"\n\tnotification_servicestate = \"$service.state$\"\n\tnotification_useremail = \"$user.email$\"\n\tnotification_servicedisplayname = \"$service.display_name$\"\n }\n}\n\n/*\n * If you prefer to use the notification scripts with environment\n * variables instead of command line parameters, you can use\n * the following commands. They have been updated from < 2.7\n * to support the new notification scripts and should help\n * with an upgrade.\n * Remove the comment blocks and comment the notification commands above.\n */\n\n/*\n\nobject NotificationCommand \"mail-host-notification\" {\n command = [ ConfigDir + \"/scripts/mail-host-notification.sh\" ]\n\n env = {\n\tNOTIFICATIONTYPE = \"$notification.type$\"\n\tHOSTDISPLAYNAME = \"$host.display_name$\"\n\tHOSTNAME = \"$host.name$\"\n\tHOSTADDRESS = \"$address$\"\n\tHOSTSTATE = \"$host.state$\"\n\tLONGDATETIME = \"$icinga.long_date_time$\"\n\tHOSTOUTPUT = \"$host.output$\"\n\tNOTIFICATIONAUTHORNAME = \"$notification.author$\"\n\tNOTIFICATIONCOMMENT = \"$notification.comment$\"\n\tHOSTDISPLAYNAME = \"$host.display_name$\"\n\tUSEREMAIL = \"$user.email$\"\n }\n}\n\nobject NotificationCommand \"mail-service-notification\" {\n command = [ ConfigDir + \"/scripts/mail-service-notification.sh\" ]\n\n env = {\n\tNOTIFICATIONTYPE = \"$notification.type$\"\n\tSERVICENAME = \"$service.name$\"\n\tHOSTNAME = \"$host.name$\"\n\tHOSTDISPLAYNAME = \"$host.display_name$\"\n\tHOSTADDRESS = \"$address$\"\n\tSERVICESTATE = \"$service.state$\"\n\tLONGDATETIME = \"$icinga.long_date_time$\"\n\tSERVICEOUTPUT = \"$service.output$\"\n\tNOTIFICATIONAUTHORNAME = \"$notification.author$\"\n\tNOTIFICATIONCOMMENT = \"$notification.comment$\"\n\tHOSTDISPLAYNAME = \"$host.display_name$\"\n\tSERVICEDISPLAYNAME = \"$service.display_name$\"\n\tUSEREMAIL = \"$user.email$\"\n }\n}\n\n*/\n" - }, - { - "configFileName": "downtimes.conf", - "configFileTemplateContent": "/**\n * The example downtime apply rule.\n */\n\napply ScheduledDowntime \"backup-downtime\" to Service {\n author = \"icingaadmin\"\n comment = \"Scheduled downtime for backup\"\n\n ranges = {\n monday = service.vars.backup_downtime\n tuesday = service.vars.backup_downtime\n wednesday = service.vars.backup_downtime\n thursday = service.vars.backup_downtime\n friday = service.vars.backup_downtime\n saturday = service.vars.backup_downtime\n sunday = service.vars.backup_downtime\n }\n\n assign where service.vars.backup_downtime != \"\"\n}" - }, - { - "configFileName": "groups.conf", - "configFileTemplateContent": "/**\n * Host group examples.\n */\n\nobject HostGroup \"linux-servers\" {\n display_name = \"Linux Servers\"\n\n assign where host.vars.os == \"Linux\"\n}\n\nobject HostGroup \"windows-servers\" {\n display_name = \"Windows Servers\"\n\n assign where host.vars.os == \"Windows\"\n}\n\n/**\n * Service group examples.\n */\n\nobject ServiceGroup \"ping\" {\n display_name = \"Ping Checks\"\n\n assign where match(\"ping*\", service.name)\n}\n\nobject ServiceGroup \"http\" {\n display_name = \"HTTP Checks\"\n\n assign where match(\"http*\", service.check_command)\n}\n\nobject ServiceGroup \"disk\" {\n display_name = \"Disk Checks\"\n\n assign where match(\"disk*\", service.check_command)\n}" - }, - { - "configFileName": "hosts.conf", - "configFileTemplateContent": "/*\n * Host definitions with object attributes\n * used for apply rules for Service, Notification,\n * Dependency and ScheduledDowntime objects.\n *\n * Tip: Use `icinga2 object list --type Host` to\n * list all host objects after running\n * configuration validation (`icinga2 daemon -C`).\n */\n\n/*\n * This is an example host based on your\n * local host's FQDN. Specify the NodeName\n * constant in `constants.conf` or use your\n * own description, e.g. \"db-host-1\".\n */" - }, - { - "configFileName": "notifications.conf", - "configFileTemplateContent": "/**\n * The example notification apply rules.\n *\n * Only applied if host/service objects have\n * the custom variable `notification` defined\n * and containing `mail` as key.\n *\n * Check `hosts.conf` for an example.\n */\n\napply Notification \"mail-icingaadmin\" to Host {\n import \"mail-host-notification\"\n user_groups = host.vars.notification.mail.groups\n users = host.vars.notification.mail.users\n\n //interval = 2h\n\n //vars.notification_logtosyslog = true\n\n assign where host.vars.notification.mail\n}\n\napply Notification \"mail-icingaadmin\" to Service {\n import \"mail-service-notification\"\n user_groups = host.vars.notification.mail.groups\n users = host.vars.notification.mail.users\n\n //interval = 2h\n\n //vars.notification_logtosyslog = true\n\n assign where host.vars.notification.mail\n}" - }, - { - "configFileName": "services.conf", - "configFileTemplateContent": "/*\n * Service apply rules.\n *\n * The CheckCommand objects `ping4`, `ping6`, etc\n * are provided by the plugin check command templates.\n * Check the documentation for details.\n *\n * Tip: Use `icinga2 object list --type Service` to\n * list all service objects after running\n * configuration validation (`icinga2 daemon -C`).\n */\n\n/*\n * This is an example host based on your\n * local host's FQDN. Specify the NodeName\n * constant in `constants.conf` or use your\n * own description, e.g. \"db-host-1\".\n */\n\n/*\n * These are generic `ping4` and `ping6`\n * checks applied to all hosts having the\n * `address` resp. `address6` attribute\n * defined.\n */\napply Service \"ping4\" {\n import \"generic-service\"\n\n check_command = \"ping4\"\n\n assign where host.address\n}\n\n/*\n * Apply the `ssh` service to all hosts\n * with the `address` attribute defined and\n * the custom variable `os` set to `Linux`.\n */\napply Service \"ssh\" {\n import \"generic-service\"\n\n check_command = \"ssh\"\n\n assign where (host.address || host.address6) && host.vars.os == \"Linux\"\n}\n\n\n\napply Service for (http_vhost => config in host.vars.http_vhosts) {\n import \"generic-service\"\n\n check_command = \"http\"\n\n vars += config\n}\n\napply Service for (disk => config in host.vars.disks) {\n import \"generic-service\"\n\n check_command = \"disk\"\n\n vars += config\n}\n\napply Service \"icinga\" {\n import \"generic-service\"\n\n check_command = \"icinga\"\n\n assign where host.name == NodeName\n}\n\napply Service \"load\" {\n import \"generic-service\"\n\n check_command = \"load\"\n\n /* Used by the ScheduledDowntime apply rule in `downtimes.conf`. */\n vars.backup_downtime = \"02:00-03:00\"\n\n assign where host.name == NodeName\n}\n\napply Service \"procs\" {\n import \"generic-service\"\n\n check_command = \"procs\"\n\n assign where host.name == NodeName\n}\n\napply Service \"swap\" {\n import \"generic-service\"\n\n check_command = \"swap\"\n\n assign where host.name == NodeName\n}\n\napply Service \"users\" {\n import \"generic-service\"\n\n check_command = \"users\"\n\n assign where host.name == NodeName\n}" - }, - { - "configFileName": "templates.conf", - "configFileTemplateContent": "/*\n * Generic template examples.\n */\n\n\n/**\n * Provides default settings for hosts. By convention\n * all hosts should import this template.\n *\n * The CheckCommand object `hostalive` is provided by\n * the plugin check command templates.\n * Check the documentation for details.\n */\ntemplate Host \"generic-host\" {\n max_check_attempts = 3\n check_interval = 1m\n retry_interval = 30s\n\n check_command = \"hostalive\"\n}\n\n/**\n * Provides default settings for services. By convention\n * all services should import this template.\n */\ntemplate Service \"generic-service\" {\n max_check_attempts = 5\n check_interval = 1m\n retry_interval = 30s\n}\n\n/**\n * Provides default settings for users. By convention\n * all users should inherit from this template.\n */\n\ntemplate User \"generic-user\" {\n\n}\n\n/**\n * Provides default settings for host notifications.\n * By convention all host notifications should import\n * this template.\n */\ntemplate Notification \"mail-host-notification\" {\n command = \"mail-host-notification\"\n\n states = [ Up, Down ]\n types = [ Problem, Acknowledgement, Recovery, Custom,\n\t\t\tFlappingStart, FlappingEnd,\n\t\t\tDowntimeStart, DowntimeEnd, DowntimeRemoved ]\n\n vars += {\n\t// notification_icingaweb2url = \"https://www.example.com/icingaweb2\"\n\t// notification_from = \"Icinga 2 Host Monitoring <icinga@example.com>\"\n\tnotification_logtosyslog = false\n }\n\n period = \"24x7\"\n}\n\n/**\n * Provides default settings for service notifications.\n * By convention all service notifications should import\n * this template.\n */\ntemplate Notification \"mail-service-notification\" {\n command = \"mail-service-notification\"\n\n states = [ OK, Warning, Critical, Unknown ]\n types = [ Problem, Acknowledgement, Recovery, Custom,\n\t\t\tFlappingStart, FlappingEnd,\n\t\t\tDowntimeStart, DowntimeEnd, DowntimeRemoved ]\n\n vars += {\n\t// notification_icingaweb2url = \"https://www.example.com/icingaweb2\"\n\t// notification_from = \"Icinga 2 Service Monitoring <icinga@example.com>\"\n\tnotification_logtosyslog = false\n }\n\n period = \"24x7\"\n}" - }, - { - "configFileName": "timeperiods.conf", - "configFileTemplateContent": "/**\n * Sample timeperiods for Icinga 2.\n * Check the documentation for details.\n */\n\nobject TimePeriod \"24x7\" {\n display_name = \"Icinga 2 24x7 TimePeriod\"\n ranges = {\n \"monday\" \t= \"00:00-24:00\"\n \"tuesday\" \t= \"00:00-24:00\"\n \"wednesday\" = \"00:00-24:00\"\n \"thursday\" \t= \"00:00-24:00\"\n \"friday\" \t= \"00:00-24:00\"\n \"saturday\" \t= \"00:00-24:00\"\n \"sunday\" \t= \"00:00-24:00\"\n }\n}\n\nobject TimePeriod \"9to5\" {\n display_name = \"Icinga 2 9to5 TimePeriod\"\n ranges = {\n \"monday\" \t= \"09:00-17:00\"\n \"tuesday\" \t= \"09:00-17:00\"\n \"wednesday\" = \"09:00-17:00\"\n \"thursday\" \t= \"09:00-17:00\"\n \"friday\" \t= \"09:00-17:00\"\n }\n}\n\nobject TimePeriod \"never\" {\n display_name = \"Icinga 2 never TimePeriod\"\n ranges = {\n }\n}" - }, - { - "configFileName": "users.conf", - "configFileTemplateContent": "/**\n * The example user 'icingaadmin' and the example\n * group 'icingaadmins'.\n */\n\nobject User \"icingaadmin\" {\n import \"generic-user\"\n\n display_name = \"Icinga 2 Admin\"\n groups = [ \"icingaadmins\" ]\n\n email = \"${notificationsEmail}\"\n}\n\nobject UserGroup \"icingaadmins\" {\n display_name = \"Icinga 2 Admin Group\"\n}" - } - ] - } - } -} diff --git a/src/test/shell/data/apps/app21-victoria-metrics.json b/src/test/shell/data/apps/app21-victoria-metrics.json deleted file mode 100644 index be61f2c7f0b19d023668b79d006e3cd3f00040d2..0000000000000000000000000000000000000000 --- a/src/test/shell/data/apps/app21-victoria-metrics.json +++ /dev/null @@ -1,348 +0,0 @@ -{ - "applicationBase": { - "id": null, - "name": "Victoria Metrics", - "license": "Apache License 2.0", - "licenseUrl": "https://www.apache.org/licenses/LICENSE-2.0", - "wwwUrl": "https://victoriametrics.com/", - "sourceUrl": "https://github.com/VictoriaMetrics/VictoriaMetrics", - "issuesUrl": "https://github.com/VictoriaMetrics/VictoriaMetrics/issues", - "nmaasDocumentationUrl": "https://wiki.geant.org/display/NMAAS/NMaaS+Tools#NMaaSTools-VictoriaMetrics", - "descriptions": [ - { - "language": "en", - "briefDescription": "Scalable monitoring solution and time series database", - "fullDescription": "VictoriaMetrics is a highly scalable high-performance database that can be used as an external long-term storage for Prometheus metrics. <br><br>It can also completely replace Prometheus and perform the polling by itself, using a configuration format that is compatible with existing Prometheus deployments. <br>Apart from Prometheus, it can also substitute InfluxDB, OpenTSDB, and Graphite, as a result of providing compatible interfaces for these protocols. <br>Stored metrics can be easily visualized by Grafana, by adding the VictoriaMetrics instance as a Prometheus datastore. <br>No matter what protocol is used to store data in VictoriaMetrics, it is queried using the same web endpoint, and only a single datasource is required in Prometheus. <br>Another feature of VictoriaMetrics is to use advanced PromQL expressions, not available in the Prometheus implementation. <br><br>More details about this can be obtained from the <a href='https://github.com/VictoriaMetrics/VictoriaMetrics/wiki/MetricsQL'>official documentation page</a>." - }, - { - "language": "de", - "briefDescription": "Scalable monitoring solution and time series database", - "fullDescription": "VictoriaMetrics is a highly scalable high-performance database that can be used as an external long-term storage for Prometheus metrics. <br><br>It can also completely replace Prometheus and perform the polling by itself, using a configuration format that is compatible with existing Prometheus deployments. <br>Apart from Prometheus, it can also substitute InfluxDB, OpenTSDB, and Graphite, as a result of providing compatible interfaces for these protocols. <br>Stored metrics can be easily visualized by Grafana, by adding the VictoriaMetrics instance as a Prometheus datastore. <br>No matter what protocol is used to store data in VictoriaMetrics, it is queried using the same web endpoint, and only a single datasource is required in Prometheus. <br>Another feature of VictoriaMetrics is to use advanced PromQL expressions, not available in the Prometheus implementation. <br><br>More details about this can be obtained from the <a href='https://github.com/VictoriaMetrics/VictoriaMetrics/wiki/MetricsQL'>official documentation page</a>." - }, - { - "language": "fr", - "briefDescription": "Scalable monitoring solution and time series database", - "fullDescription": "VictoriaMetrics is a highly scalable high-performance database that can be used as an external long-term storage for Prometheus metrics. <br><br>It can also completely replace Prometheus and perform the polling by itself, using a configuration format that is compatible with existing Prometheus deployments. <br>Apart from Prometheus, it can also substitute InfluxDB, OpenTSDB, and Graphite, as a result of providing compatible interfaces for these protocols. <br>Stored metrics can be easily visualized by Grafana, by adding the VictoriaMetrics instance as a Prometheus datastore. <br>No matter what protocol is used to store data in VictoriaMetrics, it is queried using the same web endpoint, and only a single datasource is required in Prometheus. <br>Another feature of VictoriaMetrics is to use advanced PromQL expressions, not available in the Prometheus implementation. <br><br>More details about this can be obtained from the <a href='https://github.com/VictoriaMetrics/VictoriaMetrics/wiki/MetricsQL'>official documentation page</a>." - }, - { - "language": "pl", - "briefDescription": "Scalable monitoring solution and time series database", - "fullDescription": "VictoriaMetrics is a highly scalable high-performance database that can be used as an external long-term storage for Prometheus metrics. <br><br>It can also completely replace Prometheus and perform the polling by itself, using a configuration format that is compatible with existing Prometheus deployments. <br>Apart from Prometheus, it can also substitute InfluxDB, OpenTSDB, and Graphite, as a result of providing compatible interfaces for these protocols. <br>Stored metrics can be easily visualized by Grafana, by adding the VictoriaMetrics instance as a Prometheus datastore. <br>No matter what protocol is used to store data in VictoriaMetrics, it is queried using the same web endpoint, and only a single datasource is required in Prometheus. <br>Another feature of VictoriaMetrics is to use advanced PromQL expressions, not available in the Prometheus implementation. <br><br>More details about this can be obtained from the <a href='https://github.com/VictoriaMetrics/VictoriaMetrics/wiki/MetricsQL'>official documentation page</a>." - } - ], - "tags": [ - "monitoring", - "timeseries", - "database" - ] - }, - "application": { - "id": null, - "name": "Victoria Metrics", - "version": "1.46.0", - "configWizardTemplate": { - "template": { - "components": [ - { - "label": "Tabs", - "components": [ - { - "label": "Base", - "key": "configTab", - "components": [ - { - "label": "Configuration", - "hideLabel": true, - "tableView": true, - "type": "container", - "input": true, - "tab": 0, - "key": "configuration", - "components": [ - { - "label": "Global configuration", - "hideLabel": true, - "type": "container", - "persistent": true, - "key": "global_config", - "components": [ - { - "label": "Global scrape", - "type": "textfield", - "input": true, - "inputFormat": "plain", - "defaultValue": "15s", - "key": "global_scrape" - }, - { - "label": "Global evaluation", - "type": "textfield", - "input": true, - "inputFormat": "plain", - "defaultValue": "30s", - "key": "global_evaluation" - } - ] - }, - { - "label": "Jobs", - "disableAddingRemovingRows": false, - "addAnother": "Add jobs", - "addAnotherPosition": "bottom", - "multiple": true, - "tableView": true, - "type": "datagrid", - "input": true, - "key": "targets", - "validate": { - "required": true - }, - "components": [ - { - "label": "Job name", - "type": "textfield", - "input": true, - "inputFormat": "plain", - "key": "jobName", - "validate": { - "required": true, - "minLength": 1 - }, - "row": "0-0" - }, - { - "label": "Scrape interval", - "type": "textfield", - "input": true, - "defaultValue": "15s", - "inputFormat": "plain", - "key": "scrape_interval", - "validate": { - "required": true - }, - "row": "0-1" - }, - { - "label": "Metrics path", - "type": "textfield", - "input": true, - "defaultValue": "/metrics", - "inputFormat": "plain", - "key": "metrics_path", - "validate": { - "required": true - }, - "row": "0-2" - }, - { - "label": "Targets", - "hideLabel": false, - "disableAddingRemovingRows": false, - "addAnother": "Add address", - "addAnotherPosition": "bottom", - "multiple": true, - "tableView": true, - "alwaysEnabled": false, - "type": "datagrid", - "input": true, - "key": "Addresses", - "validate": { - "required": true - }, - "components": [ - { - "label": "IP address and port", - "hideLabel": false, - "tableView": true, - "type": "textfield", - "input": true, - "key": "ipAddress", - "placeholder": "127.0.0.1:9001", - "validate": { - "required": true, - "pattern": "[\\s\\S]+\\:[0-9]{1,6}$" - }, - "inputFormat": "plain", - "row": "0-0" - } - ], - "row": "0-3" - }, - { - "label": "Labels", - "hideLabel": false, - "disableAddingRemovingRows": false, - "addAnother": "Add label", - "addAnotherPosition": "bottom", - "multiple": true, - "tableView": true, - "alwaysEnabled": false, - "type": "datagrid", - "input": true, - "key": "Labels", - "components": [ - { - "label": "Label name", - "type": "textfield", - "input": true, - "inputFormat": "plain", - "key": "label_name", - "row": "0-4" - }, - { - "label": "Label value", - "type": "textfield", - "input": true, - "inputFormat": "plain", - "key": "label_value", - "row": "0-0" - } - ], - "row": "0-5" - } - ] - } - ] - } - ] - }, - { - "label": "Additional", - "key": "additionalParametersTab", - "components": [ - { - "label": "additionalParameters", - "hideLabel": true, - "type": "container", - "input": true, - "tab": 2, - "key": "additionalParameters", - "components": [ - { - "label": "Retention period (in months)", - "placeholder": "1", - "defaultValue": "1", - "mask": false, - "spellcheck": true, - "delimiter": false, - "requireDecimal": false, - "inputFormat": "plain", - "key": "server#retentionPeriod", - "tab": 2, - "type": "number", - "input": true - }, - { - "label": "Allocated storage space (in GB)", - "type": "textfield", - "input": true, - "key": "server#persistentVolume#size", - "tab": 0, - "validate": { - "required": true - }, - "defaultValue": "16Gi", - "placeholder": "Default value: 16Gi", - "inputFormat": "plain" - } - ] - } - ] - } - ], - "type": "tabs", - "input": false, - "key": "tabs" - }, - { - "type": "button", - "label": "Apply configuration", - "disableOnInvalid": true, - "theme": "primary", - "input": false, - "tableView": true - } - ] - } - }, - "configUpdateWizardTemplate": null, - "appDeploymentSpec": { - "supportedDeploymentEnvironments": [ - "KUBERNETES" - ], - "kubernetesTemplate": { - "chart": { - "name": "nmaas-victoria", - "version": "2.0.1" - }, - "mainDeploymentName": "nmaas-victoria-server" - }, - "deployParameters": { - "DOMAIN_CODENAME": "server.service.metallb.subnetName=%VALUE%" - }, - "globalDeployParameters": { - "server.image.tag": "v1.46.0" - }, - "storageVolumes": [], - "exposesWebUI": true, - "allowSshAccess": false, - "accessMethods": [ - { - "type": "EXTERNAL", - "name": "Victoria", - "tag": "victoria", - "deployParameters": { - "INGRESS_ENABLED": "server.ingress.enabled", - "INGRESS_HOSTS": "server.ingress.host=%VALUE%", - "INGRESS_CLASS": "server.ingress.class" - } - }, - { - "type": "INTERNAL", - "name": "OpenTSDB", - "tag": "opentsdb", - "deployParameters": { - "K8S_SERVICE_SUFFIX": "nmaas-victoria-server", - "K8S_SERVICE_PORT": "4242" - } - }, - { - "type": "INTERNAL", - "name": "Graphite", - "tag": "graphite", - "deployParameters": { - "K8S_SERVICE_SUFFIX": "nmaas-victoria-server", - "K8S_SERVICE_PORT": "8080" - } - }, - { - "type": "INTERNAL", - "name": "Victoria", - "tag": "victoria", - "deployParameters": { - "K8S_SERVICE_SUFFIX": "nmaas-victoria-server", - "K8S_SERVICE_PORT": "8428" - } - }, - { - "type": "LOCAL", - "name": "in-cluster", - "tag": "victoria", - "deployParameters": { - "K8S_SERVICE_SUFFIX": "nmaas-victoria-server" - } - } - ] - }, - "appConfigurationSpec": { - "configFileRepositoryRequired": true, - "configUpdateEnabled": true, - "templates": [ - { - "configFileName": "prometheus.yml", - "configFileTemplateContent": "global:\n scrape_interval: ${global_config.global_scrape}\n evaluation_interval: ${global_config.global_evaluation}\nalerting:\n alertmanagers:\n - static_configs:\n - targets:\nrule_files:\nscrape_configs:\n<#list targets as target>\n - job_name: '${target.jobName}'\n metrics_path: ${target.metrics_path}\n scrape_interval: ${target.scrape_interval}\n static_configs:\n - targets: [<#list target.Addresses as address>'${address.ipAddress}'<#sep>,</#list>]\n<#if target.Labels?has_content>\n labels:\n<#list target.Labels as labels>\n<#if labels.label_name?has_content>\n ${labels.label_name}: ${labels.label_value}\n</#if>\n</#list>\n</#if>\n<#sep>\n</#list>" - } - ] - } - } -} diff --git a/src/test/shell/data/apps/app22-synapse.json b/src/test/shell/data/apps/app22-synapse.json deleted file mode 100644 index b9504052031f6802d327e8ab20e9557f7c6edf60..0000000000000000000000000000000000000000 --- a/src/test/shell/data/apps/app22-synapse.json +++ /dev/null @@ -1,256 +0,0 @@ -{ - "applicationBase": { - "id": null, - "name": "Synapse", - "license": "Apache License 2.0", - "licenseUrl": "https://www.apache.org/licenses/LICENSE-2.0", - "wwwUrl": "https://matrix.org/docs/projects/server/synapse", - "sourceUrl": "https://github.com/matrix-org/synapse", - "issuesUrl": "https://github.com/matrix-org/synapse/issues", - "nmaasDocumentationUrl": "https://wiki.geant.org/display/NMAAS/NMaaS+Tools#NMaaSTools-Synapse", - "descriptions": [ - { - "language": "en", - "briefDescription": "Secured instant messaging for teams", - "fullDescription": "<a href=\"https://matrix.org/\">Matrix</a> is an open and secure instant messaging protocol providing rich functionality. <br><br><a href=\"https://matrix.org/docs/projects/server/synapse\">Synapse</a> is an open-source server implementing the Matrix protocol. <br><br><a href=\"https://element.io/\">Element</a> (formerly Riot) is an open-source web-client that can connect to any accessible Matrix server." - }, - { - "language": "de", - "briefDescription": "Secured instant messaging for teams", - "fullDescription": "<a href=\"https://matrix.org/\">Matrix</a> is an open and secure instant messaging protocol providing rich functionality. <br><br><a href=\"https://matrix.org/docs/projects/server/synapse\">Synapse</a> is an open-source server implementing the Matrix protocol. <br><br><a href=\"https://element.io/\">Element</a> (formerly Riot) is an open-source web-client that can connect to any accessible Matrix server." - }, - { - "language": "fr", - "briefDescription": "Secured instant messaging for teams", - "fullDescription": "<a href=\"https://matrix.org/\">Matrix</a> is an open and secure instant messaging protocol providing rich functionality. <br><br><a href=\"https://matrix.org/docs/projects/server/synapse\">Synapse</a> is an open-source server implementing the Matrix protocol. <br><br><a href=\"https://element.io/\">Element</a> (formerly Riot) is an open-source web-client that can connect to any accessible Matrix server." - }, - { - "language": "pl", - "briefDescription": "Secured instant messaging for teams", - "fullDescription": "<a href=\"https://matrix.org/\">Matrix</a> is an open and secure instant messaging protocol providing rich functionality. <br><br><a href=\"https://matrix.org/docs/projects/server/synapse\">Synapse</a> is an open-source server implementing the Matrix protocol. <br><br><a href=\"https://element.io/\">Element</a> (formerly Riot) is an open-source web-client that can connect to any accessible Matrix server." - } - ], - "tags": [ - "messaging" - ] - }, - "application": { - "id": null, - "name": "Synapse", - "version": "1.22.1", - "configWizardTemplate": { - "template": { - "components": [ - { - "label": "Tabs", - "components": [ - { - "label": "Base", - "key": "configTab", - "components": [ - { - "label": "Additional Parameters", - "hideLabel": true, - "type": "container", - "input": true, - "tab": 0, - "key": "additionalParameters", - "components": [ - { - "label": "Element instance name (shown on the login page)", - "type": "textfield", - "input": true, - "key": "riot#branding#brand", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain" - }, - { - "label": "Allocated capacity for the media volume", - "type": "textfield", - "input": true, - "key": "volumes#media#capacity", - "tab": 0, - "validate": { - "required": true - }, - "defaultValue": "10Gi", - "placeholder": "Default value: 10Gi", - "inputFormat": "plain" - }, - { - "label": "Allocated database storage space", - "type": "textfield", - "input": true, - "key": "postgresql#persistence#size", - "tab": 0, - "validate": { - "required": true - }, - "defaultValue": "4Gi", - "placeholder": "Default value: 4Gi", - "inputFormat": "plain" - } - ] - }, - { - "label": "Configuration", - "hideLabel": true, - "tableView": true, - "type": "container", - "input": true, - "tab": 0, - "key": "configuration", - "components": [ - { - "label": "Administrator email address", - "type": "email", - "input": true, - "key": "matrixAdminEmail", - "inputFormat": "plain", - "validate": { - "required": true - } - }, - { - "label": "Block regular users inviting others to rooms", - "type": "checkbox", - "defaultValue": false, - "input": true, - "key": "matrixBlockNonAdminInvites", - "inputFormat": "plain" - }, - { - "label": "Registrations are opened", - "type": "checkbox", - "defaultValue": false, - "input": true, - "key": "matrixRegistrationEnabled", - "inputFormat": "plain" - }, - { - "label": "Guests allowed to register", - "type": "checkbox", - "defaultValue": false, - "input": true, - "key": "matrixRegistrationAllowGuests", - "inputFormat": "plain" - }, - { - "label": "User online/offline indicators enabled", - "type": "checkbox", - "defaultValue": false, - "input": true, - "key": "matrixPresence", - "inputFormat": "plain" - }, - { - "label": "Expose Prometheus metrics", - "type": "checkbox", - "defaultValue": false, - "input": true, - "key": "synapseMetricsEnabled", - "inputFormat": "plain" - }, - { - "label": "Outgoing emails enabled", - "type": "checkbox", - "defaultValue": false, - "input": true, - "key": "mailEnabled", - "inputFormat": "plain" - }, - { - "label": "Default \"email from\" phrase", - "type": "textfield", - "input": true, - "key": "mailFrom", - "inputFormat": "plain", - "defaultValue": "Matrix NMaaS <no-reply@nmaas.eu>", - "placeholder": "Matrix NMaaS <no-reply@nmaas.eu>", - "validate": { - "required": true - } - } - ] - } - ] - } - ], - "type": "tabs", - "input": false, - "key": "tabs" - }, - { - "type": "button", - "label": "Apply configuration", - "disableOnInvalid": true, - "theme": "primary", - "input": false, - "tableView": true - } - ] - } - }, - "configUpdateWizardTemplate": null, - "appDeploymentSpec": { - "supportedDeploymentEnvironments": [ - "KUBERNETES" - ], - "kubernetesTemplate": { - "chart": { - "name": "nmaas-matrix", - "version": "3.0.0" - }, - "mainDeploymentName": "synapse" - }, - "deployParameters": { - "RELEASE_NAME": "fullnameOverride=%VALUE%" - }, - "globalDeployParameters": { - "manualDeployment": "false", - "mail.relay.enabled": "false", - "coturn.enabled": "false", - "postgresql.password": "matrix" - }, - "storageVolumes": [], - "exposesWebUI": true, - "allowSshAccess": false, - "accessMethods": [ - { - "type": "DEFAULT", - "name": "Synapse", - "tag": "synapse", - "deployParameters": { - "INGRESS_ENABLED": "ingress.enabled", - "INGRESS_CLASS": "ingress.annotations.\"kubernetes\\.io/ingress\\.class\"=%VALUE%", - "INGRESS_HOSTS": "ingress.hosts.synapse=%VALUE%", - "INGRESS_TLS_HOSTS": "ingress.tls[0].hosts[0]=%VALUE%" - } - }, - { - "type": "EXTERNAL", - "name": "Element", - "tag": "element", - "deployParameters": { - "INGRESS_HOSTS": "ingress.hosts.riot=%VALUE%", - "INGRESS_TLS_HOSTS": "ingress.tls[0].hosts[1]=%VALUE%" - } - } - ] - }, - "appConfigurationSpec": { - "configFileRepositoryRequired": true, - "configUpdateEnabled": true, - "templates": [ - { - "configFileName": "homeserver.yaml", - "configFileDirectory": "homeserver-config-simplified", - "configFileTemplateContent": "## Server ##\n\n# The domain name of the server, with optional explicit port.\n# This is used by remote servers to connect to this server,\n# e.g. matrix.org, localhost:8080, etc.\n# This is also the last part of your UserID.\n#\nserver_name: ${APP_INSTANCE_NAME}.${DOMAIN_CODENAME}.${BASE_URL}\n\n# When running as a daemon, the file to store the pid in\n#\npid_file: /data/homeserver.pid\n\n# The absolute URL to the web client which /_matrix/client will redirect\n# to if 'webclient' is configured under the 'listeners' configuration.\n#\n# This option can be also set to the filesystem path to the web client\n# which will be served at /_matrix/client/ if 'webclient' is configured\n# under the 'listeners' configuration, however this is a security risk:\n# https://github.com/matrix-org/synapse#security-note\n#\n#web_client_location: https://riot.example.com/\n\n# The public-facing base URL that clients use to access this HS\n# (not including _matrix/...). This is the same URL a user would\n# enter into the 'custom HS URL' field on their client. If you\n# use synapse with a reverse proxy, this should be the URL to reach\n# synapse via the proxy.\n#\npublic_baseurl: \"https://${APP_INSTANCE_NAME}.${DOMAIN_CODENAME}.${BASE_URL}\"\n# Set the soft limit on the number of file descriptors synapse can use\n# Zero is used to indicate synapse should set the soft limit to the\n# hard limit.\n#\n#soft_file_limit: 0\n\n# Set to false to disable presence tracking on this homeserver (online/offline indicators)\n#\nuse_presence: ${matrixPresence?c}\n\n# Whether to require authentication to retrieve profile data (avatars,\n# display names) of other users through the client API. Defaults to\n# 'false'. Note that profile data is also available via the federation\n# API, so this setting is of limited value if federation is enabled on\n# the server.\n#\n#require_auth_for_profile_requests: true\n\n# Uncomment to require a user to share a room with another user in order\n# to retrieve their profile information. Only checked on Client-Server\n# requests. Profile requests from other servers should be checked by the\n# requesting server. Defaults to 'false'.\n#\n#limit_profile_requests_to_users_who_share_rooms: true\n\n# If set to 'true', removes the need for authentication to access the server's\n# public rooms directory through the client API, meaning that anyone can\n# query the room directory. Defaults to 'false'.\n#\n#allow_public_rooms_without_auth: true\n\n# If set to 'true', allows any other homeserver to fetch the server's public\n# rooms directory via federation. Defaults to 'false'.\n#\nallow_public_rooms_over_federation: false\n\n# The default room version for newly created rooms.\n#\n# Known room versions are listed here:\n# https://matrix.org/docs/spec/#complete-list-of-room-versions\n#\n# For example, for room version 1, default_room_version should be set\n# to \"1\".\n#\n#default_room_version: \"5\"\n\n# The GC threshold parameters to pass to `gc.set_threshold`, if defined\n#\n#gc_thresholds: [700, 10, 10]\n\n# Set the limit on the returned events in the timeline in the get\n# and sync operations. The default value is -1, means no upper limit.\n#\n#filter_timeline_limit: 5000\n\n# Whether room invites to users on this server should be blocked\n# (except those sent by local server admins). The default is False.\n#\nblock_non_admin_invites: ${matrixBlockNonAdminInvites?c}\n\n# Room searching\n#\n# If disabled, new messages will not be indexed for searching and users\n# will receive errors when searching for messages. Defaults to enabled.\n#\nenable_search: true\n\n# Restrict federation to the following whitelist of domains.\n# N.B. we recommend also firewalling your federation listener to limit\n# inbound federation traffic as early as possible, rather than relying\n# purely on this application-layer restriction. If not specified, the\n# default is to whitelist everything.\n\n# Prevent federation requests from being sent to the following\n# blacklist IP address CIDR ranges. If this option is not specified, or\n# specified with an empty list, no ip range blacklist will be enforced.\n#\n# As of Synapse v1.4.0 this option also affects any outbound requests to identity\n# servers provided by user input.\n#\n# (0.0.0.0 and :: are always blacklisted, whether or not they are explicitly\n# listed here, since they correspond to unroutable addresses.)\n\nfederation_ip_range_blacklist:\n - '127.0.0.0/8'\n - '10.0.0.0/8'\n - '172.16.0.0/12'\n - '192.168.0.0/16'\n - '100.64.0.0/10'\n - '169.254.0.0/16'\n - '::1/128'\n - 'fe80::/64'\n - 'fc00::/7'\n\n# List of ports that Synapse should listen on, their purpose and their\n# configuration.\n#\n# Options for each listener include:\n#\n# port: the TCP port to bind to\n#\n# bind_addresses: a list of local addresses to listen on. The default is\n# 'all local interfaces'.\n#\n# type: the type of listener. Normally 'http', but other valid options are:\n# 'manhole' (see docs/manhole.md),\n# 'metrics' (see docs/metrics-howto.md),\n# 'replication' (see docs/workers.md).\n#\n# tls: set to true to enable TLS for this listener. Will use the TLS\n# key/cert specified in tls_private_key_path / tls_certificate_path.\n#\n# x_forwarded: Only valid for an 'http' listener. Set to true to use the\n# X-Forwarded-For header as the client IP. Useful when Synapse is\n# behind a reverse-proxy.\n#\n# resources: Only valid for an 'http' listener. A list of resources to host\n# on this port. Options for each resource are:\n#\n# names: a list of names of HTTP resources. See below for a list of\n# valid resource names.\n#\n# compress: set to true to enable HTTP comression for this resource.\n#\n# additional_resources: Only valid for an 'http' listener. A map of\n# additional endpoints which should be loaded via dynamic modules.\n#\n# Valid resource names are:\n#\n# client: the client-server API (/_matrix/client), and the synapse admin\n# API (/_synapse/admin). Also implies 'media' and 'static'.\n#\n# consent: user consent forms (/_matrix/consent). See\n# docs/consent_tracking.md.\n#\n# federation: the server-server API (/_matrix/federation). Also implies\n# 'media', 'keys', 'openid'\n#\n# keys: the key discovery API (/_matrix/keys).\n#\n# media: the media API (/_matrix/media).\n#\n# metrics: the metrics interface. See docs/metrics-howto.md.\n#\n# openid: OpenID authentication.\n#\n# replication: the HTTP replication API (/_synapse/replication). See\n# docs/workers.md.\n#\n# static: static resources under synapse/static (/_matrix/static). (Mostly\n# useful for 'fallback authentication'.)\n#\n# webclient: A web client. Requires web_client_location to be set.\n#\nlisteners:\n # TLS-enabled listener: for when matrix traffic is sent directly to synapse.\n #\n # Disabled by default. To enable it, uncomment the following. (Note that you\n # will also need to give Synapse a TLS key and certificate: see the TLS section\n # below.)\n #\n #- port: 8448\n # type: http\n # tls: true\n # resources:\n # - names: [client, federation]\n\n # Unsecure HTTP listener: for when matrix traffic passes through a reverse proxy\n # that unwraps TLS.\n #\n # If you plan to use a reverse proxy, please see\n # https://github.com/matrix-org/synapse/blob/master/docs/reverse_proxy.md.\n #\n - port: 8008\n tls: false\n type: http\n x_forwarded: true\n bind_addresses: ['0.0.0.0']\n\n resources:\n - names: [client, federation]\n compress: false\n\n # example additional_resources:\n #\n #additional_resources:\n # \"/_matrix/my/custom/endpoint\":\n # module: my_module.CustomRequestHandler\n # config: {}\n\n - type: metrics\n port: 9092\n bind_addresses: ['0.0.0.0']\n\n resources:\n - names: [metrics]\n # Turn on the twisted ssh manhole service on localhost on the given\n # port.\n #\n #- port: 9000\n # bind_addresses: ['::1', '127.0.0.1']\n # type: manhole\n\n# Forward extremities can build up in a room due to networking delays between\n# homeservers. Once this happens in a large room, calculation of the state of\n# that room can become quite expensive. To mitigate this, once the number of\n# forward extremities reaches a given threshold, Synapse will send an\n# org.matrix.dummy_event event, which will reduce the forward extremities\n# in the room.\n#\n# This setting defines the threshold (i.e. number of forward extremities in the\n# room) at which dummy events are sent. The default value is 10.\n#\n#dummy_events_threshold: 5\n\n\n## Homeserver blocking ##\n\n# How to reach the server admin, used in ResourceLimitError\n#\nadmin_contact: 'mailto:${matrixAdminEmail}'\n\n# Global blocking\n#\nhs_disabled: false\nhs_disabled_message: \"\"\n\n# Monthly Active User Blocking\n#\n# Used in cases where the admin or server owner wants to limit to the\n# number of monthly active users.\n#\n# 'limit_usage_by_mau' disables/enables monthly active user blocking. When\n# enabled and a limit is reached the server returns a 'ResourceLimitError'\n# with error type Codes.RESOURCE_LIMIT_EXCEEDED\n#\n# 'max_mau_value' is the hard limit of monthly active users above which\n# the server will start blocking user actions.\n#\n# 'mau_trial_days' is a means to add a grace period for active users. It\n# means that users must be active for this number of days before they\n# can be considered active and guards against the case where lots of users\n# sign up in a short space of time never to return after their initial\n# session.\n#\n# 'mau_limit_alerting' is a means of limiting client side alerting\n# should the mau limit be reached. This is useful for small instances\n# where the admin has 5 mau seats (say) for 5 specific people and no\n# interest increasing the mau limit further. Defaults to True, which\n# means that alerting is enabled\n#\n#limit_usage_by_mau: false\n#max_mau_value: 50\n#mau_trial_days: 2\n#mau_limit_alerting: false\n\n# If enabled, the metrics for the number of monthly active users will\n# be populated, however no one will be limited. If limit_usage_by_mau\n# is true, this is implied to be true.\n#\n#mau_stats_only: false\n\n# Sometimes the server admin will want to ensure certain accounts are\n# never blocked by mau checking. These accounts are specified here.\n#\n#mau_limit_reserved_threepids:\n# - medium: 'email'\n# address: 'reserved_user@example.com'\n\n# Used by phonehome stats to group together related servers.\n#server_context: context\n\n# Resource-constrained homeserver settings\n#\n# When this is enabled, the room \"complexity\" will be checked before a user\n# joins a new remote room. If it is above the complexity limit, the server will\n# disallow joining, or will instantly leave.\n#\n# Room complexity is an arbitrary measure based on factors such as the number of\n# users in the room.\n#\nlimit_remote_rooms:\n # Uncomment to enable room complexity checking.\n #\n #enabled: true\n\n # the limit above which rooms cannot be joined. The default is 1.0.\n #\n #complexity: 0.5\n\n # override the error which is returned when the room is too complex.\n #\n #complexity_error: \"This room is too complex.\"\n\n# Whether to require a user to be in the room to add an alias to it.\n# Defaults to 'true'.\n#\n#require_membership_for_aliases: false\n\n# Whether to allow per-room membership profiles through the send of membership\n# events with profile information that differ from the target's global profile.\n# Defaults to 'true'.\n#\n#allow_per_room_profiles: false\n\n# How long to keep redacted events in unredacted form in the database. After\n# this period redacted events get replaced with their redacted form in the DB.\n#\n# Defaults to `7d`. Set to `null` to disable.\n#\nredaction_retention_period: 7d\n\n# How long to track users' last seen time and IPs in the database.\n#\n# Defaults to `28d`. Set to `null` to disable clearing out of old rows.\n#\n#user_ips_max_age: 14d\n\n# Message retention policy at the server level.\n#\n# Room admins and mods can define a retention period for their rooms using the\n# 'm.room.retention' state event, and server admins can cap this period by setting\n# the 'allowed_lifetime_min' and 'allowed_lifetime_max' config options.\n#\n# If this feature is enabled, Synapse will regularly look for and purge events\n# which are older than the room's maximum retention period. Synapse will also\n# filter events received over federation so that events that should have been\n# purged are ignored and not stored again.\n#\nretention:\n # The message retention policies feature is disabled by default. Uncomment the\n # following line to enable it.\n #\n #enabled: true\n\n # Default retention policy. If set, Synapse will apply it to rooms that lack the\n # 'm.room.retention' state event. Currently, the value of 'min_lifetime' doesn't\n # matter much because Synapse doesn't take it into account yet.\n #\n #default_policy:\n # min_lifetime: 1d\n # max_lifetime: 1y\n\n # Retention policy limits. If set, a user won't be able to send a\n # 'm.room.retention' event which features a 'min_lifetime' or a 'max_lifetime'\n # that's not within this range. This is especially useful in closed federations,\n # in which server admins can make sure every federating server applies the same\n # rules.\n #\n #allowed_lifetime_min: 1d\n #allowed_lifetime_max: 1y\n\n # Server admins can define the settings of the background jobs purging the\n # events which lifetime has expired under the 'purge_jobs' section.\n #\n # If no configuration is provided, a single job will be set up to delete expired\n # events in every room daily.\n #\n # Each job's configuration defines which range of message lifetimes the job\n # takes care of. For example, if 'shortest_max_lifetime' is '2d' and\n # 'longest_max_lifetime' is '3d', the job will handle purging expired events in\n # rooms whose state defines a 'max_lifetime' that's both higher than 2 days, and\n # lower than or equal to 3 days. Both the minimum and the maximum value of a\n # range are optional, e.g. a job with no 'shortest_max_lifetime' and a\n # 'longest_max_lifetime' of '3d' will handle every room with a retention policy\n # which 'max_lifetime' is lower than or equal to three days.\n #\n # The rationale for this per-job configuration is that some rooms might have a\n # retention policy with a low 'max_lifetime', where history needs to be purged\n # of outdated messages on a more frequent basis than for the rest of the rooms\n # (e.g. every 12h), but not want that purge to be performed by a job that's\n # iterating over every room it knows, which could be heavy on the server.\n #\n #purge_jobs:\n # - shortest_max_lifetime: 1d\n # longest_max_lifetime: 3d\n # interval: 12h\n # - shortest_max_lifetime: 3d\n # longest_max_lifetime: 1y\n # interval: 1d\n\n# Inhibits the /requestToken endpoints from returning an error that might leak\n# information about whether an e-mail address is in use or not on this\n# homeserver.\n# Note that for some endpoints the error situation is the e-mail already being\n# used, and for others the error is entering the e-mail being unused.\n# If this option is enabled, instead of returning an error, these endpoints will\n# act as if no error happened and return a fake session ID ('sid') to clients.\n#\n#request_token_inhibit_3pid_errors: true\n\n\n## TLS ##\n\n# PEM-encoded X509 certificate for TLS.\n# This certificate, as of Synapse 1.0, will need to be a valid and verifiable\n# certificate, signed by a recognised Certificate Authority.\n#\n# See 'ACME support' below to enable auto-provisioning this certificate via\n# Let's Encrypt.\n#\n# If supplying your own, be sure to use a `.pem` file that includes the\n# full certificate chain including any intermediate certificates (for\n# instance, if using certbot, use `fullchain.pem` as your certificate,\n# not `cert.pem`).\n#\n#tls_certificate_path: \"CONFDIR/SERVERNAME.tls.crt\"\n\n# PEM-encoded private key for TLS\n#\n#tls_private_key_path: \"CONFDIR/SERVERNAME.tls.key\"\n\n# Whether to verify TLS server certificates for outbound federation requests.\n#\n# Defaults to `true`. To disable certificate verification, uncomment the\n# following line.\n#\n#federation_verify_certificates: false\n\n# The minimum TLS version that will be used for outbound federation requests.\n#\n# Defaults to `1`. Configurable to `1`, `1.1`, `1.2`, or `1.3`. Note\n# that setting this value higher than `1.2` will prevent federation to most\n# of the public Matrix network: only configure it to `1.3` if you have an\n# entirely private federation setup and you can ensure TLS 1.3 support.\n#\n#federation_client_minimum_tls_version: 1.2\n\n# Skip federation certificate verification on the following whitelist\n# of domains.\n#\n# This setting should only be used in very specific cases, such as\n# federation over Tor hidden services and similar. For private networks\n# of homeservers, you likely want to use a private CA instead.\n#\n# Only effective if federation_verify_certicates is `true`.\n#\n#federation_certificate_verification_whitelist:\n# - lon.example.com\n# - *.domain.com\n# - *.onion\n\n# List of custom certificate authorities for federation traffic.\n#\n# This setting should only normally be used within a private network of\n# homeservers.\n#\n# Note that this list will replace those that are provided by your\n# operating environment. Certificates must be in PEM format.\n#\n#federation_custom_ca_list:\n# - myCA1.pem\n# - myCA2.pem\n# - myCA3.pem\n\n# ACME support: This will configure Synapse to request a valid TLS certificate\n# for your configured `server_name` via Let's Encrypt.\n#\n# Note that ACME v1 is now deprecated, and Synapse currently doesn't support\n# ACME v2. This means that this feature currently won't work with installs set\n# up after November 2019. For more info, and alternative solutions, see\n# https://github.com/matrix-org/synapse/blob/master/docs/ACME.md#deprecation-of-acme-v1\n#\n# Note that provisioning a certificate in this way requires port 80 to be\n# routed to Synapse so that it can complete the http-01 ACME challenge.\n# By default, if you enable ACME support, Synapse will attempt to listen on\n# port 80 for incoming http-01 challenges - however, this will likely fail\n# with 'Permission denied' or a similar error.\n#\n# There are a couple of potential solutions to this:\n#\n# * If you already have an Apache, Nginx, or similar listening on port 80,\n# you can configure Synapse to use an alternate port, and have your web\n# server forward the requests. For example, assuming you set 'port: 8009'\n# below, on Apache, you would write:\n#\n# ProxyPass /.well-known/acme-challenge http://localhost:8009/.well-known/acme-challenge\n#\n# * Alternatively, you can use something like `authbind` to give Synapse\n# permission to listen on port 80.\n#\nacme:\n # ACME support is disabled by default. Set this to `true` and uncomment\n # tls_certificate_path and tls_private_key_path above to enable it.\n #\n enabled: false\n\n # Endpoint to use to request certificates. If you only want to test,\n # use Let's Encrypt's staging url:\n # https://acme-staging.api.letsencrypt.org/directory\n #\n #url: https://acme-v01.api.letsencrypt.org/directory\n\n # Port number to listen on for the HTTP-01 challenge. Change this if\n # you are forwarding connections through Apache/Nginx/etc.\n #\n port: 80\n\n # Local addresses to listen on for incoming connections.\n # Again, you may want to change this if you are forwarding connections\n # through Apache/Nginx/etc.\n #\n bind_addresses: ['::', '0.0.0.0']\n\n # How many days remaining on a certificate before it is renewed.\n #\n reprovision_threshold: 30\n\n # The domain that the certificate should be for. Normally this\n # should be the same as your Matrix domain (i.e., 'server_name'), but,\n # by putting a file at 'https://<server_name>/.well-known/matrix/server',\n # you can delegate incoming traffic to another server. If you do that,\n # you should give the target of the delegation here.\n #\n # For example: if your 'server_name' is 'example.com', but\n # 'https://example.com/.well-known/matrix/server' delegates to\n # 'matrix.example.com', you should put 'matrix.example.com' here.\n #\n # If not set, defaults to your 'server_name'.\n #\n domain: matrix.example.com\n\n # file to use for the account key. This will be generated if it doesn't\n # exist.\n #\n # If unspecified, we will use CONFDIR/client.key.\n #\n account_key_file: DATADIR/acme_account.key\n\n# List of allowed TLS fingerprints for this server to publish along\n# with the signing keys for this server. Other matrix servers that\n# make HTTPS requests to this server will check that the TLS\n# certificates returned by this server match one of the fingerprints.\n#\n# Synapse automatically adds the fingerprint of its own certificate\n# to the list. So if federation traffic is handled directly by synapse\n# then no modification to the list is required.\n#\n# If synapse is run behind a load balancer that handles the TLS then it\n# will be necessary to add the fingerprints of the certificates used by\n# the loadbalancers to this list if they are different to the one\n# synapse is using.\n#\n# Homeservers are permitted to cache the list of TLS fingerprints\n# returned in the key responses up to the \"valid_until_ts\" returned in\n# key. It may be necessary to publish the fingerprints of a new\n# certificate and wait until the \"valid_until_ts\" of the previous key\n# responses have passed before deploying it.\n#\n# You can calculate a fingerprint from a given TLS listener via:\n# openssl s_client -connect $host:$port < /dev/null 2> /dev/null |\n# openssl x509 -outform DER | openssl sha256 -binary | base64 | tr -d '='\n# or by checking matrix.org/federationtester/api/report?server_name=$host\n#\n#tls_fingerprints: [{\"sha256\": \"<base64_encoded_sha256_fingerprint>\"}]\n\n## Database ##\n\ndatabase:\n # The database engine name\n name: \"psycopg2\"\n # Arguments to pass to the engine\n args:\n user: \"matrix\"\n password: \"matrix\"\n database: \"matrix\"\n \n host: \"${RELEASE_NAME}-postgresql\"\n port: \"5432\"\n sslmode: prefer\n cp_min: 5\n cp_max: 10\n\n# Number of events to cache in memory.\n#\n#event_cache_size: 10K\n\n\n## Logging ##\n\n# A yaml python logging config file as described by\n# https://docs.python.org/3.7/library/logging.config.html#configuration-dictionary-schema\n#\nlog_config: \"/data/${APP_INSTANCE_NAME}.${DOMAIN_CODENAME}.${BASE_URL}.log.config\"\n\n\n## Ratelimiting ##\n\n# Ratelimiting settings for client actions (registration, login, messaging).\n#\n# Each ratelimiting configuration is made of two parameters:\n# - per_second: number of requests a client can send per second.\n# - burst_count: number of requests a client can send before being throttled.\n#\n# Synapse currently uses the following configurations:\n# - one for messages that ratelimits sending based on the account the client\n# is using\n# - one for registration that ratelimits registration requests based on the\n# client's IP address.\n# - one for login that ratelimits login requests based on the client's IP\n# address.\n# - one for login that ratelimits login requests based on the account the\n# client is attempting to log into.\n# - one for login that ratelimits login requests based on the account the\n# client is attempting to log into, based on the amount of failed login\n# attempts for this account.\n# - one for ratelimiting redactions by room admins. If this is not explicitly\n# set then it uses the same ratelimiting as per rc_message. This is useful\n# to allow room admins to deal with abuse quickly.\n#\n# The defaults are as shown below.\n#\n#rc_message:\n# per_second: 0.2\n# burst_count: 10\n#\n#rc_registration:\n# per_second: 0.17\n# burst_count: 3\n#\n#rc_login:\n# address:\n# per_second: 0.17\n# burst_count: 3\n# account:\n# per_second: 0.17\n# burst_count: 3\n# failed_attempts:\n# per_second: 0.17\n# burst_count: 3\n#\n#rc_admin_redaction:\n# per_second: 1\n# burst_count: 50\n\n\n# Ratelimiting settings for incoming federation\n#\n# The rc_federation configuration is made up of the following settings:\n# - window_size: window size in milliseconds\n# - sleep_limit: number of federation requests from a single server in\n# a window before the server will delay processing the request.\n# - sleep_delay: duration in milliseconds to delay processing events\n# from remote servers by if they go over the sleep limit.\n# - reject_limit: maximum number of concurrent federation requests\n# allowed from a single server\n# - concurrent: number of federation requests to concurrently process\n# from a single server\n#\n# The defaults are as shown below.\n#\n#rc_federation:\n# window_size: 1000\n# sleep_limit: 10\n# sleep_delay: 500\n# reject_limit: 50\n# concurrent: 3\n\n# Target outgoing federation transaction frequency for sending read-receipts,\n# per-room.\n#\n# If we end up trying to send out more read-receipts, they will get buffered up\n# into fewer transactions.\n#\n#federation_rr_transactions_per_room_per_second: 50\n\n\n\n## Media Store ##\n\n# Enable the media store service in the Synapse master. Uncomment the\n# following if you are using a separate media store worker.\n#\n#enable_media_repo: false\n\n# Directory where uploaded images and attachments are stored.\n#\nmedia_store_path: \"/data/media_store\"\n\n# Media storage providers allow media to be stored in different\n# locations.\n#\n#media_storage_providers:\n# - module: file_system\n# # Whether to write new local files.\n# store_local: false\n# # Whether to write new remote media\n# store_remote: false\n# # Whether to block upload requests waiting for write to this\n# # provider to complete\n# store_synchronous: false\n# config:\n# directory: /mnt/some/other/directory\n\n# Directory where in-progress uploads are stored.\n#\nuploads_path: \"/data/uploads\"\n\n# The largest allowed upload size in bytes\n\nmax_upload_size: 10M\n\n# Maximum number of pixels that will be thumbnailed\n\nmax_image_pixels: 32M\n\n# Whether to generate new thumbnails on the fly to precisely match\n# the resolution requested by the client. If true then whenever\n# a new resolution is requested by the client the server will\n# generate a new thumbnail. If false the server will pick a thumbnail\n# from a precalculated list.\n#\n#dynamic_thumbnails: false\n\n# List of thumbnails to precalculate when an image is uploaded.\n#\n#thumbnail_sizes:\n# - width: 32\n# height: 32\n# method: crop\n# - width: 96\n# height: 96\n# method: crop\n# - width: 320\n# height: 240\n# method: scale\n# - width: 640\n# height: 480\n# method: scale\n# - width: 800\n# height: 600\n# method: scale\n\n# Is the preview URL API enabled?\n#\n# 'false' by default: uncomment the following to enable it (and specify a\n# url_preview_ip_range_blacklist blacklist).\n#\nurl_preview_enabled: false\n\n# The largest allowed URL preview spidering size in bytes\n\nmax_spider_size: 1M\n\n## Captcha ##\n# See docs/CAPTCHA_SETUP for full details of configuring this.\n\n# This homeserver's ReCAPTCHA public key.\n#\n#recaptcha_public_key: \"YOUR_PUBLIC_KEY\"\n\n# This homeserver's ReCAPTCHA private key.\n#\n#recaptcha_private_key: \"YOUR_PRIVATE_KEY\"\n\n# Enables ReCaptcha checks when registering, preventing signup\n# unless a captcha is answered. Requires a valid ReCaptcha\n# public/private key.\n#\n#enable_registration_captcha: false\n\n# A secret key used to bypass the captcha test entirely.\n#\n#captcha_bypass_secret: \"YOUR_SECRET_HERE\"\n\n# The API endpoint to use for verifying m.login.recaptcha responses.\n#\n#recaptcha_siteverify_api: \"https://www.recaptcha.net/recaptcha/api/siteverify\"\n \n## Registration ##\n#\n# Registration can be rate-limited using the parameters in the \"Ratelimiting\"\n# section of this file.\n\n# Enable registration for new users.\n#\nenable_registration: ${matrixRegistrationEnabled?c}\n\n# Optional account validity configuration. This allows for accounts to be denied\n# any request after a given period.\n#\n# ``enabled`` defines whether the account validity feature is enabled. Defaults\n# to False.\n#\n# ``period`` allows setting the period after which an account is valid\n# after its registration. When renewing the account, its validity period\n# will be extended by this amount of time. This parameter is required when using\n# the account validity feature.\n#\n# ``renew_at`` is the amount of time before an account's expiry date at which\n# Synapse will send an email to the account's email address with a renewal link.\n# This needs the ``email`` and ``public_baseurl`` configuration sections to be\n# filled.\n#\n# ``renew_email_subject`` is the subject of the email sent out with the renewal\n# link. ``%(app)s`` can be used as a placeholder for the ``app_name`` parameter\n# from the ``email`` section.\n#\n# Once this feature is enabled, Synapse will look for registered users without an\n# expiration date at startup and will add one to every account it found using the\n# current settings at that time.\n# This means that, if a validity period is set, and Synapse is restarted (it will\n# then derive an expiration date from the current validity period), and some time\n# after that the validity period changes and Synapse is restarted, the users'\n# expiration dates won't be updated unless their account is manually renewed. This\n# date will be randomly selected within a range [now + period - d ; now + period],\n# where d is equal to 10% of the validity period.\n#\n#account_validity:\n# enabled: true\n# period: 6w\n# renew_at: 1w\n# renew_email_subject: \"Renew your %(app)s account\"\n# # Directory in which Synapse will try to find the HTML files to serve to the\n# # user when trying to renew an account. Optional, defaults to\n# # synapse/res/templates.\n# template_dir: \"res/templates\"\n# # HTML to be displayed to the user after they successfully renewed their\n# # account. Optional.\n# account_renewed_html_path: \"account_renewed.html\"\n# # HTML to be displayed when the user tries to renew an account with an invalid\n# # renewal token. Optional.\n# invalid_token_html_path: \"invalid_token.html\"\n\n# Time that a user's session remains valid for, after they log in.\n#\n# Note that this is not currently compatible with guest logins.\n#\n# Note also that this is calculated at login time: changes are not applied\n# retrospectively to users who have already logged in.\n#\n# By default, this is infinite.\n#\n#session_lifetime: 24h\n\n# Explicitly disable asking for MSISDNs from the registration\n# flow (overrides registrations_require_3pid if MSISDNs are set as required)\n#\n#disable_msisdn_registration: true\n\n# Mandate that users are only allowed to associate certain formats of\n# 3PIDs with accounts on this server.\n#\n#allowed_local_3pids:\n# - medium: email\n# pattern: '.*@matrix\\.org'\n# - medium: email\n# pattern: '.*@vector\\.im'\n# - medium: msisdn\n# pattern: '\\+44'\n\n# Enable 3PIDs lookup requests to identity servers from this server.\n#\n#enable_3pid_lookup: true\n\n\n# Set the number of bcrypt rounds used to generate password hash.\n# Larger numbers increase the work factor needed to generate the hash.\n# The default number is 12 (which equates to 2^12 rounds).\n# N.B. that increasing this will exponentially increase the time required\n# to register or login - e.g. 24 => 2^24 rounds which will take >20 mins.\n#\n#bcrypt_rounds: 12\n\n# Allows users to register as guests without a password/email/etc, and\n# participate in rooms hosted on this server which have been made\n# accessible to anonymous users.\n\nallow_guest_access: ${matrixRegistrationAllowGuests?c}\n\n# The identity server which we suggest that clients should use when users log\n# in on this server.\n#\n# (By default, no suggestion is made, so it is left up to the client.\n# This setting is ignored unless public_baseurl is also set.)\n#\n#default_identity_server: https://matrix.org\n\n# The list of identity servers trusted to verify third party\n# identifiers by this server.\n#\n# Also defines the ID server which will be called when an account is\n# deactivated (one will be picked arbitrarily).\n#\n# Note: This option is deprecated. Since v0.99.4, Synapse has tracked which identity\n# server a 3PID has been bound to. For 3PIDs bound before then, Synapse runs a\n# background migration script, informing itself that the identity server all of its\n# 3PIDs have been bound to is likely one of the below.\n#\n# As of Synapse v1.4.0, all other functionality of this option has been deprecated, and\n# it is now solely used for the purposes of the background migration script, and can be\n# removed once it has run.\n#trusted_third_party_id_servers:\n# - matrix.org\n# - vector.im\n\n# Handle threepid (email/phone etc) registration and password resets through a set of\n# *trusted* identity servers. Note that this allows the configured identity server to\n# reset passwords for accounts!\n#\n# Be aware that if `email` is not set, and SMTP options have not been\n# configured in the email config block, registration and user password resets via\n# email will be globally disabled.\n#\n# Additionally, if `msisdn` is not set, registration and password resets via msisdn\n# will be disabled regardless. This is due to Synapse currently not supporting any\n# method of sending SMS messages on its own.\n#\n# To enable using an identity server for operations regarding a particular third-party\n# identifier type, set the value to the URL of that identity server as shown in the\n# examples below.\n#\n# Servers handling the these requests must answer the `/requestToken` endpoints defined\n# by the Matrix Identity Service API specification:\n# https://matrix.org/docs/spec/identity_service/latest\n#\n# If a delegate is specified, the config option public_baseurl must also be filled out.\n#\naccount_threepid_delegates:\n#email: https://example.com # Delegate email sending to example.com\n#msisdn: http://localhost:8090 # Delegate SMS sending to this local process\n\n# Whether users are allowed to change their displayname after it has\n# been initially set. Useful when provisioning users based on the\n# contents of a third-party directory.\n#\n# Does not apply to server administrators. Defaults to 'true'\n#\n#enable_set_displayname: false\n\n# Whether users are allowed to change their avatar after it has been\n# initially set. Useful when provisioning users based on the contents\n# of a third-party directory.\n#\n# Does not apply to server administrators. Defaults to 'true'\n#\n#enable_set_avatar_url: false\n\n# Whether users can change the 3PIDs associated with their accounts\n# (email address and msisdn).\n#\n# Defaults to 'true'\n#\n#enable_3pid_changes: false\n\n# Users who register on this homeserver will automatically be joined\n# to these rooms\n\nauto_join_rooms: []\n\n# Where auto_join_rooms are specified, setting this flag ensures that the\n# the rooms exist by creating them when the first user on the\n# homeserver registers.\n#\n# By default the auto-created rooms are publicly joinable from any federated\n# server. Use the autocreate_auto_join_rooms_federated and\n# autocreate_auto_join_room_preset settings below to customise this behaviour.\n#\n# Setting to false means that if the rooms are not manually created,\n# users cannot be auto-joined since they do not exist.\n#\n# Defaults to true. Uncomment the following line to disable automatically\n# creating auto-join rooms.\n#\n#autocreate_auto_join_rooms: false\n\n# Whether the auto_join_rooms that are auto-created are available via\n# federation. Only has an effect if autocreate_auto_join_rooms is true.\n#\n# Note that whether a room is federated cannot be modified after\n# creation.\n#\n# Defaults to true: the room will be joinable from other servers.\n# Uncomment the following to prevent users from other homeservers from\n# joining these rooms.\n#\n#autocreate_auto_join_rooms_federated: false\n\n# The room preset to use when auto-creating one of auto_join_rooms. Only has an\n# effect if autocreate_auto_join_rooms is true.\n#\n# This can be one of \"public_chat\", \"private_chat\", or \"trusted_private_chat\".\n# If a value of \"private_chat\" or \"trusted_private_chat\" is used then\n# auto_join_mxid_localpart must also be configured.\n#\n# Defaults to \"public_chat\", meaning that the room is joinable by anyone, including\n# federated servers if autocreate_auto_join_rooms_federated is true (the default).\n# Uncomment the following to require an invitation to join these rooms.\n#\n#autocreate_auto_join_room_preset: private_chat\n\n# The local part of the user id which is used to create auto_join_rooms if\n# autocreate_auto_join_rooms is true. If this is not provided then the\n# initial user account that registers will be used to create the rooms.\n#\n# The user id is also used to invite new users to any auto-join rooms which\n# are set to invite-only.\n#\n# It *must* be configured if autocreate_auto_join_room_preset is set to\n# \"private_chat\" or \"trusted_private_chat\".\n#\n# Note that this must be specified in order for new users to be correctly\n# invited to any auto-join rooms which have been set to invite-only (either\n# at the time of creation or subsequently).\n#\n# Note that, if the room already exists, this user must be joined and\n# have the appropriate permissions to invite new members.\n#\n#auto_join_mxid_localpart: system\n\n# When auto_join_rooms is specified, setting this flag to false prevents\n# guest accounts from being automatically joined to the rooms.\n#\n# Defaults to true.\n#\n#auto_join_rooms_for_guests: false\n\n\n## Metrics ###\n\n# Enable collection and rendering of performance metrics\n#\n\nenable_metrics: ${synapseMetricsEnabled?c}\n\n# Enable sentry integration\n# NOTE: While attempts are made to ensure that the logs don't contain\n# any sensitive information, this cannot be guaranteed. By enabling\n# this option the sentry server may therefore receive sensitive\n# information, and it in turn may then diseminate sensitive information\n# through insecure notification channels if so configured.\n#\n#sentry:\n# dsn: \"...\"\n\n# Flags to enable Prometheus metrics which are not suitable to be\n# enabled by default, either for performance reasons or limited use.\n#\nmetrics_flags:\n # Publish synapse_federation_known_servers, a gauge of the number of\n # servers this homeserver knows about, including itself. May cause\n # performance problems on large homeservers.\n #\n #known_servers: true\n\n# Whether or not to report anonymized homeserver usage statistics.\nreport_stats: false\n\n# The endpoint to report the anonymized homeserver usage statistics to.\n# Defaults to https://matrix.org/report-usage-stats/push\n#\n#report_stats_endpoint: https://example.com/report-usage-stats/push\n\n\n## API Configuration ##\n\n# A list of event types that will be included in the room_invite_state\n#\n#room_invite_state_types:\n# - \"m.room.join_rules\"\n# - \"m.room.canonical_alias\"\n# - \"m.room.avatar\"\n# - \"m.room.encryption\"\n# - \"m.room.name\"\n\n\n# A list of application service config files to use\n#\napp_service_config_files: []\n\n# Uncomment to enable tracking of application service IP addresses. Implicitly\n# enables MAU tracking for application service users.\n#\n#track_appservice_user_ips: true \n\n# a secret which is used to calculate HMACs for form values, to stop\n# falsification of values. Must be specified for the User Consent\n# forms to work.\n#\n# form_secret: <PRIVATE STRING>\n\n## Signing Keys ##\n\n# Path to the signing key to sign messages with\n#\nsigning_key_path: \"/data/keys/${APP_INSTANCE_NAME}.${DOMAIN_CODENAME}.${BASE_URL}.signing.key\"\n\n# The keys that the server used to sign messages with but won't use\n# to sign new messages. E.g. it has lost its private key\n#\n#old_signing_keys:\n# \"ed25519:auto\":\n# # Base64 encoded public key\n# key: \"The public part of your old signing key.\"\n# # Millisecond POSIX timestamp when the key expired.\n# expired_ts: 123456789123\n\n# How long key response published by this server is valid for.\n# Used to set the valid_until_ts in /key/v2 APIs.\n# Determines how quickly servers will query to check which keys\n# are still valid.\n#\n#key_refresh_interval: 1d\n\n# The trusted servers to download signing keys from.\n#\n# When we need to fetch a signing key, each server is tried in parallel.\n#\n# Normally, the connection to the key server is validated via TLS certificates.\n# Additional security can be provided by configuring a `verify key`, which\n# will make synapse check that the response is signed by that key.\n#\n# This setting supercedes an older setting named `perspectives`. The old format\n# is still supported for backwards-compatibility, but it is deprecated.\n#\n# 'trusted_key_servers' defaults to matrix.org, but using it will generate a\n# warning on start-up. To suppress this warning, set\n# 'suppress_key_server_warning' to true.\n#\n# Options for each entry in the list include:\n#\n# server_name: the name of the server. required.\n#\n# verify_keys: an optional map from key id to base64-encoded public key.\n# If specified, we will check that the response is signed by at least\n# one of the given keys.\n#\n# accept_keys_insecurely: a boolean. Normally, if `verify_keys` is unset,\n# and federation_verify_certificates is not `true`, synapse will refuse\n# to start, because this would allow anyone who can spoof DNS responses\n# to masquerade as the trusted key server. If you know what you are doing\n# and are sure that your network environment provides a secure connection\n# to the key server, you can set this to `true` to override this\n# behaviour.\n#\n# An example configuration might look like:\n#\n#trusted_key_servers:\n# - server_name: \"my_trusted_server.example.com\"\n# verify_keys:\n# \"ed25519:auto\": \"abcdefghijklmnopqrstuvwxyzabcdefghijklmopqr\"\n# - server_name: \"my_other_trusted_server.example.com\"\n#\n\n# Uncomment the following to disable the warning that is emitted when the\n# trusted_key_servers include 'matrix.org'.\n#\nsuppress_key_server_warning: true\n\n\n# The signing keys to use when acting as a trusted key server. If not specified\n# defaults to the server signing key.\n#\n# Can contain multiple keys, one per line.\n#\n#key_server_signing_keys_path: \"key_server_signing_keys.key\"\n\n\n# Enable SAML2 for registration and login. Uses pysaml2.\n#\n# At least one of `sp_config` or `config_path` must be set in this section to\n# enable SAML login.\n#\n# (You will probably also want to set the following options to `false` to\n# disable the regular login/registration flows:\n# * enable_registration\n# * password_config.enabled\n#\n# Once SAML support is enabled, a metadata file will be exposed at\n# https://<server>:<port>/_matrix/saml2/metadata.xml, which you may be able to\n# use to configure your SAML IdP with. Alternatively, you can manually configure\n# the IdP to use an ACS location of\n# https://<server>:<port>/_matrix/saml2/authn_response.\n#\nsaml2_config:\n # `sp_config` is the configuration for the pysaml2 Service Provider.\n # See pysaml2 docs for format of config.\n #\n # Default values will be used for the 'entityid' and 'service' settings,\n # so it is not normally necessary to specify them unless you need to\n # override them.\n #\n #sp_config:\n # # point this to the IdP's metadata. You can use either a local file or\n # # (preferably) a URL.\n # metadata:\n # #local: [\"saml2/idp.xml\"]\n # remote:\n # - url: https://our_idp/metadata.xml\n #\n # # By default, the user has to go to our login page first. If you'd like\n # # to allow IdP-initiated login, set 'allow_unsolicited: true' in a\n # # 'service.sp' section:\n # #\n # #service:\n # # sp:\n # # allow_unsolicited: true\n #\n # # The examples below are just used to generate our metadata xml, and you\n # # may well not need them, depending on your setup. Alternatively you\n # # may need a whole lot more detail - see the pysaml2 docs!\n #\n # description: [\"My awesome SP\", \"en\"]\n # name: [\"Test SP\", \"en\"]\n #\n # organization:\n # name: Example com\n # display_name:\n # - [\"Example co\", \"en\"]\n # url: \"http://example.com\"\n #\n # contact_person:\n # - given_name: Bob\n # sur_name: \"the Sysadmin\"\n # email_address\": [\"admin@example.com\"]\n # contact_type\": technical\n\n # Instead of putting the config inline as above, you can specify a\n # separate pysaml2 configuration file:\n #\n #config_path: \"CONFDIR/sp_conf.py\"\n\n # The lifetime of a SAML session. This defines how long a user has to\n # complete the authentication process, if allow_unsolicited is unset.\n # The default is 15 minutes.\n #\n #saml_session_lifetime: 5m\n\n # An external module can be provided here as a custom solution to\n # mapping attributes returned from a saml provider onto a matrix user.\n #\n user_mapping_provider:\n # The custom module's class. Uncomment to use a custom module.\n #\n #module: mapping_provider.SamlMappingProvider\n\n # Custom configuration values for the module. Below options are\n # intended for the built-in provider, they should be changed if\n # using a custom module. This section will be passed as a Python\n # dictionary to the module's `parse_config` method.\n #\n config:\n # The SAML attribute (after mapping via the attribute maps) to use\n # to derive the Matrix ID from. 'uid' by default.\n #\n # Note: This used to be configured by the\n # saml2_config.mxid_source_attribute option. If that is still\n # defined, its value will be used instead.\n #\n #mxid_source_attribute: displayName\n\n # The mapping system to use for mapping the saml attribute onto a\n # matrix ID.\n #\n # Options include:\n # * 'hexencode' (which maps unpermitted characters to '=xx')\n # * 'dotreplace' (which replaces unpermitted characters with\n # '.').\n # The default is 'hexencode'.\n #\n # Note: This used to be configured by the\n # saml2_config.mxid_mapping option. If that is still defined, its\n # value will be used instead.\n #\n #mxid_mapping: dotreplace\n\n # In previous versions of synapse, the mapping from SAML attribute to\n # MXID was always calculated dynamically rather than stored in a\n # table. For backwards- compatibility, we will look for user_ids\n # matching such a pattern before creating a new account.\n #\n # This setting controls the SAML attribute which will be used for this\n # backwards-compatibility lookup. Typically it should be 'uid', but if\n # the attribute maps are changed, it may be necessary to change it.\n #\n # The default is 'uid'.\n #\n #grandfathered_mxid_source_attribute: upn\n\n # Directory in which Synapse will try to find the template files below.\n # If not set, default templates from within the Synapse package will be used.\n #\n # DO NOT UNCOMMENT THIS SETTING unless you want to customise the templates.\n # If you *do* uncomment it, you will need to make sure that all the templates\n # below are in the directory.\n #\n # Synapse will look for the following templates in this directory:\n #\n # * HTML page to display to users if something goes wrong during the\n # authentication process: 'saml_error.html'.\n #\n # When rendering, this template is given the following variables:\n # * code: an HTML error code corresponding to the error that is being\n # returned (typically 400 or 500)\n #\n # * msg: a textual message describing the error.\n #\n # The variables will automatically be HTML-escaped.\n #\n # You can see the default templates at:\n # https://github.com/matrix-org/synapse/tree/master/synapse/res/templates\n #\n #template_dir: \"res/templates\"\n\n\n# OpenID Connect integration. The following settings can be used to make Synapse\n# use an OpenID Connect Provider for authentication, instead of its internal\n# password database.\n#\n# See https://github.com/matrix-org/synapse/blob/master/docs/openid.md.\n#\noidc_config:\n # Uncomment the following to enable authorization against an OpenID Connect\n # server. Defaults to false.\n #\n #enabled: true\n\n # Uncomment the following to disable use of the OIDC discovery mechanism to\n # discover endpoints. Defaults to true.\n #\n #discover: false\n\n # the OIDC issuer. Used to validate tokens and (if discovery is enabled) to\n # discover the provider's endpoints.\n #\n # Required if 'enabled' is true.\n #\n #issuer: \"https://accounts.example.com/\"\n\n # oauth2 client id to use.\n #\n # Required if 'enabled' is true.\n #\n #client_id: \"provided-by-your-issuer\"\n\n # oauth2 client secret to use.\n #\n # Required if 'enabled' is true.\n #\n #client_secret: \"provided-by-your-issuer\"\n\n # auth method to use when exchanging the token.\n # Valid values are 'client_secret_basic' (default), 'client_secret_post' and\n # 'none'.\n #\n #client_auth_method: client_secret_post\n\n # list of scopes to request. This should normally include the \"openid\" scope.\n # Defaults to [\"openid\"].\n #\n #scopes: [\"openid\", \"profile\"]\n\n # the oauth2 authorization endpoint. Required if provider discovery is disabled.\n #\n #authorization_endpoint: \"https://accounts.example.com/oauth2/auth\"\n\n # the oauth2 token endpoint. Required if provider discovery is disabled.\n #\n #token_endpoint: \"https://accounts.example.com/oauth2/token\"\n\n # the OIDC userinfo endpoint. Required if discovery is disabled and the\n # \"openid\" scope is not requested.\n #\n #userinfo_endpoint: \"https://accounts.example.com/userinfo\"\n\n # URI where to fetch the JWKS. Required if discovery is disabled and the\n # \"openid\" scope is used.\n #\n #jwks_uri: \"https://accounts.example.com/.well-known/jwks.json\"\n\n # Uncomment to skip metadata verification. Defaults to false.\n #\n # Use this if you are connecting to a provider that is not OpenID Connect\n # compliant.\n # Avoid this in production.\n #\n #skip_verification: true\n\n # An external module can be provided here as a custom solution to mapping\n # attributes returned from a OIDC provider onto a matrix user.\n #\n user_mapping_provider:\n # The custom module's class. Uncomment to use a custom module.\n # Default is 'synapse.handlers.oidc_handler.JinjaOidcMappingProvider'.\n #\n # See https://github.com/matrix-org/synapse/blob/master/docs/sso_mapping_providers.md#openid-mapping-providers\n # for information on implementing a custom mapping provider.\n #\n #module: mapping_provider.OidcMappingProvider\n\n # Custom configuration values for the module. This section will be passed as\n # a Python dictionary to the user mapping provider module's `parse_config`\n # method.\n #\n # The examples below are intended for the default provider: they should be\n # changed if using a custom provider.\n #\n config:\n # name of the claim containing a unique identifier for the user.\n # Defaults to `sub`, which OpenID Connect compliant providers should provide.\n #\n #subject_claim: \"sub\"\n # Jinja2 template for the localpart of the MXID.\n #\n # When rendering, this template is given the following variables:\n # * user: The claims returned by the UserInfo Endpoint and/or in the ID\n # Token\n #\n # This must be configured if using the default mapping provider.\n #\n # Jinja2 template for the display name to set on first login.\n #\n # If unset, no displayname will be set.\n #\n\n# Enable CAS for registration and login.\n#\n#cas_config:\n# enabled: true\n# server_url: \"https://cas-server.com\"\n# service_url: \"https://homeserver.domain.com:8448\"\n# #displayname_attribute: name\n# #required_attributes:\n# # name: value\n\n\n# Additional settings to use with single-sign on systems such as OpenID Connect,\n# SAML2 and CAS.\n#\nsso:\n # A list of client URLs which are whitelisted so that the user does not\n # have to confirm giving access to their account to the URL. Any client\n # whose URL starts with an entry in the following list will not be subject\n # to an additional confirmation step after the SSO login is completed.\n #\n # WARNING: An entry such as \"https://my.client\" is insecure, because it\n # will also match \"https://my.client.evil.site\", exposing your users to\n # phishing attacks from evil.site. To avoid this, include a slash after the\n # hostname: \"https://my.client/\".\n #\n # If public_baseurl is set, then the login fallback page (used by clients\n # that don't natively support the required login flows) is whitelisted in\n # addition to any URLs in this list.\n #\n # By default, this list is empty.\n #\n #client_whitelist:\n # - https://riot.im/develop\n # - https://my.custom.client/\n\n # Directory in which Synapse will try to find the template files below.\n # If not set, default templates from within the Synapse package will be used.\n #\n # DO NOT UNCOMMENT THIS SETTING unless you want to customise the templates.\n # If you *do* uncomment it, you will need to make sure that all the templates\n # below are in the directory.\n #\n # Synapse will look for the following templates in this directory:\n #\n # * HTML page for a confirmation step before redirecting back to the client\n # with the login token: 'sso_redirect_confirm.html'.\n #\n # When rendering, this template is given three variables:\n # * redirect_url: the URL the user is about to be redirected to. Needs\n # manual escaping (see\n # https://jinja.palletsprojects.com/en/2.11.x/templates/#html-escaping).\n #\n # * display_url: the same as `redirect_url`, but with the query\n # parameters stripped. The intention is to have a\n # human-readable URL to show to users, not to use it as\n # the final address to redirect to. Needs manual escaping\n # (see https://jinja.palletsprojects.com/en/2.11.x/templates/#html-escaping).\n #\n # * server_name: the homeserver's name.\n #\n # * HTML page which notifies the user that they are authenticating to confirm\n # an operation on their account during the user interactive authentication\n # process: 'sso_auth_confirm.html'.\n #\n # When rendering, this template is given the following variables:\n # * redirect_url: the URL the user is about to be redirected to. Needs\n # manual escaping (see\n # https://jinja.palletsprojects.com/en/2.11.x/templates/#html-escaping).\n #\n # * description: the operation which the user is being asked to confirm\n #\n # * HTML page shown after a successful user interactive authentication session:\n # 'sso_auth_success.html'.\n #\n # Note that this page must include the JavaScript which notifies of a successful authentication\n # (see https://matrix.org/docs/spec/client_server/r0.6.0#fallback).\n #\n # This template has no additional variables.\n #\n # * HTML page shown during single sign-on if a deactivated user (according to Synapse's database)\n # attempts to login: 'sso_account_deactivated.html'.\n #\n # This template has no additional variables.\n #\n # * HTML page to display to users if something goes wrong during the\n # OpenID Connect authentication process: 'sso_error.html'.\n #\n # When rendering, this template is given two variables:\n # * error: the technical name of the error\n # * error_description: a human-readable message for the error\n #\n # You can see the default templates at:\n # https://github.com/matrix-org/synapse/tree/master/synapse/res/templates\n #\n #template_dir: \"res/templates\"\n\n\n# JSON web token integration. The following settings can be used to make\n# Synapse JSON web tokens for authentication, instead of its internal\n# password database.\n#\n# Each JSON Web Token needs to contain a \"sub\" (subject) claim, which is\n# used as the localpart of the mxid.\n#\n# Additionally, the expiration time (\"exp\"), not before time (\"nbf\"),\n# and issued at (\"iat\") claims are validated if present.\n#\n# Note that this is a non-standard login type and client support is\n# expected to be non-existant.\n#\n# See https://github.com/matrix-org/synapse/blob/master/docs/jwt.md.\n#\n#jwt_config:\n # Uncomment the following to enable authorization using JSON web\n # tokens. Defaults to false.\n #\n #enabled: true\n\n # This is either the private shared secret or the public key used to\n # decode the contents of the JSON web token.\n #\n # Required if 'enabled' is true.\n #\n #secret: \"provided-by-your-issuer\"\n\n # The algorithm used to sign the JSON web token.\n #\n # Supported algorithms are listed at\n # https://pyjwt.readthedocs.io/en/latest/algorithms.html\n #\n # Required if 'enabled' is true.\n #\n #algorithm: \"provided-by-your-issuer\"\n\n # The issuer to validate the \"iss\" claim against.\n #\n # Optional, if provided the \"iss\" claim will be required and\n # validated for all JSON web tokens.\n #\n #issuer: \"provided-by-your-issuer\"\n\n # A list of audiences to validate the \"aud\" claim against.\n #\n # Optional, if provided the \"aud\" claim will be required and\n # validated for all JSON web tokens.\n #\n # Note that if the \"aud\" claim is included in a JSON web token then\n # validation will fail without configuring audiences.\n #\n #audiences:\n # - \"provided-by-your-issuer\"\n\n\npassword_config:\n # Uncomment to disable password login\n #\n #enabled: false\n\n # Uncomment to disable authentication against the local password\n # database. This is ignored if `enabled` is false, and is only useful\n # if you have other password_providers.\n #\n #localdb_enabled: false\n\n # Uncomment and change to a secret random string for extra security.\n # DO NOT CHANGE THIS AFTER INITIAL SETUP!\n #\n #pepper: \"EVEN_MORE_SECRET\"\n\n # Define and enforce a password policy. Each parameter is optional.\n # This is an implementation of MSC2000.\n #\n policy:\n # Whether to enforce the password policy.\n # Defaults to 'false'.\n #\n #enabled: true\n\n # Minimum accepted length for a password.\n # Defaults to 0.\n #\n #minimum_length: 15\n\n # Whether a password must contain at least one digit.\n # Defaults to 'false'.\n #\n #require_digit: true\n\n # Whether a password must contain at least one symbol.\n # A symbol is any character that's not a number or a letter.\n # Defaults to 'false'.\n #\n #require_symbol: true\n\n # Whether a password must contain at least one lowercase letter.\n # Defaults to 'false'.\n #\n #require_lowercase: true\n\n # Whether a password must contain at least one lowercase letter.\n # Defaults to 'false'.\n #\n #require_uppercase: true\n\n\n# Configuration for sending emails from Synapse.\n#\nemail:\n enable_notifs: ${mailEnabled?c}\n notif_from: ${mailFrom}\n smtp_host: ${SMTP_HOSTNAME}\n smtp_port: ${SMTP_PORT}\n\n\n # notif_from defines the \"From\" address to use when sending emails.\n # It must be set if email sending is enabled.\n #\n # The placeholder '%(app)s' will be replaced by the application name,\n # which is normally 'app_name' (below), but may be overridden by the\n # Matrix client application.\n #\n # Note that the placeholder must be written '%(app)s', including the\n # trailing 's'.\n #\n # Uncomment the following to enable sending emails for messages that the user\n # has missed. Disabled by default.\n #\n #enable_notifs: true\n\n # Uncomment the following to disable automatic subscription to email\n # notifications for new users. Enabled by default.\n #\n #notif_for_new_users: false\n\n # Custom URL for client links within the email notifications. By default\n # links will be based on \"https://matrix.to\".\n #\n # (This setting used to be called riot_base_url; the old name is still\n # supported for backwards-compatibility but is now deprecated.)\n client_base_url: element-${APP_INSTANCE_NAME}.${DOMAIN_CODENAME}.${BASE_URL}\n\n # Configure the time that a validation email will expire after sending.\n # Defaults to 1h.\n #\n #validation_token_lifetime: 15m\n\n # DO NOT UNCOMMENT THIS SETTING unless you want to customise the templates.\n # If you *do* uncomment it, you will need to make sure that all the templates\n # below are in the directory.\n #\n # Synapse will look for the following templates in this directory:\n #\n # * The contents of email notifications of missed events: 'notif_mail.html' and\n # 'notif_mail.txt'.\n #\n # * The contents of account expiry notice emails: 'notice_expiry.html' and\n # 'notice_expiry.txt'.\n #\n # * The contents of password reset emails sent by the homeserver:\n # 'password_reset.html' and 'password_reset.txt'\n #\n # * HTML pages for success and failure that a user will see when they follow\n # the link in the password reset email: 'password_reset_success.html' and\n # 'password_reset_failure.html'\n #\n # * The contents of address verification emails sent during registration:\n # 'registration.html' and 'registration.txt'\n #\n # * HTML pages for success and failure that a user will see when they follow\n # the link in an address verification email sent during registration:\n # 'registration_success.html' and 'registration_failure.html'\n #\n # * The contents of address verification emails sent when an address is added\n # to a Matrix account: 'add_threepid.html' and 'add_threepid.txt'\n #\n # * HTML pages for success and failure that a user will see when they follow\n # the link in an address verification email sent when an address is added\n # to a Matrix account: 'add_threepid_success.html' and\n # 'add_threepid_failure.html'\n #\n # You can see the default templates at:\n # https://github.com/matrix-org/synapse/tree/master/synapse/res/templates\n #\n #template_dir: \"res/templates\"\n\n # Subjects to use when sending emails from Synapse.\n #\n # The placeholder '%(app)s' will be replaced with the value of the 'app_name'\n # setting above, or by a value dictated by the Matrix client application.\n #\n # If a subject isn't overridden in this configuration file, the value used as\n # its example will be used.\n #\n #subjects:\n\n # Subjects for notification emails.\n #\n # On top of the '%(app)s' placeholder, these can use the following\n # placeholders:\n #\n # * '%(person)s', which will be replaced by the display name of the user(s)\n # that sent the message(s), e.g. \"Alice and Bob\".\n # * '%(room)s', which will be replaced by the name of the room the\n # message(s) have been sent to, e.g. \"My super room\".\n #\n # See the example provided for each setting to see which placeholder can be\n # used and how to use them.\n #\n # Subject to use to notify about one message from one or more user(s) in a\n # room which has a name.\n #message_from_person_in_room: \"[%(app)s] You have a message on %(app)s from %(person)s in the %(room)s room...\"\n #\n # Subject to use to notify about one message from one or more user(s) in a\n # room which doesn't have a name.\n #message_from_person: \"[%(app)s] You have a message on %(app)s from %(person)s...\"\n #\n # Subject to use to notify about multiple messages from one or more users in\n # a room which doesn't have a name.\n #messages_from_person: \"[%(app)s] You have messages on %(app)s from %(person)s...\"\n #\n # Subject to use to notify about multiple messages in a room which has a\n # name.\n #messages_in_room: \"[%(app)s] You have messages on %(app)s in the %(room)s room...\"\n #\n # Subject to use to notify about multiple messages in multiple rooms.\n #messages_in_room_and_others: \"[%(app)s] You have messages on %(app)s in the %(room)s room and others...\"\n #\n # Subject to use to notify about multiple messages from multiple persons in\n # multiple rooms. This is similar to the setting above except it's used when\n # the room in which the notification was triggered has no name.\n #messages_from_person_and_others: \"[%(app)s] You have messages on %(app)s from %(person)s and others...\"\n #\n # Subject to use to notify about an invite to a room which has a name.\n #invite_from_person_to_room: \"[%(app)s] %(person)s has invited you to join the %(room)s room on %(app)s...\"\n #\n # Subject to use to notify about an invite to a room which doesn't have a\n # name.\n #invite_from_person: \"[%(app)s] %(person)s has invited you to chat on %(app)s...\"\n\n # Subject for emails related to account administration.\n #\n # On top of the '%(app)s' placeholder, these one can use the\n # '%(server_name)s' placeholder, which will be replaced by the value of the\n # 'server_name' setting in your Synapse configuration.\n #\n # Subject to use when sending a password reset email.\n #password_reset: \"[%(server_name)s] Password reset\"\n #\n # Subject to use when sending a verification email to assert an address's\n # ownership.\n #email_validation: \"[%(server_name)s] Validate your email\"\n\n\n# Password providers allow homeserver administrators to integrate\n# their Synapse installation with existing authentication methods\n# ex. LDAP, external tokens, etc.\n#\n# For more information and known implementations, please see\n# https://github.com/matrix-org/synapse/blob/master/docs/password_auth_providers.md\n#\n# Note: instances wishing to use SAML or CAS authentication should\n# instead use the `saml2_config` or `cas_config` options,\n# respectively.\n#\npassword_providers:\n# # Example config for an LDAP auth provider\n# - module: \"ldap_auth_provider.LdapAuthProvider\"\n# config:\n# enabled: true\n# uri: \"ldap://ldap.example.com:389\"\n# start_tls: true\n# base: \"ou=users,dc=example,dc=com\"\n# attributes:\n# uid: \"cn\"\n# mail: \"email\"\n# name: \"givenName\"\n# #bind_dn:\n# #bind_password:\n# #filter: \"(objectClass=posixAccount)\"\n\n\n\n# Clients requesting push notifications can either have the body of\n# the message sent in the notification poke along with other details\n# like the sender, or just the event ID and room ID (`event_id_only`).\n# If clients choose the former, this option controls whether the\n# notification request includes the content of the event (other details\n# like the sender are still included). For `event_id_only` push, it\n# has no effect.\n#\n# For modern android devices the notification content will still appear\n# because it is loaded by the app. iPhone, however will send a\n# notification saying only that a message arrived and who it came from.\n#\n#push:\n# include_content: true\n\n\n# Spam checkers are third-party modules that can block specific actions\n# of local users, such as creating rooms and registering undesirable\n# usernames, as well as remote users by redacting incoming events.\n#\nspam_checker:\n #- module: \"my_custom_project.SuperSpamChecker\"\n # config:\n # example_option: 'things'\n #- module: \"some_other_project.BadEventStopper\"\n # config:\n # example_stop_events_from: ['@bad:example.com']\n\n\n## Rooms ##\n\n# Controls whether locally-created rooms should be end-to-end encrypted by\n# default.\n#\n# Possible options are \"all\", \"invite\", and \"off\". They are defined as:\n#\n# * \"all\": any locally-created room\n# * \"invite\": any room created with the \"private_chat\" or \"trusted_private_chat\"\n# room creation presets\n# * \"off\": this option will take no effect\n#\n# The default value is \"off\".\n#\n# Note that this option will only affect rooms created after it is set. It\n# will also not affect rooms created by other servers.\n#\nencryption_enabled_by_default_for_room_type: invite\n\n\n# Uncomment to allow non-server-admin users to create groups on this server\n#\n#enable_group_creation: true\n\n# If enabled, non server admins can only create groups with local parts\n# starting with this prefix\n#\n#group_creation_prefix: \"unofficial/\"\n\n\n\n# User Directory configuration\n#\n# 'enabled' defines whether users can search the user directory. If\n# false then empty responses are returned to all queries. Defaults to\n# true.\n#\n# 'search_all_users' defines whether to search all users visible to your HS\n# when searching the user directory, rather than limiting to users visible\n# in public rooms. Defaults to false. If you set it True, you'll have to\n# rebuild the user_directory search indexes, see\n# https://github.com/matrix-org/synapse/blob/master/docs/user_directory.md\n#\n#user_directory:\n# enabled: true\n# search_all_users: false\n\n\n# User Consent configuration\n#\n# for detailed instructions, see\n# https://github.com/matrix-org/synapse/blob/master/docs/consent_tracking.md\n#\n# Parts of this section are required if enabling the 'consent' resource under\n# 'listeners', in particular 'template_dir' and 'version'.\n#\n# 'template_dir' gives the location of the templates for the HTML forms.\n# This directory should contain one subdirectory per language (eg, 'en', 'fr'),\n# and each language directory should contain the policy document (named as\n# '<version>.html') and a success page (success.html).\n#\n# 'version' specifies the 'current' version of the policy document. It defines\n# the version to be served by the consent resource if there is no 'v'\n# parameter.\n#\n# 'server_notice_content', if enabled, will send a user a \"Server Notice\"\n# asking them to consent to the privacy policy. The 'server_notices' section\n# must also be configured for this to work. Notices will *not* be sent to\n# guest users unless 'send_server_notice_to_guests' is set to true.\n#\n# 'block_events_error', if set, will block any attempts to send events\n# until the user consents to the privacy policy. The value of the setting is\n# used as the text of the error.\n#\n# 'require_at_registration', if enabled, will add a step to the registration\n# process, similar to how captcha works. Users will be required to accept the\n# policy before their account is created.\n#\n# 'policy_name' is the display name of the policy users will see when registering\n# for an account. Has no effect unless `require_at_registration` is enabled.\n# Defaults to \"Privacy Policy\".\n#\n#user_consent:\n# template_dir: res/templates/privacy\n# version: 1.0\n# server_notice_content:\n# msgtype: m.text\n# body: >-\n# To continue using this homeserver you must review and agree to the\n# terms and conditions at %(consent_uri)s\n# send_server_notice_to_guests: true\n# block_events_error: >-\n# To continue using this homeserver you must review and agree to the\n# terms and conditions at %(consent_uri)s\n# require_at_registration: false\n# policy_name: Privacy Policy\n#\n\n\n\n# Local statistics collection. Used in populating the room directory.\n#\n# 'bucket_size' controls how large each statistics timeslice is. It can\n# be defined in a human readable short form -- e.g. \"1d\", \"1y\".\n#\n# 'retention' controls how long historical statistics will be kept for.\n# It can be defined in a human readable short form -- e.g. \"1d\", \"1y\".\n#\n#\n#stats:\n# enabled: true\n# bucket_size: 1d\n# retention: 1y\n\n\n# Server Notices room configuration\n#\n# Uncomment this section to enable a room which can be used to send notices\n# from the server to users. It is a special room which cannot be left; notices\n# come from a special \"notices\" user id.\n#\n# If you uncomment this section, you *must* define the system_mxid_localpart\n# setting, which defines the id of the user which will be used to send the\n# notices.\n#\n# It's also possible to override the room name, the display name of the\n# \"notices\" user, and the avatar for the user.\n#\n#server_notices:\n# system_mxid_localpart: notices\n# system_mxid_display_name: \"Server Notices\"\n# system_mxid_avatar_url: \"mxc://server.com/oumMVlgDnLYFaPVkExemNVVZ\"\n# room_name: \"Server Notices\"\n\n\n\n# Uncomment to disable searching the public room list. When disabled\n# blocks searching local and remote room lists for local and remote\n# users by always returning an empty list for all queries.\n#\n#enable_room_list_search: false\n\n# The `alias_creation` option controls who's allowed to create aliases\n# on this server.\n#\n# The format of this option is a list of rules that contain globs that\n# match against user_id, room_id and the new alias (fully qualified with\n# server name). The action in the first rule that matches is taken,\n# which can currently either be \"allow\" or \"deny\".\n#\n# Missing user_id/room_id/alias fields default to \"*\".\n#\n# If no rules match the request is denied. An empty list means no one\n# can create aliases.\n#\n# Options for the rules include:\n#\n# user_id: Matches against the creator of the alias\n# alias: Matches against the alias being created\n# room_id: Matches against the room ID the alias is being pointed at\n# action: Whether to \"allow\" or \"deny\" the request if the rule matches\n#\n# The default is:\n#\n#alias_creation_rules:\n# - user_id: \"*\"\n# alias: \"*\"\n# room_id: \"*\"\n# action: allow\n\n# The `room_list_publication_rules` option controls who can publish and\n# which rooms can be published in the public room list.\n#\n# The format of this option is the same as that for\n# `alias_creation_rules`.\n#\n# If the room has one or more aliases associated with it, only one of\n# the aliases needs to match the alias rule. If there are no aliases\n# then only rules with `alias: *` match.\n#\n# If no rules match the request is denied. An empty list means no one\n# can publish rooms.\n#\n# Options for the rules include:\n#\n# user_id: Matches agaisnt the creator of the alias\n# room_id: Matches against the room ID being published\n# alias: Matches against any current local or canonical aliases\n# associated with the room\n# action: Whether to \"allow\" or \"deny\" the request if the rule matches\n#\n# The default is:\n#\n#room_list_publication_rules:\n# - user_id: \"*\"\n# alias: \"*\"\n# room_id: \"*\"\n# action: allow\n\n\n# Server admins can define a Python module that implements extra rules for\n# allowing or denying incoming events. In order to work, this module needs to\n# override the methods defined in synapse/events/third_party_rules.py.\n#\n# This feature is designed to be used in closed federations only, where each\n# participating server enforces the same rules.\n#\n#third_party_event_rules:\n# module: \"my_custom_project.SuperRulesSet\"\n# config:\n# example_option: 'things'\n\n\n## Opentracing ##\n\n# These settings enable opentracing, which implements distributed tracing.\n# This allows you to observe the causal chains of events across servers\n# including requests, key lookups etc., across any server running\n# synapse or any other other services which supports opentracing\n# (specifically those implemented with Jaeger).\n#\nopentracing:\n # tracing is disabled by default. Uncomment the following line to enable it.\n #\n #enabled: true\n\n # The list of homeservers we wish to send and receive span contexts and span baggage.\n # See docs/opentracing.rst\n # This is a list of regexes which are matched against the server_name of the\n # homeserver.\n #\n # By defult, it is empty, so no servers are matched.\n #\n #homeserver_whitelist:\n # - \".*\"\n\n # Jaeger can be configured to sample traces at different rates.\n # All configuration options provided by Jaeger can be set here.\n # Jaeger's configuration mostly related to trace sampling which\n # is documented here:\n # https://www.jaegertracing.io/docs/1.13/sampling/.\n #\n #jaeger_config:\n # sampler:\n # type: const\n # param: 1\n\n # Logging whether spans were started and reported\n #\n # logging:\n # false\n" - } - ] - } - } -} diff --git a/src/test/shell/data/apps/app23-routinator.json b/src/test/shell/data/apps/app23-routinator.json deleted file mode 100644 index fedd4a8b528828f8a68a7e9cee78ab2d605d38e2..0000000000000000000000000000000000000000 --- a/src/test/shell/data/apps/app23-routinator.json +++ /dev/null @@ -1,178 +0,0 @@ -{ - "applicationBase": { - "id": null, - "name": "Routinator", - "license": "BSD-3-Clause License", - "licenseUrl": "https://github.com/NLnetLabs/routinator/blob/main/LICENSE", - "wwwUrl": "https://www.nlnetlabs.nl/projects/rpki/routinator/", - "sourceUrl": "https://github.com/NLnetLabs/routinator", - "issuesUrl": "https://github.com/NLnetLabs/routinator/issues", - "nmaasDocumentationUrl": "https://wiki.geant.org/display/NMAAS/NMaaS+Tools#NMaaSTools-Routinator", - "descriptions": [ - { - "language": "en", - "briefDescription": "RPKI Validator", - "fullDescription": "Routinator is a full-featured software package that can perform RPKI validation as a one-time operation and produce the result in formats such as CSV, JSON and RPSL, or run as a service that periodically downloads and verifies RPKI data. Routinator offers an RTR server allowing routers supporting Origin Validation (port 3323) to connect to it to fetch verified RPKI data. The built-in HTTP server offers a user interface and endpoints for the various file formats, as well as logging, status and Prometheus monitoring. <br/> <em>Please note that the initial start-up of this application may take upwards of 30 minutes, due to the large amount of verification data that needs to be downloaded." - }, - { - "language": "de", - "briefDescription": "RPKI Validator", - "fullDescription": "Routinator is a full-featured software package that can perform RPKI validation as a one-time operation and produce the result in formats such as CSV, JSON and RPSL, or run as a service that periodically downloads and verifies RPKI data. Routinator offers an RTR server allowing routers supporting Origin Validation (port 3323) to connect to it to fetch verified RPKI data. The built-in HTTP server offers a user interface and endpoints for the various file formats, as well as logging, status and Prometheus monitoring. <br/> <em>Please note that the initial start-up of this application may take upwards of 30 minutes, due to the large amount of verification data that needs to be downloaded." - }, - { - "language": "fr", - "briefDescription": "RPKI Validator", - "fullDescription": "Routinator is a full-featured software package that can perform RPKI validation as a one-time operation and produce the result in formats such as CSV, JSON and RPSL, or run as a service that periodically downloads and verifies RPKI data. Routinator offers an RTR server allowing routers supporting Origin Validation (port 3323) to connect to it to fetch verified RPKI data. The built-in HTTP server offers a user interface and endpoints for the various file formats, as well as logging, status and Prometheus monitoring. <br/> <em>Please note that the initial start-up of this application may take upwards of 30 minutes, due to the large amount of verification data that needs to be downloaded." - }, - { - "language": "pl", - "briefDescription": "RPKI Validator", - "fullDescription": "Routinator is a full-featured software package that can perform RPKI validation as a one-time operation and produce the result in formats such as CSV, JSON and RPSL, or run as a service that periodically downloads and verifies RPKI data. Routinator offers an RTR server allowing routers supporting Origin Validation (port 3323) to connect to it to fetch verified RPKI data. The built-in HTTP server offers a user interface and endpoints for the various file formats, as well as logging, status and Prometheus monitoring. <br/> <em>Please note that the initial start-up of this application may take upwards of 30 minutes, due to the large amount of verification data that needs to be downloaded." - } - ], - "tags": [ - "security", - "routing", - "bgp", - "rpki" - ] - }, - "application": { - "id": null, - "name": "Routinator", - "version": "0.8.3", - "configWizardTemplate": { - "template": { - "components": [ - { - "label": "Tabs", - "components": [ - { - "label": "Base", - "key": "configTab", - "components": [ - { - "label": "Additional Parameters", - "hideLabel": true, - "type": "container", - "input": true, - "tab": 0, - "key": "additionalParameters", - "components": [ - { - "label": "Allocated storage space", - "type": "textfield", - "input": true, - "key": "persistence#size", - "tab": 0, - "validate": { - "required": true - }, - "defaultValue": "10Gi", - "placeholder": "Default value: 10Gi", - "inputFormat": "plain" - } - ] - }, - { - "label": "Terms acceptance", - "hideLabel": true, - "tableView": true, - "type": "container", - "input": true, - "tab": 0, - "key": "termsAcceptance", - "display": "form", - "components": [ - { - "label": "Terms review", - "autoExpand": false, - "spellcheck": false, - "disabled": true, - "tableView": true, - "persistent": false, - "key": "termsContent", - "attributes": { - "style": "white-space: pre-wrap;" - }, - "type": "textarea", - "inputFormat": "plain", - "rows": 5, - "input": true, - "defaultValue": "In order to proceed with Routinator installation it is required to first review and agree to the ARIN Relying Party Agreement terms available at https://www.arin.net/resources/manage/rpki/tal/. Type in \"yes\" in the text field below to confirm that You agree on the terms." - }, - { - "label": "Terms acceptance confirmation", - "placeholder": "Type in -yes- to confirm", - "tableView": true, - "persistent": false, - "validate": { - "required": true, - "pattern": "(yes)|(YES)|(Yes)", - "customMessage": "You must agree on the terms - enter \"yes\" to confirm" - }, - "key": "termsAcceptanceStatement", - "type": "textfield", - "input": true - } - ] - } - ] - } - ], - "type": "tabs", - "input": false, - "key": "tabs" - }, - { - "type": "button", - "label": "Apply configuration", - "disableOnInvalid": true, - "theme": "primary", - "input": false, - "tableView": true - } - ] - } - }, - "configUpdateWizardTemplate": null, - "appDeploymentSpec": { - "supportedDeploymentEnvironments": [ - "KUBERNETES" - ], - "kubernetesTemplate": { - "chart": { - "name": "nmaas-routinator", - "version": "2.0.0" - } - }, - "deployParameters": { - "DOMAIN_CODENAME": "metallb.subnet_name=%VALUE%" - }, - "globalDeployParameters": { - }, - "storageVolumes": [], - "exposesWebUI": true, - "allowSshAccess": false, - "accessMethods": [ - { - "type": "DEFAULT", - "name": "Routinator", - "tag": "routinator", - "deployParameters": { - "INGRESS_ENABLED": "ingress.enabled", - "INGRESS_HOSTS": "ingress.hosts", - "INGRESS_TLS_ENABLED": "ingress.tls.enabled", - "INGRESS_CLASS": "ingress.class" - } - } - ] - }, - "appConfigurationSpec": { - "configFileRepositoryRequired": false, - "configUpdateEnabled": false, - "termsAcceptanceRequired": true, - "templates": [] - } - } -} diff --git a/src/test/shell/data/apps/app24-codimd.json b/src/test/shell/data/apps/app24-codimd.json deleted file mode 100644 index 30da32e8486290b49a2cdd3fc3358183c7d10380..0000000000000000000000000000000000000000 --- a/src/test/shell/data/apps/app24-codimd.json +++ /dev/null @@ -1,179 +0,0 @@ -{ - "applicationBase": { - "id": null, - "name": "CodiMD", - "license": "AGPL v3", - "licenseUrl": "https://www.gnu.org/licenses/agpl-3.0.txt", - "wwwUrl": "https://hackmd.io/", - "sourceUrl": "https://github.com/hackmdio/codimd", - "issuesUrl": "https://github.com/hackmdio/codimd/issues", - "nmaasDocumentationUrl": "https://wiki.geant.org/display/NMAAS/NMaaS+Tools#NMaaSTools-CodiMD", - "descriptions": [ - { - "language": "en", - "briefDescription": "Collaborative Markdown Editor", - "fullDescription": "CodiMD lets you collaborate in real-time with markdown. It is an open-source version of the popular HackMD software, letting you host and control your team's content with speed and ease." - }, - { - "language": "de", - "briefDescription": "Collaborative Markdown Editor", - "fullDescription": "CodiMD lets you collaborate in real-time with markdown. It is an open-source version of the popular HackMD software, letting you host and control your team's content with speed and ease." - }, - { - "language": "fr", - "briefDescription": "Collaborative Markdown Editor", - "fullDescription": "CodiMD lets you collaborate in real-time with markdown. It is an open-source version of the popular HackMD software, letting you host and control your team's content with speed and ease." - }, - { - "language": "pl", - "briefDescription": "Collaborative Markdown Editor", - "fullDescription": "CodiMD lets you collaborate in real-time with markdown. It is an open-source version of the popular HackMD software, letting you host and control your team's content with speed and ease." - } - ], - "tags": [ - "documentation", - "writing", - "editor" - ] - }, - "application": { - "id": null, - "name": "CodiMD", - "version": "2.4.1", - "configWizardTemplate": { - "template": { - "components": [ - { - "label": "Tabs", - "components": [ - { - "label": "Base", - "key": "configTab", - "components": [ - { - "label": "Additional Parameters", - "hideLabel": true, - "type": "container", - "input": true, - "tab": 0, - "key": "additionalParameters", - "components": [ - { - "label": "Default user email address", - "type": "email", - "input": true, - "key": "config#email", - "inputFormat": "plain", - "validate": { - "required": true - } - }, - { - "label": "Default user password", - "type": "password", - "input": true, - "key": "config#password", - "inputFormat": "plain", - "validate": { - "required": true - } - }, - { - "label": "Allow anonymous usage", - "type": "checkbox", - "defaultValue": false, - "input": true, - "key": "env#CMD_ALLOW_ANONYMOUS", - "inputFormat": "plain" - }, - { - "label": "Enable email based registrations", - "type": "checkbox", - "defaultValue": false, - "input": true, - "key": "env#CMD_ALLOW_EMAIL_REGISTER", - "inputFormat": "plain" - }, - { - "label": "Access options", - "type": "radio", - "input": true, - "tableView": true, - "inputType": "radio", - "key": "accessmethods#public#codimd", - "values": [ - { - "value": "yes", - "label": "Public" - }, - { - "value": "no", - "label": "VPN" - } - ], - "defaultValue": "yes", - "validate": { - "required": true - }, - "labelPosition": "top", - "optionsLabelPosition": "right" - } - ] - } - ] - } - ], - "type": "tabs", - "input": false, - "key": "tabs" - }, - { - "type": "button", - "label": "Apply configuration", - "disableOnInvalid": true, - "theme": "primary", - "input": false, - "tableView": true - } - ] - } - }, - "configUpdateWizardTemplate": null, - "appDeploymentSpec": { - "supportedDeploymentEnvironments": [ - "KUBERNETES" - ], - "kubernetesTemplate": { - "chart": { - "name": "nmaas-codimd", - "version": "1.0.0" - }, - "mainDeploymentName": "nmaas-codimd" - }, - "deployParameters": { - }, - "globalDeployParameters": { - }, - "storageVolumes": [], - "exposesWebUI": true, - "allowSshAccess": false, - "accessMethods": [ - { - "type": "PUBLIC", - "name": "CodiMD", - "tag": "codimd", - "deployParameters": { - "INGRESS_HOSTS": "ingress.hosts", - "INGRESS_CLASS": "ingress.class" - } - } - ] - }, - "appConfigurationSpec": { - "configFileRepositoryRequired": false, - "configUpdateEnabled": false, - "termsAcceptanceRequired": false, - "templates": [] - } - } -} diff --git a/src/test/shell/data/apps/app25-webdav.json b/src/test/shell/data/apps/app25-webdav.json deleted file mode 100644 index acda78a90b059a2f94db7f1a42bd3224cef5ca88..0000000000000000000000000000000000000000 --- a/src/test/shell/data/apps/app25-webdav.json +++ /dev/null @@ -1,218 +0,0 @@ -{ - "applicationBase": { - "id": null, - "name": "WebDAV Server", - "license": "", - "licenseUrl": "", - "wwwUrl": "", - "sourceUrl": "https://github.com/nmaas-platform/nmaas-webdav", - "issuesUrl": "", - "nmaasDocumentationUrl": "https://wiki.geant.org/display/NMAAS/NMaaS+Tools#NMaaSTools-WebDAV", - "descriptions": [ - { - "language": "en", - "briefDescription": "WebDAV Server with Git versioning", - "fullDescription": "This application represents a simple WebDAV server which can accept remote files. <br><br>During the deployment process, the user can also choose whether the uploaded files should be version using Git. <br><br>Three deployments options are possible: <br>1) Do not use Git for file versioning; <br>2) Initiate a local Git repository for file versioning which can be browsed using an embedded Git web interface; <br>3) Integrate with a remote Git repository (e.g. GitHub) and automatically push any uploaded file to the remote git repository. <br><br>In cases where the third option is chosen, users are required to set up an SSH key pair which will have push access to the target repository. <br>The target repository URL also must be given in an SSH format during application deployment, e.g. git@host.example.com/username/myrepo.<br>" - }, - { - "language": "de", - "briefDescription": "WebDAV Server with Git versioning", - "fullDescription": "This application represents a simple WebDAV server which can accept remote files. <br><br>During the deployment process, the user can also choose whether the uploaded files should be version using Git. <br><br>Three deployments options are possible: <br>1) Do not use Git for file versioning; <br>2) Initiate a local Git repository for file versioning which can be browsed using an embedded Git web interface; <br>3) Integrate with a remote Git repository (e.g. GitHub) and automatically push any uploaded file to the remote git repository. <br><br>In cases where the third option is chosen, users are required to set up an SSH key pair which will have push access to the target repository. <br>The target repository URL also must be given in an SSH format during application deployment, e.g. git@host.example.com/username/myrepo.<br>" - }, - { - "language": "fr", - "briefDescription": "WebDAV Server with Git versioning", - "fullDescription": "This application represents a simple WebDAV server which can accept remote files. <br><br>During the deployment process, the user can also choose whether the uploaded files should be version using Git. <br><br>Three deployments options are possible: <br>1) Do not use Git for file versioning; <br>2) Initiate a local Git repository for file versioning which can be browsed using an embedded Git web interface; <br>3) Integrate with a remote Git repository (e.g. GitHub) and automatically push any uploaded file to the remote git repository. <br><br>In cases where the third option is chosen, users are required to set up an SSH key pair which will have push access to the target repository. <br>The target repository URL also must be given in an SSH format during application deployment, e.g. git@host.example.com/username/myrepo.<br>" - }, - { - "language": "pl", - "briefDescription": "WebDAV Server with Git versioning", - "fullDescription": "This application represents a simple WebDAV server which can accept remote files. <br><br>During the deployment process, the user can also choose whether the uploaded files should be version using Git. <br><br>Three deployments options are possible: <br>1) Do not use Git for file versioning; <br>2) Initiate a local Git repository for file versioning which can be browsed using an embedded Git web interface; <br>3) Integrate with a remote Git repository (e.g. GitHub) and automatically push any uploaded file to the remote git repository. <br><br>In cases where the third option is chosen, users are required to set up an SSH key pair which will have push access to the target repository. <br>The target repository URL also must be given in an SSH format during application deployment, e.g. git@host.example.com/username/myrepo.<br>" - } - ], - "tags": [ - "file management", - "versioning", - "git", - "file storage" - ] - }, - "application": { - "id": null, - "name": "WebDAV Server", - "version": "1.0.0", - "configWizardTemplate": { - "template": { - "components": [ - { - "label": "Tabs", - "components": [ - { - "label": "Base", - "key": "configTab", - "components": [ - { - "label": "Additional Parameters", - "hideLabel": true, - "type": "container", - "input": true, - "tab": 0, - "key": "additionalParameters", - "components": [ - { - "label": "WebDAV HTTP Username", - "type": "textfield", - "input": true, - "key": "env#HTTP_USERNAME", - "inputFormat": "plain", - "validate": { - "required": true - } - }, - { - "label": "WebDAV HTTP Password", - "type": "password", - "input": true, - "key": "env#HTTP_PASSWORD", - "inputFormat": "plain", - "validate": { - "required": true - } - }, - { - "label": "Enable HTTPS", - "type": "checkbox", - "defaultValue": false, - "input": true, - "key": "ingress#tls#enabled", - "inputFormat": "plain" - }, - { - "label": "Enable upload versioning using Git", - "type": "checkbox", - "defaultValue": false, - "input": true, - "key": "env#GIT_ENABLED", - "inputFormat": "plain" - }, - { - "label": "Git committer email", - "type": "email", - "input": true, - "key": "env#GIT_EMAIL", - "inputFormat": "plain", - "conditional": { - "show": true, - "when": "env#GIT_ENABLED", - "eq": true - } - }, - { - "label": "Git committer username", - "type": "textfield", - "input": true, - "key": "env#GIT_USERNAME", - "inputFormat": "plain", - "conditional": { - "show": true, - "when": "env#GIT_ENABLED", - "eq": true - } - }, - { - "label": "Git repository URL (SSH format)", - "type": "textfield", - "input": true, - "key": "env#GIT_CLONE_URL", - "inputFormat": "plain", - "placeholder": "username@host/repo", - "conditional": { - "show": true, - "when": "env#GIT_ENABLED", - "eq": true - } - }, - { - "label": "Git maintainer SSH private key", - "type": "textarea", - "rows": 8, - "input": true, - "key": "env#SSH_PRIVKEY", - "inputFormat": "plain", - "conditional": { - "show": true, - "when": "env#GIT_ENABLED", - "eq": true - } - }, - { - "label": "Allocated storage space", - "type": "textfield", - "input": true, - "key": "persistence#size", - "tab": 0, - "validate": { - "required": true - }, - "defaultValue": "10Gi", - "placeholder": "Default value: 10Gi", - "inputFormat": "plain" - } - ] - } - ] - } - ], - "type": "tabs", - "input": false, - "key": "tabs" - }, - { - "type": "button", - "label": "Apply configuration", - "disableOnInvalid": true, - "theme": "primary", - "input": false, - "tableView": true - } - ] - } - }, - "configUpdateWizardTemplate": null, - "appDeploymentSpec": { - "supportedDeploymentEnvironments": [ - "KUBERNETES" - ], - "kubernetesTemplate": { - "chart": { - "name": "nmaas-webdav", - "version": "1.0.0" - } - }, - "deployParameters": { - }, - "globalDeployParameters": { - }, - "storageVolumes": [], - "exposesWebUI": true, - "allowSshAccess": false, - "accessMethods": [ - { - "type": "DEFAULT", - "name": "WebDAV", - "tag": "webdav", - "deployParameters": { - "INGRESS_HOSTS": "ingress.hosts", - "INGRESS_CLASS": "ingress.class" - } - } - ] - }, - "appConfigurationSpec": { - "configFileRepositoryRequired": false, - "configUpdateEnabled": false, - "termsAcceptanceRequired": false, - "templates": [] - } - } -} diff --git a/src/test/shell/data/apps/app27-netbox.json b/src/test/shell/data/apps/app27-netbox.json deleted file mode 100644 index 34f6a9fdc0e3cd12f754ed62717b2b81132e29de..0000000000000000000000000000000000000000 --- a/src/test/shell/data/apps/app27-netbox.json +++ /dev/null @@ -1,227 +0,0 @@ -{ - "applicationBase": { - "id": null, - "name": "NetBox", - "license": "Apache License 2.0", - "licenseUrl": "https://www.apache.org/licenses/LICENSE-2.0", - "wwwUrl": "https://netbox.readthedocs.io/", - "sourceUrl": "https://github.com/netbox-community/netbox/", - "issuesUrl": "https://github.com/netbox-community/netbox/issues", - "nmaasDocumentationUrl": "https://wiki.geant.org/display/NMAAS/nmaas+Tools#nmaasTools-NetBox", - "descriptions": [ - { - "language": "en", - "briefDescription": "Infrastructure resource modeling application", - "fullDescription": "NetBox is an infrastructure resource modeling (IRM) application designed to empower network automation. <br><br>Initially conceived by the network engineering team at DigitalOcean, NetBox was developed specifically to address the needs of network and infrastructure engineers. <br><br>It encompasses the following aspects of network management:<ul><li>IP address management (IPAM) - IP networks and addresses, VRFs, and VLANs</li><li>Equipment racks - Organized by group and site</li><li>Devices - Types of devices and where they are installed</li><li>Connections - Network, console, and power connections among devices</li><li>Virtualization - Virtual machines and clusters</li><li>Data circuits - Long-haul communications circuits and providers</li></ul><br><br>" - }, - { - "language": "de", - "briefDescription": "Infrastructure resource modeling application", - "fullDescription": "NetBox is an infrastructure resource modeling (IRM) application designed to empower network automation. <br><br>Initially conceived by the network engineering team at DigitalOcean, NetBox was developed specifically to address the needs of network and infrastructure engineers. <br><br>It encompasses the following aspects of network management:<ul><li>IP address management (IPAM) - IP networks and addresses, VRFs, and VLANs</li><li>Equipment racks - Organized by group and site</li><li>Devices - Types of devices and where they are installed</li><li>Connections - Network, console, and power connections among devices</li><li>Virtualization - Virtual machines and clusters</li><li>Data circuits - Long-haul communications circuits and providers</li></ul><br><br>" - }, - { - "language": "fr", - "briefDescription": "Infrastructure resource modeling application", - "fullDescription": "NetBox is an infrastructure resource modeling (IRM) application designed to empower network automation. <br><br>Initially conceived by the network engineering team at DigitalOcean, NetBox was developed specifically to address the needs of network and infrastructure engineers. <br><br>It encompasses the following aspects of network management:<ul><li>IP address management (IPAM) - IP networks and addresses, VRFs, and VLANs</li><li>Equipment racks - Organized by group and site</li><li>Devices - Types of devices and where they are installed</li><li>Connections - Network, console, and power connections among devices</li><li>Virtualization - Virtual machines and clusters</li><li>Data circuits - Long-haul communications circuits and providers</li></ul><br><br>" - }, - { - "language": "pl", - "briefDescription": "Infrastructure resource modeling application", - "fullDescription": "NetBox is an infrastructure resource modeling (IRM) application designed to empower network automation. <br><br>Initially conceived by the network engineering team at DigitalOcean, NetBox was developed specifically to address the needs of network and infrastructure engineers. <br><br>It encompasses the following aspects of network management:<ul><li>IP address management (IPAM) - IP networks and addresses, VRFs, and VLANs</li><li>Equipment racks - Organized by group and site</li><li>Devices - Types of devices and where they are installed</li><li>Connections - Network, console, and power connections among devices</li><li>Virtualization - Virtual machines and clusters</li><li>Data circuits - Long-haul communications circuits and providers</li></ul><br><br>" - } - ], - "tags": [ - "irm", - "infrastructure", - "modelling", - "management" - ] - }, - "application": { - "id": null, - "name": "NetBox", - "version": "3.5.2", - "configWizardTemplate": { - "template": { - "components": [ - { - "label": "Tabs", - "components": [ - { - "label": "Base", - "key": "configTab", - "components": [ - { - "label": "Additional Parameters", - "hideLabel": true, - "type": "container", - "input": true, - "tab": 0, - "key": "additionalParameters", - "components": [ - { - "label": "Initial super-user account to create", - "type": "textfield", - "input": true, - "key": "superuser#name", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain" - }, - { - "label": "Email address for the initial super-user account", - "type": "email", - "input": true, - "key": "superuser#email", - "tab": 0, - "inputFormat": "plain", - "validate": { - "required": true - } - }, - { - "label": "Password for the initial super-user account", - "type": "password", - "input": true, - "key": "superuser#password", - "tab": 0, - "inputFormat": "plain", - "validate": { - "required": true - } - }, - { - "label": "API token created for the initial super-user account", - "type": "textfield", - "input": true, - "key": "superuser#apiToken", - "tab": 0, - "validate": { - "required": true - }, - "inputFormat": "plain", - "placeholder": "Suggested format: 0123456789abcdef0123456789abcdef01234567" - }, - { - "label": "Permit only logged-in users to access NetBox", - "type": "checkbox", - "defaultValue": true, - "input": true, - "key": "loginRequired", - "inputFormat": "plain", - "description": "If not checked, unauthenticated read-only access is enabled" - }, - { - "label": "Allocated storage space", - "type": "textfield", - "input": true, - "key": "persistence#size", - "tab": 0, - "validate": { - "required": true - }, - "defaultValue": "1Gi", - "placeholder": "Default value: 1Gi", - "inputFormat": "plain" - } - ] - } - ] - } - ], - "type": "tabs", - "input": false, - "key": "tabs" - }, - { - "type": "button", - "label": "Apply configuration", - "disableOnInvalid": true, - "theme": "primary", - "input": false, - "tableView": true - } - ] - } - }, - "configUpdateWizardTemplate": null, - "appDeploymentSpec": { - "supportedDeploymentEnvironments": [ - "KUBERNETES" - ], - "kubernetesTemplate": { - "chart": { - "name": "nmaas-netbox", - "version": "6.0.0" - }, - "mainDeploymentName": "nmaas-netbox" - }, - "deployParameters": { - "RELEASE_NAME_HOUSEKEEPING": "housekeeping.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[0].labelSelector.matchExpressions[1].values[0]=%VALUE%", - "RELEASE_NAME_WORKER": "worker.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[0].labelSelector.matchExpressions[1].values[0]=%VALUE%", - "SMTP_HOSTNAME": "email.server", - "SMTP_PASSWORD": "email.password", - "SMTP_PORT": "email.port", - "SMTP_USERNAME": "email.username" - }, - "globalDeployParameters": { - "updateStrategy.type": "Recreate", - "loginPersistence": "true", - "timeZone": "Europe/Warsaw", - "postgresql.enabled": "true", - "postgresql.postgresqlDatabase": "netbox", - "postgresql.postgresqlUsername": "netbox", - "postgresql.postgresqlPassword": "%RANDOM_STRING_12%", - "postgresql.postgresqlPostgresPassword": "%RANDOM_STRING_12%", - "redis.enabled": "true", - "redis.architecture": "standalone", - "redis.auth.password": "%RANDOM_STRING_12%", - "persistence.enabled": "true", - "persistence.accessMode": "ReadWriteOnce", - "email.from": "netbox@nmaas.eu", - "ingress.hosts[0].paths": "{/}", - "worker.enabled": "true", - "worker.updateStrategy.type": "Recreate", - "worker.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[0].labelSelector.matchExpressions[0].key": "app.kubernetes.io/component", - "worker.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[0].labelSelector.matchExpressions[0].operator": "In", - "worker.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[0].labelSelector.matchExpressions[0].values[0]": "netbox", - "worker.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[0].labelSelector.matchExpressions[1].key": "app.kubernetes.io/instance", - "worker.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[0].labelSelector.matchExpressions[1].operator": "In", - "worker.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[0].topologyKey": "\"kubernetes.io/hostname\"", - "housekeeping.enabled": "true", - "housekeeping.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[0].labelSelector.matchExpressions[0].key": "app.kubernetes.io/component", - "housekeeping.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[0].labelSelector.matchExpressions[0].operator": "In", - "housekeeping.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[0].labelSelector.matchExpressions[0].values[0]": "netbox", - "housekeeping.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[0].labelSelector.matchExpressions[1].key": "app.kubernetes.io/instance", - "housekeeping.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[0].labelSelector.matchExpressions[1].operator": "In", - "housekeeping.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[0].topologyKey": "\"kubernetes.io/hostname\"" - }, - "storageVolumes": [], - "exposesWebUI": true, - "allowSshAccess": false, - "accessMethods": [ - { - "type": "DEFAULT", - "name": "NetBox", - "tag": "netbox", - "deployParameters": { - "INGRESS_ENABLED": "ingress.enabled", - "INGRESS_CLASS": "ingress.className", - "INGRESS_HOSTS": "ingress.hosts[0].host=%VALUE%", - "INGRESS_TLS_HOSTS": "ingress.tls[0].hosts[0]=%VALUE%", - "INGRESS_LETSENCRYPT": "ingress.tls[0].secretName", - "INGRESS_WILDCARD_OR_ISSUER": "ingress.tls[0].secretName" - } - } - ] - }, - "appConfigurationSpec": { - "configFileRepositoryRequired": false, - "configUpdateEnabled": false, - "termsAcceptanceRequired": false, - "templates": [] - } - } -} diff --git a/src/test/shell/data/apps/app28-zabbix.json b/src/test/shell/data/apps/app28-zabbix.json deleted file mode 100644 index 22919a1c9978a073211593d5d1b4e7683b86cbef..0000000000000000000000000000000000000000 --- a/src/test/shell/data/apps/app28-zabbix.json +++ /dev/null @@ -1,127 +0,0 @@ -{ - "applicationBase": { - "id": null, - "name": "Zabbix", - "license": "GPL Version 2", - "licenseUrl": "https://www.zabbix.com/license", - "wwwUrl": "https://www.zabbix.com/index", - "sourceUrl": "https://git.zabbix.com/repos?visibility=public", - "issuesUrl": "https://support.zabbix.com/projects/ZBX/issues/ZBX-19223?filter=allopenissues", - "nmaasDocumentationUrl": "https://wiki.geant.org/display/NMAAS/NMaaS+Tools#NMaaSTools-Zabbix", - "descriptions": [ - { - "language": "en", - "briefDescription": "Enterprise-class monitoring solution for networks and applications", - "fullDescription": "Zabbix is a mature and effortless enterprise-class open source monitoring solution for network monitoring and application monitoring of millions of metrics. <br><br>The Zabbix application included in the NMaaS catalog uses TimescaleDB for better performance. <br><br>After deployment, use the default Admin/zabbix credentials to login." - }, - { - "language": "de", - "briefDescription": "Enterprise-class monitoring solution for networks and applications", - "fullDescription": "Zabbix is a mature and effortless enterprise-class open source monitoring solution for network monitoring and application monitoring of millions of metrics. <br><br>The Zabbix application included in the NMaaS catalog uses TimescaleDB for better performance. <br><br>After deployment, use the default Admin/zabbix credentials to login." - }, - { - "language": "fr", - "briefDescription": "Enterprise-class monitoring solution for networks and applications", - "fullDescription": "Zabbix is a mature and effortless enterprise-class open source monitoring solution for network monitoring and application monitoring of millions of metrics. <br><br>The Zabbix application included in the NMaaS catalog uses TimescaleDB for better performance. <br><br>After deployment, use the default Admin/zabbix credentials to login." - }, - { - "language": "pl", - "briefDescription": "Enterprise-class monitoring solution for networks and applications", - "fullDescription": "Zabbix is a mature and effortless enterprise-class open source monitoring solution for network monitoring and application monitoring of millions of metrics. <br><br>The Zabbix application included in the NMaaS catalog uses TimescaleDB for better performance. <br><br>After deployment, use the default Admin/zabbix credentials to login." - } - ], - "tags": [ - "monitoring", - "notifications", - "snmp", - "agent", - "proxy" - ] - }, - "application": { - "id": null, - "name": "Zabbix", - "version": "5.0.20", - "configWizardTemplate": { - "template": { - "components": [ - { - "label": "Tabs", - "components": [ - { - "label": "Base", - "key": "configTab", - "components": [ - { - "type": "htmlelement", - "input": false, - "content": "<p>All required configuration should be applied after activation process is completed using dedicated Git repository.</p><p>Click Apply configuration button to proceed</p>", - "tab": 0 - } - ] - } - ], - "type": "tabs", - "input": false, - "key": "tabs" - }, - { - "type": "button", - "label": "Apply configuration", - "disableOnInvalid": true, - "theme": "primary", - "input": false, - "tableView": true - } - ] - } - }, - "configUpdateWizardTemplate": null, - "appDeploymentSpec": { - "supportedDeploymentEnvironments": [ - "KUBERNETES" - ], - "kubernetesTemplate": { - "chart": { - "name": "nmaas-zabbix", - "version": "1.0.0" - }, - "mainDeploymentName": "server" - }, - "deployParameters": { - "DOMAIN_CODENAME": "zabbixServer.service.annotations.\"metallb\\.universe\\.tf/address-pool\"=%VALUE%" - }, - "globalDeployParameters": { - "nmaas-timescaledb.properties.password": "%RANDOM_STRING_12%", - "properties.database.password": "%RANDOM_STRING_12%" - }, - "storageVolumes": [], - "exposesWebUI": true, - "allowSshAccess": false, - "accessMethods": [ - { - "type": "DEFAULT", - "name": "Zabbix", - "tag": "zabbix", - "deployParameters": { - "INGRESS_ENABLED": "zabbixWeb.ingress.enabled", - "INGRESS_CLASS": "zabbixWeb.ingress.class", - "INGRESS_HOSTS": "zabbixWeb.ingress.hosts" - } - } - ] - }, - "appConfigurationSpec": { - "configFileRepositoryRequired": true, - "configUpdateEnabled": true, - "termsAcceptanceRequired": false, - "templates": [ - { - "configFileName": "zabbix-server.conf", - "configFileDirectory": "config", - "configFileTemplateContent": "CacheSize = 64M" - } - ] - } - } -} diff --git a/src/test/shell/data/apps/app29-spa.json b/src/test/shell/data/apps/app29-spa.json deleted file mode 100644 index cfe139ec6748cf69b4246fbeeeed260024a1ac67..0000000000000000000000000000000000000000 --- a/src/test/shell/data/apps/app29-spa.json +++ /dev/null @@ -1,144 +0,0 @@ -{ - "applicationBase": { - "id": null, - "name": "SPA", - "license": "", - "licenseUrl": "", - "wwwUrl": "https://wiki.geant.org/display/NETDEV/SPA", - "sourceUrl": "", - "issuesUrl": "", - "nmaasDocumentationUrl": "https://wiki.geant.org/display/NMAAS/NMaaS+Tools#NMaaSTools-SPA", - "descriptions": [ - { - "language": "en", - "briefDescription": "SPA for the E-Line service", - "fullDescription": "The Service Provider Architecture (SPA) is a service management digital platform providing the general processes and components necessary to manage the CSP services via a user-friendly web graphical user interface (Self-Service Portal).<br><br>The platform in NMaaS has been prepared to manage E-Line service (L2 end-to-end connectivity) implemented by the OpenNSA application with a test default configuration and virtual simplified network topology. Users can familiarise with the SPA without the need of setting up the platform from the scratch.<br><br>Just log in to the portal and start creating new circuits in a simple network to see how it works." - }, - { - "language": "de", - "briefDescription": "SPA for the E-Line service", - "fullDescription": "The Service Provider Architecture (SPA) is a service management digital platform providing the general processes and components necessary to manage the CSP services via a user-friendly web graphical user interface (Self-Service Portal).<br><br>The platform in NMaaS has been prepared to manage E-Line service (L2 end-to-end connectivity) implemented by the OpenNSA application with a test default configuration and virtual simplified network topology. Users can familiarise with the SPA without the need of setting up the platform from the scratch.<br><br>Just log in to the portal and start creating new circuits in a simple network to see how it works." - }, - { - "language": "fr", - "briefDescription": "SPA for the E-Line service", - "fullDescription": "The Service Provider Architecture (SPA) is a service management digital platform providing the general processes and components necessary to manage the CSP services via a user-friendly web graphical user interface (Self-Service Portal).<br><br>The platform in NMaaS has been prepared to manage E-Line service (L2 end-to-end connectivity) implemented by the OpenNSA application with a test default configuration and virtual simplified network topology. Users can familiarise with the SPA without the need of setting up the platform from the scratch.<br><br>Just log in to the portal and start creating new circuits in a simple network to see how it works." - }, - { - "language": "pl", - "briefDescription": "SPA for the E-Line service", - "fullDescription": "The Service Provider Architecture (SPA) is a service management digital platform providing the general processes and components necessary to manage the CSP services via a user-friendly web graphical user interface (Self-Service Portal).<br><br>The platform in NMaaS has been prepared to manage E-Line service (L2 end-to-end connectivity) implemented by the OpenNSA application with a test default configuration and virtual simplified network topology. Users can familiarise with the SPA without the need of setting up the platform from the scratch.<br><br>Just log in to the portal and start creating new circuits in a simple network to see how it works." - } - ], - "tags": [ - "management", - "inventory", - "crm" - ] - }, - "application": { - "id": null, - "name": "SPA", - "version": "1.3.3", - "configWizardTemplate": { - "template": { - "components": [ - { - "label": "Tabs", - "components": [ - { - "label": "Info", - "key": "configTab", - "components": [ - { - "type": "htmlelement", - "input": false, - "content": "<p>SPA installation is preconfigured to ease tests without complex set up.<p><p>For additional details and default user access credentials refer to <a href=\"https://wiki.geant.org/display/NMAAS/NMaaS+Tools#NMaaSTools-SPA\">NMaaS wiki</a>.</p><p>Click <i>Apply configuration</i> button to proceed</p>", - "tab": 0 - } - ] - } - ], - "type": "tabs", - "input": false, - "key": "tabs" - }, - { - "type": "button", - "label": "Apply configuration", - "disableOnInvalid": true, - "theme": "primary", - "input": false, - "tableView": true - } - ] - } - }, - "configUpdateWizardTemplate": null, - "appDeploymentSpec": { - "supportedDeploymentEnvironments": [ - "KUBERNETES" - ], - "kubernetesTemplate": { - "chart": { - "name": "nmaas-spa", - "version": "1.0.4" - }, - "mainDeploymentName": "ssp" - }, - "deployParameters": {}, - "globalDeployParameters": {}, - "storageVolumes": [], - "exposesWebUI": true, - "allowSshAccess": false, - "accessMethods": [ - { - "type": "DEFAULT", - "name": "Portal", - "tag": "portal", - "deployParameters": { - "INGRESS_ENABLED": "ssp.ingress.enabled", - "INGRESS_CLASS": "ssp.ingress.class", - "INGRESS_HOSTS": "ssp.ingress.hosts" - } - }, - { - "type": "EXTERNAL", - "name": "Inventory", - "tag": "inventory", - "deployParameters": { - "INGRESS_ENABLED": "inventory.ingress.enabled", - "INGRESS_CLASS": "inventory.ingress.class", - "INGRESS_HOSTS": "inventory.ingress.hosts" - } - }, - { - "type": "EXTERNAL", - "name": "OTRS", - "tag": "otrs", - "deployParameters": { - "INGRESS_ENABLED": "otrs.ingress.enabled", - "INGRESS_CLASS": "otrs.ingress.class", - "INGRESS_HOSTS": "otrs.ingress.hosts" - } - }, - { - "type": "EXTERNAL", - "name": "SuiteCRM", - "tag": "suitecrm", - "deployParameters": { - "INGRESS_ENABLED": "suitecrm.ingress.enabled", - "INGRESS_CLASS": "suitecrm.ingress.class", - "INGRESS_HOSTS": "suitecrm.ingress.hosts" - } - } - ] - }, - "appConfigurationSpec": { - "configFileRepositoryRequired": false, - "configUpdateEnabled": false, - "termsAcceptanceRequired": false, - "templates": [] - } - } -} diff --git a/src/test/shell/data/apps/app31-ctfd.json b/src/test/shell/data/apps/app31-ctfd.json deleted file mode 100644 index 64fbd3391ea8eb51ab42286e028013b1a264f617..0000000000000000000000000000000000000000 --- a/src/test/shell/data/apps/app31-ctfd.json +++ /dev/null @@ -1,119 +0,0 @@ -{ - "applicationBase": { - "id": null, - "name": "CTFd", - "license": "Apache License 2.0", - "licenseUrl": "https://www.apache.org/licenses/LICENSE-2.0", - "wwwUrl": "https://ctfd.io/", - "sourceUrl": "https://github.com/CTFd/CTFd", - "issuesUrl": "https://github.com/CTFd/CTFd/issues", - "nmaasDocumentationUrl": "https://wiki.geant.org/display/NMAAS/nmaas+Tools#nmaasTools-CTFD", - "descriptions": [ - { - "language": "en", - "briefDescription": "CTFs as you need them", - "fullDescription": "CTFd is a Capture The Flag framework focusing on ease of use and customizability. It comes with everything you need to run a CTF and it's easy to customize with plugins and themes." - }, - { - "language": "de", - "briefDescription": "CTFs as you need them", - "fullDescription": "CTFd is a Capture The Flag framework focusing on ease of use and customizability. It comes with everything you need to run a CTF and it's easy to customize with plugins and themes." - }, - { - "language": "fr", - "briefDescription": "CTFs as you need them", - "fullDescription": "CTFd is a Capture The Flag framework focusing on ease of use and customizability. It comes with everything you need to run a CTF and it's easy to customize with plugins and themes." - }, - { - "language": "pl", - "briefDescription": "CTFs as you need them", - "fullDescription": "CTFd is a Capture The Flag framework focusing on ease of use and customizability. It comes with everything you need to run a CTF and it's easy to customize with plugins and themes." - } - ], - "tags": [ - "CTF", - "virtual lab", - "competition", - "capture the flag" - ] - }, - "application": { - "id": null, - "name": "CTFd", - "version": "3.5.1", - "configWizardTemplate": { - "template": { - "components": [ - { - "label": "Tabs", - "components": [ - { - "label": "Base", - "key": "configTab", - "components": [ - { - "type": "htmlelement", - "input": false, - "content": "<p>No configuration parameters are required.</p><p>Click <i>Apply configuration</i> button to proceed</p>", - "tab": 0 - } - ] - } - ], - "type": "tabs", - "input": false, - "key": "tabs" - }, { - "type": "button", - "label": "Apply configuration", - "disableOnInvalid": true, - "theme": "primary", - "input": false, - "tableView": true - } - ] - } - }, - "configUpdateWizardTemplate": null, - "appDeploymentSpec": { - "supportedDeploymentEnvironments": [ - "KUBERNETES" - ], - "kubernetesTemplate": { - "chart": { - "name": "nmaas-ctfd", - "version": "1.0.1" - }, - "mainDeploymentName": "nmaas-ctfd" - }, - "deployParameters": {}, - "globalDeployParameters": { - "mariadb.auth.rootPassword": "%RANDOM_STRING_12%", - "mariadb.auth.password": "%RANDOM_STRING_12%", - "ingress.hosts[0].paths[0].path": "/", - "ingress.hosts[0].paths[0].pathType": "ImplementationSpecific" - }, - "storageVolumes": [], - "exposesWebUI": true, - "allowSshAccess": false, - "accessMethods": [ - { - "type": "DEFAULT", - "name": "CTFd", - "tag": "ctfd", - "deployParameters": { - "INGRESS_CLASS": "ingress.className,ingress.annotations.\"kubernetes\\.io/ingress\\.class\"=%VALUE%", - "INGRESS_HOSTS": "ingress.hosts[0].host=%VALUE%", - "INGRESS_TLS_HOSTS": "ingress.tls[0].hosts[0]=%VALUE%" - } - } - ] - }, - "appConfigurationSpec": { - "configFileRepositoryRequired": false, - "configUpdateEnabled": false, - "termsAcceptanceRequired": false, - "templates": [] - } - } -} diff --git a/src/test/shell/data/apps/app32-juiceshop.json b/src/test/shell/data/apps/app32-juiceshop.json deleted file mode 100644 index 396f10c31a3a17f2f74e540c384e987bf981579f..0000000000000000000000000000000000000000 --- a/src/test/shell/data/apps/app32-juiceshop.json +++ /dev/null @@ -1,118 +0,0 @@ -{ - "applicationBase": { - "id": null, - "name": "OWASP JuiceShop", - "license": "MIT License", - "licenseUrl": "https://opensource.org/license/mit/", - "wwwUrl": "https://owasp-juice.shop/", - "sourceUrl": "https://github.com/juice-shop/juice-shop", - "issuesUrl": "https://github.com/juice-shop/juice-shop/issues", - "nmaasDocumentationUrl": "https://wiki.geant.org/display/NMAAS/nmaas+Tools#nmaasTools-JuiceShop", - "descriptions": [ - { - "language": "en", - "briefDescription": "Vulnerable Web Application for Training", - "fullDescription": "OWASP Juice Shop is probably the most modern and sophisticated insecure web application! It can be used in security trainings, awareness demos, CTFs and as a guinea pig for security tools! Juice Shop encompasses vulnerabilities from the entire [OWASP Top Ten](https://owasp.org/www-project-top-ten) along with many other security flaws found in real-world applications!" - }, - { - "language": "de", - "briefDescription": "Vulnerable Web Application for Training", - "fullDescription": "OWASP Juice Shop is probably the most modern and sophisticated insecure web application! It can be used in security trainings, awareness demos, CTFs and as a guinea pig for security tools! Juice Shop encompasses vulnerabilities from the entire [OWASP Top Ten](https://owasp.org/www-project-top-ten) along with many other security flaws found in real-world applications!" - }, - { - "language": "fr", - "briefDescription": "Vulnerable Web Application for Training", - "fullDescription": "OWASP Juice Shop is probably the most modern and sophisticated insecure web application! It can be used in security trainings, awareness demos, CTFs and as a guinea pig for security tools! Juice Shop encompasses vulnerabilities from the entire [OWASP Top Ten](https://owasp.org/www-project-top-ten) along with many other security flaws found in real-world applications!" - }, - { - "language": "pl", - "briefDescription": "Vulnerable Web Application for Training", - "fullDescription": "OWASP Juice Shop is probably the most modern and sophisticated insecure web application! It can be used in security trainings, awareness demos, CTFs and as a guinea pig for security tools! Juice Shop encompasses vulnerabilities from the entire [OWASP Top Ten](https://owasp.org/www-project-top-ten) along with many other security flaws found in real-world applications!" - } - ], - "tags": [ - "owasp top 10", - "security vulnerability", - "training", - "capture the flag" - ] - }, - "application": { - "id": null, - "name": "OWASP JuiceShop", - "version": "14.5.1", - "configWizardTemplate": { - "template": { - "components": [ - { - "label": "Tabs", - "components": [ - { - "label": "Base", - "key": "configTab", - "components": [ - { - "type": "htmlelement", - "input": false, - "content": "<p>No configuration parameters are required.</p><p>Click <i>Apply configuration</i> button to proceed</p>", - "tab": 0 - } - ] - } - ], - "type": "tabs", - "input": false, - "key": "tabs" - }, { - "type": "button", - "label": "Apply configuration", - "disableOnInvalid": true, - "theme": "primary", - "input": false, - "tableView": true - } - ] - } - }, - "configUpdateWizardTemplate": null, - "appDeploymentSpec": { - "supportedDeploymentEnvironments": [ - "KUBERNETES" - ], - "kubernetesTemplate": { - "chart": { - "name": "nmaas-juiceshop", - "version": "1.0.0" - }, - "mainDeploymentName": "nmaas-juiceshop" - }, - "deployParameters": {}, - "globalDeployParameters": { - "ingress.sablier.enabled": "true", - "ingress.hosts[0].paths[0].path": "/", - "ingress.hosts[0].paths[0].pathType": "ImplementationSpecific" - }, - "storageVolumes": [], - "exposesWebUI": true, - "allowSshAccess": false, - "accessMethods": [ - { - "type": "DEFAULT", - "name": "JuiceShop", - "tag": "juiceshop", - "deployParameters": { - "INGRESS_CLASS": "ingress.className", - "INGRESS_HOSTS": "ingress.hosts[0].host=%VALUE%", - "INGRESS_TLS_HOSTS": "ingress.tls[0].hosts[0]=%VALUE%" - } - } - ] - }, - "appConfigurationSpec": { - "configFileRepositoryRequired": false, - "configUpdateEnabled": false, - "termsAcceptanceRequired": false, - "templates": [] - } - } -} diff --git a/src/test/shell/data/apps/app33-adminer.json b/src/test/shell/data/apps/app33-adminer.json deleted file mode 100644 index 730206934d22fcb9ba6c02c9525368728a70f208..0000000000000000000000000000000000000000 --- a/src/test/shell/data/apps/app33-adminer.json +++ /dev/null @@ -1,121 +0,0 @@ -{ - "applicationBase": { - "id": null, - "name": "Adminer", - "license": "Apache License 2.0", - "licenseUrl": "https://www.apache.org/licenses/LICENSE-2.0", - "wwwUrl": "https://www.adminer.org/", - "sourceUrl": "https://github.com/vrana/adminer", - "issuesUrl": "https://sourceforge.net/p/adminer/bugs-and-features/", - "nmaasDocumentationUrl": "https://wiki.geant.org/display/NMAAS/NMaaS+Tools#NMaaSTools-Adminer", - "descriptions": [ - { - "language": "en", - "briefDescription": "Web Database Management", - "fullDescription": "Adminer (formerly phpMinAdmin) is a full-featured database management tool written in PHP. Conversely to phpMyAdmin, it consists of a single file ready to deploy to the target server. Adminer is available for MySQL, MariaDB, PostgreSQL, SQLite, MS SQL, Oracle, Elasticsearch, MongoDB and others via plugin." - }, - { - "language": "de", - "briefDescription": "Web Database Management", - "fullDescription": "Adminer (formerly phpMinAdmin) is a full-featured database management tool written in PHP. Conversely to phpMyAdmin, it consists of a single file ready to deploy to the target server. Adminer is available for MySQL, MariaDB, PostgreSQL, SQLite, MS SQL, Oracle, Elasticsearch, MongoDB and others via plugin." - }, - { - "language": "fr", - "briefDescription": "Web Database Management", - "fullDescription": "Adminer (formerly phpMinAdmin) is a full-featured database management tool written in PHP. Conversely to phpMyAdmin, it consists of a single file ready to deploy to the target server. Adminer is available for MySQL, MariaDB, PostgreSQL, SQLite, MS SQL, Oracle, Elasticsearch, MongoDB and others via plugin." - }, - { - "language": "pl", - "briefDescription": "Web Database Management", - "fullDescription": "Adminer (formerly phpMinAdmin) is a full-featured database management tool written in PHP. Conversely to phpMyAdmin, it consists of a single file ready to deploy to the target server. Adminer is available for MySQL, MariaDB, PostgreSQL, SQLite, MS SQL, Oracle, Elasticsearch, MongoDB and others via plugin." - } - ], - "tags": [ - "database", - "mysql", - "postgresql", - "export", - "import" - ] - }, - "application": { - "id": null, - "name": "Adminer", - "version": "4.8.1", - "configWizardTemplate": { - "template": { - "components": [ - { - "label": "Tabs", - "components": [ - { - "label": "Base", - "key": "configTab", - "components": [ - { - "type": "htmlelement", - "input": false, - "content": "<p>No configuration parameters are required.</p><p>Click <i>Apply configuration</i> button to proceed</p>", - "tab": 0 - } - ] - } - ], - "type": "tabs", - "input": false, - "key": "tabs" - }, - { - "type": "button", - "label": "Apply configuration", - "disableOnInvalid": true, - "theme": "primary", - "input": false, - "tableView": true - } - ] - } - }, - "configUpdateWizardTemplate": null, - "appDeploymentSpec": { - "supportedDeploymentEnvironments": [ - "KUBERNETES" - ], - "kubernetesTemplate": { - "chart": { - "name": "nmaas-adminer", - "version": "3.0.0" - }, - "mainDeploymentName": "nmaas-adminer" - }, - "deployParameters": { }, - "globalDeployParameters": { - "ingress.hosts[0].paths[0].path": "/", - "ingress.hosts[0].paths[0].pathType": "ImplementationSpecific" - }, - "storageVolumes": [], - "exposesWebUI": true, - "allowSshAccess": false, - "accessMethods": [ - { - "type": "DEFAULT", - "name": "Adminer", - "tag": "adminer", - "deployParameters": { - "INGRESS_ENABLED": "ingress.enabled", - "INGRESS_CLASS": "ingress.className", - "INGRESS_HOSTS": "ingress.hosts[0].host=%VALUE%", - "INGRESS_TLS_HOSTS": "ingress.tls[0].hosts[0]=%VALUE%", - "INGRESS_WILDCARD_OR_ISSUER": "ingress.tls[0].secretName=%VALUE%" - } - } - ] - }, - "appConfigurationSpec": { - "configFileRepositoryRequired": false, - "configUpdateEnabled": false, - "termsAcceptanceRequired": false, - "templates": [] - } - } -} diff --git a/src/test/shell/data/apps/app34-maildev.json b/src/test/shell/data/apps/app34-maildev.json deleted file mode 100644 index d7edb0a14eddff8f8bcd698c29de11f1e9519b57..0000000000000000000000000000000000000000 --- a/src/test/shell/data/apps/app34-maildev.json +++ /dev/null @@ -1,176 +0,0 @@ -{ - "applicationBase": { - "id": null, - "name": "MailDev", - "license": "Dan Farrelly", - "licenseUrl": "https://raw.githubusercontent.com/maildev/maildev/master/LICENSE", - "wwwUrl": "https://maildev.github.io/maildev/", - "sourceUrl": "https://github.com/maildev/maildev", - "issuesUrl": "https://github.com/maildev/maildev/issues", - "nmaasDocumentationUrl": "https://docs.nmaas.eu/nmaas-applications/tutorials/maildev", - "descriptions": [ - { - "language": "en", - "briefDescription": "SMTP Server + Web Interface for viewing and testing emails during development.", - "fullDescription": "MailDev is a simple way to test your project's generated email during development, with an easy to use web interface that runs on NMaaS, built on top of Node.js." - }, - { - "language": "de", - "briefDescription": "SMTP Server + Web Interface for viewing and testing emails during development.", - "fullDescription": "MailDev is a simple way to test your project's generated email during development, with an easy to use web interface that runs on NMaaS, built on top of Node.js." - }, - { - "language": "fr", - "briefDescription": "SMTP Server + Web Interface for viewing and testing emails during development.", - "fullDescription": "MailDev is a simple way to test your project's generated email during development, with an easy to use web interface that runs on NMaaS, built on top of Node.js." - }, - { - "language": "pl", - "briefDescription": "SMTP Server + Web Interface for viewing and testing emails during development.", - "fullDescription": "MailDev is a simple way to test your project's generated email during development, with an easy to use web interface that runs on NMaaS, built on top of Node.js." - } - ], - "tags": [ - "email server", - "virtual lab", - "development", - "sandbox" - ] - }, - "application": { - "id": null, - "name": "MailDev", - "version": "2.0.5", - "configWizardTemplate": { - "template": { - "components": [ - { - "label": "Tabs", - "components": [ - { - "label": "Base", - "key": "configTab", - "components": [ - { - "label": "Additional Parameters", - "hideLabel": true, - "type": "container", - "input": true, - "tab": 0, - "key": "additionalParameters", - "components": [ - { - "label": "Enable Web Authentication", - "type": "checkbox", - "defaultValue": false, - "input": true, - "tab": 0, - "key": "auth#enabled", - "inputFormat": "plain" - }, - { - "label": "Web user", - "type": "textfield", - "input": true, - "tab": 0, - "key": "properties#webUser", - "inputFormat": "plain", - "conditional": { - "show": true, - "when": "auth#enabled", - "eq": true - } - }, - { - "label": "Password for the web user", - "type": "password", - "input": true, - "tab": 0, - "key": "properties#webPassword", - "inputFormat": "plain", - "conditional": { - "show": true, - "when": "auth#enabled", - "eq": true - } - } - ] - } - ] - } - ], - "type": "tabs", - "input": false, - "key": "tabs" - }, - { - "type": "button", - "label": "Apply configuration", - "disableOnInvalid": true, - "theme": "primary", - "input": false, - "tableView": true - } - ] - } - }, - "configUpdateWizardTemplate": null, - "appDeploymentSpec": { - "supportedDeploymentEnvironments": [ - "KUBERNETES" - ], - "kubernetesTemplate": { - "chart": { - "name": "nmaas-maildev", - "version": "1.0.0" - }, - "mainDeploymentName": "nmaas-maildev" - }, - "deployParameters": { }, - "globalDeployParameters": { - "ingress.hosts[0].paths[0].path": "/", - "ingress.hosts[0].paths[0].pathType": "ImplementationSpecific", - "service.type": "LoadBalancer" - }, - "storageVolumes": [], - "exposesWebUI": true, - "allowSshAccess": false, - "accessMethods": [ - { - "type": "DEFAULT", - "name": "MailDev", - "tag": "maildev", - "deployParameters": { - "INGRESS_CLASS": "ingress.className", - "INGRESS_HOSTS": "ingress.hosts[0].host=%VALUE%", - "INGRESS_TLS_HOSTS": "ingress.tls[0].hosts[0]=%VALUE%" - } - }, - { - "type": "LOCAL", - "name": "service", - "tag": "maildev", - "deployParameters": { - "K8S_SERVICE_SUFFIX": "nmaas-maildev", - "K8S_SERVICE_PORT": "1025" - } - }, - { - "type": "INTERNAL", - "name": "ip", - "tag": "maildev", - "deployParameters": { - "K8S_SERVICE_SUFFIX": "nmaas-maildev", - "K8S_SERVICE_PORT": "1025" - } - } - ] - }, - "appConfigurationSpec": { - "configFileRepositoryRequired": false, - "configUpdateEnabled": false, - "termsAcceptanceRequired": false, - "templates": [] - } - } -} diff --git a/src/test/shell/data/apps/app35-changedetectionio.json b/src/test/shell/data/apps/app35-changedetectionio.json deleted file mode 100644 index 15f166b7aa94e74dd9f7d56b2732fb997387aa4a..0000000000000000000000000000000000000000 --- a/src/test/shell/data/apps/app35-changedetectionio.json +++ /dev/null @@ -1,118 +0,0 @@ -{ - "applicationBase": { - "id": null, - "name": "changedetectionio", - "license": "Apache License 2.0", - "licenseUrl": "https://www.apache.org/licenses/LICENSE-2.0", - "wwwUrl": "https://github.com/dgtlmoon/changedetection.io", - "sourceUrl": "https://github.com/dgtlmoon/changedetection.io", - "issuesUrl": "https://github.com/dgtlmoon/changedetection.io/issues", - "nmaasDocumentationUrl": "https://wiki.geant.org/display/NMAAS/nmaas+Tools#nmaasTools-changedetection.io", - "descriptions": [ - { - "language": "en", - "briefDescription": "Web Site Change Detection, Restock monitoring and notifications", - "fullDescription": "Detect website content changes and perform meaningful actions - trigger notifications via Discord, Email, Slack, Telegram, API calls and many more." - }, - { - "language": "de", - "briefDescription": "Web Site Change Detection, Restock monitoring and notifications", - "fullDescription": "Detect website content changes and perform meaningful actions - trigger notifications via Discord, Email, Slack, Telegram, API calls and many more." - }, - { - "language": "fr", - "briefDescription": "Web Site Change Detection, Restock monitoring and notifications", - "fullDescription": "Detect website content changes and perform meaningful actions - trigger notifications via Discord, Email, Slack, Telegram, API calls and many more." - }, - { - "language": "pl", - "briefDescription": "Web Site Change Detection, Restock monitoring and notifications", - "fullDescription": "Detect website content changes and perform meaningful actions - trigger notifications via Discord, Email, Slack, Telegram, API calls and many more." - } - ], - "tags": [ - "website monitoring", - "notifications", - "change detection", - "alerting" - ] - }, - "application": { - "id": null, - "name": "changedetectionio", - "version": "0.43.2", - "configWizardTemplate": { - "template": { - "components": [ - { - "label": "Tabs", - "components": [ - { - "label": "Base", - "key": "configTab", - "components": [ - { - "type": "htmlelement", - "input": false, - "content": "<p>No configuration parameters are required.</p><p>Click <i>Apply configuration</i> button to proceed</p>", - "tab": 0 - } - ] - } - ], - "type": "tabs", - "input": false, - "key": "tabs" - }, - { - "type": "button", - "label": "Apply configuration", - "disableOnInvalid": true, - "theme": "primary", - "input": false, - "tableView": true - } - ] - } - }, - "configUpdateWizardTemplate": null, - "appDeploymentSpec": { - "supportedDeploymentEnvironments": [ - "KUBERNETES" - ], - "kubernetesTemplate": { - "chart": { - "name": "nmaas-changedetection", - "version": "1.0.1" - }, - "mainDeploymentName": "nmaas-changedetection" - }, - "deployParameters": { }, - "globalDeployParameters": { - "ingress.hosts[0].paths[0].path": "/", - "ingress.hosts[0].paths[0].pathType": "ImplementationSpecific" - }, - "storageVolumes": [], - "exposesWebUI": true, - "allowSshAccess": false, - "accessMethods": [ - { - "type": "DEFAULT", - "name": "changedetection.io", - "tag": "changedetection", - "deployParameters": { - "INGRESS_CLASS": "ingress.className", - "INGRESS_HOSTS": "ingress.hosts[0].host=%VALUE%,properties.baseUrl=https://%VALUE%/", - "INGRESS_TLS_HOSTS": "ingress.tls[0].hosts[0]=%VALUE%" - } - } - ] - }, - "appConfigurationSpec": { - "configFileRepositoryRequired": false, - "configUpdateEnabled": false, - "termsAcceptanceRequired": false, - "templates": [] - } - } -} diff --git a/src/test/shell/data/apps/comments/app1-comment1-sub1.json b/src/test/shell/data/apps/comments/app1-comment1-sub1.json index 1d594d0bd2c36ba1ede5d801e89e3dc3adef3dcc..2a774668987ec753a0f3f329e4253893acc540ec 100644 --- a/src/test/shell/data/apps/comments/app1-comment1-sub1.json +++ b/src/test/shell/data/apps/comments/app1-comment1-sub1.json @@ -1,4 +1,4 @@ { - "parentId":1, - "comment":"This is first sub comment. Enjoy!" + "parentId": 1, + "comment": "This is first sub comment. Enjoy!" } \ No newline at end of file diff --git a/src/test/shell/data/apps/comments/app1-comment1.json b/src/test/shell/data/apps/comments/app1-comment1.json index 9ef77f4beaa2568c45df470e38973d0b78a4570a..f24c8bc50a438e4955b7280cfd7882c966d61ca1 100644 --- a/src/test/shell/data/apps/comments/app1-comment1.json +++ b/src/test/shell/data/apps/comments/app1-comment1.json @@ -1,3 +1,3 @@ { - "comment":"This is first root comment. Enjoy!" + "comment": "This is first root comment. Enjoy!" } \ No newline at end of file diff --git a/src/test/shell/data/apps/comments/app1-comment2.json b/src/test/shell/data/apps/comments/app1-comment2.json index b565c4b2b5167a1baafa1ee17d3946359e75e999..fe6ec227436c3bc2900e34ecaa2a8278c9b8bc30 100644 --- a/src/test/shell/data/apps/comments/app1-comment2.json +++ b/src/test/shell/data/apps/comments/app1-comment2.json @@ -1,3 +1,3 @@ { - "comment":"This is second comment. Have fun!" + "comment": "This is second comment. Have fun!" } \ No newline at end of file diff --git a/src/test/shell/data/apps/images/logo/adminer.png b/src/test/shell/data/apps/images/logo/adminer.png deleted file mode 100644 index 33f97db2b97842be9edc7d091a5697738571dc4b..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/logo/adminer.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/logo/bastion.png b/src/test/shell/data/apps/images/logo/bastion.png deleted file mode 100644 index eb87cb0f2d264e248f9bdb3d4a6c80ef23bef416..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/logo/bastion.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/logo/bastion.svg b/src/test/shell/data/apps/images/logo/bastion.svg deleted file mode 100644 index eb08c11bfcb2e935feb8f7ecebb3f29da54b496d..0000000000000000000000000000000000000000 --- a/src/test/shell/data/apps/images/logo/bastion.svg +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="circle_of_friends__x5F__white_x26_orange" - xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="400" - height="400" viewBox="95 100 225 225" enable-background="new 0 0 425.197 425.197" xml:space="preserve"> -<g> - <path fill="#FFFFFF" d="M354.331,212.595c0,78.279-63.45,141.735-141.729,141.735c-78.279,0-141.735-63.456-141.735-141.735 - c0-78.274,63.457-141.728,141.735-141.728C290.881,70.867,354.331,134.32,354.331,212.595z"/> - <path fill="#E95420" d="M139.043,212.595c0,10.064-8.159,18.225-18.23,18.225c-10.059,0-18.218-8.16-18.218-18.225 - c0-10.06,8.159-18.219,18.218-18.219C130.884,194.376,139.043,202.535,139.043,212.595z M242.717,301.201 - c5.033,8.709,16.173,11.696,24.889,6.67c8.715-5.033,11.701-16.179,6.669-24.895c-5.032-8.715-16.173-11.695-24.888-6.663 - C240.671,281.346,237.685,292.486,242.717,301.201z M274.274,142.219c5.032-8.717,2.052-19.86-6.669-24.887 - c-8.71-5.032-19.855-2.046-24.889,6.667c-5.032,8.715-2.046,19.857,6.67,24.889C258.102,153.92,269.248,150.934,274.274,142.219z - M212.602,160.632c27.153,0,49.434,20.814,51.761,47.364l26.372-0.416c-1.252-19.727-9.809-37.469-22.995-50.551 - c-6.98,2.693-15.079,2.327-22.066-1.71c-6.992-4.037-11.359-10.871-12.514-18.275c-6.554-1.78-13.448-2.733-20.558-2.733 - c-12.471,0-24.259,2.916-34.727,8.103l12.832,23.043C197.357,162.367,204.784,160.632,212.602,160.632z M160.633,212.595 - c0-17.577,8.734-33.121,22.097-42.52l-13.54-22.634c-15.684,10.474-27.367,26.451-32.296,45.183 - c5.833,4.697,9.57,11.897,9.57,19.972c0,8.08-3.738,15.28-9.57,19.978c4.929,18.731,16.612,34.708,32.296,45.188l13.54-22.634 - C169.367,245.722,160.633,230.184,160.633,212.595z M212.602,264.568c-7.817,0-15.244-1.734-21.895-4.83l-12.832,23.043 - c10.468,5.191,22.255,8.104,34.727,8.104c7.109,0,14.004-0.946,20.558-2.729c1.154-7.409,5.521-14.243,12.514-18.273 - c6.987-4.037,15.086-4.404,22.066-1.711c13.187-13.088,21.743-30.83,22.995-50.557l-26.372-0.409 - C262.035,243.749,239.755,264.568,212.602,264.568z"/> -</g> -</svg> diff --git a/src/test/shell/data/apps/images/logo/changedetectionio.svg b/src/test/shell/data/apps/images/logo/changedetectionio.svg deleted file mode 100644 index f8f6c4a1f2d5500edb5576493166cd4f7d4a8e1c..0000000000000000000000000000000000000000 --- a/src/test/shell/data/apps/images/logo/changedetectionio.svg +++ /dev/null @@ -1,123 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - width="517.45074mm" - height="61.649239mm" - version="1.1" - viewBox="0 0 517.45073 61.649238" - xml:space="preserve" - id="svg12487" - sodipodi:docname="logo-2.svg" - inkscape:version="1.2.2 (1:1.2.2+202212051550+b0a8486541)" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns="http://www.w3.org/2000/svg" - xmlns:svg="http://www.w3.org/2000/svg"><defs - id="defs12491" /><sodipodi:namedview - id="namedview12489" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:showpageshadow="2" - inkscape:pageopacity="0.0" - inkscape:pagecheckerboard="0" - inkscape:deskcolor="#d1d1d1" - inkscape:document-units="mm" - showgrid="false" - inkscape:zoom="0.33832073" - inkscape:cx="580.80982" - inkscape:cy="316.26794" - inkscape:window-width="1920" - inkscape:window-height="1051" - inkscape:window-x="1920" - inkscape:window-y="0" - inkscape:window-maximized="1" - inkscape:current-layer="g12569" /><g - id="g12598" - transform="translate(66.269168,-15.463195)" - style="fill:#3056d3;fill-opacity:1"><g - transform="matrix(2.3422586,0,0,2.3422586,-28.876024,-51.093426)" - id="g12485" - style="fill:#3056d3;fill-opacity:1"><g - fill="#fefefe" - stroke-width="0.26458" - aria-label="CHANGEDETECTION.IO" - id="g12483" - style="fill:#3056d3;fill-opacity:1"><path - d="m 28.95,36.346 v 1.7611 q -0.84336,-0.78548 -1.8025,-1.1741 -0.95084,-0.38861 -2.0257,-0.38861 -2.1167,0 -3.2411,1.2981 -1.1245,1.2898 -1.1245,3.7372 0,2.4391 1.1245,3.7372 1.1245,1.2898 3.2411,1.2898 1.0749,0 2.0257,-0.38861 0.95911,-0.38861 1.8025,-1.1741 v 1.7446 q -0.87643,0.59531 -1.8603,0.89297 -0.97565,0.29766 -2.0671,0.29766 -2.8029,0 -4.4152,-1.7115 -1.6123,-1.7198 -1.6123,-4.6881 0,-2.9766 1.6123,-4.6881 1.6123,-1.7198 4.4152,-1.7198 1.1079,0 2.0836,0.29766 0.98392,0.28939 1.8438,0.87643 z" - id="path12447" - style="fill:#3056d3;fill-opacity:1" /><path - d="m 30.585,35.395 h 1.6702 v 5.0601 h 6.0689 V 35.395 h 1.6702 V 47.739 H 38.3241 V 41.8603 H 32.2552 V 47.739 H 30.585 Z" - id="path12449" - style="fill:#3056d3;fill-opacity:1" /><path - d="m 46.499,37.041 -2.2655,6.1433 h 4.5392 z m -0.94258,-1.6454 h 1.8934 l 4.7046,12.344 h -1.7363 l -1.1245,-3.1667 h -5.5645 l -1.1245,3.1667 h -1.7611 z" - id="path12451" - style="fill:#3056d3;fill-opacity:1" /><path - d="m 53.013,35.395 h 2.249 l 5.4736,10.327 V 35.395 h 1.6206 v 12.344 h -2.249 L 54.6336,37.412 V 47.739 H 53.013 Z" - id="path12453" - style="fill:#3056d3;fill-opacity:1" /><path - d="m 73.152,45.979 v -3.3156 h -2.7285 v -1.3725 h 4.3822 v 5.2999 q -0.96738,0.68626 -2.1332,1.0418 -1.1658,0.34726 -2.4887,0.34726 -2.8939,0 -4.531,-1.6867 -1.6288,-1.695 -1.6288,-4.7129 0,-3.0262 1.6288,-4.7129 1.6371,-1.695 4.531,-1.695 1.2072,0 2.2903,0.29766 1.0914,0.29766 2.0092,0.87643 v 1.7777 q -0.92604,-0.78548 -1.9678,-1.1824 -1.0418,-0.39687 -2.1911,-0.39687 -2.2655,0 -3.4065,1.265 -1.1327,1.265 -1.1327,3.7703 0,2.497 1.1327,3.762 1.141,1.265 3.4065,1.265 0.8847,0 1.5792,-0.14883 0.69453,-0.1571 1.2485,-0.47956 z" - id="path12455" - style="fill:#3056d3;fill-opacity:1" /><path - d="m 76.912,35.395 h 7.8052 v 1.4056 h -6.135 v 3.6546 h 5.8787 v 1.4056 h -5.8787 v 4.4731 h 6.2838 v 1.4056 h -7.954 z" - id="path12457" - style="fill:#3056d3;fill-opacity:1" /><path - d="m 89.742,37.801 v 7.5323 h 1.141 q 1.9513,0 2.9766,-0.96738 1.0335,-0.96738 1.0335,-2.8112 0,-1.8355 -1.0253,-2.7947 -1.0253,-0.95911 -2.9848,-0.95911 z m -3.1833,-2.406 h 3.3569 q 2.8112,0 4.1837,0.40514 1.3808,0.39688 2.3647,1.356 0.86816,0.83509 1.2898,1.9265 0.42168,1.0914 0.42168,2.4722 0,1.3973 -0.42168,2.497 -0.42168,1.0914 -1.2898,1.9265 -0.99218,0.95911 -2.3812,1.3643 -1.3891,0.39687 -4.1672,0.39687 h -3.3569 z" - id="path12459" - style="fill:#3056d3;fill-opacity:1" /><path - d="m 99.671,35.395 h 8.5907 v 2.406 h -5.4074 v 2.2986 h 5.085 v 2.406 h -5.085 v 2.8277 h 5.5893 v 2.406 H 99.671 Z" - id="path12461" - style="fill:#3056d3;fill-opacity:1" /><path - d="m 108.82,35.395 h 11.377 v 2.406 h -4.0928 v 9.9384 h -3.1833 V 37.801 h -4.101 z" - id="path12463" - style="fill:#3056d3;fill-opacity:1" /><path - d="m 120.9,35.395 h 8.5907 v 2.406 h -5.4074 v 2.2986 h 5.085 v 2.406 h -5.085 v 2.8277 h 5.5893 v 2.406 H 120.9 Z" - id="path12465" - style="fill:#3056d3;fill-opacity:1" /><path - d="m 141.31,47.062 q -0.87643,0.45475 -1.8273,0.68626 -0.95084,0.23151 -1.9844,0.23151 -3.084,0 -4.8865,-1.7198 -1.8025,-1.7281 -1.8025,-4.6798 0,-2.96 1.8025,-4.6798 1.8025,-1.7281 4.8865,-1.7281 1.0335,0 1.9844,0.23151 0.95085,0.23151 1.8273,0.68626 v 2.5549 q -0.8847,-0.60358 -1.7446,-0.8847 -0.85989,-0.28112 -1.8107,-0.28112 -1.7032,0 -2.6789,1.0914 -0.9757,1.0914 -0.97565,3.0096 0,1.91 0.97565,3.0014 0.97565,1.0914 2.6789,1.0914 0.95085,0 1.8107,-0.28112 0.8599,-0.28112 1.7446,-0.8847 z" - id="path12467" - style="fill:#3056d3;fill-opacity:1" /><path - d="m 141.53,35.395 h 11.377 v 2.406 h -4.0928 v 9.9384 h -3.1833 V 37.801 h -4.101 z" - id="path12469" - style="fill:#3056d3;fill-opacity:1" /><path - d="m 153.61,35.395 h 3.1833 V 47.739 H 153.61 Z" - id="path12471" - style="fill:#3056d3;fill-opacity:1" /><path - d="m 164.61,37.479 q -1.4552,0 -2.2572,1.0749 -0.80201,1.0749 -0.80201,3.0262 0,1.943 0.80201,3.0179 0.80202,1.0749 2.2572,1.0749 1.4635,0 2.2655,-1.0749 0.80201,-1.0749 0.80201,-3.0179 0,-1.9513 -0.80201,-3.0262 -0.80202,-1.0749 -2.2655,-1.0749 z m 0,-2.3068 q 2.9766,0 4.6633,1.7033 1.6867,1.7033 1.6867,4.7046 0,2.9931 -1.6867,4.6963 -1.6867,1.7033 -4.6633,1.7033 -2.9683,0 -4.6633,-1.7033 -1.6867,-1.7033 -1.6867,-4.6963 0,-3.0014 1.6867,-4.7046 1.695,-1.7033 4.6633,-1.7033 z" - id="path12473" - style="fill:#3056d3;fill-opacity:1" /><path - d="m 172.42,35.395 h 3.5553 l 4.4896,8.4666 V 35.395 h 3.0179 v 12.344 h -3.5553 l -4.4896,-8.4666 V 47.739 H 172.42 Z" - id="path12475" - style="fill:#3056d3;fill-opacity:1" /><path - d="m 185.9,45.64 h 1.7446 v 2.1001 H 185.9 Z" - id="path12477" - style="fill:#3056d3;fill-opacity:1" /><path - d="m 190.19,35.395 h 1.6702 V 47.739 H 190.19 Z" - id="path12479" - style="fill:#3056d3;fill-opacity:1" /><path - d="m 199.25,36.528 q -1.819,0 -2.8939,1.356 -1.0666,1.356 -1.0666,3.6959 0,2.3316 1.0666,3.6876 1.0749,1.356 2.8939,1.356 1.819,0 2.8773,-1.356 1.0666,-1.356 1.0666,-3.6876 0,-2.3399 -1.0666,-3.6959 -1.0583,-1.356 -2.8773,-1.356 z m 0,-1.356 q 2.5962,0 4.1506,1.7446 1.5544,1.7363 1.5544,4.6633 0,2.9187 -1.5544,4.6633 -1.5544,1.7363 -4.1506,1.7363 -2.6045,0 -4.1672,-1.7363 -1.5544,-1.7363 -1.5544,-4.6633 0,-2.9269 1.5544,-4.6633 1.5627,-1.7446 4.1672,-1.7446 z" - id="path12481" - style="fill:#3056d3;fill-opacity:1" /></g></g><g - id="g12569" - transform="matrix(1.4230075,0,0,1.4230075,101.16082,69.230268)" - style="fill:#3056d3;fill-opacity:1"><g - id="g17173" - transform="matrix(0.822901,0,0,0.822901,-23.378457,-2.3935111)"><path - id="circle11598" - style="fill:#3056d3;fill-opacity:1;stroke:none;stroke-width:1.96056px;stroke-miterlimit:10" - d="M -88.24778,-43.007117 A 26.323395,26.323395 0 0 0 -114.57124,-16.68366 26.323395,26.323395 0 0 0 -88.24778,9.6397984 26.323395,26.323395 0 0 0 -61.924322,-16.68366 26.323395,26.323395 0 0 0 -88.24778,-43.007117 Z m 0,2.841687 a 23.482013,23.482013 0 0 1 23.482288,23.48177 23.482013,23.482013 0 0 1 -23.482288,23.4822885 23.482013,23.482013 0 0 1 -23.48177,-23.4822885 23.482013,23.482013 0 0 1 23.48177,-23.48177 z" /><g - id="g12229" - transform="matrix(0.26458333,0,0,0.26458333,-115.65284,-44.085232)" - style="fill:#3056d3;fill-opacity:1;stroke:none;stroke-width:1.00132;stroke-dasharray:none"><path - d="m 33.02,64.43 c 0.35,-0.05 2.04,-0.13 2.04,-0.13 h 25.53 c 0,0 3.17,0.32 3.67,0.53 2.5,1.05 3.98,1.89 6.04,3.57 0.72,0.58 4.12,4.01 4.12,4.01 l 51.67,57.39 c 0,0 1.61,1.65 1.97,1.94 1.2,0.97 2.48,1.96 3.98,2.32 0.5,0.12 2.72,0.21 2.72,0.21 h 27.32 l -8.83,-9.04 c 0,0 -1.31,-1.65 -1.44,-1.94 -0.45,-0.93 -0.59,-2.59 -0.13,-3.51 0.35,-0.69 1.46,-1.87 2.23,-1.98 1.03,-0.14 2.12,-0.39 3.02,0.14 0.33,0.2 1.64,1.32 1.64,1.32 l 17.49,17.49 c 0,0 1.35,1.09 1.6,1.6 0.17,0.34 0.29,0.82 0.15,1.18 -0.17,0.42 -1.42,1.63 -1.42,1.63 l -0.94,0.98 -15.69,16.37 c 0,0 -1.44,1.4 -1.79,1.67 -0.76,0.6 -1.99,0.89 -2.96,0.9 -1.03,0 -2.62,-1.11 -3.26,-1.91 -0.6,-0.76 -1.1,-2.22 -0.77,-3.13 0.16,-0.45 1.28,-1.85 1.28,-1.85 l 11.36,-11.3 -29.47,-0.02 -1.68,0.09 c 0,0 -4.16,-0.66 -5.26,-1.03 -1.63,-0.56 -3.44,-1.82 -4.75,-2.93 -0.39,-0.33 -1.8,-1.92 -1.8,-1.92 L 68.96,77.8 c 0,0 -2,-2.06 -2.43,-2.43 -1.37,-1.17 -2,-1.62 -3.76,-2.34 -0.44,-0.18 -3.45,-0.55 -3.45,-0.55 L 35.19,72.26 c 0,0 -2.23,-0.15 -2.61,-0.22 -1.08,-0.21 -2.16,-1.07 -2.81,-1.83 -0.79,-0.92 -0.59,-3.06 0.06,-4.09 0.57,-0.89 2.14,-1.52 3.19,-1.66 z" - style="fill:#3056d3;fill-opacity:1;stroke:none;stroke-width:1.00132;stroke-miterlimit:10;stroke-dasharray:none" - id="path11600" /><g - id="g11606" - style="fill:#3056d3;fill-opacity:1;stroke:none;stroke-width:1.00132;stroke-dasharray:none"><path - d="m 86.1,109.7 -17.13,19.65 c 0,0 -2,2.06 -2.43,2.43 -1.37,1.17 -2,1.62 -3.76,2.34 -0.44,0.18 -3.45,0.55 -3.45,0.55 l -24.13,0.22 c 0,0 -2.23,0.15 -2.61,0.22 -1.08,0.21 -2.16,1.07 -2.81,1.83 -0.79,0.92 -0.59,3.06 0.06,4.09 0.57,0.89 2.14,1.52 3.19,1.66 0.35,0.05 2.04,0.13 2.04,0.13 H 60.6 c 0,0 3.17,-0.32 3.67,-0.53 2.5,-1.05 3.98,-1.89 6.04,-3.57 0.72,-0.58 4.12,-4.01 4.12,-4.01 l 17.38,-19.3 z" - style="fill:#3056d3;fill-opacity:1;stroke:none;stroke-width:1.00132;stroke-miterlimit:10;stroke-dasharray:none" - id="path11602" /><path - d="m 177.81,67.6 c -0.17,-0.42 -1.42,-1.63 -1.42,-1.63 l -0.94,-0.98 -15.69,-16.37 c 0,0 -1.44,-1.4 -1.79,-1.67 -0.76,-0.6 -1.99,-0.89 -2.96,-0.9 -1.03,0 -2.62,1.11 -3.26,1.91 -0.6,0.76 -1.1,2.22 -0.77,3.13 0.16,0.45 1.28,1.85 1.28,1.85 l 11.36,11.3 -29.47,0.02 -1.68,-0.09 c 0,0 -4.16,0.66 -5.26,1.03 -1.63,0.56 -3.44,1.82 -4.75,2.93 -0.39,0.33 -1.8,1.92 -1.8,1.92 l -18.91,21.69 5.98,5.98 18.38,-20.41 c 0,0 1.61,-1.65 1.97,-1.94 1.2,-0.97 2.48,-1.96 3.98,-2.32 0.5,-0.12 2.72,-0.21 2.72,-0.21 h 27.32 l -8.83,9.04 c 0,0 -1.31,1.65 -1.44,1.94 -0.45,0.93 -0.59,2.59 -0.13,3.51 0.35,0.69 1.46,1.87 2.23,1.98 1.03,0.14 2.12,0.39 3.02,-0.14 0.33,-0.2 1.64,-1.32 1.64,-1.32 l 17.49,-17.49 c 0,0 1.35,-1.09 1.6,-1.6 0.17,-0.34 0.29,-0.82 0.15,-1.18 z" - style="fill:#3056d3;fill-opacity:1;stroke:none;stroke-width:1.00132;stroke-miterlimit:10;stroke-dasharray:none" - id="path11604" /></g></g></g></g></g></svg> diff --git a/src/test/shell/data/apps/images/logo/codimd.png b/src/test/shell/data/apps/images/logo/codimd.png deleted file mode 100644 index eebdcf78495b91997fe1b86eda124cb8abe6f8f0..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/logo/codimd.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/logo/ctfd.png b/src/test/shell/data/apps/images/logo/ctfd.png deleted file mode 100644 index d666cd2c1be3f7960eb7517069d0257ddd9d7c16..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/logo/ctfd.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/logo/debian.png b/src/test/shell/data/apps/images/logo/debian.png deleted file mode 100644 index 33bc1b4c3b4aed575e364c5340a460aa8a26d768..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/logo/debian.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/logo/debian.svg b/src/test/shell/data/apps/images/logo/debian.svg deleted file mode 100644 index 8003316041728dc8f716a4eac41c1918606049e2..0000000000000000000000000000000000000000 --- a/src/test/shell/data/apps/images/logo/debian.svg +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" viewBox="-60 -75 210 260"> - <g fill="#D70751"> - <path d="M64.525,62.053c-4.125,0.058,0.78,2.125,6.165,2.954,1.488-1.161,2.838-2.336,4.04-3.479-3.354,0.821-6.765,0.838-10.205,0.525"/> - <path d="M86.665,56.533c2.457-3.389,4.246-7.102,4.878-10.939-0.551,2.736-2.035,5.099-3.435,7.592-7.711,4.854-0.726-2.883-0.004-5.824-8.29,10.436-1.138,6.257-1.439,9.171"/> - <path d="M94.839,35.268c0.497-7.428-1.462-5.08-2.121-2.245,0.766,0.4,1.377,5.237,2.121,2.245"/> - <path d="M48.883-66.264c2.201,0.395,4.757,0.698,4.398,1.224,2.407-0.528,2.954-1.015-4.398-1.224"/> - <path d="M53.281-65.04l-1.556,0.32,1.448-0.127,0.108-0.193"/> - <path d="M121.93,38.085c0.247,6.671-1.95,9.907-3.932,15.637l-3.564,1.781c-2.919,5.666,0.282,3.598-1.807,8.105-4.556,4.049-13.823,12.67-16.789,13.457-2.163-0.047,1.469-2.554,1.943-3.537-6.097,4.188-4.894,6.285-14.217,8.83l-0.273-0.607c-23.001,10.818-54.947-10.622-54.526-39.876-0.246,1.857-0.698,1.393-1.208,2.144-1.186-15.052,6.952-30.17,20.675-36.343,13.427-6.646,29.163-3.918,38.78,5.044-5.282-6.92-15.795-14.254-28.255-13.568-12.208,0.193-23.625,7.95-27.436,16.369-6.253,3.938-6.979,15.177-9.704,17.233-3.665,26.943,6.896,38.583,24.762,52.275,2.812,1.896,0.792,2.184,1.173,3.627-5.936-2.779-11.372-6.976-15.841-12.114,2.372,3.473,4.931,6.847,8.239,9.499-5.596-1.897-13.074-13.563-15.256-14.038,9.647,17.274,39.142,30.295,54.587,23.836-7.146,0.263-16.226,0.146-24.256-2.822-3.371-1.734-7.958-5.331-7.14-6.003,21.079,7.875,42.854,5.965,61.09-8.655,4.641-3.614,9.709-9.761,11.173-9.846-2.206,3.317,0.377,1.596-1.318,4.523,4.625-7.456-2.008-3.035,4.779-12.877l2.507,3.453c-0.931-6.188,7.687-13.704,6.813-23.492,1.975-2.994,2.206,3.22,0.107,10.107,2.912-7.64,0.767-8.867,1.516-15.171,0.81,2.118,1.867,4.37,2.412,6.606-1.895-7.382,1.948-12.433,2.898-16.724-0.937-0.415-2.928,3.264-3.383-5.457,0.065-3.788,1.054-1.985,1.435-2.917-0.744-0.427-2.694-3.33-3.88-8.9,0.86-1.308,2.3,3.393,3.47,3.586-0.753-4.429-2.049-7.805-2.103-11.202-3.421-7.149-1.211,0.953-3.985-3.069-3.641-11.357,3.021-2.637,3.47-7.796,5.52,7.995,8.667,20.387,10.11,25.519-1.103-6.258-2.883-12.32-5.058-18.185,1.677,0.705-2.699-12.875,2.18-3.882-5.21-19.172-22.302-37.087-38.025-45.493,1.924,1.76,4.354,3.971,3.481,4.317-7.819-4.656-6.444-5.018-7.565-6.985-6.369-2.591-6.788,0.208-11.007,0.004-12.005-6.368-14.318-5.69-25.368-9.681l0.502,2.349c-7.953-2.649-9.265,1.005-17.862,0.009-0.523-0.409,2.753-1.479,5.452-1.871-7.69,1.015-7.329-1.515-14.854,0.279,1.855-1.301,3.815-2.162,5.793-3.269-6.271,0.381-14.971,3.649-12.286,0.677-10.235,4.569-28.403,10.976-38.597,20.535l-0.321-2.142c-4.672,5.608-20.371,16.748-21.622,24.011l-1.249,0.291c-2.431,4.116-4.004,8.781-5.932,13.016-3.18,5.417-4.661,2.085-4.208,2.934-6.253,12.679-9.359,23.332-12.043,32.069,1.912,2.858,0.046,17.206,0.769,28.688-3.141,56.709,39.8,111.77,86.737,124.48,6.88,2.459,17.11,2.364,25.813,2.618-10.268-2.937-11.595-1.556-21.595-5.044-7.215-3.398-8.797-7.277-13.907-11.711l2.022,3.573c-10.021-3.547-5.829-4.39-13.982-6.972l2.16-2.82c-3.249-0.246-8.604-5.475-10.069-8.371l-3.553,0.14c-4.27-5.269-6.545-9.063-6.379-12.005l-1.148,2.047c-1.301-2.235-15.709-19.759-8.234-15.679-1.389-1.271-3.235-2.067-5.237-5.703l1.522-1.739c-3.597-4.627-6.621-10.562-6.391-12.536,1.919,2.592,3.25,3.075,4.568,3.52-9.083-22.539-9.593-1.242-16.474-22.942l1.456-0.116c-1.116-1.682-1.793-3.506-2.69-5.298l0.633-6.313c-6.541-7.562-1.829-32.151-0.887-45.637,0.655-5.485,5.459-11.322,9.114-20.477l-2.227-0.384c4.256-7.423,24.301-29.814,33.583-28.662,4.499-5.649-0.892-0.02-1.772-1.443,9.878-10.223,12.984-7.222,19.65-9.061,7.19-4.268-6.17,1.664-2.761-1.628,12.427-3.174,8.808-7.216,25.021-8.828,1.71,0.973-3.969,1.503-5.395,2.766,10.354-5.066,32.769-3.914,47.326,2.811,16.895,7.896,35.873,31.232,36.622,53.189l0.852,0.229c-0.431,8.729,1.336,18.822-1.727,28.094l2.1-4.385"/> - <path d="M19.5,67.715l-0.578,2.893c2.71,3.683,4.861,7.673,8.323,10.552-2.49-4.863-4.341-6.872-7.745-13.445"/> - <path d="M25.909,67.464c-1.435-1.587-2.284-3.497-3.235-5.4,0.909,3.345,2.771,6.219,4.504,9.143l-1.269-3.743"/> - <path d="M139.32,42.814l-0.605,1.52c-1.111,7.892-3.511,15.701-7.189,22.941,4.06-7.639,6.69-15.995,7.79-24.461"/> - <path d="M49.698-68.243c2.789-1.022,6.855-0.56,9.814-1.233-3.855,0.324-7.693,0.517-11.484,1.005l1.67,0.228"/> - <path d="M-48.219-16.176c0.642,5.951-4.477,8.26,1.134,4.337,3.007-6.773-1.175-1.87-1.134-4.337"/> - <path d="M-54.812,11.362c1.292-3.967,1.526-6.349,2.02-8.645-3.571,4.566-1.643,5.539-2.02,8.645"/> - </g> -</svg> \ No newline at end of file diff --git a/src/test/shell/data/apps/images/logo/elk.svg b/src/test/shell/data/apps/images/logo/elk.svg deleted file mode 100644 index f6dd3aa91930095af91cac7f0ad202c447454e6d..0000000000000000000000000000000000000000 --- a/src/test/shell/data/apps/images/logo/elk.svg +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="522px" height="185px" viewBox="0 0 522 185" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: Sketch 3.6 (26304) - http://www.bohemiancoding.com/sketch --> - <title>Slice 1</title> - <desc>Created with Sketch.</desc> - <defs></defs> - <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> - <g id="Group-2"> - <g id="Group" transform="translate(188.000000, 0.000000)"> - <path d="M86,99 L0,99 L0,0 L26,0 C59.1,0 86,26.9 86,60 L86,99 L86,99 Z" id="Shape" fill="#F2BD1A"></path> - <path d="M86,185 L86,185 C38.5,185 0,146.5 0,99 L0,99 L86,99 L86,185 L86,185 Z" id="Shape" fill="#231F20"></path> - <rect id="Rectangle-path" fill="#40BEB0" x="86" y="99" width="78.4" height="86"></rect> - <rect id="Rectangle-path" fill="#37A595" x="86" y="99" width="18" height="86"></rect> - </g> - <g id="Group" transform="translate(380.000000, 0.000000)"> - <path d="M2.7,69.1 C27.2,69.1 50.3,75.4 70.4,86.3 L142,0 L0,0 L0,171.1 L0,171.1 L0,69.1 L2.7,69.1 L2.7,69.1 Z" id="Shape" fill="#E8478B"></path> - <path d="M70.4,86.3 L0,171.1 L0,184.6 L141.9,184.6 C133.9,142.1 107.1,106.3 70.4,86.3 L70.4,86.3 Z" id="Shape" fill="#40BEB0"></path> - <path d="M70.4,86.3 L0,171.1 L0,184.6 L25.3,184.6 L93.6,102.2 C93.6,102.2 89.1,98.4 82.6,93.9 C77.7,90.3 70.4,86.3 70.4,86.3 L70.4,86.3 Z" id="Shape" fill="#37A595"></path> - <path d="M2.7,69.1 C1.8,69.1 0.9,69.2 0,69.2 L0,171.1 L70.4,86.4 C50.3,75.3 27.2,69.1 2.7,69.1 L2.7,69.1 Z" id="Shape" fill="#231F20"></path> - </g> - <g id="Group"> - <path d="M10.2141785,52 L133,52 C146.546091,52 158.693793,45.847089 166.792688,36.1916865 C149.883268,14.1847835 123.298151,0 93.4,0 C56.8388008,0 25.2318532,21.2116727 10.2141817,51.9999935 Z" id="Combined-Shape" fill="#EFBF1B"></path> - <path d="M10.1654761,132.9 L133.5,132.9 C146.952464,132.9 158.995156,138.937503 167.066167,148.4506 C150.170706,170.661384 123.459835,185 93.4,185 C56.7992306,185 25.1634426,163.742388 10.1654792,132.900006 Z" id="Combined-Shape" fill="#40BEB0"></path> - <path d="M4.60412555,118.5 L122.5,118.5 C136.8,118.5 148.5,106.9 148.5,92.5 C148.5,78.2 136.9,66.5 122.5,66.5 L4.60412555,66.5 C2.19308303,74.7479019 0.9,83.4729431 0.9,92.5 C0.9,101.527057 2.19308303,110.252098 4.60412555,118.5 Z" id="Combined-Shape" fill="#0AA5DE"></path> - <path d="M4.60412555,66.5 L81.8,66.5 C83.8,74.3 85,82.9 85,92.5 C85,102 83.9,110.7 82,118.5 L4.60412555,118.5 C2.19308303,110.252098 0.9,101.527057 0.9,92.5 C0.9,83.4729431 2.19308303,74.7479019 4.60412555,66.5 Z" id="Combined-Shape" fill="#231F20"></path> - <path d="M46.9,12.5 C31.1,21.7 18.3,35.4 10.2,51.9 L78.5,51.9 C71.4,36.3 60.5,22.7 46.9,12.5 L46.9,12.5 Z" id="Shape" fill="#D7A229"></path> - <path d="M49.6,173.9 C62.9,163.1 73.5,149.1 80.1,133 L10.2,133 C18.7,150.4 32.6,164.8 49.6,173.9 L49.6,173.9 Z" id="Shape" fill="#009B8F"></path> - </g> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/test/shell/data/apps/images/logo/geant.png b/src/test/shell/data/apps/images/logo/geant.png deleted file mode 100644 index 0bf4e52cd826a686f55c647627989047b7c106f8..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/logo/geant.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/logo/icinga.svg b/src/test/shell/data/apps/images/logo/icinga.svg deleted file mode 100644 index 88161d61ca75e8f7e531e21c8e33e556c34c466f..0000000000000000000000000000000000000000 --- a/src/test/shell/data/apps/images/logo/icinga.svg +++ /dev/null @@ -1,87 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<!-- Created with Inkscape (http://www.inkscape.org/) by Marsupilami --> -<svg - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - version="1.1" - id="svg5227" - width="1024" - height="370" - viewBox="-3.1904169 -3.1904169 311.9071138 112.7280638"> - <defs - id="defs5229" /> - <path - id="path3696" - style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-opacity:1" - d="m 82.265456,54.761509 0,0 c 0,-1.3146 0.47002,-2.3465 1.31605,-3.192 0.84729,-0.9381 1.97534,-1.3134 3.19739,-1.3134 1.22205,0 2.25734,0.3753 3.10338,1.3134 0.94004,0.8455 1.41006,1.8774 1.41006,3.192 l 0,44.7785 c 0,1.220401 -0.47002,2.253001 -1.31606,3.191801 -0.84603,0.8449 -1.97533,1.3143 -3.19738,1.3143 -1.22205,0 -2.25609,-0.4694 -3.10338,-1.3143 -0.94004,-0.9388 -1.41006,-1.9714 -1.41006,-3.191801 l 0,-44.7785 z" /> - <path - id="path3716" - style="fill:#ff6600;fill-opacity:1;fill-rule:nonzero;stroke:none" - d="m 99.567176,68.280009 0,0 c 0,-2.723 0.564044,-5.3509 1.598084,-7.6986 1.03404,-2.4403 2.4441,-4.5992 4.23142,-6.3828 1.78608,-1.7836 3.85416,-3.192 6.29952,-4.2252 2.4441,-1.0318 4.98345,-1.5009 7.80357,-1.5009 1.97533,0 3.94941,0.2814 5.83075,0.8443 1.7798,0.5628 3.4844,1.4084 5.0762,2.4403 1.60433,1.0331 3.00813,2.2539 4.23644,3.7548 1.21579,1.4084 2.2561,3.0044 3.00813,4.788 0.188,0.3753 0.37601,0.7518 0.37601,1.2208 0.0877,0.3752 0.18801,0.7505 0.18801,1.127 0,1.0319 -0.37602,2.065 -1.12805,3.0031 -0.8523,0.9394 -1.88007,1.4084 -3.2964,1.4084 -1.88008,0 -3.19613,-0.9393 -4.13617,-2.723 -0.75203,-1.9712 -2.06808,-3.661 -3.94816,-4.9743 -1.78733,-1.3146 -3.85541,-1.9713 -6.20676,-1.9713 -1.50406,0 -2.91412,0.2814 -4.32418,0.8443 -1.31731,0.5628 -2.44535,1.4084 -3.47939,2.3465 -1.03405,0.9393 -1.78608,2.1601 -2.3501,3.4734 -0.56528,1.3146 -0.84729,2.723 -0.84729,4.2252 l 0,17.6486 c 0,1.5009 0.28201,2.8155 0.84729,4.2239 0.65803,1.3145 1.41006,2.4403 2.4441,3.4734 1.03404,0.9387 2.16209,1.6898 3.4794,2.253 1.31605,0.5633 2.72611,0.8448 4.23017,0.8448 2.35135,0 4.41943,-0.657 6.20676,-1.9713 1.88008,-1.3141 3.19613,-3.0039 4.04843,-4.9752 0.37602,-0.7517 1.02778,-1.4084 1.77981,-1.8774 0.75203,-0.4703 1.50406,-0.7517 2.25609,-0.7517 1.31606,0 2.4441,0.4703 3.19613,1.4084 0.75203,0.9393 1.22832,1.8774 1.22832,3.0044 0,0.6566 -0.10027,1.2207 -0.37602,1.6898 -0.66429,1.8772 -1.69206,3.567 -2.92038,5.0689 -1.21578,1.5021 -2.63211,2.816301 -4.13617,3.942901 -1.5918,1.1264 -3.38414,1.9713 -5.26422,2.5346 -1.88133,0.6571 -3.85541,0.9387 -6.01875,0.9387 -2.72611,0 -5.26547,-0.5632 -7.70957,-1.5959 -2.4441,-1.0327 -4.51344,-2.5346 -6.29951,-4.318201 -1.78733,-1.7836 -3.29139,-3.8489 -4.32543,-6.1958 -1.03404,-2.4403 -1.598084,-4.9756 -1.598084,-7.6973 l 0,-17.6486 z" /> - <path - id="path3746" - style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.2216469;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" - d="m 146.86366,54.761509 0,0 c 0,-1.3146 0.37602,-2.3465 1.31606,-3.192 0.83977,-0.9381 1.88007,-1.3134 3.09586,-1.3134 1.22831,0 2.26862,0.3753 3.20866,1.3134 0.83977,0.8455 1.31606,1.8774 1.31606,3.192 l 0,44.7785 c 0,1.220401 -0.37602,2.253001 -1.31606,3.191801 -0.8523,0.8449 -1.88007,1.3143 -3.20866,1.3143 -1.12805,0 -2.15582,-0.4694 -3.09586,-1.3143 -0.94004,-0.9388 -1.31606,-1.9714 -1.31606,-3.191801 l 0,-44.7785 0,0 z" /> - <path - id="path3756" - style="fill:#ff6600;fill-opacity:1;fill-rule:nonzero;stroke:none" - d="m 164.16037,68.280009 0,0 c 0,-2.6292 0.47629,-5.2571 1.50406,-7.6048 1.04031,-2.4403 2.4441,-4.5054 4.23645,-6.289 1.7798,-1.7836 3.94816,-3.192 6.39226,-4.2251 2.35636,-1.1257 4.98847,-1.5948 7.70831,-1.5948 2.63211,0 5.26422,0.4691 7.70832,1.5948 2.35638,1.0331 4.51218,2.4415 6.30448,4.2251 1.7798,1.7836 3.1962,3.8487 4.2239,6.289 1.1281,2.3477 1.6044,4.9756 1.6044,7.6048 l 0,31.26 c 0,1.220401 -0.376,2.253001 -1.2283,3.191801 -0.8398,0.8449 -1.8801,1.3143 -3.1962,1.3143 -1.128,0 -2.1558,-0.4694 -3.0958,-1.3143 -0.9401,-0.9388 -1.3161,-1.9714 -1.3161,-3.191801 l 0,-31.26 c 0,-1.4084 -0.2883,-2.8168 -0.8523,-4.1314 -0.564,-1.3133 -1.40377,-2.5341 -2.44408,-3.4734 -0.94004,-1.0319 -2.15582,-1.7836 -3.47188,-2.3465 -1.31605,-0.5628 -2.73238,-0.8443 -4.23644,-0.8443 -1.5918,0 -3.00812,0.2815 -4.32417,0.8443 -1.31606,0.5629 -2.44411,1.3146 -3.48441,2.3465 -0.94004,0.9393 -1.77981,2.1601 -2.34383,3.4734 -0.56403,1.3146 -0.8523,2.723 -0.8523,4.1314 l 0,31.26 c 0,1.220401 -0.37602,2.253001 -1.21579,3.191801 -0.8523,0.8449 -1.88007,1.3143 -3.19613,1.3143 -1.22832,0 -2.25609,-0.4694 -3.10839,-1.3143 -0.94004,-0.9388 -1.31606,-1.9714 -1.31606,-3.191801 l 0,-31.26 z" /> - <path - id="path3706" - style="fill:none;stroke:#000000;stroke-width:1.2216469;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" - d="m 82.264826,54.762109 0,0 c 0,-1.3146 0.47002,-2.3465 1.31606,-3.192 0.84729,-0.9381 1.97533,-1.3133 3.19738,-1.3133 1.22205,0 2.25735,0.3752 3.10338,1.3133 0.94004,0.8455 1.41006,1.8774 1.41006,3.192 l 0,44.7785 c 0,1.220401 -0.47002,2.253101 -1.31605,3.191801 -0.84604,0.8449 -1.97534,1.3143 -3.19739,1.3143 -1.22205,0 -2.25609,-0.4694 -3.10338,-1.3143 -0.94004,-0.9387 -1.41006,-1.9714 -1.41006,-3.191801 l 0,-44.7785 0,0 z" /> - <path - id="path3726" - style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.2216469;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" - d="m 99.566556,68.280609 0,0 c 0,-2.723 0.564034,-5.3509 1.598074,-7.6986 1.03404,-2.4403 2.4441,-4.5991 4.23143,-6.3828 1.78607,-1.7836 3.85416,-3.192 6.29951,-4.2251 2.4441,-1.0319 4.98346,-1.501 7.80357,-1.501 1.97534,0 3.94942,0.2815 5.83075,0.8443 1.7798,0.5629 3.48441,1.4084 5.07621,2.4403 1.60433,1.0332 3.00812,2.2539 4.23644,3.7549 1.21578,1.4084 2.25609,3.0044 3.00812,4.788 0.18801,0.3752 0.37601,0.7517 0.37601,1.2207 0.0877,0.3753 0.18801,0.7505 0.18801,1.127 0,1.0319 -0.37601,2.0651 -1.12804,3.0031 -0.85231,0.9394 -1.88008,1.4084 -3.29641,1.4084 -1.88007,0 -3.19613,-0.9393 -4.13616,-2.7229 -0.75204,-1.9713 -2.06809,-3.6611 -3.94817,-4.9744 -1.78732,-1.3146 -3.85541,-1.9713 -6.20676,-1.9713 -1.50406,0 -2.91412,0.2815 -4.32417,0.8443 -1.31731,0.5629 -2.44536,1.4084 -3.4794,2.3465 -1.03404,0.9393 -1.78607,2.1601 -2.3501,3.4734 -0.56527,1.3146 -0.84729,2.723 -0.84729,4.2252 l 0,17.6486 c 0,1.5009 0.28202,2.8155 0.84729,4.2239 0.65803,1.3146 1.41006,2.4403 2.4441,3.4734 1.03405,0.9388 2.16209,1.6899 3.4794,2.2531 1.31605,0.5632 2.72611,0.8448 4.23017,0.8448 2.35135,0 4.41944,-0.6571 6.20676,-1.9714 1.88008,-1.3141 3.19613,-3.0039 4.04844,-4.9751 0.37601,-0.7518 1.02777,-1.4084 1.7798,-1.8775 0.75203,-0.4703 1.50406,-0.7517 2.25609,-0.7517 1.31606,0 2.4441,0.4703 3.19614,1.4084 0.75203,0.9393 1.22831,1.8774 1.22831,3.0044 0,0.6567 -0.10027,1.2208 -0.37601,1.6898 -0.6643,1.8772 -1.69207,3.567 -2.92039,5.0689 -1.21578,1.5021 -2.63211,2.816301 -4.13617,3.942901 -1.5918,1.1265 -3.38414,1.9714 -5.26421,2.5346 -1.88133,0.6571 -3.85542,0.9387 -6.01876,0.9387 -2.72611,0 -5.26547,-0.5632 -7.70957,-1.5959 -2.4441,-1.0326 -4.51344,-2.5346 -6.29951,-4.318201 -1.78733,-1.7836 -3.29139,-3.8489 -4.32543,-6.1958 -1.03404,-2.4402 -1.598074,-4.9756 -1.598074,-7.6973 l 0,-17.6486 0,0 z" /> - <path - id="path3766" - style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.2216469;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" - d="m 164.15975,68.280609 0,0 c 0,-2.6292 0.47628,-5.2571 1.50406,-7.6048 1.04031,-2.4403 2.4441,-4.5053 4.23644,-6.2889 1.7798,-1.7837 3.94816,-3.192 6.39226,-4.2252 2.35636,-1.1257 4.98847,-1.5948 7.70832,-1.5948 2.63211,0 5.26422,0.4691 7.70832,1.5948 2.3564,1.0332 4.5122,2.4415 6.3045,4.2252 1.7798,1.7836 3.1961,3.8486 4.2239,6.2889 1.1281,2.3477 1.6044,4.9756 1.6044,7.6048 l 0,31.26 c 0,1.220401 -0.3761,2.253101 -1.2284,3.191801 -0.8397,0.8449 -1.88,1.3143 -3.1961,1.3143 -1.128,0 -2.1558,-0.4694 -3.0959,-1.3143 -0.94,-0.9387 -1.316,-1.9714 -1.316,-3.191801 l 0,-31.26 c 0,-1.4084 -0.2883,-2.8168 -0.8523,-4.1314 -0.564,-1.3133 -1.40379,-2.534 -2.4441,-3.4734 -0.94004,-1.0319 -2.15583,-1.7836 -3.47188,-2.3465 -1.31605,-0.5628 -2.73238,-0.8442 -4.23644,-0.8442 -1.5918,0 -3.00813,0.2814 -4.32418,0.8442 -1.31606,0.5629 -2.4441,1.3146 -3.48441,2.3465 -0.94004,0.9394 -1.77981,2.1601 -2.34383,3.4734 -0.56402,1.3146 -0.8523,2.723 -0.8523,4.1314 l 0,31.26 c 0,1.220401 -0.37602,2.253101 -1.21579,3.191801 -0.8523,0.8449 -1.88007,1.3143 -3.19613,1.3143 -1.22831,0 -2.25609,-0.4694 -3.10839,-1.3143 -0.94004,-0.9387 -1.31605,-1.9714 -1.31605,-3.191801 l 0,-31.26 0,0 z" /> - <path - id="path3776" - style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" - d="m 212.77915,68.280009 0,0 c 0,-2.6292 0.564,-5.2571 1.5918,-7.6986 1.0403,-2.3465 2.4441,-4.5054 4.2364,-6.289 1.7799,-1.7836 3.9482,-3.192 6.3923,-4.2251 2.3438,-1.0319 4.9885,-1.501 7.7083,-1.501 2.0681,0 4.0485,0.2814 5.9285,0.8443 1.8801,0.6567 3.6599,1.4084 5.2642,2.5341 1.5918,1.1269 3.0082,2.4415 4.224,3.9437 1.2283,1.5022 2.256,3.1908 3.0081,5.0695 0.1002,0.1876 0.188,0.469 0.188,0.8442 0,0.2815 0,0.5629 0,0.9394 0,1.0319 -0.376,2.065 -1.1281,3.0031 -0.752,0.9394 -1.7798,1.3146 -3.1961,1.3146 -0.8398,0 -1.5918,-0.1876 -2.3438,-0.5629 -0.7521,-0.4703 -1.3161,-1.1269 -1.6921,-1.9712 -0.8523,-2.0663 -2.2561,-3.7561 -4.0484,-5.0694 -1.7798,-1.3146 -3.8479,-1.9713 -6.2043,-1.9713 -1.5918,0 -3.0081,0.2815 -4.3242,0.8443 -1.316,0.5629 -2.4441,1.3146 -3.4844,2.3465 -0.94,0.9393 -1.692,2.1601 -2.3438,3.4734 -0.564,1.3146 -0.8523,2.723 -0.8523,4.1314 l 0,17.6486 c 0,1.5009 0.2883,2.8155 0.8523,4.2239 0.6518,1.3145 1.4038,2.4403 2.4441,3.4734 0.94,0.9387 2.1558,1.6898 3.4719,2.253 1.3286,0.5633 2.7324,0.8448 4.2364,0.8448 1.5041,0 2.9204,-0.2815 4.2365,-0.8448 1.316,-0.5632 2.5318,-1.3143 3.4718,-2.253 1.0403,-1.0331 1.7924,-2.1589 2.3564,-3.4734 0.564,-1.4084 0.8398,-2.723 0.8398,-4.2239 l 0,-2.1601 -4.4119,0 c -1.2284,0 -2.2561,-0.4691 -3.1084,-1.3134 -0.8398,-0.9393 -1.3161,-1.9712 -1.3161,-3.192 0,-1.2207 0.4763,-2.2526 1.3161,-3.0982 0.8523,-0.8443 1.88,-1.3146 3.1084,-1.3146 l 8.9241,0 c 1.2283,0 2.256,0.3765 3.1961,1.2208 0.8523,0.8455 1.2283,1.8774 1.2283,3.192 l 0,6.6655 c 0,2.7217 -0.4763,5.257 -1.5041,7.6973 -1.128,2.3469 -2.5443,4.4122 -4.3241,6.1958 -1.7924,1.783601 -3.9482,3.285501 -6.3046,4.318201 -2.4441,1.0327 -4.9759,1.5959 -7.7083,1.5959 -2.7198,0 -5.3645,-0.5632 -7.7083,-1.5959 -2.4441,-1.0327 -4.6124,-2.5346 -6.3923,-4.318201 -1.7923,-1.7836 -3.1961,-3.8489 -4.2364,-6.1958 -1.0278,-2.4403 -1.5918,-4.9756 -1.5918,-7.6973 l 0,-17.6486 z" /> - <path - id="path3806" - style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.2216469;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" - d="m 280.95075,65.557009 0,0 c -0.564,1.3146 -1.128,2.5353 -1.6043,3.7549 -0.5641,1.2207 -1.0403,2.4415 -1.6044,3.661 -0.564,1.2208 -1.128,2.4416 -1.692,3.6611 -0.4638,1.2207 -1.0278,2.5353 -1.6921,4.0375 l 13.1731,0 -6.5803,-15.1145 0,0 z m -4.0484,-12.9544 0,0 c 0.8397,-1.7836 2.2561,-2.723 4.0484,-2.723 0.2757,0 0.564,0.094 0.94,0.094 0.2758,0.094 0.5641,0.1877 0.8398,0.3765 1.1281,0.4691 1.8801,1.3134 2.3564,2.2527 l 19.3648,45.3415 c 0.2757,0.6572 0.4637,1.2204 0.4637,1.7836 0,1.032701 -0.376,1.971501 -1.2158,2.910201 -0.752,0.9388 -1.88,1.4082 -3.1961,1.4082 -2.0681,0 -3.3841,-0.8449 -4.1362,-2.6286 l -4.9884,-11.827901 -20.6809,0 c -0.8523,1.9712 -1.6921,3.9425 -2.5444,5.9139 -0.8397,1.8774 -1.692,3.8487 -2.5318,5.914001 -0.376,0.9388 -0.94,1.5959 -1.6921,2.0653 -0.6643,0.3755 -1.504,0.5633 -2.3563,0.5633 -1.4038,0 -2.4441,-0.4694 -3.1962,-1.4082 -0.8397,-0.9387 -1.2157,-1.8775 -1.2157,-2.910201 0,-0.2815 0,-0.5632 0.088,-0.9387 0,-0.2817 0.1002,-0.5632 0.2882,-0.8449 l 19.3648,-45.3415 0,0 z" /> - <path - id="path3786" - style="fill:none;stroke:#000000;stroke-width:1.2216469;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" - d="m 212.77855,68.280609 0,0 c 0,-2.6292 0.564,-5.2571 1.5918,-7.6986 1.0403,-2.3465 2.4441,-4.5053 4.2364,-6.2889 1.7798,-1.7837 3.9482,-3.1921 6.3923,-4.2252 2.3438,-1.0319 4.9884,-1.501 7.7083,-1.501 2.0681,0 4.0484,0.2815 5.9285,0.8443 1.8801,0.6567 3.6599,1.4084 5.2642,2.5341 1.5918,1.127 3.0081,2.4416 4.2239,3.9438 1.2283,1.5021 2.2561,3.1907 3.0081,5.0694 0.1003,0.1876 0.1881,0.469 0.1881,0.8443 0,0.2814 0,0.5628 0,0.9393 0,1.0319 -0.3761,2.0651 -1.1281,3.0032 -0.752,0.9393 -1.7798,1.3145 -3.1961,1.3145 -0.8398,0 -1.5918,-0.1876 -2.3438,-0.5628 -0.7521,-0.4703 -1.3161,-1.127 -1.6921,-1.9713 -0.8523,-2.0663 -2.2561,-3.7561 -4.0485,-5.0694 -1.7798,-1.3146 -3.8478,-1.9712 -6.2042,-1.9712 -1.5918,0 -3.0081,0.2814 -4.3242,0.8442 -1.316,0.5629 -2.4441,1.3146 -3.4844,2.3465 -0.94,0.9394 -1.6921,2.1601 -2.3438,3.4734 -0.564,1.3146 -0.8523,2.723 -0.8523,4.1314 l 0,17.6486 c 0,1.5009 0.2883,2.8155 0.8523,4.2239 0.6517,1.3146 1.4038,2.4403 2.4441,3.4734 0.94,0.9388 2.1558,1.6899 3.4719,2.2531 1.3285,0.5632 2.7323,0.8448 4.2364,0.8448 1.5041,0 2.9204,-0.2816 4.2364,-0.8448 1.3161,-0.5632 2.5319,-1.3143 3.4719,-2.2531 1.0403,-1.0331 1.7924,-2.1588 2.3564,-3.4734 0.564,-1.4084 0.8397,-2.723 0.8397,-4.2239 l 0,-2.1601 -4.4119,0 c -1.2283,0 -2.2561,-0.4691 -3.1084,-1.3133 -0.8397,-0.9394 -1.316,-1.9713 -1.316,-3.192 0,-1.2208 0.4763,-2.2527 1.316,-3.0982 0.8523,-0.8443 1.8801,-1.3146 3.1084,-1.3146 l 8.9241,0 c 1.2283,0 2.2561,0.3765 3.1962,1.2207 0.8523,0.8456 1.2283,1.8775 1.2283,3.1921 l 0,6.6654 c 0,2.7217 -0.4763,5.2571 -1.5041,7.6973 -1.128,2.3469 -2.5444,4.4122 -4.3242,6.1958 -1.7923,1.783601 -3.9481,3.285601 -6.3045,4.318201 -2.4441,1.0327 -4.9759,1.5959 -7.7083,1.5959 -2.7199,0 -5.3645,-0.5632 -7.7083,-1.5959 -2.4441,-1.0326 -4.6125,-2.5346 -6.3923,-4.318201 -1.7923,-1.7836 -3.1961,-3.8489 -4.2364,-6.1958 -1.0278,-2.4402 -1.5918,-4.9756 -1.5918,-7.6973 l 0,-17.6486 0,0 z" /> - <path - d="m 40.704846,40.305609 0,0 12.22301,-25.1583 m -20.21584,28.9132 0,0 -20.59136,-16.8982 m 26.61011,23.7512 0,0 14.00908,23.4685 m -14.95037,-24.5016 0,0 50.21059,-12.3916 m -50.21059,12.3916 0,0 -24.25801,34.7343" - style="fill:none;stroke:#000000;stroke-width:1.2216469;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" - id="path3906" /> - <path - d="m 26.601396,35.704509 0,0 c 7.05279,-5.7261 17.39572,-4.693 23.13121,2.3477 5.73549,7.0407 4.70145,17.3659 -2.35135,23.0933 -7.05154,5.6323 -17.39447,4.5991 -23.12996,-2.4416 -5.73549,-6.9468 -4.60744,-17.2721 2.3501,-22.9994 z m 23.13121,-33.2309002 0,0 c 3.6674,-2.91059997 9.02688,-2.34779997 12.035,1.2195 3.00938,3.661 2.44535,9.0119002 -1.22205,12.0163002 -3.6674,3.0044 -9.02688,2.4403 -12.035,-1.2208 -3.00938,-3.661 -2.44535,-9.0119002 1.22205,-12.0150002 z m 30.37077,34.6393002 0,0 c -0.28202,-3.6611 2.5381,-6.8531 6.2055,-7.1345 3.76141,-0.2815 6.95754,2.4403 7.23955,6.1026 0.28201,3.7548 -2.5381,6.9456 -6.2055,7.2283 -3.66741,0.2814 -6.95754,-2.4416 -7.23955,-6.1964 z m -72.4951504,-7.416 0,0 c -1.1283,-2.3464 -0.18801,-5.3508 2.25659,-6.4778 2.4447304,-1.2195 5.3596004,-0.1876 6.5816504,2.2539 1.22205,2.3465 0.18801,5.3509 -2.25609,6.4766 -2.44498,1.2208 -5.3598504,0.1876 -6.5821504,-2.2527 l 0,0 z m 41.7483704,44.9658 0,0 c 0.188,-1.8774 1.88007,-3.2858 3.76015,-3.0969 1.88133,0.2814 3.29139,1.9712 3.00938,3.8487 -0.18801,1.8774 -1.88008,3.192 -3.76141,3.0031 -1.88008,-0.1876 -3.29014,-1.8774 -3.00812,-3.7549 l 0,0 z m -48.7063704,11.6411 0,0 c -0.47013,-6.1026 4.04313,-11.3596 10.1548804,-11.8287 6.11138,-0.469 11.37685,4.1314 11.84687,10.1389 0.47127,6.1013 -4.04216,11.4527 -10.1543,11.922 -6.1117504,0.3755 -11.4713504,-4.1309 -11.8474504,-10.2322 z" - style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" - id="path4016" /> - <path - id="path3926" - style="fill:none;stroke:#000000;stroke-width:1.2216469;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" - d="m 0.6496356,86.304709 0,0 c -0.47014,-6.1026 4.04313,-11.3597 10.1548804,-11.8287 6.11138,-0.4691 11.37685,4.1313 11.84687,10.1389 0.47127,6.1013 -4.04217,11.4527 -10.1543,11.922 -6.1117504,0.3754 -11.4713504,-4.1309 -11.8474504,-10.2322 l 0,0 z" /> - <path - id="path3936" - style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" - d="m 49.355996,74.663609 0,0 c 0.18801,-1.8774 1.88008,-3.2858 3.76016,-3.097 1.88133,0.2815 3.29138,1.9713 3.00937,3.8487 -0.188,1.8775 -1.88007,3.192 -3.7614,3.0032 -1.88008,-0.1877 -3.29014,-1.8775 -3.00813,-3.7549 z" /> - <path - id="path3956" - style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" - d="m 7.6076356,29.697809 0,0 c -1.1283,-2.3465 -0.18801,-5.3509 2.25659,-6.4778 2.4447304,-1.2195 5.3596004,-0.1876 6.5816504,2.2539 1.22205,2.3465 0.18801,5.3509 -2.25609,6.4766 -2.44498,1.2207 -5.3598504,0.1876 -6.5821504,-2.2527 z" /> - <path - id="path3986" - style="fill:none;stroke:#000000;stroke-width:1.2216469;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" - d="m 80.102776,37.113709 0,0 c -0.28201,-3.661 2.53811,-6.853 6.20551,-7.1345 3.76141,-0.2814 6.95754,2.4403 7.23955,6.1026 0.28201,3.7549 -2.5381,6.9456 -6.20551,7.2283 -3.6674,0.2815 -6.95754,-2.4415 -7.23955,-6.1964 l 0,0 z" /> - <path - id="path4006" - style="fill:none;stroke:#000000;stroke-width:1.2216469;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" - d="m 49.732016,2.4744088 0,0 c 3.6674,-2.91049997 9.02687,-2.34769997 12.035,1.2196 3.00937,3.661 2.44535,9.0119002 -1.22205,12.0163002 -3.66741,3.0044 -9.02688,2.4403 -12.035,-1.2208 -3.00938,-3.6611 -2.44536,-9.0119002 1.22205,-12.0151002 l 0,0 z" /> - <path - id="path4026" - style="fill:none;stroke:#000000;stroke-width:1.2216469;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" - d="m 26.600796,35.705309 0,0 c 7.0528,-5.7261 17.39573,-4.6929 23.13122,2.3478 5.73549,7.0406 4.70144,17.3659 -2.35135,23.0932 -7.05154,5.6323 -17.39448,4.5992 -23.12996,-2.4415 -5.73549,-6.9469 -4.60745,-17.2721 2.35009,-22.9995 l 0,0 z" /> -</svg> -<!-- version: 20171223, original size: 305.52628 106.34723, border: 3% --> diff --git a/src/test/shell/data/apps/images/logo/influxdb.png b/src/test/shell/data/apps/images/logo/influxdb.png deleted file mode 100644 index 092d14ab40d3d5dd4d831d6f819ede887babcfab..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/logo/influxdb.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/logo/jenkins.png b/src/test/shell/data/apps/images/logo/jenkins.png deleted file mode 100644 index 40687290be0443c48f432bdeaa279ea0b9b49d3d..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/logo/jenkins.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/logo/jenkins.svg b/src/test/shell/data/apps/images/logo/jenkins.svg deleted file mode 100644 index 4a4538daf6f45f39ceefcbb00a8a3c368c335600..0000000000000000000000000000000000000000 --- a/src/test/shell/data/apps/images/logo/jenkins.svg +++ /dev/null @@ -1,283 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - id="svg2" - version="1.1" - inkscape:version="0.48.0 r9654" - width="226" - height="312" - xml:space="preserve" - sodipodi:docname="logo.svg"><metadata - id="metadata8"><rdf:RDF><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs - id="defs6"><clipPath - clipPathUnits="userSpaceOnUse" - id="clipPath18"><path - d="M 0,2494.84 0,0 l 1804.34,0 0,2494.84 -1804.34,0 z" - id="path20" - inkscape:connector-curvature="0" /></clipPath></defs><sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1500" - inkscape:window-height="844" - id="namedview4" - showgrid="false" - inkscape:zoom="1" - inkscape:cx="-65.859116" - inkscape:cy="172.53076" - inkscape:window-x="2189" - inkscape:window-y="496" - inkscape:window-maximized="0" - inkscape:current-layer="g10" /><g - id="g10" - inkscape:groupmode="layer" - inkscape:label="ink_ext_XXXXXX" - transform="matrix(1.25,0,0,-1.25,0,312)"><g - id="g3393"><path - d="m 177.718,129.264 c 0,-49.4288 -39.175,-89.4992 -87.5,-89.4992 -48.3242,0 -87.49925,40.0704 -87.49925,89.4992 0,49.43 39.17505,89.501 87.49925,89.501 48.325,0 87.5,-40.071 87.5,-89.501" - style="fill:#d33833;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path22" - inkscape:connector-curvature="0" /><path - d="m 6.28438,107.098 c 0,0 -6.33438,93.333 79.66602,96 l -5.9996,10 -46.6664,-15.667 -13.3336,-15.333 -11.66642,-22.334 -6.66719,-26 2,-17.333" - style="fill:#ef3d3a;fill-opacity:1;fill-rule:nonzero;stroke:none" - id="path24" - inkscape:connector-curvature="0" /><path - d="M 30.2883,190.319 C 14.9363,174.611 5.43633,152.923 5.43633,128.93 l 0,0 c 0,-23.988 9.49997,-45.6788 24.85197,-61.3839 l 0,0 C 45.6477,51.841 66.8152,42.15 90.2168,42.15 l 0,0 c 23.4022,0 44.5712,9.691 59.9292,25.3961 l 0,0 c 15.351,15.7051 24.853,37.3959 24.853,61.3839 l 0,0 c 0,23.993 -9.502,45.681 -24.853,61.389 l 0,0 c -15.358,15.702 -36.527,25.393 -59.9292,25.395 l 0,0 C 66.8152,215.712 45.6477,206.021 30.2883,190.319 l 0,0 z M 26.4023,63.7469 C 10.0867,80.4328 0,103.493 0,128.93 l 0,0 c 0,25.441 10.0867,48.499 26.4023,65.186 l 0,0 c 16.3118,16.69 38.8915,27.035 63.8145,27.032 l 0,0 c 24.9232,0.003 47.5052,-10.342 63.8142,-27.032 l 0,0 c 16.317,-16.687 26.405,-39.747 26.403,-65.186 l 0,0 c 0.002,-25.437 -10.086,-48.4972 -26.403,-65.1831 l 0,0 C 137.722,47.0578 115.14,36.7141 90.2168,36.7141 l 0,0 c -24.923,0 -47.5027,10.3437 -63.8145,27.0328 l 0,0" - style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none" - id="path26" - inkscape:connector-curvature="0" /><path - d="m 127.051,128.768 -13.334,-2 -18.0002,-2 -11.6672,-0.333 -11.3328,0.333 -8.6672,2.667 -7.6668,8.333 -6,17 -1.3332,3.667 -8,2.666 -4.6668,7.667 -3.3332,11 3.6672,9.667 8.666,3 7,-3.334 3.334,-7.333 4,0.667 1.3328,1.666 -1.3328,7.667 -0.334,9.667 2,13.333 -0.0781,7.616 6.0781,9.717 10.6668,7.667 18.6672,8 20.6662,-3 18,-13 8.334,-13.333 5.333,-9.667 1.333,-24 -4,-20.667 -7.333,-18.333 -7,-9.667" - style="fill:#f0d6b7;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path28" - inkscape:connector-curvature="0" /><path - d="m 115.717,71.102 -47.6674,-2 0,-8 4,-28 -2,-2.334 -33.3328,11.334 -2.334,4 -3.3332,37.666 -7.6656,22.667 -1.6672,5.333 26.666,18.333 8.334,3.334 7.3328,-9 6.3332,-5.667 7.334,-2.333 3.3328,-1 4,-17.333 3,-3.6668 7.6672,2.6668 -5.334,-10.334 29.0002,-13.666 -3.666,-2" - style="fill:#335061;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path30" - inkscape:connector-curvature="0" /><path - d="m 36.7168,187.435 8.666,3 7,-3.334 3.334,-7.333 4,0.667 1,4 -2,7.666 2,18.334 -1.6672,10 6,7 13,10.333 -3.6668,5 -18.3332,-9 -7.6668,-6 -4.3332,-9.333 -6.6668,-9 -2,-10.667 1.334,-11.333" - style="fill:#6d6b6d;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path32" - inkscape:connector-curvature="0" /><path - d="m 50.3828,218.768 c 0,0 5,12.333 25,18.333 20,6 1,4.334 1,4.334 l -21.666,-8.334 -8.334,-8.333 -3.666,-6.667 7.666,0.667" - style="fill:#dcd9d8;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path34" - inkscape:connector-curvature="0" /><path - d="m 40.3828,189.768 c 0,0 -7,23.334 19.6668,26.667 l -1,4 -18.3328,-4.334 -5.334,-17.333 1.334,-11.333 3.666,2.333" - style="fill:#dcd9d8;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path36" - inkscape:connector-curvature="0" /><path - d="m 51.0496,158.768 4.3645,4.229 c 0,0 1.9699,-0.229 2.3027,-2.562 0.3328,-2.334 1.3328,-23.334 15.666,-34.668 1.3074,-1.034 -10.666,1.668 -10.666,1.668 l -10.6672,16.666" - style="fill:#f7e4cd;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path38" - inkscape:connector-curvature="0" /><path - d="m 112.385,165.101 c 0,0 0.777,10.104 3.498,9.327 2.721,-0.777 2.721,-3.498 2.721,-3.498 0,0 -6.608,-4.275 -6.219,-5.829" - style="fill:#f7e4cd;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path40" - inkscape:connector-curvature="0" /><path - d="m 140.05,202.101 c 0,0 -5.494,-1.16 -6,-6 -0.506,-4.841 6,-1 7,-0.667" - style="fill:#f7e4cd;fill-opacity:1;fill-rule:nonzero;stroke:none" - id="path42" - inkscape:connector-curvature="0" /><path - d="m 99.7168,201.767 c 0,0 -7.334,-1 -7.334,-5.666 0,-4.667 8.3342,-4.334 10.6672,-2.334" - style="fill:#f7e4cd;fill-opacity:1;fill-rule:nonzero;stroke:none" - id="path44" - inkscape:connector-curvature="0" /><path - d="m 54.3828,180.101 c 0,0 -12.6672,7.667 -14,0.333 -1.3332,-7.333 -4.334,-12.667 2,-20.333 l -4.3332,1.333 -4,10.333 -1.3328,10 7.666,8.001 8.6668,-0.667 5,-4 0.3332,-5" - style="fill:#f7e4cd;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path46" - inkscape:connector-curvature="0" /><path - d="m 60.3828,201.101 c 0,0 5.6668,29.333 34.334,35 23.6012,4.665 35.9992,-1 40.6662,-6.333 0,0 -21,24.999 -41.0002,17.333 -20,-7.667 -34.666,-21.667 -34.3332,-30.666 0.5676,-15.328 0.3332,-15.334 0.3332,-15.334" - style="fill:#f7e4cd;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path48" - inkscape:connector-curvature="0" /><path - d="m 137.717,226.435 c 0,0 -9.666,0.333 -10,-8.334 0,0 -0.001,-1.333 0.666,-2.666 0,0 7.668,8.667 12.334,4" - style="fill:#f7e4cd;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path50" - inkscape:connector-curvature="0" /><path - d="m 95.3887,214.532 c 0,0 -1.6641,13.303 -13.0059,5.569 -7.3332,-5 -6.666,-12 -5.3332,-13.333 1.3332,-1.334 0.9707,-4.019 1.9856,-2.176 1.0144,1.843 0.6804,7.843 4.3476,9.509 3.6668,1.667 9.6777,3.529 12.0059,0.431" - style="fill:#f7e4cd;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path52" - inkscape:connector-curvature="0" /><path - d="m 64.0496,124.435 -31.3328,-14 c 0,0 13,-51.667 6.3328,-67.667 l -4.6668,1.666 -0.3332,19.6672 -8.6656,37.3328 -3.6672,10.334 32.666,21.999 9.6668,-9.332" - style="fill:#49728b;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path54" - inkscape:connector-curvature="0" /><path - d="m 67.2715,95.8578 4.4453,-5.4238 0,-20 -5.334,0 c 0,0 -0.666,14 -0.666,15.6672 0,1.6668 0.666,7.6668 0.666,7.6668" - style="fill:#49728b;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path56" - inkscape:connector-curvature="0" /><path - d="m 67.3828,67.434 -15,-0.666 4.334,-3 10.666,-1.6668" - style="fill:#49728b;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path58" - inkscape:connector-curvature="0" /><path - d="m 118.717,70.768 12.333,0.3332 3,-30.6672 -12.667,-1.666 -2.666,32" - style="fill:#335061;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path60" - inkscape:connector-curvature="0" /><path - d="m 122.05,70.768 18.667,1 c 0,0 7.666,19.3332 7.666,20.3332 0,1 6.667,27.9998 6.667,27.9998 l -15,15.666 -3,2.667 -8,-8 0,-31 -7,-28.666" - style="fill:#335061;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path62" - inkscape:connector-curvature="0" /><path - d="m 130.383,73.1012 -11.666,-2.3332 1.666,-9.334 c 4.333,-2 11.667,3.334 11.667,3.334" - style="fill:#49728b;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path64" - inkscape:connector-curvature="0" /><path - d="m 130.717,131.434 23.333,-17.333 0.667,8 -17.667,16.333 -6.333,-7" - style="fill:#49728b;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path66" - inkscape:connector-curvature="0" /><path - d="M 78.9508,5.09805 72.0496,33.102 68.6172,53.7648 68.0496,69.102 l 31.2348,1.6628 19.4326,0.0032 -1.767,-35.0032 3,-26.99996 -0.333,-5 -25.3326,-2 -15.3336,3.33321" - style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path68" - inkscape:connector-curvature="0" /><path - d="m 114.383,71.1012 c 0,0 -1.666,-34.6672 3.334,-59.3332 0,0 -10,-6.33402 -24.6674,-8.00003 l 28.0004,1 3.333,2 -4,54.66603 -1,11.668" - style="fill:#dcd9d8;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path70" - inkscape:connector-curvature="0" /><path - d="m 134.618,43.098 13,3.6668 24.666,1.3332 3.667,11.3329 -6.667,19.6671 -7.666,1 -10.667,-3.3332 -10.234,-4.9968 -5.433,0.9968 -4.234,-1.6636" - style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path72" - inkscape:connector-curvature="0" /><path - d="m 134.383,49.768 c 0,0 8.666,3.9992 10,3.666 l -3.666,18.334 4.333,1.666 c 0,0 3,-17.3328 3,-19.3328 0,0 18.666,-1 20.333,-1 0,0 4,7.6668 3,15.6668 l 3.667,-10.6668 0.333,-6 -5.333,-8 -6,-1.3332 -10,0.3332 -3.333,4.3328 -11.667,-1.666 -3.667,-1.334" - style="fill:#dcd9d8;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path74" - inkscape:connector-curvature="0" /><path - d="m 121.284,73.4309 -7.333,18.6671 -7.667,11 c 0,0 1.666,4.667 4,4.667 2.334,0 7.667,0 7.667,0 l 7.333,-2.667 -0.666,-12.3332 -3.334,-19.3339" - style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" - id="path76" - inkscape:connector-curvature="0" /><path - d="m 122.717,79.768 c 0,0 -9.334,17.9992 -9.334,20.666 0,0 1.666,4 4,3 2.334,-1 7.334,-3.666 7.334,-3.666 l 0,6.333 -11.334,2.334 -7.666,-1 13,-30.667 2.666,-0.334" - style="fill:#dcd9d8;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path78" - inkscape:connector-curvature="0" /><path - d="m 81.9512,123.764 -9.2344,1.004 -8.6672,2.667 0,-3 4.2348,-4.67 13.3332,-6" - style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" - id="path80" - inkscape:connector-curvature="0" /><path - d="m 67.0508,122.765 c 0,0 10.334,-4.334 13.6672,-3.334 l 0.3316,-3.996 -9.3316,1.996 -5.6672,4 1,1.334" - style="fill:#dcd9d8;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path82" - inkscape:connector-curvature="0" /><path - d="m 134.582,106.63 c -5.656,0.166 -10.766,0.838 -15.24,2.1 0.304,1.834 -0.265,3.634 0.192,4.955 1.247,0.898 3.337,0.884 5.222,1.095 -1.63,0.801 -3.92,1.118 -5.801,0.655 -0.044,1.273 -0.615,2.062 -0.961,3.058 3.18,1.135 10.687,8.576 14.91,6.112 2.012,-1.172 2.867,-7.866 3.023,-11.121 0.13,-2.7 -0.245,-5.424 -1.345,-6.854" - style="fill:#d33833;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path84" - inkscape:connector-curvature="0" /><path - d="m 134.582,106.63 c -5.656,0.166 -10.766,0.838 -15.24,2.1 0.304,1.834 -0.265,3.634 0.192,4.955 1.247,0.898 3.337,0.884 5.222,1.095 -1.63,0.801 -3.92,1.118 -5.801,0.655 -0.044,1.273 -0.615,2.062 -0.961,3.058 3.18,1.135 10.687,8.576 14.91,6.112 2.012,-1.172 2.867,-7.866 3.023,-11.121 0.13,-2.7 -0.245,-5.424 -1.345,-6.854 z" - style="fill:none;stroke:#d33833;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" - id="path86" - inkscape:connector-curvature="0" /><path - d="m 107.535,115.876 c -0.015,-0.428 -0.033,-0.859 -0.05,-1.291 -1.766,-1.16 -4.617,-1.146 -6.555,-2.121 2.857,-0.125 5.106,-0.813 7.052,-1.783 -0.043,-1.078 -0.084,-2.155 -0.126,-3.233 -3.237,-2.216 -6.194,-5.516 -10.0052,-7.5941 -1.802,-0.9828 -8.1262,-3.5117 -10.0434,-3.0648 -1.0847,0.2519 -1.1824,1.598 -1.616,2.8668 -0.9238,2.7171 -3.0508,7.0421 -3.2363,11.1321 -0.2363,5.166 -0.7578,13.824 4.8094,12.76 4.4914,-0.857 9.7152,-2.926 13.1925,-4.826 2.125,-1.162 3.354,-2.598 6.578,-2.846" - style="fill:#d33833;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path88" - inkscape:connector-curvature="0" /><path - d="m 107.535,115.876 c -0.015,-0.428 -0.033,-0.859 -0.05,-1.291 -1.766,-1.16 -4.617,-1.146 -6.555,-2.121 2.857,-0.125 5.106,-0.813 7.052,-1.783 -0.043,-1.078 -0.084,-2.155 -0.126,-3.233 -3.237,-2.216 -6.194,-5.516 -10.0052,-7.5941 -1.802,-0.9828 -8.1262,-3.5117 -10.0434,-3.0648 -1.0847,0.2519 -1.1824,1.598 -1.616,2.8668 -0.9238,2.7171 -3.0508,7.0421 -3.2363,11.1321 -0.2363,5.166 -0.7578,13.824 4.8094,12.76 4.4914,-0.857 9.7152,-2.926 13.1925,-4.826 2.125,-1.162 3.354,-2.598 6.578,-2.846 z" - style="fill:none;stroke:#d33833;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" - id="path90" - inkscape:connector-curvature="0" /><path - d="m 110.75,109.712 c -0.494,2.814 -1.065,3.617 -0.844,6.072 7.505,5.004 8.914,-8.595 0.844,-6.072" - style="fill:#d33833;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path92" - inkscape:connector-curvature="0" /><path - d="m 110.75,109.712 c -0.494,2.814 -1.065,3.617 -0.844,6.072 7.505,5.004 8.914,-8.595 0.844,-6.072 z" - style="fill:none;stroke:#d33833;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" - id="path94" - inkscape:connector-curvature="0" /><path - d="m 121.617,107.431 c 0,0 -2.334,3.334 -0.667,4.334 1.667,1 3.334,-0.001 4.334,1.666 1,1.667 0,2.667 0.333,4.667 0.333,2 2.001,2.334 3.667,2.667 1.666,0.333 6.334,1 7,-0.667 l -2,6 -4,1.333 -12.667,-7.333 -0.667,-3.667 0,-7.333" - style="fill:#ef3d3a;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path96" - inkscape:connector-curvature="0" /><path - d="m 86.6172,96.4309 c -0.4004,5.2021 -0.8242,10.3971 -1.2957,15.5941 -0.7055,7.76 1.864,6.406 8.5906,6.406 1.0274,0 6.3259,-1.225 6.7049,-2 1.818,-3.713 -3.04,-2.888 2.094,-5.688 4.334,-2.363 11.99,1.435 10.239,6.688 -0.98,1.168 -5.106,0.364 -6.585,1.131 -2.604,1.35 -5.208,2.7 -7.8123,4.05 -3.3132,1.719 -10.9707,4.225 -14.5031,1.823 -8.9504,-6.087 0.5649,-21.296 3.7578,-27.6459" - style="fill:#ef3d3a;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path98" - inkscape:connector-curvature="0" /><path - d="m 95.3887,214.532 c -9.0852,2.116 -13.5996,-3.802 -16.3535,-9.94 -2.459,0.596 -1.4805,3.94 -0.8594,5.644 1.6262,4.472 8.1797,10.425 13.5344,9.618 2.3043,-0.347 5.4226,-2.454 3.6785,-5.322" - style="fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path100" - inkscape:connector-curvature="0" /><path - d="m 139.655,204.186 c 0.143,-0.006 0.288,-0.011 0.431,-0.017 2.053,-4.265 3.83,-8.783 6.42,-12.548 -1.735,-4.041 -13.138,-7.617 -12.962,-0.361 2.466,1.078 6.723,0.22 8.909,1.597 -1.264,3.469 -3.088,6.422 -2.798,11.329" - style="fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path102" - inkscape:connector-curvature="0" /><path - d="m 100.04,204.075 c 1.948,-3.571 2.582,-7.323 5.351,-10.022 1.247,-1.215 3.672,-2.696 2.47,-6.075 -0.281,-0.797 -2.334,-2.574 -3.519,-2.923 -4.329,-1.278 -14.4162,-0.264 -11.0002,5.133 3.5801,-0.167 8.3922,-2.325 11.0682,0.274 -2.055,3.285 -5.7186,9.784 -4.37,13.613" - style="fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path104" - inkscape:connector-curvature="0" /><path - d="m 138.03,167.781 c -6.518,-4.187 -13.786,-8.74 -24.466,-7.684 -2.282,1.984 -3.152,6.399 -0.935,9.315 1.154,-1.984 0.429,-5.633 3.645,-6.182 6.06,-1.037 13.113,3.707 17.472,5.365 2.703,4.557 -0.233,6.233 -2.668,9.166 -4.985,6.009 -11.672,13.457 -11.429,22.453 2.015,1.461 2.189,-2.23 2.478,-2.902 2.603,-6.092 9.154,-13.883 13.935,-19.097 1.174,-1.284 3.107,-2.516 3.322,-3.365 0.62,-2.469 -1.613,-5.427 -1.354,-7.069" - style="fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path106" - inkscape:connector-curvature="0" /><path - d="m 52.1016,172.189 c -2.043,1.166 -2.5293,6.302 -4.9278,6.448 -3.4277,0.208 -2.8027,-6.663 -2.789,-10.681 -2.3594,2.142 -2.7743,8.737 -1.041,12.124 -1.9754,0.97 -2.8575,-1.07 -3.9532,-1.789 1.4082,10.23 14.9649,4.745 12.711,-6.102" - style="fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path108" - inkscape:connector-curvature="0" /><path - d="m 142.18,163.521 c -3.034,-5.775 -7.326,-12.135 -16.229,-12.32 -0.181,1.865 -0.32,4.703 0.01,5.826 6.806,0.654 11.008,4.118 16.219,6.494" - style="fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path110" - inkscape:connector-curvature="0" /><path - d="m 99.5266,159.777 c 5.6784,-2.986 16.1144,-3.307 23.8324,-3.081 0.414,-1.691 0.404,-3.78 0.42,-5.842 -9.921,-0.495 -21.651,1.96 -24.2524,8.923" - style="fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path112" - inkscape:connector-curvature="0" /><path - d="m 98.4473,154.209 c 3.9267,-9.859 17.4227,-8.724 28.8037,-8.452 -0.501,-1.28 -1.587,-2.792 -2.937,-3.339 -3.647,-1.484 -13.706,-2.61 -18.769,0.079 -3.211,1.707 -5.274,5.564 -7.0333,7.825 -0.8496,1.092 -5.0801,3.881 -0.0644,3.887" - style="fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path114" - inkscape:connector-curvature="0" /><path - d="m 137.556,99.8262 c -4.608,-7.8922 -9.017,-15.9981 -14.484,-22.9594 2.292,6.7391 3.273,18.0184 3.619,26.6172 4.795,2.244 8.901,-0.505 10.865,-3.6578" - style="fill:#81b0c4;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path116" - inkscape:connector-curvature="0" /><path - d="m 162.352,71.4609 c -5.159,-1.0328 -8.784,-6.0468 -13.817,-5.725 2.766,3.8993 7.613,5.543 13.817,5.725" - style="fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path118" - inkscape:connector-curvature="0" /><path - d="m 164.628,63.3871 c -4.205,-0.4441 -9.144,-1.125 -13.409,-0.7742 2.019,3.084 9.798,2.0199 13.409,0.7742" - style="fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path120" - inkscape:connector-curvature="0" /><path - d="m 166.085,56.4262 c -4.726,-0.1024 -10.6,-0.0082 -15.092,0.3687 2.657,2.8539 12.027,1.059 15.092,-0.3687" - style="fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path122" - inkscape:connector-curvature="0" /><path - d="m 128.664,37.377 c 0.678,-5.9352 3.031,-11.9489 2.736,-18.4489 -2.613,-0.8812 -4.114,-1.6519 -7.615,-1.6472 -0.247,5.5242 -0.986,13.9691 -0.765,19.2351 1.722,-0.114 4.261,1.2301 5.644,0.861" - style="fill:#dcd9d8;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path124" - inkscape:connector-curvature="0" /><path - d="m 121.045,124.849 c -2.373,-1.549 -4.394,-3.483 -6.673,-5.137 -5.054,-0.25 -7.812,0.35 -11.525,3.252 0.061,0.233 0.434,0.129 0.448,0.415 5.41,-2.411 12.287,0.982 17.75,1.47" - style="fill:#f0d6b7;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path126" - inkscape:connector-curvature="0" /><path - d="m 92.6445,87.9711 c 1.4864,6.441 7.3106,9.7769 12.5995,13.3239 5.459,-6.9282 8.779,-15.838 12.435,-24.436 -8.638,2.6039 -17.464,6.8289 -25.0345,11.1121" - style="fill:#81b0c4;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path128" - inkscape:connector-curvature="0" /><path - d="m 123.02,36.516 c -0.221,-5.266 0.518,-13.7109 0.765,-19.2351 3.501,-0.0047 5.002,0.766 7.615,1.6472 0.295,6.5 -2.058,12.5137 -2.736,18.4489 -1.383,0.3691 -3.922,-0.975 -5.644,-0.861 z M 68.5059,66.4648 C 70.8145,45.2418 74.1582,27.4012 80.291,8.60781 93.9023,4.475 110.311,4.11484 122.342,7.84414 120.133,18.4512 121.098,31.3648 119.807,42.684 c -0.973,8.5078 -0.477,17.068 -1.811,25.748 -14.578,3.0328 -35.1835,0.709 -49.4901,-1.9672 z m 52.9371,1.834 c -0.123,-9.1148 0.408,-18.1058 1.104,-27.232 3.5,0.5254 5.875,0.8762 9.127,1.5891 -1.056,8.7859 -0.926,18.6722 -3.077,26.4441 -2.486,-0.0238 -4.675,0.0289 -7.154,-0.8012 z m 17.755,1.4692 c -1.661,0.3808 -3.595,0.0148 -5.182,-0.016 0.746,-7.4301 2.556,-15.629 3.193,-23.4282 2.497,-0.0777 3.831,1.1 5.885,1.4961 0.11,6.8461 -0.598,16.2781 -3.896,21.9481 z m 26.884,-24.5629 c 5.205,1.264 8.478,7.639 7.022,14.1859 -0.977,4.4 -2.717,12.6852 -4.579,15.5 -1.376,2.082 -5.107,4.8078 -8.086,2.9 -4.846,-3.1031 -13.383,-4.0039 -16.917,-7.7601 1.772,-5.9 2.322,-14.0039 3.053,-21.4797 6.054,-0.3774 13.503,1.666 18.538,-0.5024 -3.515,-1.1386 -8.076,-1.1476 -11.113,-2.807 2.482,-1.1988 8.293,-0.9566 12.082,-0.0367 z M 117.679,76.859 c -3.656,8.598 -6.976,17.5078 -12.435,24.436 C 99.9551,97.748 94.1309,94.4121 92.6445,87.9711 100.215,83.6879 109.041,79.4629 117.679,76.859 z m 9.012,26.625 c -0.346,-8.5988 -1.327,-19.8781 -3.619,-26.6172 5.467,6.9613 9.876,15.0672 14.484,22.9594 -1.964,3.1528 -6.07,5.9018 -10.865,3.6578 z m -10.216,3.63 c -2.071,0.223 -3.829,-2.381 -6.522,-1.255 -0.617,-0.682 -1.178,-1.421 -1.807,-2.087 5.948,-7.1681 8.651,-17.338 13.245,-25.7618 2.465,8.0918 2.181,16.957 2.724,25.7888 -3.387,-0.215 -5.266,3.063 -7.64,3.315 z m -6.569,8.67 c -0.221,-2.455 0.35,-3.258 0.844,-6.072 8.07,-2.523 6.661,11.076 -0.844,6.072 z m -8.949,2.938 c -3.4773,1.9 -8.7011,3.969 -13.1925,4.826 -5.5672,1.065 -5.0457,-7.594 -4.8094,-12.76 0.1855,-4.09 2.3125,-8.415 3.2363,-11.1321 0.4336,-1.2688 0.5313,-2.6149 1.616,-2.8668 1.9172,-0.4469 8.2414,2.082 10.0434,3.0648 3.8112,2.0781 6.7682,5.3781 10.0052,7.5941 0.042,1.078 0.083,2.155 0.126,3.233 -1.946,0.97 -4.195,1.658 -7.052,1.783 1.938,0.975 4.789,0.961 6.555,2.121 0.017,0.432 0.035,0.863 0.05,1.291 -3.224,0.248 -4.453,1.684 -6.578,2.846 z m -33.2136,6.033 c -2.886,-2.93 8.0945,-6.924 11.5906,-7.139 -0.0195,1.854 1.0566,3.602 0.8398,4.932 -4.1523,0.729 -9.6093,0.248 -12.4304,2.207 z m 35.5516,-1.376 c -0.014,-0.286 -0.387,-0.182 -0.448,-0.415 3.713,-2.902 6.471,-3.502 11.525,-3.252 2.279,1.654 4.3,3.588 6.673,5.137 -5.463,-0.488 -12.34,-3.881 -17.75,-1.47 z m 32.632,-9.895 c -0.156,3.255 -1.011,9.949 -3.023,11.121 -4.223,2.465 -11.73,-4.977 -14.91,-6.112 0.346,-0.996 0.917,-1.785 0.961,-3.058 1.881,0.463 4.171,0.146 5.801,-0.655 -1.885,-0.211 -3.975,-0.197 -5.222,-1.095 -0.457,-1.321 0.112,-3.121 -0.192,-4.955 4.474,-1.262 9.584,-1.934 15.24,-2.1 1.1,1.43 1.475,4.154 1.345,6.854 z m -73.0422,8.437 c -0.9063,0.646 -7.0371,8.623 -7.877,8.292 C 43.9141,125.838 33.541,118.273 24.2715,111.118 33.1094,92.1539 36.677,68.9199 37.3074,46.5262 47.4316,41.791 56.3242,34.9648 70.0625,34.252 68.4727,45.5 67.0215,55.5352 66.1191,66.125 c -3.4519,1.4551 -8.4043,-0.066 -11.6347,0.4512 -0.0274,3.8929 4.9336,1.7047 5.3468,4.3226 0.3114,1.9801 -2.7296,2.1301 -1.7394,5.2481 2.5254,-0.918 3.8516,-2.9457 6.5449,-3.7071 2.461,5.384 -0.0344,14.9102 0.3203,19.4102 0.0672,0.8449 0.4219,4.6809 2.3145,4.0078 1.675,-0.5957 -0.0957,-10.2019 0.0879,-14.4609 0.1672,-3.9239 -0.4739,-7.7207 1.1152,-10.184 13.2754,1.807 26.7656,2.975 41.1294,3.3691 -3.16,1.3559 -6.914,2.6391 -11.0298,4.959 -2.2312,1.2578 -9.2644,3.875 -9.9082,5.9942 -1.0273,3.3769 2.6953,5.1757 3.332,8.0707 -6.7011,-3.6547 -8.0085,3.5031 -9.5937,8.5741 -1.4363,4.593 -2.2539,8.024 -2.6063,10.673 -5.7726,2.752 -11.9445,5.539 -16.9132,9.068 z m 67.1792,7.327 c 9.243,4.482 10.909,-16.751 7.286,-23.591 0.56,-2.04 2.486,-2.821 3.272,-4.655 -5.158,-9.2399 -10.887,-17.8649 -16.15,-26.9961 3.915,2.4371 9.507,0.4359 14.114,2.2601 1.684,0.666 2.903,4.5211 4.178,7.6051 3.507,8.4848 7.189,19.1819 8.827,27.2789 0.37,1.845 1.378,5.865 1.152,7.507 -0.403,2.94 -4.392,5.12 -6.421,6.938 -3.738,3.358 -6.092,6.313 -9.991,9.453 -1.581,-2.334 -4.974,-3.902 -6.267,-5.8 z m -88.3179,81.968 c -4.4043,-4.846 -3.4824,-13.926 -2.9492,-20.386 7.9609,5.008 18.5273,-0.396 18.4277,-8.914 3.8008,0.101 1.4199,4.747 0.7324,7.74 -2.2468,9.776 3.7852,20.397 0.2735,29.337 -6.8184,-0.517 -12.42,-3.302 -16.4844,-7.777 z m 31.5137,28.126 c -9.9707,-2.826 -22.7493,-10.071 -26.8465,-19.028 3.1726,0.461 5.375,2.061 8.5047,2.259 1.1828,0.077 2.7324,-0.496 4.0918,-0.158 2.709,0.672 4.9953,6.746 7.039,9.006 1.9922,2.207 4.3867,3.15 6.0254,5.162 1.0528,0.508 2.6094,0.473 2.6692,2.054 -0.4563,0.488 -0.9368,0.86 -1.4836,0.705 z m 51.9032,-2.658 c -10.349,5.839 -27.8661,10.231 -38.8747,4.743 -8.8828,-4.429 -20.8899,-11.757 -24.9836,-21.043 3.8242,-8.961 -1.1328,-17.172 -1.4492,-26.27 -0.168,-4.841 2.2793,-9.067 2.4668,-14.337 -1.3086,-2.159 -5.3067,-2.425 -8.0743,-2.277 -0.9316,4.662 -2.5625,9.902 -7.3632,10.428 -6.793,0.743 -11.7598,-4.879 -12.0684,-10.754 -0.3652,-6.909 5.3066,-18.36 13.3457,-17.565 3.1055,0.307 3.8684,3.42 7.252,3.388 1.8339,-3.659 -2.8289,-4.808 -3.3086,-7.425 -0.125,-0.676 0.3867,-3.318 0.6843,-4.557 1.4602,-6.033 4.7153,-13.841 7.9192,-18.434 4.0664,-5.826 12.0555,-6.704 20.6504,-7.275 1.5351,3.307 7.1902,3.035 10.875,2.17 -4.416,1.749 -8.5215,5.989 -11.9239,9.742 -3.9082,4.306 -7.8671,8.925 -8.0671,14.553 7.3855,-10.246 13.4871,-19.194 26.9168,-23.701 10.1618,-3.408 22.0298,1.562 29.8378,7.045 3.24,2.279 5.174,5.895 7.477,9.205 8.617,12.395 12.638,30.087 11.754,47.235 -0.364,7.072 -0.348,14.12 -2.721,18.878 -2.48,4.975 -10.868,9.426 -15.778,4.926 -0.91,4.838 4.083,7.83 9.948,6.089 -4.182,5.397 -8.571,11.882 -14.515,15.236 z M 144.444,77.1168 c 8.087,4.0203 23.197,10.8211 28.267,-0.0148 1.871,-3.9942 4.066,-10.7461 5.035,-14.8692 1.369,-5.8168 -1.484,-18.043 -7.463,-19.9949 -5.281,-1.7238 -11.443,-1.6188 -17.804,-0.341 -0.749,0.623 -1.583,1.709 -2.166,2.841 -4.542,0.1762 -8.795,-0.2438 -12.383,-2.1109 0.34,-3.359 -1.932,-3.8981 -4.062,-4.5899 -1.579,-6.2609 3.159,-14.4371 2.025,-20.1461 -0.809,-4.0672 -5.813,-4.6961 -9.491,-5.457 -0.12,-2.2602 0.161,-4.14689 0.412,-6.059 -0.841,-3.09883 -4.613,-4.86289 -8.187,-5.29492 -11.759,-1.414064 -29.6133,-2.049221 -40.9239,2.01797 -3.1562,7.74175 -5.6426,17.15785 -8.2715,25.99805 -11.0312,-1.1781 -19.9531,4.7598 -28.364,8.65 -2.9121,1.35 -6.9406,2.0937 -8.0285,4.4117 -1.0547,2.2442 -0.6231,6.5453 -0.8848,10.6082 -0.666,10.377 -1.2363,20.386 -3.9766,31.011 -1.2304,4.7679 -3.375,8.975 -4.8711,13.5691 -1.3828,4.2579 -3.7988,9.5199 -4.4289,13.7659 -0.9343,6.293 4.9914,6.643 8.7805,9.37 5.8574,4.217 10.4551,6.549 16.7988,10.355 1.8789,1.127 7.545,3.98 8.1895,5.294 1.2812,2.605 -2.1992,6.278 -3.1297,8.32 -1.4719,3.229 -2.2395,5.972 -2.4504,9.158 -5.3215,0.841 -9.3555,4.008 -11.7922,7.579 -4.0308,5.91 -6.8262,16.844 -3.3387,25.161 0.2735,0.655 1.6375,1.943 1.8387,2.949 0.3969,1.981 -0.7469,4.615 -0.818,6.722 -0.3664,10.81 1.829,20.124 9.1063,23.384 2.9543,11.769 13.5281,15.682 23.4902,21.531 3.7239,2.186 7.8289,3.583 12.0684,5.143 15.2082,5.597 38.5419,4.543 51.1639,-5.003 5.352,-4.048 13.907,-12.595 16.967,-18.783 8.082,-16.337 7.508,-43.64 1.855,-63.513 -0.76,-2.668 -1.862,-6.59 -3.401,-9.795 -1.073,-2.238 -4.408,-6.716 -4.003,-8.692 0.417,-2.043 7.604,-7.5 9.145,-8.986 2.775,-2.677 8.047,-6.23 8.474,-9.608 0.459,-3.595 -1.584,-8.513 -2.619,-11.982 -3.46,-11.5769 -6.836,-22.2781 -10.759,-32.5992" - style="fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path130" - inkscape:connector-curvature="0" /><path - d="m 90.491,157.255 c 0.4387,0.584 2.8508,1.471 6.2258,-0.154 0,0 -4,-0.667 -3.6672,-7.336 l -1.6668,0.334 c 0,0 -1.7226,6.047 -0.8918,7.156" - style="fill:#f7e4cd;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path132" - inkscape:connector-curvature="0" /><path - d="m 119.717,99.934 c 0,-1.0121 -0.821,-1.8328 -1.834,-1.8328 -1.012,0 -1.833,0.8207 -1.833,1.8328 0,1.012 0.821,1.834 1.833,1.834 1.013,0 1.834,-0.822 1.834,-1.834" - style="fill:#1d1919;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path134" - inkscape:connector-curvature="0" /><path - d="m 121.55,91.434 c 0,-1.0121 -0.821,-1.8328 -1.834,-1.8328 -1.012,0 -1.833,0.8207 -1.833,1.8328 0,1.0121 0.821,1.834 1.833,1.834 1.013,0 1.834,-0.8219 1.834,-1.834" - style="fill:#1d1919;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path136" - inkscape:connector-curvature="0" /></g></g></svg> \ No newline at end of file diff --git a/src/test/shell/data/apps/images/logo/juiceshop.png b/src/test/shell/data/apps/images/logo/juiceshop.png deleted file mode 100644 index 95b41ccd52aa5cae29af7279fb7b244ede9194f7..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/logo/juiceshop.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/logo/juniper.svg b/src/test/shell/data/apps/images/logo/juniper.svg deleted file mode 100644 index cb8a111bb7d46e2e56aa203d864e24ecde9b1a88..0000000000000000000000000000000000000000 --- a/src/test/shell/data/apps/images/logo/juniper.svg +++ /dev/null @@ -1 +0,0 @@ -<!-- Created with Inkscape (http://www.inkscape.org/) --> <svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="180" width="360" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"> <defs> <clipPath id="clipPath3095" clipPathUnits="userSpaceOnUse"> <path d="m44.936,724.66,116.15,0,0,31.739-116.15,0,0-31.739z"/> </clipPath> <clipPath id="clipPath3079" clipPathUnits="userSpaceOnUse"> <path d="m44.946,725,114.9,0,0,31.4-114.9,0,0-31.4z"/> </clipPath> <clipPath id="clipPath3037" clipPathUnits="userSpaceOnUse"> <path d="m44.936,724.66,116.15,0,0,31.739-116.15,0,0-31.739z"/> </clipPath> </defs> <metadata> <rdf:RDF> <cc:Work rdf:about=""> <dc:format>image/svg+xml</dc:format> <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> <dc:title/> </cc:Work> </rdf:RDF> </metadata> <g transform="translate(69.285713,-19.505037)"> <g transform="matrix(2.2214693,0,0,2.2214693,-172.25428,-315.17789)"> <g transform="matrix(1.25,0,0,-1.25,119.25316,185.06493)"> <path d="m0,0,0.706,0,3.637-5.015,0,5.015,0.624,0,0-6.082-0.592,0-3.751,5.163,0-5.163h-0.624v6.082z" fill-rule="nonzero" fill="#61849c"/> </g> <g transform="matrix(1.25,0,0,-1.25,127.40054,185.06493)"> <path d="m0,0,4.022,0,0-0.616-3.374,0,0-2.01,3.292,0,0-0.608-3.292,0,0-2.257,3.407,0,0-0.591h-4.055v6.082z" fill-rule="nonzero" fill="#61849c"/> </g> <g transform="matrix(1.25,0,0,-1.25,136.50116,185.83455)"> <path d="m0,0-2.282,0,0,0.616,5.213,0,0-0.616-2.282,0,0-5.467h-0.649v5.467z" fill-rule="nonzero" fill="#61849c"/> </g> <g transform="matrix(1.25,0,0,-1.25,141.14891,185.06493)"> <path d="M0,0,0.665,0,2.265-5.031,3.899,0,4.457,0,6.082-5.031,7.691,0,8.315,0,6.361-6.123h-0.557l-1.642,5.064-1.634-5.064h-0.566l-1.962,6.123z" fill-rule="nonzero" fill="#61849c"/> </g> <g transform="matrix(1.25,0,0,-1.25,-7.3707143,1099.0408)"> <g clip-path="url(#clipPath3037)"> <g transform="translate(133.1884,728.1357)"> <path d="m0,0c0,1.642-0.763,2.528-2.422,2.528-1.65,0-2.405-0.886-2.405-2.528,0-1.65,0.755-2.537,2.405-2.537,1.659,0,2.422,0.887,2.422,2.537m-5.475,0.008c0,2.167,1.108,3.135,3.053,3.135,1.954,0,3.07-0.968,3.07-3.135,0-2.175-1.116-3.144-3.07-3.144-1.945,0-3.053,0.969-3.053,3.144" fill-rule="nonzero" fill="#61849c"/> </g> <g transform="translate(137.7932,728.1683)"> <path d="m0,0c0.862,0,1.395,0.263,1.395,1.223,0,0.944-0.517,1.19-1.419,1.19h-1.979v-2.413h2.003zm-0.18-0.591-1.823,0,0-2.479-0.632,0,0,6.082,2.627,0c1.412,0,2.052-0.566,2.052-1.773,0-1.05-0.501-1.666-1.56-1.805l1.469-2.504h-0.689l-1.444,2.479z" fill-rule="nonzero" fill="#61849c"/> </g> <g transform="translate(143.0629,728.3242)"> <path d="m0,0-1.215-1.329,0-1.897-0.632,0,0,6.082,0.632,0,0-3.357,3.078,3.357,0.747,0-2.183-2.388,2.479-3.694-0.731,0l-2.175,3.226z" fill-rule="nonzero" fill="#61849c"/> </g> <g transform="translate(146.5105,725.714)"> <path d="m0,0,0.328,0.492c0.73-0.459,1.445-0.615,2.175-0.615,1.256,0,1.814,0.353,1.814,1.19,0,0.862-0.722,0.985-1.814,1.182-1.313,0.23-2.2,0.452-2.2,1.682,0,1.175,0.755,1.634,2.2,1.634,0.953,0,1.634-0.213,2.118-0.542l-0.345-0.525c-0.435,0.287-1.083,0.476-1.773,0.476-1.091,0-1.559-0.304-1.559-1.026,0-0.772,0.632-0.919,1.716-1.116,1.329-0.238,2.289-0.435,2.289-1.74,0-1.207-0.771-1.789-2.429-1.789-0.919,0-1.749,0.188-2.52,0.697" fill-rule="nonzero" fill="#61849c"/> </g> <g transform="translate(157.8189,756.3191)"> <path d="m0,0c-8.551,0-8.914-3.831-8.914-9.236v-13.269h2.016v13.269c0,4.074-0.161,7.341,6.898,7.341,0.756,0,1.427-0.04,2.031-0.111v1.921c-0.623,0.055-1.295,0.085-2.031,0.085" fill-rule="nonzero" fill="#231f20"/> </g> <g transform="translate(58.0874,742.4452)"> <path d="m0,0,0,13.431,2.057,0,0-13.471c0-3.872-0.04-7.139,7.058-7.139,7.058,0,6.897,3.267,6.897,7.341v13.269h2.017v-13.269c0-5.405-0.364-9.237-8.914-9.237-8.591,0-9.115,3.832-9.115,9.075" fill-rule="nonzero" fill="#231f20"/> </g> <g transform="translate(97.5568,747.2451)"> <path d="m0,0,0-13.431-2.057,0,0,13.471c0,3.872,0.04,7.139-7.058,7.139-7.059,0-6.897-3.267-6.897-7.341v-13.269h-2.016v13.269c0,5.405,0.363,9.236,8.913,9.236,8.591,0,9.115-3.831,9.115-9.074" fill-rule="nonzero" fill="#231f20"/> </g> <path d="m101.3,755.84,1.974,0,0-22.021-1.974,0,0,22.021z" fill-rule="nonzero" fill="#231f20"/> <g transform="translate(117.3098,743.4458)"> <path d="m0,0c3.562,0,5.332,1.736,5.332,5.243,0,3.505-1.91,5.17-5.42,5.17h-8.277v-10.413h8.365zm-10.339,12.389,10.309,0c5.112,0,7.43-2.541,7.43-7.058,0-4.547-2.288-7.311-7.458-7.311h-8.307v-7.652h-1.974v22.021z" fill-rule="nonzero" fill="#231f20"/> </g> </g> </g> <g transform="matrix(1.25,0,0,-1.25,-7.3707143,1099.0408)"> <g clip-path="url(#clipPath3079)"> <g transform="translate(129.0252,746.3982)"> <path d="M0,0,15.003,0c-0.201,4.396-0.484,8.147-6.897,8.147-6.17,0-7.864-3.348-8.106-8.147m-2.017-1.493c0,6.493,1.856,11.495,10.165,11.495,8.59,0,8.872-5.767,8.832-11.857h-17.02c0.04-5.365,1.37-9.358,8.348-9.358,3.711,0,5.405,1.009,7.22,2.339l1.128-1.492c-2.016-1.492-4.395-2.662-8.348-2.662-8.711,0-10.325,5.042-10.325,11.535" fill-rule="nonzero" fill="#231f20"/> </g> <g transform="translate(45.7034,729.0357)"> <path d="m0,0c8.55,0,8.914,3.831,8.914,9.236v17.604h-2.017v-17.604c0-4.073,0.161-7.341-6.897-7.341-0.267,0-0.52,0.007-0.767,0.017v-1.902c0.248-0.006,0.503-0.01,0.767-0.01" fill-rule="nonzero" fill="#231f20"/> </g> </g> </g> <g transform="matrix(1.25,0,0,-1.25,-7.3707143,1099.0408)"> <g clip-path="url(#clipPath3095)"> <g transform="translate(155.336,736.3229)"> <path d="m0,0c-0.669,0-1.213-0.544-1.213-1.212s0.544-1.212,1.213-1.212c0.667,0,1.211,0.544,1.211,1.212s-0.544,1.212-1.211,1.212m0-2.604c-0.768,0-1.393,0.624-1.393,1.392,0,0.767,0.625,1.392,1.393,1.392s1.391-0.625,1.391-1.392c0-0.768-0.623-1.392-1.391-1.392" fill-rule="nonzero" fill="#231f20"/> </g> <g transform="translate(155.4754,735.1253)"> <path d="m0,0c0.218,0,0.344,0.063,0.344,0.297,0,0.231-0.122,0.284-0.351,0.284h-0.489v-0.581h0.496zm-0.05-0.2-0.446,0,0-0.615-0.213,0,0,1.599,0.712,0c0.405,0,0.561-0.166,0.561-0.482,0-0.258-0.11-0.436-0.386-0.487l0.361-0.63h-0.231l-0.358,0.615z" fill-rule="nonzero" fill="#231f20"/> </g> </g> </g> </g> </g> </svg> \ No newline at end of file diff --git a/src/test/shell/data/apps/images/logo/librebooking.png b/src/test/shell/data/apps/images/logo/librebooking.png deleted file mode 100644 index f15f5857f90b0a26d931ef05d1727ee2d9552b91..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/logo/librebooking.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/logo/librenms.svg b/src/test/shell/data/apps/images/logo/librenms.svg deleted file mode 100644 index 5b8916166c8668e72e4c1f9062339d673cc48c66..0000000000000000000000000000000000000000 --- a/src/test/shell/data/apps/images/logo/librenms.svg +++ /dev/null @@ -1,153 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - version="1.0" - width="176.79999pt" - height="176pt" - viewBox="0 0 176.79999 176" - preserveAspectRatio="xMidYMid meet" - id="svg3823" - sodipodi:docname="librenms.svg" - inkscape:version="0.92.3 (2405546, 2018-03-11)"> - <defs - id="defs3827" /> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1920" - inkscape:window-height="1017" - id="namedview3825" - showgrid="false" - inkscape:zoom="3.18" - inkscape:cx="255.33333" - inkscape:cy="113.33332" - inkscape:window-x="-8" - inkscape:window-y="-8" - inkscape:window-maximized="1" - inkscape:current-layer="svg3823" /> - <metadata - id="metadata3771"> -Created by potrace 1.14, written by Peter Selinger 2001-2017 -<rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> -</rdf:RDF> -</metadata> - <g - transform="matrix(0.1,0,0,-0.1,-8.5,191)" - id="g3821" - style="fill:#000000;stroke:none"> - <path - d="m 772,1827 -82,-83 33,-32 33,-32 82,83 82,83 -33,32 -33,32 z" - id="path3773" - inkscape:connector-curvature="0" /> - <path - d="m 1021,1884 c -12,-15 -21,-32 -21,-38 0,-6 38,-48 83,-93 l 84,-83 26,28 c 15,16 27,32 27,37 0,9 -164,175 -173,175 -3,0 -15,-12 -26,-26 z" - id="path3775" - inkscape:connector-curvature="0" /> - <path - d="m 471,1526 -82,-83 31,-33 31,-34 84,85 84,84 -33,32 -33,31 z" - id="path3777" - inkscape:connector-curvature="0" /> - <path - d="m 721,1580 c -37,-38 -43,-27 74,-141 l 70,-68 27,26 c 16,15 28,32 28,37 0,6 -38,48 -84,94 l -83,83 z" - id="path3779" - inkscape:connector-curvature="0" /> - <path - d="m 1087,1522 c -43,-43 -77,-82 -77,-88 0,-6 13,-22 28,-37 l 28,-27 44,46 c 25,24 60,60 79,78 37,37 37,59 -3,88 -23,16 -24,16 -99,-60 z" - id="path3781" - inkscape:connector-curvature="0" /> - <path - d="m 1327,1562 -27,-28 90,-89 90,-89 28,34 29,34 -83,83 c -45,46 -86,83 -91,83 -5,0 -21,-13 -36,-28 z" - id="path3783" - inkscape:connector-curvature="0" /> - <path - d="m 165,1220 -80,-80 33,-32 32,-33 80,80 c 44,44 80,82 80,86 0,9 -48,59 -57,59 -5,0 -44,-36 -88,-80 z" - id="path3785" - inkscape:connector-curvature="0" /> - <path - d="m 415,1270 -28,-29 87,-87 88,-86 32,31 33,32 -83,84 c -45,47 -86,85 -91,85 -5,0 -22,-13 -38,-30 z" - id="path3787" - inkscape:connector-curvature="0" /> - <path - d="m 777,1212 -78,-79 31,-33 31,-33 80,79 c 43,43 79,84 79,91 0,11 -46,53 -59,53 -4,0 -42,-35 -84,-78 z" - id="path3789" - inkscape:connector-curvature="0" /> - <path - d="m 1027,1262 -27,-29 86,-87 c 92,-93 91,-93 136,-41 16,19 14,23 -65,103 -45,45 -86,82 -92,82 -6,0 -23,-13 -38,-28 z" - id="path3791" - inkscape:connector-curvature="0" /> - <path - d="m 1392,1206 -81,-83 33,-32 33,-32 77,76 c 69,70 92,105 67,105 -5,0 -12,9 -16,19 -12,38 -33,28 -113,-53 z" - id="path3793" - inkscape:connector-curvature="0" /> - <path - d="m 1640,1249 -22,-30 84,-84 83,-83 34,27 34,28 -85,87 c -47,47 -91,86 -96,86 -6,0 -20,-14 -32,-31 z" - id="path3795" - inkscape:connector-curvature="0" /> - <path - d="m 116,971 -28,-29 87,-88 87,-87 31,32 32,31 -85,85 c -47,47 -87,85 -90,85 -4,0 -19,-13 -34,-29 z" - id="path3797" - inkscape:connector-curvature="0" /> - <path - d="m 475,910 -79,-80 29,-30 c 16,-16 32,-30 36,-30 9,0 154,148 154,158 0,12 -42,62 -52,62 -5,0 -44,-36 -88,-80 z" - id="path3799" - inkscape:connector-curvature="0" /> - <path - d="m 732,967 c -12,-13 -22,-29 -22,-36 0,-7 36,-49 80,-93 81,-80 81,-80 103,-62 24,21 37,36 37,45 0,8 -161,169 -170,169 -3,0 -16,-10 -28,-23 z" - id="path3801" - inkscape:connector-curvature="0" /> - <path - d="m 1092,905 c -46,-46 -81,-89 -78,-94 4,-6 20,-19 35,-31 l 29,-20 76,75 c 42,41 76,79 76,83 0,4 -12,22 -27,40 l -28,32 z" - id="path3803" - inkscape:connector-curvature="0" /> - <path - d="m 1344,955 -31,-34 66,-68 c 109,-112 103,-109 141,-73 l 33,31 -89,89 -90,89 z" - id="path3805" - inkscape:connector-curvature="0" /> - <path - d="m 1707,893 c -42,-41 -77,-80 -77,-85 0,-10 46,-58 55,-58 15,0 168,161 159,168 -5,4 -20,17 -34,30 l -26,22 z" - id="path3807" - inkscape:connector-curvature="0" /> - <path - d="m 426,661 c -30,-31 -29,-36 12,-74 17,-16 54,-53 98,-98 l 35,-35 34,30 35,31 -87,87 c -48,49 -90,88 -93,88 -4,0 -19,-13 -34,-29 z" - id="path3809" - inkscape:connector-curvature="0" /> - <path - d="m 786,599 -78,-81 32,-33 31,-32 80,79 c 43,44 79,85 79,92 0,10 -52,57 -62,55 -2,0 -38,-36 -82,-80 z" - id="path3811" - inkscape:connector-curvature="0" /> - <path - d="m 1041,650 -35,-28 90,-90 90,-91 32,33 31,33 -63,64 c -34,35 -73,74 -87,86 l -24,22 z" - id="path3813" - inkscape:connector-curvature="0" /> - <path - d="m 1401,589 -80,-81 31,-34 32,-33 84,85 85,85 -32,30 c -18,16 -34,29 -36,29 -1,0 -39,-37 -84,-81 z" - id="path3815" - inkscape:connector-curvature="0" /> - <path - d="m 742,353 c -18,-13 -32,-28 -32,-32 0,-13 162,-171 176,-171 7,0 22,12 33,26 20,26 21,27 1,53 -10,14 -47,54 -83,88 l -63,61 z" - id="path3817" - inkscape:connector-curvature="0" /> - <path - d="m 1102,288 -82,-82 27,-28 c 15,-15 31,-28 37,-28 5,0 45,35 87,79 l 77,78 -28,32 c -16,17 -31,31 -33,31 -2,0 -41,-37 -85,-82 z" - id="path3819" - inkscape:connector-curvature="0" /> - </g> -</svg> diff --git a/src/test/shell/data/apps/images/logo/logo.png b/src/test/shell/data/apps/images/logo/logo.png deleted file mode 100644 index 50c9519edab9ea8b98f7e0af08861c9b86cc1409..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/logo/logo.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/logo/maildev.png b/src/test/shell/data/apps/images/logo/maildev.png deleted file mode 100644 index 060afd41b4ae05f664513fdc51a04a85565e6f4a..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/logo/maildev.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/logo/nav.svg b/src/test/shell/data/apps/images/logo/nav.svg deleted file mode 100644 index 92a1c26b1ef9cad374829a4f29001b7ee7e4049c..0000000000000000000000000000000000000000 --- a/src/test/shell/data/apps/images/logo/nav.svg +++ /dev/null @@ -1,112 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="1000pt" - height="500pt" - id="svg2" - sodipodi:version="0.32" - inkscape:version="0.92.3 (2405546, 2018-03-11)" - sodipodi:docname="nav.svg" - inkscape:export-filename="C:\Documents and Settings\Morten\Desktop\navlogo-raster2.png" - inkscape:export-xdpi="178.09663" - inkscape:export-ydpi="178.09663" - inkscape:output_extension="org.inkscape.output.svg.inkscape" - sodipodi:modified="true" - version="1.1"> - <defs - id="defs4" /> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="0.31074537" - inkscape:cx="207.36214" - inkscape:cy="-235.47812" - inkscape:document-units="px" - inkscape:current-layer="layer1" - showgrid="false" - inkscape:window-width="1920" - inkscape:window-height="1017" - inkscape:window-x="-8" - inkscape:window-y="-8" - fit-margin-top="10" - fit-margin-left="70" - fit-margin-right="70" - fit-margin-bottom="30" - inkscape:window-maximized="1" - showguides="true" - inkscape:guide-bbox="true"> - <sodipodi:guide - position="1087.7073,775.5546" - orientation="1,0" - id="guide3875" - inkscape:locked="false" /> - </sodipodi:namedview> - <metadata - id="metadata7"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title /> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:label="Layer 1" - inkscape:groupmode="layer" - id="layer1" - transform="translate(75.298302,-5.0576117)"> - <path - sodipodi:nodetypes="cccc" - id="path2105" - d="M 225.77471,407.7685 53.129301,127.80529 l 172.628489,0.0694 z" - style="fill:#567899;fill-opacity:1;stroke-width:1.21210277" - inkscape:connector-curvature="0" /> - <path - sodipodi:nodetypes="cccc" - id="path2127" - d="M 53.111623,363.68322 193.47143,587.52341 53.234751,587.45408 Z" - style="fill:#2d5a86;fill-opacity:1;stroke-width:1.21210277" - inkscape:connector-curvature="0" /> - <path - style="fill:#567899;fill-opacity:1;stroke-width:1.21210277" - d="m 359.22227,127.82815 212.30827,-0.004 -151.2551,459.69934 H 359.0716 Z" - id="rect2129" - sodipodi:nodetypes="ccccc" - inkscape:connector-curvature="0" /> - <path - style="fill:#2d5a86;fill-opacity:1;stroke-width:1.21210277" - d="m 647.02638,263.75269 -49.95313,179.86256 h 100.01878 z m -81.00508,291.77705 -8.88805,31.97558 179.89879,-0.12491 -8.88806,-31.85067 z" - id="path2159" - inkscape:export-filename="C:\Documents and Settings\Morten\Desktop\navlogo-raster.png" - inkscape:export-xdpi="581.76361" - inkscape:export-ydpi="581.76361" - inkscape:connector-curvature="0" /> - <path - style="fill:#567899;fill-opacity:1;stroke-width:1.21210277" - d="m 726.32077,127.87464 136.81089,0.077 158.41564,459.44352 -144.01087,0.13235 z" - id="rect2138" - sodipodi:nodetypes="ccccc" - inkscape:connector-curvature="0" /> - <path - sodipodi:nodetypes="cccc" - id="path2141" - d="m 1217.4371,127.84669 -205.0281,0.0833 102.656,363.62064 z" - style="fill:#2d5a86;fill-opacity:1;stroke-width:1.21210277" - inkscape:connector-curvature="0" /> - </g> -</svg> diff --git a/src/test/shell/data/apps/images/logo/netbox.svg b/src/test/shell/data/apps/images/logo/netbox.svg deleted file mode 100644 index 5321be100eee2cfafdfc94a9bcfb08054b83c80d..0000000000000000000000000000000000000000 --- a/src/test/shell/data/apps/images/logo/netbox.svg +++ /dev/null @@ -1,21 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1100 320"> - <g fill="#9cc8f8" stroke="#9cc8f8"> - <circle cx="37" cy="284" r="23"/> - <circle cx="101" cy="37" r="23"/> - <circle cx="101" cy="220" r="23"/> - <circle cx="284" cy="220" r="23"/> - <rect x="93" y="37" width="16" height="180"/> - <rect x="101" y="212" width="180" height="16"/> - <rect x="93" y="212" width="16" height="90" transform="rotate(45 101 220)"/> - </g> - <g fill="#1685fc" stroke="#1685fc"> - <circle cx="284" cy="37" r="23"/> - <circle cx="37" cy="101" r="23"/> - <circle cx="220" cy="101" r="23"/> - <circle cx="220" cy="284" r="23"/> - <rect x="37" y="93" width="180" height="16"/> - <rect x="212" y="101" width="16" height="180"/> - <rect x="212" y="93" width="16" height="90" transform="rotate(225 220 101)"/> - <path transform="translate(380, 8)" d="M13.60 200L13.60 104L36.40 104L36.40 119.40L36.80 119.40Q40.20 112.20 47.20 106.90Q54.20 101.60 66.20 101.60L66.20 101.60Q75.80 101.60 82.50 104.80Q89.20 108 93.40 113.20Q97.60 118.40 99.40 125.20Q101.20 132 101.20 139.40L101.20 139.40L101.20 200L77.20 200L77.20 151.40Q77.20 147.40 76.80 142.50Q76.40 137.60 74.70 133.30Q73 129 69.40 126.10Q65.80 123.20 59.60 123.20L59.60 123.20Q53.60 123.20 49.50 125.20Q45.40 127.20 42.70 130.60Q40 134 38.80 138.40Q37.60 142.80 37.60 147.60L37.60 147.60L37.60 200L13.60 200ZM224.80 160.40L151.60 160.40Q152.80 171.20 160 177.20Q167.20 183.20 177.40 183.20L177.40 183.20Q186.40 183.20 192.50 179.50Q198.60 175.80 203.20 170.20L203.20 170.20L220.40 183.20Q212 193.60 201.60 198Q191.20 202.40 179.80 202.40L179.80 202.40Q169 202.40 159.40 198.80Q149.80 195.20 142.80 188.60Q135.80 182 131.70 172.70Q127.60 163.40 127.60 152L127.60 152Q127.60 140.60 131.70 131.30Q135.80 122 142.80 115.40Q149.80 108.80 159.40 105.20Q169 101.60 179.80 101.60L179.80 101.60Q189.80 101.60 198.10 105.10Q206.40 108.60 212.30 115.20Q218.20 121.80 221.50 131.50Q224.80 141.20 224.80 153.80L224.80 153.80L224.80 160.40ZM151.60 142.40L200.80 142.40Q200.60 131.80 194.20 125.70Q187.80 119.60 176.40 119.60L176.40 119.60Q165.60 119.60 159.30 125.80Q153 132 151.60 142.40L151.60 142.40ZM259.80 124.40L240.00 124.40L240.00 104L259.80 104L259.80 76.20L283.80 76.20L283.80 104L310.20 104L310.20 124.40L283.80 124.40L283.80 166.40Q283.80 173.60 286.50 177.80Q289.20 182 297.20 182L297.20 182Q300.40 182 304.20 181.30Q308 180.60 310.20 179L310.20 179L310.20 199.20Q306.40 201 300.90 201.70Q295.40 202.40 291.20 202.40L291.20 202.40Q281.60 202.40 275.50 200.30Q269.40 198.20 265.90 193.90Q262.40 189.60 261.10 183.20Q259.80 176.80 259.80 168.40L259.80 168.40L259.80 124.40ZM333.20 200L333.20 48.80L357.20 48.80L357.20 116.20L357.80 116.20Q359.60 113.80 362.40 111.30Q365.20 108.80 369.20 106.60Q373.20 104.40 378.40 103Q383.60 101.60 390.40 101.60L390.40 101.60Q400.60 101.60 409.20 105.50Q417.80 109.40 423.90 116.20Q430 123 433.40 132.20Q436.80 141.40 436.80 152L436.80 152Q436.80 162.60 433.60 171.80Q430.40 181 424.20 187.80Q418 194.60 409.20 198.50Q400.40 202.40 389.40 202.40L389.40 202.40Q379.20 202.40 370.40 198.40Q361.60 194.40 356.40 185.60L356.40 185.60L356 185.60L356 200L333.20 200ZM412.80 152L412.80 152Q412.80 146.40 410.90 141.20Q409 136 405.30 132Q401.60 128 396.40 125.60Q391.20 123.20 384.60 123.20L384.60 123.20Q378 123.20 372.80 125.60Q367.60 128 363.90 132Q360.20 136 358.30 141.20Q356.40 146.40 356.40 152L356.40 152Q356.40 157.60 358.30 162.80Q360.20 168 363.90 172Q367.60 176 372.80 178.40Q378 180.80 384.60 180.80L384.60 180.80Q391.20 180.80 396.40 178.40Q401.60 176 405.30 172Q409 168 410.90 162.80Q412.80 157.60 412.80 152ZM458.40 152L458.40 152Q458.40 140.60 462.50 131.30Q466.60 122 473.60 115.40Q480.60 108.80 490.20 105.20Q499.80 101.60 510.60 101.60L510.60 101.60Q521.40 101.60 531 105.20Q540.60 108.80 547.60 115.40Q554.60 122 558.70 131.30Q562.80 140.60 562.80 152L562.80 152Q562.80 163.40 558.70 172.70Q554.60 182 547.60 188.60Q540.60 195.20 531 198.80Q521.40 202.40 510.60 202.40L510.60 202.40Q499.80 202.40 490.20 198.80Q480.60 195.20 473.60 188.60Q466.60 182 462.50 172.70Q458.40 163.40 458.40 152ZM482.40 152L482.40 152Q482.40 157.60 484.30 162.80Q486.20 168 489.90 172Q493.60 176 498.80 178.40Q504 180.80 510.60 180.80L510.60 180.80Q517.20 180.80 522.40 178.40Q527.60 176 531.30 172Q535 168 536.90 162.80Q538.80 157.60 538.80 152L538.80 152Q538.80 146.40 536.90 141.20Q535 136 531.30 132Q527.60 128 522.40 125.60Q517.20 123.20 510.60 123.20L510.60 123.20Q504 123.20 498.80 125.60Q493.60 128 489.90 132Q486.20 136 484.30 141.20Q482.40 146.40 482.40 152ZM575.40 200L614 148.40L580.80 104L610 104L629.20 132.80L650 104L677.40 104L644.60 148.40L683.20 200L654 200L629 165.60L603.80 200L575.40 200Z"/> - </g> -</svg> diff --git a/src/test/shell/data/apps/images/logo/open-nti.svg b/src/test/shell/data/apps/images/logo/open-nti.svg deleted file mode 100644 index efbe760b88d4857f3f581281db3a62114c03b076..0000000000000000000000000000000000000000 --- a/src/test/shell/data/apps/images/logo/open-nti.svg +++ /dev/null @@ -1,75 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - version="1.1" - id="Layer_1" - x="0px" - y="0px" - width="396.87555" - height="177.98422" - viewBox="0 0 396.87555 177.98422" - enable-background="new 0 0 400 400" - xml:space="preserve" - sodipodi:docname="open-nti.svg" - inkscape:version="0.92.3 (2405546, 2018-03-11)"><metadata - id="metadata24"><rdf:RDF><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs - id="defs22" /><sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1920" - inkscape:window-height="1017" - id="namedview20" - showgrid="false" - inkscape:zoom="2.12" - inkscape:cx="182.5773" - inkscape:cy="90.880918" - inkscape:window-x="-8" - inkscape:window-y="-8" - inkscape:window-maximized="1" - inkscape:current-layer="Layer_1" /> <image - id="image0" - width="400" - height="400" - x="-2.508708" - y="-112.85967" - href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZAAAAGQCAAAAACl1GkQAAAABGdBTUEAALGPC/xhBQAAACBjSFJN AAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QA/4ePzL8AAAAHdElN RQfiDAoSJzmnd1A/AAANE0lEQVR42u2d33mrOB6GNfvsPXRgtgJzKjBTQdgKzKkgTAWHU0GYCkwq iFNBSAVRKgipILiC7EWQ+CdAODZ8z+z33iCLH5LgDRYI4fzxKQgS/1q7AaQNhYBBIWBQCBgUAgaF gEEhYFAIGBQCBoWAQSFgUAgYFAIGhYBBIWBQCBgUAgaFgEEhYFAIGBQCBoWAQSFgUAgYFAIGhYBB IWBQCBgUAgaFgEEhYFAIGBQCBoWAQSFgUAgYFAIGhYBBIWBQCBgUAgaFgEEhYFAIGBQCBoWAQSFg UAgYFAIGhYBBIWBQCBgUAgaFgEEhYFAIGBQCBoWAQSFgUAgYFAIGhYBBIWBQCBgUAgaFgEEhYFAI GBQCBoWAQSFgUAgYFAIGhYBBIWBQCBgUAgaFgEEhYFAIGBQCBoWAQSFgUAgYFAIGhYBBIWBQCBgU AgaFgEEhYFAIGBQCBoWAQSFgUAgYFAIGhYBBIWBQCBgUAgaFgEEhYFAIGBQCBoWAQSFgUAgYFAIG hYBBIWBQCBgUAgaFgEEhYFAIGBQCBoWAQSFgUAgYFAIGhYBBIWBQCBgUAgaFgEEhYFAIGBQCBoWA QSFgUAgYFAIGhYBBIWBQCBgUAgaFgEEhYFAIGBQCBoWAQSFgUAgYFAIGhYBBIWBQCBgUAgaFgEEh YFAIGBQCBoWAQSFgUAgYFAIGhYBBIWBQCBj/Pm8zWeZC5EJ4nvA83117L/5B/PE5e5PieHxu52yC MFx7R+ZxPBZCCOH5kTsUUqZ58e74XuJVGTK2Lt7NVLFZ+iqE2ISp9bafMzlsjcU4+7e5Ja1IvQ/O 01DMXRVxozJuZgi/Uxs5VcaLbdNm9iGZ9/PVuOJ0/5+omFfWehzrfTiFciCo7CxFPqMGHXvqljLF LCHS//k+vPbeT889QgsjG+lTaLvVyTZQzDj+PeYISX+8jq4//RWe35DVeE/WbkGLGUKivyZDHoNy 7R2aT1rYxW3twoQQQvhnt8b+sje6b37a+L4IRFGIXDZP5dcgd799hBbmlGRWceGrVZgQQojo7NZY C2n62MShV3+SWVY7eY2O3zw+y3Ovr2xHSXpXLXGlaB91VnznzszyauxQb+Ecuis/bhsF/lr7mnaa X51jsB8L2g2Xs5veZVXFk23bLPsQ+VMnd0X370G46ctGf/gtz//rWBh1k3Cfr92SGkshkU7tjZ2E L+suL157n6zRe5Ws3ZIaOyGZ7s/2mTnCzbWR53ztnbLF3eM12U5IohK7bHDnMqcXDY9uabx2SzRW QjJ1f+4ch4N8vVPPcu29ssVTp8hrtnZTFFZCEpVI3bEo3bHD7N0Eeb1nyfmlXBab+xCpTpBNNBqX qEuxY9rKLwohPK/+eJSFPImd8IPAnai6yKUU8iS2rusHwUBQKYUQQaP8vHwWju/6oT+1a96+ur16 z6Kp2IWwuDTWdxmHiUDdi7z0N99Wn552zdrHB+07Q/0DQ/xf4+TOm6H8jbnFjVuMN134B8Z9iI0Q 9VXkTAVqc60W7hrmX1o6xnfmsBE9TEp2jYJ65W9fxoV87ocagntjqL+xwqlIHSAHApIfz92s3wPj kUVgGuq/949jDUh75b8G2XibU3Vap6VAwEJIrhLhVGTQ26RFGf425D4bjUj/2VjG6b/ZYPWlaTz6 9PM42mY3VoHp9KFYAJszRCWCyVB1Dp9Kw8oyeDRu9Boa6gwGHwf9zAZWlMG9MX/iSWasTpHf43EL MUPI1p0M9bvbNIsJGsPXre7hOenHah+b28PT09Pdvt7iZ26suwwGhsdP8Wib9SkCcuk73c2oyJvp UD0mfOh3ffoSbPfw9vn5+XbXkNLpqj/0qsZl0oPO7FwQdfpx5/bl8/Pz49DI7vaonf56Y2wGbKcu VcKftuupRNFfV/3N37zloSeE8GKpL3C6f5uJ6s73MtKZoY4f/ba/KVJfCOFG+Z3Oy8ZbrWuPp/fw 6kwLKVXCny7NmwpwHo46xs20kfuiGST/rhJ7Pb2pHT98QeQcjnqTWJ+v94PxQgghInWKPOb2B+5a TAsp9AGZLs1TiYE9c/Kw+THTU53SZnZSLW+yzuZpdeRO3RV1+VHjU6SFDzRHt6Nb84pcVsgETu63 M/RNwLFZYXUx5mTd7V2V01tjLj9RCTnerkB1BgDD8DNmnfgWMc7oyq4P4UVV4l3Wmalaur0SguoU eS2syteDuflEsxOViO0Px5W48Ox3f2Rd30fjAOR13rEKDw1lRP3wmn75QbUsJ5qtT5H1h+EXfB0h 8/t5nho+zHWWGqkJXUMZgQoyrDv4g+GTE3gylUiWOx5mFhQSmjKDalnonLyzxhguDeuifpZn2zb9 5faeLndAjFxYSDl3g6Ba1n/DsrPmW/XsLOMaT6pm78JlubCQGZP7vvBVolAJWS09Y/z2zHqm8NSN +dpjjDPeoJL+jP2bHViolDrW+bIHIk6roYQ0dpetuc0MIeWMYj3rSGdoWPfPZQ+EG1fPBk5JumzN baa/srwZpeXzG+B/v4jLEKsBlL+LtZogxCwh+Yxig9kNmVP6VXATlUrOL+T7zOjUy+mQXO/dlZu9 +X4RPfQYY3uoc2GmhQQqIadL0yH+7IZ4s6KTaxyLpJdYAYtOfVPdOsvpUBUy52WjCq9bazQSa7yL /zZRVj3Ht3xh5CpYCPEqISd9ZTpEoR4sBd9v2Bqv/iXqys7ynaprYNGHBCpxnIrUAb59A7qTS2Zs enH0GOOKvcgcIflUZKYSoXX9pUr41dJd7VCIxnOyZLUmzBHyWIwHSnWTvXOt65cqoTdxumsWxFdj jOu9U2Vz2asftGbjcalKRPb1qx2vRwH9almscTiSXmJpbISEKjE+2zJX89SMj5aGNqqWns7xO2sW xVPTk1d7mGslRH2LnJKxsFjHu8b1R0Neofr0QGcFI+HXJ1H7utaVr40QN1Spv/PhqFgPiSfmgEj2 8zKVCEQ39T5S1/XQ8xifizWqn/sGlRj+MZNMTaYSe88ccQpkN6tMq8S23sZVd5WJWAM91Tf9Tinn YyVEP+AUp6Awh2T6RXZncE/6RtQziNZlQFwtn49rHBA9xjjnx38uiN3gop4/JV793LC+jOsfFmjN NmzTNZLr1xOiRq7uskzfcdcnvsbApT12QvQMNSFOf0Zld3Xu6+8rsQ9Hyjm1Xp+ROnTvNiuLdbQ0 lFGmYSyuSXLV0iexnJS9b26zf2hOVW+9Cbj96G3anmhwo6eY15OhnbfWBvXkd/GrW9zDXojONPXd yJ6Y101MbG8PjS48+932EW4mG/MK7u/FzndFUEpRyNZ8g+3krzM9Pu5D3xO5TOs31jqXmG6mH9/+ TqMwUB+kzI9f3+yTw5zfIl346XEbW3MfNkPqhvOj/jsanGba/xu8a5e62+12u2b9T6byL3aGtM9p 0DNEuDK6n4q5GenQhcgHXlPbHntZsWzWdfE5P1OkP5ausWbGI9zsMDqVWjh39bsZJvzceP1i/JbL 7sZKcvzrHhT/9vtlnMuciXKR3I+s3Rfx1H5Kw0/f3ph7nfhp+OpzM3oiXoK08f0YXLmuDrNmLnrZ 2958lji3bxZHyT0+dDbfPAydVUFxMCvZHorw6oel/rEpm5HS6T2f8ZjHtrPRnfth3z1Qm9Zl8HjH +nHbULI9jNf10NW/2R/e+lFf7bk1lfB1njmddW9fZ6rxVx4Uh50jhBA3Y73x05e2+kq+z9errc7e +vie8dvvQhRFLopCCCE8z/WnfvExqEZ0VU15/vVrNL7vTVclC1nK6ZrGroPN6y515Vy6kxGznoKe JWQeXSFkDP7/EDAoBAwKAYNCwKAQMCgEDAoBg0LAoBAwKAQMCgGDQsCgEDAWEOJ+Lc547/D/kQWG 38tciqu9qPmPYwEhZA7sQ8CgEDAoBAwKAYNCwKAQMCgEDAoBg0LAoBAwKAQMCgGDQsCgEDAoBAwK AYNCwKAQMCgEDAoBg0LAoBAwKAQMCgGDQsCgEDAoBAwKAYNCwKAQMCgEDAoBg0LAoBAwKAQMCgGD QsCgEDAoBAwKAYNCwKAQMCgEDAoBg0LAoBAwKAQMCgGDQsCgEDAoBAwKAYNCwKAQMCgEDAoBg0LA oBAwKAQMCgGDQsCgEDAoBAwKAYNCwKAQMCgEDAoBg0LAoBAwKAQMCgGDQsCgEDAoBAwKAYNCwKAQ MCgEDAoBg0LAoBAwKAQMCgGDQsCgEDAoBAwKAYNCwKAQMCgEDAoBg0LAoBAwKAQMCgGDQsCgEDAo BAwKAYNCwKAQMCgEDAoBg0LAoBAwKAQMCgGDQsCgEDAoBAwKAYNCwKAQMCgEDAoBg0LAoBAwKAQM CgGDQsCgEDAoBAwKAYNCwKAQMCgEDAoBg0LAoBAwKAQMCgGDQsCgEDAoBAwKAYNCwKAQMCgEDAoB g0LAoBAwKAQMCgGDQsCgEDAoBAwKAYNCwKAQMCgEDAoBg0LAoBAwKAQMCgGDQsCgEDAoBAwKAeN/ gtH2pmU1y3wAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTgtMTItMTFUMDE6Mzk6NTctMDc6MDCFj2Gq AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE4LTEyLTExVDAxOjM5OjU3LTA3OjAw9NLZFgAAAABJRU5E rkJggg==" /> -<flowRoot - xml:space="preserve" - id="flowRoot26" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:96px;line-height:1.25;font-family:Arial;-inkscape-font-specification:Arial;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none" - transform="translate(-2.5087081,-112.85967)"><flowRegion - id="flowRegion28" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:96px;font-family:Arial;-inkscape-font-specification:Arial"><rect - id="rect30" - width="379.71698" - height="206.13208" - x="7.5471697" - y="92.452827" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:96px;font-family:Arial;-inkscape-font-specification:Arial" /></flowRegion><flowPara - id="flowPara32"></flowPara></flowRoot><flowRoot - xml:space="preserve" - id="flowRoot50" - style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none" - transform="matrix(1.0215088,0,0,1.6404098,-5.1443619,-179.42238)"><flowRegion - id="flowRegion52"><rect - id="rect54" - width="384.90567" - height="192.92453" - x="8.0188675" - y="106.13207" /></flowRegion><flowPara - id="flowPara56" - style="font-size:86.66665649px">OpenNTI</flowPara></flowRoot></svg> \ No newline at end of file diff --git a/src/test/shell/data/apps/images/logo/oxidized.svg b/src/test/shell/data/apps/images/logo/oxidized.svg deleted file mode 100644 index 14070779101810ea0961dadf57f2058be37d9817..0000000000000000000000000000000000000000 --- a/src/test/shell/data/apps/images/logo/oxidized.svg +++ /dev/null @@ -1,93 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="350.0007" - height="350.00003" - id="svg24159" - sodipodi:version="0.32" - inkscape:version="0.92.3 (2405546, 2018-03-11)" - version="1.0" - sodipodi:docname="oxidized.svg"> - <defs - id="defs24161" /> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="0.35" - inkscape:cx="390.00033" - inkscape:cy="204.69149" - inkscape:document-units="px" - inkscape:current-layer="layer1" - inkscape:window-width="1920" - inkscape:window-height="1017" - inkscape:window-x="-8" - inkscape:window-y="-8" - showgrid="false" - inkscape:window-maximized="1" /> - <metadata - id="metadata24164"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:label="Layer 1" - inkscape:groupmode="layer" - id="layer1" - transform="translate(-24.999669,-24.999948)"> - <g - id="g24054" - transform="matrix(2.53805,0,0,2.538045,839.4215,667.5041)"> - <circle - transform="matrix(0.24219,0,0,0.24219,-358.8457,-306.2258)" - id="path3282" - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:46.13452911;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none" - cx="441.43668" - cy="503.84937" - r="261.62952" /> - <g - id="g24048"> - <g - id="g650" - transform="matrix(0.603046,0,0,0.603046,-297.3391,-238.3623)"> - <path - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" - d="m 76.4375,16.5 c -2e-6,0 -7.13742,5.42072 -6.34375,14.8125 0.793684,9.391789 2.39771,7.28803 0.28125,12.84375 -4.89432,-5.555638 -9.9375,-5.96875 -9.9375,-5.96875 10e-7,2e-6 2.77184,4.0996 2.375,11.375 -0.396839,7.275393 -3.03125,12.3125 -3.03125,12.3125 L 56.875,62.28125 c 0,10e-7 -1.97427,-5.3125 -5.28125,-5.3125 C 53.710221,69.799872 45.88228,80.2573 45.75,80.125 c -0.132278,-0.132296 -3.69603,-0.66693 -5.8125,-3.3125 -0.66139,2.116395 -0.39345,4.75769 2.78125,8.59375 -1.058229,2.910077 -3.32115,17.74901 4.21875,29.125 0.520773,0.73173 1.211956,1.31499 1.90625,1.90625 -0.530917,-2.14 -0.90625,-4.35281 -0.90625,-6.65625 0,-15.28292 12.404567,-27.6875 27.6875,-27.6875 15.282931,-3e-6 27.6875,12.404577 27.6875,27.6875 0,1.70751 -0.20363,3.37767 -0.5,5 0.47408,-0.16195 2.20917,-0.62751 2.21875,-0.65625 0.1323,-0.26449 3.8198,-4.49101 3.6875,-8.0625 -0.1322,-3.57159 0.12415,-25.4127 1.84375,-27 1.7197,-1.587302 -2.91055,1.17805 -3.96875,0.78125 -1.0583,-0.396808 1.4641,-26.44388 -3.5625,-28.03125 0.1323,6.481702 -3.15625,11.90625 -3.15625,11.90625 -10e-7,2e-6 -1.585582,-12.42239 -3.4375,-18.375 -1.851903,-5.952609 -6.625,-8.59375 -6.625,-8.59375 2e-6,2e-6 1.06338,5.93575 -0.65625,9.375 -1.719628,3.439261 -1.19177,-5.29708 -2.25,-7.28125 -1.058242,-1.984178 -7.5428,-10.02949 -8.46875,-13.46875 -0.925946,-3.439249 -2,-8.875 -2,-8.875 z m 1.34375,40.71875 c -2e-6,-10e-7 1.01979,6.948608 1.625,8.5625 0.605206,1.613888 3.424827,7.473954 2.71875,10.5 -0.706074,3.026046 -5.545136,5.330214 -7.5625,1.09375 -2.017365,-4.236464 -2.329001,-15.919786 3.21875,-20.15625 z M 65.375,67.40625 c 1.109551,0.201732 4.816841,2.709018 4.3125,10.375 -1.10955,4.942542 -5.634895,3.831777 -5.9375,-1.3125 -0.302601,-2.219099 1.322396,-4.725168 1.625,-9.0625 z m 24.8125,7.75 C 92.608338,82.41876 90,81.812499 90,81.8125 c -3.732122,0 -2.031601,-4.235412 0.1875,-6.65625 z M 55.46875,78.6875 c 0.998544,0.78457 1.982458,4.673899 0.21875,4.53125 -2.26298,-0.142651 -1.259075,-4.11554 -0.21875,-4.53125 z M 98.25,79.59375 c 2.20897,2.379058 1.468225,7.347795 -0.09375,7.0625 -2.671516,0.219043 -1.586396,-5.817469 0.09375,-7.0625 z M 47.40625,91.6875 c 0.64192,0.855898 3.401833,5.93443 0.3125,5.75 -2.376087,-0.04178 -0.811772,-5.007211 -0.3125,-5.75 z m 57.1875,0.25 c 1.14119,0.07133 2.0589,3.894356 0.3125,3.78125 -1.60375,0.02954 -1.05528,-3.436864 -0.3125,-3.78125 z" - id="path649" - inkscape:connector-curvature="0" /> - <circle - style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:3.20609999;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1" - id="path582" - transform="matrix(1.013699,0,0,1.013699,-2.446365,-2.904882)" - cx="77.821404" - cy="111.3967" - r="27.312321" /> - </g> - <rect - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:29.67200089;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.55294118;marker:none;marker-start:none;marker-mid:none;marker-end:none" - id="rect10816" - width="42.397057" - height="3.114413" - x="-273.13269" - y="-154.77139" /> - </g> - </g> - </g> -</svg> diff --git a/src/test/shell/data/apps/images/logo/perfsonar.png b/src/test/shell/data/apps/images/logo/perfsonar.png deleted file mode 100644 index d62e219d4d441ee6cd631ec4f3e5cb61b72bc51e..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/logo/perfsonar.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/logo/pmacct.svg b/src/test/shell/data/apps/images/logo/pmacct.svg deleted file mode 100644 index 29c8aab24fd6e70dfa0d728c75375f34022241ca..0000000000000000000000000000000000000000 --- a/src/test/shell/data/apps/images/logo/pmacct.svg +++ /dev/null @@ -1,110 +0,0 @@ -<?xml version="1.0" standalone="no"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" - "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> -<svg version="1.0" xmlns="http://www.w3.org/2000/svg" - width="800.000000pt" height="400.000000pt" viewBox="0 0 400.000000 400.000000" - preserveAspectRatio="xMidYMid meet"> -<metadata> -Created by potrace 1.13, written by Peter Selinger 2001-2015 -</metadata> -<g transform="translate(0.000000,400.000000) scale(0.100000,-0.100000)" -fill="#000000" stroke="none"> -<path d="M2096 3985 c-3 -9 -18 -15 -40 -15 -19 0 -41 -7 -50 -15 -8 -8 -28 --15 -45 -15 -16 0 -33 -5 -36 -10 -4 -6 -23 -17 -42 -25 -42 -18 -225 -194 --248 -239 -8 -17 -20 -38 -24 -46 -32 -52 -51 -106 -51 -139 0 -22 -6 -44 -15 --51 -21 -17 -22 -266 -1 -295 8 -13 15 -60 18 -127 3 -59 9 -113 15 -120 6 -7 -13 -57 16 -111 3 -54 11 -105 18 -113 7 -8 13 -59 16 -126 3 -75 9 -118 19 --132 10 -14 14 -48 14 -112 0 -69 4 -95 15 -104 12 -10 15 -37 15 -119 0 -79 -4 -112 15 -127 10 -13 14 -46 15 -110 0 -63 4 -96 15 -110 10 -13 14 -46 15 --114 0 -64 5 -104 15 -124 8 -15 15 -52 15 -81 0 -40 4 -54 17 -59 24 -10 154 -5 178 19 11 7 58 13 105 14 54 1 93 7 107 17 16 10 53 14 125 14 75 1 108 5 -122 15 14 11 46 15 112 15 69 0 95 4 104 15 10 11 35 15 110 15 75 0 100 4 -110 15 10 12 36 15 117 15 115 0 159 15 170 58 8 33 -7 173 -22 196 -7 12 -13 -59 -14 111 -2 62 -7 95 -17 106 -10 11 -14 43 -14 120 -1 76 -5 109 -15 123 --11 14 -15 46 -15 112 0 69 -4 95 -15 104 -12 10 -15 37 -15 119 0 79 -4 112 --15 127 -10 13 -14 46 -15 110 0 63 -4 96 -15 110 -10 13 -14 46 -15 109 0 60 --5 97 -14 110 -8 13 -15 60 -18 128 -3 62 -10 113 -16 119 -7 7 -12 34 -12 61 -0 34 -6 57 -20 74 -11 14 -20 37 -20 52 0 14 -7 35 -15 45 -8 11 -15 26 -15 -33 0 8 -13 28 -30 46 -16 18 -30 38 -30 44 0 18 -118 136 -155 156 -16 9 -44 -23 -62 31 -17 9 -34 20 -38 26 -3 5 -16 10 -28 10 -12 0 -31 7 -41 15 -11 8 --33 15 -48 15 -16 0 -31 7 -34 15 -5 12 -30 15 -139 15 -109 0 -134 -3 -139 --15z m85 -114 c4 -1 10 -8 13 -17 8 -20 -11 -44 -34 -44 -10 0 -23 -7 -30 -15 --7 -8 -26 -15 -42 -15 -18 0 -45 -12 -68 -30 -21 -16 -44 -30 -52 -30 -19 0 --188 -173 -188 -192 0 -9 -7 -21 -15 -28 -8 -7 -15 -21 -15 -31 0 -20 -33 -59 --50 -59 -6 0 -10 29 -10 68 0 57 5 78 35 137 38 74 146 195 176 195 9 0 22 7 -29 15 7 8 24 15 39 15 14 0 38 8 53 18 23 15 105 22 159 13z m-241 -1576 c9 --11 32 -15 80 -15 50 0 69 -4 73 -14 4 -9 23 -16 49 -18 l43 -3 3 -85 c3 -83 -4 -86 39 -122 21 -21 45 -38 54 -38 9 0 22 -7 29 -15 8 -10 30 -15 65 -15 35 -0 57 5 65 15 7 8 19 15 28 15 21 0 62 40 62 61 0 9 7 22 15 29 8 7 15 34 17 -68 l3 57 153 3 c83 1 152 -1 153 -5 1 -5 2 -36 3 -71 1 -49 -2 -66 -16 -79 --11 -10 -18 -30 -18 -53 0 -24 -5 -40 -15 -44 -8 -3 -15 -16 -15 -30 0 -13 -7 --26 -15 -30 -8 -3 -15 -16 -15 -28 0 -28 -100 -128 -128 -128 -11 0 -22 -7 --26 -15 -3 -8 -17 -15 -31 -15 -14 0 -28 -7 -31 -15 -4 -10 -20 -15 -44 -15 --21 0 -43 -7 -50 -15 -9 -11 -34 -15 -95 -15 -61 0 -86 4 -95 15 -7 8 -29 15 --50 15 -24 0 -40 5 -44 15 -3 8 -17 15 -31 15 -14 0 -28 7 -31 15 -4 8 -15 15 --26 15 -28 0 -128 100 -128 128 0 12 -7 25 -15 28 -8 4 -15 17 -15 30 0 14 -7 -27 -15 30 -11 4 -15 21 -15 57 0 34 -6 57 -17 70 -25 27 -26 101 -2 123 12 11 -19 31 19 56 0 40 10 48 30 23z m407 -56 c7 -7 29 -15 50 -18 48 -8 54 -33 17 --72 -38 -40 -74 -38 -124 7 -45 40 -47 49 -23 76 18 20 63 24 80 7z"/> -<path d="M1055 1850 c-54 -55 -55 -57 -55 -114 0 -56 1 -59 57 -117 l56 -59 -72 0 c69 0 74 2 114 36 22 20 41 45 41 54 0 10 7 25 15 34 9 9 15 33 15 65 0 -47 -3 53 -54 105 l-54 56 -76 -2 -76 -2 -55 -56z"/> -<path d="M419 1754 c-49 -25 -109 -85 -109 -108 0 -8 -7 -19 -15 -26 -11 -9 --15 -35 -15 -105 0 -70 4 -96 15 -105 8 -7 15 -20 15 -29 0 -21 80 -101 102 --101 8 0 21 -7 28 -15 9 -11 35 -15 105 -15 70 0 96 4 105 15 7 8 20 15 28 15 -22 0 102 80 102 101 0 9 7 22 15 29 11 9 15 33 15 90 0 57 -4 81 -15 90 -8 7 --15 23 -15 37 0 13 -6 26 -14 29 -8 3 -17 16 -20 30 -4 14 -16 26 -30 30 -14 -3 -27 12 -30 20 -3 8 -16 14 -29 14 -14 0 -30 7 -37 15 -21 25 -145 19 -201 --11z"/> -<path d="M3498 1447 c-16 -13 -28 -26 -28 -30 0 -4 23 -7 52 -7 43 0 57 -5 80 --27 25 -23 28 -34 28 -86 0 -60 0 -60 -58 -119 l-59 -58 -76 0 -76 0 -71 70 -c-38 38 -70 78 -70 88 0 11 -7 25 -15 32 -8 7 -15 27 -15 45 0 47 -18 58 -87 -50 -32 -4 -62 -11 -68 -15 -5 -4 -38 -10 -73 -13 -35 -3 -65 -7 -67 -9 -6 -6 -20 -77 33 -90 7 -7 12 -20 12 -30 0 -10 7 -21 15 -24 8 -4 15 -16 15 -29 0 --28 163 -195 190 -195 10 0 23 -7 30 -15 7 -8 29 -15 50 -15 21 0 43 -7 50 --15 18 -21 152 -21 170 0 7 8 29 15 49 15 28 0 44 7 65 29 16 16 39 32 52 35 -13 4 24 13 24 20 0 8 16 33 35 56 35 42 35 42 35 141 l0 99 -41 45 c-23 25 --49 45 -59 45 -10 0 -23 7 -30 15 -18 22 -61 18 -92 -8z m-419 -133 c12 -15 -21 -37 21 -49 0 -31 -37 -75 -63 -75 -38 1 -67 34 -67 76 0 71 67 101 109 48z"/> -<path d="M1477 1333 c-4 -3 -7 -15 -7 -25 0 -11 -13 -23 -33 -31 -51 -22 -69 --45 -62 -79 12 -52 40 -71 105 -71 66 0 80 6 80 34 0 11 7 22 15 25 11 4 15 -21 15 58 0 42 -5 57 -23 74 -22 21 -76 30 -90 15z"/> -<path d="M2566 1325 c-15 -11 -48 -15 -125 -15 -89 -1 -110 -4 -128 -19 -24 --20 -30 -41 -13 -41 6 0 10 -17 10 -39 0 -22 6 -44 15 -51 8 -7 15 -19 15 -27 -0 -8 9 -26 20 -40 11 -14 20 -31 20 -37 0 -7 14 -25 30 -41 17 -16 30 -36 30 --45 0 -8 32 -47 70 -85 72 -71 150 -200 150 -249 0 -11 7 -30 15 -40 19 -26 -19 -80 0 -96 -9 -8 -15 -30 -15 -56 0 -34 -8 -54 -32 -88 -18 -25 -41 -56 -50 --69 -9 -13 -50 -40 -91 -60 -62 -31 -84 -37 -139 -37 -46 0 -69 4 -78 15 -7 8 --25 15 -41 15 -49 0 -138 111 -139 173 0 12 -7 31 -15 41 -19 25 -19 50 0 66 -8 7 15 27 15 46 0 27 12 45 70 104 l69 70 64 0 c61 0 66 -2 105 -40 40 -37 42 --42 42 -95 0 -41 3 -56 13 -53 7 3 13 29 15 70 3 65 2 67 -36 107 -21 23 -48 -41 -59 41 -11 0 -26 7 -33 15 -16 19 -90 20 -116 0 -10 -8 -31 -15 -46 -15 --41 0 -178 -124 -178 -161 0 -9 -7 -22 -15 -29 -12 -10 -15 -39 -15 -140 0 --101 3 -130 15 -140 8 -7 15 -20 15 -30 0 -10 7 -23 15 -30 8 -7 15 -19 15 --26 0 -17 68 -94 84 -94 6 0 33 -16 60 -35 29 -20 61 -35 78 -35 16 0 31 -7 -34 -15 9 -22 229 -22 238 0 3 8 16 15 29 15 14 0 30 7 37 15 7 8 21 15 31 15 -10 0 21 5 25 11 3 6 20 17 36 24 39 16 158 133 158 155 0 9 4 20 9 25 21 22 -61 108 61 133 0 15 7 36 15 46 21 28 21 284 0 312 -8 10 -15 33 -15 50 0 17 --9 43 -20 57 -11 14 -20 36 -20 49 0 12 -7 32 -15 42 -8 11 -15 27 -15 37 0 9 --7 22 -15 29 -8 7 -15 27 -15 45 0 18 -7 38 -15 45 -8 7 -15 29 -15 50 0 21 --7 43 -15 50 -10 8 -15 31 -15 66 l0 54 -82 0 c-57 -1 -89 -5 -102 -15z m-59 --97 c30 -28 31 -83 1 -115 -47 -51 -138 -12 -138 58 0 70 85 106 137 57z"/> -<path d="M2101 1266 c-8 -10 -44 -15 -124 -18 -62 -2 -121 -9 -132 -15 -11 -6 --29 -14 -39 -18 -15 -4 -17 -8 -8 -17 17 -17 15 -90 -3 -124 -8 -16 -15 -44 --15 -63 0 -29 -10 -44 -71 -103 l-71 -68 -63 0 c-35 0 -66 4 -69 8 -3 5 -45 -28 -93 52 -48 24 -103 57 -121 72 -18 15 -39 28 -46 28 -8 0 -19 7 -26 15 -7 -8 -20 15 -30 15 -10 0 -23 7 -30 15 -7 8 -23 15 -35 15 -12 0 -28 7 -35 15 -8 -9 -30 15 -60 15 -30 0 -52 6 -60 15 -16 19 -39 19 -64 0 -11 -8 -41 -15 -67 --15 -40 0 -51 -4 -72 -30 -14 -16 -30 -30 -36 -30 -6 0 -11 -5 -11 -11 0 -7 --8 -18 -17 -25 -10 -7 -13 -14 -7 -14 6 0 23 11 38 25 15 14 39 25 55 25 15 0 -36 7 47 15 24 18 64 18 88 0 11 -8 32 -15 47 -15 14 0 32 -7 39 -15 7 -8 18 --15 26 -15 7 0 26 -12 41 -26 15 -15 35 -29 44 -33 9 -3 67 -54 129 -113 62 --60 122 -108 132 -108 10 0 21 -7 24 -15 4 -8 16 -15 29 -15 12 0 28 -7 35 --15 7 -8 27 -15 45 -15 18 0 38 -7 45 -15 17 -21 143 -21 160 0 7 8 29 15 50 -15 24 0 40 5 44 15 3 8 17 15 31 15 15 0 25 6 25 14 0 7 8 17 18 20 48 18 112 -70 112 93 0 8 13 26 29 41 15 15 31 39 35 55 3 15 11 27 16 27 6 0 10 11 10 -24 0 13 7 29 15 36 16 13 21 80 7 80 -5 0 -19 -11 -32 -25 -29 -31 -60 -32 --88 -2 -47 50 -13 137 53 137 33 0 85 -44 85 -72 0 -22 16 -24 24 -2 11 28 6 -140 -6 152 -16 16 -33 15 -47 -2z"/> -</g> -</svg> diff --git a/src/test/shell/data/apps/images/logo/routinator.svg b/src/test/shell/data/apps/images/logo/routinator.svg deleted file mode 100644 index c654d83f001f95705b27c2073e37b778b7f37bc2..0000000000000000000000000000000000000000 --- a/src/test/shell/data/apps/images/logo/routinator.svg +++ /dev/null @@ -1 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 284 284" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;"><g><path d="M283.465,142.267c0,78.277 -63.456,141.732 -141.733,141.732c-78.277,0 -141.732,-63.455 -141.732,-141.732c0,-78.276 63.455,-141.732 141.732,-141.732c78.277,0 141.733,63.456 141.733,141.732Z" style="fill:url(#_Radial1);"/><path d="M214.994,82.54c-3.604,3.605 -9.448,3.605 -13.052,0c-3.605,-3.604 -3.605,-9.448 0,-13.053c3.604,-3.604 9.448,-3.604 13.052,0c3.605,3.605 3.605,9.449 0,13.053Zm14.52,-28.522c-18.298,2.446 -35.572,10.416 -49.191,24.035c-4.323,4.323 -9.525,10.464 -14.708,17.434l-10.463,0.742c-0.878,0.063 -1.75,0.005 -2.597,-0.164c1.943,-3.044 3.319,-6.353 4.125,-9.78c0.137,-0.579 -0.023,-1.168 -0.424,-1.569c-0.4,-0.401 -0.989,-0.561 -1.568,-0.425c-5.568,1.31 -10.827,4.117 -15.141,8.431c-3.108,3.109 -7.535,8.808 -10.644,14.222c-0.394,0.683 -0.271,1.55 0.151,2.387c-0.686,1.045 -1.17,2.186 -1.448,3.37c-0.046,0.193 0.007,0.389 0.141,0.523c0.134,0.133 0.329,0.187 0.523,0.142c1.183,-0.279 2.325,-0.763 3.37,-1.449c0.837,0.421 1.704,0.544 2.388,0.151c2.989,-1.717 6.063,-3.835 8.742,-5.911c0.984,-0.45 2.023,-0.833 3.092,-1.161l11.114,2.977c-2.196,3.422 -4.283,6.899 -6.183,10.341c-1.029,1.867 -0.671,4.268 0.508,6.639c-2.392,2.956 -4.94,6.558 -6.942,10.044c-0.394,0.684 -0.271,1.552 0.15,2.388c-0.686,1.045 -1.169,2.186 -1.448,3.37c-0.045,0.193 0.008,0.389 0.141,0.523c0.134,0.133 0.33,0.187 0.523,0.141c1.184,-0.278 2.325,-0.762 3.37,-1.447c0.837,0.42 1.704,0.543 2.388,0.15c3.487,-2.003 7.088,-4.551 10.044,-6.942c2.372,1.179 4.773,1.538 6.64,0.507c3.443,-1.898 6.919,-3.987 10.341,-6.182l2.978,11.114c-0.328,1.068 -0.711,2.107 -1.16,3.09c-2.077,2.679 -4.196,5.754 -5.913,8.744c-0.392,0.684 -0.27,1.551 0.151,2.388c-0.686,1.045 -1.169,2.186 -1.448,3.37c-0.046,0.193 0.007,0.389 0.141,0.523c0.134,0.134 0.33,0.187 0.523,0.141c1.184,-0.278 2.325,-0.762 3.371,-1.448c0.835,0.421 1.703,0.544 2.386,0.151c5.414,-3.109 11.114,-7.536 14.222,-10.644c4.313,-4.314 7.121,-9.572 8.432,-15.139c0.135,-0.579 -0.024,-1.168 -0.424,-1.569c-0.402,-0.401 -0.99,-0.562 -1.57,-0.425c-3.426,0.806 -6.735,2.182 -9.78,4.125c-0.169,-0.846 -0.226,-1.719 -0.164,-2.596l0.742,-10.465c6.97,-5.182 13.111,-10.384 17.434,-14.707c13.618,-13.618 21.589,-30.893 24.034,-49.189c0.035,-0.262 -0.054,-0.524 -0.24,-0.71c-0.186,-0.186 -0.448,-0.275 -0.709,-0.241Z" style="fill:#fff;fill-rule:nonzero;"/><path d="M204.117,71.663c-2.403,2.403 -2.403,6.299 0,8.702c2.403,2.403 6.299,2.403 8.702,0c2.403,-2.403 2.403,-6.299 0,-8.702c-2.403,-2.403 -6.299,-2.403 -8.702,0Z" style="fill:#fff;fill-rule:nonzero;"/><path d="M200.246,116.105c10.543,23.621 6.206,52.325 -13.147,71.678c-10.746,10.746 -24.992,17.35 -40.114,18.598c-5.028,0.414 -9.962,-1.398 -13.536,-4.972c-0.529,-0.53 -1.028,-1.098 -1.484,-1.693c-3.568,-4.649 -4.52,-10.719 -2.548,-16.235c5.607,-15.686 15.052,-30.084 21.517,-38.864c-1.024,0.393 -2.108,0.607 -3.239,0.473c-0.918,0.423 -1.878,0.752 -2.871,0.986c-1.818,0.428 -3.689,-0.101 -5.004,-1.416c-1.313,-1.313 -1.842,-3.183 -1.415,-5.001c0.234,-0.994 0.563,-1.955 0.985,-2.875c-0.175,-1.471 0.099,-2.912 0.821,-4.169c0.054,-0.096 0.128,-0.199 0.184,-0.295c-8.642,6.458 -23.529,16.418 -39.876,22.262c-5.527,1.976 -11.599,1.028 -16.243,-2.535c-0.593,-0.456 -1.162,-0.954 -1.69,-1.481c-3.572,-3.573 -5.384,-8.512 -4.968,-13.551c1.248,-15.123 7.853,-29.369 18.598,-40.114c19.528,-19.528 48.575,-23.763 72.314,-12.853c1.097,-1.324 2.174,-2.587 3.238,-3.796c-9.09,-4.411 -19.254,-6.956 -30.036,-6.956c-38.092,0 -68.972,30.879 -68.972,68.971c0,38.093 30.88,68.973 68.972,68.973c38.092,0 68.972,-30.88 68.972,-68.973c0,-10.53 -2.429,-20.471 -6.649,-29.399c-1.214,1.064 -2.481,2.141 -3.809,3.237Z" style="fill:#fff;fill-rule:nonzero;"/><path d="M214.994,82.54c-3.604,3.605 -9.448,3.605 -13.052,0c-3.605,-3.604 -3.605,-9.448 0,-13.053c3.604,-3.604 9.448,-3.604 13.052,0c3.605,3.605 3.605,9.449 0,13.053Zm14.52,-28.522c-18.298,2.446 -35.572,10.416 -49.191,24.035c-4.323,4.323 -9.525,10.464 -14.708,17.434l-10.463,0.742c-0.878,0.063 -1.75,0.005 -2.597,-0.164c1.943,-3.044 3.319,-6.353 4.125,-9.78c0.137,-0.579 -0.023,-1.168 -0.424,-1.569c-0.4,-0.401 -0.989,-0.561 -1.568,-0.425c-5.568,1.31 -10.827,4.117 -15.141,8.431c-3.108,3.109 -7.535,8.808 -10.644,14.222c-0.394,0.683 -0.271,1.55 0.151,2.387c-0.686,1.045 -1.17,2.186 -1.448,3.37c-0.046,0.193 0.007,0.389 0.141,0.523c0.134,0.133 0.329,0.187 0.523,0.142c1.183,-0.279 2.325,-0.763 3.37,-1.449c0.837,0.421 1.704,0.544 2.388,0.151c2.989,-1.717 6.063,-3.835 8.742,-5.911c0.984,-0.45 2.023,-0.833 3.092,-1.161l11.114,2.977c-2.196,3.422 -4.283,6.899 -6.183,10.341c-1.029,1.867 -0.671,4.268 0.508,6.639c-2.392,2.956 -4.94,6.558 -6.942,10.044c-0.394,0.684 -0.271,1.552 0.15,2.388c-0.686,1.045 -1.169,2.186 -1.448,3.37c-0.045,0.193 0.008,0.389 0.141,0.523c0.134,0.133 0.33,0.187 0.523,0.141c1.184,-0.278 2.325,-0.762 3.37,-1.447c0.837,0.42 1.704,0.543 2.388,0.15c3.487,-2.003 7.088,-4.551 10.044,-6.942c2.372,1.179 4.773,1.538 6.64,0.507c3.443,-1.898 6.919,-3.987 10.341,-6.182l2.978,11.114c-0.328,1.068 -0.711,2.107 -1.16,3.09c-2.077,2.679 -4.196,5.754 -5.913,8.744c-0.392,0.684 -0.27,1.551 0.151,2.388c-0.686,1.045 -1.169,2.186 -1.448,3.37c-0.046,0.193 0.007,0.389 0.141,0.523c0.134,0.134 0.33,0.187 0.523,0.141c1.184,-0.278 2.325,-0.762 3.371,-1.448c0.835,0.421 1.703,0.544 2.386,0.151c5.414,-3.109 11.114,-7.536 14.222,-10.644c4.313,-4.314 7.121,-9.572 8.432,-15.139c0.135,-0.579 -0.024,-1.168 -0.424,-1.569c-0.402,-0.401 -0.99,-0.562 -1.57,-0.425c-3.426,0.806 -6.735,2.182 -9.78,4.125c-0.169,-0.846 -0.226,-1.719 -0.164,-2.596l0.742,-10.465c6.97,-5.182 13.111,-10.384 17.434,-14.707c13.618,-13.618 21.589,-30.893 24.034,-49.189c0.035,-0.262 -0.054,-0.524 -0.24,-0.71c-0.186,-0.186 -0.448,-0.275 -0.709,-0.241Z" style="fill:#fff;fill-rule:nonzero;"/><path d="M204.117,71.663c-2.403,2.403 -2.403,6.299 0,8.702c2.403,2.403 6.299,2.403 8.702,0c2.403,-2.403 2.403,-6.299 0,-8.702c-2.403,-2.403 -6.299,-2.403 -8.702,0Z" style="fill:#fff;fill-rule:nonzero;"/><path d="M124.365,116.606c-0.007,-0.007 -0.011,-0.015 -0.018,-0.022c-0.007,-0.007 -0.016,-0.011 -0.023,-0.018c-0.594,-0.594 -1.004,-1.311 -1.26,-2.076c-6.582,6.723 -11.564,12.918 -15.248,18.625c5.707,-3.684 11.901,-8.665 18.625,-15.248c-0.765,-0.257 -1.482,-0.666 -2.076,-1.261Z" style="fill:#fff;fill-rule:nonzero;"/><path d="M167.875,160.117c-0.007,-0.007 -0.011,-0.016 -0.017,-0.023c-0.008,-0.007 -0.016,-0.011 -0.024,-0.017c-0.594,-0.595 -1.004,-1.312 -1.26,-2.078c-6.583,6.724 -11.564,12.919 -15.248,18.626c5.706,-3.684 11.902,-8.666 18.625,-15.248c-0.765,-0.257 -1.482,-0.667 -2.076,-1.26Z" style="fill:#fff;fill-rule:nonzero;"/><path d="M139.036,46.331c7.238,1.482 12.938,7.183 14.42,14.421c1.482,-7.238 7.183,-12.939 14.42,-14.421c-7.237,-1.482 -12.938,-7.182 -14.42,-14.42c-1.482,7.238 -7.182,12.938 -14.42,14.42Z" style="fill:#fff;fill-rule:nonzero;"/><path d="M72.76,72.482c5.888,1.205 10.525,5.843 11.73,11.731c1.206,-5.888 5.843,-10.526 11.731,-11.731c-5.888,-1.205 -10.525,-5.843 -11.731,-11.73c-1.205,5.887 -5.842,10.525 -11.73,11.73Z" style="fill:#fff;fill-rule:nonzero;"/><path d="M198.974,211.24c5.887,1.205 10.525,5.842 11.73,11.73c1.205,-5.888 5.843,-10.525 11.731,-11.73c-5.888,-1.206 -10.526,-5.843 -11.731,-11.731c-1.205,5.888 -5.843,10.525 -11.73,11.731Z" style="fill:#fff;fill-rule:nonzero;"/><path d="M141.055,187.591c2.656,0.544 4.749,2.636 5.293,5.293c0.544,-2.657 2.636,-4.749 5.293,-5.293c-2.657,-0.544 -4.749,-2.637 -5.293,-5.293c-0.544,2.656 -2.637,4.749 -5.293,5.293Z" style="fill:#fff;fill-rule:nonzero;"/><path d="M102.523,103.904c2.657,0.544 4.749,2.636 5.293,5.293c0.544,-2.657 2.636,-4.749 5.293,-5.293c-2.657,-0.544 -4.749,-2.637 -5.293,-5.293c-0.544,2.656 -2.636,4.749 -5.293,5.293Z" style="fill:#fff;fill-rule:nonzero;"/></g><defs><radialGradient id="_Radial1" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(228.054,1.30316,-1.30316,228.054,142.481,136.805)"><stop offset="0" style="stop-color:#203365;stop-opacity:1"/><stop offset="1" style="stop-color:#000121;stop-opacity:1"/></radialGradient></defs></svg> \ No newline at end of file diff --git a/src/test/shell/data/apps/images/logo/spa.png b/src/test/shell/data/apps/images/logo/spa.png deleted file mode 100644 index bd78c8a94a62d4729a11e3a7fe91a409ea2a60fa..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/logo/spa.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/logo/statping.png b/src/test/shell/data/apps/images/logo/statping.png deleted file mode 100644 index 5aa272e142dd97600531d24ddec845dfb93e2159..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/logo/statping.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/logo/synapse.png b/src/test/shell/data/apps/images/logo/synapse.png deleted file mode 100644 index 6aa3f184d4579e6f1f1c50755862cdfde6bd0a24..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/logo/synapse.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/logo/victoria-metrics.png b/src/test/shell/data/apps/images/logo/victoria-metrics.png deleted file mode 100644 index a9f60d28664daa73ac78c26518fb612e36ce30a7..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/logo/victoria-metrics.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/logo/webdav.svg b/src/test/shell/data/apps/images/logo/webdav.svg deleted file mode 100644 index ae45ed2832228a7261d1f62d824dbcb454b04b7e..0000000000000000000000000000000000000000 --- a/src/test/shell/data/apps/images/logo/webdav.svg +++ /dev/null @@ -1 +0,0 @@ -<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><path d="m22.038 2h-15.663a1.755 1.755 0 0 0 -1.75 1.75v24.5a1.755 1.755 0 0 0 1.75 1.75h19.25a1.755 1.755 0 0 0 1.75-1.75v-21.394zm.525 2.844 1.663 1.531h-1.663zm-16.188 23.406v-24.5h14.438v4.375h4.813v20.125z" fill="#c2c2c2"/><g fill="#829ec2"><path d="m8.125 15.097h13.076v1.75h-13.076z"/><path d="m8.125 24.439h9.762v1.75h-9.762z"/><path d="m8.125 19.763h15.75v1.75h-15.75z"/><path d="m8.125 10.23h15.75v1.75h-15.75z"/></g></svg> \ No newline at end of file diff --git a/src/test/shell/data/apps/images/logo/wifimon.png b/src/test/shell/data/apps/images/logo/wifimon.png deleted file mode 100644 index e7a16fcc8bc912bd2bccbbab81a2d7a6e9c873ad..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/logo/wifimon.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/logo/zabbix.png b/src/test/shell/data/apps/images/logo/zabbix.png deleted file mode 100644 index e85c8b9bc4e2c492a867e2eb150530d28ae34ad3..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/logo/zabbix.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/adminer/adminer1.png b/src/test/shell/data/apps/images/screenshots/adminer/adminer1.png deleted file mode 100644 index 96054e2aea76648064431d1463a17b0ddbef3f8d..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/adminer/adminer1.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/adminer/adminer2.png b/src/test/shell/data/apps/images/screenshots/adminer/adminer2.png deleted file mode 100644 index 09c33093f59b1ecf890772210f23a8d59e8107ca..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/adminer/adminer2.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/adminer/adminer3.png b/src/test/shell/data/apps/images/screenshots/adminer/adminer3.png deleted file mode 100644 index b0921292eeb26ea0f19560432c561d5c570f80ab..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/adminer/adminer3.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/bastion/bastion1.png b/src/test/shell/data/apps/images/screenshots/bastion/bastion1.png deleted file mode 100644 index c222652dc636e57d8849607895bbd614b9d955c7..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/bastion/bastion1.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/changedetectionio/changedetectionio1.png b/src/test/shell/data/apps/images/screenshots/changedetectionio/changedetectionio1.png deleted file mode 100644 index e6d3582622ce4a7a3285bb050c2e870329900ead..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/changedetectionio/changedetectionio1.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/changedetectionio/changedetectionio2.png b/src/test/shell/data/apps/images/screenshots/changedetectionio/changedetectionio2.png deleted file mode 100644 index 7ad2b3865b1c9b9393695efd66a58fd176a4b58b..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/changedetectionio/changedetectionio2.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/codimd/codimd1.png b/src/test/shell/data/apps/images/screenshots/codimd/codimd1.png deleted file mode 100644 index 3b26f34d5a06800a049ebc96570badfcc19dba13..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/codimd/codimd1.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/codimd/codimd2.png b/src/test/shell/data/apps/images/screenshots/codimd/codimd2.png deleted file mode 100644 index b422f03e514d7b89d48caa0b62a9ce987979ce31..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/codimd/codimd2.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/ctfd/ctfd1.png b/src/test/shell/data/apps/images/screenshots/ctfd/ctfd1.png deleted file mode 100644 index 38a4d6f10025f4fc95ad1a8162848f6c23a81e2f..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/ctfd/ctfd1.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/ctfd/ctfd2.png b/src/test/shell/data/apps/images/screenshots/ctfd/ctfd2.png deleted file mode 100644 index a935f1b0de9d4905361193983f0263129ef26a6c..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/ctfd/ctfd2.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/ctfd/ctfd3.png b/src/test/shell/data/apps/images/screenshots/ctfd/ctfd3.png deleted file mode 100644 index 09fe5e7ff1aed66a1fe52a1323a4bfe0b14ca18d..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/ctfd/ctfd3.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/ctfd/ctfd4.png b/src/test/shell/data/apps/images/screenshots/ctfd/ctfd4.png deleted file mode 100644 index 9a0e156473fce6e65c4ec67016ecf3ea26d426b5..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/ctfd/ctfd4.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/debian-repository/debian-repository1.png b/src/test/shell/data/apps/images/screenshots/debian-repository/debian-repository1.png deleted file mode 100644 index f1dd2713e6fdbaeb52195430ba157bb339c6cc1a..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/debian-repository/debian-repository1.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/debian-repository/debian-repository2.png b/src/test/shell/data/apps/images/screenshots/debian-repository/debian-repository2.png deleted file mode 100644 index 8cd5a4a7fc087d0566f8a70b5129f2e3a46b5c21..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/debian-repository/debian-repository2.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/debian-repository/debian-repository3.png b/src/test/shell/data/apps/images/screenshots/debian-repository/debian-repository3.png deleted file mode 100644 index 5351a1660496a6a2f972a1956c61573850c09aa0..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/debian-repository/debian-repository3.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/debian-repository/debian-repository4.png b/src/test/shell/data/apps/images/screenshots/debian-repository/debian-repository4.png deleted file mode 100644 index 49036bc908194a4b370eb1276a7f7b27833e2c25..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/debian-repository/debian-repository4.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/elasticstack/elk1.png b/src/test/shell/data/apps/images/screenshots/elasticstack/elk1.png deleted file mode 100644 index 5d18acb67bef56eabbd9b2bb606d115a7d3c0078..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/elasticstack/elk1.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/elasticstack/elk2.png b/src/test/shell/data/apps/images/screenshots/elasticstack/elk2.png deleted file mode 100644 index 48e75260e9f6040d6aab53f7c23b80118a0d100a..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/elasticstack/elk2.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/icinga/icinga1.png b/src/test/shell/data/apps/images/screenshots/icinga/icinga1.png deleted file mode 100644 index 4e5013e1b607e7c3605333d2f3529d0e1161f6a9..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/icinga/icinga1.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/icinga/icinga2.png b/src/test/shell/data/apps/images/screenshots/icinga/icinga2.png deleted file mode 100644 index a39a1c6e492f9af50f7e853862df64d035992da4..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/icinga/icinga2.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/icinga/icinga3.png b/src/test/shell/data/apps/images/screenshots/icinga/icinga3.png deleted file mode 100644 index 35e73af86a47625513e3464755af225813f469a6..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/icinga/icinga3.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/icinga/icinga4.png b/src/test/shell/data/apps/images/screenshots/icinga/icinga4.png deleted file mode 100644 index b19a260e785ce7ebb38a5e002eb1db58e3b9ca52..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/icinga/icinga4.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/icinga/icinga5.png b/src/test/shell/data/apps/images/screenshots/icinga/icinga5.png deleted file mode 100644 index 33779eb4d8548542f172096aea3d018ccc56d238..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/icinga/icinga5.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/icinga/icinga6.png b/src/test/shell/data/apps/images/screenshots/icinga/icinga6.png deleted file mode 100644 index 24e7a9f98ab836dee4f27084ee4c0206950e14ed..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/icinga/icinga6.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/influxdb/influxdb1.png b/src/test/shell/data/apps/images/screenshots/influxdb/influxdb1.png deleted file mode 100644 index 640f3bbcb8f8cf4f7496ba54b66b72eb6727e0e3..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/influxdb/influxdb1.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/influxdb/influxdb2.png b/src/test/shell/data/apps/images/screenshots/influxdb/influxdb2.png deleted file mode 100644 index 174374ebf14adc9bbd38923b3ab3572af4189a2d..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/influxdb/influxdb2.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/jenkins/jenkins1.png b/src/test/shell/data/apps/images/screenshots/jenkins/jenkins1.png deleted file mode 100644 index c2f57f5abc4f13825188ddaf2996242339cafaee..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/jenkins/jenkins1.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/juiceshop/juiceshop1.png b/src/test/shell/data/apps/images/screenshots/juiceshop/juiceshop1.png deleted file mode 100644 index 5a017398a44317186bb4ba525d33199845f7e402..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/juiceshop/juiceshop1.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/juiceshop/juiceshop2.png b/src/test/shell/data/apps/images/screenshots/juiceshop/juiceshop2.png deleted file mode 100644 index b90627b821015816bc4910bd51d04ec59c46b40c..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/juiceshop/juiceshop2.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/juiceshop/juiceshop3.png b/src/test/shell/data/apps/images/screenshots/juiceshop/juiceshop3.png deleted file mode 100644 index c2f0d5b5138e29280d5a119fbf8e80835115b599..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/juiceshop/juiceshop3.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/juiceshop/juiceshop4.png b/src/test/shell/data/apps/images/screenshots/juiceshop/juiceshop4.png deleted file mode 100644 index 01f3e8cadf1d773e37def8291efff328d358d379..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/juiceshop/juiceshop4.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/librebooking/librebooking1.png b/src/test/shell/data/apps/images/screenshots/librebooking/librebooking1.png deleted file mode 100644 index 37598f10bcc509e56416f61fb0a096befa081b49..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/librebooking/librebooking1.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/librebooking/librebooking2.png b/src/test/shell/data/apps/images/screenshots/librebooking/librebooking2.png deleted file mode 100644 index 72538bdda46eb944a02ad6d0b99504c491df6a94..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/librebooking/librebooking2.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/librebooking/librebooking3.png b/src/test/shell/data/apps/images/screenshots/librebooking/librebooking3.png deleted file mode 100644 index f39b071d0a5dc34ed54e6559910bd6bac2313315..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/librebooking/librebooking3.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/librenms/librenms1.png b/src/test/shell/data/apps/images/screenshots/librenms/librenms1.png deleted file mode 100644 index 6878bcd146488ef288291cd6ae47f7bb11f04595..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/librenms/librenms1.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/librenms/librenms2.png b/src/test/shell/data/apps/images/screenshots/librenms/librenms2.png deleted file mode 100644 index cc73f8146f2b34a9e3319cc9d188258c1c7559c3..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/librenms/librenms2.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/maildev/maildev1.png b/src/test/shell/data/apps/images/screenshots/maildev/maildev1.png deleted file mode 100644 index 9c8e8006068e616ff98f10f10f4b46495587068e..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/maildev/maildev1.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/nav/nav1.png b/src/test/shell/data/apps/images/screenshots/nav/nav1.png deleted file mode 100644 index da3cd73eb6fec1ba141f80eaa8a1884052d7fbba..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/nav/nav1.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/nav/nav2.png b/src/test/shell/data/apps/images/screenshots/nav/nav2.png deleted file mode 100644 index ed05f1ab87cb970c28f46f2e5a02099abe12881d..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/nav/nav2.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/nav/nav3.png b/src/test/shell/data/apps/images/screenshots/nav/nav3.png deleted file mode 100644 index 9fa70a6814fb8b1902fa12ae905db880d11ac3ec..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/nav/nav3.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/nav/nav4.png b/src/test/shell/data/apps/images/screenshots/nav/nav4.png deleted file mode 100644 index 0aad1866ccb38ad862b62617f9d5fadc6439e8a5..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/nav/nav4.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/nav/nav5.png b/src/test/shell/data/apps/images/screenshots/nav/nav5.png deleted file mode 100644 index 784e4e4ea84f36bd4ee20a7e41d665352a8a1185..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/nav/nav5.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/netbox/netbox1.png b/src/test/shell/data/apps/images/screenshots/netbox/netbox1.png deleted file mode 100644 index 35d306770b4daa20e71e01a491f18fd996e141af..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/netbox/netbox1.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/netbox/netbox2.png b/src/test/shell/data/apps/images/screenshots/netbox/netbox2.png deleted file mode 100644 index 62725ddd4707549399bac97158579245e2574e58..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/netbox/netbox2.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/netbox/netbox3.png b/src/test/shell/data/apps/images/screenshots/netbox/netbox3.png deleted file mode 100644 index 8dff0fc62b711f24f17bf9f6a57eb5654ef7d758..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/netbox/netbox3.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/netbox/netbox4.png b/src/test/shell/data/apps/images/screenshots/netbox/netbox4.png deleted file mode 100644 index 0a618231de191b9d725f4847caa59541327fd2bc..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/netbox/netbox4.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/opennti/opennti1.png b/src/test/shell/data/apps/images/screenshots/opennti/opennti1.png deleted file mode 100644 index 0c298f71bd00836e2c5c2c3faa93452986e9877b..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/opennti/opennti1.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/opennti/opennti2.png b/src/test/shell/data/apps/images/screenshots/opennti/opennti2.png deleted file mode 100644 index 0781373a478fdd1ae0bc0cc01b853fcc1fd6f68e..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/opennti/opennti2.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/opennti/opennti3.png b/src/test/shell/data/apps/images/screenshots/opennti/opennti3.png deleted file mode 100644 index 3ea490549a17c77a8e978c2645594fb0f9a77bdd..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/opennti/opennti3.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/oxidized/oxidized1.png b/src/test/shell/data/apps/images/screenshots/oxidized/oxidized1.png deleted file mode 100644 index f9ea49df8da18785df40239fc2975314260e6c2d..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/oxidized/oxidized1.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/oxidized/oxidized2.png b/src/test/shell/data/apps/images/screenshots/oxidized/oxidized2.png deleted file mode 100644 index ae27229f66e69317363abf60ce0829cac61edd9a..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/oxidized/oxidized2.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/oxidized/oxidized3.png b/src/test/shell/data/apps/images/screenshots/oxidized/oxidized3.png deleted file mode 100644 index b95ec006fcb98fa4a45af07ae5a037ac6d2b3c9f..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/oxidized/oxidized3.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/perfsonar-centralmanagement/perfsonar-centralmanagement1.png b/src/test/shell/data/apps/images/screenshots/perfsonar-centralmanagement/perfsonar-centralmanagement1.png deleted file mode 100644 index 2b7604106d6245f4796034f3097c26615ceb4d62..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/perfsonar-centralmanagement/perfsonar-centralmanagement1.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/perfsonar-esmond/perfsonar-esmond1.png b/src/test/shell/data/apps/images/screenshots/perfsonar-esmond/perfsonar-esmond1.png deleted file mode 100644 index 2b7604106d6245f4796034f3097c26615ceb4d62..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/perfsonar-esmond/perfsonar-esmond1.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/perfsonar-maddash/perfsonar-maddash1.png b/src/test/shell/data/apps/images/screenshots/perfsonar-maddash/perfsonar-maddash1.png deleted file mode 100644 index 88f03b6da66f920ab6d46c2da634ef56b179cad1..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/perfsonar-maddash/perfsonar-maddash1.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/perfsonar-pwa/perfsonar-pwa1.png b/src/test/shell/data/apps/images/screenshots/perfsonar-pwa/perfsonar-pwa1.png deleted file mode 100644 index 9f6fae904b79c0b22b7bac8ee066cfa30bf0e470..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/perfsonar-pwa/perfsonar-pwa1.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/perfsonar-pwa/perfsonar-pwa2.png b/src/test/shell/data/apps/images/screenshots/perfsonar-pwa/perfsonar-pwa2.png deleted file mode 100644 index f9351cf9c76baf3ba7646ff446271669da63559a..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/perfsonar-pwa/perfsonar-pwa2.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/perfsonar-pwa/perfsonar-pwa3.png b/src/test/shell/data/apps/images/screenshots/perfsonar-pwa/perfsonar-pwa3.png deleted file mode 100644 index e30bc807aceb78a6c26295e94bb812ad8ef163f1..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/perfsonar-pwa/perfsonar-pwa3.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/perfsonar-pwa/perfsonar-pwa4.png b/src/test/shell/data/apps/images/screenshots/perfsonar-pwa/perfsonar-pwa4.png deleted file mode 100644 index 6b29cde363c9fc3b4edfdcd81b687d02963e88c5..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/perfsonar-pwa/perfsonar-pwa4.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/perfsonar-pwa/perfsonar-pwa5.png b/src/test/shell/data/apps/images/screenshots/perfsonar-pwa/perfsonar-pwa5.png deleted file mode 100644 index 754ceaf4e281378a2bafb75bb8f9423cbc40e858..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/perfsonar-pwa/perfsonar-pwa5.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/pmacct/pmacct1.jpg b/src/test/shell/data/apps/images/screenshots/pmacct/pmacct1.jpg deleted file mode 100644 index 465caee345f5da626eee80fbff0210b7d1e6717f..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/pmacct/pmacct1.jpg and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/pmacct/pmacct2.png b/src/test/shell/data/apps/images/screenshots/pmacct/pmacct2.png deleted file mode 100644 index 8107c5f2243b133a6feeb69f83d5cf7a3ed1f597..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/pmacct/pmacct2.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/pmacct/pmacct3.jpg b/src/test/shell/data/apps/images/screenshots/pmacct/pmacct3.jpg deleted file mode 100644 index c81fbd73e7860debcc1858c52cb327fb5eb92a23..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/pmacct/pmacct3.jpg and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/routinator/routinator1.png b/src/test/shell/data/apps/images/screenshots/routinator/routinator1.png deleted file mode 100644 index 59ff844c63e434594345ca21abe7e1fd8c35ac98..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/routinator/routinator1.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/routinator/routinator2.png b/src/test/shell/data/apps/images/screenshots/routinator/routinator2.png deleted file mode 100644 index f714ee519b4e30c48ad68702f82ff699deefb86f..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/routinator/routinator2.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/routinator/routinator3.png b/src/test/shell/data/apps/images/screenshots/routinator/routinator3.png deleted file mode 100644 index eeeaa23a80ac3aee4eb35713bc33c788518a9dc8..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/routinator/routinator3.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/spa-inventory/spa-inventory1.png b/src/test/shell/data/apps/images/screenshots/spa-inventory/spa-inventory1.png deleted file mode 100644 index 6da342efd909c5a060e33b60b58e563c74b034e6..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/spa-inventory/spa-inventory1.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/spa-inventory/spa-inventory2.png b/src/test/shell/data/apps/images/screenshots/spa-inventory/spa-inventory2.png deleted file mode 100644 index 0b022af1517ff049450e87de4e1a72a7b95df60b..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/spa-inventory/spa-inventory2.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/spa-inventory/spa-inventory3.png b/src/test/shell/data/apps/images/screenshots/spa-inventory/spa-inventory3.png deleted file mode 100644 index b2e9cc79829dea3d51ede341192888d8abd5d3ea..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/spa-inventory/spa-inventory3.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/spa-inventory/spa-inventory4.png b/src/test/shell/data/apps/images/screenshots/spa-inventory/spa-inventory4.png deleted file mode 100644 index 376b12ee46a32c294a31f55b172b73f969f83f18..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/spa-inventory/spa-inventory4.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/spa/spa1.png b/src/test/shell/data/apps/images/screenshots/spa/spa1.png deleted file mode 100644 index c006e40f52a2002c92bb91fad18c6f5c4b08684f..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/spa/spa1.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/spa/spa2.png b/src/test/shell/data/apps/images/screenshots/spa/spa2.png deleted file mode 100644 index 9d1921bf653664ac89816336a77217fda9d8733a..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/spa/spa2.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/spa/spa3.png b/src/test/shell/data/apps/images/screenshots/spa/spa3.png deleted file mode 100644 index de77431ea41e81ee3ac083bc4d1b3534844929d7..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/spa/spa3.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/spa/spa4.png b/src/test/shell/data/apps/images/screenshots/spa/spa4.png deleted file mode 100644 index 4493ad289836beeac4e82d58c00709df2943782b..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/spa/spa4.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/statping/statping1.png b/src/test/shell/data/apps/images/screenshots/statping/statping1.png deleted file mode 100644 index 9b5e39a7bc42dd6028e16035046197dea2be7656..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/statping/statping1.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/statping/statping2.png b/src/test/shell/data/apps/images/screenshots/statping/statping2.png deleted file mode 100644 index 124609a5f514d94a38730fdb4b2d544bac7bfd3c..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/statping/statping2.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/statping/statping3.png b/src/test/shell/data/apps/images/screenshots/statping/statping3.png deleted file mode 100644 index 1a3aa9e5cd1ebff825037f3473cea79f16f700cf..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/statping/statping3.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/synapse/synapse1.png b/src/test/shell/data/apps/images/screenshots/synapse/synapse1.png deleted file mode 100644 index 3cd89f1e979cf7e22a381c76953db5f7e2a3bcde..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/synapse/synapse1.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/synapse/synapse2.png b/src/test/shell/data/apps/images/screenshots/synapse/synapse2.png deleted file mode 100644 index 0f02050de178772e132d05fb836069b31b6e5214..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/synapse/synapse2.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/synapse/synapse3.png b/src/test/shell/data/apps/images/screenshots/synapse/synapse3.png deleted file mode 100644 index a43482469b420e7ec926561e294f53a2d3dad76a..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/synapse/synapse3.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/synapse/synapse4.png b/src/test/shell/data/apps/images/screenshots/synapse/synapse4.png deleted file mode 100644 index ca1a8ad50f7a21301bb1f2a01dfaa93e9b31185f..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/synapse/synapse4.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/synapse/synapse5.png b/src/test/shell/data/apps/images/screenshots/synapse/synapse5.png deleted file mode 100644 index 8da1ba0bdf327ac6e148847bf4a69aabf39a8ef1..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/synapse/synapse5.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/synapse/synapse6.png b/src/test/shell/data/apps/images/screenshots/synapse/synapse6.png deleted file mode 100644 index 2565e24e5fb097b93b1f7918ba523e06941c1453..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/synapse/synapse6.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/victoria-metrics/victoria-metrics1.png b/src/test/shell/data/apps/images/screenshots/victoria-metrics/victoria-metrics1.png deleted file mode 100644 index 02fe786e278671ff700fd6fe6c53909fb0249360..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/victoria-metrics/victoria-metrics1.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/victoria-metrics/victoria-metrics2.png b/src/test/shell/data/apps/images/screenshots/victoria-metrics/victoria-metrics2.png deleted file mode 100644 index 76f2b9efb5b5591b84b618be209c9f562b444e40..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/victoria-metrics/victoria-metrics2.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/victoria-metrics/victoria-metrics3.png b/src/test/shell/data/apps/images/screenshots/victoria-metrics/victoria-metrics3.png deleted file mode 100644 index 8edb6aafdf1fa1a8acbeb307456c2b23208cd16f..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/victoria-metrics/victoria-metrics3.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/webdav/webdav1.png b/src/test/shell/data/apps/images/screenshots/webdav/webdav1.png deleted file mode 100644 index 4d150a78626a1a4dfd391b08976e147e0d11472b..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/webdav/webdav1.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/webdav/webdav2.png b/src/test/shell/data/apps/images/screenshots/webdav/webdav2.png deleted file mode 100644 index 35a55d846271b08461d3eba2b7e33bc8ec0ce015..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/webdav/webdav2.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/webdav/webdav3.png b/src/test/shell/data/apps/images/screenshots/webdav/webdav3.png deleted file mode 100644 index bc4a15c7f82e5769ca1701623c38e3a50c5c0f97..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/webdav/webdav3.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/webdav/webdav4.png b/src/test/shell/data/apps/images/screenshots/webdav/webdav4.png deleted file mode 100644 index 5a0f2a38effab1042f7268ba9a554be43f6b8b22..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/webdav/webdav4.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/webdav/webdav5.png b/src/test/shell/data/apps/images/screenshots/webdav/webdav5.png deleted file mode 100644 index 06ce3d9dfd8cdeeb1963a1b871ac77dfc300afe8..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/webdav/webdav5.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/wifimon/wifimon1.png b/src/test/shell/data/apps/images/screenshots/wifimon/wifimon1.png deleted file mode 100644 index 9861d4cc5ca44679a1fe27dfe2da776f23af29bf..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/wifimon/wifimon1.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/wifimon/wifimon2.png b/src/test/shell/data/apps/images/screenshots/wifimon/wifimon2.png deleted file mode 100644 index 0f75a049af21a6a1ec78e9f61c287d9093184598..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/wifimon/wifimon2.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/wifimon/wifimon3.png b/src/test/shell/data/apps/images/screenshots/wifimon/wifimon3.png deleted file mode 100644 index bfc3d5f7d20b1423d51d85d631c962e413aa8f12..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/wifimon/wifimon3.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/wifimon/wifimon4.png b/src/test/shell/data/apps/images/screenshots/wifimon/wifimon4.png deleted file mode 100644 index 5df327d3b4f639d57dd11929a3a041ca83050e07..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/wifimon/wifimon4.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/zabbix/zabbix1.png b/src/test/shell/data/apps/images/screenshots/zabbix/zabbix1.png deleted file mode 100644 index 573bb82df9cace587ae236a6c7f6b1850243df3f..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/zabbix/zabbix1.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/zabbix/zabbix2.png b/src/test/shell/data/apps/images/screenshots/zabbix/zabbix2.png deleted file mode 100644 index e3caddf1318eaeda9d02a8e94f31529b24b42f12..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/zabbix/zabbix2.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/zabbix/zabbix3.png b/src/test/shell/data/apps/images/screenshots/zabbix/zabbix3.png deleted file mode 100644 index 30055dccde180d67eda926e619469da7485f4fc0..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/zabbix/zabbix3.png and /dev/null differ diff --git a/src/test/shell/data/apps/images/screenshots/zabbix/zabbix4.png b/src/test/shell/data/apps/images/screenshots/zabbix/zabbix4.png deleted file mode 100644 index 4929cfbd3496d246aa5a342f7a94025320654d17..0000000000000000000000000000000000000000 Binary files a/src/test/shell/data/apps/images/screenshots/zabbix/zabbix4.png and /dev/null differ diff --git a/src/test/shell/init.bat b/src/test/shell/init.bat index cfde699f99e4a1b1bf2495b784e938584084b04f..7cd0cb2d2c861e19249be9a62c9d5afa32b99286 100644 --- a/src/test/shell/init.bat +++ b/src/test/shell/init.bat @@ -101,525 +101,82 @@ echo. curl -X POST %API_URL%/mail/templates --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\mails\newActiveApp.json echo. +echo. echo App1 -curl -X POST %API_URL%/apps --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\app01-librenms.json +curl -X POST %API_URL%/apps --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\app01-prometheus.json echo. echo App1 logo -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\logo\librenms.svg;type=image/png" %API_URL%/apps/1/logo +curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\logo\prometheus.svg;type=image/svg+xml" %API_URL%/apps/1/logo echo. echo App1 screenshots -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\librenms\librenms1.png;type=image/png" %API_URL%/apps/1/screenshots +curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images/screenshots\prometheus\prometheus1.png;type=image/png" %API_URL%/apps/1/screenshots +echo. +curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps/images\screenshots\prometheus\prometheus2.png;type=image/png" %API_URL%/apps/1/screenshots echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\librenms\librenms2.png;type=image/png" %API_URL%/apps/1/screenshots +curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps/images\screenshots\prometheus\prometheus3.png;type=image/png" %API_URL%/apps/1/screenshots echo. echo App2 -curl -X POST %API_URL%/apps --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\app02-oxidized.json +curl -X POST %API_URL%/apps --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\app02-grafana.json echo. echo App2 logo -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\logo\oxidized.svg;type=image/svg+xml" %API_URL%/apps/2/logo +curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\logo\grafana.svg;type=image/svg+xml" %API_URL%/apps/2/logo echo. echo App2 screenshots -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\oxidized\oxidized1.png;type=image/png" %API_URL%/apps/2/screenshots +curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\grafana\grafana1.png;type=image/png" %API_URL%/apps/2/screenshots echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\oxidized\oxidized2.png;type=image/png" %API_URL%/apps/2/screenshots +curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\grafana\grafana2.png;type=image/png" %API_URL%/apps/2/screenshots echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\oxidized\oxidized3.png;type=image/png" %API_URL%/apps/2/screenshots +curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\grafana\grafana3.png;type=image/png" %API_URL%/apps/2/screenshots echo. echo App3 -curl -X POST %API_URL%/apps --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\app03-nav.json +curl -X POST %API_URL%/apps --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\app03-uptime-kuma.json echo. echo App3 logo -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\logo\nav.svg;type=image/svg+xml" %API_URL%/apps/3/logo +curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\logo\uptime-kuma.png;type=image/png" %API_URL%/apps/3/logo echo. echo App3 screenshots -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\nav\nav1.png;type=image/jpg" %API_URL%/apps/3/screenshots +curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\uptime-kuma\uptime-kuma1.jpg;type=image/jpg" %API_URL%/apps/3/screenshots echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\nav\nav2.png;type=image/png" %API_URL%/apps/3/screenshots +curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\uptime-kuma\uptime-kuma2.jpg;type=image/jpg" %API_URL%/apps/3/screenshots echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\nav\nav3.png;type=image/png" %API_URL%/apps/3/screenshots +curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\uptime-kuma\uptime-kuma3.jpg;type=image/jpg" %API_URL%/apps/3/screenshots echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\nav\nav4.png;type=image/png" %API_URL%/apps/3/screenshots +curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\uptime-kuma\uptime-kuma4.jpg;type=image/jpg" %API_URL%/apps/3/screenshots echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\nav\nav5.png;type=image/png" %API_URL%/apps/3/screenshots +curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\uptime-kuma\uptime-kuma5.jpg;type=image/jpg" %API_URL%/apps/3/screenshots +echo. +curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\uptime-kuma\uptime-kuma6.jpg;type=image/jpg" %API_URL%/apps/3/screenshots echo. echo App4 -curl -X POST %API_URL%/apps --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\app04-opennti.json +curl -X POST %API_URL%/apps --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\app04-healthchecks.json echo. echo App4 logo -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\logo\open-nti.svg;type=image/svg+xml" %API_URL%/apps/4/logo +curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\logo\healthchecks.jpg;type=image/jpg" %API_URL%/apps/4/logo echo. echo App4 screenshots -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\opennti\opennti1.png;type=image/png" %API_URL%/apps/4/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\opennti\opennti2.png;type=image/png" %API_URL%/apps/4/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\opennti\opennti3.png;type=image/png" %API_URL%/apps/4/screenshots - -echo. -echo App5 -curl -X POST %API_URL%/apps --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\app05-prometheus.json -echo. -echo App5 logo -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\logo\prometheus.svg;type=image/svg+xml" %API_URL%/apps/5/logo -echo. -echo App5 screenshots -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images/screenshots\prometheus\prometheus1.png;type=image/png" %API_URL%/apps/5/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps/images\screenshots\prometheus\prometheus2.png;type=image/png" %API_URL%/apps/5/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps/images\screenshots\prometheus\prometheus3.png;type=image/png" %API_URL%/apps/5/screenshots - -echo. -echo App6 -curl -X POST %API_URL%/apps --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\app06-grafana.json -echo. -echo App6 logo -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\logo\grafana.svg;type=image/svg+xml" %API_URL%/apps/6/logo -echo. -echo App6 screenshots -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\grafana\grafana1.png;type=image/png" %API_URL%/apps/6/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\grafana\grafana2.png;type=image/png" %API_URL%/apps/6/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\grafana\grafana3.png;type=image/png" %API_URL%/apps/6/screenshots -echo. -echo App6 v2 -curl -X POST %API_URL%/apps/version --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\app06-grafana_v7.2.0.json - -echo. -echo App7 -curl -X POST %API_URL%/apps --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\app07-bastion.json -echo. -echo App7 logo -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\logo\bastion.svg;type=image/svg+xml" %API_URL%/apps/7/logo -echo. -echo App7 screenshots -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\bastion\bastion1.png;type=image/png" %API_URL%/apps/7/screenshots - +curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\healthchecks\healthchecks1.png;type=image/png" %API_URL%/apps/4/screenshots echo. -echo App8 -curl -X POST %API_URL%/apps --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\app08-perfsonar-pwa.json +curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\healthchecks\healthchecks2.png;type=image/png" %API_URL%/apps/4/screenshots echo. -echo App8 logo -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\logo\perfsonar.png;type=image/png" %API_URL%/apps/8/logo +curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\healthchecks\healthchecks3.png;type=image/png" %API_URL%/apps/4/screenshots echo. -echo App8 screenshots -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\perfsonar-pwa\perfsonar-pwa1.png;type=image/png" %API_URL%/apps/8/screenshots +curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\healthchecks\healthchecks4.png;type=image/png" %API_URL%/apps/4/screenshots echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\perfsonar-pwa\perfsonar-pwa2.png;type=image/png" %API_URL%/apps/8/screenshots +curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\healthchecks\healthchecks5.png;type=image/png" %API_URL%/apps/4/screenshots echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\perfsonar-pwa\perfsonar-pwa3.png;type=image/png" %API_URL%/apps/8/screenshots +curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\healthchecks\healthchecks6.png;type=image/png" %API_URL%/apps/4/screenshots echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\perfsonar-pwa\perfsonar-pwa4.png;type=image/png" %API_URL%/apps/8/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\perfsonar-pwa\perfsonar-pwa5.png;type=image/png" %API_URL%/apps/8/screenshots - -echo. -echo App9 -curl -X POST %API_URL%/apps --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\app09-librebooking.json -echo. -echo App9 logo -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\logo\librebooking.png;type=image/png" %API_URL%/apps/9/logo -echo. -echo App9 screenshots -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\librebooking\librebooking1.png;type=image/png" %API_URL%/apps/9/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\librebooking\librebooking2.png;type=image/png" %API_URL%/apps/9/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\librebooking\librebooking3.png;type=image/png" %API_URL%/apps/9/screenshots +curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\healthchecks\healthchecks7.png;type=image/png" %API_URL%/apps/4/screenshots echo. -echo App10 -curl -X POST %API_URL%/apps --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\app10-spa-inventory.json -echo. -echo App10 logo -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\logo\spa.png;type=image/png" %API_URL%/apps/10/logo -echo. -echo App10 screenshots -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\spa-inventory\spa-inventory1.png;type=image/png" %API_URL%/apps/10/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\spa-inventory\spa-inventory2.png;type=image/png" %API_URL%/apps/10/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\spa-inventory\spa-inventory3.png;type=image/png" %API_URL%/apps/10/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\spa-inventory\spa-inventory4.png;type=image/png" %API_URL%/apps/10/screenshots - -echo. -echo App11 -curl -X POST %API_URL%/apps --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\app11-statping.json -echo. -echo App11 logo -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\logo\statping.png;type=image/png" %API_URL%/apps/11/logo -echo. -echo App11 screenshots -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\statping\statping1.png;type=image/png" %API_URL%/apps/11/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\statping\statping2.png;type=image/png" %API_URL%/apps/11/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\statping\statping3.png;type=image/png" %API_URL%/apps/11/screenshots - -echo. -echo App12 -curl -X POST %API_URL%/apps --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\app12-perfsonar-maddash.json -echo. -echo App12 logo -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\logo\perfsonar.png;type=image/png" %API_URL%/apps/12/logo -echo. -echo App12 screenshots -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\perfsonar-maddash\perfsonar-maddash1.png;type=image/png" %API_URL%/apps/12/screenshots - -echo. -echo App13 -curl -X POST %API_URL%/apps --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\app13-debian-repository.json -echo. -echo App13 logo -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\logo\debian.svg;type=image/svg+xml" %API_URL%/apps/13/logo -echo. -echo App13 screenshots -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\debian-repository\debian-repository1.png;type=image/png" %API_URL%/apps/13/screenshots -echo. -echo App13 screenshots -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\debian-repository\debian-repository2.png;type=image/png" %API_URL%/apps/13/screenshots -echo. -echo App13 screenshots -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\debian-repository\debian-repository3.png;type=image/png" %API_URL%/apps/13/screenshots -echo. -echo App13 screenshots -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\debian-repository\debian-repository4.png;type=image/png" %API_URL%/apps/13/screenshots - -echo. -echo App14 -curl -X POST %API_URL%/apps --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\app14-influxdb.json -echo. -echo App14 logo -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\logo\influxdb.png;type=image/png" %API_URL%/apps/14/logo -echo. -echo App14 screenshots -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\influxdb\influxdb1.png;type=image/png" %API_URL%/apps/14/screenshots -echo. -echo App14 screenshots -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\influxdb\influxdb2.png;type=image/png" %API_URL%/apps/14/screenshots - -echo. -echo App15 -curl -X POST %API_URL%/apps --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\app15-jenkins.json -echo. -echo App15 logo -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\logo\jenkins.svg;type=image/svg+xml" %API_URL%/apps/15/logo -echo. -echo App15 screenshots -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\jenkins\jenkins1.png;type=image/png" %API_URL%/apps/15/screenshots - -echo. -echo App16 -curl -X POST %API_URL%/apps --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\app16-elasticstack.json -echo. -echo App16 logo -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\logo\elk.svg;type=image/svg+xml" %API_URL%/apps/16/logo -echo. -echo App16 screenshots -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\elasticstack\elk1.png;type=image/png" %API_URL%/apps/16/screenshots -echo. -echo App16 screenshots -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\elasticstack\elk2.png;type=image/png" %API_URL%/apps/16/screenshots - -echo. -echo App17 -curl -X POST %API_URL%/apps --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\app17-perfsonar-esmond.json -echo. -echo App17 logo -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\logo\perfsonar.png;type=image/png" %API_URL%/apps/17/logo -echo. -echo App17 screenshots -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\perfsonar-esmond\perfsonar-esmond1.png;type=image/png" %API_URL%/apps/17/screenshots - -echo. -echo App18 -curl -X POST %API_URL%/apps --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\app18-wifimon.json -echo. -echo App18 logo -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\logo\wifimon.png;type=image/png" %API_URL%/apps/18/logo -echo. -echo App18 screenshots -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\wifimon\wifimon1.png;type=image/png" %API_URL%/apps/18/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\wifimon\wifimon2.png;type=image/png" %API_URL%/apps/18/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\wifimon\wifimon3.png;type=image/png" %API_URL%/apps/18/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\wifimon\wifimon4.png;type=image/png" %API_URL%/apps/18/screenshots -echo. -echo App18 v2 -curl -X POST %API_URL%/apps/version --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\app18-wifimon_v1.6.0.json - -echo. -echo App19 -curl -X POST %API_URL%/apps --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\app19-perfsonar-centralmanagement.json -echo. -echo App19 logo -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\logo\perfsonar.png;type=image/png" %API_URL%/apps/19/logo -echo. -echo App19 screenshots -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\perfsonar-centralmanagement\perfsonar-centralmanagement1.png;type=image/png" %API_URL%/apps/19/screenshots - -echo. -echo App20 -curl -X POST %API_URL%/apps --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\app20-icinga.json -echo. -echo App20 logo -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\logo\icinga.svg;type=image/svg+xml" %API_URL%/apps/20/logo -echo. -echo App20 screenshots -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\icinga\icinga1.png;type=image/png" %API_URL%/apps/20/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\icinga\icinga2.png;type=image/png" %API_URL%/apps/20/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\icinga\icinga3.png;type=image/png" %API_URL%/apps/20/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\icinga\icinga4.png;type=image/png" %API_URL%/apps/20/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\icinga\icinga5.png;type=image/png" %API_URL%/apps/20/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\icinga\icinga6.png;type=image/png" %API_URL%/apps/20/screenshots - -echo. -echo App21 -curl -X POST %API_URL%/apps --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\app21-victoria-metrics.json -echo. -echo App21 logo -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\logo\victoria-metrics.png;type=image/png" %API_URL%/apps/21/logo -echo. -echo App21 screenshots -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\victoria-metrics\victoria-metrics1.png;type=image/png" %API_URL%/apps/21/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\victoria-metrics\victoria-metrics2.png;type=image/png" %API_URL%/apps/21/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\victoria-metrics\victoria-metrics3.png;type=image/png" %API_URL%/apps/21/screenshots - -echo. -echo App22 -curl -X POST %API_URL%/apps --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\app22-synapse.json -echo. -echo App22 logo -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\logo\synapse.png;type=image/png" %API_URL%/apps/22/logo -echo. -echo App22 screenshots -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\synapse\synapse1.png;type=image/png" %API_URL%/apps/22/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\synapse\synapse2.png;type=image/png" %API_URL%/apps/22/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\synapse\synapse3.png;type=image/png" %API_URL%/apps/22/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\synapse\synapse4.png;type=image/png" %API_URL%/apps/22/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\synapse\synapse5.png;type=image/png" %API_URL%/apps/22/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\synapse\synapse6.png;type=image/png" %API_URL%/apps/22/screenshots - -echo. -echo App23 -curl -X POST %API_URL%/apps --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\app23-routinator.json -echo. -echo App23 logo -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\logo\routinator.svg;type=image/svg+xml" %API_URL%/apps/23/logo -echo. -echo App23 screenshots -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\routinator\routinator1.png;type=image/png" %API_URL%/apps/23/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\routinator\routinator2.png;type=image/png" %API_URL%/apps/23/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\routinator\routinator3.png;type=image/png" %API_URL%/apps/23/screenshots - -echo. -echo App24 -curl -X POST %API_URL%/apps --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\app24-codimd.json -echo. -echo App24 logo -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\logo\codimd.png;type=image/png" %API_URL%/apps/24/logo -echo. -echo App24 screenshots -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\codimd\codimd1.png;type=image/png" %API_URL%/apps/24/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\codimd\codimd2.png;type=image/png" %API_URL%/apps/24/screenshots - -echo. -echo App25 -curl -X POST %API_URL%/apps --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\app25-webdav.json -echo. -echo App25 logo -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\logo\webdav.svg;type=image/svg+xml" %API_URL%/apps/25/logo -echo. -echo App25 screenshots -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\webdav\webdav1.png;type=image/png" %API_URL%/apps/25/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\webdav\webdav2.png;type=image/png" %API_URL%/apps/25/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\webdav\webdav3.png;type=image/png" %API_URL%/apps/25/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\webdav\webdav4.png;type=image/png" %API_URL%/apps/25/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\webdav\webdav5.png;type=image/png" %API_URL%/apps/25/screenshots - -echo. -echo App26 -curl -X POST %API_URL%/apps --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\app26-uptime-kuma.json -echo. -echo App26 logo -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\logo\uptime-kuma.png;type=image/png" %API_URL%/apps/26/logo -echo. -echo App26 screenshots -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\uptime-kuma\uptime-kuma1.jpg;type=image/jpg" %API_URL%/apps/26/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\uptime-kuma\uptime-kuma2.jpg;type=image/jpg" %API_URL%/apps/26/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\uptime-kuma\uptime-kuma3.jpg;type=image/jpg" %API_URL%/apps/26/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\uptime-kuma\uptime-kuma4.jpg;type=image/jpg" %API_URL%/apps/26/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\uptime-kuma\uptime-kuma5.jpg;type=image/jpg" %API_URL%/apps/26/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\uptime-kuma\uptime-kuma6.jpg;type=image/jpg" %API_URL%/apps/26/screenshots - -echo. -echo App27 -curl -X POST %API_URL%/apps --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\app27-netbox.json -echo. -echo App27 logo -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\logo\netbox.svg;type=image/svg+xml" %API_URL%/apps/27/logo -echo. -echo App27 screenshots -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\netbox\netbox1.png;type=image/png" %API_URL%/apps/27/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\netbox\netbox2.png;type=image/png" %API_URL%/apps/27/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\netbox\netbox3.png;type=image/png" %API_URL%/apps/27/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\netbox\netbox4.png;type=image/png" %API_URL%/apps/27/screenshots - -echo. -echo App28 -curl -X POST %API_URL%/apps --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\app28-zabbix.json -echo. -echo App28 logo -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\logo\zabbix.png;type=image/png" %API_URL%/apps/28/logo -echo. -echo App28 screenshots -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\zabbix\zabbix1.png;type=image/png" %API_URL%/apps/28/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\zabbix\zabbix2.png;type=image/png" %API_URL%/apps/28/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\zabbix\zabbix3.png;type=image/png" %API_URL%/apps/28/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\zabbix\zabbix4.png;type=image/png" %API_URL%/apps/28/screenshots - -echo. -echo App29 -curl -X POST %API_URL%/apps --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\app29-spa.json -echo. -echo App29 logo -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\logo\spa.png;type=image/png" %API_URL%/apps/29/logo -echo. -echo App29 screenshots -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\spa\spa1.png;type=image/png" %API_URL%/apps/29/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\spa\spa2.png;type=image/png" %API_URL%/apps/29/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\spa\spa3.png;type=image/png" %API_URL%/apps/29/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\spa\spa4.png;type=image/png" %API_URL%/apps/29/screenshots - -echo. -echo App30 -curl -X POST %API_URL%/apps --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\app30-healthchecks.json -echo. -echo App30 logo -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\logo\healthchecks.jpg;type=image/jpg" %API_URL%/apps/30/logo -echo. -echo App30 screenshots -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\healthchecks\healthchecks1.png;type=image/png" %API_URL%/apps/30/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\healthchecks\healthchecks2.png;type=image/png" %API_URL%/apps/30/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\healthchecks\healthchecks3.png;type=image/png" %API_URL%/apps/30/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\healthchecks\healthchecks4.png;type=image/png" %API_URL%/apps/30/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\healthchecks\healthchecks5.png;type=image/png" %API_URL%/apps/30/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\healthchecks\healthchecks6.png;type=image/png" %API_URL%/apps/30/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\healthchecks\healthchecks7.png;type=image/png" %API_URL%/apps/30/screenshots - -echo. -echo App31 -curl -X POST %API_URL%/apps --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\app31-ctfd.json -echo. -echo App31 logo -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\logo\ctfd.png;type=image/png" %API_URL%/apps/31/logo -echo. -echo App31 screenshots -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\ctfd\ctfd1.png;type=image/png" %API_URL%/apps/31/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\ctfd\ctfd2.png;type=image/png" %API_URL%/apps/31/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\ctfd\ctfd3.png;type=image/png" %API_URL%/apps/31/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\ctfd\ctfd4.png;type=image/png" %API_URL%/apps/31/screenshots - -echo. -echo App32 -curl -X POST %API_URL%/apps --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\app32-juiceshop.json -echo. -echo App32 logo -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\logo\juiceshop.png;type=image/png" %API_URL%/apps/32/logo -echo. -echo App32 screenshots -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\juiceshop\juiceshop1.png;type=image/png" %API_URL%/apps/32/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\juiceshop\juiceshop2.png;type=image/png" %API_URL%/apps/32/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\juiceshop\juiceshop3.png;type=image/png" %API_URL%/apps/32/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\juiceshop\juiceshop4.png;type=image/png" %API_URL%/apps/32/screenshots - -echo. -echo App33 -curl -X POST %API_URL%/apps --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\app33-adminer.json -echo. -echo App33 logo -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\logo\adminer.png;type=image/png" %API_URL%/apps/33/logo -echo. -echo App33 screenshots -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\adminer\adminer1.png;type=image/png" %API_URL%/apps/33/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\adminer\adminer2.png;type=image/png" %API_URL%/apps/33/screenshots -echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\adminer\adminer3.png;type=image/png" %API_URL%/apps/33/screenshots - -echo. -echo App34 -curl -X POST %API_URL%/apps --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\app34-maildev.json -echo. -echo App34 logo -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\logo\maildev.png;type=image/png" %API_URL%/apps/34/logo -echo. -echo App34 screenshots -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\maildev\maildev1.png;type=image/png" %API_URL%/apps/34/screenshots - -echo. -echo App35 -curl -X POST %API_URL%/apps --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\app35-changedetectionio.json -echo. -echo App35 logo -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\logo\changedetectionio.svg;type=image/svg+xml" %API_URL%/apps/35/logo -echo. -echo App35 screenshots -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\changedetectionio\changedetectionio1.png;type=image/png" %API_URL%/apps/35/screenshots +echo App5 +curl -X POST %API_URL%/apps --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\app05-postgresql.json echo. -curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\screenshots\changedetectionio\changedetectionio2.png;type=image/png" %API_URL%/apps/35/screenshots +echo App5 logo +curl -X POST --header "Authorization: Bearer %token%" -F "file=@data\apps\images\logo\postgresql.svg;type=image/svg+xml" %API_URL%/apps/5/logo echo. echo --------------------- @@ -629,36 +186,6 @@ curl -X PATCH %API_URL%/apps/state/2 --header "Authorization: Bearer %token%" -- curl -X PATCH %API_URL%/apps/state/3 --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\activations\active.json curl -X PATCH %API_URL%/apps/state/4 --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\activations\active.json curl -X PATCH %API_URL%/apps/state/5 --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\activations\active.json -curl -X PATCH %API_URL%/apps/state/6 --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\activations\active.json -curl -X PATCH %API_URL%/apps/state/7 --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\activations\active.json -curl -X PATCH %API_URL%/apps/state/8 --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\activations\active.json -curl -X PATCH %API_URL%/apps/state/9 --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\activations\active.json -curl -X PATCH %API_URL%/apps/state/10 --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\activations\active.json -curl -X PATCH %API_URL%/apps/state/11 --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\activations\active.json -curl -X PATCH %API_URL%/apps/state/12 --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\activations\active.json -curl -X PATCH %API_URL%/apps/state/13 --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\activations\active.json -curl -X PATCH %API_URL%/apps/state/14 --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\activations\active.json -curl -X PATCH %API_URL%/apps/state/15 --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\activations\active.json -curl -X PATCH %API_URL%/apps/state/16 --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\activations\active.json -curl -X PATCH %API_URL%/apps/state/17 --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\activations\active.json -curl -X PATCH %API_URL%/apps/state/18 --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\activations\active.json -curl -X PATCH %API_URL%/apps/state/19 --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\activations\active.json -curl -X PATCH %API_URL%/apps/state/20 --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\activations\active.json -curl -X PATCH %API_URL%/apps/state/21 --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\activations\active.json -curl -X PATCH %API_URL%/apps/state/22 --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\activations\active.json -curl -X PATCH %API_URL%/apps/state/23 --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\activations\active.json -curl -X PATCH %API_URL%/apps/state/24 --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\activations\active.json -curl -X PATCH %API_URL%/apps/state/25 --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\activations\active.json -curl -X PATCH %API_URL%/apps/state/26 --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\activations\active.json -curl -X PATCH %API_URL%/apps/state/27 --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\activations\active.json -curl -X PATCH %API_URL%/apps/state/28 --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\activations\active.json -curl -X PATCH %API_URL%/apps/state/29 --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\activations\active.json -curl -X PATCH %API_URL%/apps/state/30 --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\activations\active.json -curl -X PATCH %API_URL%/apps/state/31 --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\activations\active.json -curl -X PATCH %API_URL%/apps/state/32 --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\activations\active.json -curl -X PATCH %API_URL%/apps/state/33 --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\activations\active.json -curl -X PATCH %API_URL%/apps/state/34 --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\activations\active.json -curl -X PATCH %API_URL%/apps/state/35 --header "Authorization: Bearer %token%" --header "Content-Type: application/json" --header "Accept: application/json" -d @data\apps\activations\active.json echo. echo --------------------- diff --git a/src/test/shell/init.sh b/src/test/shell/init.sh index 6ea7073a49d2e89b403baefe0f396fe4369dda51..a30ba7985d08362500e4d15f4f7b4986d6008b75 100644 --- a/src/test/shell/init.sh +++ b/src/test/shell/init.sh @@ -76,565 +76,84 @@ echo echo echo App1 -curl -X POST $API_URL/apps --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/app01-librenms.json +curl -X POST $API_URL/apps --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/app01-prometheus.json echo echo App1 logo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/logo/librenms.svg;type=image/svg+xml" $API_URL/apps/1/logo +curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/logo/prometheus.svg;type=image/svg+xml" $API_URL/apps/1/logo echo echo App1 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/librenms/librenms1.png;type=image/png" $API_URL/apps/1/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/librenms/librenms2.png;type=image/png" $API_URL/apps/1/screenshots +curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/prometheus/prometheus1.png;type=image/png" $API_URL/apps/1/screenshots +echo +curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/prometheus/prometheus2.png;type=image/png" $API_URL/apps/1/screenshots +echo +curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/prometheus/prometheus3.png;type=image/png" $API_URL/apps/1/screenshots +echo echo echo App2 -curl -X POST $API_URL/apps --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/app02-oxidized.json +curl -X POST $API_URL/apps --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/app02-grafana.json echo echo App2 logo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/logo/oxidized.svg;type=image/svg+xml" $API_URL/apps/2/logo +curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/logo/grafana.svg;type=image/svg+xml" $API_URL/apps/2/logo echo echo App2 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/oxidized/oxidized1.png;type=image/png" $API_URL/apps/2/screenshots +curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/grafana/grafana1.png;type=image/png" $API_URL/apps/2/screenshots echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/oxidized/oxidized2.png;type=image/png" $API_URL/apps/2/screenshots +curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/grafana/grafana2.png;type=image/png" $API_URL/apps/2/screenshots +echo +curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/grafana/grafana3.png;type=image/png" $API_URL/apps/2/screenshots echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/oxidized/oxidized3.png;type=image/png" $API_URL/apps/2/screenshots -echo +echo echo App3 -curl -X POST $API_URL/apps --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/app03-nav.json +curl -X POST $API_URL/apps --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/app03-uptime-kuma.json echo echo App3 logo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/logo/nav.svg;type=image/svg+xml" $API_URL/apps/3/logo +curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/logo/uptime-kuma.png;type=image/png" $API_URL/apps/3/logo echo echo App3 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/nav/nav1.png;type=image/png" $API_URL/apps/3/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/nav/nav2.png;type=image/png" $API_URL/apps/3/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/nav/nav3.png;type=image/png" $API_URL/apps/3/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/nav/nav4.png;type=image/png" $API_URL/apps/3/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/nav/nav5.png;type=image/png" $API_URL/apps/3/screenshots - -echo -echo App4 -curl -X POST $API_URL/apps --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/app04-opennti.json -echo -echo App4 logo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/logo/open-nti.svg;type=image/svg+xml" $API_URL/apps/4/logo -echo -echo App4 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/opennti/opennti1.png;type=image/png" $API_URL/apps/4/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/opennti/opennti2.png;type=image/png" $API_URL/apps/4/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/opennti/opennti3.png;type=image/png" $API_URL/apps/4/screenshots - -echo -echo App5 -curl -X POST $API_URL/apps --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/app05-prometheus.json -echo -echo App5 logo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/logo/prometheus.svg;type=image/svg+xml" $API_URL/apps/5/logo -echo -echo App5 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/prometheus/prometheus1.png;type=image/png" $API_URL/apps/5/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/prometheus/prometheus2.png;type=image/png" $API_URL/apps/5/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/prometheus/prometheus3.png;type=image/png" $API_URL/apps/5/screenshots -echo - -echo -echo App6 -curl -X POST $API_URL/apps --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/app06-grafana.json -echo -echo App6 logo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/logo/grafana.svg;type=image/svg+xml" $API_URL/apps/6/logo -echo -echo App6 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/grafana/grafana1.png;type=image/png" $API_URL/apps/6/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/grafana/grafana2.png;type=image/png" $API_URL/apps/6/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/grafana/grafana3.png;type=image/png" $API_URL/apps/6/screenshots -echo -echo App6 v2 -curl -X POST $API_URL/apps/version --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/app06-grafana_v7.2.0.json -echo - -echo -echo App7 -curl -X POST $API_URL/apps --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/app07-bastion.json -echo -echo App7 logo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/logo/bastion.svg;type=image/svg+xml" $API_URL/apps/7/logo -echo -echo App7 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/bastion/bastion1.png;type=image/png" $API_URL/apps/7/screenshots -echo - -echo -echo App8 -curl -X POST $API_URL/apps --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/app08-perfsonar-pwa.json -echo -echo App8 logo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/logo/perfsonar.png;type=image/png" $API_URL/apps/8/logo -echo -echo App8 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/perfsonar-pwa/perfsonar-pwa1.png;type=image/png" $API_URL/apps/8/screenshots -echo -echo App8 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/perfsonar-pwa/perfsonar-pwa2.png;type=image/png" $API_URL/apps/8/screenshots -echo -echo App8 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/perfsonar-pwa/perfsonar-pwa3.png;type=image/png" $API_URL/apps/8/screenshots -echo -echo App8 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/perfsonar-pwa/perfsonar-pwa4.png;type=image/png" $API_URL/apps/8/screenshots -echo -echo App8 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/perfsonar-pwa/perfsonar-pwa5.png;type=image/png" $API_URL/apps/8/screenshots -echo - -echo -echo App9 -curl -X POST $API_URL/apps --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/app09-librebooking.json -echo -echo App9 logo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/logo/librebooking.png;type=image/png" $API_URL/apps/9/logo -echo -echo App9 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/librebooking/librebooking1.png;type=image/png" $API_URL/apps/9/screenshots -echo -echo App9 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/librebooking/librebooking2.png;type=image/png" $API_URL/apps/9/screenshots -echo -echo App9 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/librebooking/librebooking3.png;type=image/png" $API_URL/apps/9/screenshots -echo - -echo -echo App10 -curl -X POST $API_URL/apps --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/app10-spa-inventory.json -echo -echo App10 logo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/logo/spa.png;type=image/png" $API_URL/apps/10/logo -echo -echo App10 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/spa-inventory/spa-inventory1.png;type=image/png" $API_URL/apps/10/screenshots -echo -echo App10 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/spa-inventory/spa-inventory2.png;type=image/png" $API_URL/apps/10/screenshots -echo -echo App10 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/spa-inventory/spa-inventory3.png;type=image/png" $API_URL/apps/10/screenshots -echo -echo App10 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/spa-inventory/spa-inventory4.png;type=image/png" $API_URL/apps/10/screenshots -echo - -echo -echo App11 -curl -X POST $API_URL/apps --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/app11-statping.json -echo -echo App11 logo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/logo/statping.png;type=image/png" $API_URL/apps/11/logo -echo -echo App11 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/statping/statping1.png;type=image/png" $API_URL/apps/11/screenshots -echo -echo App11 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/statping/statping2.png;type=image/png" $API_URL/apps/11/screenshots -echo -echo App11 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/statping/statping3.png;type=image/png" $API_URL/apps/11/screenshots -echo - -echo -echo App12 -curl -X POST $API_URL/apps --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/app12-perfsonar-maddash.json -echo -echo App12 logo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/logo/perfsonar.png;type=image/png" $API_URL/apps/12/logo -echo -echo App12 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/perfsonar-maddash/perfsonar-maddash1.png;type=image/png" $API_URL/apps/12/screenshots -echo - -echo -echo App13 -curl -X POST $API_URL/apps --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/app13-debian-repository.json -echo -echo App13 logo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/logo/debian.svg;type=image/svg+xml" $API_URL/apps/13/logo -echo -echo App13 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/debian-repository/debian-repository1.png;type=image/png" $API_URL/apps/13/screenshots -echo -echo App13 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/debian-repository/debian-repository2.png;type=image/png" $API_URL/apps/13/screenshots -echo -echo App13 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/debian-repository/debian-repository3.png;type=image/png" $API_URL/apps/13/screenshots -echo -echo App13 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/debian-repository/debian-repository4.png;type=image/png" $API_URL/apps/13/screenshots -echo - -echo -echo App14 -curl -X POST $API_URL/apps --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/app14-influxdb.json -echo -echo App14 logo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/logo/influxdb.png;type=image/png" $API_URL/apps/14/logo -echo -echo App14 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/influxdb/influxdb1.png;type=image/png" $API_URL/apps/14/screenshots -echo -echo App14 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/influxdb/influxdb2.png;type=image/png" $API_URL/apps/14/screenshots -echo - -echo -echo App15 -curl -X POST $API_URL/apps --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/app15-jenkins.json -echo -echo App15 logo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/logo/jenkins.svg;type=image/svg+xml" $API_URL/apps/15/logo -echo -echo App15 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/jenkins/jenkins1.png;type=image/png" $API_URL/apps/15/screenshots -echo - -echo -echo App16 -curl -X POST $API_URL/apps --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/app16-elasticstack.json -echo -echo App16 logo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/logo/elk.svg;type=image/svg+xml" $API_URL/apps/16/logo -echo -echo App16 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/elasticstack/elk1.png;type=image/png" $API_URL/apps/16/screenshots -echo -echo App16 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/elasticstack/elk2.png;type=image/png" $API_URL/apps/16/screenshots -echo - -echo -echo App17 -curl -X POST $API_URL/apps --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/app17-perfsonar-esmond.json -echo -echo App17 logo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/logo/perfsonar.png;type=image/png" $API_URL/apps/17/logo -echo -echo App17 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/perfsonar-esmond/perfsonar-esmond1.png;type=image/png" $API_URL/apps/17/screenshots -echo - -echo -echo App18 -curl -X POST $API_URL/apps --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/app18-wifimon.json -echo -echo App18 logo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/logo/wifimon.png;type=image/png" $API_URL/apps/18/logo -echo -echo App18 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/wifimon/wifimon1.png;type=image/png" $API_URL/apps/18/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/wifimon/wifimon2.png;type=image/png" $API_URL/apps/18/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/wifimon/wifimon3.png;type=image/png" $API_URL/apps/18/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/wifimon/wifimon4.png;type=image/png" $API_URL/apps/18/screenshots -echo -echo App18 v2 -curl -X POST $API_URL/apps/version --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/app18-wifimon_v1.6.0.json -echo - -echo -echo App19 -curl -X POST $API_URL/apps --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/app19-perfsonar-centralmanagement.json -echo -echo App19 logo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/logo/perfsonar.png;type=image/png" $API_URL/apps/19/logo -echo -echo App19 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/perfsonar-centralmanagement/perfsonar-centralmanagement1.png;type=image/png" $API_URL/apps/19/screenshots -echo - -echo -echo App20 -curl -X POST $API_URL/apps --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/app20-icinga.json -echo -echo App20 logo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/logo/icinga.svg;type=image/svg+xml" $API_URL/apps/20/logo -echo -echo App20 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/icinga/icinga1.png;type=image/png" $API_URL/apps/20/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/icinga/icinga2.png;type=image/png" $API_URL/apps/20/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/icinga/icinga3.png;type=image/png" $API_URL/apps/20/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/icinga/icinga4.png;type=image/png" $API_URL/apps/20/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/icinga/icinga5.png;type=image/png" $API_URL/apps/20/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/icinga/icinga6.png;type=image/png" $API_URL/apps/20/screenshots -echo - +curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/uptime-kuma/uptime-kuma1.jpg;type=image/jpg" $API_URL/apps/3/screenshots echo -echo App21 -curl -X POST $API_URL/apps --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/app21-victoria-metrics.json +curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/uptime-kuma/uptime-kuma2.jpg;type=image/jpg" $API_URL/apps/3/screenshots echo -echo App21 logo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/logo/victoria-metrics.png;type=image/png" $API_URL/apps/21/logo +curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/uptime-kuma/uptime-kuma3.jpg;type=image/jpg" $API_URL/apps/3/screenshots echo -echo App21 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/victoria-metrics/victoria-metrics1.png;type=image/png" $API_URL/apps/21/screenshots +curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/uptime-kuma/uptime-kuma4.jpg;type=image/jpg" $API_URL/apps/3/screenshots echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/victoria-metrics/victoria-metrics2.png;type=image/png" $API_URL/apps/21/screenshots +curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/uptime-kuma/uptime-kuma5.jpg;type=image/jpg" $API_URL/apps/3/screenshots echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/victoria-metrics/victoria-metrics3.png;type=image/png" $API_URL/apps/21/screenshots +curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/uptime-kuma/uptime-kuma6.jpg;type=image/jpg" $API_URL/apps/3/screenshots echo echo -echo App22 -curl -X POST $API_URL/apps --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/app22-synapse.json -echo -echo App22 logo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/logo/synapse.png;type=image/png" $API_URL/apps/22/logo -echo -echo App22 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/synapse/synapse1.png;type=image/png" $API_URL/apps/22/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/synapse/synapse2.png;type=image/png" $API_URL/apps/22/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/synapse/synapse3.png;type=image/png" $API_URL/apps/22/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/synapse/synapse4.png;type=image/png" $API_URL/apps/22/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/synapse/synapse5.png;type=image/png" $API_URL/apps/22/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/synapse/synapse6.png;type=image/png" $API_URL/apps/22/screenshots -echo - -echo -echo App23 -curl -X POST $API_URL/apps --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/app23-routinator.json -echo -echo App23 logo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/logo/routinator.svg;type=image/svg+xml" $API_URL/apps/23/logo -echo -echo App23 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/routinator/routinator1.png;type=image/png" $API_URL/apps/23/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/routinator/routinator2.png;type=image/png" $API_URL/apps/23/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/routinator/routinator3.png;type=image/png" $API_URL/apps/23/screenshots -echo - -echo -echo App24 -curl -X POST $API_URL/apps --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/app24-codimd.json -echo -echo App24 logo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/logo/codimd.png;type=image/png" $API_URL/apps/24/logo -echo -echo App24 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/codimd/codimd1.png;type=image/png" $API_URL/apps/24/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/codimd/codimd2.png;type=image/png" $API_URL/apps/24/screenshots -echo - -echo -echo App25 -curl -X POST $API_URL/apps --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/app25-webdav.json -echo -echo App25 logo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/logo/webdav.svg;type=image/svg+xml" $API_URL/apps/25/logo -echo -echo App25 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/webdav/webdav1.png;type=image/png" $API_URL/apps/25/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/webdav/webdav2.png;type=image/png" $API_URL/apps/25/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/webdav/webdav3.png;type=image/png" $API_URL/apps/25/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/webdav/webdav4.png;type=image/png" $API_URL/apps/25/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/webdav/webdav5.png;type=image/png" $API_URL/apps/25/screenshots -echo - -echo -echo App26 -curl -X POST $API_URL/apps --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/app26-uptime-kuma.json -echo -echo App26 logo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/logo/uptime-kuma.png;type=image/png" $API_URL/apps/26/logo -echo -echo App26 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/uptime-kuma/uptime-kuma1.jpg;type=image/jpg" $API_URL/apps/26/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/uptime-kuma/uptime-kuma2.jpg;type=image/jpg" $API_URL/apps/26/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/uptime-kuma/uptime-kuma3.jpg;type=image/jpg" $API_URL/apps/26/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/uptime-kuma/uptime-kuma4.jpg;type=image/jpg" $API_URL/apps/26/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/uptime-kuma/uptime-kuma5.jpg;type=image/jpg" $API_URL/apps/26/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/uptime-kuma/uptime-kuma6.jpg;type=image/jpg" $API_URL/apps/26/screenshots -echo - -echo -echo App27 -curl -X POST $API_URL/apps --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/app27-netbox.json -echo -echo App27 logo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/logo/netbox.svg;type=image/svg+xml" $API_URL/apps/27/logo -echo -echo App27 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/netbox/netbox1.png;type=image/png" $API_URL/apps/27/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/netbox/netbox2.png;type=image/png" $API_URL/apps/27/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/netbox/netbox3.png;type=image/png" $API_URL/apps/27/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/netbox/netbox4.png;type=image/png" $API_URL/apps/27/screenshots -echo - -echo -echo App28 -curl -X POST $API_URL/apps --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/app28-zabbix.json -echo -echo App28 logo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/logo/zabbix.png;type=image/png" $API_URL/apps/28/logo -echo -echo App28 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/zabbix/zabbix1.png;type=image/png" $API_URL/apps/28/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/zabbix/zabbix2.png;type=image/png" $API_URL/apps/28/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/zabbix/zabbix3.png;type=image/png" $API_URL/apps/28/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/zabbix/zabbix4.png;type=image/png" $API_URL/apps/28/screenshots -echo - -echo -echo App29 -curl -X POST $API_URL/apps --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/app29-spa.json -echo -echo App29 logo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/logo/spa.png;type=image/png" $API_URL/apps/29/logo -echo -echo App29 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/spa/spa1.png;type=image/png" $API_URL/apps/29/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/spa/spa2.png;type=image/png" $API_URL/apps/29/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/spa/spa3.png;type=image/png" $API_URL/apps/29/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/spa/spa4.png;type=image/png" $API_URL/apps/29/screenshots -echo - -echo -echo App30 -curl -X POST $API_URL/apps --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/app30-healthchecks.json -echo -echo App30 logo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/logo/healthchecks.jpg;type=image/jpg" $API_URL/apps/30/logo -echo -echo App30 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/healthchecks/healthchecks1.png;type=image/png" $API_URL/apps/30/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/healthchecks/healthchecks2.png;type=image/png" $API_URL/apps/30/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/healthchecks/healthchecks3.png;type=image/png" $API_URL/apps/30/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/healthchecks/healthchecks4.png;type=image/png" $API_URL/apps/30/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/healthchecks/healthchecks5.png;type=image/png" $API_URL/apps/30/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/healthchecks/healthchecks6.png;type=image/png" $API_URL/apps/30/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/healthchecks/healthchecks7.png;type=image/png" $API_URL/apps/30/screenshots -echo - -echo -echo App31 -curl -X POST $API_URL/apps --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/app31-ctfd.json -echo -echo App31 logo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/logo/ctfd.png;type=image/png" $API_URL/apps/31/logo -echo -echo App31 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/ctfd/ctfd1.png;type=image/png" $API_URL/apps/31/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/ctfd/ctfd2.png;type=image/png" $API_URL/apps/31/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/ctfd/ctfd3.png;type=image/png" $API_URL/apps/31/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/ctfd/ctfd4.png;type=image/png" $API_URL/apps/31/screenshots -echo - -echo -echo App32 -curl -X POST $API_URL/apps --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/app32-juiceshop.json -echo -echo App32 logo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/logo/juiceshop.png;type=image/png" $API_URL/apps/32/logo -echo -echo App32 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/juiceshop/juiceshop1.png;type=image/png" $API_URL/apps/32/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/juiceshop/juiceshop2.png;type=image/png" $API_URL/apps/32/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/juiceshop/juiceshop3.png;type=image/png" $API_URL/apps/32/screenshots -echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/juiceshop/juiceshop4.png;type=image/png" $API_URL/apps/32/screenshots -echo - -echo -echo App33 -curl -X POST $API_URL/apps --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/app33-adminer.json +echo App4 +curl -X POST $API_URL/apps --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/app04-healthchecks.json echo -echo App33 logo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/logo/adminer.png;type=image/png" $API_URL/apps/33/logo +echo App4 logo +curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/logo/healthchecks.jpg;type=image/jpg" $API_URL/apps/4/logo echo -echo App33 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/adminer/adminer1.png;type=image/png" $API_URL/apps/33/screenshots +echo App4 screenshots +curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/healthchecks/healthchecks1.png;type=image/png" $API_URL/apps/4/screenshots echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/adminer/adminer2.png;type=image/png" $API_URL/apps/33/screenshots +curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/healthchecks/healthchecks2.png;type=image/png" $API_URL/apps/4/screenshots echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/adminer/adminer3.png;type=image/png" $API_URL/apps/33/screenshots +curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/healthchecks/healthchecks3.png;type=image/png" $API_URL/apps/4/screenshots echo - +curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/healthchecks/healthchecks4.png;type=image/png" $API_URL/apps/4/screenshots echo -echo App34 -curl -X POST $API_URL/apps --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/app34-maildev.json +curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/healthchecks/healthchecks5.png;type=image/png" $API_URL/apps/4/screenshots echo -echo App34 logo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/logo/maildev.png;type=image/png" $API_URL/apps/34/logo +curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/healthchecks/healthchecks6.png;type=image/png" $API_URL/apps/4/screenshots echo -echo App34 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/maildev/maildev1.png;type=image/png" $API_URL/apps/34/screenshots +curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/healthchecks/healthchecks7.png;type=image/png" $API_URL/apps/4/screenshots echo echo -echo App35 -curl -X POST $API_URL/apps --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/app35-changedetectionio.json -echo -echo App35 logo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/logo/changedetectionio.svg;type=image/svg+xml" $API_URL/apps/35/logo -echo -echo App35 screenshots -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/changedetectionio/changedetectionio1.png;type=image/png" $API_URL/apps/35/screenshots +echo App5 +curl -X POST $API_URL/apps --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/app05-postgresql.json echo -curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/screenshots/changedetectionio/changedetectionio2.png;type=image/png" $API_URL/apps/35/screenshots +echo App5 logo +curl -X POST --header "Authorization: Bearer $TOKEN" -F "file=@data/apps/images/logo/postgresql.svg;type=image/svg+xml" $API_URL/apps/5/logo echo echo @@ -645,36 +164,6 @@ curl -X PATCH $API_URL/apps/state/2 --header "Authorization: Bearer $TOKEN" --he curl -X PATCH $API_URL/apps/state/3 --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/activations/active.json curl -X PATCH $API_URL/apps/state/4 --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/activations/active.json curl -X PATCH $API_URL/apps/state/5 --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/activations/active.json -curl -X PATCH $API_URL/apps/state/6 --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/activations/active.json -curl -X PATCH $API_URL/apps/state/7 --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/activations/active.json -curl -X PATCH $API_URL/apps/state/8 --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/activations/active.json -curl -X PATCH $API_URL/apps/state/9 --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/activations/active.json -curl -X PATCH $API_URL/apps/state/10 --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/activations/active.json -curl -X PATCH $API_URL/apps/state/11 --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/activations/active.json -curl -X PATCH $API_URL/apps/state/12 --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/activations/active.json -curl -X PATCH $API_URL/apps/state/13 --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/activations/active.json -curl -X PATCH $API_URL/apps/state/14 --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/activations/active.json -curl -X PATCH $API_URL/apps/state/15 --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/activations/active.json -curl -X PATCH $API_URL/apps/state/16 --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/activations/active.json -curl -X PATCH $API_URL/apps/state/17 --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/activations/active.json -curl -X PATCH $API_URL/apps/state/18 --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/activations/active.json -curl -X PATCH $API_URL/apps/state/19 --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/activations/active.json -curl -X PATCH $API_URL/apps/state/20 --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/activations/active.json -curl -X PATCH $API_URL/apps/state/21 --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/activations/active.json -curl -X PATCH $API_URL/apps/state/22 --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/activations/active.json -curl -X PATCH $API_URL/apps/state/23 --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/activations/active.json -curl -X PATCH $API_URL/apps/state/24 --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/activations/active.json -curl -X PATCH $API_URL/apps/state/25 --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/activations/active.json -curl -X PATCH $API_URL/apps/state/26 --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/activations/active.json -curl -X PATCH $API_URL/apps/state/27 --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/activations/active.json -curl -X PATCH $API_URL/apps/state/28 --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/activations/active.json -curl -X PATCH $API_URL/apps/state/29 --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/activations/active.json -curl -X PATCH $API_URL/apps/state/30 --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/activations/active.json -curl -X PATCH $API_URL/apps/state/31 --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/activations/active.json -curl -X PATCH $API_URL/apps/state/32 --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/activations/active.json -curl -X PATCH $API_URL/apps/state/33 --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/activations/active.json -curl -X PATCH $API_URL/apps/state/34 --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/activations/active.json -curl -X PATCH $API_URL/apps/state/35 --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/json" --header "Accept: application/json" -d @data/apps/activations/active.json echo echo