From 51c873c19e91d531988d46fd7abfaaa29ff3d17c Mon Sep 17 00:00:00 2001 From: Davidson Gomes Date: Thu, 6 Jun 2024 17:01:48 -0300 Subject: [PATCH] prisma orm: all endpoints ok --- CHANGELOG.md | 2 + .../controllers/rabbitmq.controller.ts | 4 + .../sqs/controllers/sqs.controller.ts | 3 + src/api/services/channel.service.ts | 37 ++++++--- .../channels/whatsapp.baileys.service.ts | 76 +++++++++++++++---- src/api/types/wa.types.ts | 8 +- src/utils/makeProxyAgent.ts | 10 ++- src/validate/validate.schema.ts | 21 ++--- 8 files changed, 115 insertions(+), 46 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4f47edb1..027df6e1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ ### Feature * New method of saving sessions to a file using worker, made in partnership with [codechat](https://github.com/code-chat-br/whatsapp-api) * Added prism orm, connection to postgres and mysql +* Added chatwoot integration activation +* Added typebot integration activation ### Fixed * diff --git a/src/api/integrations/rabbitmq/controllers/rabbitmq.controller.ts b/src/api/integrations/rabbitmq/controllers/rabbitmq.controller.ts index 82a0ba53..42731834 100644 --- a/src/api/integrations/rabbitmq/controllers/rabbitmq.controller.ts +++ b/src/api/integrations/rabbitmq/controllers/rabbitmq.controller.ts @@ -1,4 +1,6 @@ +import { configService, Rabbitmq } from '../../../../config/env.config'; import { Logger } from '../../../../config/logger.config'; +import { BadRequestException } from '../../../../exceptions'; import { InstanceDto } from '../../../dto/instance.dto'; import { RabbitmqDto } from '../dto/rabbitmq.dto'; import { RabbitmqService } from '../services/rabbitmq.service'; @@ -9,6 +11,8 @@ export class RabbitmqController { constructor(private readonly rabbitmqService: RabbitmqService) {} public async createRabbitmq(instance: InstanceDto, data: RabbitmqDto) { + if (!configService.get('RABBITMQ').ENABLED) throw new BadRequestException('Rabbitmq is disabled'); + logger.verbose('requested createRabbitmq from ' + instance.instanceName + ' instance'); if (!data.enabled) { diff --git a/src/api/integrations/sqs/controllers/sqs.controller.ts b/src/api/integrations/sqs/controllers/sqs.controller.ts index 8905d4de..9ac9238c 100644 --- a/src/api/integrations/sqs/controllers/sqs.controller.ts +++ b/src/api/integrations/sqs/controllers/sqs.controller.ts @@ -1,4 +1,6 @@ +import { configService, Sqs } from '../../../../config/env.config'; import { Logger } from '../../../../config/logger.config'; +import { BadRequestException } from '../../../../exceptions'; import { InstanceDto } from '../../../dto/instance.dto'; import { SqsDto } from '../dto/sqs.dto'; import { SqsService } from '../services/sqs.service'; @@ -9,6 +11,7 @@ export class SqsController { constructor(private readonly sqsService: SqsService) {} public async createSqs(instance: InstanceDto, data: SqsDto) { + if (!configService.get('SQS').ENABLED) throw new BadRequestException('Sqs is disabled'); logger.verbose('requested createSqs from ' + instance.instanceName + ' instance'); if (!data.enabled) { diff --git a/src/api/services/channel.service.ts b/src/api/services/channel.service.ts index b9e0d902..750cf8dc 100644 --- a/src/api/services/channel.service.ts +++ b/src/api/services/channel.service.ts @@ -240,8 +240,20 @@ export class ChannelStartupService { public async setSettings(data: SettingsDto) { this.logger.verbose('Setting settings'); - await this.prismaRepository.setting.create({ - data: { + await this.prismaRepository.setting.upsert({ + where: { + instanceId: this.instanceId, + }, + update: { + rejectCall: data.rejectCall, + msgCall: data.msgCall, + groupsIgnore: data.groupsIgnore, + alwaysOnline: data.alwaysOnline, + readMessages: data.readMessages, + readStatus: data.readStatus, + syncFullHistory: data.syncFullHistory, + }, + create: { rejectCall: data.rejectCall, msgCall: data.msgCall, groupsIgnore: data.groupsIgnore, @@ -805,15 +817,20 @@ export class ChannelStartupService { this.localProxy.enabled = data?.enabled; this.logger.verbose(`Proxy enabled: ${this.localProxy.enabled}`); - this.localProxy.proxy = { - host: data?.host, - port: `${data?.port}`, - protocol: data?.protocol, - username: data?.username, - password: data?.password, - }; + this.localProxy.host = data?.host; + this.logger.verbose(`Proxy host: ${this.localProxy.host}`); - this.logger.verbose(`Proxy proxy: ${this.localProxy.proxy?.host}`); + this.localProxy.port = data?.port; + this.logger.verbose(`Proxy port: ${this.localProxy.port}`); + + this.localProxy.protocol = data?.protocol; + this.logger.verbose(`Proxy protocol: ${this.localProxy.protocol}`); + + this.localProxy.username = data?.username; + this.logger.verbose(`Proxy username: ${this.localProxy.username}`); + + this.localProxy.password = data?.password; + this.logger.verbose(`Proxy password: ${this.localProxy.password}`); this.logger.verbose('Proxy loaded'); } diff --git a/src/api/services/channels/whatsapp.baileys.service.ts b/src/api/services/channels/whatsapp.baileys.service.ts index a2056d87..82dd330b 100644 --- a/src/api/services/channels/whatsapp.baileys.service.ts +++ b/src/api/services/channels/whatsapp.baileys.service.ts @@ -553,11 +553,11 @@ export class BaileysStartupService extends ChannelStartupService { let options; if (this.localProxy.enabled) { - this.logger.info('Proxy enabled: ' + this.localProxy.proxy?.host); + this.logger.info('Proxy enabled: ' + this.localProxy?.host); - if (this.localProxy?.proxy?.host?.includes('proxyscrape')) { + if (this.localProxy?.host?.includes('proxyscrape')) { try { - const response = await axios.get(this.localProxy.proxy?.host); + const response = await axios.get(this.localProxy?.host); const text = response.data; const proxyUrls = text.split('\r\n'); const rand = Math.floor(Math.random() * Math.floor(proxyUrls.length)); @@ -571,8 +571,20 @@ export class BaileysStartupService extends ChannelStartupService { } } else { options = { - agent: makeProxyAgent(this.localProxy.proxy), - fetchAgent: makeProxyAgent(this.localProxy.proxy), + agent: makeProxyAgent({ + host: this.localProxy.host, + port: this.localProxy.port, + protocol: this.localProxy.protocol, + username: this.localProxy.username, + password: this.localProxy.password, + }), + fetchAgent: makeProxyAgent({ + host: this.localProxy.host, + port: this.localProxy.port, + protocol: this.localProxy.protocol, + username: this.localProxy.username, + password: this.localProxy.password, + }), }; } } @@ -673,11 +685,11 @@ export class BaileysStartupService extends ChannelStartupService { let options; if (this.localProxy.enabled) { - this.logger.info('Proxy enabled: ' + this.localProxy.proxy?.host); + this.logger.info('Proxy enabled: ' + this.localProxy?.host); - if (this.localProxy?.proxy?.host?.includes('proxyscrape')) { + if (this.localProxy?.host?.includes('proxyscrape')) { try { - const response = await axios.get(this.localProxy.proxy?.host); + const response = await axios.get(this.localProxy?.host); const text = response.data; const proxyUrls = text.split('\r\n'); const rand = Math.floor(Math.random() * Math.floor(proxyUrls.length)); @@ -691,8 +703,20 @@ export class BaileysStartupService extends ChannelStartupService { } } else { options = { - agent: makeProxyAgent(this.localProxy.proxy), - fetchAgent: makeProxyAgent(this.localProxy.proxy), + agent: makeProxyAgent({ + host: this.localProxy.host, + port: this.localProxy.port, + protocol: this.localProxy.protocol, + username: this.localProxy.username, + password: this.localProxy.password, + }), + fetchAgent: makeProxyAgent({ + host: this.localProxy.host, + port: this.localProxy.port, + protocol: this.localProxy.protocol, + username: this.localProxy.username, + password: this.localProxy.password, + }), }; } } @@ -2317,7 +2341,13 @@ export class BaileysStartupService extends ChannelStartupService { if (this.localProxy.enabled) { config = { ...config, - httpsAgent: makeProxyAgent(this.localProxy.proxy), + httpsAgent: makeProxyAgent({ + host: this.localProxy.host, + port: this.localProxy.port, + protocol: this.localProxy.protocol, + username: this.localProxy.username, + password: this.localProxy.password, + }), }; } @@ -2388,7 +2418,13 @@ export class BaileysStartupService extends ChannelStartupService { if (this.localProxy.enabled) { config = { ...config, - httpsAgent: makeProxyAgent(this.localProxy.proxy), + httpsAgent: makeProxyAgent({ + host: this.localProxy.host, + port: this.localProxy.port, + protocol: this.localProxy.protocol, + username: this.localProxy.username, + password: this.localProxy.password, + }), }; } @@ -3105,7 +3141,13 @@ export class BaileysStartupService extends ChannelStartupService { if (this.localProxy.enabled) { config = { ...config, - httpsAgent: makeProxyAgent(this.localProxy.proxy), + httpsAgent: makeProxyAgent({ + host: this.localProxy.host, + port: this.localProxy.port, + protocol: this.localProxy.protocol, + username: this.localProxy.username, + password: this.localProxy.password, + }), }; } @@ -3307,7 +3349,13 @@ export class BaileysStartupService extends ChannelStartupService { if (this.localProxy.enabled) { config = { ...config, - httpsAgent: makeProxyAgent(this.localProxy.proxy), + httpsAgent: makeProxyAgent({ + host: this.localProxy.host, + port: this.localProxy.port, + protocol: this.localProxy.protocol, + username: this.localProxy.username, + password: this.localProxy.password, + }), }; } diff --git a/src/api/types/wa.types.ts b/src/api/types/wa.types.ts index 76a3e992..b707cb40 100644 --- a/src/api/types/wa.types.ts +++ b/src/api/types/wa.types.ts @@ -121,7 +121,8 @@ export declare namespace wa { sessions?: TypebotSession[]; }; - type Proxy = { + export type LocalProxy = { + enabled?: boolean; host?: string; port?: string; protocol?: string; @@ -129,11 +130,6 @@ export declare namespace wa { password?: string; }; - export type LocalProxy = { - enabled?: boolean; - proxy?: Proxy; - }; - export type LocalIntegration = { integration?: string; number?: string; diff --git a/src/utils/makeProxyAgent.ts b/src/utils/makeProxyAgent.ts index 60d5f20c..dcf560f6 100644 --- a/src/utils/makeProxyAgent.ts +++ b/src/utils/makeProxyAgent.ts @@ -1,8 +1,14 @@ import { HttpsProxyAgent } from 'https-proxy-agent'; -import { wa } from '../api/types/wa.types'; +type Proxy = { + host: string; + password?: string; + port: string; + protocol: string; + username?: string; +}; -export function makeProxyAgent(proxy: wa.Proxy | string) { +export function makeProxyAgent(proxy: Proxy | string) { if (typeof proxy === 'string') { return new HttpsProxyAgent(proxy); } diff --git a/src/validate/validate.schema.ts b/src/validate/validate.schema.ts index 709ba325..40f8a7f4 100644 --- a/src/validate/validate.schema.ts +++ b/src/validate/validate.schema.ts @@ -1050,21 +1050,14 @@ export const proxySchema: JSONSchema7 = { type: 'object', properties: { enabled: { type: 'boolean', enum: [true, false] }, - proxy: { - type: 'object', - properties: { - host: { type: 'string' }, - port: { type: 'string' }, - protocol: { type: 'string' }, - username: { type: 'string' }, - password: { type: 'string' }, - }, - required: ['host', 'port', 'protocol'], - ...isNotEmpty('host', 'port', 'protocol'), - }, + host: { type: 'string' }, + port: { type: 'string' }, + protocol: { type: 'string' }, + username: { type: 'string' }, + password: { type: 'string' }, }, - required: ['enabled', 'proxy'], - ...isNotEmpty('enabled', 'proxy'), + required: ['enabled', 'host', 'port', 'protocol'], + ...isNotEmpty('enabled', 'host', 'port', 'protocol'), }; export const handleLabelSchema: JSONSchema7 = {