From 999a61e812c2780af911be66562bf409f1e98e20 Mon Sep 17 00:00:00 2001
From: Martin Weise <martin.weise@tuwien.ac.at>
Date: Wed, 30 Aug 2023 21:31:17 +0200
Subject: [PATCH] Fixed rabbitmq cloud image

---
 dbrepo-broker-service/Dockerfile              | 21 ++------
 dbrepo-broker-service/cert.pem                |  3 ++
 dbrepo-broker-service/docker-entrypoint.sh    |  9 ----
 dbrepo-broker-service/init.sh                 | 14 ------
 dbrepo-broker-service/pubkey.pem              |  3 ++
 dbrepo-broker-service/rabbitmq.conf           | 23 ++++++++-
 dbrepo-broker-service/service_ready           |  6 ---
 dbrepo-gateway-service/dbrepo.conf            |  9 ++++
 dbrepo-metadata-db/setup-schema.sql           |  8 +--
 dbrepo-metadata-service/Dockerfile            |  2 +
 .../src/main/resources/application.yml        |  2 +-
 docker-compose.yml                            | 50 +++++++++----------
 12 files changed, 73 insertions(+), 77 deletions(-)
 create mode 100644 dbrepo-broker-service/cert.pem
 delete mode 100755 dbrepo-broker-service/docker-entrypoint.sh
 delete mode 100644 dbrepo-broker-service/init.sh
 create mode 100644 dbrepo-broker-service/pubkey.pem
 delete mode 100755 dbrepo-broker-service/service_ready

diff --git a/dbrepo-broker-service/Dockerfile b/dbrepo-broker-service/Dockerfile
index 0813cf4a38..2025bab24e 100644
--- a/dbrepo-broker-service/Dockerfile
+++ b/dbrepo-broker-service/Dockerfile
@@ -1,25 +1,14 @@
 ###### FIRST STAGE ######
-FROM dbrepo-metadata-db:latest as dependency
-MAINTAINER Martin Weise <martin.weise@tuwien.ac.at>
-
-###### SECOND STAGE ######
 FROM rabbitmq:3-management-alpine as runtime
-
-ENV RABBITMQ_DEFAULT_VHOST=dbrepo
-
-RUN apk --no-cache add curl
+MAINTAINER Martin Weise <martin.weise@tuwien.ac.at>
 
 COPY ./rabbitmq.conf /etc/rabbitmq/rabbitmq.conf
 
 WORKDIR /app
 
-ENV JWT_PUBKEY="MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqqnHQ2BWWW9vDNLRCcxD++xZg/16oqMo/c1l+lcFEjjAIJjJp/HqrPYU/U9GvquGE6PbVFtTzW1KcKawOW+FJNOA3CGo8Q1TFEfz43B8rZpKsFbJKvQGVv1Z4HaKPvLUm7iMm8Hv91cLduuoWx6Q3DPe2vg13GKKEZe7UFghF+0T9u8EKzA/XqQ0OiICmsmYPbwvf9N3bCKsB/Y10EYmZRb8IhCoV9mmO5TxgWgiuNeCTtNCv2ePYqL/U0WvyGFW0reasIK8eg3KrAUj8DpyOgPOVBn3lBGf+3KFSYi+0bwZbJZWqbC/Xlk20Go1YfeJPRIt7ImxD27R/lNjgDO/MwIDAQAB"
-ENV JWT_CERT="MIICmzCCAYMCBgGG3GWyBTANBgkqhkiG9w0BAQsFADARMQ8wDQYDVQQDDAZkYnJlcG8wHhcNMjMwMzEzMTkxMzE3WhcNMzMwMzEzMTkxNDU3WjARMQ8wDQYDVQQDDAZkYnJlcG8wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCqqcdDYFZZb28M0tEJzEP77FmD/Xqioyj9zWX6VwUSOMAgmMmn8eqs9hT9T0a+q4YTo9tUW1PNbUpwprA5b4Uk04DcIajxDVMUR/PjcHytmkqwVskq9AZW/Vngdoo+8tSbuIybwe/3Vwt266hbHpDcM97a+DXcYooRl7tQWCEX7RP27wQrMD9epDQ6IgKayZg9vC9/03dsIqwH9jXQRiZlFvwiEKhX2aY7lPGBaCK414JO00K/Z49iov9TRa/IYVbSt5qwgrx6DcqsBSPwOnI6A85UGfeUEZ/7coVJiL7RvBlsllapsL9eWTbQajVh94k9Ei3sibEPbtH+U2OAM78zAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAASnN1Cuif1sdfEK2kWAURSXGJCohCROLWdKFjaeHPRaEfpbFJsgxW0Yj3nwX5O3bUlOWoTyENwnXSsXMQsqnNi+At32CKaKO8+AkhAbgQL9F0B+KeJwmYv3cUj5N/LYkJjBvZBzUZ4Ugu5dcxH0k7AktLAIwimkyEnxTNolOA3UyrGGpREr8MCKWVr10RFuOpF/0CsJNNwbHXzalO9D756EUcRWZ9VSg6QVNso0YYRKTnILWDn9hcTRnqGy3SHo3anFTqQZ+BB57YbgFWy6udC0LYRB3zdp6zNti87eu/VEymiDY/mmo1AB8Tm0b6vxFz4AKcL3ax5qS6YnZ9efSzk="
-
-COPY ./init.sh ./init.sh
-COPY ./service_ready /usr/bin/service_ready
-COPY ./docker-entrypoint.sh ./docker-entrypoint.sh
+COPY ./cert.pem ./cert.pem
+COPY ./pubkey.pem ./pubkey.pem
 
