Skip to content

Commit 6a547a1

Browse files
author
Artem
committed
pass port from electron + fix agreements spec to support encryption key
1 parent 6304ea4 commit 6a547a1

File tree

5 files changed

+18
-5
lines changed

5 files changed

+18
-5
lines changed

redisinsight/api/src/main.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ interface IApp {
2222
gracefulShutdown: Function;
2323
}
2424

25-
export default async function bootstrap(): Promise<IApp> {
25+
export default async function bootstrap(apiPort?: number): Promise<IApp> {
2626
await migrateHomeFolder();
2727

2828
const { port, host } = serverConfig;
@@ -62,7 +62,7 @@ export default async function bootstrap(): Promise<IApp> {
6262

6363
const logFileProvider = app.get(LogFileProvider);
6464

65-
await app.listen(port, host);
65+
await app.listen(apiPort || port, host);
6666
logger.log({
6767
message: `Server is running on http(s)://${host}:${port}`,
6868
context: 'bootstrap',

redisinsight/api/src/modules/encryption/encryption.module.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ export class EncryptionModule {
2020
// todo: rework to not export strategies
2121
PlainEncryptionStrategy,
2222
KeytarEncryptionStrategy,
23+
KeyEncryptionStrategy,
2324
],
2425
};
2526
}

redisinsight/api/src/modules/settings/settings.service.spec.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { InternalServerErrorException } from '@nestjs/common';
33
import {
44
mockAgreements,
55
mockAgreementsRepository, mockAppSettings,
6-
mockEncryptionStrategyInstance, mockSettings,
6+
mockEncryptionStrategyInstance, mockKeyEncryptionStrategyInstance, mockSettings,
77
mockSettingsAnalyticsService, mockSettingsRepository,
88
MockType, mockUserId,
99
} from 'src/__mocks__';
@@ -20,6 +20,7 @@ import { Agreements } from 'src/modules/settings/models/agreements';
2020
import { Settings } from 'src/modules/settings/models/settings';
2121
import { EventEmitter2 } from '@nestjs/event-emitter';
2222
import { FeatureServerEvents } from 'src/modules/feature/constants';
23+
import { KeyEncryptionStrategy } from 'src/modules/encryption/strategies/key-encryption.strategy';
2324

2425
const REDIS_SCAN_CONFIG = config.get('redis_scan');
2526
const WORKBENCH_CONFIG = config.get('workbench');
@@ -37,6 +38,7 @@ describe('SettingsService', () => {
3738
let settingsRepository: MockType<SettingsRepository>;
3839
let analyticsService: SettingsAnalytics;
3940
let keytarStrategy: MockType<KeytarEncryptionStrategy>;
41+
let keyStrategy: MockType<KeyEncryptionStrategy>;
4042
let eventEmitter: EventEmitter2;
4143

4244
beforeEach(async () => {
@@ -60,6 +62,10 @@ describe('SettingsService', () => {
6062
provide: KeytarEncryptionStrategy,
6163
useFactory: mockEncryptionStrategyInstance,
6264
},
65+
{
66+
provide: KeyEncryptionStrategy,
67+
useFactory: mockKeyEncryptionStrategyInstance,
68+
},
6369
{
6470
provide: EventEmitter2,
6571
useFactory: () => ({
@@ -72,6 +78,7 @@ describe('SettingsService', () => {
7278
agreementsRepository = await module.get(AgreementsRepository);
7379
settingsRepository = await module.get(SettingsRepository);
7480
keytarStrategy = await module.get(KeytarEncryptionStrategy);
81+
keyStrategy = await module.get(KeyEncryptionStrategy);
7582
analyticsService = await module.get<SettingsAnalytics>(SettingsAnalytics);
7683
service = await module.get(SettingsService);
7784
eventEmitter = await module.get(EventEmitter2);

redisinsight/api/src/modules/settings/settings.service.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import * as AGREEMENTS_SPEC from 'src/constants/agreements-spec.json';
1414
import config, { Config } from 'src/utils/config';
1515
import { AgreementIsNotDefinedException } from 'src/constants';
1616
import { KeytarEncryptionStrategy } from 'src/modules/encryption/strategies/keytar-encryption.strategy';
17+
import { KeyEncryptionStrategy } from 'src/modules/encryption/strategies/key-encryption.strategy';
1718
import { SettingsAnalytics } from 'src/modules/settings/settings.analytics';
1819
import { SettingsRepository } from 'src/modules/settings/repositories/settings.repository';
1920
import { classToClass } from 'src/utils';
@@ -33,6 +34,7 @@ export class SettingsService {
3334
private readonly agreementRepository: AgreementsRepository,
3435
private readonly analytics: SettingsAnalytics,
3536
private readonly keytarEncryptionStrategy: KeytarEncryptionStrategy,
37+
private readonly keyEncryptionStrategy: KeyEncryptionStrategy,
3638
private eventEmitter: EventEmitter2,
3739
) {}
3840

@@ -113,8 +115,11 @@ export class SettingsService {
113115
*/
114116
private async getAgreementsOption(checker: string, defaultOption: string): Promise<string> {
115117
try {
118+
// Check if any encryption strategy is available (not KEYTAR only)
119+
// KEY has a precedence on KEYTAR strategy
116120
if (checker === 'KEYTAR') {
117-
const isEncryptionAvailable = await this.keytarEncryptionStrategy.isAvailable();
121+
const isEncryptionAvailable = await this.keyEncryptionStrategy.isAvailable()
122+
|| await this.keytarEncryptionStrategy.isAvailable();
118123

119124
if (!isEncryptionAvailable && SERVER_CONFIG.buildType === 'REDIS_STACK') {
120125
return 'stack_false';

redisinsight/desktop/src/lib/server/server.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ export const launchApiServer = async () => {
3232

3333
log.info('Available port:', detectPortConst)
3434

35-
const { gracefulShutdown: gracefulShutdownFn, app: apiApp } = await server()
35+
const { gracefulShutdown: gracefulShutdownFn, app: apiApp } = await server(detectPortConst)
3636
gracefulShutdown = gracefulShutdownFn
3737
beApp = apiApp
3838

0 commit comments

Comments
 (0)