Skip to content
Draft
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
4 changes: 2 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -35,13 +35,13 @@ RUN apt-get update && apt-get install -y \
&& rm -rf /var/lib/apt/lists/*

WORKDIR /app
COPY package.json .yarnrc.yml yarn.lock /app/
COPY package.json .yarnrc.yml yarn.lock tsconfig.json /app/
COPY backend /app/backend
COPY shared-code /app/shared-code
COPY rocketadmin-agent /app/rocketadmin-agent
COPY .yarn /app/.yarn
RUN yarn install --network-timeout 1000000 --immutable --silent
RUN cd shared-code && ../node_modules/.bin/tsc
RUN ./node_modules/.bin/tsc --build
RUN cd backend && yarn run nest build
COPY --from=front_builder /app/frontend/dist/dissendium-v0 /var/www/html
COPY frontend/nginx/default.conf /etc/nginx/sites-enabled/default
Expand Down
6 changes: 3 additions & 3 deletions Dockerfile.rocketadmin-agent
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,17 @@ RUN groupadd -r appuser && useradd -r -g appuser -d /app -s /sbin/nologin appuse
WORKDIR /app
RUN apt-get update && apt-get install -y netcat-openbsd make gcc g++ python3 libxml2

COPY package.json .yarnrc.yml yarn.lock /app/
COPY package.json .yarnrc.yml yarn.lock tsconfig.json /app/
COPY shared-code /app/shared-code
COPY rocketadmin-agent /app/rocketadmin-agent
COPY .yarn /app/.yarn
RUN yarn install --network-timeout 1000000
RUN cd shared-code && ../node_modules/.bin/tsc
RUN ./node_modules/.bin/tsc --build
RUN cd rocketadmin-agent && yarn run nest build

RUN chown -R appuser:appuser /app

USER appuser

WORKDIR /app/rocketadmin-agent
CMD ["node", "dist/main.js"]
CMD ["node", "dist/main.js"]
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { BadRequestException, Inject, Injectable, NotFoundException, Scope } from '@nestjs/common';
import { getDataAccessObject } from '@rocketadmin/shared-code/dist/src/data-access-layer/shared/create-data-access-object.js';
import { ConnectionTypesEnum } from '@rocketadmin/shared-code/dist/src/data-access-layer/shared/enums/connection-types-enum.js';
import { getDataAccessObject } from '@rocketadmin/shared-code/src/data-access-layer/shared/create-data-access-object.js';
import { ConnectionTypesEnum } from '@rocketadmin/shared-code/src/data-access-layer/shared/enums/connection-types-enum.js';
import OpenAI from 'openai';
import AbstractUseCase from '../../../common/abstract-use.case.js';
import { IGlobalDatabaseContext } from '../../../common/application/global-database-context.interface.js';
Expand All @@ -17,8 +17,8 @@ import { ResponsesModel } from 'openai/resources/index.js';
import { Stream } from 'openai/core/streaming.js';
import { Response } from 'express';
import { ConnectionEntity } from '../../connection/connection.entity.js';
import { IDataAccessObject } from '@rocketadmin/shared-code/dist/src/data-access-layer/shared/interfaces/data-access-object.interface.js';
import { IDataAccessObjectAgent } from '@rocketadmin/shared-code/dist/src/data-access-layer/shared/interfaces/data-access-object-agent.interface.js';
import { IDataAccessObject } from '@rocketadmin/shared-code/src/data-access-layer/shared/interfaces/data-access-object.interface.js';
import { IDataAccessObjectAgent } from '@rocketadmin/shared-code/src/data-access-layer/shared/interfaces/data-access-object-agent.interface.js';
import { AiResponsesToUserEntity } from '../ai-data-entities/ai-reponses-to-user/ai-responses-to-user.entity.js';
@Injectable({ scope: Scope.REQUEST })
export class RequestInfoFromTableWithAIUseCaseV4
Expand Down
2 changes: 1 addition & 1 deletion backend/src/entities/ai/utils/prompt-generating.util.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { ConnectionTypesEnum } from '@rocketadmin/shared-code/dist/src/data-access-layer/shared/enums/connection-types-enum.js';
import { ConnectionTypesEnum } from '@rocketadmin/shared-code/src/data-access-layer/shared/enums/connection-types-enum.js';

export function convertDdTypeEnumToReadableString(dataType: ConnectionTypesEnum): string {
switch (dataType) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { ConnectionTypesEnum } from "@rocketadmin/shared-code/dist/src/data-access-layer/shared/enums/connection-types-enum.js";
import { ConnectionTypesEnum } from "@rocketadmin/shared-code/src/data-access-layer/shared/enums/connection-types-enum.js";

export function wrapQueryWithLimit(query: string, databaseType: ConnectionTypesEnum): string {
const queryWithoutSemicolon = query.replace(/;$/, '');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { HttpException } from '@nestjs/common/exceptions/http.exception.js';
import { Messages } from '../../../exceptions/text/messages.js';
import { HttpStatus } from '@nestjs/common';
import { ConnectionEntity } from '../../connection/connection.entity.js';
import { getDataAccessObject } from '@rocketadmin/shared-code/dist/src/data-access-layer/shared/create-data-access-object.js';
import { getDataAccessObject } from '@rocketadmin/shared-code/src/data-access-layer/shared/create-data-access-object.js';
import { validateTableCategories } from '../../table-categories/utils/validate-table-categories.util.js';

export async function validateCreateConnectionPropertiesDs(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { ConnectionTypesEnum } from '@rocketadmin/shared-code/dist/src/data-access-layer/shared/enums/connection-types-enum.js';
import { ConnectionTypesEnum } from '@rocketadmin/shared-code/src/data-access-layer/shared/enums/connection-types-enum.js';

export class CreateConnectionDs {
connection_parameters: {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { ApiProperty } from '@nestjs/swagger';
import { AccessLevelEnum } from '../../../../enums/index.js';
import { ConnectionTypesEnum } from '@rocketadmin/shared-code/dist/src/data-access-layer/shared/enums/connection-types-enum.js';
import { ConnectionTypesEnum } from '@rocketadmin/shared-code/src/data-access-layer/shared/enums/connection-types-enum.js';
import { UserEntity } from '../../../user/user.entity.js';
import { FoundGroupDataWithUsersDs } from '../../../group/application/data-sctructures/found-user-groups.ds.js';
import { SimpleFoundUserInfoDs } from '../../../user/dto/found-user.dto.js';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { ConnectionTypesEnum } from '@rocketadmin/shared-code/dist/src/data-access-layer/shared/enums/connection-types-enum.js';
import { ConnectionTypesEnum } from '@rocketadmin/shared-code/src/data-access-layer/shared/enums/connection-types-enum.js';

export class UpdateConnectionDs {
connection_parameters: {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { ApiProperty } from '@nestjs/swagger';
import { IsBoolean, IsEnum, IsNumber, IsOptional, IsString, Max, Min } from 'class-validator';
import { ConnectionTypesEnum } from '@rocketadmin/shared-code/dist/src/data-access-layer/shared/enums/connection-types-enum.js';
import { ConnectionTypesEnum } from '@rocketadmin/shared-code/src/data-access-layer/shared/enums/connection-types-enum.js';
import { isTest } from '../../../../helpers/app/is-test.js';
import { ConnectionTypeTestEnum } from '../../../../enums/connection-type.enum.js';

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { ApiProperty } from '@nestjs/swagger';
import { ConnectionTypesEnum } from '@rocketadmin/shared-code/dist/src/data-access-layer/shared/enums/connection-types-enum.js';
import { ConnectionTypesEnum } from '@rocketadmin/shared-code/src/data-access-layer/shared/enums/connection-types-enum.js';
import { FoundUserDto } from '../../../user/dto/found-user.dto.js';

export class CreatedGroupInConnectionDTO {
Expand Down
4 changes: 2 additions & 2 deletions backend/src/entities/connection/connection.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,8 @@ import { UpdateMasterPasswordDs } from './application/data-structures/update-mas
import { CreatedConnectionDTO } from './application/dto/created-connection.dto.js';

import { ApiBearerAuth, ApiBody, ApiOperation, ApiQuery, ApiResponse, ApiTags } from '@nestjs/swagger';
import { TestConnectionResultDS } from '@rocketadmin/shared-code/dist/src/data-access-layer/shared/data-structures/test-result-connection.ds.js';
import { ConnectionTypesEnum } from '@rocketadmin/shared-code/dist/src/data-access-layer/shared/enums/connection-types-enum.js';
import { TestConnectionResultDS } from '@rocketadmin/shared-code/src/data-access-layer/shared/data-structures/test-result-connection.ds.js';
import { ConnectionTypesEnum } from '@rocketadmin/shared-code/src/data-access-layer/shared/enums/connection-types-enum.js';
import { SuccessResponse } from '../../microservices/saas-microservice/data-structures/common-responce.ds.js';
import { FoundGroupResponseDto } from '../group/dto/found-group-response.dto.js';
import { FoundOneConnectionDs } from './application/data-structures/found-one-connection.ds.js';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { BadRequestException, Inject, Injectable, InternalServerErrorException, Scope } from '@nestjs/common';
import { getDataAccessObject } from '@rocketadmin/shared-code/dist/src/data-access-layer/shared/create-data-access-object.js';
import { getDataAccessObject } from '@rocketadmin/shared-code/src/data-access-layer/shared/create-data-access-object.js';
import AbstractUseCase from '../../../common/abstract-use.case.js';
import { IGlobalDatabaseContext } from '../../../common/application/global-database-context.interface.js';
import { BaseType } from '../../../common/data-injection.tokens.js';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { Inject, Injectable } from '@nestjs/common';
import AbstractUseCase from '../../../common/abstract-use.case.js';
import { IGlobalDatabaseContext } from '../../../common/application/global-database-context.interface.js';
import { BaseType } from '../../../common/data-injection.tokens.js';
import { getDataAccessObject } from '@rocketadmin/shared-code/dist/src/data-access-layer/shared/create-data-access-object.js';
import { getDataAccessObject } from '@rocketadmin/shared-code/src/data-access-layer/shared/create-data-access-object.js';
import { TablePermissionDs } from '../../permission/application/data-structures/create-permissions.ds.js';
import { FoundPermissionsInConnectionDs } from '../application/data-structures/found-permissions-in-connection.ds.js';
import { GetPermissionsInConnectionDs } from '../application/data-structures/get-permissions-in-connection.ds.js';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { Inject, Injectable } from '@nestjs/common';
import AbstractUseCase from '../../../common/abstract-use.case.js';
import { IGlobalDatabaseContext } from '../../../common/application/global-database-context.interface.js';
import { BaseType } from '../../../common/data-injection.tokens.js';
import { getDataAccessObject } from '@rocketadmin/shared-code/dist/src/data-access-layer/shared/create-data-access-object.js';
import { getDataAccessObject } from '@rocketadmin/shared-code/src/data-access-layer/shared/create-data-access-object.js';
import { TablePermissionDs } from '../../permission/application/data-structures/create-permissions.ds.js';
import { FoundPermissionsInConnectionDs } from '../application/data-structures/found-permissions-in-connection.ds.js';
import { GetPermissionsInConnectionDs } from '../application/data-structures/get-permissions-in-connection.ds.js';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { getRepository } from 'typeorm';
import AbstractUseCase from '../../../common/abstract-use.case.js';
import { IGlobalDatabaseContext } from '../../../common/application/global-database-context.interface.js';
import { BaseType } from '../../../common/data-injection.tokens.js';
import { getDataAccessObject } from '@rocketadmin/shared-code/dist/src/data-access-layer/shared/create-data-access-object.js';
import { getDataAccessObject } from '@rocketadmin/shared-code/src/data-access-layer/shared/create-data-access-object.js';
import { Messages } from '../../../exceptions/text/messages.js';
import { processExceptionMessage } from '../../../exceptions/utils/process-exception-message.js';
import { isConnectionTypeAgent, slackPostMessage } from '../../../helpers/index.js';
Expand All @@ -15,7 +15,7 @@ import { isHostAllowed } from '../utils/is-host-allowed.js';
import { ITestConnection } from './use-cases.interfaces.js';
import { processAWSConnection } from '../utils/process-aws-connection.util.js';
import { CreateConnectionDs } from '../application/data-structures/create-connection.ds.js';
import { ConnectionTypesEnum } from '@rocketadmin/shared-code/dist/src/data-access-layer/shared/enums/connection-types-enum.js';
import { ConnectionTypesEnum } from '@rocketadmin/shared-code/src/data-access-layer/shared/enums/connection-types-enum.js';

@Injectable()
export class TestConnectionUseCase
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { HttpStatus } from '@nestjs/common';
import { HttpException } from '@nestjs/common/exceptions/http.exception.js';
import { ConnectionTypesEnum } from '@rocketadmin/shared-code/dist/src/data-access-layer/shared/enums/connection-types-enum.js';
import { ConnectionTypesEnum } from '@rocketadmin/shared-code/src/data-access-layer/shared/enums/connection-types-enum.js';
import dns from 'dns';
import ipRangeCheck from 'ip-range-check';
import { ConnectionTypeTestEnum } from '../../../enums/connection-type.enum.js';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { Messages } from '../../../exceptions/text/messages.js';
import { getValuesBetweenCurlies, toPrettyErrorsMsg } from '../../../helpers/index.js';
import { HttpException } from '@nestjs/common/exceptions/http.exception.js';
import { HttpStatus } from '@nestjs/common';
import { getDataAccessObject } from '@rocketadmin/shared-code/dist/src/data-access-layer/shared/create-data-access-object.js';
import { getDataAccessObject } from '@rocketadmin/shared-code/src/data-access-layer/shared/create-data-access-object.js';

export async function validateCreateCustomFieldDto(
createFieldDto: CreateFieldDto,
Expand Down
2 changes: 1 addition & 1 deletion backend/src/entities/demo-data/demo-data.service.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Inject, Injectable } from '@nestjs/common';
import { ConnectionTypesEnum } from '@rocketadmin/shared-code/dist/src/data-access-layer/shared/enums/connection-types-enum.js';
import { ConnectionTypesEnum } from '@rocketadmin/shared-code/src/data-access-layer/shared/enums/connection-types-enum.js';
import { IGlobalDatabaseContext } from '../../common/application/global-database-context.interface.js';
import { BaseType } from '../../common/data-injection.tokens.js';
import { QueryOrderingEnum } from '../../enums/query-ordering.enum.js';
Expand Down
54 changes: 50 additions & 4 deletions backend/src/entities/shared-jobs/shared-jobs.service.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { Inject, Injectable } from '@nestjs/common';
import { getDataAccessObject } from '@rocketadmin/shared-code/dist/src/data-access-layer/shared/create-data-access-object.js';
import { TableDS } from '@rocketadmin/shared-code/dist/src/data-access-layer/shared/data-structures/table.ds.js';
import { IDataAccessObject } from '@rocketadmin/shared-code/dist/src/data-access-layer/shared/interfaces/data-access-object.interface.js';
import { getDataAccessObject } from '@rocketadmin/shared-code/src/data-access-layer/shared/create-data-access-object.js';
import { TableDS } from '@rocketadmin/shared-code/src/data-access-layer/shared/data-structures/table.ds.js';
import { IDataAccessObject } from '@rocketadmin/shared-code/src/data-access-layer/shared/interfaces/data-access-object.interface.js';
import PQueue from 'p-queue';
import { IGlobalDatabaseContext } from '../../common/application/global-database-context.interface.js';
import { BaseType } from '../../common/data-injection.tokens.js';
Expand All @@ -11,7 +11,7 @@ import { buildNewTableSettingsEntity } from '../table-settings/utils/build-new-t
import { ConnectionEntity } from '../connection/connection.entity.js';
import { TableWidgetEntity } from '../widget/table-widget.entity.js';
import { WidgetTypeEnum } from '../../enums/widget-type.enum.js';
import { IDataAccessObjectAgent } from '@rocketadmin/shared-code/dist/src/data-access-layer/shared/interfaces/data-access-object-agent.interface.js';
import { IDataAccessObjectAgent } from '@rocketadmin/shared-code/src/data-access-layer/shared/interfaces/data-access-object-agent.interface.js';
import * as Sentry from '@sentry/node';
@Injectable()
export class SharedJobsService {
Expand Down Expand Up @@ -69,6 +69,7 @@ export class SharedJobsService {
rgbColor: new Set<string>(),
hexColor: new Set<string>(),
hslColor: new Set<string>(),
password: new Map<string, string>(),
};

for (const column of columnsArray) {
Expand Down Expand Up @@ -107,6 +108,9 @@ export class SharedJobsService {
case sampleValues.every((value) => this.isHslColor(value)):
widgetColumnNames.hslColor.add(column);
break;
case sampleValues.every((value) => this.isValueModularCryptedPassword(value)):
widgetColumnNames.password.set(column, this.getPasswordEncryptionAlgorithm(String(sampleValues[0])));
break;
default:
break;
}
Expand All @@ -120,6 +124,7 @@ export class SharedJobsService {
const rgbColorColumns = Array.from(widgetColumnNames.rgbColor);
const hexColorColumns = Array.from(widgetColumnNames.hexColor);
const hslColorColumns = Array.from(widgetColumnNames.hslColor);
const passwordColumns = Array.from(widgetColumnNames.password.keys());

const allColumns = [
telephoneColumns,
Expand All @@ -130,6 +135,7 @@ export class SharedJobsService {
rgbColorColumns,
hexColorColumns,
hslColorColumns,
passwordColumns,
];
if (allColumns.every((columns) => columns.length === 0)) {
return;
Expand Down Expand Up @@ -228,6 +234,19 @@ export class SharedJobsService {
await this._dbContext.tableWidgetsRepository.save(newWidget);
}
}
if (passwordColumns.length) {
for (const column of passwordColumns) {
const newWidget = new TableWidgetEntity();
newWidget.field_name = column;
newWidget.widget_type = WidgetTypeEnum.Password;
newWidget.widget_options = JSON.stringify({
encrypt: true,
algorithm: this.getPasswordEncryptionAlgorithm(passwordColumns[0]),
});
newWidget.settings = savedTableSettings;
await this._dbContext.tableWidgetsRepository.save(newWidget);
}
}
}
}

Expand All @@ -239,6 +258,33 @@ export class SharedJobsService {
return phoneRegex.test(value) && ValidationHelper.isValidPhoneNumber(value);
}

private isValueModularCryptedPassword(value: unknown): boolean {
if (typeof value !== 'string') {
return false;
}
const modularCryptRegex = /^\$[a-zA-Z0-9]+\$[a-zA-Z0-9./]{0,16}\$[a-zA-Z0-9./]+$/;
return modularCryptRegex.test(value);
}

private getPasswordEncryptionAlgorithm(sampleValue: string): string {
const match = sampleValue.match(/^\$([a-zA-Z0-9]+)\$/);
switch (match ? match[1] : '') {
case '2a':
case '2b':
case '2y':
return 'bcrypt';
case 'argon2i':
case 'argon2id':
return 'argon2';
case '5':
return 'sha256_crypt';
case '6':
return 'sha512_crypt';
default:
return 'unknown';
}
}

private isValueRgbColor(value: unknown): boolean {
if (typeof value !== 'string') {
return false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { CreateActionRuleDS, CreateTableActionData } from '../application/data-s
import { FoundActionRulesWithActionsAndEventsDTO } from '../application/dto/found-action-rules-with-actions-and-events.dto.js';
import { TableActionMethodEnum } from '../../../../enums/table-action-method-enum.js';
import { Messages } from '../../../../exceptions/text/messages.js';
import { getDataAccessObject } from '@rocketadmin/shared-code/dist/src/data-access-layer/shared/create-data-access-object.js';
import { getDataAccessObject } from '@rocketadmin/shared-code/src/data-access-layer/shared/create-data-access-object.js';
import { buildEmptyActionRule } from '../utils/build-empty-action-rule.util.js';
import { ValidationHelper } from '../../../../helpers/validators/validation-helper.js';
import { buildTableActionWithRule } from '../../table-actions-module/utils/build-table-action-with-rule.util.js';
Expand Down
Loading
Loading