-HEALTHCHECK --interval=10s --timeout=5s --retries=12 CMD service_ready
+RUN rabbitmq-plugins enable --offline rabbitmq_prometheus rabbitmq_mqtt rabbitmq_auth_backend_oauth2 rabbitmq_auth_mechanism_ssl
 
-ENTRYPOINT [ "bash", "/app/docker-entrypoint.sh" ]
\ No newline at end of file
+HEALTHCHECK --interval=10s --timeout=5s --retries=12 CMD wget --spider http://localhost:15672/broker/
diff --git a/dbrepo-broker-service/cert.pem b/dbrepo-broker-service/cert.pem
new file mode 100644
index 0000000000..e66555558c
--- /dev/null
+++ b/dbrepo-broker-service/cert.pem
@@ -0,0 +1,3 @@
+-----BEGIN CERTIFICATE-----
+MIICmzCCAYMCBgGG3GWyBTANBgkqhkiG9w0BAQsFADARMQ8wDQYDVQQDDAZkYnJlcG8wHhcNMjMwMzEzMTkxMzE3WhcNMzMwMzEzMTkxNDU3WjARMQ8wDQYDVQQDDAZkYnJlcG8wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCqqcdDYFZZb28M0tEJzEP77FmD/Xqioyj9zWX6VwUSOMAgmMmn8eqs9hT9T0a+q4YTo9tUW1PNbUpwprA5b4Uk04DcIajxDVMUR/PjcHytmkqwVskq9AZW/Vngdoo+8tSbuIybwe/3Vwt266hbHpDcM97a+DXcYooRl7tQWCEX7RP27wQrMD9epDQ6IgKayZg9vC9/03dsIqwH9jXQRiZlFvwiEKhX2aY7lPGBaCK414JO00K/Z49iov9TRa/IYVbSt5qwgrx6DcqsBSPwOnI6A85UGfeUEZ/7coVJiL7RvBlsllapsL9eWTbQajVh94k9Ei3sibEPbtH+U2OAM78zAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAASnN1Cuif1sdfEK2kWAURSXGJCohCROLWdKFjaeHPRaEfpbFJsgxW0Yj3nwX5O3bUlOWoTyENwnXSsXMQsqnNi+At32CKaKO8+AkhAbgQL9F0B+KeJwmYv3cUj5N/LYkJjBvZBzUZ4Ugu5dcxH0k7AktLAIwimkyEnxTNolOA3UyrGGpREr8MCKWVr10RFuOpF/0CsJNNwbHXzalO9D756EUcRWZ9VSg6QVNso0YYRKTnILWDn9hcTRnqGy3SHo3anFTqQZ+BB57YbgFWy6udC0LYRB3zdp6zNti87eu/VEymiDY/mmo1AB8Tm0b6vxFz4AKcL3ax5qS6YnZ9efSzk=
+-----END CERTIFICATE-----
\ No newline at end of file
diff --git a/dbrepo-broker-service/docker-entrypoint.sh b/dbrepo-broker-service/docker-entrypoint.sh
deleted file mode 100755
index f87b1de958..0000000000
--- a/dbrepo-broker-service/docker-entrypoint.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/bash
-
-# load jwt certificates
-bash ./init.sh
-
-# enable prometheus plugin
-(sleep 10; rabbitmq-plugins enable rabbitmq_prometheus rabbitmq_mqtt rabbitmq_auth_backend_oauth2 rabbitmq_auth_mechanism_ssl; touch ./ready) &
-
-rabbitmq-server
\ No newline at end of file
diff --git a/dbrepo-broker-service/init.sh b/dbrepo-broker-service/init.sh
deleted file mode 100644
index afcf6f3564..0000000000
--- a/dbrepo-broker-service/init.sh
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/bin/bash
-echo "init pubkey ..."
-rm -f /app/pubkey.pem /app/cert.pem
-cat << EOF > /app/pubkey.pem
------BEGIN RSA PUBLIC KEY-----
-${JWT_PUBKEY}
------END RSA PUBLIC KEY-----
-EOF
-echo "init cert ..."
-cat << EOF > /app/cert.pem
------BEGIN CERTIFICATE-----
-${JWT_CERT}
------END CERTIFICATE-----
-EOF
\ No newline at end of file
diff --git a/dbrepo-broker-service/pubkey.pem b/dbrepo-broker-service/pubkey.pem
new file mode 100644
index 0000000000..9e4e9308e1
--- /dev/null
+++ b/dbrepo-broker-service/pubkey.pem
@@ -0,0 +1,3 @@
+-----BEGIN RSA PUBLIC KEY-----
+MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqqnHQ2BWWW9vDNLRCcxD++xZg/16oqMo/c1l+lcFEjjAIJjJp/HqrPYU/U9GvquGE6PbVFtTzW1KcKawOW+FJNOA3CGo8Q1TFEfz43B8rZpKsFbJKvQGVv1Z4HaKPvLUm7iMm8Hv91cLduuoWx6Q3DPe2vg13GKKEZe7UFghF+0T9u8EKzA/XqQ0OiICmsmYPbwvf9N3bCKsB/Y10EYmZRb8IhCoV9mmO5TxgWgiuNeCTtNCv2ePYqL/U0WvyGFW0reasIK8eg3KrAUj8DpyOgPOVBn3lBGf+3KFSYi+0bwZbJZWqbC/Xlk20Go1YfeJPRIt7ImxD27R/lNjgDO/MwIDAQAB
+-----END RSA PUBLIC KEY-----
\ No newline at end of file
diff --git a/dbrepo-broker-service/rabbitmq.conf b/dbrepo-broker-service/rabbitmq.conf
index 6b93149a71..23942bcede 100644
--- a/dbrepo-broker-service/rabbitmq.conf
+++ b/dbrepo-broker-service/rabbitmq.conf
@@ -1,5 +1,5 @@
 # user
