Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -37,4 +37,12 @@ export class CloudRequestUtm {
@IsString()
@IsNotEmpty()
amp?: string;

@ApiPropertyOptional({
type: String,
})
@IsOptional()
@IsString()
@IsNotEmpty()
package?: string;
}
Original file line number Diff line number Diff line change
Expand Up @@ -104,10 +104,11 @@ export class CloudUserApiService {

const preparedUtm = utm;

if (preparedUtm && !preparedUtm.amp) {
if (preparedUtm && (!preparedUtm.amp || !preparedUtm.package)) {
await this.serverService.getInfo()
.then(({ id }) => {
preparedUtm.amp = id;
.then(({ id, packageType }) => {
preparedUtm.amp = preparedUtm.amp || id;
preparedUtm.package = preparedUtm.package || packageType;
})
.catch(() => {
this.logger.warn('Unable to get server id for utm parameters');
Expand Down
8 changes: 8 additions & 0 deletions redisinsight/api/src/modules/server/dto/server.dto.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
import { PackageType } from 'src/modules/server/models/server';

export class GetServerInfoResponse {
@ApiProperty({
Expand Down Expand Up @@ -36,6 +37,13 @@ export class GetServerInfoResponse {
})
buildType: string;

@ApiProperty({
description: 'Application package type.',
enum: PackageType,
example: 'app-image',
})
packageType: PackageType;

@ApiPropertyOptional({
description: 'Fixed Redis database id.',
type: String,
Expand Down
10 changes: 9 additions & 1 deletion redisinsight/api/src/modules/server/models/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,15 @@ export enum BuildType {
}

export enum PackageType {
AppImage = 'appimage',
Flatpak = 'flatpak',
Snap = 'snap',
UnknownLinux = 'unknown-linux',
AppImage = 'app-image',
Mas = 'mas',
UnknownDarwin = 'unknown-darwin',
WindowsStore = 'windows-store',
UnknownWindows = 'unknown-windows',
Unknown = 'unknown',
}

export enum AppType {
Expand Down
52 changes: 50 additions & 2 deletions redisinsight/api/src/modules/server/server.service.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
import { Injectable, InternalServerErrorException, Logger, OnApplicationBootstrap } from '@nestjs/common';
import {
Injectable, InternalServerErrorException, Logger, OnApplicationBootstrap,
} from '@nestjs/common';
import { EventEmitter2 } from '@nestjs/event-emitter';
import config, { Config } from 'src/utils/config';
import { AppAnalyticsEvents } from 'src/constants/app-events';
import { TelemetryEvents } from 'src/constants/telemetry-events';
import { ServerInfoNotFoundException } from 'src/constants/exceptions';
import { EncryptionService } from 'src/modules/encryption/encryption.service';
import { ServerRepository } from 'src/modules/server/repositories/server.repository';
import { AppType, BuildType } from 'src/modules/server/models/server';
import { AppType, BuildType, PackageType } from 'src/modules/server/models/server';
import { GetServerInfoResponse } from 'src/modules/server/dto/server.dto';
import { FeaturesConfigService } from 'src/modules/feature/features-config.service';

Expand Down Expand Up @@ -51,6 +53,7 @@ export class ServerService implements OnApplicationBootstrap {
sessionId: this.sessionId,
appType: ServerService.getAppType(SERVER_CONFIG.buildType),
appVersion: SERVER_CONFIG.appVersion,
packageType: ServerService.getPackageType(SERVER_CONFIG.buildType),
...(await this.featuresConfigService.getControlInfo()),
});

Expand All @@ -63,6 +66,7 @@ export class ServerService implements OnApplicationBootstrap {
osPlatform: process.platform,
buildType: SERVER_CONFIG.buildType,
port: SERVER_CONFIG.port,
packageType: ServerService.getPackageType(SERVER_CONFIG.buildType),
},
nonTracking: true,
});
Expand All @@ -88,6 +92,7 @@ export class ServerService implements OnApplicationBootstrap {
appType: ServerService.getAppType(SERVER_CONFIG.buildType),
encryptionStrategies: await this.encryptionService.getAvailableEncryptionStrategies(),
fixedDatabaseId: REDIS_STACK_CONFIG?.id,
packageType: ServerService.getPackageType(SERVER_CONFIG.buildType),
...(await this.featuresConfigService.getControlInfo()),
};
this.logger.log('Succeed to get server info.');
Expand All @@ -110,4 +115,47 @@ export class ServerService implements OnApplicationBootstrap {
return AppType.Unknown;
}
}

static getPackageType(buildType: string): PackageType {
if (buildType === BuildType.Electron) {
// Darwin
if (process.platform === 'darwin') {
if (process.env.mas || process['mas']) {
return PackageType.Mas;
}

return PackageType.UnknownDarwin;
}

// Linux
if (process.platform === 'linux') {
if (process.env.APPIMAGE) {
return PackageType.AppImage;
}

if (process.env.SNAP_INSTANCE_NAME || process.env.SNAP_DATA) {
return PackageType.Snap;
}

if (process.env.container) {
return PackageType.Flatpak;
}

return PackageType.UnknownLinux;
}

// Windows
if (process.platform === 'win32') {
if (process.env.windowsStore || process['windowsStore']) {
return PackageType.WindowsStore;
}

return PackageType.UnknownWindows;
}

return PackageType.Unknown;
}

return undefined;
}
}