Skip to content

Commit

Permalink
fix(core): Initialize License and LDAP in the correct order (#5673)
Browse files Browse the repository at this point in the history
  • Loading branch information
netroy authored Mar 10, 2023
1 parent 5c4343b commit 90afa5e
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 26 deletions.
28 changes: 8 additions & 20 deletions packages/cli/src/Server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -130,12 +130,16 @@ import * as WorkflowExecuteAdditionalData from '@/WorkflowExecuteAdditionalData'
import { toHttpNodeParameters } from '@/CurlConverterHelper';
import { eventBusRouter } from '@/eventbus/eventBusRoutes';
import { isLogStreamingEnabled } from '@/eventbus/MessageEventBus/MessageEventBusHelper';
import { getLicense } from '@/License';
import { licenseController } from './license/license.controller';
import { Push, setupPushServer, setupPushHandler } from '@/push';
import { setupAuthMiddlewares } from './middlewares';
import { initEvents } from './events';
import { getLdapLoginLabel, isLdapEnabled, isLdapLoginEnabled } from './Ldap/helpers';
import {
getLdapLoginLabel,
handleLdapInit,
isLdapEnabled,
isLdapLoginEnabled,
} from './Ldap/helpers';
import { AbstractServer } from './AbstractServer';
import { configureMetrics } from './metrics';
import { setupBasicAuth } from './middlewares/basicAuth';
Expand Down Expand Up @@ -357,20 +361,6 @@ class Server extends AbstractServer {
return this.frontendSettings;
}

async initLicense(): Promise<void> {
const license = getLicense();
await license.init(this.frontendSettings.instanceId);

const activationKey = config.getEnv('license.activationKey');
if (activationKey) {
try {
await license.activate(activationKey);
} catch (e) {
LoggerProxy.error('Could not activate license', e);
}
}
}

private registerControllers(ignoredEndpoints: Readonly<string[]>) {
const { app, externalHooks, activeWorkflowRunner, nodeTypes } = this;
const repositories = Db.collections;
Expand Down Expand Up @@ -428,7 +418,6 @@ class Server extends AbstractServer {

await this.externalHooks.run('frontend.settings', [this.frontendSettings]);

await this.initLicense();
await this.postHog.init(this.frontendSettings.instanceId);

const publicApiEndpoint = config.getEnv('publicApi.path');
Expand Down Expand Up @@ -490,9 +479,8 @@ class Server extends AbstractServer {
}),
);

// ----------------------------------------
// User Management
// ----------------------------------------
await handleLdapInit();

this.registerControllers(ignoredEndpoints);

this.app.use(`/${this.restEndpoint}/credentials`, credentialsController);
Expand Down
8 changes: 5 additions & 3 deletions packages/cli/src/commands/BaseCommand.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ export abstract class BaseCommand extends Command {

protected userSettings: IUserSettings;

protected instanceId: string;

async init(): Promise<void> {
await initErrorHandling();

Expand All @@ -49,9 +51,9 @@ export abstract class BaseCommand extends Command {
const credentialTypes = Container.get(CredentialTypes);
CredentialsOverwrites(credentialTypes);

const instanceId = this.userSettings.instanceId ?? '';
await Container.get(PostHogClient).init(instanceId);
await Container.get(InternalHooks).init(instanceId);
this.instanceId = this.userSettings.instanceId ?? '';
await Container.get(PostHogClient).init(this.instanceId);
await Container.get(InternalHooks).init(this.instanceId);

await Db.init().catch(async (error: Error) =>
this.exitWithCrash('There was an error initializing DB', error),
Expand Down
19 changes: 16 additions & 3 deletions packages/cli/src/commands/start.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,11 @@ import * as GenericHelpers from '@/GenericHelpers';
import * as Server from '@/Server';
import { TestWebhooks } from '@/TestWebhooks';
import { getAllInstalledPackages } from '@/CommunityNodes/packageModel';
import { handleLdapInit } from '@/Ldap/helpers';
import { EDITOR_UI_DIST_DIR, GENERATED_STATIC_DIR } from '@/constants';
import { eventBus } from '@/eventbus';
import { BaseCommand } from './BaseCommand';
import { InternalHooks } from '@/InternalHooks';
import { getLicense } from '@/License';

// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-var-requires
const open = require('open');
Expand Down Expand Up @@ -182,11 +182,26 @@ export class Start extends BaseCommand {
await Promise.all(files.map(compileFile));
}

async initLicense(): Promise<void> {
const license = getLicense();
await license.init(this.instanceId);

const activationKey = config.getEnv('license.activationKey');
if (activationKey) {
try {
await license.activate(activationKey);
} catch (e) {
LoggerProxy.error('Could not activate license', e as Error);
}
}
}

async init() {
await this.initCrashJournal();
await super.init();
this.logger.info('Initializing n8n process');

await this.initLicense();
await this.initBinaryManager();
await this.initExternalHooks();

Expand Down Expand Up @@ -326,8 +341,6 @@ export class Start extends BaseCommand {
);
}

await handleLdapInit();

await Server.start();

// Start to get active workflows and run their triggers
Expand Down

0 comments on commit 90afa5e

Please sign in to comment.