-default_vhost = /
+default_vhost = dbrepo
 default_user = fda
 default_pass = fda
 default_user_tags.administrator = true
@@ -10,5 +10,24 @@ default_permissions.write = .*
 # enable http outside localhost
 listeners.tcp.1 = 0.0.0.0:5672
 
+# management ui (https://www.rabbitmq.com/management.html#path-prefix)
+management.path_prefix = /broker
+
 # logging
-log.file.level = warning
+log.console = true
+log.console.level = warning
+
+# Obviously your authentication server cannot vouch for itself, so you'll need another backend with at least one user in
+# it. You should probably use the internal database
+auth_backends.1 = rabbit_auth_backend_oauth2
+auth_backends.2 = rabbit_auth_backend_internal
+
+# OAuth 2.0 files
+auth_oauth2.resource_server_id = rabbitmq
+#auth_oauth2.additional_scopes_key = my_custom_scope_key
+auth_oauth2.preferred_username_claims.1 = client_id
+auth_oauth2.default_key = t2OCeCheJ9uwoBbNQjG_nN6WKiLcceTIAZmiTbGODFM
+auth_oauth2.signing_keys.t2OCeCheJ9uwoBbNQjG_nN6WKiLcceTIAZmiTbGODFM = /app/cert.pem
+auth_oauth2.signing_keys.id2 = /app/pubkey.pem
+auth_oauth2.algorithms.1 = HS256
+auth_oauth2.algorithms.2 = RS256
diff --git a/dbrepo-broker-service/service_ready b/dbrepo-broker-service/service_ready
deleted file mode 100755
index 31bdd3aa9c..0000000000
--- a/dbrepo-broker-service/service_ready
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/bash
-if [ -f ./ready ]; then
-  echo "service is ready and accepting connections"
-  exit 0
-fi
-exit 1
\ No newline at end of file
diff --git a/dbrepo-gateway-service/dbrepo.conf b/dbrepo-gateway-service/dbrepo.conf
index 2e91b3ac4e..c84c22f970 100644
--- a/dbrepo-gateway-service/dbrepo.conf
+++ b/dbrepo-gateway-service/dbrepo.conf
@@ -82,6 +82,15 @@ server {
         proxy_read_timeout      90;
     }
 
