diff options
Diffstat (limited to 'src/server/apis/google/CredentialsLoader.ts')
| -rw-r--r-- | src/server/apis/google/CredentialsLoader.ts | 40 | 
1 files changed, 39 insertions, 1 deletions
diff --git a/src/server/apis/google/CredentialsLoader.ts b/src/server/apis/google/CredentialsLoader.ts index e3f4d167b..ef1f9a91e 100644 --- a/src/server/apis/google/CredentialsLoader.ts +++ b/src/server/apis/google/CredentialsLoader.ts @@ -1,4 +1,7 @@ -import { readFile } from "fs"; +import { readFile, readFileSync } from "fs"; +import { pathFromRoot } from "../../ActionUtilities"; +import { SecureContextOptions } from "tls"; +import { blue, red } from "colors";  export namespace GoogleCredentialsLoader { @@ -27,3 +30,38 @@ export namespace GoogleCredentialsLoader {      }  } + +export namespace SSL { + +    export let Credentials: SecureContextOptions = {}; +    export let Loaded = false; + +    const suffixes = { +        privateKey: ".key", +        certificate: ".crt", +        caBundle: "-ca.crt" +    }; + +    export async function loadCredentials() { +        const { serverName } = process.env; +        const cert = (suffix: string) => readFileSync(pathFromRoot(`./${serverName}${suffix}`)).toString(); +        try { +            Credentials.key = cert(suffixes.privateKey); +            Credentials.cert = cert(suffixes.certificate); +            Credentials.ca = cert(suffixes.caBundle); +            Loaded = true; +        } catch (e) { +            Credentials = {}; +            Loaded = false; +        } +    } + +    export function exit() { +        console.log(red("Running this server in release mode requires the following SSL credentials in the project root:")); +        const serverName = process.env.serverName ? process.env.serverName : "{process.env.serverName}"; +        Object.values(suffixes).forEach(suffix => console.log(blue(`${serverName}${suffix}`))); +        console.log(red("Please ensure these files exist and restart, or run this in development mode.")); +        process.exit(0); +    } + +}  | 
