Loading src/cli.ts +9 −5 Original line number Diff line number Diff line /* * Copyright (C) 2019 StApps * Copyright (C) 2022 StApps * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the Loading @@ -17,7 +17,7 @@ import {Logger} from '@openstapps/logger'; import {execSync} from 'child_process'; import * as Dockerode from 'dockerode'; import {render} from 'mustache'; import {asyncReadFile, asyncWriteFile, configFile} from './common'; import {asyncReadFile, asyncWriteFile} from './common'; import {getContainers, getTemplateView} from './main'; // handle unhandled promise rejections Loading @@ -27,6 +27,7 @@ process.on('unhandledRejection', async (error) => { }); let containerHashCache = ''; let configHashCache = ''; /** * Reads the container information from the docker socket and updates the nginx config if necessary Loading @@ -40,16 +41,19 @@ async function updateNginxConfig() { }) .join(','); delete require.cache[require.resolve('config')]; const configFile = require('config'); const configHash = JSON.stringify(configFile); // if containers changed -> write config file, reload nginx if (containerHash !== containerHashCache) { if (containerHash !== containerHashCache || configHash !== configHashCache) { Logger.log('Generating new NGINX configuration'); // render nginx config file const nginxConfig = render(await asyncReadFile('nginx.conf.template', 'utf8'), await getTemplateView(containers)); Logger.log(`containers (${containerHash}) matched the configuration.`); containerHashCache = containerHash; configHashCache = configHash; Logger.log(`Writing new config file "${configFile.output}"`); Loading src/main.ts +13 −9 Original line number Diff line number Diff line /* * Copyright (C) 2019 StApps * Copyright (C) 2022 StApps * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the Loading @@ -21,7 +21,7 @@ import {join} from 'path'; import * as semver from 'semver'; import { asyncReadFile, configFile, ConfigFile, isFileType, protocolHardeningParameters, SSLFilePaths, Loading Loading @@ -107,7 +107,7 @@ export async function generateUpstreamMap( } if (activeBackends.length !== 0) { // not only dublicates // not only duplicates foundMatchingContainer = true; const gateWayOfContainer = await getGatewayOfStAppsBackend(activeBackends[0]); Loading Loading @@ -205,6 +205,10 @@ function generateRateLimitAllowList(entries: string[]): string { * @param containers List of container info */ export async function getTemplateView(containers: Dockerode.ContainerInfo[]): Promise<TemplateView> { delete require.cache[require.resolve('config')]; const config = require('config'); const configFile = config as ConfigFile; const cors = await asyncReadFile('./fixtures/cors.template', 'utf8'); const visibleRoutesPromises = ['/'].map(async (route) => { Loading Loading
src/cli.ts +9 −5 Original line number Diff line number Diff line /* * Copyright (C) 2019 StApps * Copyright (C) 2022 StApps * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the Loading @@ -17,7 +17,7 @@ import {Logger} from '@openstapps/logger'; import {execSync} from 'child_process'; import * as Dockerode from 'dockerode'; import {render} from 'mustache'; import {asyncReadFile, asyncWriteFile, configFile} from './common'; import {asyncReadFile, asyncWriteFile} from './common'; import {getContainers, getTemplateView} from './main'; // handle unhandled promise rejections Loading @@ -27,6 +27,7 @@ process.on('unhandledRejection', async (error) => { }); let containerHashCache = ''; let configHashCache = ''; /** * Reads the container information from the docker socket and updates the nginx config if necessary Loading @@ -40,16 +41,19 @@ async function updateNginxConfig() { }) .join(','); delete require.cache[require.resolve('config')]; const configFile = require('config'); const configHash = JSON.stringify(configFile); // if containers changed -> write config file, reload nginx if (containerHash !== containerHashCache) { if (containerHash !== containerHashCache || configHash !== configHashCache) { Logger.log('Generating new NGINX configuration'); // render nginx config file const nginxConfig = render(await asyncReadFile('nginx.conf.template', 'utf8'), await getTemplateView(containers)); Logger.log(`containers (${containerHash}) matched the configuration.`); containerHashCache = containerHash; configHashCache = configHash; Logger.log(`Writing new config file "${configFile.output}"`); Loading
src/main.ts +13 −9 Original line number Diff line number Diff line /* * Copyright (C) 2019 StApps * Copyright (C) 2022 StApps * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the Loading @@ -21,7 +21,7 @@ import {join} from 'path'; import * as semver from 'semver'; import { asyncReadFile, configFile, ConfigFile, isFileType, protocolHardeningParameters, SSLFilePaths, Loading Loading @@ -107,7 +107,7 @@ export async function generateUpstreamMap( } if (activeBackends.length !== 0) { // not only dublicates // not only duplicates foundMatchingContainer = true; const gateWayOfContainer = await getGatewayOfStAppsBackend(activeBackends[0]); Loading Loading @@ -205,6 +205,10 @@ function generateRateLimitAllowList(entries: string[]): string { * @param containers List of container info */ export async function getTemplateView(containers: Dockerode.ContainerInfo[]): Promise<TemplateView> { delete require.cache[require.resolve('config')]; const config = require('config'); const configFile = config as ConfigFile; const cors = await asyncReadFile('./fixtures/cors.template', 'utf8'); const visibleRoutesPromises = ['/'].map(async (route) => { Loading