+    location /broker {
+        proxy_set_header        Host $host;
+        proxy_set_header        X-Real-IP $remote_addr;
+        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header        X-Forwarded-Proto $scheme;
+        proxy_pass              http://broker;
+        proxy_read_timeout      90;
+    }
+
     location /retrieve {
         rewrite /retrieve/(.*) /$1 break;
         proxy_set_header        Host $host;
diff --git a/dbrepo-metadata-db/setup-schema.sql b/dbrepo-metadata-db/setup-schema.sql
index 8da039c555..320ff30018 100644
--- a/dbrepo-metadata-db/setup-schema.sql
+++ b/dbrepo-metadata-db/setup-schema.sql
@@ -77,7 +77,7 @@ CREATE TABLE IF NOT EXISTS `fda`.`mdb_licenses`
     identifier character varying(255) NOT NULL,
     uri        text                   NOT NULL,
     PRIMARY KEY (identifier),
-    UNIQUE (uri)
+    UNIQUE (uri(200))
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `fda`.`mdb_databases`
@@ -280,7 +280,7 @@ CREATE TABLE IF NOT EXISTS `fda`.`mdb_concepts`
     created     timestamp             NOT NULL DEFAULT NOW(),
     created_by  character varying(36) NOT NULL,
     PRIMARY KEY (id),
-    UNIQUE (uri),
+    UNIQUE (uri(200)),
     FOREIGN KEY (created_by) REFERENCES mdb_users (id)
 ) WITH SYSTEM VERSIONING;
 
@@ -293,7 +293,7 @@ CREATE TABLE IF NOT EXISTS `fda`.`mdb_units`
     created     timestamp             NOT NULL DEFAULT NOW(),
     created_by  character varying(36) NOT NULL,
     PRIMARY KEY (id),
-    UNIQUE (uri),
+    UNIQUE (uri(200)),
     FOREIGN KEY (created_by) REFERENCES mdb_users (id)
 ) WITH SYSTEM VERSIONING;
 
@@ -358,7 +358,7 @@ CREATE TABLE IF NOT EXISTS `fda`.`mdb_ontologies`
     created         timestamp             NOT NULL DEFAULT NOW(),
     created_by      character varying(36) NOT NULL,
     UNIQUE (prefix),
-    UNIQUE (uri),
+    UNIQUE (uri(200)),
     PRIMARY KEY (id),
     FOREIGN KEY (created_by) REFERENCES mdb_users (id)
 ) WITH SYSTEM VERSIONING;
diff --git a/dbrepo-metadata-service/Dockerfile b/dbrepo-metadata-service/Dockerfile
index 92c2c42cf1..caddf305e2 100644
--- a/dbrepo-metadata-service/Dockerfile
+++ b/dbrepo-metadata-service/Dockerfile
@@ -47,6 +47,8 @@ ENV JWT_ISSUER="http://localhost/realms/dbrepo"
 ENV JWT_PUBKEY="MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqqnHQ2BWWW9vDNLRCcxD++xZg/16oqMo/c1l+lcFEjjAIJjJp/HqrPYU/U9GvquGE6PbVFtTzW1KcKawOW+FJNOA3CGo8Q1TFEfz43B8rZpKsFbJKvQGVv1Z4HaKPvLUm7iMm8Hv91cLduuoWx6Q3DPe2vg13GKKEZe7UFghF+0T9u8EKzA/XqQ0OiICmsmYPbwvf9N3bCKsB/Y10EYmZRb8IhCoV9mmO5TxgWgiuNeCTtNCv2ePYqL/U0WvyGFW0reasIK8eg3KrAUj8DpyOgPOVBn3lBGf+3KFSYi+0bwZbJZWqbC/Xlk20Go1YfeJPRIt7ImxD27R/lNjgDO/MwIDAQAB"
 ENV LOG_LEVEL=debug
 ENV METADATA_DB=fda
