diff options
Diffstat (limited to 'deno/mail-relay/aws')
| -rw-r--r-- | deno/mail-relay/aws/app.ts | 48 | 
1 files changed, 20 insertions, 28 deletions
diff --git a/deno/mail-relay/aws/app.ts b/deno/mail-relay/aws/app.ts index b7d0154..13db351 100644 --- a/deno/mail-relay/aws/app.ts +++ b/deno/mail-relay/aws/app.ts @@ -6,7 +6,7 @@ import { FetchHttpHandler } from "@smithy/fetch-http-handler";  // @ts-types="npm:@types/yargs"  import yargs from "yargs"; -import { Logger } from "@crupest/base/log"; +import { LogFileProvider } from "@crupest/base/log";  import { ConfigDefinition, ConfigProvider } from "@crupest/base/config";  import { CronTask } from "@crupest/base/cron"; @@ -155,60 +155,56 @@ function createCron(fetcher: AwsMailFetcher, consumer: AwsS3MailConsumer) {  function createBaseServices() {    const config = new ConfigProvider(PREFIX, CONFIG_DEFINITIONS);    Deno.mkdirSync(config.get("dataPath"), { recursive: true }); -  const logger = new Logger(); -  logger.externalLogDir = join(config.get("dataPath"), "log"); -  return { config, logger }; +  const logFileProvider = new LogFileProvider( +    join(config.get("dataPath"), "log"), +  ); +  return { config, logFileProvider };  }  function createAwsFetchOnlyServices() { -  const { config, logger } = createBaseServices(); +  const services = createBaseServices(); +  const { config } = services; +    const awsOptions = createAwsOptions({      user: config.get("awsUser"),      password: config.get("awsPassword"),      region: config.get("awsRegion"),    });    const fetcher = new AwsMailFetcher(awsOptions, config.get("awsMailBucket")); -  return { config, logger, awsOptions, fetcher }; + +  return { ...services, awsOptions, fetcher };  }  function createAwsRecycleOnlyServices() { -  const { config, logger, awsOptions, fetcher } = createAwsFetchOnlyServices(); +  const services = createAwsFetchOnlyServices(); +  const { config, logFileProvider } = services; -  const inbound = createInbound(logger, { +  const inbound = createInbound(logFileProvider, {      fallback: config.getList("inboundFallback"),      ldaPath: config.get("ldaPath"),      aliasFile: join(config.get("dataPath"), "aliases.csv"),      mailDomain: config.get("mailDomain"),    }); -    const recycler = (rawMail: string, _: unknown): Promise<void> =>      inbound.deliver({ mail: new Mail(rawMail) }).then(); -  return { config, logger, awsOptions, fetcher, inbound, recycler }; +  return { ...services, inbound, recycler };  }  function createAwsServices() { -  const { config, logger, inbound, awsOptions, fetcher, recycler } = -    createAwsRecycleOnlyServices(); +  const services = createAwsRecycleOnlyServices(); +  const { config, awsOptions } = services; +    const dbService = new DbService(join(config.get("dataPath"), "db.sqlite"));    const outbound = createOutbound(awsOptions, dbService); -  return { -    config, -    logger, -    inbound, -    dbService, -    awsOptions, -    fetcher, -    recycler, -    outbound, -  }; +  return { ...services, dbService, outbound };  }  function createServerServices() {    const services = createAwsServices();    const { config, outbound, inbound, fetcher } = services; -  const smtp = createSmtp(outbound); +  const smtp = createSmtp(outbound);    const hono = createHono(outbound, inbound);    setupAwsHono(hono, {      path: config.get("awsInboundPath"), @@ -220,11 +216,7 @@ function createServerServices() {      },    }); -  return { -    ...services, -    smtp, -    hono, -  }; +  return { ...services, smtp, hono };  }  function serve(cron: boolean = false) {  | 
