From 421889edd73c11e697361141bed5335b7ff5724b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Kr=C3=B6ll?= Date: Tue, 20 Jul 2021 11:27:37 +0200 Subject: [PATCH 01/10] .gitignore and additional parameter --- .gitignore | 2 +- docker-compose.yml | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index e18665a..d7d2f30 100644 --- a/.gitignore +++ b/.gitignore @@ -29,7 +29,7 @@ out/ ### NetBeans ### /nbproject/private/ /nbbuild/ -/dist/ +/deploy/ /nbdist/ /.nb-gradle/ diff --git a/docker-compose.yml b/docker-compose.yml index ce63421..f9d0ddc 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -12,4 +12,5 @@ services: - CLASSROOM_SECRET - CLASSROOM_URL - CLASSROOM_PORT - - JWT_SECRET \ No newline at end of file + - JWT_SECRET + - JWT_EXPIRATION \ No newline at end of file From d18789dd8eb950a40c19292432938e7b03693ed5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Kr=C3=B6ll?= Date: Tue, 20 Jul 2021 11:55:15 +0200 Subject: [PATCH 02/10] experiment with angular --- web-gui/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/web-gui/package.json b/web-gui/package.json index 4917ce9..1f5de8b 100644 --- a/web-gui/package.json +++ b/web-gui/package.json @@ -4,8 +4,8 @@ "scripts": { "ng": "ng", "start": "ng serve", - "dist": "ng build --deploy-url /static/", - "build": "ng build --deploy-url /static/", + "dist": "ng build --deploy-url /static/ --base-href \"./\"", + "build": "ng build --deploy-url /static/ --base-href \"./\"", "watch": "ng build --watch --configuration development", "test": "ng test", "clean": "", From e8e9dab31079eef847263683f15c1e3ae24f8270 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Kr=C3=B6ll?= Date: Tue, 20 Jul 2021 22:02:18 +0200 Subject: [PATCH 03/10] Native HTTPS --- src/main/resources/application.yml | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index e669ddc..ed40391 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -5,9 +5,17 @@ upstream: classroom: shared-secret: ${CLASSROOM_SECRET:8Dsupersecurekeydf0} - url: ${CLASSROOM_URL:http://localhost} + host: ${CLASSROOM_HOST:http://localhost} + prefix-path: ${CLASSROOM_PREFIX_PATH:} -server.port: ${CLASSROOM_PORT:8085} + +server: + ssl: + enabled: true + key-store: ${KEYSTORE_PATH:classpath:keystore.p12} + key-store-password: passwd + key-store-type: PKCS12 + port: ${CLASSROOM_PORT:8085} jwt: secret: ${JWT_SECRET:8Dsupersecurekeydf0} From f34b94ab723fb0050c6408bda150ed1e9b5fe1b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Kr=C3=B6ll?= Date: Tue, 20 Jul 2021 22:02:49 +0200 Subject: [PATCH 04/10] https keystore --- src/main/resources/keystore.p12 | Bin 0 -> 2533 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/resources/keystore.p12 diff --git a/src/main/resources/keystore.p12 b/src/main/resources/keystore.p12 new file mode 100644 index 0000000000000000000000000000000000000000..e5eb592f906fd040cec9d5bf730dca26f7a52e45 GIT binary patch literal 2533 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 qh_JDM_yst}5(iuzOl5W|t Date: Tue, 20 Jul 2021 22:17:36 +0200 Subject: [PATCH 05/10] Update parameters --- docker-compose.yml | 3 ++- .../ii/classroom/properties/ClassroomProperties.kt | 11 ++++++++--- .../ii/classroom/services/ClassroomInstanceService.kt | 2 +- web-gui/package.json | 4 ++-- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index f9d0ddc..a98b630 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -10,7 +10,8 @@ services: - BBB_UPSTREAM_URL - BBB_UPSTREAM_SECRET - CLASSROOM_SECRET - - CLASSROOM_URL + - CLASSROOM_HOST + - CLASSROOM_PREFIX_PATH - CLASSROOM_PORT - JWT_SECRET - JWT_EXPIRATION \ No newline at end of file diff --git a/src/main/kotlin/de/thm/mni/ii/classroom/properties/ClassroomProperties.kt b/src/main/kotlin/de/thm/mni/ii/classroom/properties/ClassroomProperties.kt index de9850e..d7567df 100644 --- a/src/main/kotlin/de/thm/mni/ii/classroom/properties/ClassroomProperties.kt +++ b/src/main/kotlin/de/thm/mni/ii/classroom/properties/ClassroomProperties.kt @@ -9,10 +9,15 @@ import javax.validation.constraints.NotBlank data class ClassroomProperties( /** - * Service url with protocol, hostname and optional prefix path. + * Service host with protocol and hostname / ip address */ - @NotBlank val url: String, + @NotBlank val host: String, + + /** + * Prefix path appended to the host. May be resolved via reverse proxy. + */ + val prefixPath: String = "", @NotBlank val sharedSecret: String, -) + ) diff --git a/src/main/kotlin/de/thm/mni/ii/classroom/services/ClassroomInstanceService.kt b/src/main/kotlin/de/thm/mni/ii/classroom/services/ClassroomInstanceService.kt index 51215bd..26813a7 100644 --- a/src/main/kotlin/de/thm/mni/ii/classroom/services/ClassroomInstanceService.kt +++ b/src/main/kotlin/de/thm/mni/ii/classroom/services/ClassroomInstanceService.kt @@ -67,7 +67,7 @@ class ClassroomInstanceService(private val classroomProperties: ClassroomPropert val joinedUser = classroom.joinUser(password, user) val sessionToken = RandomStringUtils.randomAlphanumeric(16) classroomUserDetailsRepository.insertValidToken(sessionToken, joinedUser) - val url = URL("${classroomProperties.url}/classroom/join?sessionToken=$sessionToken").toString() + val url = URL("${classroomProperties.host}${classroomProperties.prefixPath}/classroom/join?sessionToken=$sessionToken").toString() it.success( JoinRoomBBBResponse( success = true, diff --git a/web-gui/package.json b/web-gui/package.json index 1f5de8b..4917ce9 100644 --- a/web-gui/package.json +++ b/web-gui/package.json @@ -4,8 +4,8 @@ "scripts": { "ng": "ng", "start": "ng serve", - "dist": "ng build --deploy-url /static/ --base-href \"./\"", - "build": "ng build --deploy-url /static/ --base-href \"./\"", + "dist": "ng build --deploy-url /static/", + "build": "ng build --deploy-url /static/", "watch": "ng build --watch --configuration development", "test": "ng test", "clean": "", From ae4ff2b81451d0f7bbd1b0f520ae4290bece75dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Kr=C3=B6ll?= Date: Wed, 21 Jul 2021 00:21:26 +0200 Subject: [PATCH 06/10] Added self-signed certificates + docker-compose for image usage. --- .gitignore | 1 - deployment/docker-compose.yml | 15 ++++++++++ deployment/keystore.pkcs12 | Bin 0 -> 2533 bytes deployment/server.crt | 22 ++++++++++++++ deployment/server.csr | 18 ++++++++++++ deployment/server.key | 30 ++++++++++++++++++++ deployment/server.pem | 52 ++++++++++++++++++++++++++++++++++ 7 files changed, 137 insertions(+), 1 deletion(-) create mode 100644 deployment/docker-compose.yml create mode 100644 deployment/keystore.pkcs12 create mode 100644 deployment/server.crt create mode 100644 deployment/server.csr create mode 100644 deployment/server.key create mode 100644 deployment/server.pem diff --git a/.gitignore b/.gitignore index d7d2f30..ccde002 100644 --- a/.gitignore +++ b/.gitignore @@ -29,7 +29,6 @@ out/ ### NetBeans ### /nbproject/private/ /nbbuild/ -/deploy/ /nbdist/ /.nb-gradle/ diff --git a/deployment/docker-compose.yml b/deployment/docker-compose.yml new file mode 100644 index 0000000..45066b0 --- /dev/null +++ b/deployment/docker-compose.yml @@ -0,0 +1,15 @@ +version: '3' + +services: + digital-classroom: + image: thmmniii/digital-classroom:latest + restart: always + environment: + - BBB_UPSTREAM_URL + - BBB_UPSTREAM_SECRET + - CLASSROOM_SECRET + - CLASSROOM_HOST + - CLASSROOM_PREFIX_PATH + - CLASSROOM_PORT + - JWT_SECRET + - JWT_EXPIRATION \ No newline at end of file diff --git a/deployment/keystore.pkcs12 b/deployment/keystore.pkcs12 new file mode 100644 index 0000000000000000000000000000000000000000..e5eb592f906fd040cec9d5bf730dca26f7a52e45 GIT binary patch literal 2533 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 qh_JDM_yst}5(iuzOl5W|t Date: Wed, 21 Jul 2021 00:25:37 +0200 Subject: [PATCH 07/10] Update documentation --- README.adoc | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/README.adoc b/README.adoc index eeb2387..6916b59 100644 --- a/README.adoc +++ b/README.adoc @@ -13,14 +13,15 @@ All relevant properties may be set via an environment variable. .Custom property values |=== - |Namespace | Property | Env. Variable | Meaning -1.2+^.^| _upstream.bbb_ | service-url | BBB_UPSTREAM_URL | The base URL of the BBB server to create conferences with. - | shared-secret | BBB_UPSTREAM_SECRET | Shared secret token to compute a checksum of requests against the BBB servers API with. See: https://docs.bigbluebutton.org/dev/api.html#api-security[BBB API Specification] -1.2+^.^| _classroom_ | shared-secret | CLASSROOM_SECRET | Shared secret token a checksum of any request against the classrooms BBB-like API is computed with. Semantics as specified by BBB API linked above. - | url | CLASSROOM_URL | Base URL (including the port if not default protocol port), at which the Digital Classroom application is contacted by users. Default: http://localhost:8085 - | _server_ | port | CLASSROOM_PORT | Server port at which this application will listen to HTTP requests Default: 8085 -1.2+^.^| _jwt_ | secret | JWT_SECRET | The key JSON Web Tokens issued by the digital classroom are signed with. - | expiration | JWT_EXPIRATION | Number of seconds after which JWTs should expire. Default: 900 (15 minutes) + |Namespace | Property | Env. Variable | Meaning +1.2+^.^| _upstream.bbb_ | service-url | BBB_UPSTREAM_URL | The base URL of the BBB server to create conferences with. + | shared-secret | BBB_UPSTREAM_SECRET | Shared secret token to compute a checksum of requests against the BBB servers API with. See: https://docs.bigbluebutton.org/dev/api.html#api-security[BBB API Specification] +1.3+^.^| _classroom_ | host | CLASSROOM_HOST | Base URL (including the port if not default protocol port), at which the Digital Classroom application is contacted by users. Default: http://localhost:8085 + | prefix-path | CLASSROOM_PREFIX_PATH | URI Path added by a proxy or similar applications to contact the digital-classroom from the internet. Default: "" (empty string) + | shared-secret | CLASSROOM_SECRET | Shared secret token a checksum of any request against the classrooms BBB-like API is computed with. Semantics as specified by BBB API linked above. +1.1+^.^| _server_ | port | CLASSROOM_PORT | Server port at which this application will listen to HTTP requests Default: 8085 +1.2+^.^| _jwt_ | secret | JWT_SECRET | The key JSON Web Tokens issued by the digital classroom are signed with. + | expiration | JWT_EXPIRATION | Number of seconds after which JWTs should expire. Default: 900 (15 minutes) |=== === Jar Build & Deploy The only requirement is a JDK with version 11 or later. From 18dcdea3b43e773452fe51f57f22a17635acf821 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Kr=C3=B6ll?= Date: Wed, 21 Jul 2021 00:25:37 +0200 Subject: [PATCH 08/10] Update documentation --- README.adoc | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/README.adoc b/README.adoc index eeb2387..6916b59 100644 --- a/README.adoc +++ b/README.adoc @@ -13,14 +13,15 @@ All relevant properties may be set via an environment variable. .Custom property values |=== - |Namespace | Property | Env. Variable | Meaning -1.2+^.^| _upstream.bbb_ | service-url | BBB_UPSTREAM_URL | The base URL of the BBB server to create conferences with. - | shared-secret | BBB_UPSTREAM_SECRET | Shared secret token to compute a checksum of requests against the BBB servers API with. See: https://docs.bigbluebutton.org/dev/api.html#api-security[BBB API Specification] -1.2+^.^| _classroom_ | shared-secret | CLASSROOM_SECRET | Shared secret token a checksum of any request against the classrooms BBB-like API is computed with. Semantics as specified by BBB API linked above. - | url | CLASSROOM_URL | Base URL (including the port if not default protocol port), at which the Digital Classroom application is contacted by users. Default: http://localhost:8085 - | _server_ | port | CLASSROOM_PORT | Server port at which this application will listen to HTTP requests Default: 8085 -1.2+^.^| _jwt_ | secret | JWT_SECRET | The key JSON Web Tokens issued by the digital classroom are signed with. - | expiration | JWT_EXPIRATION | Number of seconds after which JWTs should expire. Default: 900 (15 minutes) + |Namespace | Property | Env. Variable | Meaning +1.2+^.^| _upstream.bbb_ | service-url | BBB_UPSTREAM_URL | The base URL of the BBB server to create conferences with. + | shared-secret | BBB_UPSTREAM_SECRET | Shared secret token to compute a checksum of requests against the BBB servers API with. See: https://docs.bigbluebutton.org/dev/api.html#api-security[BBB API Specification] +1.3+^.^| _classroom_ | host | CLASSROOM_HOST | Base URL (including the port if not default protocol port), at which the Digital Classroom application is contacted by users. Default: http://localhost:8085 + | prefix-path | CLASSROOM_PREFIX_PATH | URI Path added by a proxy or similar applications to contact the digital-classroom from the internet. Default: "" (empty string) + | shared-secret | CLASSROOM_SECRET | Shared secret token a checksum of any request against the classrooms BBB-like API is computed with. Semantics as specified by BBB API linked above. +1.1+^.^| _server_ | port | CLASSROOM_PORT | Server port at which this application will listen to HTTP requests Default: 8085 +1.2+^.^| _jwt_ | secret | JWT_SECRET | The key JSON Web Tokens issued by the digital classroom are signed with. + | expiration | JWT_EXPIRATION | Number of seconds after which JWTs should expire. Default: 900 (15 minutes) |=== === Jar Build & Deploy The only requirement is a JDK with version 11 or later. From 37a42322faf6e318200e66cf0569f88a04b7625d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Kr=C3=B6ll?= Date: Wed, 21 Jul 2021 00:43:25 +0200 Subject: [PATCH 09/10] image-based docker-compose for deployment --- deployment/docker-compose.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 deployment/docker-compose.yml diff --git a/deployment/docker-compose.yml b/deployment/docker-compose.yml new file mode 100644 index 0000000..a4cc6c1 --- /dev/null +++ b/deployment/docker-compose.yml @@ -0,0 +1,15 @@ +version: '3' + +services: + digital-classroom: + image: thmmniii/digital-classroom:latest + restart: always + environment: + - BBB_UPSTREAM_URL + - BBB_UPSTREAM_SECRET + - CLASSROOM_SECRET + - CLASSROOM_HOST + - CLASSROOM_PREFIX_PATH + - CLASSROOM_PORT + - JWT_SECRET + - JWT_EXPIRATION From 6c54ed8d2d66115be6ef8cf7c33c58d9a9bcf1e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Kr=C3=B6ll?= Date: Fri, 20 Aug 2021 22:08:25 +0200 Subject: [PATCH 10/10] move docker-compose --- deployment/keystore.pkcs12 | Bin 2533 -> 0 bytes deployment/server.crt | 22 -------- deployment/server.csr | 18 ------ deployment/server.key | 30 ---------- deployment/server.pem | 52 ------------------ .../docker-compose}/docker-compose.yml | 0 6 files changed, 122 deletions(-) delete mode 100644 deployment/keystore.pkcs12 delete mode 100644 deployment/server.crt delete mode 100644 deployment/server.csr delete mode 100644 deployment/server.key delete mode 100644 deployment/server.pem rename {deployment => examples/docker-compose}/docker-compose.yml (100%) diff --git a/deployment/keystore.pkcs12 b/deployment/keystore.pkcs12 deleted file mode 100644 index e5eb592f906fd040cec9d5bf730dca26f7a52e45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2533 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 qh_JDM_yst}5(iuzOl5W|t