+ENV METADATA_HOST=metadata-db
+ENV METADATA_JDBC_EXTRA_ARGS=""
 ENV METADATA_PASSWORD=dbrepo
 ENV METADATA_USERNAME=root
 ENV NOT_SUPPORTED_KEYWORDS=\\*,AVG,BIT_AND,BIT_OR,BIT_XOR,COUNT,COUNTDISTINCT,GROUP_CONCAT,JSON_ARRAYAGG,JSON_OBJECTAGG,MAX,MIN,STD,STDDEV,STDDEV_POP,STDDEV_SAMP,SUM,VARIANCE,VAR_POP,VAR_SAMP,--
diff --git a/dbrepo-metadata-service/rest-service/src/main/resources/application.yml b/dbrepo-metadata-service/rest-service/src/main/resources/application.yml
index 66f1cb64cf..716a170ec8 100644
--- a/dbrepo-metadata-service/rest-service/src/main/resources/application.yml
+++ b/dbrepo-metadata-service/rest-service/src/main/resources/application.yml
@@ -4,7 +4,7 @@ spring:
   autoconfigure:
     exclude: org.springframework.boot.autoconfigure.elasticsearch.ElasticsearchRestClientAutoConfiguration, org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchDataAutoConfiguration
   datasource:
-    url: "jdbc:mariadb://metadata-db:3306/${METADATA_DB}"
+    url: "jdbc:mariadb://${METADATA_HOST}:3306/${METADATA_DB}${METADATA_JDBC_EXTRA_ARGS}"
     driver-class-name: org.mariadb.jdbc.Driver
     username: "${METADATA_USERNAME}"
     password: "${METADATA_PASSWORD}"
diff --git a/docker-compose.yml b/docker-compose.yml
index 4466879fe8..919e615a8f 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -136,7 +136,7 @@ services:
     volumes:
       - authentication-service-data:/opt/keycloak/data/
     depends_on:
-      dbrepo-metadata-db:
+      dbrepo-auth-db:
         condition: service_healthy
     logging:
       driver: json-file
@@ -240,30 +240,30 @@ services:
     logging:
       driver: json-file
 
-  dbrepo-search-sync-agent:
-    restart: "no"
-    container_name: dbrepo-search-sync-agent
-    hostname: search-startup-agent
-    build: ./dbrepo-search-sync-agent
-    image: dbrepo-search-sync-agent
-    networks:
-      core:
-    env_file:
-      - .env
-    healthcheck:
-      test: wget -qO- localhost:9050/actuator/health/readiness | grep -q "UP" || exit 1
-      interval: 10s
-      timeout: 5s
-      retries: 12
-    depends_on:
-      dbrepo-metadata-db:
-        condition: service_healthy
-      dbrepo-search-db:
-        condition: service_started
-      dbrepo-authentication-service:
-        condition: service_healthy
-    logging:
-      driver: json-file
+#  dbrepo-search-sync-agent:
+#    restart: "no"
+#    container_name: dbrepo-search-sync-agent
+#    hostname: search-startup-agent
+#    build: ./dbrepo-search-sync-agent
+#    image: dbrepo-search-sync-agent
+#    networks:
+#      core:
+#    env_file:
+#      - .env
+#    healthcheck:
+#      test: wget -qO- localhost:9050/actuator/health/readiness | grep -q "UP" || exit 1
+#      interval: 10s
+#      timeout: 5s
+#      retries: 12
+#    depends_on:
+#      dbrepo-metadata-db:
+#        condition: service_healthy
+#      dbrepo-search-db:
+#        condition: service_started
+#      dbrepo-authentication-service:
+#        condition: service_healthy
+#    logging:
+#      driver: json-file
 
   dbrepo-ui:
     restart: "no"
-- 
GitLab