43 lines
1.6 KiB
TypeScript
43 lines
1.6 KiB
TypeScript
|
|
import { load_conf, validate_conf } from './conf';
|
|
import { create_oidc_provider } from './security/openid-connect';
|
|
import { create_pkce_cookie_provider } from './security/pkce-cookie';
|
|
import { create_snowflake_provider } from './utilities/snowflake-uid';
|
|
import { create_storage_provider } from './storage';
|
|
import { create_argon_hash_provider } from './security/argon-hash';
|
|
import { create_http_metadata_server } from './http-metadata/server';
|
|
import { create_logger } from './logger';
|
|
import { create_http_web_server } from './http-web/server';
|
|
import { create_session_key_provider } from './security/session-key';
|
|
|
|
main();
|
|
|
|
async function main() {
|
|
// Load and validate configuration
|
|
const conf = await load_conf();
|
|
validate_conf(conf);
|
|
|
|
// Create all of the core feature providers
|
|
const logger = create_logger(conf.logging);
|
|
// const oidc = create_oidc_provider(conf.oidc);
|
|
const pkce_cookie = create_pkce_cookie_provider(conf.pkce_cookie);
|
|
// const session_cookie = create_session_cookie_provider(conf.session_cookie);
|
|
const snowflake = create_snowflake_provider(conf.snowflake_uid);
|
|
const storage = create_storage_provider(conf.storage);
|
|
const argon2 = create_argon_hash_provider(conf.argon2);
|
|
const session_key = create_session_key_provider(argon2);
|
|
|
|
// Wait for any async init steps
|
|
// await oidc.ready;
|
|
await storage.ready;
|
|
|
|
// Perform any cleanup steps before starting up
|
|
await storage.cleanup_old_sessions();
|
|
|
|
// Create the HTTP servers
|
|
const http_meta = create_http_metadata_server(null, logger);
|
|
const http_web = create_http_web_server(null, logger);
|
|
|
|
// ...
|
|
}
|