~cytrogen/masto-fe

be1792e1d45fd32c037195d3d03f09fbd4dbf00e — Eugen Rochko 3 years ago ade3c5d
Fix streaming API not being usable without `DATABASE_URL` (#23960)

1 files changed, 38 insertions(+), 8 deletions(-)

M streaming/index.js
M streaming/index.js => streaming/index.js +38 -8
@@ 81,9 81,10 @@ const startMaster = () => {
  log.warn(`Starting streaming API server master with ${numWorkers} workers`);
};

const startWorker = async (workerId) => {
  log.warn(`Starting worker ${workerId}`);

/**
 * @return {Object.<string, any>}
 */
const pgConfigFromEnv = () => {
  const pgConfigs = {
    development: {
      user:     process.env.DB_USER || pg.defaults.user,


@@ 102,16 103,45 @@ const startWorker = async (workerId) => {
    },
  };

  const app = express();
  let baseConfig;

  app.set('trust proxy', process.env.TRUSTED_PROXY_IP ? process.env.TRUSTED_PROXY_IP.split(/(?:\s*,\s*|\s+)/) : 'loopback,uniquelocal');
  if (process.env.DATABASE_URL) {
    baseConfig = dbUrlToConfig(process.env.DATABASE_URL);
  } else {
    baseConfig = pgConfigs[env];

    if (process.env.DB_SSLMODE) {
      switch(process.env.DB_SSLMODE) {
      case 'disable':
      case '':
        baseConfig.ssl = false;
        break;
      case 'no-verify':
        baseConfig.ssl = { rejectUnauthorized: false };
        break;
      default:
        baseConfig.ssl = {};
        break;
      }
    }
  }

  const pgPool = new pg.Pool(Object.assign(pgConfigs[env], dbUrlToConfig(process.env.DATABASE_URL), {
  return {
    ...baseConfig,
    max: process.env.DB_POOL || 10,
    connectionTimeoutMillis: 15000,
    ssl: !!process.env.DB_SSLMODE && process.env.DB_SSLMODE !== 'disable',
  }));
    application_name: '',
  };
};

const startWorker = async (workerId) => {
  log.warn(`Starting worker ${workerId}`);

  const app = express();

  app.set('trust proxy', process.env.TRUSTED_PROXY_IP ? process.env.TRUSTED_PROXY_IP.split(/(?:\s*,\s*|\s+)/) : 'loopback,uniquelocal');

  const pgPool = new pg.Pool(pgConfigFromEnv());
  const server = http.createServer(app);
  const redisNamespace = process.env.REDIS_NAMESPACE || null;