Skip to content

Commit 376405d

Browse files
FS-4942: enable https configuration in designer server side to enable https from docker runner side (#97)
1 parent 2845578 commit 376405d

File tree

2 files changed

+26
-3
lines changed

2 files changed

+26
-3
lines changed

designer/server/config.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ export interface Config {
2929
authServiceUrl: string,
3030
rsa256PublicKeyBase64: string,
3131
authCookieName: string,
32+
sslKey: string,
33+
sslCert: string,
3234
}
3335

3436
// server-side storage expiration - defaults to 20 minutes
@@ -61,6 +63,8 @@ const schema = joi.object({
6163
authServiceUrl: joi.string().optional(),
6264
rsa256PublicKeyBase64: joi.string().optional(),
6365
authCookieName: joi.string().optional(),
66+
sslKey: joi.string().optional(),
67+
sslCert: joi.string().optional(),
6468
});
6569

6670
// Build config
@@ -84,6 +88,8 @@ const config = {
8488
authServiceUrl: process.env.AUTH_SERVICE_URL,
8589
rsa256PublicKeyBase64: process.env.RSA256_PUBLIC_KEY_BASE64,
8690
authCookieName: process.env.AUTH_COOKIE_NAME,
91+
sslKey: process.env.SSL_KEY,
92+
sslCert: process.env.SSL_CERT,
8793
};
8894

8995
// Validate config

designer/server/createServer.ts

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,23 @@
1-
import hapi from "@hapi/hapi";
1+
import hapi, {ServerOptions} from "@hapi/hapi";
22
import inert from "@hapi/inert";
33
import Scooter from "@hapi/scooter";
44
import logging from "../../digital-form-builder/designer/server/plugins/logging";
55
import router from "../../digital-form-builder/designer/server/plugins/router";
66
import {viewPlugin} from "../../digital-form-builder/designer/server/plugins/view";
77
import Schmervice from "schmervice";
8-
import config from "../../digital-form-builder/designer/server/config";
98
import {determinePersistenceService} from "../../digital-form-builder/designer/server/lib/persistence";
109
import {configureBlankiePlugin} from "../../digital-form-builder/designer/server/plugins/blankie";
1110
import {configureYarPlugin} from "../../digital-form-builder/designer/server/plugins/session";
1211
import {designerPlugin} from "./plugins/DesignerRouteRegister";
1312
import errorHandlerPlugin from "./plugins/ErrorHandlerPlugin";
1413
import authPlugin from "./plugins/AuthPlugin";
14+
import fs from "fs";
15+
import config from "./config";
1516

1617
const serverOptions = () => {
17-
return {
18+
const hasCertificate = config.sslKey && config.sslCert;
19+
20+
const serverOptions: ServerOptions = {
1821
port: process.env.PORT || 3000,
1922
router: {
2023
stripTrailingSlash: true,
@@ -37,6 +40,20 @@ const serverOptions = () => {
3740
},
3841
},
3942
};
43+
44+
const httpsOptions = hasCertificate
45+
? {
46+
tls: {
47+
key: fs.readFileSync(config.sslKey),
48+
cert: fs.readFileSync(config.sslCert),
49+
},
50+
}
51+
: {};
52+
53+
return {
54+
...serverOptions,
55+
...httpsOptions,
56+
};
4057
};
4158

4259
export async function createServer() {

0 commit comments

Comments
 (0)