From 23208ecff899b86e53c6c10d372996ef99c7d624 Mon Sep 17 00:00:00 2001 From: Arash Omidi Date: Mon, 26 May 2025 12:14:17 +0200 Subject: [PATCH 1/4] start project --- .project | 11 + authorization/.classpath | 2 + authorization/.project | 11 + certificate-authority/.classpath | 2 + certificate-authority/.project | 11 + choreographer/.classpath | 2 + choreographer/.project | 11 + configuration/.classpath | 2 + configuration/.project | 11 + core-common/.classpath | 10 +- core-common/.project | 11 + datamanager/.classpath | 2 + datamanager/.project | 11 + deviceregistry/.classpath | 2 + deviceregistry/.project | 11 + docker-all/.project | 11 + docker-all/example/docker-compose.yml | 42 +- docker-all/example/initSQL.sh | 4 +- .../example/properties/gatekeeper.properties | 24 +- .../example/properties/gateway.properties | 24 +- docker-all/example/sql/01-create-users.sql | 22 + .../example/sql/create_empty_arrowhead_db.sql | 103 ++ .../privileges/authorization_privileges.sql | 33 + .../certificate_authority_privileges.sql | 13 + .../privileges/choreographer_privileges.sql | 29 + .../privileges/configuration_privileges.sql | 11 + .../privileges/create_arrowhead_tables.sql | 1358 +++++++++++++++++ .../sql/privileges/datamanager_privileges.sql | 17 + .../privileges/device_registry_privileges.sql | 33 + .../privileges/event_handler_privileges.sql | 19 + .../sql/privileges/gatekeeper_privileges.sql | 31 + .../sql/privileges/gateway_privileges.sql | 9 + .../sql/privileges/mscv_privileges.sql | 55 + .../onboarding_controller_privileges.sql | 11 + .../privileges/orchestrator_privileges.sql | 33 + .../plant_description_engine_privileges.sql | 15 + .../sql/privileges/qos_monitor_privileges.sql | 47 + .../service_registry_privileges.sql | 57 + .../privileges/system_registry_privileges.sql | 33 + .../sql/privileges/timemanager_privileges.sql | 9 + .../sql/privileges/translator_privileges.sql | 9 + eventhandler/.classpath | 2 + eventhandler/.project | 11 + gatekeeper/.classpath | 2 + gatekeeper/.project | 11 + gateway/.classpath | 2 + gateway/.project | 11 + onboarding/.classpath | 2 + onboarding/.project | 11 + orchestrator/.classpath | 2 + orchestrator/.project | 11 + plantdescriptionengine/.classpath | 2 + plantdescriptionengine/.project | 4 +- relay-library/.classpath | 1 + relay-library/.project | 11 + serviceregistry/.classpath | 2 + serviceregistry/.project | 11 + systemregistry/.classpath | 2 + systemregistry/.project | 11 + translator/.classpath | 2 + translator/.project | 85 +- 61 files changed, 2279 insertions(+), 79 deletions(-) create mode 100644 docker-all/example/sql/01-create-users.sql create mode 100644 docker-all/example/sql/create_empty_arrowhead_db.sql create mode 100644 docker-all/example/sql/privileges/authorization_privileges.sql create mode 100644 docker-all/example/sql/privileges/certificate_authority_privileges.sql create mode 100644 docker-all/example/sql/privileges/choreographer_privileges.sql create mode 100644 docker-all/example/sql/privileges/configuration_privileges.sql create mode 100644 docker-all/example/sql/privileges/create_arrowhead_tables.sql create mode 100644 docker-all/example/sql/privileges/datamanager_privileges.sql create mode 100644 docker-all/example/sql/privileges/device_registry_privileges.sql create mode 100644 docker-all/example/sql/privileges/event_handler_privileges.sql create mode 100644 docker-all/example/sql/privileges/gatekeeper_privileges.sql create mode 100644 docker-all/example/sql/privileges/gateway_privileges.sql create mode 100644 docker-all/example/sql/privileges/mscv_privileges.sql create mode 100644 docker-all/example/sql/privileges/onboarding_controller_privileges.sql create mode 100644 docker-all/example/sql/privileges/orchestrator_privileges.sql create mode 100644 docker-all/example/sql/privileges/plant_description_engine_privileges.sql create mode 100644 docker-all/example/sql/privileges/qos_monitor_privileges.sql create mode 100644 docker-all/example/sql/privileges/service_registry_privileges.sql create mode 100644 docker-all/example/sql/privileges/system_registry_privileges.sql create mode 100644 docker-all/example/sql/privileges/timemanager_privileges.sql create mode 100644 docker-all/example/sql/privileges/translator_privileges.sql diff --git a/.project b/.project index dd1409788..378a9dc0f 100644 --- a/.project +++ b/.project @@ -37,4 +37,15 @@ org.eclipse.m2e.core.maven2Nature org.eclipse.wst.common.project.facet.core.nature + + + 1748251465992 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + diff --git a/authorization/.classpath b/authorization/.classpath index 6e0021feb..8c4583205 100644 --- a/authorization/.classpath +++ b/authorization/.classpath @@ -9,6 +9,7 @@ + @@ -22,6 +23,7 @@ + diff --git a/authorization/.project b/authorization/.project index 960cd8de9..dcefffbc1 100644 --- a/authorization/.project +++ b/authorization/.project @@ -37,4 +37,15 @@ org.eclipse.m2e.core.maven2Nature org.eclipse.wst.common.project.facet.core.nature + + + 1748251465728 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + diff --git a/certificate-authority/.classpath b/certificate-authority/.classpath index 6e0021feb..8c4583205 100644 --- a/certificate-authority/.classpath +++ b/certificate-authority/.classpath @@ -9,6 +9,7 @@ + @@ -22,6 +23,7 @@ + diff --git a/certificate-authority/.project b/certificate-authority/.project index ce9b44060..abf4533e9 100644 --- a/certificate-authority/.project +++ b/certificate-authority/.project @@ -25,4 +25,15 @@ org.eclipse.jdt.core.javanature org.eclipse.m2e.core.maven2Nature + + + 1748251465748 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + diff --git a/choreographer/.classpath b/choreographer/.classpath index 6e0021feb..8c4583205 100644 --- a/choreographer/.classpath +++ b/choreographer/.classpath @@ -9,6 +9,7 @@ + @@ -22,6 +23,7 @@ + diff --git a/choreographer/.project b/choreographer/.project index 7ea15dd88..a680cd93e 100644 --- a/choreographer/.project +++ b/choreographer/.project @@ -43,4 +43,15 @@ org.eclipse.wst.common.project.facet.core.nature net.sourceforge.metrics.nature + + + 1748251465763 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + diff --git a/configuration/.classpath b/configuration/.classpath index 6e0021feb..8c4583205 100644 --- a/configuration/.classpath +++ b/configuration/.classpath @@ -9,6 +9,7 @@ + @@ -22,6 +23,7 @@ + diff --git a/configuration/.project b/configuration/.project index bcce7699e..d4cfcaf5e 100644 --- a/configuration/.project +++ b/configuration/.project @@ -25,4 +25,15 @@ org.eclipse.jdt.core.javanature org.eclipse.m2e.core.maven2Nature + + + 1748251465773 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + diff --git a/core-common/.classpath b/core-common/.classpath index dfbff8a8e..7dca7dd68 100644 --- a/core-common/.classpath +++ b/core-common/.classpath @@ -17,6 +17,7 @@ + @@ -29,18 +30,21 @@ - + - - + + + + + diff --git a/core-common/.project b/core-common/.project index aa6537597..126b8a7a5 100644 --- a/core-common/.project +++ b/core-common/.project @@ -44,4 +44,15 @@ org.eclipse.m2e.core.maven2Nature org.eclipse.wst.common.project.facet.core.nature + + + 1748251465783 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + diff --git a/datamanager/.classpath b/datamanager/.classpath index 6e0021feb..8c4583205 100644 --- a/datamanager/.classpath +++ b/datamanager/.classpath @@ -9,6 +9,7 @@ + @@ -22,6 +23,7 @@ + diff --git a/datamanager/.project b/datamanager/.project index 1fbce9f4c..46570665b 100644 --- a/datamanager/.project +++ b/datamanager/.project @@ -37,4 +37,15 @@ org.eclipse.m2e.core.maven2Nature org.eclipse.wst.common.project.facet.core.nature + + + 1748251465797 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + diff --git a/deviceregistry/.classpath b/deviceregistry/.classpath index 6e0021feb..8c4583205 100644 --- a/deviceregistry/.classpath +++ b/deviceregistry/.classpath @@ -9,6 +9,7 @@ + @@ -22,6 +23,7 @@ + diff --git a/deviceregistry/.project b/deviceregistry/.project index 050b930f4..9882db744 100644 --- a/deviceregistry/.project +++ b/deviceregistry/.project @@ -25,4 +25,15 @@ org.eclipse.jdt.core.javanature org.eclipse.m2e.core.maven2Nature + + + 1748251465807 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + diff --git a/docker-all/.project b/docker-all/.project index ea00346a5..a423c20e2 100644 --- a/docker-all/.project +++ b/docker-all/.project @@ -14,4 +14,15 @@ org.eclipse.m2e.core.maven2Nature + + + 1748251466008 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + diff --git a/docker-all/example/docker-compose.yml b/docker-all/example/docker-compose.yml index 3e193d153..eb073edaa 100644 --- a/docker-all/example/docker-compose.yml +++ b/docker-all/example/docker-compose.yml @@ -1,30 +1,48 @@ version: "3" services: - arrowhead_core_mysql: - container_name: arrowhead_core_mysql - image: mysql:5.7 + arrowhead-core-mysql: + container_name: arrowhead-core-mysql + image: mysql:8.0 + command: --host-cache-size=0 environment: - - MYSQL_ROOT_PASSWORD=THIS_WILL_BE_YOUR_CONTAINERS_ROOT_PW + - MYSQL_ROOT_PASSWORD=password + - MYSQL_DATABASE=arrowhead volumes: - - arrowhead_core_mysql:/var/lib/mysql + - mysql:/var/lib/mysql - ./sql:/docker-entrypoint-initdb.d/ ports: - 3306:3306 + healthcheck: + test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] + interval: 10s + timeout: 5s + retries: 5 - arrowhead_core: - container_name: arrowhead_core + + arrowhead-core: build: ../ depends_on: - - arrowhead_core_mysql + arrowhead-core-mysql: + condition: service_healthy environment: - JVM_FLAGS=-XX:+UseSerialGC -Xmx1G -Xms32m # Lowers memory usage of the services, but also lowers performance. + - MYSQL_HOST=arrowhead-core-mysql + - MYSQL_PORT=3306 + - MYSQL_DB=arrowhead + - MYSQL_USER=root + - MYSQL_PASSWORD=password + - SR_ADDRESS=arrowhead-core + - SR_PORT=8443 + - ARROWHEAD_SECURE_SERVER=false + + volumes: # Only systems with provided .properties files will be started when the container stars. - ./properties/serviceregistry.properties:/opt/arrowhead-core/serviceregistry/application.properties - ./properties/authorization.properties:/opt/arrowhead-core/authorization/application.properties - ./properties/orchestrator.properties:/opt/arrowhead-core/orchestrator/application.properties - #- ./properties/eventhandler.properties:/opt/arrowhead-core/eventhandler/application.properties + - ./properties/eventhandler.properties:/opt/arrowhead-core/eventhandler/application.properties - ./properties/gatekeeper.properties:/opt/arrowhead-core/gatekeeper/application.properties - ./properties/gateway.properties:/opt/arrowhead-core/gateway/application.properties - ./properties/certificateauthority.properties:/opt/arrowhead-core/certificate-authority/application.properties @@ -32,11 +50,11 @@ services: - 8443:8443 # Service Registry - 8445:8445 # Authorization - 8441:8441 # Orchestrator - #- 8455:8455 # Event Handler + - 8455:8455 # Event Handler - 8449:8449 # Gatekeeper - 8453:8453 # Gateway - 8448:8448 # Certificate Authority volumes: - arrowhead_core_mysql: - external: true + mysql: + external: true \ No newline at end of file diff --git a/docker-all/example/initSQL.sh b/docker-all/example/initSQL.sh index c45918594..6c1029130 100644 --- a/docker-all/example/initSQL.sh +++ b/docker-all/example/initSQL.sh @@ -4,11 +4,12 @@ rm -rf sql mkdir sql cd sql -wget https://raw.githubusercontent.com/eclipse-arrowhead/core-java-spring/master/scripts/create_empty_arrowhead_db.sql +curl -O https://raw.githubusercontent.com/eclipse-arrowhead/core-java-spring/master/scripts/create_empty_arrowhead_db.sql sed -i 's/source /& docker-entrypoint-initdb.d\/privileges\//g' create_empty_arrowhead_db.sql mkdir privileges cd privileges + wget https://raw.githubusercontent.com/eclipse-arrowhead/core-java-spring/master/scripts/authorization_privileges.sql wget https://raw.githubusercontent.com/eclipse-arrowhead/core-java-spring/master/scripts/certificate_authority_privileges.sql wget https://raw.githubusercontent.com/eclipse-arrowhead/core-java-spring/master/scripts/choreographer_privileges.sql @@ -26,3 +27,4 @@ wget https://raw.githubusercontent.com/eclipse-arrowhead/core-java-spring/master wget https://raw.githubusercontent.com/eclipse-arrowhead/core-java-spring/master/scripts/datamanager_privileges.sql wget https://raw.githubusercontent.com/eclipse-arrowhead/core-java-spring/master/scripts/configuration_privileges.sql wget https://raw.githubusercontent.com/eclipse-arrowhead/core-java-spring/master/scripts/plant_description_engine_privileges.sql +wget https://raw.githubusercontent.com/eclipse-arrowhead/core-java-spring/master/scripts/mscv_privileges.sql diff --git a/docker-all/example/properties/gatekeeper.properties b/docker-all/example/properties/gatekeeper.properties index 8d3dc3404..80ea03342 100644 --- a/docker-all/example/properties/gatekeeper.properties +++ b/docker-all/example/properties/gatekeeper.properties @@ -46,15 +46,15 @@ gateway_is_mandatory=true ### SECURE MODE ### ############################################ -#server.ssl.enabled=true -#server.ssl.key-store-type=PKCS12 -#server.ssl.key-store=classpath:certificates/gatekeeper.p12 -#server.ssl.key-store-password=123456 -#server.ssl.key-alias=gatekeeper -#server.ssl.key-password=123456 -#server.ssl.client-auth=need -#server.ssl.trust-store-type=PKCS12 -#server.ssl.trust-store=classpath:certificates/truststore.p12 -#server.ssl.trust-store-password=123456 - -#disable.hostname.verifier=false \ No newline at end of file +server.ssl.enabled=true +server.ssl.key-store-type=PKCS12 +server.ssl.key-store=classpath:certificates/gatekeeper.p12 +server.ssl.key-store-password=123456 +server.ssl.key-alias=gatekeeper +server.ssl.key-password=123456 +server.ssl.client-auth=need +server.ssl.trust-store-type=PKCS12 +server.ssl.trust-store=classpath:certificates/truststore.p12 +server.ssl.trust-store-password=123456 + +disable.hostname.verifier=false \ No newline at end of file diff --git a/docker-all/example/properties/gateway.properties b/docker-all/example/properties/gateway.properties index 810492eb8..d0e2ec575 100644 --- a/docker-all/example/properties/gateway.properties +++ b/docker-all/example/properties/gateway.properties @@ -41,15 +41,15 @@ max_port=8100 ### SECURE MODE ### ############################################ -#server.ssl.enabled=true -#server.ssl.key-store-type=PKCS12 -#server.ssl.key-store=classpath:certificates/gateway.p12 -#server.ssl.key-store-password=123456 -#server.ssl.key-alias=gateway -#server.ssl.key-password=123456 -#server.ssl.client-auth=need -#server.ssl.trust-store-type=PKCS12 -#server.ssl.trust-store=classpath:certificates/truststore.p12 -#server.ssl.trust-store-password=123456 - -#disable.hostname.verifier=false +server.ssl.enabled=true +server.ssl.key-store-type=PKCS12 +server.ssl.key-store=classpath:certificates/gateway.p12 +server.ssl.key-store-password=123456 +server.ssl.key-alias=gateway +server.ssl.key-password=123456 +server.ssl.client-auth=need +server.ssl.trust-store-type=PKCS12 +server.ssl.trust-store=classpath:certificates/truststore.p12 +server.ssl.trust-store-password=123456 + +disable.hostname.verifier=false diff --git a/docker-all/example/sql/01-create-users.sql b/docker-all/example/sql/01-create-users.sql new file mode 100644 index 000000000..68ceca49e --- /dev/null +++ b/docker-all/example/sql/01-create-users.sql @@ -0,0 +1,22 @@ +CREATE USER 'gateway'@'%' IDENTIFIED BY 'LfiSM9DpGfDEP5g'; +GRANT ALL PRIVILEGES ON arrowhead.* TO 'gateway'@'%'; + +CREATE USER 'gatekeeper'@'%' IDENTIFIED BY 'fbJKYzKhU5t8QtT'; +GRANT ALL PRIVILEGES ON arrowhead.* TO 'gatekeeper'@'%'; + +CREATE USER 'authorization'@'%' IDENTIFIED BY 'hqZFUkuHxhekio3'; +GRANT ALL PRIVILEGES ON arrowhead.* TO 'authorization'@'%'; + +CREATE USER 'orchestrator'@'%' IDENTIFIED BY 'KbgD2mTr8DQ4vtc'; +GRANT ALL PRIVILEGES ON arrowhead.* TO 'orchestrator'@'%'; + +CREATE USER 'service_registry'@'%' IDENTIFIED BY 'ZzNNpxrbZGVvfJ8'; +GRANT ALL PRIVILEGES ON arrowhead.* TO 'service_registry'@'%'; + +CREATE USER 'event_handler'@'%' IDENTIFIED BY 'gRLjXbqu9YwYhfK'; +GRANT ALL PRIVILEGES ON arrowhead.* TO 'event_handler'@'%'; + +CREATE USER 'certificate_authority'@'%' IDENTIFIED BY 'FsdG6Kgf9QpPfv2'; +GRANT ALL PRIVILEGES ON arrowhead.* TO 'certificate_authority'@'%'; + +FLUSH PRIVILEGES; diff --git a/docker-all/example/sql/create_empty_arrowhead_db.sql b/docker-all/example/sql/create_empty_arrowhead_db.sql new file mode 100644 index 000000000..87ad91ec0 --- /dev/null +++ b/docker-all/example/sql/create_empty_arrowhead_db.sql @@ -0,0 +1,103 @@ +DROP DATABASE IF EXISTS `arrowhead`; +CREATE DATABASE `arrowhead`; +USE `arrowhead`; + +-- create tables +source docker-entrypoint-initdb.d/privileges/create_arrowhead_tables.sql + +-- Set up privileges + +-- Service Registry +CREATE USER IF NOT EXISTS 'service_registry'@'localhost' IDENTIFIED BY 'ZzNNpxrbZGVvfJ8'; +CREATE USER IF NOT EXISTS 'service_registry'@'%' IDENTIFIED BY 'ZzNNpxrbZGVvfJ8'; +source docker-entrypoint-initdb.d/privileges/service_registry_privileges.sql + +-- System Registry +CREATE USER IF NOT EXISTS 'system_registry'@'localhost' IDENTIFIED BY 'Kh12Hhgaxzo7haf'; +CREATE USER IF NOT EXISTS 'system_registry'@'%' IDENTIFIED BY 'Kh12Hhgaxzo7haf'; +source docker-entrypoint-initdb.d/privileges/system_registry_privileges.sql + +-- Device Registry +CREATE USER IF NOT EXISTS 'device_registry'@'localhost' IDENTIFIED BY 'iooHU87hNGUalht'; +CREATE USER IF NOT EXISTS 'device_registry'@'%' IDENTIFIED BY 'iooHU87hNGUalht'; +source docker-entrypoint-initdb.d/privileges/device_registry_privileges.sql + +-- Onboarding controller +CREATE USER IF NOT EXISTS 'onboarding_controller'@'localhost' IDENTIFIED BY 'JKgh1as5f6oi7aV'; +CREATE USER IF NOT EXISTS 'onboarding_controller'@'%' IDENTIFIED BY 'JKgh1as5f6oi7aV'; +source docker-entrypoint-initdb.d/privileges/onboarding_controller_privileges.sql + +-- Authorization +CREATE USER IF NOT EXISTS 'authorization'@'localhost' IDENTIFIED BY 'hqZFUkuHxhekio3'; +CREATE USER IF NOT EXISTS 'authorization'@'%' IDENTIFIED BY 'hqZFUkuHxhekio3'; +source docker-entrypoint-initdb.d/privileges/authorization_privileges.sql + +-- Orchestrator +CREATE USER IF NOT EXISTS 'orchestrator'@'localhost' IDENTIFIED BY 'KbgD2mTr8DQ4vtc'; +CREATE USER IF NOT EXISTS 'orchestrator'@'%' IDENTIFIED BY 'KbgD2mTr8DQ4vtc'; +source docker-entrypoint-initdb.d/privileges/orchestrator_privileges.sql + +-- Event Handler +CREATE USER IF NOT EXISTS 'event_handler'@'localhost' IDENTIFIED BY 'gRLjXbqu9YwYhfK'; +CREATE USER IF NOT EXISTS 'event_handler'@'%' IDENTIFIED BY 'gRLjXbqu9YwYhfK'; +source docker-entrypoint-initdb.d/privileges/event_handler_privileges.sql + +-- DataManager +CREATE USER IF NOT EXISTS 'datamanager'@'localhost' IDENTIFIED BY 'gRLjXbqu0YwYhfK'; +CREATE USER IF NOT EXISTS 'datamanager'@'%' IDENTIFIED BY 'gRLjXbqu0YwYhfK'; +source docker-entrypoint-initdb.d/privileges/datamanager_privileges.sql + +-- TimeManager +CREATE USER IF NOT EXISTS 'timemanager'@'localhost' IDENTIFIED BY 'xyp2XEAu5Tbc41g'; +CREATE USER IF NOT EXISTS 'timemanager'@'%' IDENTIFIED BY 'xyp2XEAu5Tbc41g'; +source docker-entrypoint-initdb.d/privileges/timemanager_privileges.sql + +-- Choreographer +CREATE USER IF NOT EXISTS 'choreographer'@'localhost' IDENTIFIED BY 'Qa5yx4oBp4Y9RLX'; +CREATE USER IF NOT EXISTS 'choreographer'@'%' IDENTIFIED BY 'Qa5yx4oBp4Y9RLX'; +source docker-entrypoint-initdb.d/privileges/choreographer_privileges.sql + +-- Configuration +CREATE USER IF NOT EXISTS 'configuration'@'localhost' IDENTIFIED BY 'yRLjX2qA0YwYhzU'; +CREATE USER IF NOT EXISTS 'configuration'@'%' IDENTIFIED BY 'yRLjX2qA0YwYhzU'; +source docker-entrypoint-initdb.d/privileges/configuration_privileges.sql + +-- Gatekeeper +CREATE USER IF NOT EXISTS 'gatekeeper'@'localhost' IDENTIFIED BY 'fbJKYzKhU5t8QtT'; +CREATE USER IF NOT EXISTS 'gatekeeper'@'%' IDENTIFIED BY 'fbJKYzKhU5t8QtT'; +source docker-entrypoint-initdb.d/privileges/gatekeeper_privileges.sql + +-- Gateway +CREATE USER IF NOT EXISTS 'gateway'@'localhost' IDENTIFIED BY 'LfiSM9DpGfDEP5g'; +CREATE USER IF NOT EXISTS 'gateway'@'%' IDENTIFIED BY 'LfiSM9DpGfDEP5g'; +source docker-entrypoint-initdb.d/privileges/gateway_privileges.sql + +-- Certificate Authority +CREATE USER IF NOT EXISTS 'certificate_authority'@'localhost' IDENTIFIED BY 'FsdG6Kgf9QpPfv2'; +CREATE USER IF NOT EXISTS 'certificate_authority'@'%' IDENTIFIED BY 'FsdG6Kgf9QpPfv2'; +source docker-entrypoint-initdb.d/privileges/certificate_authority_privileges.sql + +-- QoS Monitor +CREATE USER IF NOT EXISTS 'qos_monitor'@'localhost' IDENTIFIED BY 'RLY3UEx6nx4kSXy'; +CREATE USER IF NOT EXISTS 'qos_monitor'@'%' IDENTIFIED BY 'RLY3UEx6nx4kSXy'; +source docker-entrypoint-initdb.d/privileges/qos_monitor_privileges.sql + +-- Translator +CREATE USER IF NOT EXISTS 'translator'@'localhost' IDENTIFIED BY 'wozYpV58G0HUkbL'; +CREATE USER IF NOT EXISTS 'translator'@'%' IDENTIFIED BY 'wozYpV58G0HUkbL'; +source docker-entrypoint-initdb.d/privileges/translator_privileges.sql + +-- GAMS +CREATE USER IF NOT EXISTS 'gams'@'localhost' IDENTIFIED BY 'Kvtmcxrp5fxUCk4'; +CREATE USER IF NOT EXISTS 'gams'@'%' IDENTIFIED BY 'Kvtmcxrp5fxUCk4'; +source docker-entrypoint-initdb.d/privileges/gams_privileges.sql + +-- Plant Description Engine +CREATE USER IF NOT EXISTS 'plant_description_engine'@'localhost' IDENTIFIED BY 'ivJ2y9qWCpTmzr0'; +CREATE USER IF NOT EXISTS 'plant_description_engine'@'%' IDENTIFIED BY 'ivJ2y9qWCpTmzr0'; +source docker-entrypoint-initdb.d/privileges/plant_description_engine_privileges.sql + +-- MSVC Monitor +CREATE USER IF NOT EXISTS 'mscv'@'localhost' IDENTIFIED BY 'ASdPsa64y56A128'; +CREATE USER IF NOT EXISTS 'mscv'@'%' IDENTIFIED BY 'ASdPsa64y56A128'; +source docker-entrypoint-initdb.d/privileges/mscv_privileges.sql diff --git a/docker-all/example/sql/privileges/authorization_privileges.sql b/docker-all/example/sql/privileges/authorization_privileges.sql new file mode 100644 index 000000000..0484c30a3 --- /dev/null +++ b/docker-all/example/sql/privileges/authorization_privileges.sql @@ -0,0 +1,33 @@ +USE `arrowhead`; + +REVOKE ALL, GRANT OPTION FROM 'authorization'@'localhost'; + +GRANT ALL PRIVILEGES ON `arrowhead`.`authorization_intra_cloud` TO 'authorization'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`authorization_intra_cloud_interface_connection` TO 'authorization'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`authorization_inter_cloud` TO 'authorization'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`authorization_inter_cloud_interface_connection` TO 'authorization'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`system_` TO 'authorization'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`cloud` TO 'authorization'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`relay` TO 'authorization'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`cloud_gatekeeper_relay` TO 'authorization'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`cloud_gateway_relay` TO 'authorization'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`service_definition` TO 'authorization'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`service_interface` TO 'authorization'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`logs` TO 'authorization'@'localhost'; + +REVOKE ALL, GRANT OPTION FROM 'authorization'@'%'; + +GRANT ALL PRIVILEGES ON `arrowhead`.`authorization_intra_cloud` TO 'authorization'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`authorization_intra_cloud_interface_connection` TO 'authorization'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`authorization_inter_cloud` TO 'authorization'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`authorization_inter_cloud_interface_connection` TO 'authorization'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`system_` TO 'authorization'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`cloud` TO 'authorization'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`relay` TO 'authorization'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`cloud_gatekeeper_relay` TO 'authorization'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`cloud_gateway_relay` TO 'authorization'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`service_definition` TO 'authorization'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`service_interface` TO 'authorization'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`logs` TO 'authorization'@'%'; + +FLUSH PRIVILEGES; \ No newline at end of file diff --git a/docker-all/example/sql/privileges/certificate_authority_privileges.sql b/docker-all/example/sql/privileges/certificate_authority_privileges.sql new file mode 100644 index 000000000..413aa5090 --- /dev/null +++ b/docker-all/example/sql/privileges/certificate_authority_privileges.sql @@ -0,0 +1,13 @@ +USE `arrowhead`; + +REVOKE ALL, GRANT OPTION FROM 'certificate_authority'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`logs` TO 'certificate_authority'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`ca_certificate` TO 'certificate_authority'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`ca_trusted_key` TO 'certificate_authority'@'localhost'; + +REVOKE ALL, GRANT OPTION FROM 'certificate_authority'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`logs` TO 'certificate_authority'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`ca_certificate` TO 'certificate_authority'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`ca_trusted_key` TO 'certificate_authority'@'%'; + +FLUSH PRIVILEGES; diff --git a/docker-all/example/sql/privileges/choreographer_privileges.sql b/docker-all/example/sql/privileges/choreographer_privileges.sql new file mode 100644 index 000000000..ecc3ae7e5 --- /dev/null +++ b/docker-all/example/sql/privileges/choreographer_privileges.sql @@ -0,0 +1,29 @@ +USE `arrowhead`; + +REVOKE ALL, GRANT OPTION FROM 'choreographer'@'localhost'; + +GRANT ALL PRIVILEGES ON `arrowhead`.`choreographer_executor` TO 'choreographer'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`choreographer_executor_service_definition` TO 'choreographer'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`choreographer_plan` TO 'choreographer'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`choreographer_action` TO 'choreographer'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`choreographer_step` TO 'choreographer'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`choreographer_step_next_step_connection` TO 'choreographer'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`choreographer_session` TO 'choreographer'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`choreographer_session_step` TO 'choreographer'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`choreographer_worklog` TO 'choreographer'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`logs` TO 'choreographer'@'localhost'; + +REVOKE ALL, GRANT OPTION FROM 'choreographer'@'%'; + +GRANT ALL PRIVILEGES ON `arrowhead`.`choreographer_executor` TO 'choreographer'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`choreographer_executor_service_definition` TO 'choreographer'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`choreographer_plan` TO 'choreographer'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`choreographer_action` TO 'choreographer'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`choreographer_step` TO 'choreographer'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`choreographer_step_next_step_connection` TO 'choreographer'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`choreographer_session` TO 'choreographer'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`choreographer_session_step` TO 'choreographer'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`choreographer_worklog` TO 'choreographer'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`logs` TO 'choreographer'@'%'; + +FLUSH PRIVILEGES; \ No newline at end of file diff --git a/docker-all/example/sql/privileges/configuration_privileges.sql b/docker-all/example/sql/privileges/configuration_privileges.sql new file mode 100644 index 000000000..fd9ad9956 --- /dev/null +++ b/docker-all/example/sql/privileges/configuration_privileges.sql @@ -0,0 +1,11 @@ +USE `arrowhead`; + +REVOKE ALL, GRANT OPTION FROM 'configuration'@'localhost'; + +GRANT ALL PRIVILEGES ON `arrowhead`.`configuration_data` TO 'configuration'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`logs` TO 'configuration'@'localhost'; + +GRANT ALL PRIVILEGES ON `arrowhead`.`configuration_data` TO 'configuration'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`logs` TO 'configuration'@'%'; + +FLUSH PRIVILEGES; diff --git a/docker-all/example/sql/privileges/create_arrowhead_tables.sql b/docker-all/example/sql/privileges/create_arrowhead_tables.sql new file mode 100644 index 000000000..3c6b55c1b --- /dev/null +++ b/docker-all/example/sql/privileges/create_arrowhead_tables.sql @@ -0,0 +1,1358 @@ +CREATE DATABASE IF NOT EXISTS `arrowhead`; +USE `arrowhead`; + +-- Common + +CREATE TABLE IF NOT EXISTS `cloud` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `operator` varchar(255) NOT NULL, + `name` varchar(255) NOT NULL, + `secure` int(1) NOT NULL DEFAULT 0 COMMENT 'Is secure?', + `neighbor` int(1) NOT NULL DEFAULT 0 COMMENT 'Is neighbor cloud?', + `own_cloud` int(1) NOT NULL DEFAULT 0 COMMENT 'Is own cloud?', + `authentication_info` varchar(2047) DEFAULT NULL, + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + UNIQUE KEY `cloud` (`operator`,`name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `relay` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `address` varchar(255) NOT NULL, + `port` int(11) NOT NULL, + `secure` int(1) NOT NULL DEFAULT 0, + `authentication_info` varchar(2047) DEFAULT NULL, + `exclusive` int(1) NOT NULL DEFAULT 0, + `type` varchar(255) NOT NULL DEFAULT 'GENERAL_RELAY', + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + UNIQUE KEY `pair` (`address`, `port`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `cloud_gatekeeper_relay` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `cloud_id` bigint(20) NOT NULL, + `relay_id` bigint(20) NOT NULL, + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + UNIQUE KEY `pair` (`cloud_id`,`relay_id`), + CONSTRAINT `gk_cloud_constr` FOREIGN KEY (`cloud_id`) REFERENCES `cloud` (`id`) ON DELETE CASCADE, + CONSTRAINT `gk_relay_constr` FOREIGN KEY (`relay_id`) REFERENCES `relay` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `cloud_gateway_relay` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `cloud_id` bigint(20) NOT NULL, + `relay_id` bigint(20) NOT NULL, + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + UNIQUE KEY `pair` (`cloud_id`,`relay_id`), + CONSTRAINT `gw_cloud_constr` FOREIGN KEY (`cloud_id`) REFERENCES `cloud` (`id`) ON DELETE CASCADE, + CONSTRAINT `gw_relay_constr` FOREIGN KEY (`relay_id`) REFERENCES `relay` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `system_` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `system_name` varchar(255) NOT NULL, + `address` varchar(255) NOT NULL, + `address_type` varchar(255) NULL, + `port` int(11) NOT NULL, + `authentication_info` varchar(2047) DEFAULT NULL, + `metadata` mediumtext NULL, + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + UNIQUE KEY `triple` (`system_name`,`address`,`port`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `device` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `device_name` varchar(255) NOT NULL, + `address` varchar(255) NOT NULL, + `mac_address` varchar(255) NOT NULL, + `authentication_info` varchar(2047) DEFAULT NULL, + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + UNIQUE KEY `double` (`device_name`,`mac_address`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `service_definition` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `service_definition` varchar(255) NOT NULL, + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + UNIQUE KEY `service_definition` (`service_definition`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `service_interface` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `interface_name` varchar(255) DEFAULT NULL, + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + UNIQUE KEY `interface` (`interface_name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +INSERT IGNORE INTO `service_interface` (interface_name) VALUES ('HTTP-SECURE-JSON'); +INSERT IGNORE INTO `service_interface` (interface_name) VALUES ('HTTP-INSECURE-JSON'); + +-- Device Registry + +CREATE TABLE IF NOT EXISTS `device_registry` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `device_id` bigint(20) NOT NULL, + `end_of_validity` timestamp NULL DEFAULT NULL, + `metadata` text, + `version` int(11) DEFAULT 1, + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + UNIQUE KEY `device_registry_device` (`device_id`), + CONSTRAINT `device_registry_device` FOREIGN KEY (`device_id`) REFERENCES `device` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- System Registry + +CREATE TABLE IF NOT EXISTS `system_registry` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `system_id` bigint(20) NOT NULL, + `device_id` bigint(20) NOT NULL, + `end_of_validity` timestamp NULL DEFAULT NULL, + `metadata` text, + `version` int(11) DEFAULT 1, + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + UNIQUE KEY `system_registry_pair` (`system_id`,`device_id`), + KEY `system_registry_device` (`device_id`), + CONSTRAINT `system_registry_system` FOREIGN KEY (`system_id`) REFERENCES `system_` (`id`) ON DELETE CASCADE, + CONSTRAINT `system_registry_device` FOREIGN KEY (`device_id`) REFERENCES `device` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- Service Registry + +CREATE TABLE IF NOT EXISTS `service_registry` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `service_id` bigint(20) NOT NULL, + `system_id` bigint(20) NOT NULL, + `service_uri` varchar(255) NOT NULL DEFAULT '', + `end_of_validity` timestamp NULL DEFAULT NULL, + `secure` varchar(255) NOT NULL DEFAULT 'NOT_SECURE', + `metadata` mediumtext, + `version` int(11) DEFAULT 1, + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + UNIQUE KEY `service_registry_triplet` (`service_id`,`system_id`, `service_uri`), + KEY `service_registry_system` (`system_id`), + CONSTRAINT `service_registry_service` FOREIGN KEY (`service_id`) REFERENCES `service_definition` (`id`) ON DELETE CASCADE, + CONSTRAINT `service_registry_system` FOREIGN KEY (`system_id`) REFERENCES `system_` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `service_registry_interface_connection` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `service_registry_id` bigint(20) NOT NULL, + `interface_id` bigint(20) NOT NULL, + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + UNIQUE KEY `pair` (`service_registry_id`,`interface_id`), + KEY `interface_sr` (`interface_id`), + CONSTRAINT `interface_sr` FOREIGN KEY (`interface_id`) REFERENCES `service_interface` (`id`) ON DELETE CASCADE, + CONSTRAINT `service_registry` FOREIGN KEY (`service_registry_id`) REFERENCES `service_registry` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- Authorization + +CREATE TABLE IF NOT EXISTS `authorization_intra_cloud` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `consumer_system_id` bigint(20) NOT NULL, + `provider_system_id` bigint(20) NOT NULL, + `service_id` bigint(20) NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `rule` (`consumer_system_id`,`provider_system_id`,`service_id`), + KEY `provider` (`provider_system_id`), + KEY `service_intra_auth` (`service_id`), + CONSTRAINT `service_intra_auth` FOREIGN KEY (`service_id`) REFERENCES `service_definition` (`id`) ON DELETE CASCADE, + CONSTRAINT `provider` FOREIGN KEY (`provider_system_id`) REFERENCES `system_` (`id`) ON DELETE CASCADE, + CONSTRAINT `consumer` FOREIGN KEY (`consumer_system_id`) REFERENCES `system_` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `authorization_inter_cloud` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `consumer_cloud_id` bigint(20) NOT NULL, + `provider_system_id` bigint(20) NOT NULL, + `service_id` bigint(20) NOT NULL, + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + UNIQUE KEY `rule` (`consumer_cloud_id`, `provider_system_id`, `service_id`), + KEY `service_inter_auth` (`service_id`), + CONSTRAINT `cloud` FOREIGN KEY (`consumer_cloud_id`) REFERENCES `cloud` (`id`) ON DELETE CASCADE, + CONSTRAINT `service_inter_auth` FOREIGN KEY (`service_id`) REFERENCES `service_definition` (`id`) ON DELETE CASCADE, + CONSTRAINT `provider_inter_auth` FOREIGN KEY (`provider_system_id`) REFERENCES `system_` (id) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `authorization_inter_cloud_interface_connection` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `authorization_inter_cloud_id` bigint(20) NOT NULL, + `interface_id` bigint(20) NOT NULL, + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + UNIQUE KEY `pair` (`authorization_inter_cloud_id`,`interface_id`), + KEY `interface_inter` (`interface_id`), + CONSTRAINT `auth_inter_interface` FOREIGN KEY (`interface_id`) REFERENCES `service_interface` (`id`) ON DELETE CASCADE, + CONSTRAINT `auth_inter_cloud` FOREIGN KEY (`authorization_inter_cloud_id`) REFERENCES `authorization_inter_cloud` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `authorization_intra_cloud_interface_connection` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `authorization_intra_cloud_id` bigint(20) NOT NULL, + `interface_id` bigint(20) NOT NULL, + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + UNIQUE KEY `pair` (`authorization_intra_cloud_id`,`interface_id`), + KEY `interface_intra` (`interface_id`), + CONSTRAINT `auth_intra_interface` FOREIGN KEY (`interface_id`) REFERENCES `service_interface` (`id`) ON DELETE CASCADE, + CONSTRAINT `auth_intra_cloud` FOREIGN KEY (`authorization_intra_cloud_id`) REFERENCES `authorization_intra_cloud` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- Orchestrator + +CREATE TABLE IF NOT EXISTS `orchestrator_store` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `consumer_system_id` bigint(20) NOT NULL, + `provider_system_id` bigint(20) NOT NULL, + `foreign_` int(1) NOT NULL DEFAULT 0, + `service_id` bigint(20) NOT NULL, + `service_interface_id` bigint(20) NOT NULL, + `priority` int(11) NOT NULL, + `attribute` text, + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + UNIQUE KEY `priority_rule` (`service_id`, `service_interface_id`, `consumer_system_id`,`priority`), + UNIQUE KEY `duplication_rule` (`service_id`, `service_interface_id`, `consumer_system_id`,`provider_system_id`, `foreign_`), + CONSTRAINT `consumer_orch` FOREIGN KEY (`consumer_system_id`) REFERENCES `system_` (`id`) ON DELETE CASCADE, + CONSTRAINT `service_orch` FOREIGN KEY (`service_id`) REFERENCES `service_definition` (`id`) ON DELETE CASCADE, + CONSTRAINT `service_intf_orch` FOREIGN KEY (`service_interface_id`) REFERENCES `service_interface` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `foreign_system` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `provider_cloud_id` bigint(20) NOT NULL, + `system_name` varchar(255) NOT NULL, + `address` varchar(255) NOT NULL, + `port` int(11) NOT NULL, + `authentication_info` varchar(2047) DEFAULT NULL, + `metadata` mediumtext, + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + UNIQUE KEY `triple` (`system_name`,`address`,`port`), + CONSTRAINT `foreign_cloud` FOREIGN KEY (`provider_cloud_id`) REFERENCES `cloud` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `orchestrator_store_flexible` ( +`id` bigint(20) NOT NULL AUTO_INCREMENT, +`consumer_system_name` varchar(255), +`provider_system_name` varchar(255), +`consumer_system_metadata` mediumtext, +`provider_system_metadata` mediumtext, +`service_metadata` mediumtext, +`service_interface_name` varchar(255), +`service_definition_name` varchar(255) NOT NULL, +`priority` int(11) NOT NULL DEFAULT 2147483647, +`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, +`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, +PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- Logs + +CREATE TABLE IF NOT EXISTS `logs` ( + `log_id` varchar(100) NOT NULL, + `entry_date` timestamp(3) NULL DEFAULT NULL, + `logger` varchar(100) DEFAULT NULL, + `log_level` varchar(100) DEFAULT NULL, + `system_name` varchar(255) DEFAULT NULL, + `message` mediumtext, + `exception` mediumtext, + PRIMARY KEY (`log_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- Event Handler + +CREATE TABLE IF NOT EXISTS `event_type` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `event_type_name` varchar(255) NOT NULL, + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + UNIQUE KEY `eventtype` (`event_type_name`) +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `subscription` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `system_id` bigint(20) NOT NULL, + `event_type_id` bigint(20) NOT NULL, + `filter_meta_data` mediumtext, + `match_meta_data` int(1) NOT NULL DEFAULT 0, + `only_predefined_publishers` int(1) NOT NULL DEFAULT 0, + `notify_uri` text NOT NULL, + `start_date` timestamp NULL DEFAULT NULL, + `end_date` timestamp NULL DEFAULT NULL, + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + UNIQUE KEY `pair` (`event_type_id`,`system_id`), + CONSTRAINT `subscriber_system` FOREIGN KEY (`system_id`) REFERENCES `system_` (`id`) ON DELETE CASCADE, + CONSTRAINT `event_type` FOREIGN KEY (`event_type_id`) REFERENCES `event_type` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `subscription_publisher_connection` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `subscription_id` bigint(20) NOT NULL, + `system_id` bigint(20) NOT NULL, + `authorized` int(1) NOT NULL DEFAULT 0, + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + UNIQUE KEY `pair` (`subscription_id`,`system_id`), + CONSTRAINT `subscription_constraint` FOREIGN KEY (`subscription_id`) REFERENCES `subscription` (`id`) ON DELETE CASCADE, + CONSTRAINT `system_constraint` FOREIGN KEY (`system_id`) REFERENCES `system_` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- DataManager + +CREATE TABLE IF NOT EXISTS `dmhist_services` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `system_name` varchar(255) NOT NULL, + `service_name` varchar(255) NOT NULL, + `service_type` varchar(255), + last_update timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `dmhist_messages` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `sid` bigint(20) NOT NULL, + `bt` double NOT NULL, + `mint` double NOT NULL, + `maxt` double NOT NULL, + `msg` BLOB NOT NULL, + `datastored` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + CONSTRAINT `service_id_constr` FOREIGN KEY (`sid`) REFERENCES `dmhist_services` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `dmhist_entries` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `sid` bigint(20) NOT NULL, + `mid` bigint(20) NOT NULL, + `n` varchar(128) NOT NULL, + `t` double NOT NULL, + `u` varchar(64), + `v` double, + `vs` BLOB, + `vb` BOOLEAN, + PRIMARY KEY (`id`), + CONSTRAINT `service_id_fk` FOREIGN KEY(`sid`) REFERENCES `dmhist_services`(`id`) ON DELETE CASCADE, + CONSTRAINT `message_id_fk` FOREIGN KEY(`mid`) REFERENCES `dmhist_messages`(`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- TimeManager + +-- Choreographer + +CREATE TABLE IF NOT EXISTS `choreographer_plan` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `name` varchar(255) NOT NULL, + `first_action_id` bigint(20), + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + UNIQUE KEY `plan_name_unique_key` (`name`) +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `choreographer_action` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `name` varchar(255) NOT NULL, + `first_action` int(1) NOT NULL DEFAULT 0, + `plan_id` bigint(20) NOT NULL, + `next_action_id` bigint(20) DEFAULT NULL, + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + UNIQUE KEY `name_plan_id_unique_key` (`name`,`plan_id`), + CONSTRAINT `next_action` FOREIGN KEY (`next_action_id`) REFERENCES `choreographer_action` (`id`) ON DELETE CASCADE, + CONSTRAINT `plan` FOREIGN KEY (`plan_id`) REFERENCES `choreographer_plan` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; + +ALTER TABLE `choreographer_plan` ADD FOREIGN KEY (`first_action_id`) references `choreographer_action`(`id`); + +CREATE TABLE IF NOT EXISTS `choreographer_step` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `name` varchar(255) NOT NULL, + `first_step` int(1) NOT NULL DEFAULT 0, + `action_id` bigint(20) NOT NULL, + `service_definition` varchar(255) NOT NULL, + `min_version` int(11), + `max_version` int(11), + `sr_template` mediumtext NOT NULL, + `static_parameters` mediumtext, + `quantity` int(20) NOT NULL DEFAULT 1, + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + UNIQUE KEY `name_action_id_unique_key` (`name`, `action_id`), + CONSTRAINT `action` FOREIGN KEY (`action_id`) REFERENCES `choreographer_action` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `choreographer_step_next_step_connection` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `from_id` bigint(20) NOT NULL, + `to_id` bigint(20) NOT NULL, + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + CONSTRAINT `current_step` FOREIGN KEY (`from_id`) REFERENCES choreographer_step (`id`) ON DELETE CASCADE, + CONSTRAINT `next_step` FOREIGN KEY (`to_id`) REFERENCES choreographer_step (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `choreographer_executor` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `name` varchar(255) NOT NULL, + `address` varchar(255) NOT NULL, + `port` int(11) NOT NULL, + `base_uri` varchar(255) DEFAULT NULL, + `locked` int(1) NOT NULL DEFAULT 0, + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + UNIQUE KEY `executor_name_unique` (`name`), + UNIQUE KEY `executor_address_port_uri_unique` (`address`, `port`, `base_uri`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `choreographer_executor_service_definition` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `executor_id` bigint(20) NOT NULL, + `service_definition` varchar(255) NOT NULL, + `min_version` int(11) NOT NULL, + `max_version` int(11) NOT NULL, + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + CONSTRAINT `fk_executor_id` FOREIGN KEY (`executor_id`) REFERENCES `choreographer_executor` (`id`) ON DELETE CASCADE, + UNIQUE KEY `unique_executor_service_definition` ( `executor_id`, `service_definition`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `choreographer_session` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `plan_id` bigint(20) NOT NULL, + `status` varchar(255) NOT NULL, + `quantity_done` bigint(20) NOT NULL, + `quantity_goal` bigint(20) NOT NULL, + `execution_number` bigint(20) NOT NULL, + `notify_uri` text, + `started_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + CONSTRAINT `session_plan` FOREIGN KEY (`plan_id`) REFERENCES `choreographer_plan` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `choreographer_session_step` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `session_id` bigint(20) NOT NULL, + `step_id` bigint(20) NOT NULL, + `executor_id` bigint(20) NOT NULL, + `status` varchar(255) NOT NULL, + `execution_number` bigint(20) NOT NULL, + `message` mediumtext, + `started_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + CONSTRAINT `session_step` FOREIGN KEY (`step_id`) REFERENCES `choreographer_step` (`id`) ON DELETE CASCADE, + CONSTRAINT `session_step_session` FOREIGN KEY (`session_id`) REFERENCES `choreographer_session`(`id`) ON DELETE CASCADE, + CONSTRAINT `session_step_executor` FOREIGN KEY (`executor_id`) REFERENCES `choreographer_executor` (`id`) ON DELETE CASCADE, + UNIQUE KEY `session_step_unique` (`session_id`, `step_id`, `execution_number`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `choreographer_worklog` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `entry_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `plan_name` varchar(255), + `action_name` varchar(255), + `step_name` varchar(255), + `session_id` bigint(20), + `execution_number` bigint(20), + `message` mediumtext, + `exception` mediumtext, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- Configuration +CREATE TABLE IF NOT EXISTS `configuration_data` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `systemName` varchar(255) NOT NULL UNIQUE, + `fileName` varchar(255) NOT NULL, + `contentType` varchar(255) NOT NULL, + `data` blob NOT NULL, + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; + +-- QoS Monitor +-- Intra + +CREATE TABLE IF NOT EXISTS `qos_intra_measurement` ( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `system_id` bigint(20) NOT NULL, + `measurement_type` varchar(255) NOT NULL, + `last_measurement_at` timestamp NOT NULL, + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + CONSTRAINT `fk_system` FOREIGN KEY (`system_id`) REFERENCES `system_` (`id`) ON DELETE CASCADE, + UNIQUE KEY `unique_system_id_measurement_type` (`system_id`, `measurement_type`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `qos_intra_ping_measurement` ( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `measurement_id` bigint(20) NOT NULL, + `available` int(1) NOT NULL DEFAULT 0, + `last_access_at` timestamp NULL DEFAULT NULL, + `min_response_time` int(11) DEFAULT NULL, + `max_response_time` int(11) DEFAULT NULL, + `mean_response_time_with_timeout` int(11) NULL DEFAULT NULL, + `mean_response_time_without_timeout` int(11) NULL DEFAULT NULL, + `jitter_with_timeout` int(11) NULL DEFAULT NULL, + `jitter_without_timeout` int(11) NULL DEFAULT NULL, + `lost_per_measurement_percent` int(3) NOT NULL DEFAULT 0, + `sent` bigint(20) NOT NULL DEFAULT 0, + `received` bigint(20) NOT NULL DEFAULT 0, + `count_started_at` timestamp NULL, + `sent_all` bigint(20) NOT NULL DEFAULT 0, + `received_all` bigint(20) NOT NULL DEFAULT 0, + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + CONSTRAINT `fk_intra_measurement` FOREIGN KEY (`measurement_id`) REFERENCES `qos_intra_measurement` (`id`) ON DELETE CASCADE, + UNIQUE KEY `unique_intra_measurement` (`measurement_id`) + +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `qos_intra_ping_measurement_log` ( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `measured_system_address` varchar(255) NOT NULL, + `available` int(1) NOT NULL DEFAULT 0, + `min_response_time` int(11) DEFAULT NULL, + `max_response_time` int(11) DEFAULT NULL, + `mean_response_time_with_timeout` int(11) NULL DEFAULT NULL, + `mean_response_time_without_timeout` int(11) NULL DEFAULT NULL, + `jitter_with_timeout` int(11) NULL DEFAULT NULL, + `jitter_without_timeout` int(11) NULL DEFAULT NULL, + `lost_per_measurement_percent` int(3) NOT NULL DEFAULT 0, + `sent` bigint(20) NOT NULL DEFAULT 0, + `received` bigint(20) NOT NULL DEFAULT 0, + `measured_at` timestamp NOT NULL, + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP + +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `qos_intra_ping_measurement_log_details` ( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `measurement_log_id` bigint(20) NOT NULL, + `measurement_sequenece_number` int(3) NOT NULL, + `success_flag` int(1) NOT NULL DEFAULT 0, + `timeout_flag` int(1) NOT NULL DEFAULT 0, + `error_message` varchar(255) NULL DEFAULT NULL, + `throwable` varchar(255) NULL DEFAULT NULL, + `size_` int(11) NULL DEFAULT NULL, + `rtt` int(11) NULL DEFAULT NULL, + `ttl` int(3) NULL DEFAULT NULL, + `duration` int(5) NULL DEFAULT NULL, + `measured_at` timestamp NOT NULL, + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + CONSTRAINT `fk_intra_measurement_log` FOREIGN KEY (`measurement_log_id`) REFERENCES `qos_intra_ping_measurement_log` (`id`) ON DELETE CASCADE + +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- QoS Monitor +-- Inter + +CREATE TABLE IF NOT EXISTS `qos_inter_direct_measurement` ( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `cloud_id` bigint(20) NOT NULL, + `address` varchar(255) NOT NULL, + `measurement_type` varchar(255) NOT NULL, + `last_measurement_at` timestamp NOT NULL, + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + CONSTRAINT `fk_cloud_inter_direct` FOREIGN KEY (`cloud_id`) REFERENCES `cloud` (`id`) ON DELETE CASCADE, + UNIQUE KEY `unique_cloud_id_address_measurement_type` (`cloud_id`, `address`, `measurement_type`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `qos_inter_direct_ping_measurement` ( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `measurement_id` bigint(20) NOT NULL, + `available` int(1) NOT NULL DEFAULT 0, + `last_access_at` timestamp NULL DEFAULT NULL, + `min_response_time` int(11) DEFAULT NULL, + `max_response_time` int(11) DEFAULT NULL, + `mean_response_time_with_timeout` int(11) NULL DEFAULT NULL, + `mean_response_time_without_timeout` int(11) NULL DEFAULT NULL, + `jitter_with_timeout` int(11) NULL DEFAULT NULL, + `jitter_without_timeout` int(11) NULL DEFAULT NULL, + `lost_per_measurement_percent` int(3) NOT NULL DEFAULT 0, + `sent` bigint(20) NOT NULL DEFAULT 0, + `received` bigint(20) NOT NULL DEFAULT 0, + `count_started_at` timestamp NULL, + `sent_all` bigint(20) NOT NULL DEFAULT 0, + `received_all` bigint(20) NOT NULL DEFAULT 0, + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + CONSTRAINT `fk_inter_direct_measurement` FOREIGN KEY (`measurement_id`) REFERENCES `qos_inter_direct_measurement` (`id`) ON DELETE CASCADE, + UNIQUE KEY `unique_measurement` (`measurement_id`) + +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `qos_inter_direct_ping_measurement_log` ( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `measured_system_address` varchar(255) NOT NULL, + `available` int(1) NOT NULL DEFAULT 0, + `min_response_time` int(11) DEFAULT NULL, + `max_response_time` int(11) DEFAULT NULL, + `mean_response_time_with_timeout` int(11) NULL DEFAULT NULL, + `mean_response_time_without_timeout` int(11) NULL DEFAULT NULL, + `jitter_with_timeout` int(11) NULL DEFAULT NULL, + `jitter_without_timeout` int(11) NULL DEFAULT NULL, + `lost_per_measurement_percent` int(3) NOT NULL DEFAULT 0, + `sent` bigint(20) NOT NULL DEFAULT 0, + `received` bigint(20) NOT NULL DEFAULT 0, + `measured_at` timestamp NOT NULL, + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP + +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `qos_inter_direct_ping_measurement_log_details` ( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `measurement_log_id` bigint(20) NOT NULL, + `measurement_sequenece_number` int(3) NOT NULL, + `success_flag` int(1) NOT NULL DEFAULT 0, + `timeout_flag` int(1) NOT NULL DEFAULT 0, + `error_message` varchar(255) NULL DEFAULT NULL, + `throwable` varchar(255) NULL DEFAULT NULL, + `size_` int(11) NULL DEFAULT NULL, + `rtt` int(11) NULL DEFAULT NULL, + `ttl` int(3) NULL DEFAULT NULL, + `duration` int(5) NULL DEFAULT NULL, + `measured_at` timestamp NOT NULL, + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + CONSTRAINT `fk_inter_direct_ping_measurement_log` FOREIGN KEY (`measurement_log_id`) REFERENCES `qos_inter_direct_ping_measurement_log` (`id`) ON DELETE CASCADE + +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `qos_inter_relay_measurement` ( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `cloud_id` bigint(20) NOT NULL, + `relay_id` bigint(20) NOT NULL, + `measurement_type` varchar(255) NOT NULL, + `status` varchar(255) NOT NULL, + `last_measurement_at` timestamp NOT NULL, + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + CONSTRAINT `fk_cloud_inter_relay` FOREIGN KEY (`cloud_id`) REFERENCES `cloud` (`id`) ON DELETE CASCADE, + CONSTRAINT `fk_relay_inter_relay` FOREIGN KEY (`relay_id`) REFERENCES `relay` (`id`) ON DELETE CASCADE, + UNIQUE KEY `unique_cloud_relay_measurement_type` (`cloud_id`, `relay_id`, `measurement_type`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `qos_inter_relay_echo_measurement` ( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `measurement_id` bigint(20) NOT NULL, + `last_access_at` timestamp NULL DEFAULT NULL, + `min_response_time` int(11) DEFAULT NULL, + `max_response_time` int(11) DEFAULT NULL, + `mean_response_time_with_timeout` int(11) NULL DEFAULT NULL, + `mean_response_time_without_timeout` int(11) NULL DEFAULT NULL, + `jitter_with_timeout` int(11) NULL DEFAULT NULL, + `jitter_without_timeout` int(11) NULL DEFAULT NULL, + `lost_per_measurement_percent` int(3) NOT NULL DEFAULT 0, + `sent` bigint(20) NOT NULL DEFAULT 0, + `received` bigint(20) NOT NULL DEFAULT 0, + `count_started_at` timestamp NULL, + `sent_all` bigint(20) NOT NULL DEFAULT 0, + `received_all` bigint(20) NOT NULL DEFAULT 0, + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + CONSTRAINT `fk_inter_relay_measurement` FOREIGN KEY (`measurement_id`) REFERENCES `qos_inter_relay_measurement` (`id`) ON DELETE CASCADE, + UNIQUE KEY `unique_inter_relay_echo_measurement` (`measurement_id`) + +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `qos_inter_relay_echo_measurement_log` ( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `measurement_id` bigint(20) NOT NULL, + `measurement_sequenece_number` int(3) NOT NULL, + `timeout_flag` int(1) NOT NULL DEFAULT 0, + `error_message` varchar(255) NULL DEFAULT NULL, + `throwable` varchar(255) NULL DEFAULT NULL, + `size_` int(11) NULL DEFAULT NULL, + `duration` int(5) NULL DEFAULT NULL, + `measured_at` timestamp NOT NULL, + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + CONSTRAINT `fk_inter_relay_echo_measurement_log` FOREIGN KEY (`measurement_id`) REFERENCES `qos_inter_relay_measurement` (`id`) ON DELETE CASCADE + +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- QoS Manager + +CREATE TABLE IF NOT EXISTS `qos_reservation` ( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `reserved_provider_id` bigint(20) NOT NULL, + `reserved_service_id` bigint(20) NOT NULL, + `consumer_system_name` varchar(255) NOT NULL, + `consumer_address` varchar(255) NOT NULL, + `consumer_port` int(11) NOT NULL, + `reserved_to` timestamp NOT NULL, + `temporary_lock` int(1) NOT NULL DEFAULT 0, + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + CONSTRAINT `fk_reserved_provider` FOREIGN KEY (`reserved_provider_id`) REFERENCES `system_` (`id`) ON DELETE CASCADE, + CONSTRAINT `fk_reserved_service` FOREIGN KEY (`reserved_service_id`) REFERENCES `service_definition` (`id`) ON DELETE CASCADE, + UNIQUE KEY `unique_reserved_provider_and_service` (`reserved_provider_id`, `reserved_service_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- Certificate Authority + +CREATE TABLE IF NOT EXISTS `ca_certificate` ( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `common_name` varchar(255) NOT NULL, + `serial` bigint(20) NOT NULL, + `created_by` varchar(255) NOT NULL, + `valid_after` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `valid_before` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `revoked_at` timestamp NULL, + UNIQUE KEY `unique_certificate_serial` (`serial`) +) ENGINE = InnoDB DEFAULT CHARSET = utf8; + +CREATE TABLE IF NOT EXISTS `ca_trusted_key` ( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `public_key` text NOT NULL, + `hash` varchar(255) NOT NULL, + `description` varchar(255) NOT NULL, + `valid_after` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `valid_before` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + UNIQUE KEY `unique_hash` (`hash`) +) ENGINE = InnoDB DEFAULT CHARSET = utf8; + +-- MSVC +CREATE TABLE IF NOT EXISTS `mscv_target` +( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `name` varchar(64) UNIQUE NOT NULL, + `os` varchar(16) NOT NULL +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE IF NOT EXISTS `mscv_ssh_target` +( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `address` varchar(255) NOT NULL, + `port` integer NOT NULL, + `username` varchar(64), + `auth_info` varchar(255), + CONSTRAINT `fk_parent_target` FOREIGN KEY (`id`) REFERENCES `mscv_target` (`id`) ON DELETE CASCADE, + UNIQUE KEY `u_address_port` (`address`, `port`) +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE IF NOT EXISTS `mscv_mip_category` +( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `name` varchar(64) UNIQUE NOT NULL, + `abbreviation` varchar(5) UNIQUE NOT NULL +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE IF NOT EXISTS `mscv_mip_domain` +( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `name` varchar(64) UNIQUE NOT NULL +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE IF NOT EXISTS `mscv_standard` +( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `identification` varchar(16) UNIQUE NOT NULL, + `name` varchar(64) UNIQUE NOT NULL, + `description` text, + `reference_uri` varchar(255) NOT NULL +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE IF NOT EXISTS `mscv_mip` +( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `ext_id` integer(11) NOT NULL, + `name` varchar(64) UNIQUE NOT NULL, + `description` text, + `standard_id` bigint NOT NULL, + `category_id` bigint NOT NULL, + `domain_id` bigint NOT NULL, + CONSTRAINT `fk_standard` FOREIGN KEY (`standard_id`) REFERENCES `mscv_standard` (`id`) ON DELETE CASCADE, + CONSTRAINT `fk_category` FOREIGN KEY (`category_id`) REFERENCES `mscv_mip_category` (`id`) ON DELETE CASCADE, + CONSTRAINT `fk_domain` FOREIGN KEY (`domain_id`) REFERENCES `mscv_mip_domain` (`id`) ON DELETE CASCADE, + UNIQUE KEY `u_mip_category_ext_id` (`ext_id`, `category_id`) +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE IF NOT EXISTS `mscv_mip_verification_list` +( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `name` varchar(64) NOT NULL, + `description` varchar(255), + `verification_interval` bigint(20) NOT NULL, + `layer` varchar(16) NOT NULL, + UNIQUE KEY `u_verification_list_name_layer` (`name`, `layer`) +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE IF NOT EXISTS `mscv_mip_verification_entry` +( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `mip_id` bigint NOT NULL, + `weight` smallint NOT NULL, + `verification_list_id` bigint NOT NULL, + CONSTRAINT `fk_entry_mip` FOREIGN KEY (`mip_id`) REFERENCES `mscv_mip` (`id`) ON DELETE CASCADE, + CONSTRAINT `fk_entry_verification_list` FOREIGN KEY (`verification_list_id`) REFERENCES `mscv_mip_verification_list` (`id`) ON DELETE CASCADE, + UNIQUE KEY `u_entry_mip_list` (`mip_id`, `verification_list_id`) +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE IF NOT EXISTS `mscv_script` +( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `layer` varchar(16) NOT NULL, + `os` varchar(16) NOT NULL, + `path` varchar(255) NOT NULL, + `mip_id` bigint NOT NULL, + CONSTRAINT `fk_script_mip` FOREIGN KEY (`mip_id`) REFERENCES `mscv_mip` (`id`) ON DELETE CASCADE, + UNIQUE KEY `u_script_layer_os_mip` (`layer`, `os`, `mip_id`) +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE IF NOT EXISTS `mscv_verification_result` +( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `execution_date` TIMESTAMP NOT NULL, + `result` VARCHAR(16) NOT NULL, + `verification_list_id` bigint NOT NULL, + `verification_target_id` bigint NOT NULL, + CONSTRAINT `fk_execution_verification_list` FOREIGN KEY (`verification_list_id`) REFERENCES `mscv_mip_verification_list` (`id`) ON DELETE CASCADE, + CONSTRAINT `fk_execution_target` FOREIGN KEY (`verification_target_id`) REFERENCES `mscv_target` (`id`) ON DELETE CASCADE, + UNIQUE KEY `u_verification_set_target_date` (`verification_list_id`, `verification_target_id`, `execution_date`) +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE IF NOT EXISTS `mscv_verification_detail_result` +( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `result` varchar(16) NOT NULL, + `details` varchar(255), + `verification_entry_id` bigint NOT NULL, + `execution_id` bigint NOT NULL, + `script_id` bigint NOT NULL, + CONSTRAINT `fk_details_mip_entry` FOREIGN KEY (`verification_entry_id`) REFERENCES `mscv_mip_verification_entry` (`id`) ON DELETE CASCADE, + CONSTRAINT `fk_details_execution` FOREIGN KEY (`execution_id`) REFERENCES mscv_verification_result (`id`) ON DELETE CASCADE, + CONSTRAINT `fk_details_script` FOREIGN KEY (`script_id`) REFERENCES `mscv_script` (`id`) ON DELETE CASCADE, + UNIQUE KEY `u_details_execution_mip` (`verification_entry_id`, `execution_id`) +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE IF NOT EXISTS `MSCV_QRTZ_JOB_DETAILS` +( + `SCHED_NAME` VARCHAR(120) NOT NULL, + `JOB_NAME` VARCHAR(200) NOT NULL, + `JOB_GROUP` VARCHAR(200) NOT NULL, + `DESCRIPTION` VARCHAR(250) NULL, + `JOB_CLASS_NAME` VARCHAR(250) NOT NULL, + `IS_DURABLE` VARCHAR(1) NOT NULL, + `IS_NONCONCURRENT` VARCHAR(1) NOT NULL, + `IS_UPDATE_DATA` VARCHAR(1) NOT NULL, + `REQUESTS_RECOVERY` VARCHAR(1) NOT NULL, + `JOB_DATA` BLOB NULL, + PRIMARY KEY (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE IF NOT EXISTS `MSCV_QRTZ_TRIGGERS` +( + `SCHED_NAME` VARCHAR(120) NOT NULL, + `TRIGGER_NAME` VARCHAR(200) NOT NULL, + `TRIGGER_GROUP` VARCHAR(200) NOT NULL, + `JOB_NAME` VARCHAR(200) NOT NULL, + `JOB_GROUP` VARCHAR(200) NOT NULL, + `DESCRIPTION` VARCHAR(250) NULL, + `NEXT_FIRE_TIME` BIGINT(13) NULL, + `PREV_FIRE_TIME` BIGINT(13) NULL, + `PRIORITY` INTEGER NULL, + `TRIGGER_STATE` VARCHAR(16) NOT NULL, + `TRIGGER_TYPE` VARCHAR(8) NOT NULL, + `START_TIME` BIGINT(13) NOT NULL, + `END_TIME` BIGINT(13) NULL, + `CALENDAR_NAME` VARCHAR(200) NULL, + `MISFIRE_INSTR` SMALLINT(2) NULL, + `JOB_DATA` BLOB NULL, + PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`), + FOREIGN KEY (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) + REFERENCES `MSCV_QRTZ_JOB_DETAILS` (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE IF NOT EXISTS `MSCV_QRTZ_SIMPLE_TRIGGERS` +( + `SCHED_NAME` VARCHAR(120) NOT NULL, + `TRIGGER_NAME` VARCHAR(200) NOT NULL, + `TRIGGER_GROUP` VARCHAR(200) NOT NULL, + `REPEAT_COUNT` BIGINT(7) NOT NULL, + `REPEAT_INTERVAL` BIGINT(12) NOT NULL, + `TIMES_TRIGGERED` BIGINT(10) NOT NULL, + PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`), + FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) + REFERENCES `MSCV_QRTZ_TRIGGERS` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE IF NOT EXISTS `MSCV_QRTZ_CRON_TRIGGERS` +( + `SCHED_NAME` VARCHAR(120) NOT NULL, + `TRIGGER_NAME` VARCHAR(200) NOT NULL, + `TRIGGER_GROUP` VARCHAR(200) NOT NULL, + `CRON_EXPRESSION` VARCHAR(200) NOT NULL, + `TIME_ZONE_ID` VARCHAR(80), + PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`), + FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) + REFERENCES `MSCV_QRTZ_TRIGGERS` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE IF NOT EXISTS `MSCV_QRTZ_SIMPROP_TRIGGERS` +( + `SCHED_NAME` VARCHAR(120) NOT NULL, + `TRIGGER_NAME` VARCHAR(200) NOT NULL, + `TRIGGER_GROUP` VARCHAR(200) NOT NULL, + `STR_PROP_1` VARCHAR(512) NULL, + `STR_PROP_2` VARCHAR(512) NULL, + `STR_PROP_3` VARCHAR(512) NULL, + `INT_PROP_1` INT NULL, + `INT_PROP_2` INT NULL, + `LONG_PROP_1` BIGINT NULL, + `LONG_PROP_2` BIGINT NULL, + `DEC_PROP_1` NUMERIC(13, 4) NULL, + `DEC_PROP_2` NUMERIC(13, 4) NULL, + `BOOL_PROP_1` VARCHAR(1) NULL, + `BOOL_PROP_2` VARCHAR(1) NULL, + PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`), + FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) + REFERENCES `MSCV_QRTZ_TRIGGERS` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE IF NOT EXISTS `MSCV_QRTZ_BLOB_TRIGGERS` +( + `SCHED_NAME` VARCHAR(120) NOT NULL, + `TRIGGER_NAME` VARCHAR(200) NOT NULL, + `TRIGGER_GROUP` VARCHAR(200) NOT NULL, + `BLOB_DATA` BLOB NULL, + PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`), + FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) + REFERENCES `MSCV_QRTZ_TRIGGERS` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE IF NOT EXISTS `MSCV_QRTZ_CALENDARS` +( + `SCHED_NAME` VARCHAR(120) NOT NULL, + `CALENDAR_NAME` VARCHAR(200) NOT NULL, + `CALENDAR` BLOB NOT NULL, + PRIMARY KEY (`SCHED_NAME`, `CALENDAR_NAME`) +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE IF NOT EXISTS `MSCV_QRTZ_PAUSED_TRIGGER_GRPS` +( + `SCHED_NAME` VARCHAR(120) NOT NULL, + `TRIGGER_GROUP` VARCHAR(200) NOT NULL, + PRIMARY KEY (`SCHED_NAME`, `TRIGGER_GROUP`) +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE IF NOT EXISTS `MSCV_QRTZ_FIRED_TRIGGERS` +( + `SCHED_NAME` VARCHAR(120) NOT NULL, + `ENTRY_ID` VARCHAR(95) NOT NULL, + `TRIGGER_NAME` VARCHAR(200) NOT NULL, + `TRIGGER_GROUP` VARCHAR(200) NOT NULL, + `INSTANCE_NAME` VARCHAR(200) NOT NULL, + `FIRED_TIME` BIGINT(13) NOT NULL, + `SCHED_TIME` BIGINT(13) NOT NULL, + `PRIORITY` INTEGER NOT NULL, + `STATE` VARCHAR(16) NOT NULL, + `JOB_NAME` VARCHAR(200) NULL, + `JOB_GROUP` VARCHAR(200) NULL, + `IS_NONCONCURRENT` VARCHAR(1) NULL, + `REQUESTS_RECOVERY` VARCHAR(1) NULL, + PRIMARY KEY (`SCHED_NAME`, `ENTRY_ID`) +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE IF NOT EXISTS `MSCV_QRTZ_SCHEDULER_STATE` +( + `SCHED_NAME` VARCHAR(120) NOT NULL, + `INSTANCE_NAME` VARCHAR(200) NOT NULL, + `LAST_CHECKIN_TIME` BIGINT(13) NOT NULL, + `CHECKIN_INTERVAL` BIGINT(13) NOT NULL, + PRIMARY KEY (`SCHED_NAME`, `INSTANCE_NAME`) +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE IF NOT EXISTS `MSCV_QRTZ_LOCKS` +( + `SCHED_NAME` VARCHAR(120) NOT NULL, + `LOCK_NAME` VARCHAR(40) NOT NULL, + PRIMARY KEY (`SCHED_NAME`, `LOCK_NAME`) +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +-- Plant Description Engine + +CREATE TABLE IF NOT EXISTS `pde_rule` ( + `id` bigint(20) PRIMARY KEY, + `plant_description_id` bigint(20) NOT NULL +) ENGINE = InnoDB DEFAULT CHARSET = utf8; + +CREATE TABLE IF NOT EXISTS `plant_description` ( + `id` bigint(20) PRIMARY KEY, + `plant_description` mediumtext NOT NULL +) ENGINE = InnoDB DEFAULT CHARSET = utf8; + + +-- Generic Autonomic Management System + +CREATE TABLE IF NOT EXISTS `gams_instance` +( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP, + `uid` BINARY(16) NOT NULL, + `name` varchar(32) NOT NULL, + `delay` bigint(20) NOT NULL DEFAULT 0, + `delay_time_unit` varchar(16) NOT NULL DEFAULT 'SECONDS', + `owner` varchar(32), + `email` varchar(32) +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE IF NOT EXISTS `gams_sensor` +( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP, + `uid` BINARY(16) NOT NULL, + `instance_id` bigint(20) NOT NULL, + `name` varchar(40) NOT NULL, + `address` varchar(16), + `type` varchar(32) NOT NULL, + `retention_time` bigint(20) NOT NULL DEFAULT 24, + `time_unit` varchar(16) NOT NULL DEFAULT 'HOURS', + CONSTRAINT `fk_sensor_instance` FOREIGN KEY (`instance_id`) REFERENCES `gams_instance` (`id`) ON DELETE CASCADE, + UNIQUE KEY `u_sensor_name` (`instance_id`, `name`) +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE IF NOT EXISTS `gams_sensor_data` +( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + `valid_till` TIMESTAMP NOT NULL, + `state` varchar(16) NOT NULL, + `sensor_id` bigint(20) NOT NULL, + `address` varchar(16), + CONSTRAINT `fk_sensor_data_sensor` FOREIGN KEY (`sensor_id`) REFERENCES `gams_sensor` (`id`) ON DELETE CASCADE +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE IF NOT EXISTS `gams_sensor_data_long` +( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `data` bigint(20) NOT NULL, + CONSTRAINT `fk_long_data_parent` FOREIGN KEY (`id`) REFERENCES `gams_sensor_data` (`id`) ON DELETE CASCADE +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE IF NOT EXISTS `gams_sensor_data_string` +( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `data` varchar(64) NOT NULL, + CONSTRAINT `fk_string_data_parent` FOREIGN KEY (`id`) REFERENCES `gams_sensor_data` (`id`) ON DELETE CASCADE +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE IF NOT EXISTS `gams_sensor_data_double` +( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `data` DOUBLE PRECISION NOT NULL, + CONSTRAINT `fk_double_data_parent` FOREIGN KEY (`id`) REFERENCES `gams_sensor_data` (`id`) ON DELETE CASCADE +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE IF NOT EXISTS `gams_event` +( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + `valid_till` TIMESTAMP NOT NULL, + `state` varchar(16) NOT NULL, + `valid_from` TIMESTAMP NOT NULL, + `sensor_id` bigint(20) NOT NULL, + `phase` varchar(16) NOT NULL, + `type` varchar(16) NOT NULL, + `source` varchar(64), + `data` varchar(64), + CONSTRAINT `fk_event_sensor` FOREIGN KEY (`sensor_id`) REFERENCES `gams_sensor` (`id`) ON DELETE CASCADE +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE IF NOT EXISTS `gams_aggregation` +( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP, + `uid` BINARY(16) NOT NULL, + `sensor_id` bigint(20) NOT NULL, + `type` varchar(8) NOT NULL, + `quantity` bigint(8), + `validity` bigint(20), + `validity_unit` varchar(16), + CONSTRAINT `fk_aggregation_sensor` FOREIGN KEY (`sensor_id`) REFERENCES `gams_sensor` (`id`) ON DELETE CASCADE +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE IF NOT EXISTS `gams_counting_aggregation` +( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `timescale` bigint(20), + `timescale_unit` varchar(16), + CONSTRAINT `fk_counting_aggregation_parent` FOREIGN KEY (`id`) REFERENCES `gams_aggregation` (`id`) ON DELETE CASCADE +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; + + +CREATE TABLE IF NOT EXISTS `gams_timeout_guard` +( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP, + `uid` BINARY(16) NOT NULL, + `sensor_id` bigint(20) NOT NULL, + `time_value` bigint(20) NOT NULL DEFAULT 24, + `time_unit` varchar(16) NOT NULL DEFAULT 'HOURS', + CONSTRAINT `fk_timeout_sensor` FOREIGN KEY (`sensor_id`) REFERENCES `gams_sensor` (`id`) ON DELETE CASCADE +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE IF NOT EXISTS `gams_analysis` +( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP, + `uid` BINARY(16) NOT NULL, + `sensor_id` bigint(20) NOT NULL, + `target_knowledge` varchar(32) NOT NULL, + `type` varchar(12) NOT NULL, + CONSTRAINT `fk_analysis_sensor` FOREIGN KEY (`sensor_id`) REFERENCES `gams_sensor` (`id`) ON DELETE CASCADE +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE IF NOT EXISTS `gams_counting_analysis` +( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `count` int(4) NOT NULL, + `time_value` bigint(20) NOT NULL DEFAULT 24, + `time_unit` varchar(16) NOT NULL DEFAULT 'HOURS', + CONSTRAINT `fk_counting_analysis_parent` FOREIGN KEY (`id`) REFERENCES `gams_analysis` (`id`) ON DELETE CASCADE +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE IF NOT EXISTS `gams_setpoint_analysis` +( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `lower_set_point` varchar(16) NOT NULL, + `upper_set_point` varchar(16), + `inverse` bool NOT NULL, + CONSTRAINT `fk_setpoint_analysis_parent` FOREIGN KEY (`id`) REFERENCES `gams_analysis` (`id`) ON DELETE CASCADE +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE IF NOT EXISTS `gams_action` +( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP, + `uid` BINARY(16) NOT NULL, + `instance_id` bigint(20) NOT NULL, + `name` varchar(32) NOT NULL, + `action_type` varchar(16) NOT NULL, + CONSTRAINT `fk_action_instance` FOREIGN KEY (`instance_id`) REFERENCES `gams_instance` (`id`) ON DELETE CASCADE, + UNIQUE KEY `u_action_name` (`instance_id`, `name`) +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE IF NOT EXISTS `gams_processable_action` +( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `knowledge_keys` varchar(128), + `processors` varchar(512), + CONSTRAINT `fk_processable_action_parent` FOREIGN KEY (`id`) REFERENCES `gams_action` (`id`) ON DELETE CASCADE +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE IF NOT EXISTS `gams_composite_action` +( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `composite_type` varchar(16) NOT NULL, + CONSTRAINT `fk_composite_action_parent` FOREIGN KEY (`id`) REFERENCES `gams_action` (`id`) ON DELETE CASCADE +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE IF NOT EXISTS `gams_event_action` +( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `target_sensor_id` bigint(20) NOT NULL, + `phase` varchar(16) NOT NULL, + `event_type` varchar(16) NOT NULL, + CONSTRAINT `fk_event_action_parent` FOREIGN KEY (`id`) REFERENCES `gams_action` (`id`) ON DELETE CASCADE, + CONSTRAINT `fk_event_action_sensor` FOREIGN KEY (`target_sensor_id`) REFERENCES `gams_sensor` (`id`) ON DELETE CASCADE +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE IF NOT EXISTS `gams_logging_action` +( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `marker` varchar(16), + CONSTRAINT `fk_logging_action_parent` FOREIGN KEY (`id`) REFERENCES `gams_action` (`id`) ON DELETE CASCADE +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE IF NOT EXISTS `gams_composite_action_actions` +( + `composite_action_id` bigint(20) NOT NULL, + `actions_id` bigint(20) NOT NULL, + CONSTRAINT `fk_action_plan_id` FOREIGN KEY (`composite_action_id`) REFERENCES `gams_composite_action` (`id`) ON DELETE CASCADE, + CONSTRAINT `fk_action_id` FOREIGN KEY (`actions_id`) REFERENCES `gams_action` (`id`) ON DELETE CASCADE +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE IF NOT EXISTS `gams_http_url_api_call` +( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `service_uri` varchar(64) NOT NULL, + `method` varchar(16) NOT NULL, + `basic_authentication` varchar(64), + CONSTRAINT `fk_http_url_api_parent` FOREIGN KEY (`id`) REFERENCES `gams_processable_action` (`id`) ON DELETE CASCADE +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE IF NOT EXISTS `gams_http_body_api_call` +( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `body` varchar(512) NOT NULL, + CONSTRAINT `fk_http_body_api_parent` FOREIGN KEY (`id`) REFERENCES `gams_http_url_api_call` (`id`) ON DELETE CASCADE +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE IF NOT EXISTS `gams_action_plan` +( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP, + `uid` BINARY(16) NOT NULL, + `instance_id` bigint(20) NOT NULL, + `name` varchar(32) NOT NULL, + `action_id` bigint(20) NOT NULL, + CONSTRAINT `fk_action_plan_instance` FOREIGN KEY (`instance_id`) REFERENCES `gams_instance` (`id`) ON DELETE CASCADE +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE IF NOT EXISTS `gams_policy` +( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP, + `uid` BINARY(16) NOT NULL, + `source_knowledge` varchar(32) NOT NULL, + `target_knowledge` varchar(32) NOT NULL, + `sensor_id` bigint(20) NOT NULL, + `policy_type` varchar(16) NOT NULL, + CONSTRAINT `fk_policy_sensor` FOREIGN KEY (`sensor_id`) REFERENCES `gams_sensor` (`id`) ON DELETE CASCADE +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; + + +CREATE TABLE IF NOT EXISTS `gams_match_policy` +( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `match_type` varchar(16) NOT NULL, + `number` bigint(20) NOT NULL, + CONSTRAINT `fk_match_policy_parent` FOREIGN KEY (`id`) REFERENCES `gams_policy` (`id`) ON DELETE CASCADE +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE IF NOT EXISTS `gams_transform_policy` +( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `expression` varchar(64) NOT NULL, + `variable` varchar(16) NOT NULL, + CONSTRAINT `fk_transform_policy_parent` FOREIGN KEY (`id`) REFERENCES `gams_policy` (`id`) ON DELETE CASCADE +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE IF NOT EXISTS `gams_api_policy` +( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `api_call_id` bigint(20) NOT NULL, + CONSTRAINT `fk_api_policy_parent` FOREIGN KEY (`id`) REFERENCES `gams_policy` (`id`) ON DELETE CASCADE, + CONSTRAINT `fk_api_policy_api` FOREIGN KEY (`api_call_id`) REFERENCES `gams_processable_action` (`id`) ON DELETE CASCADE +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE IF NOT EXISTS `gams_knowledge` +( + `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, + `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + `instance_id` bigint(20) NOT NULL, + `key_` varchar(64) NOT NULL, + `value_` varchar(64) NOT NULL, + CONSTRAINT `fk_knowledge_instance` FOREIGN KEY (`instance_id`) REFERENCES `gams_instance` (`id`) ON DELETE CASCADE, + UNIQUE KEY `u_knowledge_key` (`instance_id`, `key_`) +) ENGINE = InnoDB + DEFAULT CHARSET = utf8; diff --git a/docker-all/example/sql/privileges/datamanager_privileges.sql b/docker-all/example/sql/privileges/datamanager_privileges.sql new file mode 100644 index 000000000..e35de51f8 --- /dev/null +++ b/docker-all/example/sql/privileges/datamanager_privileges.sql @@ -0,0 +1,17 @@ +USE `arrowhead`; + +REVOKE ALL, GRANT OPTION FROM 'datamanager'@'localhost'; + +GRANT ALL PRIVILEGES ON `arrowhead`.`dmhist_services` TO 'datamanager'@'localhost'; +#GRANT ALL PRIVILEGES ON `arrowhead`.`dmhist_files` TO 'datamanager'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`dmhist_messages` TO 'datamanager'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`dmhist_entries` TO 'datamanager'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`logs` TO 'datamanager'@'localhost'; + +GRANT ALL PRIVILEGES ON `arrowhead`.`dmhist_services` TO 'datamanager'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`dmhist_files` TO 'datamanager'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`dmhist_messages` TO 'datamanager'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`dmhist_entries` TO 'datamanager'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`logs` TO 'datamanager'@'%'; + +FLUSH PRIVILEGES; diff --git a/docker-all/example/sql/privileges/device_registry_privileges.sql b/docker-all/example/sql/privileges/device_registry_privileges.sql new file mode 100644 index 000000000..eaa1e60ce --- /dev/null +++ b/docker-all/example/sql/privileges/device_registry_privileges.sql @@ -0,0 +1,33 @@ +USE `arrowhead`; + +REVOKE ALL, GRANT OPTION FROM 'device_registry'@'localhost'; + +GRANT ALL PRIVILEGES ON `arrowhead`.`device` TO 'device_registry'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`device_registry` TO 'device_registry'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`system_` TO 'device_registry'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`service_definition` TO 'device_registry'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`service_interface` TO 'device_registry'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`service_registry` TO 'device_registry'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`service_registry_interface_connection` TO 'device_registry'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`authorization_intra_cloud` TO 'device_registry'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`authorization_intra_cloud_interface_connection` TO 'device_registry'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`authorization_inter_cloud` TO 'device_registry'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`authorization_inter_cloud_interface_connection` TO 'device_registry'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`logs` TO 'device_registry'@'localhost'; + +REVOKE ALL, GRANT OPTION FROM 'device_registry'@'%'; + +GRANT ALL PRIVILEGES ON `arrowhead`.`device` TO 'device_registry'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`device_registry` TO 'device_registry'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`system_` TO 'device_registry'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`service_definition` TO 'device_registry'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`service_interface` TO 'device_registry'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`service_registry` TO 'device_registry'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`service_registry_interface_connection` TO 'device_registry'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`authorization_intra_cloud` TO 'device_registry'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`authorization_intra_cloud_interface_connection` TO 'device_registry'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`authorization_inter_cloud` TO 'device_registry'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`authorization_inter_cloud_interface_connection` TO 'device_registry'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`logs` TO 'device_registry'@'%'; + +FLUSH PRIVILEGES; \ No newline at end of file diff --git a/docker-all/example/sql/privileges/event_handler_privileges.sql b/docker-all/example/sql/privileges/event_handler_privileges.sql new file mode 100644 index 000000000..59183f487 --- /dev/null +++ b/docker-all/example/sql/privileges/event_handler_privileges.sql @@ -0,0 +1,19 @@ +USE `arrowhead`; + +REVOKE ALL, GRANT OPTION FROM 'event_handler'@'localhost'; + +GRANT ALL PRIVILEGES ON `arrowhead`.`event_type` TO 'event_handler'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`subscription` TO 'event_handler'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`subscription_publisher_connection` TO 'event_handler'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`system_` TO 'event_handler'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`logs` TO 'event_handler'@'localhost'; + +REVOKE ALL, GRANT OPTION FROM 'event_handler'@'%'; + +GRANT ALL PRIVILEGES ON `arrowhead`.`event_type` TO 'event_handler'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`subscription` TO 'event_handler'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`subscription_publisher_connection` TO 'event_handler'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`system_` TO 'event_handler'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`logs` TO 'event_handler'@'%'; + +FLUSH PRIVILEGES; \ No newline at end of file diff --git a/docker-all/example/sql/privileges/gatekeeper_privileges.sql b/docker-all/example/sql/privileges/gatekeeper_privileges.sql new file mode 100644 index 000000000..660938c79 --- /dev/null +++ b/docker-all/example/sql/privileges/gatekeeper_privileges.sql @@ -0,0 +1,31 @@ +USE `arrowhead`; + +REVOKE ALL, GRANT OPTION FROM 'gatekeeper'@'localhost'; + +GRANT ALL PRIVILEGES ON `arrowhead`.`cloud` TO 'gatekeeper'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`relay` TO 'gatekeeper'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`system_` TO 'gatekeeper'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`service_definition` TO 'gatekeeper'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`service_interface` TO 'gatekeeper'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`cloud_gatekeeper_relay` TO 'gatekeeper'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`cloud_gateway_relay` TO 'gatekeeper'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`authorization_inter_cloud` TO 'gatekeeper'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`authorization_inter_cloud_interface_connection` TO 'gatekeeper'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`foreign_system` TO 'gatekeeper'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`logs` TO 'gatekeeper'@'localhost'; + +REVOKE ALL, GRANT OPTION FROM 'gatekeeper'@'%'; + +GRANT ALL PRIVILEGES ON `arrowhead`.`cloud` TO 'gatekeeper'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`relay` TO 'gatekeeper'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`system_` TO 'gatekeeper'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`service_definition` TO 'gatekeeper'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`service_interface` TO 'gatekeeper'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`cloud_gatekeeper_relay` TO 'gatekeeper'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`cloud_gateway_relay` TO 'gatekeeper'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`authorization_inter_cloud` TO 'gatekeeper'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`authorization_inter_cloud_interface_connection` TO 'gatekeeper'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`foreign_system` TO 'gatekeeper'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`logs` TO 'gatekeeper'@'%'; + +FLUSH PRIVILEGES; \ No newline at end of file diff --git a/docker-all/example/sql/privileges/gateway_privileges.sql b/docker-all/example/sql/privileges/gateway_privileges.sql new file mode 100644 index 000000000..0158ed405 --- /dev/null +++ b/docker-all/example/sql/privileges/gateway_privileges.sql @@ -0,0 +1,9 @@ +USE `arrowhead`; + +REVOKE ALL, GRANT OPTION FROM 'gateway'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`logs` TO 'gateway'@'localhost'; + +REVOKE ALL, GRANT OPTION FROM 'gateway'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`logs` TO 'gateway'@'%'; + +FLUSH PRIVILEGES; diff --git a/docker-all/example/sql/privileges/mscv_privileges.sql b/docker-all/example/sql/privileges/mscv_privileges.sql new file mode 100644 index 000000000..178bab20b --- /dev/null +++ b/docker-all/example/sql/privileges/mscv_privileges.sql @@ -0,0 +1,55 @@ +USE `arrowhead`; + +REVOKE ALL, GRANT OPTION FROM 'mscv'@'localhost'; + +GRANT ALL PRIVILEGES ON `arrowhead`.`mscv_target` TO 'mscv'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`mscv_ssh_target` TO 'mscv'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`mscv_mip_category` TO 'mscv'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`mscv_mip_domain` TO 'mscv'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`mscv_standard` TO 'mscv'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`mscv_mip` TO 'mscv'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`mscv_mip_verification_list` TO 'mscv'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`mscv_mip_verification_entry` TO 'mscv'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`mscv_script` TO 'mscv'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`mscv_verification_result` TO 'mscv'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`mscv_verification_result_detail` TO 'mscv'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`MSCV_QRTZ_JOB_DETAILS` TO 'mscv'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`MSCV_QRTZ_TRIGGERS` TO 'mscv'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`MSCV_QRTZ_SIMPLE_TRIGGERS` TO 'mscv'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`MSCV_QRTZ_CRON_TRIGGERS` TO 'mscv'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`MSCV_QRTZ_SIMPROP_TRIGGERS` TO 'mscv'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`MSCV_QRTZ_BLOB_TRIGGERS` TO 'mscv'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`MSCV_QRTZ_CALENDARS` TO 'mscv'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`MSCV_QRTZ_PAUSED_TRIGGER_GRPS` TO 'mscv'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`MSCV_QRTZ_FIRED_TRIGGERS` TO 'mscv'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`MSCV_QRTZ_SCHEDULER_STATE` TO 'mscv'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`MSCV_QRTZ_LOCKS` TO 'mscv'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`logs` TO 'mscv'@'localhost'; + +REVOKE ALL, GRANT OPTION FROM 'mscv'@'%'; + +GRANT ALL PRIVILEGES ON `arrowhead`.`mscv_target` TO 'mscv'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`mscv_ssh_target` TO 'mscv'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`mscv_mip_category` TO 'mscv'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`mscv_mip_domain` TO 'mscv'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`mscv_standard` TO 'mscv'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`mscv_mip` TO 'mscv'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`mscv_mip_verification_list` TO 'mscv'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`mscv_mip_verification_entry` TO 'mscv'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`mscv_script` TO 'mscv'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`mscv_verification_result` TO 'mscv'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`mscv_verification_result_detail` TO 'mscv'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`MSCV_QRTZ_JOB_DETAILS` TO 'mscv'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`MSCV_QRTZ_TRIGGERS` TO 'mscv'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`MSCV_QRTZ_SIMPLE_TRIGGERS` TO 'mscv'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`MSCV_QRTZ_CRON_TRIGGERS` TO 'mscv'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`MSCV_QRTZ_SIMPROP_TRIGGERS` TO 'mscv'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`MSCV_QRTZ_BLOB_TRIGGERS` TO 'mscv'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`MSCV_QRTZ_CALENDARS` TO 'mscv'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`MSCV_QRTZ_PAUSED_TRIGGER_GRPS` TO 'mscv'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`MSCV_QRTZ_FIRED_TRIGGERS` TO 'mscv'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`MSCV_QRTZ_SCHEDULER_STATE` TO 'mscv'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`MSCV_QRTZ_LOCKS` TO 'mscv'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`logs` TO 'mscv'@'%'; + +FLUSH PRIVILEGES; \ No newline at end of file diff --git a/docker-all/example/sql/privileges/onboarding_controller_privileges.sql b/docker-all/example/sql/privileges/onboarding_controller_privileges.sql new file mode 100644 index 000000000..b619e2097 --- /dev/null +++ b/docker-all/example/sql/privileges/onboarding_controller_privileges.sql @@ -0,0 +1,11 @@ +USE `arrowhead`; + +REVOKE ALL, GRANT OPTION FROM 'onboarding_controller'@'localhost'; + +GRANT ALL PRIVILEGES ON `arrowhead`.`logs` TO 'onboarding_controller'@'localhost'; + +REVOKE ALL, GRANT OPTION FROM 'onboarding_controller'@'%'; + +GRANT ALL PRIVILEGES ON `arrowhead`.`logs` TO 'onboarding_controller'@'%'; + +FLUSH PRIVILEGES; \ No newline at end of file diff --git a/docker-all/example/sql/privileges/orchestrator_privileges.sql b/docker-all/example/sql/privileges/orchestrator_privileges.sql new file mode 100644 index 000000000..6f8563117 --- /dev/null +++ b/docker-all/example/sql/privileges/orchestrator_privileges.sql @@ -0,0 +1,33 @@ +USE `arrowhead`; + +REVOKE ALL, GRANT OPTION FROM 'orchestrator'@'localhost'; + +GRANT ALL PRIVILEGES ON `arrowhead`.`orchestrator_store` TO 'orchestrator'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`foreign_system` TO 'orchestrator'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`orchestrator_store_flexible` TO 'orchestrator'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`system_` TO 'orchestrator'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`cloud` TO 'orchestrator'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`relay` TO 'orchestrator'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`cloud_gatekeeper_relay` TO 'orchestrator'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`cloud_gateway_relay` TO 'orchestrator'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`service_definition` TO 'orchestrator'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`service_interface` TO 'orchestrator'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`qos_reservation` TO 'orchestrator'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`logs` TO 'orchestrator'@'localhost'; + +REVOKE ALL, GRANT OPTION FROM 'orchestrator'@'%'; + +GRANT ALL PRIVILEGES ON `arrowhead`.`orchestrator_store` TO 'orchestrator'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`foreign_system` TO 'orchestrator'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`orchestrator_store_flexible` TO 'orchestrator'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`system_` TO 'orchestrator'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`cloud` TO 'orchestrator'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`relay` TO 'orchestrator'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`cloud_gatekeeper_relay` TO 'orchestrator'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`cloud_gateway_relay` TO 'orchestrator'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`service_definition` TO 'orchestrator'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`service_interface` TO 'orchestrator'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`qos_reservation` TO 'orchestrator'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`logs` TO 'orchestrator'@'%'; + +FLUSH PRIVILEGES; \ No newline at end of file diff --git a/docker-all/example/sql/privileges/plant_description_engine_privileges.sql b/docker-all/example/sql/privileges/plant_description_engine_privileges.sql new file mode 100644 index 000000000..bbf87d38c --- /dev/null +++ b/docker-all/example/sql/privileges/plant_description_engine_privileges.sql @@ -0,0 +1,15 @@ +USE `arrowhead`; + +REVOKE ALL, GRANT OPTION FROM 'plant_description_engine'@'localhost'; + +GRANT ALL PRIVILEGES ON `arrowhead`.`pde_rule` TO 'plant_description_engine'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`plant_description` TO 'plant_description_engine'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`logs` TO 'plant_description_engine'@'localhost'; + +REVOKE ALL, GRANT OPTION FROM 'plant_description_engine'@'%'; + +GRANT ALL PRIVILEGES ON `arrowhead`.`pde_rule` TO 'plant_description_engine'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`plant_description` TO 'plant_description_engine'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`logs` TO 'plant_description_engine'@'%'; + +FLUSH PRIVILEGES; diff --git a/docker-all/example/sql/privileges/qos_monitor_privileges.sql b/docker-all/example/sql/privileges/qos_monitor_privileges.sql new file mode 100644 index 000000000..c8a9d1d5f --- /dev/null +++ b/docker-all/example/sql/privileges/qos_monitor_privileges.sql @@ -0,0 +1,47 @@ +USE `arrowhead`; + +REVOKE ALL, GRANT OPTION FROM 'qos_monitor'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`qos_intra_measurement` TO 'qos_monitor'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`qos_intra_ping_measurement` TO 'qos_monitor'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`qos_intra_ping_measurement_log` TO 'qos_monitor'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`qos_intra_ping_measurement_log_details` TO 'qos_monitor'@'localhost'; + +GRANT ALL PRIVILEGES ON `arrowhead`.`qos_inter_direct_measurement` TO 'qos_monitor'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`qos_inter_direct_ping_measurement` TO 'qos_monitor'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`qos_inter_direct_ping_measurement_log` TO 'qos_monitor'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`qos_inter_direct_ping_measurement_log_details` TO 'qos_monitor'@'localhost'; + +GRANT ALL PRIVILEGES ON `arrowhead`.`qos_inter_relay_measurement` TO 'qos_monitor'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`qos_inter_relay_echo_measurement` TO 'qos_monitor'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`qos_inter_relay_echo_measurement_log` TO 'qos_monitor'@'localhost'; + +GRANT SELECT ON `arrowhead`.`system_` TO 'qos_monitor'@'localhost'; +GRANT SELECT ON `arrowhead`.`cloud` TO 'qos_monitor'@'localhost'; +GRANT SELECT ON `arrowhead`.`relay` TO 'qos_monitor'@'localhost'; +GRANT SELECT ON `arrowhead`.`cloud_gatekeeper_relay` TO 'qos_monitor'@'localhost'; +GRANT SELECT ON `arrowhead`.`cloud_gateway_relay` TO 'qos_monitor'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`logs` TO 'qos_monitor'@'localhost'; + +REVOKE ALL, GRANT OPTION FROM 'qos_monitor'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`qos_intra_measurement` TO 'qos_monitor'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`qos_intra_ping_measurement` TO 'qos_monitor'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`qos_intra_ping_measurement_log` TO 'qos_monitor'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`qos_intra_ping_measurement_log_details` TO 'qos_monitor'@'%'; + +GRANT ALL PRIVILEGES ON `arrowhead`.`qos_inter_direct_measurement` TO 'qos_monitor'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`qos_inter_direct_ping_measurement` TO 'qos_monitor'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`qos_inter_direct_ping_measurement_log` TO 'qos_monitor'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`qos_inter_direct_ping_measurement_log_details` TO 'qos_monitor'@'%'; + +GRANT ALL PRIVILEGES ON `arrowhead`.`qos_inter_relay_measurement` TO 'qos_monitor'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`qos_inter_relay_echo_measurement` TO 'qos_monitor'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`qos_inter_relay_echo_measurement_log` TO 'qos_monitor'@'%'; + +GRANT SELECT ON `arrowhead`.`system_` TO 'qos_monitor'@'%'; +GRANT SELECT ON `arrowhead`.`cloud` TO 'qos_monitor'@'%'; +GRANT SELECT ON `arrowhead`.`relay` TO 'qos_monitor'@'%'; +GRANT SELECT ON `arrowhead`.`cloud_gatekeeper_relay` TO 'qos_monitor'@'%'; +GRANT SELECT ON `arrowhead`.`cloud_gateway_relay` TO 'qos_monitor'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`logs` TO 'qos_monitor'@'%'; + +FLUSH PRIVILEGES; \ No newline at end of file diff --git a/docker-all/example/sql/privileges/service_registry_privileges.sql b/docker-all/example/sql/privileges/service_registry_privileges.sql new file mode 100644 index 000000000..072ae3572 --- /dev/null +++ b/docker-all/example/sql/privileges/service_registry_privileges.sql @@ -0,0 +1,57 @@ +USE `arrowhead`; + +REVOKE ALL, GRANT OPTION FROM 'service_registry'@'localhost'; + +GRANT ALL PRIVILEGES ON `arrowhead`.`system_` TO 'service_registry'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`service_definition` TO 'service_registry'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`service_interface` TO 'service_registry'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`service_registry` TO 'service_registry'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`service_registry_interface_connection` TO 'service_registry'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`cloud` TO 'service_registry'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`relay` TO 'service_registry'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`cloud_gatekeeper_relay` TO 'service_registry'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`cloud_gateway_relay` TO 'service_registry'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`authorization_intra_cloud` TO 'service_registry'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`authorization_intra_cloud_interface_connection` TO 'service_registry'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`authorization_inter_cloud` TO 'service_registry'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`authorization_inter_cloud_interface_connection` TO 'service_registry'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`orchestrator_store` TO 'service_registry'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`subscription` TO 'service_registry'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`subscription_publisher_connection` TO 'service_registry'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`choreographer_action_plan` TO 'service_registry'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`choreographer_action` TO 'service_registry'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`choreographer_action_step` TO 'service_registry'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`choreographer_action_plan_action_connection` TO 'service_registry'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`choreographer_action_action_step_connection` TO 'service_registry'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`choreographer_action_step_service_definition_connection` TO 'service_registry'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`choreographer_next_action_step` TO 'service_registry'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`logs` TO 'service_registry'@'localhost'; + +REVOKE ALL, GRANT OPTION FROM 'service_registry'@'%'; + +GRANT ALL PRIVILEGES ON `arrowhead`.`system_` TO 'service_registry'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`service_definition` TO 'service_registry'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`service_interface` TO 'service_registry'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`service_registry` TO 'service_registry'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`service_registry_interface_connection` TO 'service_registry'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`cloud` TO 'service_registry'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`relay` TO 'service_registry'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`cloud_gatekeeper_relay` TO 'service_registry'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`cloud_gateway_relay` TO 'service_registry'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`authorization_intra_cloud` TO 'service_registry'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`authorization_intra_cloud_interface_connection` TO 'service_registry'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`authorization_inter_cloud` TO 'service_registry'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`authorization_inter_cloud_interface_connection` TO 'service_registry'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`orchestrator_store` TO 'service_registry'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`subscription` TO 'service_registry'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`subscription_publisher_connection` TO 'service_registry'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`choreographer_action_plan` TO 'service_registry'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`choreographer_action` TO 'service_registry'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`choreographer_action_step` TO 'service_registry'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`choreographer_action_plan_action_connection` TO 'service_registry'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`choreographer_action_action_step_connection` TO 'service_registry'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`choreographer_action_step_service_definition_connection` TO 'service_registry'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`choreographer_next_action_step` TO 'service_registry'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`logs` TO 'service_registry'@'%'; + +FLUSH PRIVILEGES; \ No newline at end of file diff --git a/docker-all/example/sql/privileges/system_registry_privileges.sql b/docker-all/example/sql/privileges/system_registry_privileges.sql new file mode 100644 index 000000000..37ea8a6e0 --- /dev/null +++ b/docker-all/example/sql/privileges/system_registry_privileges.sql @@ -0,0 +1,33 @@ +USE `arrowhead`; + +REVOKE ALL, GRANT OPTION FROM 'system_registry'@'localhost'; + +GRANT ALL PRIVILEGES ON `arrowhead`.`device` TO 'system_registry'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`system_` TO 'system_registry'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`system_registry` TO 'system_registry'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`service_definition` TO 'system_registry'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`service_interface` TO 'system_registry'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`service_registry` TO 'system_registry'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`service_registry_interface_connection` TO 'system_registry'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`authorization_intra_cloud` TO 'system_registry'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`authorization_intra_cloud_interface_connection` TO 'system_registry'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`authorization_inter_cloud` TO 'system_registry'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`authorization_inter_cloud_interface_connection` TO 'system_registry'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`logs` TO 'system_registry'@'localhost'; + +REVOKE ALL, GRANT OPTION FROM 'system_registry'@'%'; + +GRANT ALL PRIVILEGES ON `arrowhead`.`device` TO 'system_registry'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`system_` TO 'system_registry'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`system_registry` TO 'system_registry'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`service_definition` TO 'system_registry'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`service_interface` TO 'system_registry'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`service_registry` TO 'system_registry'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`service_registry_interface_connection` TO 'system_registry'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`authorization_intra_cloud` TO 'system_registry'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`authorization_intra_cloud_interface_connection` TO 'system_registry'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`authorization_inter_cloud` TO 'system_registry'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`authorization_inter_cloud_interface_connection` TO 'system_registry'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`logs` TO 'system_registry'@'%'; + +FLUSH PRIVILEGES; \ No newline at end of file diff --git a/docker-all/example/sql/privileges/timemanager_privileges.sql b/docker-all/example/sql/privileges/timemanager_privileges.sql new file mode 100644 index 000000000..aadf90563 --- /dev/null +++ b/docker-all/example/sql/privileges/timemanager_privileges.sql @@ -0,0 +1,9 @@ +USE `arrowhead`; + +REVOKE ALL, GRANT OPTION FROM 'timemanager'@'localhost'; + +GRANT ALL PRIVILEGES ON `arrowhead`.`logs` TO 'timemanager'@'localhost'; + +GRANT ALL PRIVILEGES ON `arrowhead`.`logs` TO 'timemanager'@'%'; + +FLUSH PRIVILEGES; diff --git a/docker-all/example/sql/privileges/translator_privileges.sql b/docker-all/example/sql/privileges/translator_privileges.sql new file mode 100644 index 000000000..ca143e960 --- /dev/null +++ b/docker-all/example/sql/privileges/translator_privileges.sql @@ -0,0 +1,9 @@ +USE `arrowhead`; + +REVOKE ALL, GRANT OPTION FROM 'translator'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`logs` TO 'translator'@'localhost'; + +REVOKE ALL, GRANT OPTION FROM 'translator'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`logs` TO 'translator'@'%'; + +FLUSH PRIVILEGES; \ No newline at end of file diff --git a/eventhandler/.classpath b/eventhandler/.classpath index 6e0021feb..8c4583205 100644 --- a/eventhandler/.classpath +++ b/eventhandler/.classpath @@ -9,6 +9,7 @@ + @@ -22,6 +23,7 @@ + diff --git a/eventhandler/.project b/eventhandler/.project index daa4c4585..2fddec9c7 100644 --- a/eventhandler/.project +++ b/eventhandler/.project @@ -37,4 +37,15 @@ org.eclipse.m2e.core.maven2Nature org.eclipse.wst.common.project.facet.core.nature + + + 1748251465822 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + diff --git a/gatekeeper/.classpath b/gatekeeper/.classpath index 6e0021feb..8c4583205 100644 --- a/gatekeeper/.classpath +++ b/gatekeeper/.classpath @@ -9,6 +9,7 @@ + @@ -22,6 +23,7 @@ + diff --git a/gatekeeper/.project b/gatekeeper/.project index d7b1ddb00..0342a1405 100644 --- a/gatekeeper/.project +++ b/gatekeeper/.project @@ -37,4 +37,15 @@ org.eclipse.m2e.core.maven2Nature org.eclipse.wst.common.project.facet.core.nature + + + 1748251465858 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + diff --git a/gateway/.classpath b/gateway/.classpath index 6e0021feb..8c4583205 100644 --- a/gateway/.classpath +++ b/gateway/.classpath @@ -9,6 +9,7 @@ + @@ -22,6 +23,7 @@ + diff --git a/gateway/.project b/gateway/.project index 3807d3837..ce2df9a7e 100644 --- a/gateway/.project +++ b/gateway/.project @@ -37,4 +37,15 @@ org.eclipse.m2e.core.maven2Nature org.eclipse.wst.common.project.facet.core.nature + + + 1748251465869 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + diff --git a/onboarding/.classpath b/onboarding/.classpath index 6e0021feb..8c4583205 100644 --- a/onboarding/.classpath +++ b/onboarding/.classpath @@ -9,6 +9,7 @@ + @@ -22,6 +23,7 @@ + diff --git a/onboarding/.project b/onboarding/.project index bbe5978bb..a9ccfd71d 100644 --- a/onboarding/.project +++ b/onboarding/.project @@ -30,4 +30,15 @@ org.eclipse.jdt.core.javanature org.eclipse.m2e.core.maven2Nature + + + 1748251465905 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + diff --git a/orchestrator/.classpath b/orchestrator/.classpath index 6e0021feb..8c4583205 100644 --- a/orchestrator/.classpath +++ b/orchestrator/.classpath @@ -9,6 +9,7 @@ + @@ -22,6 +23,7 @@ + diff --git a/orchestrator/.project b/orchestrator/.project index 63fbe3365..f47e4a72d 100644 --- a/orchestrator/.project +++ b/orchestrator/.project @@ -37,4 +37,15 @@ org.eclipse.m2e.core.maven2Nature org.eclipse.wst.common.project.facet.core.nature + + + 1748251465913 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + diff --git a/plantdescriptionengine/.classpath b/plantdescriptionengine/.classpath index 2200befa0..decd61996 100644 --- a/plantdescriptionengine/.classpath +++ b/plantdescriptionengine/.classpath @@ -26,12 +26,14 @@ + + diff --git a/plantdescriptionengine/.project b/plantdescriptionengine/.project index cf3428256..7dbe86a07 100644 --- a/plantdescriptionengine/.project +++ b/plantdescriptionengine/.project @@ -27,12 +27,12 @@ - 1616657043961 + 1748251465936 30 org.eclipse.core.resources.regexFilterMatcher - node_modules|.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ diff --git a/relay-library/.classpath b/relay-library/.classpath index 6006fdeb0..7dca7dd68 100644 --- a/relay-library/.classpath +++ b/relay-library/.classpath @@ -17,6 +17,7 @@ + diff --git a/relay-library/.project b/relay-library/.project index 488602d2f..2acd68e61 100644 --- a/relay-library/.project +++ b/relay-library/.project @@ -37,4 +37,15 @@ org.eclipse.m2e.core.maven2Nature org.eclipse.wst.common.project.facet.core.nature + + + 1748251465952 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + diff --git a/serviceregistry/.classpath b/serviceregistry/.classpath index d7e930251..db9b1e728 100644 --- a/serviceregistry/.classpath +++ b/serviceregistry/.classpath @@ -9,6 +9,7 @@ + @@ -22,6 +23,7 @@ + diff --git a/serviceregistry/.project b/serviceregistry/.project index 122770c04..c03f688e1 100644 --- a/serviceregistry/.project +++ b/serviceregistry/.project @@ -37,4 +37,15 @@ org.eclipse.m2e.core.maven2Nature org.eclipse.wst.common.project.facet.core.nature + + + 1748251465961 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + diff --git a/systemregistry/.classpath b/systemregistry/.classpath index 6e0021feb..8c4583205 100644 --- a/systemregistry/.classpath +++ b/systemregistry/.classpath @@ -9,6 +9,7 @@ + @@ -22,6 +23,7 @@ + diff --git a/systemregistry/.project b/systemregistry/.project index 3c3c6f0f7..26d677b38 100644 --- a/systemregistry/.project +++ b/systemregistry/.project @@ -25,4 +25,15 @@ org.eclipse.jdt.core.javanature org.eclipse.m2e.core.maven2Nature + + + 1748251465968 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + diff --git a/translator/.classpath b/translator/.classpath index 754be2692..1bf08492b 100644 --- a/translator/.classpath +++ b/translator/.classpath @@ -9,6 +9,7 @@ + @@ -32,6 +33,7 @@ + diff --git a/translator/.project b/translator/.project index 46cb783c7..1d2dd7074 100644 --- a/translator/.project +++ b/translator/.project @@ -1,40 +1,51 @@ - translator - - - - - - org.eclipse.wst.common.project.facet.core.builder - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.springframework.ide.eclipse.core.springbuilder - - - - - org.springframework.ide.eclipse.boot.validation.springbootbuilder - - - - - org.eclipse.m2e.core.maven2Builder - - - - - - org.springframework.ide.eclipse.core.springnature - org.eclipse.jdt.core.javanature - org.eclipse.m2e.core.maven2Nature - org.eclipse.wst.common.project.facet.core.nature - + translator + + + + + + org.eclipse.wst.common.project.facet.core.builder + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.springframework.ide.eclipse.core.springbuilder + + + + + org.springframework.ide.eclipse.boot.validation.springbootbuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.springframework.ide.eclipse.core.springnature + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + org.eclipse.wst.common.project.facet.core.nature + + + + 1748251465984 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + From d03c11ad60987c75b3a1dc22fa848c9e1dafb79b Mon Sep 17 00:00:00 2001 From: Arash Omidi Date: Mon, 26 May 2025 17:48:26 +0200 Subject: [PATCH 2/4] fixes on properties and certificates --- .../example/certificates/authorization.p12 | Bin 0 -> 6109 bytes .../example/certificates/authorization.pub | 9 ++++ .../certificates/certificateauthority.p12 | Bin 0 -> 6147 bytes .../example/certificates/choreographer.p12 | Bin 0 -> 6109 bytes .../example/certificates/configuration.p12 | Bin 0 -> 6133 bytes .../example/certificates/datamanager.p12 | Bin 0 -> 6121 bytes .../example/certificates/deviceregistry.p12 | Bin 0 -> 6111 bytes .../example/certificates/eventhandler.p12 | Bin 0 -> 6107 bytes .../example/certificates/gatekeeper.p12 | Bin 0 -> 6095 bytes .../example/certificates/gatekeeper.pub | 9 ++++ docker-all/example/certificates/gateway.p12 | Bin 0 -> 6081 bytes .../hawkbitconfigurationmanager.p12 | Bin 0 -> 6209 bytes docker-all/example/certificates/master.crt | 18 ++++++++ docker-all/example/certificates/master.p12 | Bin 0 -> 2459 bytes .../certificates/onboardingcontroller.p12 | Bin 0 -> 6033 bytes .../example/certificates/orchestrator.p12 | Bin 0 -> 6107 bytes .../certificates/plantdescriptionengine.p12 | Bin 0 -> 4391 bytes .../example/certificates/qosmonitor.p12 | Bin 0 -> 6119 bytes .../example/certificates/serviceregistry.p12 | Bin 0 -> 6121 bytes docker-all/example/certificates/sysop.crt | 20 +++++++++ docker-all/example/certificates/sysop.p12 | Bin 0 -> 6069 bytes .../example/certificates/systemregistry.p12 | Bin 0 -> 6111 bytes .../example/certificates/testcloud1.crt | 19 +++++++++ .../example/certificates/testcloud1.p12 | Bin 0 -> 4261 bytes .../example/certificates/timemanager.p12 | Bin 0 -> 6145 bytes .../example/certificates/truststore.p12 | Bin 0 -> 2074 bytes docker-all/example/docker-compose.yml | 6 +++ .../properties/authorization.properties | 28 ++++++------ .../certificateauthority.properties | 2 +- .../properties/eventhandler.properties | 28 ++++++------ .../example/properties/gatekeeper.properties | 4 +- .../example/properties/gateway.properties | 4 +- .../properties/orchestrator.properties | 28 ++++++------ .../properties/serviceregistry.properties | 24 +++++------ .../event_handler_subscribe_to_events.py | 29 +++++++++++++ .../example/pub-sub/register_publisher.py | 23 ++++++++++ .../example/pub-sub/sensor_publisher.py | 37 ++++++++++++++++ .../example/pub-sub/subscriber_registerer.py | 24 +++++++++++ .../example/pub-sub/subscriber_server.py | 40 ++++++++++++++++++ .../example/pub-sub/unregister_publisher.py | 23 ++++++++++ .../example/pub-sub/unregister_subscriber.py | 23 ++++++++++ 41 files changed, 339 insertions(+), 59 deletions(-) create mode 100644 docker-all/example/certificates/authorization.p12 create mode 100644 docker-all/example/certificates/authorization.pub create mode 100644 docker-all/example/certificates/certificateauthority.p12 create mode 100644 docker-all/example/certificates/choreographer.p12 create mode 100644 docker-all/example/certificates/configuration.p12 create mode 100644 docker-all/example/certificates/datamanager.p12 create mode 100644 docker-all/example/certificates/deviceregistry.p12 create mode 100644 docker-all/example/certificates/eventhandler.p12 create mode 100644 docker-all/example/certificates/gatekeeper.p12 create mode 100644 docker-all/example/certificates/gatekeeper.pub create mode 100644 docker-all/example/certificates/gateway.p12 create mode 100644 docker-all/example/certificates/hawkbitconfigurationmanager.p12 create mode 100644 docker-all/example/certificates/master.crt create mode 100644 docker-all/example/certificates/master.p12 create mode 100644 docker-all/example/certificates/onboardingcontroller.p12 create mode 100644 docker-all/example/certificates/orchestrator.p12 create mode 100644 docker-all/example/certificates/plantdescriptionengine.p12 create mode 100644 docker-all/example/certificates/qosmonitor.p12 create mode 100644 docker-all/example/certificates/serviceregistry.p12 create mode 100644 docker-all/example/certificates/sysop.crt create mode 100644 docker-all/example/certificates/sysop.p12 create mode 100644 docker-all/example/certificates/systemregistry.p12 create mode 100644 docker-all/example/certificates/testcloud1.crt create mode 100644 docker-all/example/certificates/testcloud1.p12 create mode 100644 docker-all/example/certificates/timemanager.p12 create mode 100644 docker-all/example/certificates/truststore.p12 create mode 100644 docker-all/example/pub-sub/event_handler_subscribe_to_events.py create mode 100644 docker-all/example/pub-sub/register_publisher.py create mode 100644 docker-all/example/pub-sub/sensor_publisher.py create mode 100644 docker-all/example/pub-sub/subscriber_registerer.py create mode 100644 docker-all/example/pub-sub/subscriber_server.py create mode 100644 docker-all/example/pub-sub/unregister_publisher.py create mode 100644 docker-all/example/pub-sub/unregister_subscriber.py diff --git a/docker-all/example/certificates/authorization.p12 b/docker-all/example/certificates/authorization.p12 new file mode 100644 index 0000000000000000000000000000000000000000..4ad8d0879cb4e5d3bc5d66a1abe399d367c26fa7 GIT binary patch literal 6109 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 literal 0 HcmV?d00001 diff --git a/docker-all/example/certificates/authorization.pub b/docker-all/example/certificates/authorization.pub new file mode 100644 index 000000000..4cf2b6221 --- /dev/null +++ b/docker-all/example/certificates/authorization.pub @@ -0,0 +1,9 @@ +-----BEGIN PUBLIC KEY----- +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAn5rCEUb6W13FIIhGY1O+ +ZIwrvFDpZPNOuCIAolZcxFs6PH7ikcHjxmu014ZWm4qL3DevW9Rddllr16sChE4l +pKuSXVKMOKej3ZyooI2IK3ChmH8gDZ5R/k7DdQmjSc98aZ70WjtSmlW47tTLFH/4 +HYk7d1yZKISCSSOvzvnwFxs96046boH2W7e6zcDfYRvH4ki5F9GM19Yc8AIlTeBR +1cuZv1SK2fZzvHG7nLVqNCeZEIkaThxh6ACXAmWRFQSkAWluv+xH0rXYuRHd+NI/ +Z0QS+8YCS1QWrCqyGzqvb92XngoUvJJobnVh80TNt4TSyl+GQv7LDzAwj2O+fYPU +MQIDAQAB +-----END PUBLIC KEY----- diff --git a/docker-all/example/certificates/certificateauthority.p12 b/docker-all/example/certificates/certificateauthority.p12 new file mode 100644 index 0000000000000000000000000000000000000000..93d1bfcb88ce0cbc2804edf3d60a7ed1d9d28423 GIT binary patch literal 6147 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 literal 0 HcmV?d00001 diff --git a/docker-all/example/certificates/choreographer.p12 b/docker-all/example/certificates/choreographer.p12 new file mode 100644 index 0000000000000000000000000000000000000000..bffbe1396a0ee4cb68d3c0d40e27a83dfacaa453 GIT binary patch literal 6109 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 P0q*Xzc7Te85|;NLrB<4r literal 0 HcmV?d00001 diff --git a/docker-all/example/certificates/gatekeeper.p12 b/docker-all/example/certificates/gatekeeper.p12 new file mode 100644 index 0000000000000000000000000000000000000000..769a9ae7a721beccb85eac1bd16fbfc53f923c6c GIT binary patch literal 6095 zcmY+EWl$6Vw1pQ~x?$-Qq-!bZ?(UTC?vO5F=@3MaknWaVBt=TPYeBjZSh}9?&5L1@phRurLr13nGD!;7H&tm<0vnf9!w9DS)8y%+OKA+aM>@&M^Rmi5Xkl z_7OEA5@0|R7zrF6Oo%bgvO?cP3EhPbuA^WgUo6R`=S9{5E2&Nks=S%D6iHaOKV4j_ zSWIb?Sd>)91Og&n9I^RMZg=~xV4B0a{2^$@^AE0KBfM)O;+(*S1_9N1c+~EuL=dHq+GTO z$b5V%{OB{Jh-&Ml6eWzKeDi7=$+gzZmW;kMDh7YrDXV(msfE}0LzUXHDN7<1>dC_h z?mGU$6(+Cg-~Oh^W+GX4ks?Z$Jve(g47f%1Wz(93v4zmA+_Rst31n*NvkapH z_EcEh>+Wa|_`-f{PE?&KLLBuwFu#Lgf32b+H@Y@Sp&5>Va=QZSS#xp!`4{j7Pmmuk+kH+#e@qrvaS4P9R&uz3tLSCkh;9UZy5K@wU@z)uxttjkowgS^tRy{Q6no=P^ zC4t@aFAK5$l_g*1(x3beg!Yz*`q%0#Rx)4&NHTtq)w`RQ;7#1{PxsTmi*d)l3I3pF z+osh!6@t-oH48eZq7s_Uo^WWDro`ETE4)=D_Hwi=T6OnnV{q^GBC>w2TGu%_DJ5P? zdz&6k`gZdu{`5&0djF@QB@eYPS|lGQ@bPCfH#6MYyW_l6_CncZ0~Uo$A1?ZXHaKY_ zrwT(DIGw%Cxo(}|Pd@5x|JnMvw%g?6NaF(SJ}WZ6RWfvSYtV2W{+Wxb(UW$_3fn!m znv?VGWTYzVS;3rs3ry0>kw9`l4+%4k5Wy=D(2Qg6xXs~7Ztp#;yTIGO6!?k|BF?9? z8b_!_XOF7xNc-b4QOOQ!V!#~PXO#02N;O($C3mrcVy2X6TgH3jG9@yWwB2&T#DWzGG~w74A>oa% z$JKh3amhm$+Ye@#3X(KCBaSBY9hOQVxH-cv7Gbs|zH+=^iO|3xJ_h?|%i z1h5BK0(=0r0OxNpm58`OKmuJyS6fgy7tlVa8_b)tNVe(g;Ow3C1B_4q#bsWexMg@!BTFOxv>CdPC$uTP*j)^TN${%%S5Tv*V>2tZTY} zcrOCKIaCPNv0-O6pu09_^hb2ISMr*ni1;xP(*)B|TCtVL57Q%c*QX>LQ~ zDI(%tthA1yrqp71#}R!Yu1ol#Q+?v|>QuoQ=T*)Z%|z8@;xOr~qni4tj$g^~;gb4T z`~|nHlM1Nea&y(+-V2^ub*Z{y{r&q?=QI>-b8L&bMXIHAko$c-d8st0i>_Rt^9w7% zJ(pr|9`bnAu=NSEq);e_rIHih|$$I(eWb4X+)C}*J- z3Etu>nht1jNj9At(XhNdp|mi6;3`!(`3BwV_h36}uf~?MS$G6*w7Cys&Aj6#9?N(= z?&-7l)1I$PpUfl3Eg9Hxh-=S?dXt!s=RvB_$G}^syP83ZmAGtE9UGpl4EkVq)rGKq zRufD(fmX*K{8{b>iR9oc{r9CVSZr2!j33n3B@s}xCL;H zx}}A)Da6@dx=OznKoS-GMSRJ#6p^2EejcyyAn`Kwo8GaHwyM^#$J+_ey#s|mfe{uo z&OJVkw~`2b=UiVQ_##+NV5C%)Ph@87mBju?WG#*k4$vq9 zD_5qhY)M4v2{-wxMn#Ixl>U2=W=ciH?68*u3fc zG{O9Ekk|N?oOuTK1`x(b!bkNq8@`YcITs>VQLI^FM%o>kZ^Bnf9qncN|z}c!_;gc)~ zM$+jVy}&ZVD}imS@?j(wQ5}HKrR9lb3%s~E=|B50D9lracHZBFz;qVvEwfY^1n^hm zH7crd8r|HauPtDQHKN67o8M-ywRksupe~5-0#ZC^`c?|PgC3NOMZ%IIR^a?S>ZJ3Z z1fB_@de#$&b&Llds+b58xoPoCkU-_+hc*r-->iPgok~geZN9QV;R)Fywn5(b6z< zN%9RVWcWJ6sDHCD{W(rD0v}a0L4^JYY-oEpg0J;e4=$uB`w}sS_;S(HdeQv#E!!m3 z{mBw!FkHPAx65W3!?BbQ3HJn8ddQIW3wxgUE_2ABtM*kv!M)S4mUtiSnQUytOen9Q z+E~Xpt!=-iFc;U9ap;2W!pLp!D>%#w{iG=8;Msd@!MU=9QB?+K>Zi)>69I=3}>nAJIKd znP7u*CL1%0B+rDJ>7qFICA8}WP;fkQluWy`ei3Ve<+1?wo+)Wz7Dt(%oKOClnqbvT zPTjo{cuXHL8*yrZp*3@hfbnr8ttTitQ6-RRHpC?}4OyMAd|_z!*Jsj4HK8Zg$MRj< z0--+Qq)Sq5hy_JtUnEn^-{)81_;^{#07$to+cOC$bsUut3#U$MV=cpCjFVlKK{uLc zz=Il0%-l7m&>P<;YH|J$bNUp0pF=<2jKvTjeAHeNBKnDeD)X&6O~2M?JH#D>Xe}sV z;ak3anPuk6(-O;LLU7+`A=x!`^)`c5x!=R?i@0|iJ`X2OLPQvO-#3w85VO2)rjbk$ z#$Up}!J(eC+NsO+x<;ML`?_m!^^E`yxUg4@_WdylI_n9ZKF(&h1JQd%>Fp2aLsPh> zWw-Z>zEj36u|V?_8_A5H^#oDpE17Sc0PcG8wmq8f(4wfGn7Ls%@@+-6J^IFWP6sDn zOyn^O^VGNfA;rePiV!xd{@p#H5_yKf_raq0c0Hl)LS^huM|{?@3kr60M9<>E?`rfxB9S3*L$`Kr|LT@Y8vVJcX#dzx-p z0I#v@Jk4!Wz1v4bbi;x2kia9=b`%Xc7{j3ZYRg*?$#)_>FbO=aBtG(mBtW^P^(y@} z+Jlig1p3F?vHWu(QCN-1@Pw3W#7wf_5MEB647;ZEfubMwprP11`ihR2r6Dcg&j}i? zw|bl!&ISX*c-^s5QyjjCC2yjOo3=IsST3r$CQkXB0x?TuBK&aY<&-NDtFd==LbSD$ zl3FK}fQN#rMJlo99!Y0GbO4_qt3qkdhS&L@tDEHq*V5y9f2Yps?mSgU2$lPH8;tN1 zO*jojQ6<%uum_$gZb1rMw>L}IrtHm3#U5t(BKnmYV=?ZG*5j+bm; zyPa6U&b?R5%0NoBSI*?eLS>3Y1%-StD!b+%SL#+`vK4tAMhz`?fICXI6vU6?8!jBzaL%f#95*kjT9PlbFZl&o>#;ml1 zp!4hz)Z;)!kKfIc%YNVnQs~i@3saL}v)Unm2TJB;Yc{&Fs@#JXnCzeh*#siP&vrM3 zJK>YoU9L-h;@I0hCR6Bx=33A6$Gtxgn=ucJaPm!%iTirR^AIkt_hHFJ82p6Xe!qop zD&Ol*j*yPU(L-0r%vZ=&>u_t@HF6$i`X?XxsY=XVy{p5Yftox`6E5lG^g%SZXsX;! zXqdsNcn@AlPsKD34cLAxiYWx#9}O;hN$fga_|jCe?XrW6iLwPrS3Q6o|wS|+h_i)C01=-DNEad1XoG?~i8lwHq+Udr?v=S5{jrQ&~K?nXP6SZX7M9Cw|$+ok0u7njJz|MyclQ!Q$D&fDlJ6*)Ex85kp3>Olwj{&#XRf#bYVfdafMv4 zIJMdPWkjqYm4!}_mtM?0SiwwU6HoLG-kZ=dj`7!j8GvIzn_>|R(=Zmzc7>k=YG2-_+dE|(I2Yi9RUGks({P!)QnoqO=`@FDYoCcnmt{(-2m-MtxI z(D138aL-J>@mze)bBs|5HI-6>laiNqrpf{^;hJ}25_2Sy6EPJC;UA0qL!RQq{;F6p zcTt>D(^X)!n2I+rs!DlJ_K1A=#F=%nA#1sG?HN5H2kX?XS!uJ2f&R>SQa%P$^gMV}6&cF5JqYK*r^M|G^UX z)R7D4N1DF2k5&|+8>_rpNL9q_vfn%!$Z6xLZr+z@V02m!&@cDz3Bo&h;(zn*F>xvM z#uQGqUnEqvCiW`|yZ>;zi}9QBkH}uWaP%}-X&Jc~ae(h-VWiB6KS7396||6{bG9du zJHsHO=S+*YVWhHxHs3$6PLA`yxZ{rNh1$K~sV`Q(;tj(lZe*8I=|Y0kv|TFDtm~tx zYr&W2i(>kMDOUfqpsQVwQ2cXO?(lmf9ksCcyrj=i>+=9&P-T|oN=AoQ&*1*^yUJ)x z)>A%kJ{y(>67L>Sm7cZK4fM!Gymqq0Sbs}%T|J@Nzri(;8OZj+C)~vB4RJH7LXm0fAOEz%Jj?A z>xa(bUAqQ6x!P#+NG)f`tH)G+tPgqAJD(T#-)V37t++n-02T+o0i&ZJv*92ik|P6v zAYhW;1!8 z|4JPJ^}n~!P=GM`!EnzU!Eg^8Ob96dgZ~{Tfy1qc49}P0k@$Pci1q_dcIG4CjN=9d z7SOK_7YsLoztOuaUFv~o+l(DPU00}ESN$H@f3rj zQtK*B;^kA{CkNC-OsG8QswLUbuL`r1sDb=n^IAoO$U>bFsIFeP=3_TE9&5F(ugz_l zGI|$me=?iVUKFySb>9tdLug_U&13x2dGE8fieHXU=_~e5oWQ=0pwRa!WV%=~Asbqe zoWVVD`-|A|Ww!Z}CM3J`2ql&^YioQsTbtjvw1SmF4tgz?IQ1TLvbIdiSN5%T+YSgT z>=@JfVo&bL-@Wm6vgh{6HVGgJ*`0}v+y*%Vg~B*cdlmu$nTmu1Q7Okf-IQF5Q;oZv#v~$@>=$dN5tWs zHW6!^TP+C9V;`cX>saHno<^!O!(q6JK$+`puDLF2!xt=yh9=`1){J}tx15OwtTnT zcV7K8a)neikopzyhE`$t>hz0<%b5z~r^2VeJsvcesP(o{g=GgZAD%p%=n%CY-m-aS zspjow&+jz2&d{zOji%Pw(D+djEYBa!;zlnG>|aqHQj;Z3n?QDlf2#38Q#*SI6JxHv zbm(Th0;(O-a6;#SG*nwg!u=#NKf{--IW|s#7eb1-4)dtNn!0cd>!RLju>M36vn%C5 z8|1>+6D!lB0x!AbI~(??AuMty?`~e)XonV4M`EnUbN{{4iZhW`B-;@gLx2f87oL21 z`hF*u1>R_hjy+F*kh_jY9*MX1li*YNYDTZn7sXOo69t>!^f~6d`}>Y%WK?&?4N-J9 z26A$p6Ql_2^}E;M7RhBE@1K&4wR4pCM>K(uT*gs-%lj*Rs~s6{gOqSkUo#gz5r<;C{FH7K@2ia(7JHLXdxRqtdD59=D99Qs?KH= z_!`56jUipLh@gK4j#b#WeB|UpWDI{rKq+AbF}H`7|KuWV$Y$mhP?ym*=iqu@!i<)jlDBf!8W_A9S9$l%;cHA_s$WAd~lu{2>=FM&lElPT}4gfQ7| zy9$V0G!J6bHkn5_ZN6eP7R@+`@KV4C6T-ODQ%;_d375o3_9wvt$*cYySd-{B^r!v zqM3+Nv80)B8?X7I_-=n-QnmU7g-d$#_tp>KHeE)r@QmV=;voB9RU+eZVv%D2tN~^K zcYr0p>tFZgp!&ZUj}sRTTg%qbl9H2`kC$JNgOgiOfP3Z!Jzej=no7K z@UPANUjqDpjz#!S$6g;_W)%LdrjC!@mEi_ybGf-;L~s?VtJ;{6+`Kd2)2q zr;8Ue!`qk~&k*Z>6K%Wj2f6MNbxefEs*7xXJM?A;no{z1$)k z>HocO#KqXt0zNC7;2@TdG`_jSnfJZLlX{bZD@6ZH0eztvUO!UkWf#*nc}Te|Dybaq z6E{rJU5}ZdFu#U?Zkgi@?3+$(9ZLgCSM&lhzkH8NAFPBH2C=(V9(0wkz%|7_4eg!k zhTZC>76K1_YFXjIhH0Zf;P7WTfR&<%nzG~450)MeH_z{h8y0wjn8+o z>)x?;3cPlLVN-V(LaK*mj-hpgIggaiX^_GPe0`qJVco>t;&BMmeqGABDDrn#(0RNP z#>r)k4OY)vDG5xH4he%^vt=88%ZHz5dj4?!5^@}rqXOsjjlS1`CmtOM%v!Cndhw$$ z`=$~_=727wNwG==o76T$EKRIrT=Y;Q2KJ3kldji_rq}zZ!MW|kT?R*|w804jMFY4YnUpy#Ukb(U2rFt)u$1%RTEdB@h4+ZLHvj8=_{wdb><~Q zz+cm#X#F7_I~K(xB;=$3gbvV>)==6~$$KvQcbn0sjQtk);c}y#Gq#|SznC;B>S-8E z^&7H#mh%@rdiJuQ>P7fy+Re}zP~rB%T!QQsVRQ0hm#0#WN>E_5o`Bbr{=xML#{^*~ zo~RXbf+A2YEc#{Q>jLXMze#6Fhia6!(($A1U7>|o8ZYwiHcDp(_l%gAEWKkury+@T zrzR#<;5uM4tuQnpOnP7Vl%Ev-Jk^u0w$L&8s2>aFknn<*Z(*k)E3mqC!n|k-zx7$m z6j638vui8V2hrxH)oH33AXp7er`xb;^4Hg3xCM=TAz#LHu=`0l(NFNaMDDtzf&PbV z^+oPNj>%iB16m!ybeX=Dto@Upi5KT0X!Va$4_Qd@h02=1S<^O3JF%8N7eil-jmu+J ziNtW=5J9;`LikgcsAn#=7I^Z(NK1y1*;a_%bv))z8@-Tg?O>3yV9-;Fb9)^f~z{iM&2680M!WcJT`=$`j0Ig;FTq_)Wr%2o3~MMVHyEC%)5&X?4FDo<}(v!AU1yNZ23uH z>DX$(54=tL1^VCoIYjISuw)o4g9J?nHAVgW0I?1P)HI0)T2dS(X@kY8zHe6e5?6@q zvcQCBRQbEI_vwI9@i^LfYD zqYRDi1EXW?gA;uWpKcWdzcJy)9pT=WvGcYh5e;8o1sZe z-kVh*b*6I}&x5G``hY+I=zQDmvZB$jHwb7Yr zs=(``w0qW-mi)fq?r|>B_0TJphW%YZ>lCKymCD9a`V^|nOY z&E5)vlcB5B(HwN;c7<=R5mG&<57=a_16+;JwvgX@pJlHMeHL&?XZ?0IIbg4W27eS+ZmuP^K2J`(y=kfj1%D*+@=*@^1!BJmX4XIPVrI3dLY zm~(l3H4l>e77})3oi{aa=SH2HG<``a<3NG!NMe>;6a`Nsn`DH8dNri1gpVvfU>8m8 zZGG=1R2;WlgA_)ZT2AE9)3W=cPK||{>h8}Kd0HHLoS|uc#pmGBJ+8almu;h8$67u=fLW&?JCrpZg$Ns=9Q=n|Fp65!6 z7K^5Esk!A<0Y#p5Cc)6~?BhnyX6LDX^{n2m#yxyMS%js~@97KBQqw(oss@<@7 zs|5UX5AdT5*4}AYEID;V)mhY}?M1); z`Ss(bcuna?1Ns+Ph2|nRv=0h+mt}m5m&Tj#77;6Elg-r|+unHjh)w!t2})dpa~gXR zUC}9En(Hdeo!gM%k9ksR@#bCtT@W30nqMvEy?&_oe4C7>_E*&<;O_oSfMBVV^p@&O zly7Z+G`~%)3p*{{N!lZfdqRJ5#`1W|VN*VhuZ^jcS+vpyHrrWO^ijmt(TK3VWJIJW zocM!sBtFC`gRDjOZtx9wfP-#IAD^B3yHVDa^-Dz}qGxed%;=<~r8lC;TM1wAb^4G@ z_U7((Q)|y_o=fwOjwh~-vad0wvRQ=GxVOckZH5%Z%|3dny%`_Mu*%iQxH|QH3@LKW z#Gv;f#dDTms;Sdxl6p;NbdXI{5Vqeb!>TY^-TO_CDi0MkFKFU#)fDm?F`u*j7#q(5 z7^ZP+FT=L2`H%Oh-R`T@`vmBI4bZd0Pz1x7-MZd1jx9a!h)#-{j3jC?4kAJSxEv!R zZHpm4D5jj@gG+^SR;lQLcQEx@yxXO}5QK-(bmg<|^TlE%gu-MY9O%EK?J4Zj4f;kV zn!llx{@LBgNvCs{r5(`YzdJ+VuI+tk->>_*n)ny$fjJ&^Z|tkljDu$KDND+&8qVBk zT*BavMu?}L=hmUJK^#1Cj~uE}65`T4aHRey^`z9SodJ0e)q~{CSOU{=GH-jACcK?T z%}q1T%4m(%er8fOGM2lv*_)?$Ihpix=%g8<2XgXT$?66dw|YKl`X>%h~<)D>q^cE-~>vXo)5pn2_GB`!$Vcif>a zQXc(!@sqNy+x58d z*-*w}P4<1{Tv1$JDhl;FplUl#AHCOMl%jh~Zcc~eRi!+o=L-6$TcHx5_tWq~zI_S7 z&&g9N`BI)XDcS;U1S$yEU(8P#i8dllzNC=0++Kg!0=OXI#EPo1DJ`{du^h_Y*~5t57`+QSMtE!I4<& zPTZ&Uqr05WVGfHw%hZ%m-e*JOvu;`^e=au8z1n(^oFxN?TPFywG@;s_321%Q)>@OqWYXP;$ z`oc86Ol6}dV<@EqML!#uNYv}q{Hfcj`Ad|g(d)h>RWEZHp91#j@$*p?fnD+C7Dc=J z_u5;FS}1nzoX`N(sN%f(7CJK*zoV0vO(b{EapGjFY9^veErxVpb|+U0!Y{DrK>T{;Q1%rx7OflTiyOj2Ke{+!!xhk+~B1gr|{f`wO%A1`P^(f@jjqN zA}=;+9*h_pPT{Q;c{Sx@-Ts__CSSVL;`j?=A5K{h2yewuQ-1t@XvUkBautco^o=d$ zf`K9XCRIXW`)ol~hU>gut2|))N4i4sqS=~8d>d5H{FN2<-HY&ON_s|%Vm3@HMul&d zlFUwJ>9mncVGT8<8e_$q8B!!dtR(6uJL!u#S_IL>ry6V~prtvYsw=G6-vgauWd5o$ z64hb-YuzHsT~3=H+1KZ7YzE3nk-U34$xM zD=#CSPfEsk*%fIfjJ|nJ=0042ac=O3&+7SN5}U5@FQq?&9Z>&9TVA8?q*|laM_(Vz ztO8zvQ^4_b?&C!LDRD^gptpR9a4#apY^T)?1Fy|u)$-7c_>&}QifjNnh<@9_(A-_m zHGM(q?@;0WIQBAJZ?wh^jW(@9x1bTje8%qAneL2w^_n=XlO&0ffT6kcB}^kky@X%% zX(A(T3!-EZc+?(I&CL_9|N|Qle)O-2DX-|ssSM}vBQ9DVXA}I(xHzc-rq^4NHF*1Mc^mHAwo|?ZKBlt!OZoA-G)s7oEdXU0+)QE7F3o524P@ z^jP>=+FNteeLq732O(t9D9Re_$|1%<#es|f55|CnA%+LQ;W{R=tF>A=2j0#v_AzJn lM3C$0g}~uPW^uCRhKxq^j>^24ekhD-6yxKDfdxYH{{ua9rNsaM literal 0 HcmV?d00001 diff --git a/docker-all/example/certificates/hawkbitconfigurationmanager.p12 b/docker-all/example/certificates/hawkbitconfigurationmanager.p12 new file mode 100644 index 0000000000000000000000000000000000000000..d262c535d2bc740a33454ccf2eb93a3ba9c86f9b GIT binary patch literal 6209 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 Ju>+Iw{{*F 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 literal 0 HcmV?d00001 diff --git a/docker-all/example/certificates/orchestrator.p12 b/docker-all/example/certificates/orchestrator.p12 new file mode 100644 index 0000000000000000000000000000000000000000..3c5a7c6facb684dc45a5198fd941590d77cb11ae GIT binary patch literal 6107 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 literal 0 HcmV?d00001 diff --git a/docker-all/example/certificates/plantdescriptionengine.p12 b/docker-all/example/certificates/plantdescriptionengine.p12 new file mode 100644 index 0000000000000000000000000000000000000000..a49fdc9cfc09c815a219bea167879ac5d7878edc GIT binary patch literal 4391 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 GmiHf`c`Z)> literal 0 HcmV?d00001 diff --git a/docker-all/example/certificates/qosmonitor.p12 b/docker-all/example/certificates/qosmonitor.p12 new file mode 100644 index 0000000000000000000000000000000000000000..9ff8cda5a951d625a6a1f0a454ee32e0db83d169 GIT binary patch literal 6119 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 literal 0 HcmV?d00001 diff --git a/docker-all/example/certificates/serviceregistry.p12 b/docker-all/example/certificates/serviceregistry.p12 new file mode 100644 index 0000000000000000000000000000000000000000..2f6229bc77c8d9a02c1a553a52401086477a4268 GIT binary patch literal 6121 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 literal 0 HcmV?d00001 diff --git a/docker-all/example/certificates/systemregistry.p12 b/docker-all/example/certificates/systemregistry.p12 new file mode 100644 index 0000000000000000000000000000000000000000..156a9f3de72f27e5ce4965f3ffaa285e5d83305f GIT binary patch literal 6111 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 P^Apd~nc)%O!t?$IADOBb literal 0 HcmV?d00001 diff --git a/docker-all/example/certificates/testcloud1.crt b/docker-all/example/certificates/testcloud1.crt new file mode 100644 index 000000000..54e8c87fc --- /dev/null +++ b/docker-all/example/certificates/testcloud1.crt @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDGDCCAgCgAwIBAgIEXVQIRTANBgkqhkiG9w0BAQsFADAXMRUwEwYDVQQDDAxh +cnJvd2hlYWQuZXUwHhcNMTkwODE0MTMxMDI5WhcNMjkwODE0MTMxMDI5WjAoMSYw +JAYDVQQDDB10ZXN0Y2xvdWQxLmFpdGlhLmFycm93aGVhZC5ldTCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAKt/3ehPA6CglcyUJScoVyBti2c7g2JGmzGV +mXZ3KCgDVZWxk88y/At3oVCkm1EvRKiXVKVIIYkODOW50f2aa6HMSARBSRP45/v0 +wr3zRS7FfWldfd+U1sxW9Sh5c5KjZbgwo5nmV3NQU/CuuK6t3qa3dS3B8ZB78FQ8 +FQ6Eh46diniImSh6DcUcO0hP4YVGTVsx4QOsP2x4E5OsalRL9QaceJj0FsxnkIlw +mWzDvzFHrOIThBwYj4Ah48Gj4YJnruwxHTzhSlORKlJyDOVyF4QNbb73YXdQqCpM +JhEzU0woF+t/ZkNMwUq1Y2LydhKUrknOgRbkG+b0/Kc7JOP6yt8CAwEAAaNbMFkw +DwYDVR0TBAgwBgEB/wIBAjAnBgNVHSMEIDAegBSaipkeMUwesuYttprtxx4xyt07 +/qEAggRc1T6tMB0GA1UdDgQWBBQMImFekKi6M65kAiRicb3TqPmsrTANBgkqhkiG +9w0BAQsFAAOCAQEAIOKivHC1HBcTAVT1W+9ULVX4fKq8sThQzYZY/2RpuotzzL5r +Zh14PapHh7RIImLucB2Ncm+fuTEzVgFaw2zxFMY8aDqU0CpwA6exetl6dO1gTknS +ZRxPPHK9XQrAWL3jtZVF7sh3kr+1ZoVVIP7QshDt54Ert+FSXyPbBIxPiUqhP2WR +rrVgMkCPvgRTwnV5BKaVIW6vQtIGTfyAibR+TbyPnd3kGGsK4eZ6Bha8taPvVYKM +YwWMT/BvwPqDPJMaS8YmVBuv15euzmuTJnNflwlTM/NY2aG+ZB5Yf8YBsobwKbXB +GQhD/7QnkpBtFfjiY8i0ue/yzLnx8kLRgzNGOw== +-----END CERTIFICATE----- diff --git a/docker-all/example/certificates/testcloud1.p12 b/docker-all/example/certificates/testcloud1.p12 new file mode 100644 index 0000000000000000000000000000000000000000..7d54a81425ddc6ae5848477aaf93e33c7a34198a GIT binary patch literal 4261 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 literal 0 HcmV?d00001 diff --git a/docker-all/example/certificates/timemanager.p12 b/docker-all/example/certificates/timemanager.p12 new file mode 100644 index 0000000000000000000000000000000000000000..625b3aa18f4c9f2115087cdc1e434fc679815fe3 GIT binary patch literal 6145 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 Epvq|4AOHXW literal 0 HcmV?d00001 diff --git a/docker-all/example/docker-compose.yml b/docker-all/example/docker-compose.yml index eb073edaa..b91e25cdb 100644 --- a/docker-all/example/docker-compose.yml +++ b/docker-all/example/docker-compose.yml @@ -46,6 +46,8 @@ services: - ./properties/gatekeeper.properties:/opt/arrowhead-core/gatekeeper/application.properties - ./properties/gateway.properties:/opt/arrowhead-core/gateway/application.properties - ./properties/certificateauthority.properties:/opt/arrowhead-core/certificate-authority/application.properties + - ./certificates:/opt/arrowhead-core/certificates + ports: - 8443:8443 # Service Registry - 8445:8445 # Authorization @@ -55,6 +57,10 @@ services: - 8453:8453 # Gateway - 8448:8448 # Certificate Authority + extra_hosts: + - "arrowhead-core:127.0.0.1" + - "serviceregistry.testcloud2.aitia.arrowhead.eu:127.0.0.1" + volumes: mysql: external: true \ No newline at end of file diff --git a/docker-all/example/properties/authorization.properties b/docker-all/example/properties/authorization.properties index 2d4aedd48..9f6b8553c 100644 --- a/docker-all/example/properties/authorization.properties +++ b/docker-all/example/properties/authorization.properties @@ -3,7 +3,7 @@ ############################################ # Database connection -spring.datasource.url=jdbc:mysql://arrowhead_core_mysql:3306/arrowhead?serverTimezone=Europe/Stockholm +spring.datasource.url=jdbc:mysql://arrowhead-core-mysql:3306/arrowhead?serverTimezone=Europe/Stockholm spring.datasource.username=authorization spring.datasource.password=hqZFUkuHxhekio3 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver @@ -30,7 +30,7 @@ core_system_name=AUTHORIZATION log_all_request_and_response=false # Service Registry web-server parameters (to register the Authorization services) -sr_address=127.0.0.1 +sr_address=serviceregistry.testcloud2.aitia.arrowhead.eu sr_port=8443 #Allow querying access to the authorization tables for application systems (true/false - only has effect in secure mode) @@ -47,15 +47,15 @@ eventhandler_is_present=true ### SECURE MODE ### ############################################ -#server.ssl.enabled=true -#server.ssl.key-store-type=PKCS12 -#server.ssl.key-store=classpath:certificates/authorization.p12 -#server.ssl.key-store-password=123456 -#server.ssl.key-alias=authorization -#server.ssl.key-password=123456 -#server.ssl.client-auth=need -#server.ssl.trust-store-type=PKCS12 -#server.ssl.trust-store=classpath:certificates/truststore.p12 -#server.ssl.trust-store-password=123456 - -#disable.hostname.verifier=false +server.ssl.enabled=true +server.ssl.key-store-type=PKCS12 +server.ssl.key-store=classpath:certificates/authorization.p12 +server.ssl.key-store-password=123456 +server.ssl.key-alias=authorization +server.ssl.key-password=123456 +server.ssl.client-auth=need +server.ssl.trust-store-type=PKCS12 +server.ssl.trust-store=classpath:certificates/truststore.p12 +server.ssl.trust-store-password=123456 + +disable.hostname.verifier=false diff --git a/docker-all/example/properties/certificateauthority.properties b/docker-all/example/properties/certificateauthority.properties index 68b1147a8..f06a4734b 100644 --- a/docker-all/example/properties/certificateauthority.properties +++ b/docker-all/example/properties/certificateauthority.properties @@ -32,7 +32,7 @@ core_system_name=CERTIFICATEAUTHORITY log_all_request_and_response=false # Service Registry web-server parameters (to register the Certificate-Authority services) -sr_address=127.0.0.1 +sr_address=serviceregistry.testcloud2.aitia.arrowhead.eu sr_port=8443 ############################################ diff --git a/docker-all/example/properties/eventhandler.properties b/docker-all/example/properties/eventhandler.properties index ede534703..c5e6d2751 100644 --- a/docker-all/example/properties/eventhandler.properties +++ b/docker-all/example/properties/eventhandler.properties @@ -3,7 +3,7 @@ ############################################ # Database connection -spring.datasource.url=jdbc:mysql://arrowhead_core_mysql:3306/arrowhead?serverTimezone=Europe/Stockholm +spring.datasource.url=jdbc:mysql://arrowhead-core-mysql:3306/arrowhead?serverTimezone=Europe/Stockholm spring.datasource.username=event_handler spring.datasource.password=gRLjXbqu9YwYhfK spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver @@ -30,7 +30,7 @@ core_system_name=EVENTHANDLER log_all_request_and_response=false # Service Registry web-server parameters (to register the Event Handler services) -sr_address=127.0.0.1 +sr_address=serviceregistry.testcloud2.aitia.arrowhead.eu sr_port=8443 # Publishing tolerance: clients can publish events with timestamps X number of minutes before or after the current time @@ -47,15 +47,15 @@ check_interval=60 ### SECURE MODE ### ############################################ -#server.ssl.enabled=true -#server.ssl.key-store-type=PKCS12 -#server.ssl.key-store=classpath:certificates/eventhandler.p12 -#server.ssl.key-store-password=123456 -#server.ssl.key-alias=eventhandler -#server.ssl.key-password=123456 -#server.ssl.client-auth=need -#server.ssl.trust-store-type=PKCS12 -#server.ssl.trust-store=classpath:certificates/truststore.p12 -#server.ssl.trust-store-password=123456 - -#disable.hostname.verifier=false +server.ssl.enabled=true +server.ssl.key-store-type=PKCS12 +server.ssl.key-store=classpath:certificates/eventhandler.p12 +server.ssl.key-store-password=123456 +server.ssl.key-alias=eventhandler +server.ssl.key-password=123456 +server.ssl.client-auth=need +server.ssl.trust-store-type=PKCS12 +server.ssl.trust-store=classpath:certificates/truststore.p12 +server.ssl.trust-store-password=123456 + +disable.hostname.verifier=false diff --git a/docker-all/example/properties/gatekeeper.properties b/docker-all/example/properties/gatekeeper.properties index 80ea03342..5cb052051 100644 --- a/docker-all/example/properties/gatekeeper.properties +++ b/docker-all/example/properties/gatekeeper.properties @@ -3,7 +3,7 @@ ############################################ # Database connection -spring.datasource.url=jdbc:mysql://arrowhead_core_mysql:3306/arrowhead?serverTimezone=Europe/Stockholm +spring.datasource.url=jdbc:mysql://arrowhead-core-mysql:3306/arrowhead?serverTimezone=Europe/Stockholm spring.datasource.username=gatekeeper spring.datasource.password=fbJKYzKhU5t8QtT spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver @@ -30,7 +30,7 @@ core_system_name=GATEKEEPER log_all_request_and_response=false # Service Registry web-server parameters (to register the Gatekeeper services) -sr_address=127.0.0.1 +sr_address=serviceregistry.testcloud2.aitia.arrowhead.eu sr_port=8443 # Inter-Cloud communication timeout in milliseconds diff --git a/docker-all/example/properties/gateway.properties b/docker-all/example/properties/gateway.properties index d0e2ec575..f09fb2fb0 100644 --- a/docker-all/example/properties/gateway.properties +++ b/docker-all/example/properties/gateway.properties @@ -3,7 +3,7 @@ ############################################ # Database connection -spring.datasource.url=jdbc:mysql://arrowhead_core_mysql:3306/arrowhead?serverTimezone=Europe/Stockholm +spring.datasource.url=jdbc:mysql://arrowhead-core-mysql:3306/arrowhead?serverTimezone=Europe/Stockholm spring.datasource.username=gateway spring.datasource.password=LfiSM9DpGfDEP5g spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver @@ -30,7 +30,7 @@ core_system_name=GATEWAY log_all_request_and_response=false # Service Registry web-server parameters (to register the Gateway services) -sr_address=127.0.0.1 +sr_address=serviceregistry.testcloud2.aitia.arrowhead.eu sr_port=8443 # Port range for socket openings (to facilitate inter-cloud communication between consumer and provider systems) diff --git a/docker-all/example/properties/orchestrator.properties b/docker-all/example/properties/orchestrator.properties index c04642afd..13902b017 100644 --- a/docker-all/example/properties/orchestrator.properties +++ b/docker-all/example/properties/orchestrator.properties @@ -3,7 +3,7 @@ ############################################ # Database connection -spring.datasource.url=jdbc:mysql://arrowhead_core_mysql:3306/arrowhead?serverTimezone=Europe/Stockholm +spring.datasource.url=jdbc:mysql://arrowhead-core-mysql:3306/arrowhead?serverTimezone=Europe/Stockholm spring.datasource.username=orchestrator spring.datasource.password=KbgD2mTr8DQ4vtc spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver @@ -30,7 +30,7 @@ core_system_name=ORCHESTRATOR log_all_request_and_response=false # Service Registry web-server parameters (to register the Orchestrator services) -sr_address=127.0.0.1 +sr_address=serviceregistry.testcloud2.aitia.arrowhead.eu sr_port=8443 #If true, operational gatekeeper must be present @@ -40,15 +40,15 @@ gatekeeper_is_present=true ### SECURE MODE ### ############################################ -#server.ssl.enabled=true -#server.ssl.key-store-type=PKCS12 -#server.ssl.key-store=classpath:certificates/orchestrator.p12 -#server.ssl.key-store-password=123456 -#server.ssl.key-alias=orchestrator -#server.ssl.key-password=123456 -#server.ssl.client-auth=need -#server.ssl.trust-store-type=PKCS12 -#server.ssl.trust-store=classpath:certificates/truststore.p12 -#server.ssl.trust-store-password=123456 - -#disable.hostname.verifier=false +server.ssl.enabled=true +server.ssl.key-store-type=PKCS12 +server.ssl.key-store=classpath:certificates/orchestrator.p12 +server.ssl.key-store-password=123456 +server.ssl.key-alias=orchestrator +server.ssl.key-password=123456 +server.ssl.client-auth=need +server.ssl.trust-store-type=PKCS12 +server.ssl.trust-store=classpath:certificates/truststore.p12 +server.ssl.trust-store-password=123456 + +disable.hostname.verifier=false diff --git a/docker-all/example/properties/serviceregistry.properties b/docker-all/example/properties/serviceregistry.properties index 2a9e51a20..9cb7f4ecb 100644 --- a/docker-all/example/properties/serviceregistry.properties +++ b/docker-all/example/properties/serviceregistry.properties @@ -3,7 +3,7 @@ ############################################ # Database connection -spring.datasource.url=jdbc:mysql://arrowhead_core_mysql:3306/arrowhead?serverTimezone=Europe/Stockholm +spring.datasource.url=jdbc:mysql://arrowhead-core-mysql:3306/arrowhead?serverTimezone=Europe/Stockholm spring.datasource.username=service_registry spring.datasource.password=ZzNNpxrbZGVvfJ8 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver @@ -53,15 +53,15 @@ use_strict_service_intf_name_verifier=true ### SECURE MODE ### ############################################ -#server.ssl.enabled=true -#server.ssl.key-store-type=PKCS12 -#server.ssl.key-store=classpath:certificates/serviceregistry.p12 -#server.ssl.key-store-password=123456 -#server.ssl.key-alias=serviceregistry -#server.ssl.key-password=123456 -#server.ssl.client-auth=need -#server.ssl.trust-store-type=PKCS12 -#server.ssl.trust-store=classpath:certificates/truststore.p12 -#server.ssl.trust-store-password=123456 +server.ssl.enabled=true +server.ssl.key-store-type=PKCS12 +server.ssl.key-store=classpath:certificates/serviceregistry.p12 +server.ssl.key-store-password=123456 +server.ssl.key-alias=serviceregistry +server.ssl.key-password=123456 +server.ssl.client-auth=need +server.ssl.trust-store-type=PKCS12 +server.ssl.trust-store=classpath:certificates/truststore.p12 +server.ssl.trust-store-password=123456 -#disable.hostname.verifier=false +disable.hostname.verifier=false diff --git a/docker-all/example/pub-sub/event_handler_subscribe_to_events.py b/docker-all/example/pub-sub/event_handler_subscribe_to_events.py new file mode 100644 index 000000000..af3be38eb --- /dev/null +++ b/docker-all/example/pub-sub/event_handler_subscribe_to_events.py @@ -0,0 +1,29 @@ +import requests + +EVENTHANDLER_URL = "http://localhost:8455/eventhandler/subscribe" + +payload = { + "eventType": "room-temperature-event", + "subscriberSystem": { + "systemName": "subscriber-1", + "address": "host.docker.internal", + "port": 8083, + "authenticationInfo": None, + "metadata": {} + }, + "notifyUri": "/room-temperature-event", + "matchMetaData": False, + "filterMetaData": {}, + "sources": [] # 👈 Wildcard: accept all +} + + + +try: + response = requests.post(EVENTHANDLER_URL, json=payload) + if response.ok: + print("[✅] Subscription created successfully with EventHandler.") + else: + print(f"[❌] Subscription failed: {response.status_code} - {response.text}") +except requests.exceptions.RequestException as e: + print(f"[🚨] Could not reach EventHandler: {e}") \ No newline at end of file diff --git a/docker-all/example/pub-sub/register_publisher.py b/docker-all/example/pub-sub/register_publisher.py new file mode 100644 index 000000000..89faeaeb4 --- /dev/null +++ b/docker-all/example/pub-sub/register_publisher.py @@ -0,0 +1,23 @@ +import requests + +REGISTRY_URL = "http://localhost:8443/serviceregistry/register" + +payload = { + "serviceDefinition": "room-temperature-sensor", + "providerSystem": { + "systemName": "room-temp-sensor-1", + "address": "localhost", + "port": 8082 + }, + "serviceUri": "/room-temperature-event", + "secure": "NOT_SECURE", + "interfaces": [ + "HTTP-INSECURE-JSON" + ], + "metadata": { + "unit": "celsius" + } +} + +response = requests.post(REGISTRY_URL, json=payload) +print("[✅] Publisher registration:", response.status_code, response.text) \ No newline at end of file diff --git a/docker-all/example/pub-sub/sensor_publisher.py b/docker-all/example/pub-sub/sensor_publisher.py new file mode 100644 index 000000000..d32c02fee --- /dev/null +++ b/docker-all/example/pub-sub/sensor_publisher.py @@ -0,0 +1,37 @@ +import requests +import json +import time +import random +from datetime import datetime, timezone # Import timezone + +PUBLISH_URL = "http://localhost:8455/eventhandler/publish" + +while True: + temp = round(random.uniform(18.0, 26.0), 2) + sensor_id = "room-temp-sensor-1" + + payload = { + "eventType": "room-temperature-event", + "metaData": { + "unit": "celsius" + }, + "payload": json.dumps({ + "sensor_id": sensor_id, + "temperature": temp + }), + "source": { + "systemName": sensor_id, + "address": "localhost", + "port": 8082 + }, + # Corrected timestamp format + "timeStamp": datetime.now(timezone.utc).isoformat(timespec='milliseconds').replace('+00:00', 'Z') + } + + try: + res = requests.post(PUBLISH_URL, json=payload) + print(f"[📤 SENT] Published {temp}°C | Status: {res.status_code} | Response: {res.text}") + except Exception as e: + print("[🚨] Failed to publish:", e) + + time.sleep(10) \ No newline at end of file diff --git a/docker-all/example/pub-sub/subscriber_registerer.py b/docker-all/example/pub-sub/subscriber_registerer.py new file mode 100644 index 000000000..df7825728 --- /dev/null +++ b/docker-all/example/pub-sub/subscriber_registerer.py @@ -0,0 +1,24 @@ +import requests + +REGISTRY_URL = "http://localhost:8443/serviceregistry/register" + +payload = { + "serviceDefinition": "room-temp-subscriber", + "providerSystem": { + "systemName": "subscriber-1", + "address": "host.docker.internal", + "port": 8083 + }, + "serviceUri": "/room-temperature-event", + "secure": "NOT_SECURE", + "interfaces": [ + "HTTP-INSECURE-JSON" + ], + "metadata": { + "role": "logger", + "event_type": "room-temperature-event" + } +} + +response = requests.post(REGISTRY_URL, json=payload) +print("[✅] Subscriber 1 registration:", response.status_code, response.text) \ No newline at end of file diff --git a/docker-all/example/pub-sub/subscriber_server.py b/docker-all/example/pub-sub/subscriber_server.py new file mode 100644 index 000000000..189869cbf --- /dev/null +++ b/docker-all/example/pub-sub/subscriber_server.py @@ -0,0 +1,40 @@ +from http.server import BaseHTTPRequestHandler, HTTPServer +import json + +class TempRequestHandler(BaseHTTPRequestHandler): + def do_POST(self): + print(f"[🔍] Incoming POST at path: {self.path}") + if self.path != "/room-temperature-event": + self.send_error(404, "Wrong endpoint.") + return + content_length = int(self.headers['Content-Length']) + post_data = self.rfile.read(content_length).decode("utf-8") + try: + # First parse the full event payload + full_payload = json.loads(post_data) + raw_sensor_data = full_payload.get("payload") + + # payload is a JSON string — parse again! + sensor_data = json.loads(raw_sensor_data) + + temperature = sensor_data.get("temperature") + sensor_id = sensor_data.get("sensor_id") + + print(f"[📥 RECEIVED] Temperature: {temperature}°C from sensor: {sensor_id}") + self.send_response(200) + except json.JSONDecodeError: + print("[❌] Invalid JSON received.") + self.send_response(400) + self.end_headers() + + def do_GET(self): + self.send_error(501, "GET method not supported.") + +if __name__ == "__main__": + # --- IMPORTANT CHANGE HERE --- + # Your subscriber server runs on the host, so it should bind to 'localhost' or '0.0.0.0' + # 'host.docker.internal' is for Docker containers to reach the host, not for the host to bind to itself. + server_address = ("localhost", 8083) # Use "0.0.0.0" if "localhost" doesn't work for some reason + httpd = HTTPServer(server_address, TempRequestHandler) + print("[🌐] Subscriber running on http://localhost:8083") + httpd.serve_forever() \ No newline at end of file diff --git a/docker-all/example/pub-sub/unregister_publisher.py b/docker-all/example/pub-sub/unregister_publisher.py new file mode 100644 index 000000000..1798c33c1 --- /dev/null +++ b/docker-all/example/pub-sub/unregister_publisher.py @@ -0,0 +1,23 @@ +import requests + +# Base URL for the unregister endpoint +REGISTRY_URL = "http://localhost:8443/serviceregistry/unregister" + +# Define the parameters as a dictionary, matching the expected query parameter names +params = { + "service_definition": "room-temperature-sensor", + "system_name": "room-temp-sensor-1", + "address": "localhost", + "port": 8082, + "service_uri": "/room-temperature-event" +} + +try: + # Use params argument for DELETE requests to send data as query parameters + response = requests.delete(REGISTRY_URL, params=params) + if response.ok: + print("[✅] Publisher unregistration successful:", response.status_code) + else: + print(f"[❌] Publisher unregistration failed: {response.status_code} - {response.text}") +except requests.exceptions.RequestException as e: + print(f"[🚨] Could not reach Service Registry for unregistration: {e}") \ No newline at end of file diff --git a/docker-all/example/pub-sub/unregister_subscriber.py b/docker-all/example/pub-sub/unregister_subscriber.py new file mode 100644 index 000000000..26d3e1c60 --- /dev/null +++ b/docker-all/example/pub-sub/unregister_subscriber.py @@ -0,0 +1,23 @@ +import requests + +# Base URL for the unregister endpoint +REGISTRY_URL = "http://localhost:8443/serviceregistry/unregister" + +# Define the parameters as a dictionary, matching the expected query parameter names +params = { + "service_definition": "room-temp-subscriber", + "system_name": "subscriber-1", + "address": "host.docker.internal", + "port": 8083, + "service_uri": "/room-temperature-event" +} + +try: + # Use params argument for DELETE requests to send data as query parameters + response = requests.delete(REGISTRY_URL, params=params) + if response.ok: + print("[✅] Subscriber unregistration successful:", response.status_code) + else: + print(f"[❌] Subscriber unregistration failed: {response.status_code} - {response.text}") +except requests.exceptions.RequestException as e: + print(f"[🚨] Could not reach Service Registry for unregistration: {e}") \ No newline at end of file From e7c0834a21bc0bdf3a8cc06712131119be6e23e6 Mon Sep 17 00:00:00 2001 From: Arash Omidi Date: Tue, 27 May 2025 22:15:42 +0200 Subject: [PATCH 3/4] run in insecure mode --- .../example/certificates/authorization.p12 | Bin 6109 -> 5452 bytes .../example/certificates/authorization.pub | 14 ++-- .../certificates/certificateauthority.p12 | Bin 6147 -> 5499 bytes .../certificates/certificateauthority.pub | 9 +++ .../example/certificates/choreographer.p12 | Bin 6109 -> 0 bytes .../example/certificates/configuration.p12 | Bin 6133 -> 0 bytes .../example/certificates/contractproxy.p12 | Bin 0 -> 5452 bytes .../example/certificates/contractproxy.pub | 9 +++ .../example/certificates/dataconsumer.p12 | Bin 0 -> 5450 bytes .../example/certificates/dataconsumer.pub | 9 +++ .../example/certificates/datamanager.p12 | Bin 6121 -> 5448 bytes .../example/certificates/datamanager.pub | 9 +++ .../example/certificates/deviceregistry.p12 | Bin 6111 -> 0 bytes .../example/certificates/eventhandler.p12 | Bin 6107 -> 5450 bytes .../example/certificates/eventhandler.pub | 9 +++ .../example/certificates/gatekeeper.p12 | Bin 6095 -> 5446 bytes .../example/certificates/gatekeeper.pub | 14 ++-- docker-all/example/certificates/gateway.p12 | Bin 6081 -> 5424 bytes docker-all/example/certificates/gateway.pub | 9 +++ .../hawkbitconfigurationmanager.p12 | Bin 6209 -> 0 bytes .../certificates/local.arrowhead.eu.crt | 19 +++++ .../certificates/local.arrowhead.eu.p12 | Bin 0 -> 4368 bytes docker-all/example/certificates/master.crt | 18 ----- docker-all/example/certificates/master.p12 | Bin 2459 -> 0 bytes .../certificates/onboardingcontroller.p12 | Bin 6033 -> 0 bytes .../example/certificates/orchestrator.p12 | Bin 6107 -> 5434 bytes .../example/certificates/orchestrator.pub | 9 +++ .../certificates/plantdescriptionengine.p12 | Bin 4391 -> 5519 bytes .../certificates/plantdescriptionengine.pub | 9 +++ .../example/certificates/qosmonitor.p12 | Bin 6119 -> 0 bytes .../example/certificates/serviceregistry.p12 | Bin 6121 -> 5472 bytes .../example/certificates/serviceregistry.pub | 9 +++ docker-all/example/certificates/sysop.ca | 37 ++++++++++ docker-all/example/certificates/sysop.crt | 35 +++++---- docker-all/example/certificates/sysop.key | 32 +++++++++ docker-all/example/certificates/sysop.p12 | Bin 6069 -> 5372 bytes docker-all/example/certificates/sysop.pub | 9 +++ .../example/certificates/systemregistry.p12 | Bin 6111 -> 0 bytes .../example/certificates/testcloud1.crt | 19 ----- .../example/certificates/testcloud1.p12 | Bin 4261 -> 0 bytes .../example/certificates/timemanager.p12 | Bin 6145 -> 0 bytes .../example/certificates/truststore.p12 | Bin 2074 -> 2134 bytes docker-all/example/docker-compose.yml | 17 ++--- .../properties/authorization.properties | 28 ++++---- .../certificateauthority.properties | 34 ++++----- .../properties/eventhandler.properties | 28 ++++---- .../example/properties/gatekeeper.properties | 28 ++++---- .../example/properties/gateway.properties | 28 ++++---- .../properties/orchestrator.properties | 28 ++++---- .../properties/serviceregistry.properties | 24 +++---- .../event_handler_subscribe_to_events.py | 29 -------- .../example/pub-sub/register_publisher.py | 23 ------ .../example/pub-sub/sensor_publisher.py | 37 ---------- .../example/pub-sub/subscriber_registerer.py | 24 ------- .../example/pub-sub/subscriber_server.py | 40 ----------- .../example/pub-sub/unregister_publisher.py | 23 ------ .../example/pub-sub/unregister_subscriber.py | 23 ------ .../sql/privileges/gams_privileges.sql | 68 ++++++++++++++++++ docker-all/example/tennis_demo/publisher.py | 23 ++++++ .../example/tennis_demo/register_publisher.py | 19 +++++ .../tennis_demo/register_subscriber.py | 19 +++++ .../example/tennis_demo/subscribe_event.py | 35 +++++++++ docker-all/example/tennis_demo/subscriber.py | 19 +++++ scripts/ .pub | 0 scripts/certificate_generation/lib_certs.sh | 2 +- scripts/certificate_generation/mk_certs.sh | 32 ++++++--- .../crypto/authorization.p12 | Bin 0 -> 5452 bytes .../crypto/authorization.pub | 9 +++ .../crypto/certificateauthority.p12 | Bin 0 -> 5499 bytes .../crypto/certificateauthority.pub | 9 +++ .../crypto/contractproxy.p12 | Bin 0 -> 5452 bytes .../crypto/contractproxy.pub | 9 +++ .../crypto/dataconsumer.p12 | Bin 0 -> 5450 bytes .../crypto/dataconsumer.pub | 9 +++ .../crypto/datamanager.p12 | Bin 0 -> 5448 bytes .../crypto/datamanager.pub | 9 +++ .../crypto/eventhandler.p12 | Bin 0 -> 5450 bytes .../crypto/eventhandler.pub | 9 +++ .../cloud-data-consumer/crypto/gatekeeper.p12 | Bin 0 -> 5446 bytes .../cloud-data-consumer/crypto/gatekeeper.pub | 9 +++ .../cloud-data-consumer/crypto/gateway.p12 | Bin 0 -> 5424 bytes .../cloud-data-consumer/crypto/gateway.pub | 9 +++ .../crypto/local.arrowhead.eu.crt | 19 +++++ .../crypto/local.arrowhead.eu.p12 | Bin 0 -> 4368 bytes .../crypto/orchestrator.p12 | Bin 0 -> 5434 bytes .../crypto/orchestrator.pub | 9 +++ .../crypto/plantdescriptionengine.p12 | Bin 0 -> 5519 bytes .../crypto/plantdescriptionengine.pub | 9 +++ .../crypto/serviceregistry.p12 | Bin 0 -> 5472 bytes .../crypto/serviceregistry.pub | 9 +++ scripts/cloud-data-consumer/crypto/sysop.ca | 37 ++++++++++ scripts/cloud-data-consumer/crypto/sysop.crt | 19 +++++ scripts/cloud-data-consumer/crypto/sysop.key | 32 +++++++++ scripts/cloud-data-consumer/crypto/sysop.p12 | Bin 0 -> 5372 bytes scripts/cloud-data-consumer/crypto/sysop.pub | 9 +++ .../cloud-data-consumer/crypto/truststore.p12 | Bin 0 -> 2134 bytes .../crypto/authorization.p12 | Bin 0 -> 5649 bytes .../crypto/authorization.pub | 9 +++ .../crypto/conet-demo-producer.crt | 19 +++++ .../crypto/conet-demo-producer.p12 | Bin 0 -> 4452 bytes .../crypto/contractproxy.p12 | Bin 0 -> 5649 bytes .../crypto/contractproxy.pub | 9 +++ .../crypto/dataconsumer.p12 | Bin 0 -> 5647 bytes .../crypto/dataconsumer.pub | 9 +++ .../crypto/datamanager.p12 | Bin 0 -> 5645 bytes .../crypto/datamanager.pub | 9 +++ .../crypto/eventhandler.p12 | Bin 0 -> 5647 bytes .../crypto/eventhandler.pub | 9 +++ .../cloud-data-producer/crypto/gatekeeper.p12 | Bin 0 -> 5627 bytes .../cloud-data-producer/crypto/gatekeeper.pub | 9 +++ .../cloud-data-producer/crypto/gateway.p12 | Bin 0 -> 5605 bytes .../cloud-data-producer/crypto/gateway.pub | 9 +++ .../crypto/orchestrator.p12 | Bin 0 -> 5647 bytes .../crypto/orchestrator.pub | 9 +++ .../crypto/plantdescriptionengine.p12 | Bin 0 -> 5700 bytes .../crypto/plantdescriptionengine.pub | 9 +++ .../crypto/serviceregistry.p12 | Bin 0 -> 5653 bytes .../crypto/serviceregistry.pub | 9 +++ scripts/cloud-data-producer/crypto/sysop.ca | 37 ++++++++++ scripts/cloud-data-producer/crypto/sysop.crt | 20 ++++++ scripts/cloud-data-producer/crypto/sysop.key | 32 +++++++++ scripts/cloud-data-producer/crypto/sysop.p12 | Bin 0 -> 5585 bytes scripts/cloud-data-producer/crypto/sysop.pub | 9 +++ .../cloud-data-producer/crypto/truststore.p12 | Bin 0 -> 2182 bytes scripts/cloud-relay/crypto/alpha.p12 | Bin 0 -> 5563 bytes scripts/cloud-relay/crypto/alpha.pub | 9 +++ .../cloud-relay/crypto/conet-demo-relay.crt | 19 +++++ .../cloud-relay/crypto/conet-demo-relay.p12 | Bin 0 -> 4446 bytes scripts/cloud-relay/crypto/truststore.p12 | Bin 0 -> 1126 bytes scripts/cloud-root/crypto/root.crt | 18 +++++ scripts/cloud-root/crypto/root.p12 | Bin 0 -> 2612 bytes 131 files changed, 990 insertions(+), 387 deletions(-) create mode 100644 docker-all/example/certificates/certificateauthority.pub delete mode 100644 docker-all/example/certificates/choreographer.p12 delete mode 100644 docker-all/example/certificates/configuration.p12 create mode 100644 docker-all/example/certificates/contractproxy.p12 create mode 100644 docker-all/example/certificates/contractproxy.pub create mode 100644 docker-all/example/certificates/dataconsumer.p12 create mode 100644 docker-all/example/certificates/dataconsumer.pub create mode 100644 docker-all/example/certificates/datamanager.pub delete mode 100644 docker-all/example/certificates/deviceregistry.p12 create mode 100644 docker-all/example/certificates/eventhandler.pub create mode 100644 docker-all/example/certificates/gateway.pub delete mode 100644 docker-all/example/certificates/hawkbitconfigurationmanager.p12 create mode 100644 docker-all/example/certificates/local.arrowhead.eu.crt create mode 100644 docker-all/example/certificates/local.arrowhead.eu.p12 delete mode 100644 docker-all/example/certificates/master.crt delete mode 100644 docker-all/example/certificates/master.p12 delete mode 100644 docker-all/example/certificates/onboardingcontroller.p12 create mode 100644 docker-all/example/certificates/orchestrator.pub create mode 100644 docker-all/example/certificates/plantdescriptionengine.pub delete mode 100644 docker-all/example/certificates/qosmonitor.p12 create mode 100644 docker-all/example/certificates/serviceregistry.pub create mode 100644 docker-all/example/certificates/sysop.ca create mode 100644 docker-all/example/certificates/sysop.key create mode 100644 docker-all/example/certificates/sysop.pub delete mode 100644 docker-all/example/certificates/systemregistry.p12 delete mode 100644 docker-all/example/certificates/testcloud1.crt delete mode 100644 docker-all/example/certificates/testcloud1.p12 delete mode 100644 docker-all/example/certificates/timemanager.p12 delete mode 100644 docker-all/example/pub-sub/event_handler_subscribe_to_events.py delete mode 100644 docker-all/example/pub-sub/register_publisher.py delete mode 100644 docker-all/example/pub-sub/sensor_publisher.py delete mode 100644 docker-all/example/pub-sub/subscriber_registerer.py delete mode 100644 docker-all/example/pub-sub/subscriber_server.py delete mode 100644 docker-all/example/pub-sub/unregister_publisher.py delete mode 100644 docker-all/example/pub-sub/unregister_subscriber.py create mode 100644 docker-all/example/sql/privileges/gams_privileges.sql create mode 100644 docker-all/example/tennis_demo/publisher.py create mode 100644 docker-all/example/tennis_demo/register_publisher.py create mode 100644 docker-all/example/tennis_demo/register_subscriber.py create mode 100644 docker-all/example/tennis_demo/subscribe_event.py create mode 100644 docker-all/example/tennis_demo/subscriber.py create mode 100644 scripts/ .pub create mode 100644 scripts/cloud-data-consumer/crypto/authorization.p12 create mode 100644 scripts/cloud-data-consumer/crypto/authorization.pub create mode 100644 scripts/cloud-data-consumer/crypto/certificateauthority.p12 create mode 100644 scripts/cloud-data-consumer/crypto/certificateauthority.pub create mode 100644 scripts/cloud-data-consumer/crypto/contractproxy.p12 create mode 100644 scripts/cloud-data-consumer/crypto/contractproxy.pub create mode 100644 scripts/cloud-data-consumer/crypto/dataconsumer.p12 create mode 100644 scripts/cloud-data-consumer/crypto/dataconsumer.pub create mode 100644 scripts/cloud-data-consumer/crypto/datamanager.p12 create mode 100644 scripts/cloud-data-consumer/crypto/datamanager.pub create mode 100644 scripts/cloud-data-consumer/crypto/eventhandler.p12 create mode 100644 scripts/cloud-data-consumer/crypto/eventhandler.pub create mode 100644 scripts/cloud-data-consumer/crypto/gatekeeper.p12 create mode 100644 scripts/cloud-data-consumer/crypto/gatekeeper.pub create mode 100644 scripts/cloud-data-consumer/crypto/gateway.p12 create mode 100644 scripts/cloud-data-consumer/crypto/gateway.pub create mode 100644 scripts/cloud-data-consumer/crypto/local.arrowhead.eu.crt create mode 100644 scripts/cloud-data-consumer/crypto/local.arrowhead.eu.p12 create mode 100644 scripts/cloud-data-consumer/crypto/orchestrator.p12 create mode 100644 scripts/cloud-data-consumer/crypto/orchestrator.pub create mode 100644 scripts/cloud-data-consumer/crypto/plantdescriptionengine.p12 create mode 100644 scripts/cloud-data-consumer/crypto/plantdescriptionengine.pub create mode 100644 scripts/cloud-data-consumer/crypto/serviceregistry.p12 create mode 100644 scripts/cloud-data-consumer/crypto/serviceregistry.pub create mode 100644 scripts/cloud-data-consumer/crypto/sysop.ca create mode 100644 scripts/cloud-data-consumer/crypto/sysop.crt create mode 100644 scripts/cloud-data-consumer/crypto/sysop.key create mode 100644 scripts/cloud-data-consumer/crypto/sysop.p12 create mode 100644 scripts/cloud-data-consumer/crypto/sysop.pub create mode 100644 scripts/cloud-data-consumer/crypto/truststore.p12 create mode 100644 scripts/cloud-data-producer/crypto/authorization.p12 create mode 100644 scripts/cloud-data-producer/crypto/authorization.pub create mode 100644 scripts/cloud-data-producer/crypto/conet-demo-producer.crt create mode 100644 scripts/cloud-data-producer/crypto/conet-demo-producer.p12 create mode 100644 scripts/cloud-data-producer/crypto/contractproxy.p12 create mode 100644 scripts/cloud-data-producer/crypto/contractproxy.pub create mode 100644 scripts/cloud-data-producer/crypto/dataconsumer.p12 create mode 100644 scripts/cloud-data-producer/crypto/dataconsumer.pub create mode 100644 scripts/cloud-data-producer/crypto/datamanager.p12 create mode 100644 scripts/cloud-data-producer/crypto/datamanager.pub create mode 100644 scripts/cloud-data-producer/crypto/eventhandler.p12 create mode 100644 scripts/cloud-data-producer/crypto/eventhandler.pub create mode 100644 scripts/cloud-data-producer/crypto/gatekeeper.p12 create mode 100644 scripts/cloud-data-producer/crypto/gatekeeper.pub create mode 100644 scripts/cloud-data-producer/crypto/gateway.p12 create mode 100644 scripts/cloud-data-producer/crypto/gateway.pub create mode 100644 scripts/cloud-data-producer/crypto/orchestrator.p12 create mode 100644 scripts/cloud-data-producer/crypto/orchestrator.pub create mode 100644 scripts/cloud-data-producer/crypto/plantdescriptionengine.p12 create mode 100644 scripts/cloud-data-producer/crypto/plantdescriptionengine.pub create mode 100644 scripts/cloud-data-producer/crypto/serviceregistry.p12 create mode 100644 scripts/cloud-data-producer/crypto/serviceregistry.pub create mode 100644 scripts/cloud-data-producer/crypto/sysop.ca create mode 100644 scripts/cloud-data-producer/crypto/sysop.crt create mode 100644 scripts/cloud-data-producer/crypto/sysop.key create mode 100644 scripts/cloud-data-producer/crypto/sysop.p12 create mode 100644 scripts/cloud-data-producer/crypto/sysop.pub create mode 100644 scripts/cloud-data-producer/crypto/truststore.p12 create mode 100644 scripts/cloud-relay/crypto/alpha.p12 create mode 100644 scripts/cloud-relay/crypto/alpha.pub create mode 100644 scripts/cloud-relay/crypto/conet-demo-relay.crt create mode 100644 scripts/cloud-relay/crypto/conet-demo-relay.p12 create mode 100644 scripts/cloud-relay/crypto/truststore.p12 create mode 100644 scripts/cloud-root/crypto/root.crt create mode 100644 scripts/cloud-root/crypto/root.p12 diff --git a/docker-all/example/certificates/authorization.p12 b/docker-all/example/certificates/authorization.p12 index 4ad8d0879cb4e5d3bc5d66a1abe399d367c26fa7..d052d26aa6ba98d7d9498eca52b6d283a780d62a 100644 GIT binary patch literal 5452 zcma)=WmFX0yY`1+2Bd57p<6(SnV~}+Qd+tsrMp3-TS`h|q$H&TkshRB=%KqoN*V!a zIK1mU>-n$q>6{OHUHkgo@$p(~Z&(PWJP->T76SQ$gZC^#KH{7R3l}RV1o8_M0$F~* z^RN)`+W#nl$3Y?B;RihMaC&eE{(FiL9}Ach0+x7y&tX>oPJoGE`Y@6ISV9;V2(mQ1 zGawxho<6lf+@g~ge6i&lRSg7kkOHxoV1zi2{{KcG9vA?l$H6m=kjJvb24Ot|kyg!$ zV^WJJ3rTs&aT?X+wm>1E5$IAe|H41rt4vm;(?{Lr7aX6l#TorwiST)D1VT%A?VN5O z>9&z`me~oqk!m%fpHfIbDcJ*Kl1eLk&8-F+^xObatMfM)0r`|XtbLpw{BeB2&ZTvC^0R3K`+lDOAHH66_ilMgzqvarZMhFJ$uY|9Ig8pU^OOlQkuZbxvAqYAZDC?-Nl(cOZo%$DN zxUt%4UV%&%baoj?tz0hIjA*YqE|ulL3ZS(gae@q=N6!V$m9&6Udc7|$$1`>gHL^xA zUp%sn>~8i9PG^7F9BTDXiu`gwnrA{sFRzy<}FIc#9P6!x@%Ho@MB`_!~5CE^P<%X%&=vtQip<6 zdyoo$#V=c?{vIi)?r7qi47|L3Vslg^%R5!5ASrT zG@k7S9TKD}@rIlR8+g72Yo|)hP`mYC=MwGMrC@~_nSJmfoOh~zHz=%NHEJF`V(NS> z4(GSkLbJI~mM{o|p^7zcD`d?qZhO5r`XRkgr$nDgjfDWhtPKqag@o(CeCSMz zz@H$!5+QDquf!#H-ip>3)v7U?gZMSVQv;g6T^cGfu7sj(Kp+iW3ExjOs{^J28V-esTt2*a>9Igj3z~a zlSCo5%$6J2WP9L{}_zcu#kti5W1*0d~nbP~XPEj3>i1&`WBxQ5029{WvFHbwDr?ol!!^!8d-4h!*L{ zxql=f?HeTncYuL=!{An2O6bW%uUH)F_ho=9HrZ|b5-Z`|j;eZJu@Zo-W2?CvFnr(Y<_Xjz>`{9T7>4%T_&bBP^- zgS_1YTVI~JZfrRxIyO{@e>pPCCWi{VOm{{>O>_-$LLr(UoPefdMeL^hG;AjkjVbE2 zoDv{mh5-ATqOVMNblg8j(~j|LfRoxo06*aqiJ}H-KaqD``%|g%)Q}dXZ=L~y#xs_1 z518t|aft_kOEE|Q-U2)U9snDFGr$dC3-EdH9uMjaa02iG93IsCfjB(e-#*mc9{jt9 zUdsn(@xUwro-pSBETn`(K;&Asj+RVtVF3|-Aps!)7#uDN3n4!Kw+R;~Cxm$I0WATs z01q<#p9jnE*;CM?a%iUKsAe?s6dt#(SLPRn)rgM(C{C zt-ddpZ8JfQ*_fjlH70mgd}h?zYlpsFZoOVc92d(52X#>8b1{tUj6|eAkEOe!^F4YT zNuo9c|A$?#S?;^EXsHX;qN7Ltb>aIszFfk1R-h+sboGK#`@Y%*B64$l>M|3V-*@D! zW871z_4sWRBm5)l4J7)w7nmO4;_hXG5@AbFc0=MTolDSQJrBNoD$}&;& zhR}26E%l-t0fz~dM=@lYVh~meCQ6>)+C#+ZhE9hDul!W^TclCD2uYVYnXI^rPPdq$Vemy%Cu_d^mRdR&VBQ)CzdS~ zf#c~E>QMmc-xPOyCyf(4{Zzji$vptmD+!6cy7P=ybF#YwQS#DE7TXM+iKe}MG9g86 z<=NSoITU*GMJX%g?56HdYRp(pvP5VBQ%0S4_xMyeYFrI572916v=v+W>^DW%+r%Yq zv^O-}pv-iAD)bXG2S#pAzFq0cztSuHnOS4Jb+52Q#~JB65ND!1^UPB$Ogoq+_$cVE z$b!zUHAEM1KM`wM3n)<=bKJiE!h4Y{(J8L?%2Z;%nb?8hj+jG3!L4goB+>O)IOdP2 z_H0$?reoA@UCHX=kEM^J9_Y7T#P&ly%804B3T!D}WbVI$upvO6!8Ts?Ey!Aiy;F0#Kpb1n*oD%j=mkvRJI27_>YY(Vzj{v z@6z{VVo&fSy-2^BDLCqse+VRg_6s}ROWSSiDKNz3k)BZfh<%7P(X=HtRasA@6|ISa zbnEW+{8t8v4&DmCuj!|0j7}I;lfNDokp=h-ERXC1iO&{)smclWOV4RP@f3=LfoKIs z=$~FkM&&oYiIbds)h?FdCS)y==}2MWcf?mMnmjvS;*2Dh3JVXb?kXW-QdxdSRC4)r zrg%I2j@Ab8Az*v@rVEZ8Nik5f_>;5JT9>xMWN%4xxt`AQi$|T8rq1(&0l}XegRMe} z(m+H#y~wO}Vkt+?g5ji+CqznfI?y}*G(ll)ektEU@6A=^*8sO3 zPS~5rI(@lR2>tUYf>OcK*RRb@cHZgru5I@5fm-)b8fG%0nisysZ4@h3d9IudgWNP5 z#m^K4UpEuDJZ9x0NHV=_s2l%6w%KxY8a3Zqi9dFhGRu}U0cxRLwL5;HST^-4LuaLn zL&znAGNdZQ0s1PNwp3J?=fe40X)SJ(X&X7xXhzq6!8SWsP|%$=04rCWMf<+J5taTT zsKjLH5dF=cR%UtHUCX4zMd_>Gh>YD>oP_|zwAtS&O@-li#->kkw_{#l4}r`6IgwU<_V)*4voik5(6`Y2ujoij99p;PrNOX~2}3`^`s`TI z=}CA%%aw?g3JsnctSB&7XC1U0OZD43Od0H+2PZ#gUV7XqA||cZ$Q72TaXec~Ix-kp z8Qp$JS2Nad)iVWZ7Co518)G9$&!ApPOHPK~>!9lRG4WDBAP!k@r%-ZY5^O8F#(0i2oQTyzQC?9PX!-KdQ50?w-~CI*wy~ z`nVV=p4!U)B(V}rHaC_PU5yLR1=yplhhKq&WM@aRChR&YrcJs(?$zXg(vQyyS+3Jp zO#O9gcyTK(m5dRih^+6p)E8k$!e^)v#eJa<{&D+i&8?>ExN1&%{G-AZoR8`s9}>O+ zm6pNp^*9N#vx0_yPwSYNxNvQ>k>a#l^agqRLaVTO+Nop)TRyo&NAr)Y>Tu-2wXePJ_te{Hhcy)K zYPw1l6)w1si61ZOb(*El)f17it_;C>-~_qSUa$Cj%5KGi>}louF#R0DI0~bpPxRdz z9CSN$&Sg{0$qvaP*0%oC1|JKkyd$Mbjbqs4l*4)qt5mP4@8VeA{B6u``2*y%<$f$8 zFM!vM2zmc9r}-su+UTy5Z(l^|pHnKHcc{`2)F1}XCf;;qz6%kHcMpHG(T7XMOb->r zR^LgrZ_+3$o@$y2t@zEU)6&M$=lA$lXjwEXKs&z?6|?B)sIya8c53vNVe%XG#-P8) zhEDFwdiD`6=K7($4su6VQ|FScxYRRdv@1Wy;%?ZP^8$!0N9KYQUjNBmeF`NvXh(nI#3ZgH7AhK#GXTScF1-GHDiB{GsV-BA8X*=_YosU2TDmzo#U4Y zy@2d|Q)vAp1v#G@HQ>>dIK;tFD`M1;G_AyK@v%pmcF}R{5wDu!Sbs4FJCtWRhH4G( z-1*D!K}&bU%`NOO!3B@B8<~>yXV+!|ikuGp>@nm#{56r!N5|voRGg(G*Vz(vebeu4 zwB8~Z=u#qvDOT2p@P&^eJuTY333z>vMvc2B8>dEjKaxqOPKv-w`9E3t9-F3Oa+VXO z{b!9iH7~cW!g^WPD>T1Ut%6@QVYYU3lX7w+qqaXR?Ur7y+~4w9@8nZ`BKd%~6S;2` zwKy>r;dVSy{yhYcd9^q=%QhOqIz{z0egYfPaKX4~GBm!@_RK+)^+r7Xv&Xz=PhwQ; z3tqFIUsx7hs)o_P>fMFG{v^; zw=+Fi-KbH=Th^8!3y~78ZemgedoTY~@9jCO7dt=lu0u7RQ9(CNdzi|q^a*~`VcdI# z(p$qiv+azO1ZsX}6eumZCW*@S3~cjG+diHx*bL5Kw?;}((rb_u5PUKuCrG%Ch-+yM z^XKVsI*84r@Sb!sn_;^@3+lDHz0aoOc3hU}J5Zu0S>S2ZQl3JgNT6i?LU4JWPh7+H z*EY~lsQMVREfA-TWlcptfitC(1CszaFE-7~|7uAh%5r-=m|x8IjDU=bMcv)3M;x!)@M!wt zTl0hNIxr?G`i}cEq!7xU>F|{w(?^=(-#)0NxCu=-UY@c=VR^)8(d6t5?H4farJECn z>A$IFS3GzV`}2LOHjK2__Xl|?a^sxSsOoTz=@unh_EMwhBORK$t0Ad}qor@ezV|tcrBC>z0rq+mxK0=!f(Vqudw&!gi->+NyD&Ys;O-Ig5_sT{c3(NUO@Vw#?_EhweUy9pJoKUI~1f zIki#ayt>s-+~mou%N;lDGfg-LyzH<{!c3ZNZ&lNDK!eNbga?w$?~4%8g&Mbn)&#@MJh3kVdG8wt zz!Xm`jtf6`I@eNV*Tc5(18Z$|f}dVuKiA>YylA6ibLUvfcWegB?>d9%!s7Lcx~|aL zl*ym14^2v*4S!~@!Tx<``1&6_kE-?jNkF>GAT8Lt+uoq#4?NKD32)z-4on3GhY|hz z!wAFz13*l``@l^1+{`^bNnJOVK`)oemE)sSoXsY?jVcWXdkH@f1U;0;UN!Lo8t)o8p zJ?#9m|H|XH3l1h-Kt@6V2a_hDzj_<45PpM$gn^VFOd5h3Od9ad_5}x{dH%l=+85Md zG>d<>>Ax^U$NujrAQlpGelY3-I2iQ?%!-cnKlZ=nl&Hk+*A!MHtwMtSHdTm{H|1(s zP7}AtD1d%-)L_(K^&*$Yuv4k0ecL(K22gUsK90UI)rgeDrlMv0|-1u2G8UYHX^rUEA6EK4h-etT%;m zeu#EYv|br|#rf^CKyEDMPVafNoR6*750cTML@YXm#Zuut6t>YBwfnxvHi@atP{uC_ zHl>4ge}k?}Mzb5;w`*%Vq2Ho&)$AM4)?CZeeo-yMHPLT%+We&MI%KYS%r%KEXeorM zIg(IH@N^~CGSUR)PykymAAiY66k6%@tfP;K_#tinE?F^=W4 zXq?aV@%c0OGPg1lo*>}XMz3JZ+wGnG{LTbq(Ve0(R)yoG4Hp@*Uq6{a1(W)TG5N7h z3{r!w+=-qh?Rvvu6WXzp>10(u@dnTzC=VeTgKJIHFbg?`DeC7hrirvA4AWj(I1w+N zx<}n^ue=Vg&ZxzdMt*r&Pcj;~Tib-1E3@N7-hO)-R|r8nf}T&$N_FWIz;fWnAt(OQMyHkp<$-CvZ>o6*Wk}u zpbyfbL;{-Z(7QpZ60((i+bbPFIq6^-pZqQqpv0 zz{dvO@y?wa`-e~ouhGIF)b~8@{TDh}MP;JnGX;%>So5}UY^mYfn8ztm!#7n$bW*V= z&zfWbi)~Vm?cruBR8BegR>xP;*r4>Ma!6o*wqokbIgyH_vMb$@mzqw|Cw5V$+Lo+V zyIo_dhNtp+Ro2uxwtQx1v#B~|s`_h--gSrg7f%co&LajQ$wv5Qx2gB1&nBC|#lHy1 zh7nL^j#B@&IFQ1cmSuj>DEPPJok+%2g_uGW#F67YbwqBj zUkjQXfbE#;gwd5d`5v{JbM{0HPv-rdp}LA;{7C8kn?lpc{jff~M)6Ff)Hkkr`O&8r zFo+`3XeFYQA4gDkoI;7X&Q=E`gjr2 zX54U0y;)IVw04r;)D(o((~6_RcRqB?R|t4R}$t+>ow<=vI*Ynh@)L zdmnWsm!nofThZj*%S_FtwirqhChdnN0Z$MH>^Y^8;rg@dQ=UDO8D)vjVP!jI*16US zLlq7rx73uB)}ePUIOTh%x>H5^*62fA*!;n0#K~v%t@)3`3jyndW|i~ioT0M1B27?7 zDpp)oZo4X3ppb^|AEeT_blbh;d7ydO09Slm*39qpZDVW^mm$qfuSS%RE$0rt5;^4~ zlJB?}DJR6C$vTX8#C3C+x3Si#KQ`!wa2r+;OD*KlMS?x^)i%#{>5D2ts-Q7u>u6U{ z?*IvUgJW%XmlzhDllB=rWo>hBo1jR14k3>0v2N0eohIqle9dL(n9KJKIirJq5I7V& zrN5y&l+owkDKuBvL%lN1R+Ddpxl)j$bV}p#G|`%GRdaF9A=48>*wZ8g%S%Odu%T%C zJyKpsfgg)J$N1nM>St&EhCSyuL>%#v!fu)G*e`8-&CW_{KK19L%@!2t#^qEog)&?@ zP0%I&@5;QR-OpQIX^9pocaPX#xZ2NEho8teLml6J*Q*(JGHvv$FlUhRJuUT9yo&?3 zTax;S)hh|`$YlgG<+4S1Fv@J0Tad4#Uxrp>UUZDtm;{ARcYs?8g1%d@^7}PpTBD&b zC}`zAIt=?~0eW*Jc?Snchb%dhf2_Y) zI8>t0P8&@WNs(|XIe=2X#hR<0cnle!ikoKnV1AeQ&HVeQQo;{j8LY&I6HFY!DA{(2 z?9k>OkX@I&#;8n%7I@4V|6RUcf7gb*rIGZ)v8Th{%x|abW;{TgT_w9$CnuiaT>WkD zC{Yzs^fPB|9MatGj!XZ*7XJ`T_E9i~FR#{}B|30W(9;sZZZj`!)Kw;;NHxcBDmpqG zfKqTEWrW@MYOkcZWU}`FhQ(>h*8~yQLp%rQ$@S13qD>96q78+vtz_@!+wEJ#fT=I_L;5PbTqbWzOLKk()hv)&ImSwYuJq zHc>qsErN8uAde5(9ZtxyqiwH-sD9tN={0OO(iO`v3<8Oie8LSSB8g*z*CT5R@N!7O z6b%&;O3zSKXW`F{3sW_xaq5xM#T5-ZNFF`kFI#y-beDhRs9e!1b&^U8Zv{wgGD;h6 zLtsB+0fm_RInD*D_{c1xcm!90=c02r5ti`+HUxn^B0tS&ADJ%XIT8FWA6*U%A)%>s z=UXOEY4hBml0SgJQOORHi!A!3V_s}kUbEqk!ay-6Rj*tbS9!I{P^Vh~PU5=nf@yDj zkX2aC&uhjWlI2N|Pkj6BxSlz!=Qv0#mVWcW)ylu58+{+-x+JSy z{pL^ZiwQ~zpjLyV2kRFm6MDxC7d6&WX4r=}`F&8YEDdsv>D{K~7rF3MNmpe1U=6Y*vnxl(3-bsSAZafxG${f;8v z#guhyZk#p&`+71!8T!RU!Sh$xP&sVxOXWe3B-(2TEcg{#lUr>|2W^v9=PEm65ERW( z&|Y<@N#m`md+lm*^cx0e+`Z*O5q80xXy*qzLS1@HG9AaTU12Wv7BnSh=WO(r{-p_h z?W@!gtOu2Dh8^ngz3hiNl)xZTk^7|t-@=v4>g2BuliBUaQeST92(gx92emEKBV_c%1kmmvIv`$RhN{rSsT+1=ziNQ+# zB$cy;P?$nJ&=r-=5q1@B>7_;K~_o@4A;#Qq_1JbmCd4iXzH zx$g}pyLsqRAno9MeuqW;rT3n980JSsYh|QM+VLnAd@>Xe@xvgGO-q#>Wvl$&K-*9I z7(xSqd~Bcm9TQX8>@rR@Sgxdv6G0*}fiM)soqUbf*pRH8+bREC%>-ekEDv=-v1Vdq zRkC_S^Vboma5AjB8tTUFFT&<;h#Yp?E+^Dtk6%N0553+wr885(Yj*jF{=JK4u_E-L zN?rC5W&2@lpzismO`s;RFcPRp>%=BfvQBt!@1mH}2orP3;AwQbfkLiHssWtyTHcm@37ZkpDXu}^3qL-VK5mnX)z?UzJrGO4K10{8KRPIz;Y zfd&cM+dOR}3h)t88P8z1sr_BN2F>yaAt3r!P2(Lo%|qW0>9%BvL|7Yt34GNvXJt0) zS}Qk6@wSs`+^fG>C>#lfqOrGMADdo|$;F>d+wvvub9G1*4WA0`b`^xcUJ6LtqUZ@e zZ60pODD+J-M8*~cL1ypy#mgnj9jfgo!d-|;@p#h=d5^qxP;XEl6ijQu3h5fM@8f}A z@&9Ix1(nBzT<~QyN7&n#n=XTe`Y>s3dg3|{@Z5MW4sPs-oMqM~KAvo2aUElPEQ z{9r#-?TxpHhPH#KVf9XZVJB8;=8>9LCbfjR*A3>9H z;U9|6ayQI@WqgNyh^e%m^$AFO{5y0slll%$Az_ovvsmBtz`hWp&kS-oJ0X$O9)cN( zUM1L0%2-TuEPO$3^L=|n_I{JCE-U;^Z{BJC7^%%L;`S8~6-o6#TvcXJ0U;%Jy}{#g z_`sy_I4Jt167fSFx|q&xE+bmuTgUgX=AHLR$g-$?SsfOx+fflub!uWB^M6=`MkNb;QQ>>D;*;swdqK^gU= z@X^J=Ym++gBtYh*-H9_QqF}$Bu&Nx_F)I8BX5M(`m}3j5!)# z#|XCfw98|p%G`7>Y3W^@%Ri*<&yVtKfIC}NB?jrmuRS|S=uuJ?We)h|?9_~kS^qfJx${_s3(lQy{zST@US(u#%Vf~1cLkJzyvlIba=K$hBQ5ut+ zislyAU~#nam!Ge+WF2L`@t?PX$#-99n}*j7gnGT$*0VMUb5&&q39^WJnc_qR{LQA! z)ydfiopLs(y`IwgR`j);-%9>!auv?!-H{yKk%KW_IvjkG5jQGa=A`WY!5o4%`09)= z)<12t!~%rNz<1w6n3cBM+`1RqPc!*#|GH_wqv|7{IjXwq_pCFAyrSO19~Ihb`yVeAeCDf`PbEMqae?-Uq>rJki^4xB(ZNpTv#l(Bb1S%ZId!sD_`S(@ z-=7Vs>BO(Hrq2#2m%WU0*jp_HCK*aJtkpllL`F=ta`xiNPxn0$5P)`baoEjifEvs` zxcmzw;`Q;tjgU}<4ufgRiIx|TjXjE+;MsjR6it)L;7FfDIp<8HV*2o_rx>{uN)eM3 zgyM)9M_|HMyV|9RJNu8pT^^|^M2=JW>X&@~zn7OBEZwUnpK2W2owD43mwZjqGBgXc z3YY~pm}rjFR$d1_b(i_Q5dzMJZS@}6*RshQ>{i`6R_c`cuix|0kdJiFM6Pb>{5^v) zWE_oS-?pFBMD@m0d60&CPYpx`bxCD|$(T=1*kpVxk1NmJ*Hnz3tG-L%BW9)N%MfQI z<1g*8vo3GWt{pW!iVcK(TsyB9lzN@Ab$0Gd**l^t)58uE*TUIEK9a7Vtows1ifF@a zO^?_`YlyK}eQ>1uDM|eb@Q#^7 zZFqQLo4YQ2;WBgB@v6(_-+-ho)!=a1g4+jqpWW!Ra7l=ja{0evDa8H6d8 z$h$h62S39i0OlMn9rlU+?lz`vEo-9sZc@)&>aIByCB`-aWy+>loszmVsXf2#ya5qz z9nn%I#6W!h?~huxKUQ@s&~+}xR`b^qUpb*WY!hV^C4U^l%+AXDbZ$6BkGh$7l&A=< z(7~Ja|FT}FWvXI6rX^cjah#fmlXS2=%GDH6L|O>Q9(tC2cu7|Knq`mK6@>1a^k72V zmA*yyXWhdZ%#+EHSztpaiv7Wa4;Ae@34y?|!a>!fPny^I9sJ9&s-i57cuT7sulDdg za&1sEAC0qOY>|_8>=(jBlY@Y9#4-uQIC7R7Z(-1`e_po&ub9@O3>j8t<-px)?z^92 zHQpiIG}3Nop08oe85KkA6to6cpp&q;weh^zS0RWX z0y3t|<4A#5OENgipfe*yh0!hY!9?#-K4s=F&g9<3wiB|hPAKK?ldc+kE*r+Or4BoH z6~sLTVE#2yB9xStro^}BE7)qLc=e1^O_5&HtI=~@))WcfY+)mJEpv&n+Uxf+jBgLT zk?`@Nd`Gm3WI%*#f7tcg*nIQp6Aa<&b!MF>lRxI`yF%O!nvkeZvg)~{VbuoC=e(aUneb4)D4wFS}p|O>Ir>AVGY$YGx2nIwzUI-;Z zvbt8h>rWF*dD)o-BTWvUos?g!LLT1e|KsmNz|Yy4)%p(jrOT58GS0Jv&u!TR`ql&Z_m6#{LZaJE?cw5uEI^9xg+G#bq(n(C`yn_l9j#n zL%qE((eMHHPD=xZMB% diff --git a/docker-all/example/certificates/authorization.pub b/docker-all/example/certificates/authorization.pub index 4cf2b6221..99d4addff 100644 --- a/docker-all/example/certificates/authorization.pub +++ b/docker-all/example/certificates/authorization.pub @@ -1,9 +1,9 @@ -----BEGIN PUBLIC KEY----- -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAn5rCEUb6W13FIIhGY1O+ -ZIwrvFDpZPNOuCIAolZcxFs6PH7ikcHjxmu014ZWm4qL3DevW9Rddllr16sChE4l -pKuSXVKMOKej3ZyooI2IK3ChmH8gDZ5R/k7DdQmjSc98aZ70WjtSmlW47tTLFH/4 -HYk7d1yZKISCSSOvzvnwFxs96046boH2W7e6zcDfYRvH4ki5F9GM19Yc8AIlTeBR -1cuZv1SK2fZzvHG7nLVqNCeZEIkaThxh6ACXAmWRFQSkAWluv+xH0rXYuRHd+NI/ -Z0QS+8YCS1QWrCqyGzqvb92XngoUvJJobnVh80TNt4TSyl+GQv7LDzAwj2O+fYPU -MQIDAQAB +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnRjVhCHe5S93GLxgE0qP +bdIIRkPiyVHCAJ0VjLSNF6g2CiBKOYKYq+9SCLQEQ8pyfNUKacghpHEg6e+8zraa +Jr/2Vn49A+PK5fdVobbX6xpAjg7Yhbx8Uy1Hl+O7S/fxGQl+NfE0B8UQOLnobLls +L19xP745gkubRRlZ7VP085GdIjG2O+IV6FV3ARtwJWYDSZRZ1o893dPZkkVdW757 +1POOLUsZ7lH4e6etsZdQXjng2RGw1DCqL8TZyXHWVdJwa3YYdUihbfEMO70LXyjt +Od/+ty0PsyeA50bdpndCG8/OSpVNxiyMmYhPnq6+KPNeUKkBpMdC+nJf7VoJ/riI +jQIDAQAB -----END PUBLIC KEY----- diff --git a/docker-all/example/certificates/certificateauthority.p12 b/docker-all/example/certificates/certificateauthority.p12 index 93d1bfcb88ce0cbc2804edf3d60a7ed1d9d28423..b49c1658fe0465d71701429a6a735680e0e9fab8 100644 GIT binary patch literal 5499 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 M3*!FJ^Un(WU-I@g{{R30 literal 6147 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 diff --git a/docker-all/example/certificates/certificateauthority.pub b/docker-all/example/certificates/certificateauthority.pub new file mode 100644 index 000000000..8a2876cf4 --- /dev/null +++ b/docker-all/example/certificates/certificateauthority.pub @@ -0,0 +1,9 @@ +-----BEGIN PUBLIC KEY----- +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoqVzUznsnb/ZC7mLPIvF +e1RQtGg25V5I9NR83B3/INQYvIGTaQbv1G+iOJJxRDn8AmvR/v/GFQoCTJ+kcE68 +x6yAywWSsUicZFOOgFLW6vh1k8mRWZlW9IXMPzP0LNUzW0oMyqbkS8nXyL8pAkFS +fsWKPxjvKkHOgnQhH97CJqXyF+/FMwK/X8FT+Kd3HvY+klJQ0pfyIZU5AHWSRz83 +S9CnhePyRKYZt8v2O4VV3szTsAX4aJjIPlvPcYSokR14FrjRo58y4ruPdX6ntq2V +QDyCP624kUz8IQn31jKv8xO6zUU6/PZg+ov86+BW6iIKUP4LRpLC8HNFD+pBkH69 +wwIDAQAB +-----END PUBLIC KEY----- diff --git a/docker-all/example/certificates/choreographer.p12 b/docker-all/example/certificates/choreographer.p12 deleted file mode 100644 index bffbe1396a0ee4cb68d3c0d40e27a83dfacaa453..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6109 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 YbE?aMd13|=4tz4W2^{h7ND7C7 zY4=U!%IOP#r@bSI7}BWN{S+^!3+%gBR+iKM0f&JniZ*R2N=ED^k0UVz8=|!;RrAhMKldz-<5xyx1gke9 zy^0>~j9Wep?6&KL-@iAcSbw)Bte{RqQ88Z?p1Q=|lcm>lvB(6?N_ zXobOYjD-T%7jVaP6&_-Bc&qB~R!bf5O)G&4-o)tck=C#hG)q~P%+w?>XmL2M-0KV} z){z*KWf5uW5tHz`Tnfwe(yl8U|KNCsiLwnIH$?B5oL2ctQzq$*W4hi~Txfa!a1kMA zNJQHL*zx=3)L)3e*1 z(?(=MF^74u+G<{RA$~BSU~;e8+>41OqTfVg`CxKL`j7+eP6R!Li%768gZ>?{peix`wypGyoqXr(QJz|p zQm+}gMKzMAyqP-AW|zP#8@-%?6KGqN4EdM?fc1kAi$TCMHm|sT22R5M7K9-A~BNWQ|vq{z{# z4WR}5E?bt}kEl|rUZ1EW_Gy9dAn64Jkli%-~8T%?`2-}o3dUiy~ z+uO0E-%1(XJn9~MoQP+0LZ*U1HYd4$HRSljF=Ke(-kEJrSU+NYBECA>r$(-+GGmde ztwKUL2WCYXAyZ^7n+s}E)+Qn|<}x0dZMX{TUZtmo5o!n0bsRk(k(A&x0-~=tEs*=O z%ju1CEVFk;86Ru6Ief_=te}{giTO+=AZWGhkviZw*78(2Sk<0FCL+nGLnb!HZQ(60 zMwdg)Zx_rGhn|$jd+|*u{zh@@<*ihNiwXVD7S8J3@LN(^HDv( zl6oTy<-N_3r>MAByJvvr*Hir?{l!_`>Te_S#drfU&u7+0I^Q7J)hCSy8cwlt|2Q2% z5EY=Bj5c)7nZXd7Qab#YkTJx#gX#pJ61G+0D0N~l$=yFcS@ zsjn$8#4KRb{&EPmXgM{b%9XvzqnplI7fM@yDDbQ-V2_XC#`3~g4=v5PhGtnBO<*n$ zV`B@4gLQ4D?)+Ln>sq5kq~r}=SBu%Tw2DSwM-!V$6ED>RfXj>z(^|O)c!L21wvPxU)I=dXM@2y-kn84E~vNe!(5eh=4CYqzsb<2kBCck zOD7~;)Dy1tPh1kwiYnff2iO5@0A9EC6yOGU4tN3Z2A}};08fB0!1b0qy;WRq&o;Nj z^LF+HINho?w=Ut^?hWVocO9K5EtuNS8D-BdDkXsszbA1|LJ}b+3J)Vc{pS(^q#%rZ z;})%gfPmXJ_pbu{zk)rUzJ1LuGjz4_6#70fs8ee-vC!}T6YM7nBdtyy7nn{Rr@|Jq zA(@aca%+BpjT8bsn1rov^8EH{R2F`UQ^2uuPim7}DplhKu0Z?(l@G&{sF6XOatkIU zOs?9SmX>FJMS0T7wm1$Ok#LLE! zo?hPUiR}?-{F|`SgV4&fV=|Xi?lT+V7S(|8!Ano%@RhBtH2;hYpIHPx zw~Kx}OJ=)}VZoO(O1)J47Y=>wH?%=szAlULUyneBkOolyT%B{%f72hvkXL^c;xLcM zWgj4=8P|C#tS_WE&?~4(8+7%yy~Wt~dy6=!u)2Jb+8e%on6#`-aQB_k@o-eFgE zmsD@+1Kp8|bo0u+8XnL{h|al}ieW{yEjl-i7>7@fjPL{>JGl z6TCl^K4yEzvIIsfewg>2R+>x9`nNOnkDyA9FYSg4ndBHqG2#MCr5l4sU`ZB}G|n!3 z2+@P;TUce!1t$3!C#zoJBVi-vP1z9(j0I_@N#r0|J>cOW4ppmJEjBJNNq?PO-&mvJSVQ);;jSDw94{(w$MpoE{;p%S|N z!so7JSd%R_XAz1NQ-;RG?cdbro{fI`Laq~{*4)6ln>}8%wE;^WJ6QAY_Uo<5PJ5By zalBtT`wQvQgwtzVyRtp38tvHVOJb&Y5aC~0+ZP4t6nE@o7*`z!abnRIZvwL4jTOtb z-jlJY(yqo8Wa!ni9qqa3pZw@`s{xR|_CFA^tEm7RT&O3D{~b_HEiPL6{bQyR=4vhq zwc9L+1zt8{1CMQ48zGakQCm<HlU@^x!D3Or8rxtCA7d>w-Jj~qrr$P~1+lT4ReujgsYo$YbU8{{1)^hoJ^fy- zXVfrU!6#SgU5wnJ8iZKw1;r7YabX=k}Rz4B>x4h;(k=2q&@5_Y;&2dx2 z^Bic6^epO0p~6qjTyBqp_(Y!%QdF^Z8RF*2&f1kq-X1cAaW!yjPwB_r;{g5iaJ&u- z4*qFQTq~oonj7|doij1sQY!F~Mw|B2d`P0|epkiP1!rOTVqZz1DHS(W1}Y+K`Snox zkdgaz`g7S*hMiaw&;9pm?L04RU_YwTV^P(94Q7wajw4k@nbRN`4!r6--K7}qG*==1 ziAr@`NR};}Sq;DPeau%*zPA!X7fH%!tIx7uReSSgKuRI?9Wb>XZj1rrZx5^X0$leZ~l9or@_{>tFek4tJ6q;(0E^ZPwUG4@U8F0xPwSYt8>%MAI2LB;h zOo$t>JmU}2LyBuIQS@fL#h}Pj?sq_;Qka(4+LYMhIRATbiY<+ln@98LZ&wNru0D&w zVc>3X;V#4CvG}UskrnPpkGD=yMZ`aRH!Twxw>;J@UzKoQs_EhQGe%@l=f+(4WCIC= zd>Zr0UR~Xrh?P^$XwX`Rd}6uuw`(kDxLVkN#>p=Eb=n(D5{Ma*nfBuDfW*fMmB&$p zekHIm!vkNSFh}ZT1VWnKbr`?#6f`Cb?DVs`K&Y@STXbY!(F;mlcCk5`s7QF1x<+RyT@Qc4Ll@ zY=aC$m!`aStMB}M59bAV?K697yg`{Mrx^w`3JWVD#ok9!U(B5L<;%Z)m1vi!|2gT$ zvw^5jHP&fwgajf5Qc*YHcUw(ryIwLqr~(dXz5kQ1IvtY^ZoG9O0k0-WPtS98e*TT9 zRKNdr^t(@5=eLDD+i%bBG@L-2%#*2yKD)6a&(CEfqgf%lV8d^JX$~qcK=$i&nhZq+T(Y3TqZG?(*R*aXm+FEm$1ov$>FnuFz zpm5?SOrs3bdnq|x)X6c_MX$|H!YX^|o6x-NQ^SM%dOtrdDW6qy9Xj$5(1jCtpZetw ztkBHiJ(r<2?j~`=KF^vl3U(@w6)yCbglqebzuX_?*;=MYeC%xqc>7q$jPb_AbL5XU z-&Zn%r}vp=L2)aJ-kMyUmeLKoHm-YUi3DYor%oyVtF62!y8;EOHMPB>{63JvaoQfU z%YCzWx!R+4V&jS+rSEZNB0Y3Yq0WNr%sUgE6OXd=7LD+24Ka;L`fKtBZ{EeCV@Y-h zjOgP=y(V}2dFkB)n-p#$C+6h^dfUwJB~fD`d_v};q8}DP8q0l4ZcD+=>^;WI_|>HA z51~u2y5K+2(GRQJ{1nSN_EuA7b85wlA_Zg?^3Tu&6sac7{1G>_OMy$8C1ui>h+|~= zLEV>4iH{0Yvj!)GdGTtSGcrtDou<{_>S_wq=R~u)3_9ngN=xj)jr@ShDia5d*{fg2 zqINv(M_fwD8`OQ(~8|lIncR1hr(zayj z?7!k0_*+D2gGij}X?^>B$uWm7YjMn50#eJ|E_B|FyU`{W%u$i*u7D(E*ueZSS5+RCbs zoyw)lLqv99-jQ$Mhq>#;Jf4YNt0H0w zvL-9p-g`_9%cgbS)lpKfu*54kW)h`rxm@9wqd)gHmDdbCARWRSmR5itPm;tM6z8qU zS0Rb{I&ep|2^`ax2rXEy_il>Qz|UYS9H9!=D&5N`C=+Q1azB}DULBFRZOuobx(K1I zVgRyLWWPNfkQ((%;V|7YShS2j6`MlsG}51oc=I|eNS9te_QgYqC9sdixh^D)vfHSkvGFSX6W3f+U!%V6JXiiKs{*8d%E-#D6hGm>2ny%A=gnF<`@wRi zG`ew~QJTK|y3U;tf#AcreK5YMU_9Czbl1JxVz&BKd3894f7$e*XBcZ-NE>c81Mp?w+noWuv;Dmic&{tcT>(;u;K zUjAC|M7?TVVPZ=*w9=>WNx@os_+ZfGy0sw6C!D;(aH=?HU9+t)C;ZdB9@)z!G0V@Y zEX?C0l8SWf-4SJ081KNzhcap$nxFJ5JsSa=bL%~X=myG z3Z#&CRAJrOY=!T%rN1Rn_2j;wD${$@;VT;4oO;gt1C0zEZE84PsB;RGsn`*}(Ah`l zq3&8B&~~%z%V^Q(8vFh)7pAe7Rbg(Oa=j{G=jW^n@VYy)9;RJwg4CmzDf$G2>mOaq z$L?~*$q5tW;pOr=A|y|{)m(j7)D-B@Cj#>D+)=*=-}CnvAo{5>ys@e?a@YF;6Vz}m zxG0?LpZ`S=5FY?$w>z-9_a>Kj;Y~Z^I{;L{TeR!yc`9_8`y1W(YQ!6CQ=4Ni~&2KV5uK@wa74DRkOfk1E{Gz9qB z+O2zQpLQR*zSG^OzsIgR2LdIQLjod0px{$f3^te&>=p-z2F!a^llaj}MzWW)nj<%+ z6vaRb6uQklR(n6Am7Fo&-2MDTZ}3Q}>jrCH#{(mRPdd1vk@?M7zAfh^`*Bu4KDLcH zf${A0d{jaa1}6fqWadOK*CRp7=@Q?#oa&&!H^#n`ZiJkS?TGemUw6olrHC&TF8;@4 zdm`t_ikJn5UK%!+JPm*1EhA-wmP+-$4mFw3Y%>Y49$FP@ZuYka`u9uM;I=byan25H z8~OygyTs3=XP(Mr{|+YB&~I22Qzq|13>^8D{z_#G%wqP#8GYwZ8L@uc#GW>02;%@w zUNnQJ0I(;s%ly)V=1I{ZAxfjyw5pVEI_YG3QYf0%>&!+l!zadWN)$ym{|f7cP%55@ z-W1J#-Rv=Nq2ivyrlRpHS_0RKFT9KTl2F%UZ^U;1WrKfKb9LrXMQe?IusD$H# z&)M$VXvm0;$>~O=MHYrsy&EoC{Dh%d z?ADSLM>81|7M7s_fV;QWPAp8SXf_7?`3@I!l?4-UQ=7|d^2B1;L+=Ab1&Fvu=Bc+!|U!$JTcY>A>=au z_L=U;FXY&28Gso(yyv2Qb8`NbK;_eJlW<4(3v_E%Ke^1iYyh(W0q{k@xETVc3c-!-Sw&(4x%TERqP~L5?{$9j@j{%0H$xN;3fNSGz&Y z^RQ5RK+-o2?=fm2drl{$MxYxBjE)eDa z)FlR(N0Le$Ue15^F7dXAZ24Dqn18@Nx0nPx67w-6SHh)pvUbq*)_Qf@S$#A_) z4+!mlml5-TL4?|NpR8zjg!qN|1o;I8c!Y)dAyC|l|6D>t&4=RtevvkifPj~=_+JP3 z|EhJTSJ>wx!pwbQ55iOI9&t7ok`u=NKef(wJa=#Kk$`bW`TTU|TGBBHifi^TB7Hsg zIm(jfjeHo!1%2-Te2t;)`@8u3>Jt*lYoo$xiQ)KXWFq{KgEi^;!FbHqv2q(+1iAi1 zVh96v=B1{(`(M;|8$x6J-uBg11dY{+m7Xf3{&$@~JM|EPze3-#L&Ocfs<+y;ckrN= z6Td0i!*Tpj3~?-6#1Q^8zBO0y!F;nVS+8AGj@I?sEj968IAkuY6l}mrk{=YU)$TmX z6M9P}9gxvV;oP;Rz9VGyL|#rAJe*VcgGkl|^Tz>p@$-pbc#}5feqhEEpE8hG`I`)y z2|39>^~B?wmG8pJj~^ZuB0Z%Fri=Xnbpu%^A4xtZSNK^-A`_FM#q* zWNH{X6B>*NrYAHEP0(t-RXxfyy#6tSHe*h$zR_2u3eWoLVL~Qpy`nQA9;XD}Q3Nciq7JT&@My?s&=z zBfD0@^sMPlr9DcqU-Uq|{9xTtSlfI`P<3q4SXLxQI>)bK{h6JwXkOY{N=#~ZM5z2z zBg^kvTOoxGF@LzB^@{C@{gt!3s2qweUvT)#N^y*>MIU)2W5@+$IfiaR%AWH##<;}T zLs^`zqqNYU^llFymdgWwe%yuc@i{h(35i7?6r!6vy~hU7&Zp`jtuiD6?R!Q^h<1`!WAH9_cjstTXsd(){1Ky%4x!wd)2ZQk zlz}(6P58nGeUW6JPWIL@&&@s1aCQs^w)*0yBg}6>wFm+X)U6yUAye#b>si%*t4MbZ^K zUeuW5So&<68f-f0z+HS)L)P)=6^2#cP@7{yLNXYm;?{RNj)iNA61{<)t8I>QMa3t9 zlFb-SF}Dt78y?+Q1=;h{ZKi8r zDEJ|X)FYrTA%bkvjH#;J{OXf{P>J~vrh`H>p){eTwsC5$L=%Zi9fCFuNyRCe9soO;CRCYuWDu1ix+IzPs{; z%K?#!dd@QPjZr1lGsSbS-WU(NlL!FK`}=(Dx|)QEiv3TgG?j+@UB=x3StwXCtwE-a z*cNs;)f_KIMy$ogKNEbx0vsQgFV6^{RMc8+M!Q-l?;^Py~50P^OTM&W?o6vs~{f^Lx^=P`QrV5v$&|93Y^B=|;71VfYBm z`G%8r&RPk$ppDh=uMcPj5#J{$qs0}y7S}vpGy{nmY6=KEy=wHz06}y%WKowz&Io1> z2Y0@)J@?f9iH_OEhRB*{*)tb5K9CdDbii#CmyHXiZ>JFxQu%qi;`jlVZO=o&cOO1K zpU!l0ePLXqKMF{rCtLLSd)g)Mu22%DVT`#F+O%R7T%DlCF}J6$Y$M|LD|)jWu@8 zQ)I(W%UxBiNxtnMN~N~o=%v;&#_1)hY9FmLLCa5dOI-U^|}Re<=ZM_yn8^8KQ9j_MFP>4`-- z3S*Us{-6DziE?^^QbhZQcMSan(}p0UdmUUqBLm?-PBpNOAIbsy5Jv;`6!JVmvA0o2 zE`#OVq9S$cjV99AX`v#TeN|elalT0vYArnTmJG^o1}LH$!^YpbH(|mhOf2TZt7#}3 z%tKlWIecHSoRaY}&BVFaO@Wl&EhX9Xsc*^Xb1llMW8u;EdPcyyrObn6V!SErTz)@ZF6D`P*ptQPT8_^s~|? zXP+hn7Ld3GQkSI}aw^~L_RXY*sebqr4fyEQ&K;DLMpk}bGv`6V%KV&dRf_`td3!|Y z%3;gC6Ed&jBzHQ{`CPe4{c2UuwB?t=D6cie^j`r=e-wWzoB;c#%dyWI8qQ1qZbymh zGAG%aM@-P(U*oL4$<^7Yy~6GW8}wdkpG@vUa8>ijbM#qA#-ZriEI&?7yeU~Xqcu@aj<&r{@6&Hta-mnKz`+F?fJyh4E1d-Ep z;gV>Zq4f0*u^68G?|j$fn{b6V<75aJ`Eh6R}lkSd&dt5DxsOUSi>csjH5?>P4kF@s9Ya5qs0a z>1MB4m8{ys$Go&zNK(s)M=jmTD$ILoSFq-fC3ZsEK+ZjvJOJS=G90%j6A-&X0;G5q z#OGX(_EvB7OT&t4vFRMQE8k4&MR!%)&^^EI6@P{f8Lf*zFx z=TCdnimwW9Memvgbd0EOD?ZP9t#iLiB7wJZxO7gWGmXtdwLlP62oD73KfjAeKokIo zW(aHQxn@)Yayr-Ytcl#E6y9B4LSypjcTM<~)|t}>3lMlu4Qs;|KL0gtkKv{_D^d!@ L{qX*OJ#qgB3nD9` literal 6121 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 QJ&2aV+UrODzZ3Vr0H%*sPyhe` literal 6107 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 P0q*Xzc7Te85|;NLrB<4r diff --git a/docker-all/example/certificates/eventhandler.pub b/docker-all/example/certificates/eventhandler.pub new file mode 100644 index 000000000..e80de2af3 --- /dev/null +++ b/docker-all/example/certificates/eventhandler.pub @@ -0,0 +1,9 @@ +-----BEGIN PUBLIC KEY----- +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtuTLM7AjRYgwuKEEVS4y +KYtJhQ45U/F7u1Hg8Al1jqw4NR9wqL7Xsxmb3Ysi2XIRWRCfJiZ/mBLIK5Eam52r +kwPKj0v36GBWPdCBRiL1wCeAzrEdTIgTuvtR/SBd9UItyNHhHNVJO/I/4bvNFLOB +Fp9HWWEIb4UohN9Q9dFzMaXYjYaV8rhlk7RuSTcbTho4ndLiZKZ8ChfJvf5na3zn +KSn4SL9kf1sT8FZHOys1E+F/zmEOpqj0h+rXyCzDiwi7tvg4uobITEQQDMM/wiYc +l4fIZfL8UQ2qvAGOVt+yDcAkvwy0BSvvEtf23j00JAonFfwUIvBbsK0F5elfPB4o +BQIDAQAB +-----END PUBLIC KEY----- diff --git a/docker-all/example/certificates/gatekeeper.p12 b/docker-all/example/certificates/gatekeeper.p12 index 769a9ae7a721beccb85eac1bd16fbfc53f923c6c..b25db05c0063b37d1657912e9286134c9b2e2620 100644 GIT binary patch literal 5446 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 literal 6081 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 diff --git a/docker-all/example/certificates/gateway.pub b/docker-all/example/certificates/gateway.pub new file mode 100644 index 000000000..18cb4b978 --- /dev/null +++ b/docker-all/example/certificates/gateway.pub @@ -0,0 +1,9 @@ +-----BEGIN PUBLIC KEY----- +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4wAz3TRdYj3mXH4toa2M +qQywxiUgIh5ZHD+AxdkA2rmFfHg8FiM2B40OrRJsqvjqVz3ds0UEHCrceCaFBbl9 +y+CNX7VDXSvl+UKAl4ZyJwBsI/vjLqOnDxPbQMKm+laydR2otLEKGyRMPo3wB7ss +rA/TRX164SLnzQs9o5fQczEPvDbBV0yh80PjaxGzZn82E/3SBGvETeXyliFhWnBR +le8DsDI1aHIDxJefl3xSj+5gVQdrfZ96AXOk5LouPCkocOmrKmYVtqQUi9+VLHS0 +M9xF6KQO/WqO8DiteEaQj3w++RFinMrDl2FfT0xTImpmdZ338TVTUOOlRYRz/mKN +NQIDAQAB +-----END PUBLIC KEY----- diff --git a/docker-all/example/certificates/hawkbitconfigurationmanager.p12 b/docker-all/example/certificates/hawkbitconfigurationmanager.p12 deleted file mode 100644 index d262c535d2bc740a33454ccf2eb93a3ba9c86f9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6209 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 Ju>+Iw{{*F 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 diff --git a/docker-all/example/certificates/orchestrator.p12 b/docker-all/example/certificates/orchestrator.p12 index 3c5a7c6facb684dc45a5198fd941590d77cb11ae..8b51c7eeb844e464e9ba9f3a88fc96d88b8a5855 100644 GIT binary patch literal 5434 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 literal 6107 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 diff --git a/docker-all/example/certificates/orchestrator.pub b/docker-all/example/certificates/orchestrator.pub new file mode 100644 index 000000000..a9e7a420f --- /dev/null +++ b/docker-all/example/certificates/orchestrator.pub @@ -0,0 +1,9 @@ +-----BEGIN PUBLIC KEY----- +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAq7eEtRPrEgx4Fb24hm1B +HfcdRzTEuraT2XFXMw2TK70L7mr+bw7ygI/G6rZkaU3SKJgktEmYkzADV0gmo6Um +4mfXH6ZPg48nfijcb8GGf8w1OwfAKr08ZjT1ae8nWVrlqnysWQ7n+gisw4sbfE3c +UKMZBo/hqUwNaVTFRbba9H7bazdBpqynMYKe/41Us2Y30azwjN61lfl8F8HQYqMc +0YhIaMlIcrXwv1RKrvp0G0HgFTsnSxMiBzn4zBVme6M48VGhppARMPFF/5zVSDsV +QM2Njju90d4a6KQiGRUlXZvYPGMbvA7rC0EZX6uTMErCUu5gQBQchF9wO6afHf2J +PQIDAQAB +-----END PUBLIC KEY----- diff --git a/docker-all/example/certificates/plantdescriptionengine.p12 b/docker-all/example/certificates/plantdescriptionengine.p12 index a49fdc9cfc09c815a219bea167879ac5d7878edc..c459268cfa8d6ec46bd1465438275b5db4bfcaa1 100644 GIT binary patch literal 5519 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 literal 4391 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 GmiHf`c`Z)> diff --git a/docker-all/example/certificates/plantdescriptionengine.pub b/docker-all/example/certificates/plantdescriptionengine.pub new file mode 100644 index 000000000..8dddc1832 --- /dev/null +++ b/docker-all/example/certificates/plantdescriptionengine.pub @@ -0,0 +1,9 @@ +-----BEGIN PUBLIC KEY----- +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA06OR4psSW0E6WAPAAxvE +SXgPaQaflxquaqmSPPbNslkxpVhW7jwztMcpvMRw3QoaYDIUdq6wUaaHGb+GZv8D +aGNTtgMwoDhjA19urTig4T9PWmLIIcCbKLjRdt8M3jy+beQYIt6m0UFtXwvYgO1f +IXIeyYLnpnvPXssSP18ScsfL/c6b7w551+wzG4EBD45aamA8mdVLlUFROJKVGf5H +5t5rPfi18ekFvsMlCPZ8qiL58f3RgFeG85GmUaNSp7AJPXKmgqktGWKGbGTljDah +bevMP8MML5T+01yoSR0FfLbxjE+lJz2FmDNMrFKo4xRrdi32QyJqE+9c/760icYb +kQIDAQAB +-----END PUBLIC KEY----- diff --git a/docker-all/example/certificates/qosmonitor.p12 b/docker-all/example/certificates/qosmonitor.p12 deleted file mode 100644 index 9ff8cda5a951d625a6a1f0a454ee32e0db83d169..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6119 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 diff --git a/docker-all/example/certificates/serviceregistry.p12 b/docker-all/example/certificates/serviceregistry.p12 index 2f6229bc77c8d9a02c1a553a52401086477a4268..145db3b5bd0323fa2bf541ae8c3b5cf9ca51008c 100644 GIT binary patch literal 5472 zcma)AWl$7swBALQZdn>6mxf(pX;_d(x{>aZE-7I_I#gmox}}j0k&y02X%G;prKHj8 zjrqR0zwVtgC*J2d=lpzT&I?6?O)-Fvphz$l7A{wma?}+e5F40}B)`H$lAlA7|)hH2W8x{OhAw`2RCSfCt3LM}iQ4K}o3nKNBEAs4-OZ-zNc-8zy+ZeE0e!A^n!WP}o6;r#bT3|tTZN{@wW8Kn%gdxQz(!X!b`ck;Mi z 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 literal 6121 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 +-----BEGIN PRIVATE KEY----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDlCzZGLNpU62v5 +MgRO4rvQnLc3vaIwYY0SNsa+EGlzlIEIYlpp5qcue8XTrCRfxbmOYgiY2eQmH3SN +eGxn5lIy0KFL29l8u4mr7ATvrOrbm8uIyEjzUiX5WjnkoU4sP+Q1fklDX7KbHD7X +FrXjFPHlf1bPUPyKo+DnWd4vtQl62yCVs76kh1s+GlHGtwy0R2+aqVQq0lsZ2ta3 +ioUiy6mlfMd81i8u8mdPGHsCTqkE/aR2g5hGeis5lHeo/7WW7GXlSYBPP9pyVlQ5 +Y7C5k4NCKyjBxnoMxBeQ/3z/ZiP2TuLh5E3e0wdvQmSOHZyPhYXCoQ/+uKg8Qu++ +5QyHPHTxAgMBAAECggEAJlTyCFyJTZz4vQO55NndRNR1dUavVhl9WocAS97DRyyb +S6PqLb8ES6s7OGmezMhyfXm6ppoQrLCm+OYmflz1dLulwuRQSae5KqSdTt9JjudL +8OBUFSSyZkDLX4//XTh0IN+5syTY50ya17RdTFu9AAOHq7qKCUnT4eQQYzuREpY4 +j0Ppf/8Bov09cuVs5pMmLDsvWGzdJFymj0Mce6qNiaEzERmuTj8y378N3Wz8iUhv +6o45SpnzAb3zFrAKA9jgNLWyUr/Ud4J6JGUL8i45zIZ2w2PwgM1o1ulFP5Oy4CFa +RT9JqIFf2INVNQC9k7709ol5G4Au1zOGBdxJxXs+gQKBgQDq5XVUeR63Hgi3jADl +VdrOnq06HY62uLEIr4ToZXgN9UD8FVLw4SXt/zsdM5H7veZX0B0SUNfJVJ6iUFvK +U/9rwjINKMWq9j5JbRlTwwc8ClmhRtjB/OtWsWfSNUzOgtFCbNBUwtXpsypI5kIO +RSw81B28tgWgTkv44APe3IqFFQKBgQD5nyW/yP4rdE7WidDcNkb8fnlPjsDN/ZjW +h4Qf2Vub9thY42Mj+jREToM75+DbENMd5h3781FmSiSWr2T57Af1JuAD2g52pHN/ +ttYGhwW+SM3nmazVo/fl7kti4WrgGTQwFODWAoX6NoL3y/GHdq75oc412iDFSHid +xT6MqyNfbQKBgC4UBQglGllhkuQump5iUSHnDqQv2CcP4+qIQ9Iy1XIngi/xHuwR +vpcJUldQHnr7rYvcT1egdDQSXWwJx3fRMnG5Doh2TxBSbbWJqUY9I9YrUZnJhAvJ +yYCgHHWn7wEzuEkHf3ahIcVOWCUkxiB2gU8NbSfvrPrdYRnZF+lH6gRhAoGASNkv +NRc9RgU9dNLnhzy33rwyPwuULQmTbxhBcOIIIC4b2WUS6877LewT1InJT2VLl3Au +0/agjM+aefdZ6q39bIgZ3EXo7qrzohQDxgflnzC0FqD8laSylgHDMmpCvH/egSG2 +s/4sh2cdNZ/pLvVt/yA/g+vSoICT4sdLh9XyDskCgYEAxI4DW7S/CcpG+Qe/c7fh +z3WfmNcZkPnitCuE9BCXqPRFqaiDoVHVBPCSxzpEIaHS2mcGTEie6GvE+DvfX3gx +sNjiCBcyMqk2OuhqrYqvxaLpT3IdCcftnDIDw1d2evSr5UnK42II0DdrILWrD2oY +Fm2LyVmjp4KARWqjGd5Cun0= +-----END PRIVATE KEY----- diff --git a/docker-all/example/certificates/sysop.p12 b/docker-all/example/certificates/sysop.p12 index 3215b8eac1ddcb27b39a776bda7b4ada0623a71b..fdc2ece7f995181400d5610dda7ca8aee619cf09 100644 GIT binary patch literal 5372 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 scV`qY8+Q9`@&-qINxjB>doPhvhg;9}}QA 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 diff --git a/docker-all/example/certificates/sysop.pub b/docker-all/example/certificates/sysop.pub new file mode 100644 index 000000000..f0151f36c --- /dev/null +++ b/docker-all/example/certificates/sysop.pub @@ -0,0 +1,9 @@ +-----BEGIN PUBLIC KEY----- +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5Qs2RizaVOtr+TIETuK7 +0Jy3N72iMGGNEjbGvhBpc5SBCGJaaeanLnvF06wkX8W5jmIImNnkJh90jXhsZ+ZS +MtChS9vZfLuJq+wE76zq25vLiMhI81Il+Vo55KFOLD/kNX5JQ1+ymxw+1xa14xTx +5X9Wz1D8iqPg51neL7UJetsglbO+pIdbPhpRxrcMtEdvmqlUKtJbGdrWt4qFIsup +pXzHfNYvLvJnTxh7Ak6pBP2kdoOYRnorOZR3qP+1luxl5UmATz/aclZUOWOwuZOD +QisowcZ6DMQXkP98/2Yj9k7i4eRN3tMHb0Jkjh2cj4WFwqEP/rioPELvvuUMhzx0 +8QIDAQAB +-----END PUBLIC KEY----- diff --git a/docker-all/example/certificates/systemregistry.p12 b/docker-all/example/certificates/systemregistry.p12 deleted file mode 100644 index 156a9f3de72f27e5ce4965f3ffaa285e5d83305f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6111 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 P^Apd~nc)%O!t?$IADOBb diff --git a/docker-all/example/certificates/testcloud1.crt b/docker-all/example/certificates/testcloud1.crt deleted file mode 100644 index 54e8c87fc..000000000 --- a/docker-all/example/certificates/testcloud1.crt +++ /dev/null @@ -1,19 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDGDCCAgCgAwIBAgIEXVQIRTANBgkqhkiG9w0BAQsFADAXMRUwEwYDVQQDDAxh -cnJvd2hlYWQuZXUwHhcNMTkwODE0MTMxMDI5WhcNMjkwODE0MTMxMDI5WjAoMSYw -JAYDVQQDDB10ZXN0Y2xvdWQxLmFpdGlhLmFycm93aGVhZC5ldTCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBAKt/3ehPA6CglcyUJScoVyBti2c7g2JGmzGV -mXZ3KCgDVZWxk88y/At3oVCkm1EvRKiXVKVIIYkODOW50f2aa6HMSARBSRP45/v0 -wr3zRS7FfWldfd+U1sxW9Sh5c5KjZbgwo5nmV3NQU/CuuK6t3qa3dS3B8ZB78FQ8 -FQ6Eh46diniImSh6DcUcO0hP4YVGTVsx4QOsP2x4E5OsalRL9QaceJj0FsxnkIlw -mWzDvzFHrOIThBwYj4Ah48Gj4YJnruwxHTzhSlORKlJyDOVyF4QNbb73YXdQqCpM -JhEzU0woF+t/ZkNMwUq1Y2LydhKUrknOgRbkG+b0/Kc7JOP6yt8CAwEAAaNbMFkw -DwYDVR0TBAgwBgEB/wIBAjAnBgNVHSMEIDAegBSaipkeMUwesuYttprtxx4xyt07 -/qEAggRc1T6tMB0GA1UdDgQWBBQMImFekKi6M65kAiRicb3TqPmsrTANBgkqhkiG -9w0BAQsFAAOCAQEAIOKivHC1HBcTAVT1W+9ULVX4fKq8sThQzYZY/2RpuotzzL5r -Zh14PapHh7RIImLucB2Ncm+fuTEzVgFaw2zxFMY8aDqU0CpwA6exetl6dO1gTknS -ZRxPPHK9XQrAWL3jtZVF7sh3kr+1ZoVVIP7QshDt54Ert+FSXyPbBIxPiUqhP2WR -rrVgMkCPvgRTwnV5BKaVIW6vQtIGTfyAibR+TbyPnd3kGGsK4eZ6Bha8taPvVYKM -YwWMT/BvwPqDPJMaS8YmVBuv15euzmuTJnNflwlTM/NY2aG+ZB5Yf8YBsobwKbXB -GQhD/7QnkpBtFfjiY8i0ue/yzLnx8kLRgzNGOw== ------END CERTIFICATE----- diff --git a/docker-all/example/certificates/testcloud1.p12 b/docker-all/example/certificates/testcloud1.p12 deleted file mode 100644 index 7d54a81425ddc6ae5848477aaf93e33c7a34198a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4261 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 diff --git a/docker-all/example/certificates/timemanager.p12 b/docker-all/example/certificates/timemanager.p12 deleted file mode 100644 index 625b3aa18f4c9f2115087cdc1e434fc679815fe3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6145 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 MHFFuPX95Bz5T~gUdjJ3c literal 2074 zcmV+#2<7)Mf(RA@0Ru3C2hRoxDuzgg_YDCD0ic2hzyyK^yfA_XxG;hTv<3+(hDe6@ z4FLxRpn?abFoFl60s#Opf(M!g2`Yw2hW8Bt2LUiC1_~;MNQUy`2;NwD?zu)AV(0s{cUP=JC5V0!@m2g>vmz&^=W>&&6G>yzY2fva$+6rZ0# z_@E`lxGBMLSt(fmE{hW9wt-VYJM$w9UY89;4j*p+_rvSL7lEv z4uGGuMQA2wnKq_8;i_{uuZ3+cDmqastNZ+YC^!)92t$e<#G|l!He@201)%?`v{^s_ zg&a#28${om6|ARqSn$x!3(?eBNGOA+w@$qx9V;X}q^rwlVA|1X!C@Dx@HJ#A6K1rX zdX>v%{{F-}Ja245l=Fmb(Qz{GubB3X>byU8Al8^P^zSTfSK6hsNN1%@C z(8)7LS@Jk2bG_Ug*v2AmN&z~JwkV)nzZXV6f!yBf1f{L#3M)F})=NyH`$xyCYKBX= zSGyR;l$FjNpQXPp71J&Qf1&+z@UUv3tI z7vBEw4@7+VtK`MT8N5X>3jPzSDTX;g7)_gJA`3%jN}}Z7$`_A{l1%5CF^%l6Y+`Jh z&^f#d5SuuF%YKW^BMH0lyoF0j!A*-0d1W6bXNoCAVrwVQdVuEHSeOUEx4pL?m}uFx z5&(7WVv-ioQ*-0G@7iBM8X6osjr8Kul3Cx-=+aVB#Aaz#xi{WFE2rQs`$V|_N@mzN z%q~QM$mHQ;Jr&}f_^@B=AC^fv>07%FsZ1w+L64m3Be|@ot-;W2%t8&KQN~#Up_E<$ zpRw?`#x7aT0@LqtJ!r7p1u?@cAkd?Md*OFLrRN8ydedS!2fwY5^2}*P0W`0fox6z$ zMNsKDh;%PDabPn2g2hlBRi}u~BXoHnezee`xp}U??o1pF-4(J<{gIMlgR)n9 zJyPD2d}lb${VxpO4ImRMix-rPJ~dFC%E2%}N?O1AU{yXY|D5&p^^7q@w40u55(BO~ z9oHgYc-B~>*c;)C1FQID)jg`k509X!)j%}vnKn{EPXPsHXs=`*V%u59t=RVyj%ZlU zz+@(m25?()isampYRbb60F>&_hB!~=M{|yby3znQBN-ZD&nnh(HuAD*5*LQ(ZVT>) zK2vfDH5$7rsuJ~WBw5-+$rE7J`lWf zTX}-cycG=3pzOD(_ARYhWNT|WpLrrInUQ2%-yrYC#n-4s#yl56p-MDR(|85C2;m{? zg_6`7lm9+Tnx+L7Axp}pbJwDN&pNc%1M2RSxd~1$v;!y^36&-tvqs4V-E?@MO&KlKt!ngeQ;s_BXh zP5Y0(VKH6*F&8O~hlGMasEX`O6BqxnH)F*IApJ(L^;$ov<7>^NypJ@UmHTE@5AT8c zQOt$iy`5wl3jwTm@P?}{*o7T^4?fpymaTCKjFm^QtX<#a7x{pl%Rq3<;u2oTB<)yL zvPJR_B>P8p0NxnA&VK;hX$s9W(gP*5M-ZO3C-itD5wva*m1i=L@AubBjr>#`|7L#Rhx}ijOb7jilNBDMhG* zf;>}vG&~M6o);wzN$0`z=&;JoIB;)|J-*P?A5wz9Pg2&XE%II?b(muRxo2%)isRHj*tc;_{4Kr;k#xY@tgz{RP7#f5b_BpUD(9=ZkM^S_0*!<0s{et Epvq|4AOHXW diff --git a/docker-all/example/docker-compose.yml b/docker-all/example/docker-compose.yml index b91e25cdb..2ad54293f 100644 --- a/docker-all/example/docker-compose.yml +++ b/docker-all/example/docker-compose.yml @@ -32,7 +32,7 @@ services: - MYSQL_DB=arrowhead - MYSQL_USER=root - MYSQL_PASSWORD=password - - SR_ADDRESS=arrowhead-core + - SR_ADDRESS=localhost - SR_PORT=8443 - ARROWHEAD_SECURE_SERVER=false @@ -43,22 +43,23 @@ services: - ./properties/authorization.properties:/opt/arrowhead-core/authorization/application.properties - ./properties/orchestrator.properties:/opt/arrowhead-core/orchestrator/application.properties - ./properties/eventhandler.properties:/opt/arrowhead-core/eventhandler/application.properties - - ./properties/gatekeeper.properties:/opt/arrowhead-core/gatekeeper/application.properties - - ./properties/gateway.properties:/opt/arrowhead-core/gateway/application.properties - - ./properties/certificateauthority.properties:/opt/arrowhead-core/certificate-authority/application.properties - - ./certificates:/opt/arrowhead-core/certificates + # - ./properties/gatekeeper.properties:/opt/arrowhead-core/gatekeeper/application.properties + # - ./properties/gateway.properties:/opt/arrowhead-core/gateway/application.properties + # - ./properties/certificateauthority.properties:/opt/arrowhead-core/certificate-authority/application.properties + # - ./certificates:/opt/arrowhead-core/certificates ports: - 8443:8443 # Service Registry - 8445:8445 # Authorization - 8441:8441 # Orchestrator - 8455:8455 # Event Handler - - 8449:8449 # Gatekeeper - - 8453:8453 # Gateway - - 8448:8448 # Certificate Authority + # - 8449:8449 # Gatekeeper + # - 8453:8453 # Gateway + # - 8448:8448 # Certificate Authority extra_hosts: - "arrowhead-core:127.0.0.1" + - "localhost:127.0.0.1" - "serviceregistry.testcloud2.aitia.arrowhead.eu:127.0.0.1" volumes: diff --git a/docker-all/example/properties/authorization.properties b/docker-all/example/properties/authorization.properties index 9f6b8553c..cf199f98a 100644 --- a/docker-all/example/properties/authorization.properties +++ b/docker-all/example/properties/authorization.properties @@ -15,7 +15,7 @@ spring.jpa.properties.hibernate.format_sql=true spring.jpa.hibernate.ddl-auto=none # Authorization web-server parameters -domain.name=0.0.0.0 +domain.name=127.0.0.1 domain.port=8445 server.port=8445 @@ -30,7 +30,7 @@ core_system_name=AUTHORIZATION log_all_request_and_response=false # Service Registry web-server parameters (to register the Authorization services) -sr_address=serviceregistry.testcloud2.aitia.arrowhead.eu +sr_address=127.0.0.1 sr_port=8443 #Allow querying access to the authorization tables for application systems (true/false - only has effect in secure mode) @@ -47,15 +47,15 @@ eventhandler_is_present=true ### SECURE MODE ### ############################################ -server.ssl.enabled=true -server.ssl.key-store-type=PKCS12 -server.ssl.key-store=classpath:certificates/authorization.p12 -server.ssl.key-store-password=123456 -server.ssl.key-alias=authorization -server.ssl.key-password=123456 -server.ssl.client-auth=need -server.ssl.trust-store-type=PKCS12 -server.ssl.trust-store=classpath:certificates/truststore.p12 -server.ssl.trust-store-password=123456 - -disable.hostname.verifier=false +server.ssl.enabled=false +# server.ssl.key-store-type=PKCS12 +# server.ssl.key-store=classpath:certificates/authorization.p12 +# server.ssl.key-store-password=123456 +# server.ssl.key-alias=authorization +# server.ssl.key-password=123456 +# server.ssl.client-auth=need +# server.ssl.trust-store-type=PKCS12 +# server.ssl.trust-store=classpath:certificates/truststore.p12 +# server.ssl.trust-store-password=123456 + +# disable.hostname.verifier=false diff --git a/docker-all/example/properties/certificateauthority.properties b/docker-all/example/properties/certificateauthority.properties index f06a4734b..2329108e0 100644 --- a/docker-all/example/properties/certificateauthority.properties +++ b/docker-all/example/properties/certificateauthority.properties @@ -32,7 +32,7 @@ core_system_name=CERTIFICATEAUTHORITY log_all_request_and_response=false # Service Registry web-server parameters (to register the Certificate-Authority services) -sr_address=serviceregistry.testcloud2.aitia.arrowhead.eu +sr_address=127.0.0.1 sr_port=8443 ############################################ @@ -41,19 +41,19 @@ sr_port=8443 # configure secure mode -# Set this to false to disable https mode -server.ssl.enabled=true - -server.ssl.key-store-type=PKCS12 -server.ssl.key-store=classpath:certificates/certificateauthority.p12 -server.ssl.key-store-password=123456 -server.ssl.key-alias=certificateauthority -server.ssl.key-password=123456 -server.ssl.client-auth=need -server.ssl.trust-store-type=PKCS12 -server.ssl.trust-store=classpath:certificates/truststore.p12 -server.ssl.trust-store-password=123456 - -#If true, http client does not check whether the hostname is match one of the server's SAN in its certificate -#Just for testing, DO NOT USE this feature in production environment -disable.hostname.verifier=false +# # Set this to false to disable https mode +server.ssl.enabled=false + +# server.ssl.key-store-type=PKCS12 +# server.ssl.key-store=classpath:certificates/certificateauthority.p12 +# server.ssl.key-store-password=123456 +# server.ssl.key-alias=certificateauthority +# server.ssl.key-password=123456 +# server.ssl.client-auth=need +# server.ssl.trust-store-type=PKCS12 +# server.ssl.trust-store=classpath:certificates/truststore.p12 +# server.ssl.trust-store-password=123456 + +# #If true, http client does not check whether the hostname is match one of the server's SAN in its certificate +# #Just for testing, DO NOT USE this feature in production environment +# disable.hostname.verifier=false diff --git a/docker-all/example/properties/eventhandler.properties b/docker-all/example/properties/eventhandler.properties index c5e6d2751..12f59361f 100644 --- a/docker-all/example/properties/eventhandler.properties +++ b/docker-all/example/properties/eventhandler.properties @@ -15,7 +15,7 @@ spring.jpa.properties.hibernate.format_sql=true spring.jpa.hibernate.ddl-auto=none # Event handler web-server parameters -domain.name=0.0.0.0 +domain.name=127.0.0.1 domain.port=8455 server.port=8455 @@ -30,7 +30,7 @@ core_system_name=EVENTHANDLER log_all_request_and_response=false # Service Registry web-server parameters (to register the Event Handler services) -sr_address=serviceregistry.testcloud2.aitia.arrowhead.eu +sr_address=127.0.0.1 sr_port=8443 # Publishing tolerance: clients can publish events with timestamps X number of minutes before or after the current time @@ -47,15 +47,15 @@ check_interval=60 ### SECURE MODE ### ############################################ -server.ssl.enabled=true -server.ssl.key-store-type=PKCS12 -server.ssl.key-store=classpath:certificates/eventhandler.p12 -server.ssl.key-store-password=123456 -server.ssl.key-alias=eventhandler -server.ssl.key-password=123456 -server.ssl.client-auth=need -server.ssl.trust-store-type=PKCS12 -server.ssl.trust-store=classpath:certificates/truststore.p12 -server.ssl.trust-store-password=123456 - -disable.hostname.verifier=false +server.ssl.enabled=false +# server.ssl.key-store-type=PKCS12 +# server.ssl.key-store=classpath:certificates/eventhandler.p12 +# server.ssl.key-store-password=123456 +# server.ssl.key-alias=eventhandler +# server.ssl.key-password=123456 +# server.ssl.client-auth=need +# server.ssl.trust-store-type=PKCS12 +# server.ssl.trust-store=classpath:certificates/truststore.p12 +# server.ssl.trust-store-password=123456 + +# disable.hostname.verifier=false diff --git a/docker-all/example/properties/gatekeeper.properties b/docker-all/example/properties/gatekeeper.properties index 5cb052051..b6fd01210 100644 --- a/docker-all/example/properties/gatekeeper.properties +++ b/docker-all/example/properties/gatekeeper.properties @@ -15,7 +15,7 @@ spring.jpa.properties.hibernate.format_sql=true spring.jpa.hibernate.ddl-auto=none # Parameters of Gatekeeper web-server -domain.name=0.0.0.0 +domain.name=127.0.0.1 domain.port=8449 server.port=8449 @@ -30,7 +30,7 @@ core_system_name=GATEKEEPER log_all_request_and_response=false # Service Registry web-server parameters (to register the Gatekeeper services) -sr_address=serviceregistry.testcloud2.aitia.arrowhead.eu +sr_address=127.0.0.1 sr_port=8443 # Inter-Cloud communication timeout in milliseconds @@ -46,15 +46,15 @@ gateway_is_mandatory=true ### SECURE MODE ### ############################################ -server.ssl.enabled=true -server.ssl.key-store-type=PKCS12 -server.ssl.key-store=classpath:certificates/gatekeeper.p12 -server.ssl.key-store-password=123456 -server.ssl.key-alias=gatekeeper -server.ssl.key-password=123456 -server.ssl.client-auth=need -server.ssl.trust-store-type=PKCS12 -server.ssl.trust-store=classpath:certificates/truststore.p12 -server.ssl.trust-store-password=123456 - -disable.hostname.verifier=false \ No newline at end of file +server.ssl.enabled=false +# server.ssl.key-store-type=PKCS12 +# server.ssl.key-store=classpath:certificates/gatekeeper.p12 +# server.ssl.key-store-password=123456 +# server.ssl.key-alias=gatekeeper +# server.ssl.key-password=123456 +# server.ssl.client-auth=need +# server.ssl.trust-store-type=PKCS12 +# server.ssl.trust-store=classpath:certificates/truststore.p12 +# server.ssl.trust-store-password=123456 + +# disable.hostname.verifier=false \ No newline at end of file diff --git a/docker-all/example/properties/gateway.properties b/docker-all/example/properties/gateway.properties index f09fb2fb0..af58c7de3 100644 --- a/docker-all/example/properties/gateway.properties +++ b/docker-all/example/properties/gateway.properties @@ -15,7 +15,7 @@ spring.jpa.properties.hibernate.format_sql=true spring.jpa.hibernate.ddl-auto=none # Parameters of Gateway web-server -domain.name=0.0.0.0 +domain.name=127.0.0.1 domain.port=8453 server.port=8453 @@ -30,7 +30,7 @@ core_system_name=GATEWAY log_all_request_and_response=false # Service Registry web-server parameters (to register the Gateway services) -sr_address=serviceregistry.testcloud2.aitia.arrowhead.eu +sr_address=127.0.0.1 sr_port=8443 # Port range for socket openings (to facilitate inter-cloud communication between consumer and provider systems) @@ -41,15 +41,15 @@ max_port=8100 ### SECURE MODE ### ############################################ -server.ssl.enabled=true -server.ssl.key-store-type=PKCS12 -server.ssl.key-store=classpath:certificates/gateway.p12 -server.ssl.key-store-password=123456 -server.ssl.key-alias=gateway -server.ssl.key-password=123456 -server.ssl.client-auth=need -server.ssl.trust-store-type=PKCS12 -server.ssl.trust-store=classpath:certificates/truststore.p12 -server.ssl.trust-store-password=123456 - -disable.hostname.verifier=false +server.ssl.enabled=false +# server.ssl.key-store-type=PKCS12 +# server.ssl.key-store=classpath:certificates/gateway.p12 +# server.ssl.key-store-password=123456 +# server.ssl.key-alias=gateway +# server.ssl.key-password=123456 +# server.ssl.client-auth=need +# server.ssl.trust-store-type=PKCS12 +# server.ssl.trust-store=classpath:certificates/truststore.p12 +# server.ssl.trust-store-password=123456 + +# disable.hostname.verifier=false diff --git a/docker-all/example/properties/orchestrator.properties b/docker-all/example/properties/orchestrator.properties index 13902b017..18fd636c8 100644 --- a/docker-all/example/properties/orchestrator.properties +++ b/docker-all/example/properties/orchestrator.properties @@ -15,7 +15,7 @@ spring.jpa.properties.hibernate.format_sql=true spring.jpa.hibernate.ddl-auto=none # Orchestrator web-server parameters -domain.name=0.0.0.0 +domain.name=127.0.0.1 domain.port=8441 server.port=8441 @@ -30,7 +30,7 @@ core_system_name=ORCHESTRATOR log_all_request_and_response=false # Service Registry web-server parameters (to register the Orchestrator services) -sr_address=serviceregistry.testcloud2.aitia.arrowhead.eu +sr_address=127.0.0.1 sr_port=8443 #If true, operational gatekeeper must be present @@ -40,15 +40,15 @@ gatekeeper_is_present=true ### SECURE MODE ### ############################################ -server.ssl.enabled=true -server.ssl.key-store-type=PKCS12 -server.ssl.key-store=classpath:certificates/orchestrator.p12 -server.ssl.key-store-password=123456 -server.ssl.key-alias=orchestrator -server.ssl.key-password=123456 -server.ssl.client-auth=need -server.ssl.trust-store-type=PKCS12 -server.ssl.trust-store=classpath:certificates/truststore.p12 -server.ssl.trust-store-password=123456 - -disable.hostname.verifier=false +server.ssl.enabled=false +# server.ssl.key-store-type=PKCS12 +# server.ssl.key-store=classpath:certificates/orchestrator.p12 +# server.ssl.key-store-password=123456 +# server.ssl.key-alias=orchestrator +# server.ssl.key-password=123456 +# server.ssl.client-auth=need +# server.ssl.trust-store-type=PKCS12 +# server.ssl.trust-store=classpath:certificates/truststore.p12 +# server.ssl.trust-store-password=123456 + +# disable.hostname.verifier=false diff --git a/docker-all/example/properties/serviceregistry.properties b/docker-all/example/properties/serviceregistry.properties index 9cb7f4ecb..5bc3c1e8d 100644 --- a/docker-all/example/properties/serviceregistry.properties +++ b/docker-all/example/properties/serviceregistry.properties @@ -15,7 +15,7 @@ spring.jpa.properties.hibernate.format_sql=true spring.jpa.hibernate.ddl-auto=none # Service Registry web-server parameters -domain.name=0.0.0.0 +domain.name=127.0.0.1 domain.port=8443 server.port=8443 @@ -53,15 +53,15 @@ use_strict_service_intf_name_verifier=true ### SECURE MODE ### ############################################ -server.ssl.enabled=true -server.ssl.key-store-type=PKCS12 -server.ssl.key-store=classpath:certificates/serviceregistry.p12 -server.ssl.key-store-password=123456 -server.ssl.key-alias=serviceregistry -server.ssl.key-password=123456 -server.ssl.client-auth=need -server.ssl.trust-store-type=PKCS12 -server.ssl.trust-store=classpath:certificates/truststore.p12 -server.ssl.trust-store-password=123456 +server.ssl.enabled=false +# server.ssl.key-store-type=PKCS12 +# server.ssl.key-store=classpath:certificates/serviceregistry.p12 +# server.ssl.key-store-password=123456 +# server.ssl.key-alias=serviceregistry +# server.ssl.key-password=123456 +# server.ssl.client-auth=need +# server.ssl.trust-store-type=PKCS12 +# server.ssl.trust-store=classpath:certificates/truststore.p12 +# server.ssl.trust-store-password=123456 -disable.hostname.verifier=false +# disable.hostname.verifier=false diff --git a/docker-all/example/pub-sub/event_handler_subscribe_to_events.py b/docker-all/example/pub-sub/event_handler_subscribe_to_events.py deleted file mode 100644 index af3be38eb..000000000 --- a/docker-all/example/pub-sub/event_handler_subscribe_to_events.py +++ /dev/null @@ -1,29 +0,0 @@ -import requests - -EVENTHANDLER_URL = "http://localhost:8455/eventhandler/subscribe" - -payload = { - "eventType": "room-temperature-event", - "subscriberSystem": { - "systemName": "subscriber-1", - "address": "host.docker.internal", - "port": 8083, - "authenticationInfo": None, - "metadata": {} - }, - "notifyUri": "/room-temperature-event", - "matchMetaData": False, - "filterMetaData": {}, - "sources": [] # 👈 Wildcard: accept all -} - - - -try: - response = requests.post(EVENTHANDLER_URL, json=payload) - if response.ok: - print("[✅] Subscription created successfully with EventHandler.") - else: - print(f"[❌] Subscription failed: {response.status_code} - {response.text}") -except requests.exceptions.RequestException as e: - print(f"[🚨] Could not reach EventHandler: {e}") \ No newline at end of file diff --git a/docker-all/example/pub-sub/register_publisher.py b/docker-all/example/pub-sub/register_publisher.py deleted file mode 100644 index 89faeaeb4..000000000 --- a/docker-all/example/pub-sub/register_publisher.py +++ /dev/null @@ -1,23 +0,0 @@ -import requests - -REGISTRY_URL = "http://localhost:8443/serviceregistry/register" - -payload = { - "serviceDefinition": "room-temperature-sensor", - "providerSystem": { - "systemName": "room-temp-sensor-1", - "address": "localhost", - "port": 8082 - }, - "serviceUri": "/room-temperature-event", - "secure": "NOT_SECURE", - "interfaces": [ - "HTTP-INSECURE-JSON" - ], - "metadata": { - "unit": "celsius" - } -} - -response = requests.post(REGISTRY_URL, json=payload) -print("[✅] Publisher registration:", response.status_code, response.text) \ No newline at end of file diff --git a/docker-all/example/pub-sub/sensor_publisher.py b/docker-all/example/pub-sub/sensor_publisher.py deleted file mode 100644 index d32c02fee..000000000 --- a/docker-all/example/pub-sub/sensor_publisher.py +++ /dev/null @@ -1,37 +0,0 @@ -import requests -import json -import time -import random -from datetime import datetime, timezone # Import timezone - -PUBLISH_URL = "http://localhost:8455/eventhandler/publish" - -while True: - temp = round(random.uniform(18.0, 26.0), 2) - sensor_id = "room-temp-sensor-1" - - payload = { - "eventType": "room-temperature-event", - "metaData": { - "unit": "celsius" - }, - "payload": json.dumps({ - "sensor_id": sensor_id, - "temperature": temp - }), - "source": { - "systemName": sensor_id, - "address": "localhost", - "port": 8082 - }, - # Corrected timestamp format - "timeStamp": datetime.now(timezone.utc).isoformat(timespec='milliseconds').replace('+00:00', 'Z') - } - - try: - res = requests.post(PUBLISH_URL, json=payload) - print(f"[📤 SENT] Published {temp}°C | Status: {res.status_code} | Response: {res.text}") - except Exception as e: - print("[🚨] Failed to publish:", e) - - time.sleep(10) \ No newline at end of file diff --git a/docker-all/example/pub-sub/subscriber_registerer.py b/docker-all/example/pub-sub/subscriber_registerer.py deleted file mode 100644 index df7825728..000000000 --- a/docker-all/example/pub-sub/subscriber_registerer.py +++ /dev/null @@ -1,24 +0,0 @@ -import requests - -REGISTRY_URL = "http://localhost:8443/serviceregistry/register" - -payload = { - "serviceDefinition": "room-temp-subscriber", - "providerSystem": { - "systemName": "subscriber-1", - "address": "host.docker.internal", - "port": 8083 - }, - "serviceUri": "/room-temperature-event", - "secure": "NOT_SECURE", - "interfaces": [ - "HTTP-INSECURE-JSON" - ], - "metadata": { - "role": "logger", - "event_type": "room-temperature-event" - } -} - -response = requests.post(REGISTRY_URL, json=payload) -print("[✅] Subscriber 1 registration:", response.status_code, response.text) \ No newline at end of file diff --git a/docker-all/example/pub-sub/subscriber_server.py b/docker-all/example/pub-sub/subscriber_server.py deleted file mode 100644 index 189869cbf..000000000 --- a/docker-all/example/pub-sub/subscriber_server.py +++ /dev/null @@ -1,40 +0,0 @@ -from http.server import BaseHTTPRequestHandler, HTTPServer -import json - -class TempRequestHandler(BaseHTTPRequestHandler): - def do_POST(self): - print(f"[🔍] Incoming POST at path: {self.path}") - if self.path != "/room-temperature-event": - self.send_error(404, "Wrong endpoint.") - return - content_length = int(self.headers['Content-Length']) - post_data = self.rfile.read(content_length).decode("utf-8") - try: - # First parse the full event payload - full_payload = json.loads(post_data) - raw_sensor_data = full_payload.get("payload") - - # payload is a JSON string — parse again! - sensor_data = json.loads(raw_sensor_data) - - temperature = sensor_data.get("temperature") - sensor_id = sensor_data.get("sensor_id") - - print(f"[📥 RECEIVED] Temperature: {temperature}°C from sensor: {sensor_id}") - self.send_response(200) - except json.JSONDecodeError: - print("[❌] Invalid JSON received.") - self.send_response(400) - self.end_headers() - - def do_GET(self): - self.send_error(501, "GET method not supported.") - -if __name__ == "__main__": - # --- IMPORTANT CHANGE HERE --- - # Your subscriber server runs on the host, so it should bind to 'localhost' or '0.0.0.0' - # 'host.docker.internal' is for Docker containers to reach the host, not for the host to bind to itself. - server_address = ("localhost", 8083) # Use "0.0.0.0" if "localhost" doesn't work for some reason - httpd = HTTPServer(server_address, TempRequestHandler) - print("[🌐] Subscriber running on http://localhost:8083") - httpd.serve_forever() \ No newline at end of file diff --git a/docker-all/example/pub-sub/unregister_publisher.py b/docker-all/example/pub-sub/unregister_publisher.py deleted file mode 100644 index 1798c33c1..000000000 --- a/docker-all/example/pub-sub/unregister_publisher.py +++ /dev/null @@ -1,23 +0,0 @@ -import requests - -# Base URL for the unregister endpoint -REGISTRY_URL = "http://localhost:8443/serviceregistry/unregister" - -# Define the parameters as a dictionary, matching the expected query parameter names -params = { - "service_definition": "room-temperature-sensor", - "system_name": "room-temp-sensor-1", - "address": "localhost", - "port": 8082, - "service_uri": "/room-temperature-event" -} - -try: - # Use params argument for DELETE requests to send data as query parameters - response = requests.delete(REGISTRY_URL, params=params) - if response.ok: - print("[✅] Publisher unregistration successful:", response.status_code) - else: - print(f"[❌] Publisher unregistration failed: {response.status_code} - {response.text}") -except requests.exceptions.RequestException as e: - print(f"[🚨] Could not reach Service Registry for unregistration: {e}") \ No newline at end of file diff --git a/docker-all/example/pub-sub/unregister_subscriber.py b/docker-all/example/pub-sub/unregister_subscriber.py deleted file mode 100644 index 26d3e1c60..000000000 --- a/docker-all/example/pub-sub/unregister_subscriber.py +++ /dev/null @@ -1,23 +0,0 @@ -import requests - -# Base URL for the unregister endpoint -REGISTRY_URL = "http://localhost:8443/serviceregistry/unregister" - -# Define the parameters as a dictionary, matching the expected query parameter names -params = { - "service_definition": "room-temp-subscriber", - "system_name": "subscriber-1", - "address": "host.docker.internal", - "port": 8083, - "service_uri": "/room-temperature-event" -} - -try: - # Use params argument for DELETE requests to send data as query parameters - response = requests.delete(REGISTRY_URL, params=params) - if response.ok: - print("[✅] Subscriber unregistration successful:", response.status_code) - else: - print(f"[❌] Subscriber unregistration failed: {response.status_code} - {response.text}") -except requests.exceptions.RequestException as e: - print(f"[🚨] Could not reach Service Registry for unregistration: {e}") \ No newline at end of file diff --git a/docker-all/example/sql/privileges/gams_privileges.sql b/docker-all/example/sql/privileges/gams_privileges.sql new file mode 100644 index 000000000..c8c40447e --- /dev/null +++ b/docker-all/example/sql/privileges/gams_privileges.sql @@ -0,0 +1,68 @@ +USE `arrowhead`; + +REVOKE ALL, GRANT OPTION FROM 'gams'@'localhost'; + +GRANT ALL PRIVILEGES ON `arrowhead`.`logs` TO 'gams'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_action` TO 'gams'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_action_plan` TO 'gams'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_processable_action` TO 'gams'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_composite_action` TO 'gams'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_composite_action_actions` TO 'gams'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_event_action` TO 'gams'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_logging_action` TO 'gams'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_action_plan_actions` TO 'gams'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_event` TO 'gams'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_http_body_api_call` TO 'gams'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_http_url_api_call` TO 'gams'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_instance` TO 'gams'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_sensor` TO 'gams'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_sensor_data` TO 'gams'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_sensor_data_double` TO 'gams'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_sensor_data_long` TO 'gams'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_sensor_data_string` TO 'gams'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_aggregation` TO 'gams'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_counting_aggregation` TO 'gams'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_timeout_guard` TO 'gams'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_analysis` TO 'gams'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_setpoint_analysis` TO 'gams'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_counting_analysis` TO 'gams'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_timeout_guard` TO 'gams'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_policy` TO 'gams'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_match_policy` TO 'gams'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_transform_policy` TO 'gams'@'localhost'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_api_policy` TO 'gams'@'localhost'; + +REVOKE ALL, GRANT OPTION FROM 'gams'@'%'; + + +GRANT ALL PRIVILEGES ON `arrowhead`.`logs` TO 'gams'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_action` TO 'gams'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_action_plan` TO 'gams'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_processable_action` TO 'gams'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_composite_action` TO 'gams'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_composite_action_actions` TO 'gams'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_event_action` TO 'gams'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_event_action` TO 'gams'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_action_plan_actions` TO 'gams'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_event` TO 'gams'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_http_body_api_call` TO 'gams'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_http_url_api_call` TO 'gams'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_instance` TO 'gams'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_sensor` TO 'gams'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_sensor_data` TO 'gams'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_sensor_data_double` TO 'gams'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_sensor_data_long` TO 'gams'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_sensor_data_string` TO 'gams'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_aggregation` TO 'gams'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_counting_aggregation` TO 'gams'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_timeout_guard` TO 'gams'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_analysis` TO 'gams'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_setpoint_analysis` TO 'gams'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_counting_analysis` TO 'gams'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_timeout_guard` TO 'gams'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_policy` TO 'gams'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_match_policy` TO 'gams'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_transform_policy` TO 'gams'@'%'; +GRANT ALL PRIVILEGES ON `arrowhead`.`gams_api_policy` TO 'gams'@'%'; + +FLUSH PRIVILEGES; diff --git a/docker-all/example/tennis_demo/publisher.py b/docker-all/example/tennis_demo/publisher.py new file mode 100644 index 000000000..a6420ef09 --- /dev/null +++ b/docker-all/example/tennis_demo/publisher.py @@ -0,0 +1,23 @@ +import requests +import json +import time + +EVENTHANDLER_URL = "http://localhost:8455/eventhandler/publish" + +event_payload = { + "eventType": "ball-move-event", + "source": { + "systemName": "tennis-camera", + "address": "localhost", + "port": 8080 + }, + "payload": json.dumps({"ball_position": [3.2, 7.1], "speed": 42}), + "metadata": {} +} + +print("[📡] Publishing ball movement event...") +response = requests.post(EVENTHANDLER_URL, json=event_payload) +if response.ok: + print("[✅] Event published.") +else: + print(f"[❌] Failed to publish event: {response.status_code} - {response.text}") diff --git a/docker-all/example/tennis_demo/register_publisher.py b/docker-all/example/tennis_demo/register_publisher.py new file mode 100644 index 000000000..a84ff1ec5 --- /dev/null +++ b/docker-all/example/tennis_demo/register_publisher.py @@ -0,0 +1,19 @@ +import requests + +SERVICE_REGISTRY_URL = "http://localhost:8443/serviceregistry/register" + +payload = { + "systemName": "ball-camera", + "address": "localhost", + "port": 8081, + "authenticationInfo": None +} + +try: + response = requests.post(SERVICE_REGISTRY_URL, json=payload) + if response.ok: + print("[✅] Publisher registered successfully.") + else: + print(f"[❌] Publisher registration failed: {response.status_code} - {response.text}") +except Exception as e: + print("[❌] Exception occurred:", str(e)) diff --git a/docker-all/example/tennis_demo/register_subscriber.py b/docker-all/example/tennis_demo/register_subscriber.py new file mode 100644 index 000000000..d0ed9375f --- /dev/null +++ b/docker-all/example/tennis_demo/register_subscriber.py @@ -0,0 +1,19 @@ +import requests + +SERVICE_REGISTRY_URL = "http://localhost:8443/serviceregistry/register" + +payload = { + "systemName": "movement-logger", + "address": "localhost", + "port": 8083, + "authenticationInfo": None +} + +try: + response = requests.post(SERVICE_REGISTRY_URL, json=payload) + if response.ok: + print("[✅] Subscriber registered successfully.") + else: + print(f"[❌] Subscriber registration failed: {response.status_code} - {response.text}") +except Exception as e: + print("[❌] Exception occurred:", str(e)) diff --git a/docker-all/example/tennis_demo/subscribe_event.py b/docker-all/example/tennis_demo/subscribe_event.py new file mode 100644 index 000000000..bc5756edd --- /dev/null +++ b/docker-all/example/tennis_demo/subscribe_event.py @@ -0,0 +1,35 @@ +import requests + +EVENT_HANDLER_URL = "http://localhost:8455/eventhandler/subscribe" + +payload = { + "eventType": "ball-movement-event", + "subscriberSystem": { + "systemName": "movement-logger", + "address": "localhost", + "port": 8083, + "authenticationInfo": None, + "metadata": {} + }, + "notifyUri": "/ball-detected", # باید این URI توی سابسکرایبرت هندل بشه + "matchMetaData": False, + "filterMetaData": {}, + "sources": [ + { + "systemName": "ball-camera", + "address": "localhost", + "port": 8081, + "authenticationInfo": None, + "metadata": {} + } + ] +} + +try: + response = requests.post(EVENT_HANDLER_URL, json=payload) + if response.ok: + print("[✅] Subscription created successfully.") + else: + print(f"[❌] Subscription failed: {response.status_code} - {response.text}") +except Exception as e: + print("[❌] Exception occurred:", str(e)) diff --git a/docker-all/example/tennis_demo/subscriber.py b/docker-all/example/tennis_demo/subscriber.py new file mode 100644 index 000000000..1e16b51e5 --- /dev/null +++ b/docker-all/example/tennis_demo/subscriber.py @@ -0,0 +1,19 @@ +from http.server import HTTPServer, BaseHTTPRequestHandler +import json + +class SimpleSubscriber(BaseHTTPRequestHandler): + def do_POST(self): + content_length = int(self.headers['Content-Length']) + post_body = self.rfile.read(content_length) + data = json.loads(post_body.decode('utf-8')) + + print("[🎾] Ball movement detected:", data) + + self.send_response(200) + self.end_headers() + +if __name__ == "__main__": + server_address = ('', 8083) + httpd = HTTPServer(server_address, SimpleSubscriber) + print("[🟢] Listening for ball movement events on port 8083...") + httpd.serve_forever() diff --git a/scripts/ .pub b/scripts/ .pub new file mode 100644 index 000000000..e69de29bb diff --git a/scripts/certificate_generation/lib_certs.sh b/scripts/certificate_generation/lib_certs.sh index a1ef62b2d..b377d2c85 100644 --- a/scripts/certificate_generation/lib_certs.sh +++ b/scripts/certificate_generation/lib_certs.sh @@ -283,7 +283,7 @@ create_sysop_keystore() { fi if [[ "${CREATE_KEYSTORE_OR_PUB_FILE}" == "1" ]]; then - create_system_keystore "$1" "$2" "$3" "$4" "$5" "$6" "dns:localost,ip:127.0.0.1" + create_system_keystore "$1" "$2" "$3" "$4" "$5" "$6" "dns:localhost,ip:127.0.0.1" fi if [ ! -f "${SYSOP_CA_FILE}" ]; then diff --git a/scripts/certificate_generation/mk_certs.sh b/scripts/certificate_generation/mk_certs.sh index 144145256..e99bc9792 100644 --- a/scripts/certificate_generation/mk_certs.sh +++ b/scripts/certificate_generation/mk_certs.sh @@ -11,7 +11,7 @@ cd .. create_root_keystore \ "cloud-root/crypto/root.p12" "arrowhead.eu" -# RELAY "CLOUD" +# RELAY "CLOUD" (Keep this as is, assuming you might interact with external relays) create_cloud_keystore \ "cloud-root/crypto/root.p12" "arrowhead.eu" \ @@ -27,20 +27,27 @@ create_truststore \ "cloud-relay/crypto/truststore.p12" \ "cloud-root/crypto/root.crt" "arrowhead.eu" -# CONSUMER CLOUD +# CONSUMER CLOUD (Modified for Localhost Setup) + +# Use a generic local cloud name for your local setup +LOCAL_CLOUD_NAME="local.arrowhead.eu" # <-- NEW: Define your local cloud name create_cloud_keystore \ "cloud-root/crypto/root.p12" "arrowhead.eu" \ - "cloud-data-consumer/crypto/conet-demo-consumer.p12" "conet-demo-consumer.ltu.arrowhead.eu" + "cloud-data-consumer/crypto/${LOCAL_CLOUD_NAME}.p12" "${LOCAL_CLOUD_NAME}" create_consumer_system_keystore() { SYSTEM_NAME=$1 + # Construct the full FQDN for the system based on the LOCAL_CLOUD_NAME + SYSTEM_FQDN="${SYSTEM_NAME}.${LOCAL_CLOUD_NAME}" + # Include localhost and arrowhead-core, plus the system's own FQDN + SYSTEM_SAN="DNS:localhost,IP:127.0.0.1,DNS:arrowhead-core,DNS:${SYSTEM_FQDN}" create_system_keystore \ "cloud-root/crypto/root.p12" "arrowhead.eu" \ - "cloud-data-consumer/crypto/conet-demo-consumer.p12" "conet-demo-consumer.ltu.arrowhead.eu" \ - "cloud-data-consumer/crypto/${SYSTEM_NAME}.p12" "${SYSTEM_NAME}.conet-demo-consumer.ltu.arrowhead.eu" \ - "dns:core.consumer,ip:172.23.2.13,dns:localhost,ip:127.0.0.1" + "cloud-data-consumer/crypto/${LOCAL_CLOUD_NAME}.p12" "${LOCAL_CLOUD_NAME}" \ + "cloud-data-consumer/crypto/${SYSTEM_NAME}.p12" "${SYSTEM_FQDN}" \ + "${SYSTEM_SAN}" } create_consumer_system_keystore "authorization" @@ -53,18 +60,21 @@ create_consumer_system_keystore "gateway" create_consumer_system_keystore "orchestrator" create_consumer_system_keystore "serviceregistry" create_consumer_system_keystore "plantdescriptionengine" +create_consumer_system_keystore "certificateauthority" +# Corrected create_sysop_keystore call for Consumer Cloud (uses LOCAL_CLOUD_NAME) create_sysop_keystore \ "cloud-root/crypto/root.p12" "arrowhead.eu" \ - "cloud-data-consumer/crypto/conet-demo-consumer.p12" "conet-demo-consumer.ltu.arrowhead.eu" \ - "cloud-data-consumer/crypto/sysop.p12" "sysop.conet-demo-consumer.ltu.arrowhead.eu" + "cloud-data-consumer/crypto/${LOCAL_CLOUD_NAME}.p12" "${LOCAL_CLOUD_NAME}" \ + "cloud-data-consumer/crypto/sysop.p12" "sysop.${LOCAL_CLOUD_NAME}" +# Corrected create_truststore call for Consumer Cloud (uses LOCAL_CLOUD_NAME.crt) create_truststore \ "cloud-data-consumer/crypto/truststore.p12" \ - "cloud-data-consumer/crypto/conet-demo-consumer.crt" "conet-demo-consumer.ltu.arrowhead.eu" \ + "cloud-data-consumer/crypto/${LOCAL_CLOUD_NAME}.crt" "${LOCAL_CLOUD_NAME}" \ "cloud-relay/crypto/conet-demo-relay.crt" "conet-demo-relay.ltu.arrowhead.eu" -# PRODUCER CLOUD +# PRODUCER CLOUD (Keep as is, assuming you don't modify its functionality) create_cloud_keystore \ "cloud-root/crypto/root.p12" "arrowhead.eu" \ @@ -99,4 +109,4 @@ create_sysop_keystore \ create_truststore \ "cloud-data-producer/crypto/truststore.p12" \ "cloud-data-producer/crypto/conet-demo-producer.crt" "conet-demo-producer.ltu.arrowhead.eu" \ - "cloud-relay/crypto/conet-demo-relay.crt" "conet-demo-relay.ltu.arrowhead.eu" + "cloud-relay/crypto/conet-demo-relay.crt" "conet-demo-relay.ltu.arrowhead.eu" \ No newline at end of file diff --git a/scripts/cloud-data-consumer/crypto/authorization.p12 b/scripts/cloud-data-consumer/crypto/authorization.p12 new file mode 100644 index 0000000000000000000000000000000000000000..d052d26aa6ba98d7d9498eca52b6d283a780d62a GIT binary patch literal 5452 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 M3*!FJ^Un(WU-I@g{{R30 literal 0 HcmV?d00001 diff --git a/scripts/cloud-data-consumer/crypto/certificateauthority.pub b/scripts/cloud-data-consumer/crypto/certificateauthority.pub new file mode 100644 index 000000000..8a2876cf4 --- /dev/null +++ b/scripts/cloud-data-consumer/crypto/certificateauthority.pub @@ -0,0 +1,9 @@ +-----BEGIN PUBLIC KEY----- +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoqVzUznsnb/ZC7mLPIvF +e1RQtGg25V5I9NR83B3/INQYvIGTaQbv1G+iOJJxRDn8AmvR/v/GFQoCTJ+kcE68 +x6yAywWSsUicZFOOgFLW6vh1k8mRWZlW9IXMPzP0LNUzW0oMyqbkS8nXyL8pAkFS +fsWKPxjvKkHOgnQhH97CJqXyF+/FMwK/X8FT+Kd3HvY+klJQ0pfyIZU5AHWSRz83 +S9CnhePyRKYZt8v2O4VV3szTsAX4aJjIPlvPcYSokR14FrjRo58y4ruPdX6ntq2V +QDyCP624kUz8IQn31jKv8xO6zUU6/PZg+ov86+BW6iIKUP4LRpLC8HNFD+pBkH69 +wwIDAQAB +-----END PUBLIC KEY----- diff --git a/scripts/cloud-data-consumer/crypto/contractproxy.p12 b/scripts/cloud-data-consumer/crypto/contractproxy.p12 new file mode 100644 index 0000000000000000000000000000000000000000..e47c17de071043e4c24461bd88ffd9296f71a048 GIT binary patch literal 5452 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 YbE?aMd13|=4tz4W2^{h7ND7C7 zY4=U!%IOP#r@bSI7}BWN{S+^!3+%gBR+iKM0f&JniZ*R2N=ED^k0UVz8=|!;RrAhMKldz-<5xyx1gke9 zy^0>~j9Wep?6&KL-@iAcSbw)Bte{RqQ88Z?p1Q=|lcm>lvB(6?N_ zXobOYjD-T%7jVaP6&_-Bc&qB~R!bf5O)G&4-o)tck=C#hG)q~P%+w?>XmL2M-0KV} z){z*KWf5uW5tHz`Tnfwe(yl8U|KNCsiLwnIH$?B5oL2ctQzq$*W4hi~Txfa!a1kMA zNJQHL*zx=3)L)3e*1 z(?(=MF^74u+G<{RA$~BSU~;e8+>41OqTfVg`CxKL`j7+eP6R!Li%768gZ>?{peix`wypGyoqXr(QJz|p zQm+}gMKzMAyqP-AW|zP#8@-%?6KGqN4EdM?fc1kAi$TCMHm|sT22R5M7K9-A~BNWQ|vq{z{# z4WR}5E?bt}kEl|rUZ1EW_Gy9dAn64Jkli%-~8T%?`2-}o3dUiy~ z+uO0E-%1(XJn9~MoQP+0LZ*U1HYd4$HRSljF=Ke(-kEJrSU+NYBECA>r$(-+GGmde ztwKUL2WCYXAyZ^7n+s}E)+Qn|<}x0dZMX{TUZtmo5o!n0bsRk(k(A&x0-~=tEs*=O z%ju1CEVFk;86Ru6Ief_=te}{giTO+=AZWGhkviZw*78(2Sk<0FCL+nGLnb!HZQ(60 zMwdg)Zx_rGhn|$jd+|*u{zh@@<*ihNiwXVD7S8J3@LN(^HDv( zl6oTy<-N_3r>MAByJvvr*Hir?{l!_`>Te_S#drfU&u7+0I^Q7J)hCSy8cwlt|2Q2% z5EY=Bj5c)7nZXd7Qab#YkTJx#gX#pJ61G+0D0N~l$=yFcS@ zsjn$8#4KRb{&EPmXgM{b%9XvzqnplI7fM@yDDbQ-V2_XC#`3~g4=v5PhGtnBO<*n$ zV`B@4gLQ4D?)+Ln>sq5kq~r}=SBu%Tw2DSwM-!V$6ED>RfXj>z(^|O)c!L21wvPxU)I=dXM@2y-kn84E~vNe!(5eh=4CYqzsb<2kBCck zOD7~;)Dy1tPh1kwiYnff2iO5@0A9EC6yOGU4tN3Z2A}};08fB0!1b0qy;WRq&o;Nj z^LF+HINho?w=Ut^?hWVocO9K5EtuNS8D-BdDkXsszbA1|LJ}b+3J)Vc{pS(^q#%rZ z;})%gfPmXJ_pbu{zk)rUzJ1LuGjz4_6#70fs8ee-vC!}T6YM7nBdtyy7nn{Rr@|Jq zA(@aca%+BpjT8bsn1rov^8EH{R2F`UQ^2uuPim7}DplhKu0Z?(l@G&{sF6XOatkIU zOs?9SmX>FJMS0T7wm1$Ok#LLE! zo?hPUiR}?-{F|`SgV4&fV=|Xi?lT+V7S(|8!Ano%@RhBtH2;hYpIHPx zw~Kx}OJ=)}VZoO(O1)J47Y=>wH?%=szAlULUyneBkOolyT%B{%f72hvkXL^c;xLcM zWgj4=8P|C#tS_WE&?~4(8+7%yy~Wt~dy6=!u)2Jb+8e%on6#`-aQB_k@o-eFgE zmsD@+1Kp8|bo0u+8XnL{h|al}ieW{yEjl-i7>7@fjPL{>JGl z6TCl^K4yEzvIIsfewg>2R+>x9`nNOnkDyA9FYSg4ndBHqG2#MCr5l4sU`ZB}G|n!3 z2+@P;TUce!1t$3!C#zoJBVi-vP1z9(j0I_@N#r0|J>cOW4ppmJEjBJNNq?PO-&mvJSVQ);;jSDw94{(w$MpoE{;p%S|N z!so7JSd%R_XAz1NQ-;RG?cdbro{fI`Laq~{*4)6ln>}8%wE;^WJ6QAY_Uo<5PJ5By zalBtT`wQvQgwtzVyRtp38tvHVOJb&Y5aC~0+ZP4t6nE@o7*`z!abnRIZvwL4jTOtb z-jlJY(yqo8Wa!ni9qqa3pZw@`s{xR|_CFA^tEm7RT&O3D{~b_HEiPL6{bQyR=4vhq zwc9L+1zt8{1CMQ48zGakQCm<HlU@^x!D3Or8rxtCA7d>w-Jj~qrr$P~1+lT4ReujgsYo$YbU8{{1)^hoJ^fy- zXVfrU!6#SgU5wnJ8iZKw1;r7YabX=k}Rz4B>x4h;(k=2q&@5_Y;&2dx2 z^Bic6^epO0p~6qjTyBqp_(Y!%QdF^Z8RF*2&f1kq-X1cAaW!yjPwB_r;{g5iaJ&u- z4*qFQTq~oonj7|doij1sQY!F~Mw|B2d`P0|epkiP1!rOTVqZz1DHS(W1}Y+K`Snox zkdgaz`g7S*hMiaw&;9pm?L04RU_YwTV^P(94Q7wajw4k@nbRN`4!r6--K7}qG*==1 ziAr@`NR};}Sq;DPeau%*zPA!X7fH%!tIx7uReSSgKuRI?9Wb>XZj1rrZx5^X0$leZ~l9or@_{>tFek4tJ6q;(0E^ZPwUG4@U8F0xPwSYt8>%MAI2LB;h zOo$t>JmU}2LyBuIQS@fL#h}Pj?sq_;Qka(4+LYMhIRATbiY<+ln@98LZ&wNru0D&w zVc>3X;V#4CvG}UskrnPpkGD=yMZ`aRH!Twxw>;J@UzKoQs_EhQGe%@l=f+(4WCIC= zd>Zr0UR~Xrh?P^$XwX`Rd}6uuw`(kDxLVkN#>p=Eb=n(D5{Ma*nfBuDfW*fMmB&$p zekHIm!vkNSFh}ZT1VWnKbr`?#6f`Cb?DVs`K&Y@STXbY!(F;mlcCk5`s7QF1x<+RyT@Qc4Ll@ zY=aC$m!`aStMB}M59bAV?K697yg`{Mrx^w`3JWVD#ok9!U(B5L<;%Z)m1vi!|2gT$ zvw^5jHP&fwgajf5Qc*YHcUw(ryIwLqr~(dXz5kQ1IvtY^ZoG9O0k0-WPtS98e*TT9 zRKNdr^t(@5=eLDD+i%bBG@L-2%#*2yKD)6a&(CEfqgf%lV8d^JX$~qcK=$i&nhZq+T(Y3TqZG?(*R*aXm+FEm$1ov$>FnuFz zpm5?SOrs3bdnq|x)X6c_MX$|H!YX^|o6x-NQ^SM%dOtrdDW6qy9Xj$5(1jCtpZetw ztkBHiJ(r<2?j~`=KF^vl3U(@w6)yCbglqebzuX_?*;=MYeC%xqc>7q$jPb_AbL5XU z-&Zn%r}vp=L2)aJ-kMyUmeLKoHm-YUi3DYor%oyVtF62!y8;EOHMPB>{63JvaoQfU z%YCzWx!R+4V&jS+rSEZNB0Y3Yq0WNr%sUgE6OXd=7LD+24Ka;L`fKtBZ{EeCV@Y-h zjOgP=y(V}2dFkB)n-p#$C+6h^dfUwJB~fD`d_v};q8}DP8q0l4ZcD+=>^;WI_|>HA z51~u2y5K+2(GRQJ{1nSN_EuA7b85wlA_Zg?^3Tu&6sac7{1G>_OMy$8C1ui>h+|~= zLEV>4iH{0Yvj!)GdGTtSGcrtDou<{_>S_wq=R~u)3_9ngN=xj)jr@ShDia5d*{fg2 zqINv(M_fwD8`OQ(~8|lIncR1hr(zayj z?7!k0_*+D2gGij}X?^>B$uWm7YjMn50#eJ|E_B|FyU`{W%u$i*u7D(E*ueZSS5+RCbs zoyw)lLqv99-jQ$Mhq>#;Jf4YNt0H0w zvL-9p-g`_9%cgbS)lpKfu*54kW)h`rxm@9wqd)gHmDdbCARWRSmR5itPm;tM6z8qU zS0Rb{I&ep|2^`ax2rXEy_il>Qz|UYS9H9!=D&5N`C=+Q1azB}DULBFRZOuobx(K1I zVgRyLWWPNfkQ((%;V|7YShS2j6`MlsG}51oc=I|eNS9te_QgYqC9sdixh^D)vfHSkvGFSX6W3f+U!%V6JXiiKs{*8d%E-#D6hGm>2ny%A=gnF<`@wRi zG`ew~QJTK|y3U;tf#AcreK5YMU_9Czbl1JxVz&BKd3894f7$e*XBcZ-NE>c81Mp?w+noWuv;Dmic&{tcT>(;u;K zUjAC|M7?TVVPZ=*w9=>WNx@os_+ZfGy0sw6C!D;(aH=?HU9+t)C;ZdB9@)z!G0V@Y zEX?C0l8SWf-4SJ081KNzhcap$nxFJ5JsSa=bL%~X=myG z3Z#&CRAJrOY=!T%rN1Rn_2j;wD${$@;VT;4oO;gt1C0zEZE84PsB;RGsn`*}(Ah`l zq3&8B&~~%z%V^Q(8vFh)7pAe7Rbg(Oa=j{G=jW^n@VYy)9;RJwg4CmzDf$G2>mOaq z$L?~*$q5tW;pOr=A|y|{)m(j7)D-B@Cj#>D+)=*=-}CnvAo{5>ys@e?a@YF;6Vz}m zxG0?LpZ`S=5FY?$w>z-9_a>Kj;Y~Z^I{;L{TeR!yc`9_8`y1W(YQ!6CQ=4Ni~&2KV5uK@wa74DRkOfk1E{Gz9qB z+O2zQpLQR*zSG^OzsIgR2LdIQLjod0px{$f3^te&>=p-z2F!a^llaj}MzWW)nj<%+ z6vaRb6uQklR(n6Am7Fo&-2MDTZ}3Q}>jrCH#{(mRPdd1vk@?M7zAfh^`*Bu4KDLcH zf${A0d{jaa1}6fqWadOK*CRp7=@Q?#oa&&!H^#n`ZiJkS?TGemUw6olrHC&TF8;@4 zdm`t_ikJn5UK%!+JPm*1EhA-wmP+-$4mFw3Y%>Y49$FP@ZuYka`u9uM;I=byan25H z8~OygyTs3=XP(Mr{|+YB&~I22Qzq|13>^8D{z_#G%wqP#8GYwZ8L@uc#GW>02;%@w zUNnQJ0I(;s%ly)V=1I{ZAxfjyw5pVEI_YG3QYf0%>&!+l!zadWN)$ym{|f7cP%55@ z-W1J#-Rv=Nq2ivyrlRpHS_0RKFT9KTl2F%UZ^U;1WrKfKb9LrXMQe?IusD$H# z&)M$VXvm0;$>~O=MHYrsy&EoC{Dh%d z?ADSLM>81|7M7s_fV;QWPAp8SXf_7?`3@I!l?4-UQ=7|d^2B1;L+=Ab1&Fvu=Bc+!|U!$JTcY>A>=au z_L=U;FXY&28Gso(yyv2Qb8`NbK;_eJlW<4(3v_E%Ke^1iYyh(W0q{k@xETVc3c-!-Sw&(4x%TERqP~L5?{$9j@j{%0H$xN;3fNSGz&Y z^RQ5RK+-o2?=fm2drl{$MxYxBjE)eDa z)FlR(N0Le$Ue15^F7dXAZ24Dqn18@Nx0nPx67w-6SHh)pvUbq*)_Qf@S$#A_) z4+!mlml5-TL4?|NpR8zjg!qN|1o;I8c!Y)dAyC|l|6D>t&4=RtevvkifPj~=_+JP3 z|EhJTSJ>wx!pwbQ55iOI9&t7ok`u=NKef(wJa=#Kk$`bW`TTU|TGBBHifi^TB7Hsg zIm(jfjeHo!1%2-Te2t;)`@8u3>Jt*lYoo$xiQ)KXWFq{KgEi^;!FbHqv2q(+1iAi1 zVh96v=B1{(`(M;|8$x6J-uBg11dY{+m7Xf3{&$@~JM|EPze3-#L&Ocfs<+y;ckrN= z6Td0i!*Tpj3~?-6#1Q^8zBO0y!F;nVS+8AGj@I?sEj968IAkuY6l}mrk{=YU)$TmX z6M9P}9gxvV;oP;Rz9VGyL|#rAJe*VcgGkl|^Tz>p@$-pbc#}5feqhEEpE8hG`I`)y z2|39>^~B?wmG8pJj~^ZuB0Z%Fri=Xnbpu%^A4xtZSNK^-A`_FM#q* zWNH{X6B>*NrYAHEP0(t-RXxfyy#6tSHe*h$zR_2u3eWoLVL~Qpy`nQA9;XD}Q3Nciq7JT&@My?s&=z zBfD0@^sMPlr9DcqU-Uq|{9xTtSlfI`P<3q4SXLxQI>)bK{h6JwXkOY{N=#~ZM5z2z zBg^kvTOoxGF@LzB^@{C@{gt!3s2qweUvT)#N^y*>MIU)2W5@+$IfiaR%AWH##<;}T zLs^`zqqNYU^llFymdgWwe%yuc@i{h(35i7?6r!6vy~hU7&Zp`jtuiD6?R!Q^h<1`!WAH9_cjstTXsd(){1Ky%4x!wd)2ZQk zlz}(6P58nGeUW6JPWIL@&&@s1aCQs^w)*0yBg}6>wFm+X)U6yUAye#b>si%*t4MbZ^K zUeuW5So&<68f-f0z+HS)L)P)=6^2#cP@7{yLNXYm;?{RNj)iNA61{<)t8I>QMa3t9 zlFb-SF}Dt78y?+Q1=;h{ZKi8r zDEJ|X)FYrTA%bkvjH#;J{OXf{P>J~vrh`H>p){eTwsC5$L=%Zi9fCFuNyRCe9soO;CRCYuWDu1ix+IzPs{; z%K?#!dd@QPjZr1lGsSbS-WU(NlL!FK`}=(Dx|)QEiv3TgG?j+@UB=x3StwXCtwE-a z*cNs;)f_KIMy$ogKNEbx0vsQgFV6^{RMc8+M!Q-l?;^Py~50P^OTM&W?o6vs~{f^Lx^=P`QrV5v$&|93Y^B=|;71VfYBm z`G%8r&RPk$ppDh=uMcPj5#J{$qs0}y7S}vpGy{nmY6=KEy=wHz06}y%WKowz&Io1> z2Y0@)J@?f9iH_OEhRB*{*)tb5K9CdDbii#CmyHXiZ>JFxQu%qi;`jlVZO=o&cOO1K zpU!l0ePLXqKMF{rCtLLSd)g)Mu22%DVT`#F+O%R7T%DlCF}J6$Y$M|LD|)jWu@8 zQ)I(W%UxBiNxtnMN~N~o=%v;&#_1)hY9FmLLCa5dOI-U^|}Re<=ZM_yn8^8KQ9j_MFP>4`-- z3S*Us{-6DziE?^^QbhZQcMSan(}p0UdmUUqBLm?-PBpNOAIbsy5Jv;`6!JVmvA0o2 zE`#OVq9S$cjV99AX`v#TeN|elalT0vYArnTmJG^o1}LH$!^YpbH(|mhOf2TZt7#}3 z%tKlWIecHSoRaY}&BVFaO@Wl&EhX9Xsc*^Xb1llMW8u;EdPcyyrObn6V!SErTz)@ZF6D`P*ptQPT8_^s~|? zXP+hn7Ld3GQkSI}aw^~L_RXY*sebqr4fyEQ&K;DLMpk}bGv`6V%KV&dRf_`td3!|Y z%3;gC6Ed&jBzHQ{`CPe4{c2UuwB?t=D6cie^j`r=e-wWzoB;c#%dyWI8qQ1qZbymh zGAG%aM@-P(U*oL4$<^7Yy~6GW8}wdkpG@vUa8>ijbM#qA#-ZriEI&?7yeU~Xqcu@aj<&r{@6&Hta-mnKz`+F?fJyh4E1d-Ep z;gV>Zq4f0*u^68G?|j$fn{b6V<75aJ`Eh6R}lkSd&dt5DxsOUSi>csjH5?>P4kF@s9Ya5qs0a z>1MB4m8{ys$Go&zNK(s)M=jmTD$ILoSFq-fC3ZsEK+ZjvJOJS=G90%j6A-&X0;G5q z#OGX(_EvB7OT&t4vFRMQE8k4&MR!%)&^^EI6@P{f8Lf*zFx z=TCdnimwW9Memvgbd0EOD?ZP9t#iLiB7wJZxO7gWGmXtdwLlP62oD73KfjAeKokIo zW(aHQxn@)Yayr-Ytcl#E6y9B4LSypjcTM<~)|t}>3lMlu4Qs;|KL0gtkKv{_D^d!@ L{qX*OJ#qgB3nD9` literal 0 HcmV?d00001 diff --git a/scripts/cloud-data-consumer/crypto/datamanager.pub b/scripts/cloud-data-consumer/crypto/datamanager.pub new file mode 100644 index 000000000..e3bb32668 --- /dev/null +++ b/scripts/cloud-data-consumer/crypto/datamanager.pub @@ -0,0 +1,9 @@ +-----BEGIN PUBLIC KEY----- +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2ZaRXKX6CEK+Epol0P1i +PWWMDWIHJsS9h/XWcG7Iuy/ipzKksX7hIIePzqbRhNa7UR90rFcP40rt2zz2JCp0 +NPfkxVCSEYru+eVKsBUggyFa/4gzLtX9tZapVtEjxezjb0VPvEMb5ZkpZMbVRxOW +gu7XAlgOlv6Ef4JFvcVTlmX+WPv3ayTz7ABek2oFqd6MtuLq4r/pB8696WqeqCJi +YBs9kv5D4EoHntbWZSyPvFX2UA4c3MVQYOuChz/l4UNp+yUWWhPL5BE67zqUeRNW +zW42JE/5VG10Lig46nM5/s1q9KoS3cSRUpo4YwzN2QwgS/3edoJTN87GCjr/awdw +bwIDAQAB +-----END PUBLIC KEY----- diff --git a/scripts/cloud-data-consumer/crypto/eventhandler.p12 b/scripts/cloud-data-consumer/crypto/eventhandler.p12 new file mode 100644 index 0000000000000000000000000000000000000000..96d388e27bed7d2656aea16f3ac92c9e246a4600 GIT binary patch literal 5450 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 QJ&2aV+UrODzZ3Vr0H%*sPyhe` literal 0 HcmV?d00001 diff --git a/scripts/cloud-data-consumer/crypto/eventhandler.pub b/scripts/cloud-data-consumer/crypto/eventhandler.pub new file mode 100644 index 000000000..e80de2af3 --- /dev/null +++ b/scripts/cloud-data-consumer/crypto/eventhandler.pub @@ -0,0 +1,9 @@ +-----BEGIN PUBLIC KEY----- +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtuTLM7AjRYgwuKEEVS4y +KYtJhQ45U/F7u1Hg8Al1jqw4NR9wqL7Xsxmb3Ysi2XIRWRCfJiZ/mBLIK5Eam52r +kwPKj0v36GBWPdCBRiL1wCeAzrEdTIgTuvtR/SBd9UItyNHhHNVJO/I/4bvNFLOB +Fp9HWWEIb4UohN9Q9dFzMaXYjYaV8rhlk7RuSTcbTho4ndLiZKZ8ChfJvf5na3zn +KSn4SL9kf1sT8FZHOys1E+F/zmEOpqj0h+rXyCzDiwi7tvg4uobITEQQDMM/wiYc +l4fIZfL8UQ2qvAGOVt+yDcAkvwy0BSvvEtf23j00JAonFfwUIvBbsK0F5elfPB4o +BQIDAQAB +-----END PUBLIC KEY----- diff --git a/scripts/cloud-data-consumer/crypto/gatekeeper.p12 b/scripts/cloud-data-consumer/crypto/gatekeeper.p12 new file mode 100644 index 0000000000000000000000000000000000000000..b25db05c0063b37d1657912e9286134c9b2e2620 GIT binary patch literal 5446 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 literal 0 HcmV?d00001 diff --git a/scripts/cloud-data-consumer/crypto/gateway.pub b/scripts/cloud-data-consumer/crypto/gateway.pub new file mode 100644 index 000000000..18cb4b978 --- /dev/null +++ b/scripts/cloud-data-consumer/crypto/gateway.pub @@ -0,0 +1,9 @@ +-----BEGIN PUBLIC KEY----- +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4wAz3TRdYj3mXH4toa2M +qQywxiUgIh5ZHD+AxdkA2rmFfHg8FiM2B40OrRJsqvjqVz3ds0UEHCrceCaFBbl9 +y+CNX7VDXSvl+UKAl4ZyJwBsI/vjLqOnDxPbQMKm+laydR2otLEKGyRMPo3wB7ss +rA/TRX164SLnzQs9o5fQczEPvDbBV0yh80PjaxGzZn82E/3SBGvETeXyliFhWnBR +le8DsDI1aHIDxJefl3xSj+5gVQdrfZ96AXOk5LouPCkocOmrKmYVtqQUi9+VLHS0 +M9xF6KQO/WqO8DiteEaQj3w++RFinMrDl2FfT0xTImpmdZ338TVTUOOlRYRz/mKN +NQIDAQAB +-----END PUBLIC KEY----- diff --git a/scripts/cloud-data-consumer/crypto/local.arrowhead.eu.crt b/scripts/cloud-data-consumer/crypto/local.arrowhead.eu.crt new file mode 100644 index 000000000..c45b186e5 --- /dev/null +++ b/scripts/cloud-data-consumer/crypto/local.arrowhead.eu.crt @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDCTCCAfGgAwIBAgIIc8JgsIjtu1swDQYJKoZIhvcNAQEMBQAwFzEVMBMGA1UE +AxMMYXJyb3doZWFkLmV1MB4XDTI1MDUyNzE2NTAzNloXDTM1MDUyNTE2NTAzNlow +HTEbMBkGA1UEAxMSbG9jYWwuYXJyb3doZWFkLmV1MIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEA217sKANuWMyKBAmDsa4YddKxXen62tn44/AOudLrop+D +k67oCHuvZLGeqPHP+PylgOeJNgekf2eh8PPNGNSAcdITFfijoAUi6u4ja8RURV6i +y6aHAmlXbwr5rwni0jy37q4IkuONRWQfMDP8fyubhwWXTmiVeJUX680f0NESIyPi ++2E9v/TQUV9LkDEidbmMjkbXPGJ/nAGphcAJUvcjT4o50NVXUumN8LAyfgUb+Cw4 +AFTnMtQalqFQvpR+pG7YpGHtrQF44xJT9kVfpbC9v3x2RKlQFqAr0mmmRvKie6PT +u9I9KLcsa/6ctVLqekFvevs6/88AakrdUeYjlXSz3wIDAQABo1MwUTAdBgNVHQ4E +FgQUUtU76L3/Lyg/yQJH9QQYwTUuXL4wDwYDVR0TBAgwBgEB/wIBAjAfBgNVHSME +GDAWgBTwQlvOz6hvCLxauz8QL6bc1EvnHzANBgkqhkiG9w0BAQwFAAOCAQEAJMZk +DLGz9lNTLY31EN2cXVQ1uAM0Z5X6nlmHZUeaAF0ONF80WEPdWTGHyZcVA/Cjj+4r +knN43w88lgZcNqjYmua4Ry/SoiTX99ApVsPLAmdykdYGbFQA+8DaZEHCFSdGL7Fq +ksemiMq1JPxZoyjvAyXBsCXUC3jjfIU+9aOlKU7Fx2xRQE8IgTKyMuQQmLnpZplI +GwdPPcSL1bq1UnF+FsPWA+hViRpRDYTwTIF9tP2l4iPc6dEob/Fa+/Tz2sB0PBsV +6Pjn5ahPXi8Pk6+kwHkKo05PVKqFRsGEpCdI7SKoc/vIFpRqNEtMQOhAOXRzNkmq +NrqRbwsrIWeAUAakoQ== +-----END CERTIFICATE----- diff --git a/scripts/cloud-data-consumer/crypto/local.arrowhead.eu.p12 b/scripts/cloud-data-consumer/crypto/local.arrowhead.eu.p12 new file mode 100644 index 0000000000000000000000000000000000000000..e656368d0a9d75325104fc0d131a99d6d0d26b12 GIT binary patch literal 4368 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 literal 0 HcmV?d00001 diff --git a/scripts/cloud-data-consumer/crypto/orchestrator.pub b/scripts/cloud-data-consumer/crypto/orchestrator.pub new file mode 100644 index 000000000..a9e7a420f --- /dev/null +++ b/scripts/cloud-data-consumer/crypto/orchestrator.pub @@ -0,0 +1,9 @@ +-----BEGIN PUBLIC KEY----- +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAq7eEtRPrEgx4Fb24hm1B +HfcdRzTEuraT2XFXMw2TK70L7mr+bw7ygI/G6rZkaU3SKJgktEmYkzADV0gmo6Um +4mfXH6ZPg48nfijcb8GGf8w1OwfAKr08ZjT1ae8nWVrlqnysWQ7n+gisw4sbfE3c +UKMZBo/hqUwNaVTFRbba9H7bazdBpqynMYKe/41Us2Y30azwjN61lfl8F8HQYqMc +0YhIaMlIcrXwv1RKrvp0G0HgFTsnSxMiBzn4zBVme6M48VGhppARMPFF/5zVSDsV +QM2Njju90d4a6KQiGRUlXZvYPGMbvA7rC0EZX6uTMErCUu5gQBQchF9wO6afHf2J +PQIDAQAB +-----END PUBLIC KEY----- diff --git a/scripts/cloud-data-consumer/crypto/plantdescriptionengine.p12 b/scripts/cloud-data-consumer/crypto/plantdescriptionengine.p12 new file mode 100644 index 0000000000000000000000000000000000000000..c459268cfa8d6ec46bd1465438275b5db4bfcaa1 GIT binary patch literal 5519 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 literal 0 HcmV?d00001 diff --git a/scripts/cloud-data-consumer/crypto/plantdescriptionengine.pub b/scripts/cloud-data-consumer/crypto/plantdescriptionengine.pub new file mode 100644 index 000000000..8dddc1832 --- /dev/null +++ b/scripts/cloud-data-consumer/crypto/plantdescriptionengine.pub @@ -0,0 +1,9 @@ +-----BEGIN PUBLIC KEY----- +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA06OR4psSW0E6WAPAAxvE +SXgPaQaflxquaqmSPPbNslkxpVhW7jwztMcpvMRw3QoaYDIUdq6wUaaHGb+GZv8D +aGNTtgMwoDhjA19urTig4T9PWmLIIcCbKLjRdt8M3jy+beQYIt6m0UFtXwvYgO1f +IXIeyYLnpnvPXssSP18ScsfL/c6b7w551+wzG4EBD45aamA8mdVLlUFROJKVGf5H +5t5rPfi18ekFvsMlCPZ8qiL58f3RgFeG85GmUaNSp7AJPXKmgqktGWKGbGTljDah +bevMP8MML5T+01yoSR0FfLbxjE+lJz2FmDNMrFKo4xRrdi32QyJqE+9c/760icYb +kQIDAQAB +-----END PUBLIC KEY----- diff --git a/scripts/cloud-data-consumer/crypto/serviceregistry.p12 b/scripts/cloud-data-consumer/crypto/serviceregistry.p12 new file mode 100644 index 0000000000000000000000000000000000000000..145db3b5bd0323fa2bf541ae8c3b5cf9ca51008c GIT binary patch literal 5472 zcma)AWl$7swBALQZdn>6mxf(pX;_d(x{>aZE-7I_I#gmox}}j0k&y02X%G;prKHj8 zjrqR0zwVtgC*J2d=lpzT&I?6?O)-Fvphz$l7A{wma?}+e5F40}B)`H$lAlA7|)hH2W8x{OhAw`2RCSfCt3LM}iQ4K}o3nKNBEAs4-OZ-zNc-8zy+ZeE0e!A^n!WP}o6;r#bT3|tTZN{@wW8Kn%gdxQz(!X!b`ck;Mi z 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 literal 0 HcmV?d00001 diff --git a/scripts/cloud-data-consumer/crypto/serviceregistry.pub b/scripts/cloud-data-consumer/crypto/serviceregistry.pub new file mode 100644 index 000000000..d0e1e5175 --- /dev/null +++ b/scripts/cloud-data-consumer/crypto/serviceregistry.pub @@ -0,0 +1,9 @@ +-----BEGIN PUBLIC KEY----- +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtOSmL7VWi0mYP5qM9Wa9 +GOcSqFY77UaDhFnvoWv+K71PcM/H1U2evHLqSN+sGSi/QVZ1JmvhBJuov9wdlGIq +TlC5ibiuTMbNOC9NIsJTNvkUe2YiBhuct7VX2ywGr3ZZvDoXVCBZcYp77ykHp5tB +PHSoavJLCdnzfOkiDS9cuI5y14c+AR43huzsCfFPs7cn7HlKhGCVkcwWjpXARuje +JQij9m409nM2x/W3rgB5EB4sAGaJvV4Ak0YmMSgVw8WLlE/ntDXkIZdoY2uBaLaA +dHVmbRWhuzeqCmdhZZbPLZNx4kIi9HE1jkavPHQeoC0m6JKEFnAZvHxkEZoj765d +TQIDAQAB +-----END PUBLIC KEY----- diff --git a/scripts/cloud-data-consumer/crypto/sysop.ca b/scripts/cloud-data-consumer/crypto/sysop.ca new file mode 100644 index 000000000..7f15b021a --- /dev/null +++ b/scripts/cloud-data-consumer/crypto/sysop.ca @@ -0,0 +1,37 @@ +-----BEGIN CERTIFICATE----- +MIIC4zCCAcugAwIBAgIJAOc7m4aCscBAMA0GCSqGSIb3DQEBDAUAMBcxFTATBgNV +BAMTDGFycm93aGVhZC5ldTAeFw0yNTA1MjcxNjUwMjlaFw0zNTA1MjUxNjUwMjla +MBcxFTATBgNVBAMTDGFycm93aGVhZC5ldTCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBAKdDiRpKl4aAZLXOXWXUo2VmjNDo2A6cK5ztdhHbqGIj2JZqjedH +NF7SUXZddKzlweKa4LapLXM3Z/9AIBZKNhWLXaxqb+0o6jtKpS5R7t1tq5lnW9ax +zfr9HA6h9Dd1oft1l5Z+s/h8fJnaI96W6eiuUS6YuXhNWIw3zH3irIEgj7YSsEZY +0hPcC47C22Iyp2XWrG0cXlJoxcyNagPOvF1QOKQIa8fWiKFI7eFY5Af16ScDZOFe +s4hJx0hSM+VDEtpzONhCEj6mfwzWWK1RAegrfDMlAUU8hhaTU0XUio7kjgN4uI+G +S25Q3dF2DxjhFR9x6s4E0TRWXny12IuVzPUCAwEAAaMyMDAwHQYDVR0OBBYEFPBC +W87PqG8IvFq7PxAvptzUS+cfMA8GA1UdEwQIMAYBAf8CAQMwDQYJKoZIhvcNAQEM +BQADggEBACzhzWCeZ/ZalSnsWvAgsEzYlR27RmPTlR/Mxibovv22Us5fZ1e3vviE +Uizc+IZzdKBClHysKp9n/lmYkFXOSvFl7G5mBYgBrnSdMxV5ZHx1Snt4RxQdfGsv +RvwYUd6eT8JDbcAu5MKZD/dutm1o/3XzeiTS5y4xis09AsqO6/SkdOryB/o5jx6h +nCluNsHhrdiLLK9hcYRGiZz3pmFhzimHsE8Ak33F3qDh271NPQcyIMPDpX2HNmsm +cMFdZ0THVFUlkBp8rUYxS7FPjw6H8nKOGZxuEuRrYeQeOFdVzEIL0rsa3Muv/mPQ +EtmfmqPD6die5zUloxxu1OdhxS6s3NI= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDCTCCAfGgAwIBAgIIc8JgsIjtu1swDQYJKoZIhvcNAQEMBQAwFzEVMBMGA1UE +AxMMYXJyb3doZWFkLmV1MB4XDTI1MDUyNzE2NTAzNloXDTM1MDUyNTE2NTAzNlow +HTEbMBkGA1UEAxMSbG9jYWwuYXJyb3doZWFkLmV1MIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEA217sKANuWMyKBAmDsa4YddKxXen62tn44/AOudLrop+D +k67oCHuvZLGeqPHP+PylgOeJNgekf2eh8PPNGNSAcdITFfijoAUi6u4ja8RURV6i +y6aHAmlXbwr5rwni0jy37q4IkuONRWQfMDP8fyubhwWXTmiVeJUX680f0NESIyPi ++2E9v/TQUV9LkDEidbmMjkbXPGJ/nAGphcAJUvcjT4o50NVXUumN8LAyfgUb+Cw4 +AFTnMtQalqFQvpR+pG7YpGHtrQF44xJT9kVfpbC9v3x2RKlQFqAr0mmmRvKie6PT +u9I9KLcsa/6ctVLqekFvevs6/88AakrdUeYjlXSz3wIDAQABo1MwUTAdBgNVHQ4E +FgQUUtU76L3/Lyg/yQJH9QQYwTUuXL4wDwYDVR0TBAgwBgEB/wIBAjAfBgNVHSME +GDAWgBTwQlvOz6hvCLxauz8QL6bc1EvnHzANBgkqhkiG9w0BAQwFAAOCAQEAJMZk +DLGz9lNTLY31EN2cXVQ1uAM0Z5X6nlmHZUeaAF0ONF80WEPdWTGHyZcVA/Cjj+4r +knN43w88lgZcNqjYmua4Ry/SoiTX99ApVsPLAmdykdYGbFQA+8DaZEHCFSdGL7Fq +ksemiMq1JPxZoyjvAyXBsCXUC3jjfIU+9aOlKU7Fx2xRQE8IgTKyMuQQmLnpZplI +GwdPPcSL1bq1UnF+FsPWA+hViRpRDYTwTIF9tP2l4iPc6dEob/Fa+/Tz2sB0PBsV +6Pjn5ahPXi8Pk6+kwHkKo05PVKqFRsGEpCdI7SKoc/vIFpRqNEtMQOhAOXRzNkmq +NrqRbwsrIWeAUAakoQ== +-----END CERTIFICATE----- diff --git a/scripts/cloud-data-consumer/crypto/sysop.crt b/scripts/cloud-data-consumer/crypto/sysop.crt new file mode 100644 index 000000000..84a593e2a --- /dev/null +++ b/scripts/cloud-data-consumer/crypto/sysop.crt @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDITCCAgmgAwIBAgIJAPhW+sj8wDZiMA0GCSqGSIb3DQEBDAUAMB0xGzAZBgNV +BAMTEmxvY2FsLmFycm93aGVhZC5ldTAeFw0yNTA1MjcxNjUxMTJaFw0zNTA1MjUx +NjUxMTJaMCMxITAfBgNVBAMTGHN5c29wLmxvY2FsLmFycm93aGVhZC5ldTCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOULNkYs2lTra/kyBE7iu9Cctze9 +ojBhjRI2xr4QaXOUgQhiWmnmpy57xdOsJF/FuY5iCJjZ5CYfdI14bGfmUjLQoUvb +2Xy7iavsBO+s6tuby4jISPNSJflaOeShTiw/5DV+SUNfspscPtcWteMU8eV/Vs9Q +/Iqj4OdZ3i+1CXrbIJWzvqSHWz4aUca3DLRHb5qpVCrSWxna1reKhSLLqaV8x3zW +Ly7yZ08YewJOqQT9pHaDmEZ6KzmUd6j/tZbsZeVJgE8/2nJWVDljsLmTg0IrKMHG +egzEF5D/fP9mI/ZO4uHkTd7TB29CZI4dnI+FhcKhD/64qDxC777lDIc8dPECAwEA +AaNeMFwwHQYDVR0OBBYEFNhBYufMxFJuxlQ64AnjjqvtGG5uMBoGA1UdEQQTMBGC +CWxvY2FsaG9zdIcEfwAAATAfBgNVHSMEGDAWgBRS1Tvovf8vKD/JAkf1BBjBNS5c +vjANBgkqhkiG9w0BAQwFAAOCAQEAgTFfxVME2/7yGwiQQbaGn2WkW/h/x2Y1B0fT +m7umObyChxaWhz9NZys0WdPoyCADh1Bi4EwhqZXePteRloNY4Fdz7PgnlUJ3SE5J +S0lOexGxqUiVUAfQszAEwKkGNUuJVTizB4wJBhQNPOJG3MbZdi5r3qAI1feXzYNR +QIJoDPNm12bbeKtS+Y/OTEPD3+JwKterQUjPgjh2c6f0ZKe8U64mbnnK2spBlK6+ +s5UJArMEqEMawrBnQeKwOcjwtzHNgOUF/O+ckiZ4rHjyET0VUjKwHjk6ed5d5+Pp +EDnQsyiX9YFgli1GlliHq3H6TrGMNCqHf9C51cte+KhEhvbW5A== +-----END CERTIFICATE----- diff --git a/scripts/cloud-data-consumer/crypto/sysop.key b/scripts/cloud-data-consumer/crypto/sysop.key new file mode 100644 index 000000000..f8c66cbe0 --- /dev/null +++ b/scripts/cloud-data-consumer/crypto/sysop.key @@ -0,0 +1,32 @@ +Bag Attributes + friendlyName: sysop.local.arrowhead.eu + localKeyID: 54 69 6D 65 20 31 37 34 38 33 36 34 36 37 32 38 31 31 +Key Attributes: +-----BEGIN PRIVATE KEY----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDlCzZGLNpU62v5 +MgRO4rvQnLc3vaIwYY0SNsa+EGlzlIEIYlpp5qcue8XTrCRfxbmOYgiY2eQmH3SN +eGxn5lIy0KFL29l8u4mr7ATvrOrbm8uIyEjzUiX5WjnkoU4sP+Q1fklDX7KbHD7X +FrXjFPHlf1bPUPyKo+DnWd4vtQl62yCVs76kh1s+GlHGtwy0R2+aqVQq0lsZ2ta3 +ioUiy6mlfMd81i8u8mdPGHsCTqkE/aR2g5hGeis5lHeo/7WW7GXlSYBPP9pyVlQ5 +Y7C5k4NCKyjBxnoMxBeQ/3z/ZiP2TuLh5E3e0wdvQmSOHZyPhYXCoQ/+uKg8Qu++ +5QyHPHTxAgMBAAECggEAJlTyCFyJTZz4vQO55NndRNR1dUavVhl9WocAS97DRyyb +S6PqLb8ES6s7OGmezMhyfXm6ppoQrLCm+OYmflz1dLulwuRQSae5KqSdTt9JjudL +8OBUFSSyZkDLX4//XTh0IN+5syTY50ya17RdTFu9AAOHq7qKCUnT4eQQYzuREpY4 +j0Ppf/8Bov09cuVs5pMmLDsvWGzdJFymj0Mce6qNiaEzERmuTj8y378N3Wz8iUhv +6o45SpnzAb3zFrAKA9jgNLWyUr/Ud4J6JGUL8i45zIZ2w2PwgM1o1ulFP5Oy4CFa +RT9JqIFf2INVNQC9k7709ol5G4Au1zOGBdxJxXs+gQKBgQDq5XVUeR63Hgi3jADl +VdrOnq06HY62uLEIr4ToZXgN9UD8FVLw4SXt/zsdM5H7veZX0B0SUNfJVJ6iUFvK +U/9rwjINKMWq9j5JbRlTwwc8ClmhRtjB/OtWsWfSNUzOgtFCbNBUwtXpsypI5kIO +RSw81B28tgWgTkv44APe3IqFFQKBgQD5nyW/yP4rdE7WidDcNkb8fnlPjsDN/ZjW +h4Qf2Vub9thY42Mj+jREToM75+DbENMd5h3781FmSiSWr2T57Af1JuAD2g52pHN/ +ttYGhwW+SM3nmazVo/fl7kti4WrgGTQwFODWAoX6NoL3y/GHdq75oc412iDFSHid +xT6MqyNfbQKBgC4UBQglGllhkuQump5iUSHnDqQv2CcP4+qIQ9Iy1XIngi/xHuwR +vpcJUldQHnr7rYvcT1egdDQSXWwJx3fRMnG5Doh2TxBSbbWJqUY9I9YrUZnJhAvJ +yYCgHHWn7wEzuEkHf3ahIcVOWCUkxiB2gU8NbSfvrPrdYRnZF+lH6gRhAoGASNkv +NRc9RgU9dNLnhzy33rwyPwuULQmTbxhBcOIIIC4b2WUS6877LewT1InJT2VLl3Au +0/agjM+aefdZ6q39bIgZ3EXo7qrzohQDxgflnzC0FqD8laSylgHDMmpCvH/egSG2 +s/4sh2cdNZ/pLvVt/yA/g+vSoICT4sdLh9XyDskCgYEAxI4DW7S/CcpG+Qe/c7fh +z3WfmNcZkPnitCuE9BCXqPRFqaiDoVHVBPCSxzpEIaHS2mcGTEie6GvE+DvfX3gx +sNjiCBcyMqk2OuhqrYqvxaLpT3IdCcftnDIDw1d2evSr5UnK42II0DdrILWrD2oY +Fm2LyVmjp4KARWqjGd5Cun0= +-----END PRIVATE KEY----- diff --git a/scripts/cloud-data-consumer/crypto/sysop.p12 b/scripts/cloud-data-consumer/crypto/sysop.p12 new file mode 100644 index 0000000000000000000000000000000000000000..fdc2ece7f995181400d5610dda7ca8aee619cf09 GIT binary patch literal 5372 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 MHFFuPX95Bz5T~gUdjJ3c literal 0 HcmV?d00001 diff --git a/scripts/cloud-data-producer/crypto/authorization.p12 b/scripts/cloud-data-producer/crypto/authorization.p12 new file mode 100644 index 0000000000000000000000000000000000000000..95ee9fbfd7472aeb141233baf45b1c894a409f4e GIT binary patch literal 5649 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 literal 0 HcmV?d00001 diff --git a/scripts/cloud-data-producer/crypto/authorization.pub b/scripts/cloud-data-producer/crypto/authorization.pub new file mode 100644 index 000000000..960f3f110 --- /dev/null +++ b/scripts/cloud-data-producer/crypto/authorization.pub @@ -0,0 +1,9 @@ +-----BEGIN PUBLIC KEY----- +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAylRSbhHqWZEUXzVz5qHo +K+9EB/TKIoegEtjNulZTeFCTXFagHW5S9CZ1fX4rXQKmhA5U2qhKF9dLQtTPuG3l +HCfBnXL0Y18VSfV9FdoVMorvh3h06icAX676FehMXsqG5k1OHTqjbrtYGTkvkQ+q +NpYThfTix9+D8rBzdMpBjRsMWyYl1kGDJym2/VQCDt4aFSeX9PlAsaZUZ73TV6k5 +uJhSKHF5E/RJwk8CJbpeqvPqfC0rjlbSwQ4xI0AG+tCo9zkRQ73F8qDKtMo7uKJM +ssTa5mD6v0rO7k0FcIZ2JVU0nXi8PxK3gm3NXHSmjDHgBMfWBcNqKLFPISsm/GJc +MwIDAQAB +-----END PUBLIC KEY----- diff --git a/scripts/cloud-data-producer/crypto/conet-demo-producer.crt b/scripts/cloud-data-producer/crypto/conet-demo-producer.crt new file mode 100644 index 000000000..75f03f161 --- /dev/null +++ b/scripts/cloud-data-producer/crypto/conet-demo-producer.crt @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDHDCCAgSgAwIBAgIJAJcZrqRDo9TMMA0GCSqGSIb3DQEBDAUAMBcxFTATBgNV +BAMTDGFycm93aGVhZC5ldTAeFw0yNTA1MjcxNjUxMTZaFw0zNTA1MjUxNjUxMTZa +MC8xLTArBgNVBAMTJGNvbmV0LWRlbW8tcHJvZHVjZXIubHR1LmFycm93aGVhZC5l +dTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK01EIz3e+OXpt1ynrUc +OC3YGwEFVJApbbs/+35U+h9AWb7IrhrnLzxGhg48SvvQj4xb794pHHjjsx20tuVX +PbNMnxD7UFJprbuYySvtiuyD1afD7isO1OZ3AaErH/NSFl8nRxYZxZJ98IKov8IE +3MdMLBfClPuVja0HD28smCaqmu9DM5kuhzC2bhHv3qrgUG0UMUDvHv9vqH1aD6yz +0DnhhInhFuUw9lHMmnJYP6QYqrgXLBy5etKH/ZPvqVI+Wa40J1g7tjL0fjSL/F+0 +sNQdDuHO+9RFrrmoW4dxsuofZA1fh4bQEbMI0uHPX+7wxh769Z+o5pYzI101Krz7 +ZQMCAwEAAaNTMFEwHQYDVR0OBBYEFCKVrdMkRGsq0z+1LJzlFH/H8p2ZMA8GA1Ud +EwQIMAYBAf8CAQIwHwYDVR0jBBgwFoAU8EJbzs+obwi8Wrs/EC+m3NRL5x8wDQYJ +KoZIhvcNAQEMBQADggEBAGT20fjn/TVyTptwNBVw6QjYxj53KAdvH/TuZVO0yat0 ++C1pjLdB++mOaWxvKeYPg5e+5WQnncik/8lJ44dbRO3ps0OGipW3TYQZosCYYvkQ +kuTWlpPZb3hzSITwpv8VZ1zV3RI61QcTYMcii8WMBrXUr7zeqoKCniXaMgdnQ9Nr +xmnYTcfH3ewZqH8zVhDcsfIo/3Pk+J04ZGCjbSHYTarIiM/vEfuUCUpwxQDkRn1I +mbtkNu9pMIVBaPd/3ma9YCWb7axyCqcnMlSWtFDiuKxuGYviiFoREb+c3r+Ch3+b +saXnzozplsBh8Ih9RyO4bhevb6zd5JQT9LuSqYiJRxE= +-----END CERTIFICATE----- diff --git a/scripts/cloud-data-producer/crypto/conet-demo-producer.p12 b/scripts/cloud-data-producer/crypto/conet-demo-producer.p12 new file mode 100644 index 0000000000000000000000000000000000000000..ff97b3456cb26e74e4a52bb24f9d2ebb369a48f2 GIT binary patch literal 4452 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 D@xMRR literal 0 HcmV?d00001 diff --git a/scripts/cloud-data-producer/crypto/contractproxy.p12 b/scripts/cloud-data-producer/crypto/contractproxy.p12 new file mode 100644 index 0000000000000000000000000000000000000000..fffbeb509ed8af22019c899516f7548b249493f1 GIT binary patch literal 5649 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 ARR910 literal 0 HcmV?d00001 diff --git a/scripts/cloud-data-producer/crypto/dataconsumer.pub b/scripts/cloud-data-producer/crypto/dataconsumer.pub new file mode 100644 index 000000000..c647ba7ac --- /dev/null +++ b/scripts/cloud-data-producer/crypto/dataconsumer.pub @@ -0,0 +1,9 @@ +-----BEGIN PUBLIC KEY----- +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuVtIZYuP7vIWkTScqNBd +sz0BojPq3luxxJdH67LJC4XDOmr/GlXxvIiIx9qiUZ3hoE3UrQXcTBUO9mmI3zXp +3blheea/I48jV3cXGazarLdtAHjzZ87Nzmb3eoFUihzPQ/6vuj3UkZhk9bSYcAPJ +Lu0xHsrjhpdm7b+odkFPnlifVnPpwUBV4VT+sUcH/l3IjYr2tmamdMOtnwHoH9z0 +wH7ZohhJhVkkfK9RgYJKERSQ1xPftQIideBKLfhK2A6cWH2VO9tkswUwTW4lzusc +kLw5AObV9KhlgLO3HLJ8yAOkCMMHQZacU2cbDOMm/fXcmaMZ6xiHgAkJE3kJXKPw +pQIDAQAB +-----END PUBLIC KEY----- diff --git a/scripts/cloud-data-producer/crypto/datamanager.p12 b/scripts/cloud-data-producer/crypto/datamanager.p12 new file mode 100644 index 0000000000000000000000000000000000000000..43c69c9db629166f49512a3d3ec57d407de7ce6b GIT binary patch literal 5645 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 literal 0 HcmV?d00001 diff --git a/scripts/cloud-data-producer/crypto/datamanager.pub b/scripts/cloud-data-producer/crypto/datamanager.pub new file mode 100644 index 000000000..0493e2a67 --- /dev/null +++ b/scripts/cloud-data-producer/crypto/datamanager.pub @@ -0,0 +1,9 @@ +-----BEGIN PUBLIC KEY----- +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0EPt9mEntPoE/QfeU/gG +FZnmMQgZJQaaEshdT43kG4LnxgB+VTUvmc+PG4rP/QrHlzpvNVZ5NLc1KhFILydP +UkpBG75FDmqE9BJ/uti5qEiTXOhMYwSBhJff0hXt6Myg/OGCQCHhD+ygnhe5wDjd +w0u2Addn21+irIUCsmxSW1dRnCZruJPrMC5xeX9h5ivAUUEMYR8+ypSJY+7+cNcn +jtRZ14PY7M/WBL7/vPSfQqEAsDdBlI5/HXzJcHElGwQntUwMBUkJ7XLiiGvUHFTC +s/iZQATbmeFH8jEsHht+z1SC0n/S1lSOO4Cf6/Lqbr3NiFkbk9UQMTXhq7WGW/ll +MwIDAQAB +-----END PUBLIC KEY----- diff --git a/scripts/cloud-data-producer/crypto/eventhandler.p12 b/scripts/cloud-data-producer/crypto/eventhandler.p12 new file mode 100644 index 0000000000000000000000000000000000000000..74ec69b36a60183b52ae9e5a49703302d2d7fc65 GIT binary patch literal 5647 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 literal 0 HcmV?d00001 diff --git a/scripts/cloud-data-producer/crypto/eventhandler.pub b/scripts/cloud-data-producer/crypto/eventhandler.pub new file mode 100644 index 000000000..c67975b85 --- /dev/null +++ b/scripts/cloud-data-producer/crypto/eventhandler.pub @@ -0,0 +1,9 @@ +-----BEGIN PUBLIC KEY----- +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzKeJFJYZEAayfTyZYvpa +pT32psklM+9GixNd0C9VqvQiDEU3n+CDp3NyOr7nFo6zfabCfrwU0UNQWdFWLOJh +XV48NNilV8yz+VlrdzSLl9eiZ6rxJ5bD/OLxMIF5iTczPC5RdSqok1eWQ4d39HQV +KiLSFul7ifqoTowFRzyPAEGV9cMp9rlKHmOBHoBaQn47x/17E0pltO6HNfgnzlS/ +3C4u8yHbcfzA4HM2ErUnxSXoqeO/ya7VevM+uBnc+ZjG7KfUJuOqXJ7e0M7syie0 +WJHn9wA44eJzL1lFY5ljKAIlrFZOJWmh+b2JwBluz7aaEAjjqEaBVGAjNq3a0QYo +/QIDAQAB +-----END PUBLIC KEY----- diff --git a/scripts/cloud-data-producer/crypto/gatekeeper.p12 b/scripts/cloud-data-producer/crypto/gatekeeper.p12 new file mode 100644 index 0000000000000000000000000000000000000000..003a1a4053c79eca081298ae48a2c8f2f3c9d171 GIT binary patch literal 5627 zcma)=WmFXIw#H|Op%D>;p>rsKA*58gQ$hsk9=cN+q`O-h1_nf=OHjIFq`Nz$`*7B| z>wnh$bnl0~o_Fuxv-kULul2srK;lajASyJFI1hxy8X_BVi3h|0<^~ccpal}gJe4D$ zfgs@jLg;_d0?`klf#|zWu?fQYpDtW%AWCi^y698!E!6y<4s<-IHdNrhDK3-^ji|F^ zXpX1P)L61}(N3hMp-ZNt!Vm?8i2wyi1H}bl{%0Zz7CHb*3BocAkp-Heq5)aa2x`94 zSPsz97^cCqHCY*c$f52EtGjvxT?Dsm+o7 zM%jV%94?M0k#?inRl~m$U*+Fi$X+_TWQvLbEk{DgXB2_WrqMrHa!QtGq$jws zo(Zfv$>luBv{@nA6-8i4_lTtN_>2h_P!k@0YYLJ;>G-XPU(NlS4-RqYbgs0JY=9lb zZvq{9E-$)=;X~D?{JLiA`nXX7UF9|Mn}QpZG^|<+B0kfT0aa>oF=oT>MnVr62BGcC zPFX*xTeMcJ*zVu?(%G#stQ88es>yl(;o+v|#OC?XS)Q{@GOruDR6u4(;(%Ja0eiFE zwU|5sD`6Z-t(z{a?5OTFQbYw=F=_9&3Vl3aRs>3|wN)f~hQfU?o!)xwrCi?feCP0i zDnBruD)(Q~xDG}an@&-M{lO*d+bhz3&srCAqR3y{U7xS=mUV|<6B~yuV)5eOM4g-_K#1La|7j zScy>oc-_cJdR;N{!$yDXi)G8Y+VP%{h*k!N@`TcrfZ*rqltD*-JE|&^U*}M=lz`M? zK0ZEp{V4QAAWxLXGssPLnU@t^rf=InE!I#^*4_@;uQE0CUIiKSk^lbnIjfR?EIHiS zSn5y^EHQ$(rkc5MzBRU!CGK_UH8-*mKbk7zWbk;YvL2Q@0#$4u+X3sm7TUhqoGxKz zrDPJk{S`^UhCo*-t5T*@uuwx%faR8cJM&lli2TaCU0;D3wxZ(IC!V|&SwNA~V?Gz^ zut2k+=kE6j9R(w4=WBunj;&({&6F-ZpvrNSls$KDDy%<*?`J?yqNCU+nQ{BUfrllk z^gd}CDKkEDquz7bfJK#HR2bFlA#&*xnp=%D7QrynyPR1rSWg_Pu!h1rR^pbC7m@~Q z3b#qs2TAa~p%htqvpU0fwT5$iJ30JE>?&PEZlB*UFE(=P9zIl5;SxZiax42xZhIZ*yz;5u98G|o-M&lE zBu#1pKU{F+pEw8DNT03(OKkMgz7NC1Me@D+lEYp?>Q~{(TVn?ixAUUJ2e{fS4!~Z* z<|fhCC^zAk!z3gK=J>5%G|Bil&`E<*nU)$si_CW0`}udy`+K*asb=O}0>W6DytB{a zOX&6v-7sKV-DZ%1Es@%&Wl_zR$!Ca%6wwcnyp`5ysBaxnH!hjb3k z(oDGm5}>yK>`N>nE<-APfCaz^-~uoMSU-gsz~L#J02}}lfIYzO>Ffev2beyo?NiSF zM4g`06yW;A|KqcHa=1SEjh@KAnL7aXM2wz198c;BrTy=9#9TyZgc_E%W;9&9d@aMYzLSi1LG<`n^!KqXYJ*-t^2IkvaG=7G zAgEESWFSX0JX7=jAkwLs06; zg<7!snr1x}nUx4tl}&#p@48(MeU5uQAlO199zvH#Rnea-BI3FAhGz+S{~!h&f7Vyh zz=lM$nM*U2#gcpK$hN~g?00@jAT^sap@oC8)Z+*}p|kD2ys&DCEOdN~S}q@^PArHeDez;T8K{Q{tLa>Et3PB#c*>-%76{1Q=hEBjp^#aC@+z6n@+ z9iYrSlvKMCv|6vp?mznF0V`3geJWcj%4){-xM0#dIawjxYce9G#(H>WRNzeYC8GGr@1{A^BUPNd?09#DmgWd<41 z+asAYarM0#AjpC@mhMuml9Wie*TStRhZym0xZ-F-Q*Ms#l~s%6CGzF7&m}lyRfxKFdX`|?c=NPVtt{efK!z)OJu_{ew5I zQn2@d`9q^_n2N&Je$8QAsp_2|u6@iHTAzfwPt7wNtKVL`Min>e==6Q!9C$f8Hw}SW zt?s;Rc2pNhaB51K$bD#5*8UJP-MJGm*uw}M_fW9tb)Kxv$>=JkNS+A#G!jGw8 zAMoA%FgYICq2wfem;!Z`j*&0#NgzXH*qIAcE&Y` zuBfL+)(3O{6PVp#q-5JofXrbXsn{>kSmsJWcPCd@+gotYTI$E;+wKR;&ts27kTGBU zhAF5au3o(osHuG|#1yidg88sK_u%slBC;klq@JRk*58>pKUhW79Cit`;wMY@f)emB z{WPZX85-90<`&OuV~8$KnNcU~_#CUwW?0kOlh`j5QJY;kyfVdMVxG0%5m@67G0pwsvtSq;89~O-vM`=ui9ic>(?XI9@+5{;g`L z6VpBaoZ290?Xu6hMEGtSrT|(zwI`0Vb&AtmN~X#q81;+S*}2dPjDGQe-%hs6$#sgp zTzE;DpjwlGV;_t@zTi>+?QTSd$DYCFcOmsE4hxtZN27-Cnq-FAYGO_=7ON1`gMV5# zxqo5agyWT4z^L0aES;BwFyTUEdrg1CZxFvL% z`bL028&a*b8fZ-JxeD=k=zRno6Lgl`be3zgM&hu}@(=EVz#?FNG-nLaQw z5PbGYdb_$Da=Q`RFUhE}GOR+kq!Q%|k~AMZsqT+zPINV8b|2mSLxE{t+`_15BPiD5 zgNe-7(iGdKn7s7%^tAnTTtk!BdLvMk!$uGEqZvLyUgR*eVJ^UC?oc&dWt6`#Gg`eM zha8fzZEHNvqrmN&V8#05?)zQcO9`{ulY<+lK^#tR)K5|;R?E3*5e%ys9$PAd%RHtB zHTo!QE|OZtQ|Sz~4i2M8W~bNkvpVjSa@cc}Y;)7{w13tY9{d?{g#C1c$SL3ZPnag%%hGreHD72H-Tye3I2ZI9 z&sV(g&q}iMmiUPGh5JZR5TbEaouK=Swz_Lp(rzG}vjN+QRnPG(TqAe^+$MKnA^zqK zg^g#n928lKzzRbqcYOM*@l_UUvspx=QHKYTDnG zSE3$6k>+;;{|T^f9<0q41CoQj(a$GJt|Tc}#$;EB|b>LR(tTFj9SXWBhvCUI11?wE`(Z zv>c#a`&4;=IBg%`(N|bM)>A5Hl(AvB?r%WhXx(JmY=J;K)0^irlg}H`%5J|qrUm)w z4X9-@X;{L|2TO-AdW3qrTO-ktnSyE;6H+0Iwu@dSz2+lLK0QtFAUp`6&-%20kN4- zw@?pg$`z=yfF;NMjfE6lstqmbx5%%up1-D1Yw}OTk5657_{TrK%i&PZ);=+jdi9Nd z-(Is?qimY2p^QbIy{a$ebfUn-@QeawKO979f-{0Hc1t2X!2c%GvwTo7F}HA&cfqBK zHGZYQ)XJHcGD}}QEgMhgQH3mX#5y6r;tiKCH>3`pG&`(yqB(ex%}R}}zoe90@{G24 z9KcE!|E&^I=Utr&K;HZ?R7n^xNv6wgey>(~-5+!P$n2>6N7iy{oc=2P#p#)~q(XCt zKjWLk9%?6Db=G%WAb6^LAJRhpapztem431+N-m2l?9~r>Rn9s;7nPke_|SS zl%`f$aqopmm|s!P5DC(P7-&?2;5MtK?v!1i`MV>>RBJ8%`SP}KPVE)`ffxi!bIfR2 z%raaOkJQa!gXU=KWZm~io+-yU2BBVY0m!bDr7mT7?je@xfLOK_BUA^xm~V|)mlWhg zjNiLq2yFbhjoDirwcl+4YXz-yF7B$Pau=uLmdijcW5h3t{yOJ`dy>{Q=1@c~r>RQ` zGb-`c4U~}2Fwehe89^9KV$I z_KQpt3H^_qUj#EK9KziVN~?>RcUzYQ;Ho^+RAc8|zEvd?d$h8)emKw;o}|ZMQ#lm7BgDr zJ~nmcyU~x!R`Gh?u2@^=&quIh)`jKE%5oHnLD1Vtqi*x~7#+bC4TXSpzlstpYOQgs z$&%1?&f_jullZ)>Xy@7c`H>%8IS&dB_crN41?nlkghTgu{56=kzgC2Dzu%G>Wb%89 zh$JGBOvV`eJ|lolCq&l5F1r2ZB;`|EhSu)8fI>2>@Vt>8nD-c8A($i~Gd(G!cv4qn zB|w^F7$*(GiGGZECi=u(M2N`TDmY^pPA!bKaIn%?7Ab{OOw$+<+JU5#e33)ESC#3b zVp`9mFfg%>7O02Dy*(w$gsVn*l!T>pwQc*OKGK$suk=7yTIGEE=JIfOU8|GrNB+V? zpfiPsvZ@(^zGFEd<5*7wU3ISc-5 z<9rmjEjCzKZQM#FMYyH;Cxh&^tOml?NCeiM81wF`l{T(k`R91lRySPy)@rTQqoTv#I+ro`k-g;l*uHp@69^BucZ)o8;O9PGAO$htE zs(^{a{n=FV(+!A=BesZkKnv7EM-^&OE_W$iTArYJ=u}h3c4=+J_LEBMm0W4mK*TNg zQpCXSp`(2??I^O07x?`dp)KpKmcxfA6{CniaK@jDoJVorj6eMWV-!7GeGz)*DuOl@ z$-l@kv%Ht`)yA|BgB%^nA=bt@?InnP2S^?R=kJm9oJbEUbx*ik65^GA4`B8rx-Cbb zdvQ7C6izS)@**Thi zAQsu>%4~VZ`@QG0*@i3;y8eV6s;`7`7J55Y#?LpPxDW6r$IP)&m~bskiTPM7ZZt_b z`wmJQ27E$=<=r85CyM|(9G`TOLo&=(BnD?2etEa8wb4zZV90?#xNN(zOk=p}2W)PZgx_~xfbVm~g!9hqok z1e&ddAd~nyromc>2Hy2@rRcmh(Q1H+ebNuZxgkNpcbIe^(&gDO+aK`Z@B_I|hAp14 zh7qC9m=*5TbeHTt$vw>TDJfnx6l9)Zc#G^++%YTH?m`DJxuuZlC62fW;!j_$MtK`^ zxa1C*eju5w`e#mWCPG@X=CSMKZ?I~jJ1Z|#q=Y~sJl^!*O3W>=kPLlWunvzeef;me z?Qv(aEBjBwj{Xj1Ec-=M$k|9^mFPng+{LC5W>h$#(GaVD@(~%2Qc)X&?EBlY<1+ac~ zOkQi)U(o|X{qIHioOmD{4I2jwDo#Eger{eKUI9K%2p0r~3H_%C5g`wT>G~=;!T|xV z@b5bjf&W*=|Dl>iG1C%m4$G~MJdLnvB@ZGB`2S>lH%|tDl{sO+yb3YkH00`UoL$IUSOa+I6)XN6Z!`7$2r(6dDOfd7% zA^)YUr~A+5RflAPSI?Sxls}V|^Hsc%^(X@k4>&Jh^ zvEr2|vh$bTvxu6)Ab^-kSE0pB`|*SvI`hfg(WVz4q|N5O3V;9*n$hhODl@vVN!(9I zeh2YGWcZzCLS2z;9( zm^|@Zrq(HSy2!FC=@~f&KsO|@hRG=c5L+D05STZ7Q9LG8!kO9*aIKEN3;51PG$kn_ z#!t2-%joR>rI^I*l@rSSd(|OhRL66-uE3x%l|9aM?UUYk;|;jTJ(>(t__6m=_OQrH zSn;H5$Tf}@ zOh0Jrk2Lc4;k|I$kiob$w(1x<598GM;D=w;jX6&2y(&!EUuJ8;LtDc`Fa~7?r66h1 z_ivXZYWY4{dt5xlQK5vbO7H7Za}T3LD#ro`7RAy|tjK;;2+GgzZ{0hH&QbB;zO3vM z*k>o^8A!DzEMHDqyzCARN_fxT*D-KlK8dSG2DVUxW8~KY0PUxBA;BbssaQ`LRNA{W zu4TX0bMb@?s15a$kMKJOF)4IVyp+eRTgM~_wo5xf^!}{}A(X445f|I_8KzQL_Qj4| zc8UJ3e!Y9d3an_zywAzB`&=@q3f$D+-Fy+@WnCFgHv?w-8aOTmEkJoHqrXPdwOGoa zN}pA;(((;=9yJFS-fVF;p~gFgW$Kl!+Q%sIPl)5t8CPP%#?C*xB7BQ7oIRMh3*T;Q z^0o{(we+`wq&n28GKm$UIr*2yvA0)Uj)k3vMU;q(rKK#B3KOD@D=*OtCN=Fc+Kx3w z`e(-WDJYUnq!HYr#rdi{Pad&@ksN>cOoACzzszoG=HXzyGJ$=sZ`#B1N!ypv0 z4u|{Z^8$0Z_ha_gk0g`DIh^_Ca#U;-=WTbLw9H>N45Tak^sM?_$n+6xoD(JypPmk) zl|YG54mUKsml$ts;VKTn0!MxDeeQ^b+aI=~Kc>8+SWDF%8gM3skE#8VQlVS>F(MU5 z{~^OL;nH2)Wjk0i_~~2UUy(oxzBv5#%B3BqoUdYF`gfllgNKqJ54dy6Y#+}6NtlzZ zSrtd4by5kB8r${UTmxkv45U<%i%E_oRpD^HY41A2zx(QtS4X3keB=GzE~*_o2c6nM zyIfx?$K~!yi9cCVN;+uK?O={}6wmn1?7xmMt0PN#QI>Jog(>rRCWm&9dRDkaKdgJk zK%=2z3a@R%?ctAo$XwHJiaLT_4VTmX$z&%R#494?~? zLC9A+KIxkUB)%Af#<6lFR+Cn$6BwfE_A8c63%U~AXc4KZ_zJ{ zAU}z|QT{aXb3Ds+4Z2F)gX)#DJ*M^%+a*pz;jJmTav8FaYyBh&J+{IPb}m?Nvw zezsO-9B9+ft@S4cyYN}2ji)}m)hL&@cM;GTmvnkD0O`MoInJO;3g%+0(xJn*KvQXP zaw2fbWz9WpAf<=OT-eyOPd66_@`D}Z-%;rMOe#>ye_xMFgnoQWc{iQHCnKrus48gs zopSibye#+uTA_k@PQmg1Nz{N7yF*mgS9BIT|5Sj;a%m|x1Q|8ILo<6xrsiod(T}0d zmQK+amSB3?F6TGUscYq-*Bcjr#!vX(jQwh_BBRELdx@R>T_QGo>4&amjeR2=@pnd~ zM8rDPVxR1TnX@tIwz3$A+z%6O2GMTOt4 zC{9NP3?)a)H2Q&58>8QAlwyn5GPw2zZ~4}qzR@V=k1a*cyo+mglAVB>cYviTD$lx> zChLPNT#0qCibV>zx+mkuk}Ig#mCU?j{j;*Swa3@v1B&_LpJIls4q)7VLiR4cdb zCY&ENI+;rJPV1mM{)=z@-;GuT9B(3z>$D6*PGpYqpev8Y%&MHh3^IIc?HN+7;DXYj z2_K3pI^cE^6V;?@$(C%%$7C*u>Za4~$SrcsM;gBlD5&ADC_?5_9%0Tq@h8?%od_Rw zvc4p`67FB@c}@ac+qN~>JLf?Y2cQd2u^aMPt%{yluI(Pq#rj6wpCj%aRZ9v>%JQ;W zMx{#1Q{=Q10}uYm56zNYRO6tdmnnf$OB5SD?YslrQS*iMFSK!?# z-ft(Nh8B*Vnh$Qt$m~5wHpyCjUw#`SVJoc$sTP`8w|OkH(s-cYEEY*bKCjCZPt4{X zMnP;*b_6VKGl~qA`m3t%uzpyUuxa!ovW$G6A%vRUd1GS9-CYXNQnK*7E&>T?y-&rr zsjOr@-IC2z?aBA+r=C3g@(eY{2pZqwM7ah7rS!ts6wi~rhGVoB& zk@;0Hi4@#aQ%>@jsN&gSfB0Ujh@Qg75?Pk?cpP_s9cgrp%tao?_I8$l^y!_)_%buj zkKS$NJ~VD0vusJ1X{^g@p;S!u-`M&E3zW1`@W7O(>gEcvN35W?Ysu;pQ7gtU&D>7t z1iC|UMIMjfU6$Syj&Q+?mFdr*jM#$H{U4sw&IGO$S!cf5%bdc5N<9%Jqk z&N7jM*+w2Q0o|GeohWDiWYQwOgfYhssj_n`C{M*4;kws2hW&-Ji~b7zP_NuA~ zdEo;S!?owE*Eo+YUCOMRKDiqOA{83heXMYQs3pIZkhuSkjc!bV5@anNmIjqQ)jAd& z^-mlRO!rK;vV3hsbZh*n{$Es-ShVCAL3`IT>m}p&^VyN{(`9j~l5;bnoeG!Y&jP?= zxBJWnYI{?*!EdaztZVO0hm%rup>m8N0USmeY>D}HX}M-}w0_B837}C(HNy$=?Wo`` z-wJD#pLz}FtUltDPo6#I8x$6w?(R#Hk>kp#(oD=aY#;?jiUbS4G$7l>yW1!vqn_-$ zd1S!IkPqrAOUit9lb%naoI{dNreA#1wR2?n>qJ-bF27on6iTStal3{iJZ?g4G|MO0 zNj6i!xW7p{iFQ-|Jw*=Ax|$ay+s^l5xh!dX0u{W$Cg&R$3AxeIiQbqT&PB;%0CPjkgk=**+)I!dFLWri)Ckk~5 zD6`nJSD{td)|g?(rRpx8D8WibEKtV7ZO_d zo)*0Cycn*KrNVbXL&e1W&M>Rm)g^D*Vl~`(H!<^1R1NpF9!$S(gtPjNPPTg$SK$?# z=UjTfM;J6^qDW(~HU# zIq5Z9nXYLvp?qHu%Gh+bme`NxD5R@IE9ix$G?cuyWfqZ5>x}KOM%$Uc?}4^Y$c;K0 zz9U>syhDJBQG|vWsnXQfqwkpXJBQ9B>1 z2hMyijRp!T{w;LPTu}rmU&;)4{LEk5Kx^k~vlxwA8iOw(GWQ&u)mQx`C>%9y{ODxL z@rRn{1{c@)JM@s@Hnr2|AP8@aGk{+jymALG6_At=<>1!BGA>j!b}TX=TdH#^cXyH_rn# zi%cq?8@=IyQ@aS=bQc8RszPRSBi zv5(%dZGjz%VGehjw&iu{227xZXK_K|^Iz+|#pDJujB;>pxkoYqx47T{E0)zwB0rUR{VuM+MM4FIz+T(DO zN-sPumakom)h}}bu#u4&@sW{ez}Tqh|J@N80|Wq5p<)<^$|0Gf0FhXL_>*NBTpq!0;6sJqUAiWs!i|~Q}ezew~BFifdsaQME7eOQEQfxkY*J13kFQBNta}QI(^1;KaWdrjLAKUq?PScI(e|!7uw3s1=!-NqfVd zxA-OxsjqiaKcn1?7`Y->)xFEk*2P$PYKu|Di*62$+K(-}F}Xz%-qxu0HM;P3UrY5) z?1x3lhrqyHdAi;2wB%wtq_3Gso2@(d$$yU+>D)UnP)~bbSj| z-59|Ka73cFBsG8A=@uB8%yD&QO6LOw5AnF6{>DwrR_3Xuf=#vpANcEvw?}oAR}EXb z9`aqiU$(+0EMC(Hm7U3gSb2(wmZbA@Vi)05QZbeFRKLq2#7SB%fIYC=~rwbsuwdO$xFq?L&{Uc29T* z2vt0^O-IFRR2w!>Pd=@^{(MHNBl-gFe(qV3S%6@xdT1WJbj|othi6cqq$soOeF3x- z0R>8_q@FpLH<<2aLDiM2Jy4ZFgHpRWeh8;}+P^>OIryx`0zt$UzD`dEX6~07nmCm| zHm~nyOU-{kEgxi<6z>71ovc?$_)2uFVOIBiX7I_%RH98eKGjG5z{zu6T2?~QK?$sf|)p4hjr7U(5#jdFDUR%qnI!omg> zn4$peZv`qoGFsktoo9E;TS%gMKSgkD2ANS&N*NqcM#X*i0gV}r?P$cBTwm5*p?RE< zoW2ej_Qq6sJ@L~AAz`a%Zkv(d@_wSHvo)ubE^0E*#d&$C+9&Q?+W3Qc#FRU_wLEhb z_=Ba(*#$;SdQX8|W43<3Aon8_58j732q}VF)(eXuC(}8!78e)Fkmas*<^&E6fe%Wj zXp#iSuR^pw8+&50y_r|1=fobkT-s_BlJ^lx<5dGa@=h&ePJ+d)AQQJq+3WOL8%6g^ zEhqINVdPYmF?YjW?xMFJeXF)AuHgQBnKCefd1(cudb*GHYLEHj*|f2 zq<0i9YuIbTci!zy>w`*Y`+rU)PwB6sqeb+aN^;{yJWG<;;bz z6sE@Lv>|Y7$A_sJpkjHpKX&^j8J|XLY?diNqTeabk--4Gr}BzUz7ij3#wA^@|r57D8p_J_(*{h3W) z&g8(-5t%!1ex4U->+JDB!AM-oGbfP`As_U1GYK5l+4UT!`x z7|aa;2jRv4V?smC3&IO}ru>kR0MEhmKMKOk4{nCJE=6GoW(o+x17JFyujh2u(YmA8?DHR&L@+vb|8zlq>2IJp8MqXl zxXa9!qp^GGNS=U3=E^Q;{w&3{uxLU zGavIdy>)@90`oNvx!q|&eA864nj<=-eDA1o=PZ(TdJLC@gb(%w%+Lwb=DG;1SdCAn4#=j6qW!;i;A|5HZ6_9n zVqoHyFGdkD#6&Z->AlvBdYAHNZ7d{qGz|eCG$Yk+ug4*57jV?5K8#MBVToNUhg^wW zY+R3zN04bomVk*Mr#q;nm_F%;`46qz#9Uv0*xv33R>7YB3kRs6MhSNpF>Gz_botZ=yy3+iW^Ae|`DB3UqBCsZ_0-x5}vU zaxh4ifbxpNU&Wnnn-wvpw!)*{Kf1N2d*+X+?Do*zFKcey>(#g(LN$Lm7<1fl6%N-+ zdUbxRbQ0&X66gzR6O%^jb8V+vXQul=@G|&?%2;VxBaC;4!YEl<*0%qYQx!HTHU2$B zO|gHD1wGzVxUq#SM1BxWMDA`ibi$@o=(e_TqTkYEL}cFP(!VMVOvw}9!lK%@!|ANc zv1E=p^G4|f5&L^gLWafOCO4IXl%JfyfU6^-UYrk3nVd*d(4agS99MGGE#%j`0)C|! zBPdlR&{x9pX>*>Kjsf~QO(|HdpY_xv2^z_^1~pb{0ugGiI-rsLu5f5D-bvZ8rY$yC4UdR_rqFQqN_J+=f_!-XtJSE$ zx;GzvTJtK@dOB)UfHmITh1T4mXAP+tUKLm_8z8Cr5{u$Mmz6gil5SUd5cauxDk zc6}3G552Gcfm(|4r|-nWLwq819=DQ1d@ zt4Wpjw!@Te?}e!-nfexB_gRbpAR#^TOoPz4h8o`>1Ku3)O~J7J;A!PK^-h3{T_3fH zS$S*CN3PqtWlysg%P z%kW_GaDb9~_{)rfOFNhhe|k!LE-0=lXr~!!(_pkzm@@OUpz1l6sr_{$4#wc;b}l1v z)Y~Y}-qStX>>y!O@;& z?<}DnCowoo+~1m!MgJ%h5oRf7y})j#$CkEM@2RdIQnoaV5F2FoE0^5&NX-{FWA%LL zwFG8L%7K*_Sb;w86zo+CD9(!A-xO&<{w7-e-5yt|l8?04OBEQvLBWmP7OsCO2p&_= zmP9V)UEQum9bRy2TELv7weC#mw!}oM9=wpiTh-NX$9~k&zZ!}qX&<8em?mv+@A%j6 z+DcG6{enP_M_HlsTgyeosZNK$3(o#XyU>LGGv_;}5Cci9z~M9HB_s*b0tx_sBZXFt zt-ScqTPYtp0qat0IE`ZJD0!_NWovjtVN})cO#&J$;!FW<)$C)PUZuj2*EoW%$tqW=Q~a zKj;$z?JRn+nD3TM%&rx?ukk1E+3^A(m~UKnE!w|?hicfD^D)r%GOuuQojh)McC7d)y=Oh{*{C>ryu7OSr8>kx_iqhGZ8KE>#5tAzh0{z22CGg<2N#?tI~#=PU2}U zJ_QgRzq~fbemkjU0O}-JDv}M38m8jy*)T2nIv!@&m)eBRUi%7q^yZ<~L#^*`CV7W3 zM1jk1XNds$Qz~A!nxe{Fgl%MZR5GCVQ|4q8b!bH468{XI?RrWw`xq}zolJ`xm>SH$ zAUKee8ygBo68t5@_fljeCA|EmD}`1;X9?&*Jmj3njv)QYzq$LH@Pta%l?5P>ux@_+ zF`f|ZrR``@odw%aa>?&`FwqRm9WfihHpJhNG{sePbWv(fC}AF%Q}T_=Z;#Hd;pCtS zA*plAo!wRgx@vClF7nY&j8*&vjiwR*6cNOFpD3#E$JAKZ-=41e#6Waomi;I;4l)>S z(EPJ(>lOPjQX{7V3(A{WLsy3PR`X`RfXpcm;XUnvaFN<$2j5{Wa`tpItp@?@>?JNq zZL#F=kfUYi@^=kYE1ew8{qj!DWok+NtLQ_+0nRtfTn*`tbmZgL5jaB?onic;H0Klh zfW_S2b0bWYE9;%VhQY)s!k_4dpZt){iw9HWl;8h+OPRsoTNu(_9FX$JXt31B;=~iS zwYI@JM$L}I>GHduM!ou}y2h#0kT|_6W*}P}&RhG4t;<#=$Gmlf(+`vB4~sFbe4D4q zNuJ}PMWwlVyOUck#qs5M^F$NjD7ut#2a#@Ba$bZS=}-$>BEZht3s|V$-+HW((Nyry z7RCL$k<<%~MUevXaBn^*YUSJr4zLsx4F1w9!_dSe+fk{*a^Y&%H_mO=c{NS@*$918|lmrN(WpRRCHf_FFg?6dp zvw_6VkfrP)Oxj~*$nRB(D7{uzjh@bSs%~~J)QLYn=@Unatr=m_a#<4RAPMwwo2WGY zV3m+~r6}K({1xNcBNCX=JS##%9=xgB7wA-b3qy?*oh04XqHU29Mbo&t$Ud1q7C{qS zj(2K0z{S&$D&9cfk;5%gJNS#Rdhw~Xg1D`UhE!*((n^r|$IZ&r@5A1WK%-ps5t7RmN8V3E z9uG%KKrm-PYv-(6wgU;Dj(s$V8nLMNoK2nrE9vKb7W?JIVpu&$O|d0Jyp=?C9teEP zY8OLm+FU<5!sn%GZ)w_r=vbK?Q`9ZgQFU{Mw_7mWhWQ`ei{X59wHGNNm&Y9a{ z#0nU}WlCvKYScMpyqfaX$sHuRuk?_f@kK&ALsL(obWE@QJ9C4@Pt;H|TS`!&K}#dW zIELlhqY-ohS%zft2y~BP=7jA|iP=c~MQ_VwCONAQh0Qrht{*3=fp#L?gm_X9!3E^|6a_>7DO(;uk<>rZ##Cdj{MqpS&9U#ue- zKm6F<0JfOE5xYd;YUIsI`XG}r2qmp;BA3fjR-~iIuh$YP)KG=_LS09}6Fz=HoGi;>U&te~F#q|Nrv7JAc)#}H+wjHqg72|ZIMElr zk4mVq-`R`pi88QfuAl~e1WrU^@^9x(jLR7^E9?V)?QT|}o+JYTs37zo6Ie}}D=>Xw zQ0t0!>}qE{9**4361*Mtj$q=IhKUlq67Dqg;|qUglI37$ws>lo!WP3q+FWoQ`z9C5 zjwtPLPrgV3LR3VUyE3mgJ}{>KY`M`GD;@wVp$OU?eKJv6q3$N2pTZUw<8t#);?&K6 zx%(v~OQ87Yd9y@#*Fqv3AR4Y*y%_0o9o6q!3KHfUq~*U#eQDU(dp%nm#zBB{1(KZ7 z?-{uGnwB}lHk~pRQw@x`EXvn<8JP9EO(cRqLQ_> zi9I%IvRQ;(pEW(Dm3Q->dwbW3>B2=u@t&k)V%M`U)_^8WWHelv>y*oy3GrRJx{^ZX$ zmkfu6Z}<_ACWrJibvnZW!OCC=80Vi)Qe-3$07xSme{!((YO&v$?|w;>2da(veJ{3G pv`O{0YOs@39&ZOo!YXe*rT*mL>oI literal 0 HcmV?d00001 diff --git a/scripts/cloud-data-producer/crypto/orchestrator.pub b/scripts/cloud-data-producer/crypto/orchestrator.pub new file mode 100644 index 000000000..8943e2917 --- /dev/null +++ b/scripts/cloud-data-producer/crypto/orchestrator.pub @@ -0,0 +1,9 @@ +-----BEGIN PUBLIC KEY----- +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3yehtbhcNHKYve2sDTLT +SsVo/9auhiIrs2RXVZ9gBLLkDUukVtqKTIwKbbbJ3JCl0QFxMPsaY4VcGAsPEyXe +W0GsRWV1AIZeyHPvIXHZsoGa+MdalOh8adBIa38mLxzQB8Ju1XCjhKNgXvRqPbfC +FX1pqc3PMAi9+xpIrd8Cdj5zcc+0nhIbTs3mJAdo5yyL4hd/fkomJ4ubS0YYBgan +oIMbkH6Dy6zolS61SqnjDg7A8HPlJUgYR6rppZyQmaFNl1fNupcEOxWiUCBOzOYR +A9I1oXkhuUI0e6FnXHP7KovwpzYiPDGy9KBxs7OI/yVc3dCJTAS9i6RLmt0Emblf +RQIDAQAB +-----END PUBLIC KEY----- diff --git a/scripts/cloud-data-producer/crypto/plantdescriptionengine.p12 b/scripts/cloud-data-producer/crypto/plantdescriptionengine.p12 new file mode 100644 index 0000000000000000000000000000000000000000..a63baddbc2ea74739daf241efb4048f5faec3567 GIT binary patch literal 5700 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 +-----BEGIN PRIVATE KEY----- +MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC36EIUGgp6L6f7 +giJcjfsVVMVRSJUjcTDZQ8bIHaUCEt51v57MUeIQfE7AMjtLcSGHQzWeyT+SG9j3 +aFj9P/T45pyh0VJBBP4eOLioMuGbHmUX/2NnH4NrmWdN/VDTzNkFzBQiw4i8g5Ji +bVDVibiK6MwShX5DVCOvKq6f19n9OodwtkelL5KRsfhfmavvBQW517NS4p7xSP4y +60IGxNMlL1RyFs+OX+pEb9otpuRUaXQE1Q2DGgcQiI+pfaKEZR8aRnfGilrNmBQU +eY0snklu9a84FJFFwziSc6Ug1PKDzpxHdtGrDSwd4lH3TdwNuYfugQSMOEfz6mfd +HqXxQiCFAgMBAAECggEAHezFE9BI9CjdBKfgP3864/WvRdKxsdqxQCkvJ1DrkLLR +UAemJ0kLp/MSPWPvEg+OjRv6laPZnES7wUZRdKP7kKS1x/7vi3TshK5mHbhpzXvc +p1L/McCG+fM0RBR8GnqytabHgAChN0uRfkKbbKPES5Yl3r2qFfqS8+XWFFxjNDkT +BR7AgdduxsBwEK1OIQpTxmVUpbIYaX6f1+q/tVJu3WYuJ1YgSGU2ob1eu317RYaR +mqRtJ8DQ3q/Leret5qHa9KvHe9lYKEg6RcOAZrVAxqUF6pVzUCr4MR0OlPMM4sDP +EscZD6ayZTTZzCJxRlM1/xGIU4AJOLQ1NgfJDcAJAQKBgQDHqEzbHJ+gCgdxmbLH +RImXSgm1N3DrXZs4v4UtTvSQd/jk16Lh9X3jozYQL/J9mLQ2AVgjJTJkpqfd5U7c +QnoWo604UJVCD5FVyI3s2dJ29fUV/q9FkeRBxmWO7rR1aVPAZHvLMTgjeg38KALQ +WHO9Njg3vn65eWeZW5hRUq0H7QKBgQDrziF2gXU85WeHtN9umJxZGh/sjuUq8c4x +/i/usNkvqvqfrMlmC/rSzUz7hM4qW6PJaVIX+VIDmhDYsRgZEhqfcsm8fjISXZvn +QEJIskzkDCn4rnbSk9cU2cGoriaXFShtLk6qg9MQa5PUutWTFWGI/BawpM9WMNOE +UlpfoBe3+QKBgBffS7E3Lu7XxCQVGIcy7rCkLZz5UAsUWibi322Xby6G6b+S+OrD +i5XYQfKViQzzYTjD2GH7ZJccRh4F+PPlDuv+DgwZtn77lYkIPdAAC2Yl6nQCy7op +w30J18LLT9BqE5WBbjvRWsEDKwDnV87JhK0u+nHP2R8cIQL5LLEsjXvRAoGBAL4P +Q+t3ht5RbPP1tk03FnW+19JcjpvhkDe9UDcMNdH09tKyexYUO9OjBBSKQ33ipQ4X +JMMMAq3ChSeS/gBfFjREWhPih0tERf/LTGG5zL3WjBHT1RP/c1Fr/mqOC66ksBPo +SiGn5PwMKXhCKxjFF/tIbKVuAWvQKPwzQIJo0BVJAoGBAMDqn181JRvPMP6vg6wM +pjQTnYWe23pQJt5jdgxzZLbV2dd/UmmjGsf8Ao6QZmhjHhq/qwjoKiFmklMLsbHy +JpUBAMEzRxtQmACWJ2hHmXASLhEmuH08JkWLlqmMQ0VY3LgZWsFfO1N4qtfRBFWI +Q4A+fqBGgfdP96JqZh/PHK7C +-----END PRIVATE KEY----- diff --git a/scripts/cloud-data-producer/crypto/sysop.p12 b/scripts/cloud-data-producer/crypto/sysop.p12 new file mode 100644 index 0000000000000000000000000000000000000000..239c78b508444d8aa4696600ba6c38179b232d1e GIT binary patch literal 5585 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 literal 0 HcmV?d00001 diff --git a/scripts/cloud-data-producer/crypto/sysop.pub b/scripts/cloud-data-producer/crypto/sysop.pub new file mode 100644 index 000000000..ed663e502 --- /dev/null +++ b/scripts/cloud-data-producer/crypto/sysop.pub @@ -0,0 +1,9 @@ +-----BEGIN PUBLIC KEY----- +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAt+hCFBoKei+n+4IiXI37 +FVTFUUiVI3Ew2UPGyB2lAhLedb+ezFHiEHxOwDI7S3Ehh0M1nsk/khvY92hY/T/0 ++OacodFSQQT+Hji4qDLhmx5lF/9jZx+Da5lnTf1Q08zZBcwUIsOIvIOSYm1Q1Ym4 +iujMEoV+Q1Qjryqun9fZ/TqHcLZHpS+SkbH4X5mr7wUFudezUuKe8Uj+MutCBsTT +JS9UchbPjl/qRG/aLabkVGl0BNUNgxoHEIiPqX2ihGUfGkZ3xopazZgUFHmNLJ5J +bvWvOBSRRcM4knOlINTyg86cR3bRqw0sHeJR903cDbmH7oEEjDhH8+pn3R6l8UIg +hQIDAQAB +-----END PUBLIC KEY----- diff --git a/scripts/cloud-data-producer/crypto/truststore.p12 b/scripts/cloud-data-producer/crypto/truststore.p12 new file mode 100644 index 0000000000000000000000000000000000000000..2c03bf4e4bb0ba775e1ee3748cf24579311c6103 GIT binary patch literal 2182 zcmV;12zmD~f(U{F0Ru3C2rLE(Duzgg_YDCD0ic2i9Rz|188Ctf6)=Jb5e5k=hDe6@ z4FLxRpn?bjFoFmE0s#Opf(Q2o2`Yw2hW8Bt2LUi<1_>&LNQU+thDZTr0|Wso1Q4FE$nRiF#)QA$0x_d+M9F}H2Y}){D1MW-AJW|CWzT!+8u(9o zjUiubI4(uT{N)9-F^lM|aW)VLhZV42+tgJu94@rStW0+de*!ulXZmu`bGBksd({RO z-fM&Zvx{H`TY+}sCl2E!ykF3^_X@Fs*bm~A^W|0pH{>XoRzsbzA82hfOk|3G`366m zD+{G=p<*(MTs5rUpZJHnT*QX2fHB`ZFj03}$?kVdPeKZ7!0&lx>fXqS84*d8|KlFV z35dQ;w<`GT8w#fC_cjE|zmnnG&o8koGhiZeQB?}vIhvrC9@@%#2|c>pn*s{fSJe_0 zp5(1PY`9~95I_fATGr9&=0K0CZG>kqvEpM|phleLK>9_*I2Ig+s>QQb4m-1uvltiJ zdbhtk5WB~Ov6#yyhE!p5*z(6JwGlSTHR-vi9ROHVm~d{u!Nj&=+!@XX->3Hfe#G=> z@omA59q80JT9ssIx*Gm__<{I;eVo+7WO7=)JcOpplQ87#H<-lLiPcGhI6g)RA4k~u zJ8ZB@C7=62BhbzvYDvYwbfk)Z(hq8U zeg3R6b`4?2VqF9SsYW97Y5L0bxH)Bs0e>T0)bz478mujD9r^(=Wy7y%a=;Da+R~jY%2sU_bm;iW~VNX`BLl^H6KAn73O5!tRpU}Mk9)C6lit$lJG=|zjv1TBynhA`ro z7abf?FuaqPm0W)!=5T|wI9srN_Foz0JUX3`G*x(ZaZHmOwjqoMfQ%~utPjKIbumQN z=DUjZShy)hZy}wEi%{{T1QN{2Q)T<`Cifnxgm#OIr$U)=KdzM7_kPEeSoK6zR~@O; zh+g)BiV*@wF`*CG8x-ZKS(F(m>b%KED{^Y>!7EK#_e%zIUG=*-@`h%Vj>(PAIgT9$ ztN?2}KC?yNXC(^DGveBShFK_9WtrZ>ZNmmoqq0AIx=@YU{&r!xDZIPuW;Hm?PiZnbWW+nAc z1N2jwS^!92VOH?xA==e+1JrnfEivBo5hnoxTv&}zDJshVYdN>3G1*^Pa7@0O(}Y)n zorBN?lo)DUvRxPLSpYC_R|kZF;&2x*MfcI=_(%g3wTW42XPnDw{mKRkMqq%GxIC<3 zCZT@;em*}h2v2&$#W8&Z-_-&0>%2`mBzM{yOjvwHt?o6Kd(bFj%pU#Z1WGl$htnD9 z&h`Dl(kcnzu5eRNFciH=sTHR}m$XhN_?AFpfQm{Dp;OjWI5KAsbC9(V`j|qu@0WbP z<=)vO9|ynJ*&&9#=%-0(W%0fp>agG{jjNb|F>>R=9BI&+an3_PiP)mICo+)JLB96Vo{_8c z7kDT27zUCuB}F7Z0Pwn=bqO$8;KKxGgMmxqpp0+Q3Vrg|;@i}xRw%P_g_)gSc;7gH zg22AzY*XIKJ`326M{Ch6Idx>j+Jt}@VAcz$YM_%pL*eLZ3HZ{B(;6Td2{s{zph?zY z&qEg`B66FVp>gL|eC(sk{pE+$!hF4xzUwfS2ENwS&_?w|3cUU}F(%b6w%q!#DCIjDW`lhO0#tniD4nBcx;`Z>Ce8e1F-`*%Akj|$>K*h0t)_XnjuK{vguVh|XM=ykm2)LaW=djZ;2NC9O71OfpC00bb) z!vdWz04w3|FYPq{Npsgk+4y%!W@ksN0|d<@#6yDw6mE>s2(G(}7U^FNoUaH I3<3ft5Eq02&;S4c literal 0 HcmV?d00001 diff --git a/scripts/cloud-relay/crypto/alpha.p12 b/scripts/cloud-relay/crypto/alpha.p12 new file mode 100644 index 0000000000000000000000000000000000000000..25d16978174b8144af7b80e42f52158e9ef0636a GIT binary patch literal 5563 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 rheCH9KhK)>GNW2Y+z*W6it7EOK literal 0 HcmV?d00001 From 431a8126fa888e1680a201dec6759707ab4e27ba Mon Sep 17 00:00:00 2001 From: Arash Omidi Date: Wed, 28 May 2025 15:02:21 +0200 Subject: [PATCH 4/4] publisher.py and subscriber.py moved to docker-all/tennis_demo --- docker-all/example/tennis_demo/publisher.py | 23 --- .../example/tennis_demo/register_publisher.py | 19 -- .../tennis_demo/register_subscriber.py | 19 -- .../example/tennis_demo/subscribe_event.py | 35 ---- docker-all/example/tennis_demo/subscriber.py | 19 -- docker-all/tennis_demo/publisher.py | 157 +++++++++++++++ docker-all/tennis_demo/subscriber.py | 181 ++++++++++++++++++ 7 files changed, 338 insertions(+), 115 deletions(-) delete mode 100644 docker-all/example/tennis_demo/publisher.py delete mode 100644 docker-all/example/tennis_demo/register_publisher.py delete mode 100644 docker-all/example/tennis_demo/register_subscriber.py delete mode 100644 docker-all/example/tennis_demo/subscribe_event.py delete mode 100644 docker-all/example/tennis_demo/subscriber.py create mode 100644 docker-all/tennis_demo/publisher.py create mode 100644 docker-all/tennis_demo/subscriber.py diff --git a/docker-all/example/tennis_demo/publisher.py b/docker-all/example/tennis_demo/publisher.py deleted file mode 100644 index a6420ef09..000000000 --- a/docker-all/example/tennis_demo/publisher.py +++ /dev/null @@ -1,23 +0,0 @@ -import requests -import json -import time - -EVENTHANDLER_URL = "http://localhost:8455/eventhandler/publish" - -event_payload = { - "eventType": "ball-move-event", - "source": { - "systemName": "tennis-camera", - "address": "localhost", - "port": 8080 - }, - "payload": json.dumps({"ball_position": [3.2, 7.1], "speed": 42}), - "metadata": {} -} - -print("[📡] Publishing ball movement event...") -response = requests.post(EVENTHANDLER_URL, json=event_payload) -if response.ok: - print("[✅] Event published.") -else: - print(f"[❌] Failed to publish event: {response.status_code} - {response.text}") diff --git a/docker-all/example/tennis_demo/register_publisher.py b/docker-all/example/tennis_demo/register_publisher.py deleted file mode 100644 index a84ff1ec5..000000000 --- a/docker-all/example/tennis_demo/register_publisher.py +++ /dev/null @@ -1,19 +0,0 @@ -import requests - -SERVICE_REGISTRY_URL = "http://localhost:8443/serviceregistry/register" - -payload = { - "systemName": "ball-camera", - "address": "localhost", - "port": 8081, - "authenticationInfo": None -} - -try: - response = requests.post(SERVICE_REGISTRY_URL, json=payload) - if response.ok: - print("[✅] Publisher registered successfully.") - else: - print(f"[❌] Publisher registration failed: {response.status_code} - {response.text}") -except Exception as e: - print("[❌] Exception occurred:", str(e)) diff --git a/docker-all/example/tennis_demo/register_subscriber.py b/docker-all/example/tennis_demo/register_subscriber.py deleted file mode 100644 index d0ed9375f..000000000 --- a/docker-all/example/tennis_demo/register_subscriber.py +++ /dev/null @@ -1,19 +0,0 @@ -import requests - -SERVICE_REGISTRY_URL = "http://localhost:8443/serviceregistry/register" - -payload = { - "systemName": "movement-logger", - "address": "localhost", - "port": 8083, - "authenticationInfo": None -} - -try: - response = requests.post(SERVICE_REGISTRY_URL, json=payload) - if response.ok: - print("[✅] Subscriber registered successfully.") - else: - print(f"[❌] Subscriber registration failed: {response.status_code} - {response.text}") -except Exception as e: - print("[❌] Exception occurred:", str(e)) diff --git a/docker-all/example/tennis_demo/subscribe_event.py b/docker-all/example/tennis_demo/subscribe_event.py deleted file mode 100644 index bc5756edd..000000000 --- a/docker-all/example/tennis_demo/subscribe_event.py +++ /dev/null @@ -1,35 +0,0 @@ -import requests - -EVENT_HANDLER_URL = "http://localhost:8455/eventhandler/subscribe" - -payload = { - "eventType": "ball-movement-event", - "subscriberSystem": { - "systemName": "movement-logger", - "address": "localhost", - "port": 8083, - "authenticationInfo": None, - "metadata": {} - }, - "notifyUri": "/ball-detected", # باید این URI توی سابسکرایبرت هندل بشه - "matchMetaData": False, - "filterMetaData": {}, - "sources": [ - { - "systemName": "ball-camera", - "address": "localhost", - "port": 8081, - "authenticationInfo": None, - "metadata": {} - } - ] -} - -try: - response = requests.post(EVENT_HANDLER_URL, json=payload) - if response.ok: - print("[✅] Subscription created successfully.") - else: - print(f"[❌] Subscription failed: {response.status_code} - {response.text}") -except Exception as e: - print("[❌] Exception occurred:", str(e)) diff --git a/docker-all/example/tennis_demo/subscriber.py b/docker-all/example/tennis_demo/subscriber.py deleted file mode 100644 index 1e16b51e5..000000000 --- a/docker-all/example/tennis_demo/subscriber.py +++ /dev/null @@ -1,19 +0,0 @@ -from http.server import HTTPServer, BaseHTTPRequestHandler -import json - -class SimpleSubscriber(BaseHTTPRequestHandler): - def do_POST(self): - content_length = int(self.headers['Content-Length']) - post_body = self.rfile.read(content_length) - data = json.loads(post_body.decode('utf-8')) - - print("[🎾] Ball movement detected:", data) - - self.send_response(200) - self.end_headers() - -if __name__ == "__main__": - server_address = ('', 8083) - httpd = HTTPServer(server_address, SimpleSubscriber) - print("[🟢] Listening for ball movement events on port 8083...") - httpd.serve_forever() diff --git a/docker-all/tennis_demo/publisher.py b/docker-all/tennis_demo/publisher.py new file mode 100644 index 000000000..0d87d84d4 --- /dev/null +++ b/docker-all/tennis_demo/publisher.py @@ -0,0 +1,157 @@ +import requests +import json +import time + +# --- Arrowhead Core Settings --- +SR_ADDRESS = "http://localhost:8443" +EH_ADDRESS = "http://localhost:8455" + +# --- Publisher System Details --- +SYSTEM_NAME = "TennisBallPublisher" +ADDRESS = "127.0.0.1" +PORT = 5000 +INTERFACE_NAME = "HTTP-INSECURE-JSON" +PUBLISHER_SERVICE_DEFINITION = "tennis-ball-publisher-service" +PUBLISHER_SERVICE_URI = "/tennis-publisher-events" + +# --- Event Details --- +EVENT_TYPE = "BallMovement" +EVENT_SOURCE_SYSTEM = SYSTEM_NAME +EVENT_DESCRIPTION = "A tennis ball moved on the court." + +def unregister_system(system_name, address, port): + """Unregisters a system from the Service Registry using DELETE /serviceregistry/unregister-system.""" + print(f"Unregistering system '{system_name}'...") + params = { + "system_name": system_name, + "address": address, + "port": port + } + try: + response = requests.delete(f"{SR_ADDRESS}/serviceregistry/unregister-system", params=params) + response.raise_for_status() + print(f"System '{system_name}' unregistered successfully.") + except requests.exceptions.HTTPError as e: + if e.response.status_code == 404: # Not Found, meaning system was not registered + print(f"System '{system_name}' not found/already unregistered. Continuing...") + else: + print(f"Error unregistering system: {e}") + if e.response: + print(f"Response content: {e.response.text}") + except requests.exceptions.ConnectionError as e: + print(f"Connection error to Service Registry during system unregister: {e}") + +def register_system(): + """Registers the system in the Service Registry using POST /serviceregistry/register-system.""" + # First, try to unregister the system in case it's still there + unregister_system(SYSTEM_NAME, ADDRESS, PORT) + + print(f"Registering system '{SYSTEM_NAME}' in Service Registry...") + payload = { + "systemName": SYSTEM_NAME, + "address": ADDRESS, + "port": PORT, + "authenticationInfo": "" + } + try: + response = requests.post(f"{SR_ADDRESS}/serviceregistry/register-system", json=payload) + response.raise_for_status() + print(f"System '{SYSTEM_NAME}' registered successfully in SR.") + except requests.exceptions.HTTPError as e: + if e.response.status_code == 409: # Conflict, meaning system already registered + print(f"System '{SYSTEM_NAME}' already registered in SR. Continuing...") + else: + print(f"Error registering system: {e}") + if e.response: + print(f"Response content: {e.response.text}") + exit(1) + except requests.exceptions.ConnectionError as e: + print(f"Connection error to Service Registry: {e}. Is Arrowhead Core running?") + exit(1) + +def register_publisher_service_offering(): + """Registers the publisher's actual service offering in Service Registry.""" + print(f"Registering service offering '{PUBLISHER_SERVICE_DEFINITION}' for system '{SYSTEM_NAME}'...") + payload = { + "serviceDefinition": PUBLISHER_SERVICE_DEFINITION, + "interfaces": [INTERFACE_NAME], + "providerSystem": { + "systemName": SYSTEM_NAME, + "address": ADDRESS, + "port": PORT, + "authenticationInfo": "" + }, + "serviceUri": PUBLISHER_SERVICE_URI, + "secure": "NOT_SECURE", + "version": 1 + } + try: + response = requests.post(f"{SR_ADDRESS}/serviceregistry/register", json=payload) + response.raise_for_status() + print(f"Service offering '{PUBLISHER_SERVICE_DEFINITION}' registered successfully.") + except requests.exceptions.HTTPError as e: + if e.response.status_code == 409: + print(f"Service offering '{PUBLISHER_SERVICE_DEFINITION}' already registered. Continuing...") + else: + print(f"Error registering service offering: {e}") + if e.response: + print(f"Response content: {e.response.text}") + exit(1) + except requests.exceptions.ConnectionError as e: + print(f"Connection error to Service Registry during service offering registration: {e}") + exit(1) + +def publish_event(event_data): + """Publishes an event to the Event Handler.""" + print(f"Publishing event '{EVENT_TYPE}' to Event Handler...") + + payload = { + "eventType": EVENT_TYPE, + "source": { + "systemName": EVENT_SOURCE_SYSTEM, + "address": ADDRESS, + "port": PORT, + "authenticationInfo": "", + "metadata": {} # Keep this as an empty object + }, + "payload": json.dumps(event_data), # Your custom event data as a JSON string + "timeStamp": time.strftime("%Y-%m-%dT%H:%M:%SZ") # Ensure ISO 8601 format including Z for UTC + } + + try: + response = requests.post(f"{EH_ADDRESS}/eventhandler/publish", json=payload) + response.raise_for_status() # This will raise an HTTPError for 4xx/5xx responses + print(f"Event '{EVENT_TYPE}' published successfully. Status: {response.status_code}") + except requests.exceptions.HTTPError as e: # Catch HTTPError specifically + print(f"Error publishing event: {e}") + if e.response is not None: # Check if response object exists + print(f"Response status: {e.response.status_code}") + print(f"Response content: {e.response.text}") # Print the actual response content + else: + print(f"No detailed HTTP response available.") + except requests.exceptions.ConnectionError as e: # Catch connection errors + print(f"Connection error to Event Handler: {e}. Is Arrowhead Core running?") + except requests.exceptions.RequestException as e: # Catch any other request exceptions + print(f"An unexpected request error occurred: {e}") + +if __name__ == "__main__": + print("--- Starting Tennis Ball Publisher ---") + register_system() + register_publisher_service_offering() + + event_counter = 0 + while True: + event_counter += 1 + current_time_for_ball_data = time.strftime("%Y-%m-%d %H:%M:%S") + ball_position = {"x": event_counter * 10 % 100, "y": event_counter * 5 % 50} + + event_data = { + "timestamp": current_time_for_ball_data, + "ballId": "tennis_ball_001", + "movementDirection": "forward", + "position": ball_position, + "eventCounter": event_counter + } + + publish_event(event_data) + time.sleep(3) \ No newline at end of file diff --git a/docker-all/tennis_demo/subscriber.py b/docker-all/tennis_demo/subscriber.py new file mode 100644 index 000000000..5da397bd4 --- /dev/null +++ b/docker-all/tennis_demo/subscriber.py @@ -0,0 +1,181 @@ +import requests +import json +from flask import Flask, request + +# --- Arrowhead Core Settings --- +SR_ADDRESS = "http://localhost:8443" +EH_ADDRESS = "http://localhost:8455" + +# --- Subscriber System Details --- +SYSTEM_NAME = "TennisBallSubscriber" +ADDRESS = "127.0.0.1" +PORT = 8080 +INTERFACE_NAME = "HTTP-INSECURE-JSON" +SUBSCRIBER_SERVICE_DEFINITION = "tennis-ball-subscriber-service" +SUBSCRIBER_SERVICE_URI = "/tennis-subscriber-events" + +# --- Event Details --- +EVENT_TYPE = "BallMovement" + +app = Flask(__name__) + +def unregister_system(system_name, address, port): + """Unregisters a system from the Service Registry using DELETE /serviceregistry/unregister-system.""" + print(f"Unregistering system '{system_name}'...") + params = { + "system_name": system_name, + "address": address, + "port": port + } + try: + response = requests.delete(f"{SR_ADDRESS}/serviceregistry/unregister-system", params=params) + response.raise_for_status() + print(f"System '{system_name}' unregistered successfully.") + except requests.exceptions.HTTPError as e: + if e.response.status_code == 404: # Not Found, meaning system was not registered + print(f"System '{system_name}' not found/already unregistered. Continuing...") + else: + print(f"Error unregistering system: {e}") + if e.response: + print(f"Response content: {e.response.text}") + except requests.exceptions.ConnectionError as e: + print(f"Connection error to Service Registry during system unregister: {e}") + +def register_system(): + """Registers the system in the Service Registry using POST /serviceregistry/register-system.""" + # First, try to unregister the system in case it's still there + unregister_system(SYSTEM_NAME, ADDRESS, PORT) + + print(f"Registering system '{SYSTEM_NAME}' in Service Registry...") + payload = { + "systemName": SYSTEM_NAME, + "address": ADDRESS, + "port": PORT, + "authenticationInfo": "" + } + try: + response = requests.post(f"{SR_ADDRESS}/serviceregistry/register-system", json=payload) + response.raise_for_status() + print(f"System '{SYSTEM_NAME}' registered successfully in SR.") + except requests.exceptions.HTTPError as e: + if e.response.status_code == 409: # Conflict, meaning system already registered + print(f"System '{SYSTEM_NAME}' already registered in SR. Continuing...") + else: + print(f"Error registering system: {e}") + if e.response: + print(f"Response content: {e.response.text}") + exit(1) + except requests.exceptions.ConnectionError as e: + print(f"Connection error to Service Registry: {e}. Is Arrowhead Core running?") + exit(1) + +def register_subscriber_service_offering(): + """Registers the subscriber's actual service offering in Service Registry.""" + print(f"Registering service offering '{SUBSCRIBER_SERVICE_DEFINITION}' for system '{SYSTEM_NAME}'...") + payload = { + "serviceDefinition": SUBSCRIBER_SERVICE_DEFINITION, + "interfaces": [INTERFACE_NAME], + "providerSystem": { + "systemName": SYSTEM_NAME, + "address": ADDRESS, + "port": PORT, + "authenticationInfo": "" + }, + "serviceUri": SUBSCRIBER_SERVICE_URI, + "secure": "NOT_SECURE", + "version": 1 + } + try: + response = requests.post(f"{SR_ADDRESS}/serviceregistry/register", json=payload) + response.raise_for_status() + print(f"Service offering '{SUBSCRIBER_SERVICE_DEFINITION}' registered successfully.") + except requests.exceptions.HTTPError as e: + if e.response.status_code == 409: + print(f"Service offering '{SUBSCRIBER_SERVICE_DEFINITION}' already registered. Continuing...") + else: + print(f"Error registering service offering: {e}") + if e.response: + print(f"Response content: {e.response.text}") + exit(1) + except requests.exceptions.ConnectionError as e: + print(f"Connection error to Service Registry during service offering registration: {e}") + exit(1) + +def subscribe_to_event(): + """Subscribes to 'BallMovement' events from the Event Handler.""" + print(f"Subscribing to event '{EVENT_TYPE}' from Event Handler...") + + filter_payload = { + "subscriberSystem": { + "systemName": SYSTEM_NAME, + "address": ADDRESS, + "port": PORT, + "authenticationInfo": "", + "metadata": {} # Keep this as an empty object + }, + "eventType": EVENT_TYPE, + "sources": [], # Empty list if not filtering by specific sources + "interfaceIds": [], # Empty list if not using specific interfaces for subscription + "matchMetaData": False, + "filterMetaData": {}, # Keep this as an empty object + "startDate": None, # Use None for no start date filter + "endDate": None, # Use None for no end date filter + "notifyUri": "/event_callback" + } + + try: + response = requests.post(f"{EH_ADDRESS}/eventhandler/subscribe", json=filter_payload) + response.raise_for_status() # This will raise an HTTPError for 4xx/5xx responses + + # Try to parse JSON. If response is empty or not JSON, this will raise a JSONDecodeError + try: + subscription_id = response.json().get('id') + print(f"Successfully subscribed to event '{EVENT_TYPE}'. Subscription ID: {subscription_id}") + except json.JSONDecodeError as json_e: + print(f"Error decoding JSON from Event Handler subscription response: {json_e}") + print(f"Raw response content: '{response.text}'") # Print raw response for debugging + exit(1) + + except requests.exceptions.HTTPError as e: # Catch HTTPError specifically + print(f"Error subscribing to event: {e}") + if e.response is not None: + print(f"Response status: {e.response.status_code}") + print(f"Response content: {e.response.text}") # Print the actual response content + else: + print(f"No detailed HTTP response available.") + exit(1) + except requests.exceptions.ConnectionError as e: # Catch connection errors + print(f"Connection error to Event Handler: {e}. Is Arrowhead Core running?") + exit(1) + except requests.exceptions.RequestException as e: # Catch any other request exceptions + print(f"An unexpected request error occurred: {e}") + exit(1) + +@app.route("/event_callback", methods=["POST"]) +def event_callback(): + """Endpoint for Event Handler to post events to.""" + if request.is_json: + event_data = request.get_json() + print(f"\n--- Received Event ---") + print(f"Event Type: {event_data.get('eventType')}") + print(f"Source System: {event_data.get('source', {}).get('systemName')}") + try: + # Event payload is already a JSON string, so load it + payload_content = json.loads(event_data.get('payload', '{}')) + print(f"Payload: {json.dumps(payload_content, indent=2)}") + except json.JSONDecodeError as e: + print(f"Error decoding payload JSON: {e}") + print(f"Payload (raw): {event_data.get('payload')}") + print(f"----------------------") + return "Event received", 200 + else: + return "Invalid request, expected JSON", 400 + +if __name__ == "__main__": + print("--- Starting Tennis Ball Subscriber ---") + register_system() + register_subscriber_service_offering() + subscribe_to_event() + + print(f"Subscriber running on http://{ADDRESS}:{PORT}. Waiting for events...") + app.run(host=ADDRESS, port=PORT, debug=True, use_reloader=False) \ No newline at end of file