Merge pull request #59 from unilogica/main

Bugfix Internal Error 500: fetchInstances (apikey not found)
This commit is contained in:
Davidson Gomes 2023-08-29 11:24:03 -03:00 committed by GitHub
commit b4eca48f4d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 14 additions and 6 deletions

View File

@ -77,6 +77,7 @@
"redis": "^4.6.5", "redis": "^4.6.5",
"sharp": "^0.30.7", "sharp": "^0.30.7",
"socket.io": "^4.7.1", "socket.io": "^4.7.1",
"socks-proxy-agent": "^8.0.1",
"uuid": "^9.0.0" "uuid": "^9.0.0"
}, },
"devDependencies": { "devDependencies": {

View File

@ -5,6 +5,10 @@ import { Redis } from '../config/env.config';
import { Logger } from '../config/logger.config'; import { Logger } from '../config/logger.config';
export class RedisCache { export class RedisCache {
async disconnect() {
await this.client.disconnect();
this.statusConnection = false;
}
constructor() { constructor() {
this.logger.verbose('instance created'); this.logger.verbose('instance created');
process.on('beforeExit', async () => { process.on('beforeExit', async () => {

View File

@ -495,12 +495,13 @@ export class InstanceController {
} }
public async fetchInstances({ instanceName }: InstanceDto) { public async fetchInstances({ instanceName }: InstanceDto) {
this.logger.verbose('requested fetchInstances from ' + instanceName + ' instance');
if (instanceName) { if (instanceName) {
this.logger.verbose('requested fetchInstances from ' + instanceName + ' instance');
this.logger.verbose('instanceName: ' + instanceName); this.logger.verbose('instanceName: ' + instanceName);
return this.waMonitor.instanceInfo(instanceName); return this.waMonitor.instanceInfo(instanceName);
} }
this.logger.verbose('requested fetchInstances (all instances)');
return this.waMonitor.instanceInfo(); return this.waMonitor.instanceInfo();
} }

View File

@ -55,7 +55,7 @@ async function jwtGuard(req: Request, res: Response, next: NextFunction) {
} }
} }
async function apikey(req: Request, res: Response, next: NextFunction) { async function apikey(req: Request, _: Response, next: NextFunction) {
const env = configService.get<Auth>('AUTHENTICATION').API_KEY; const env = configService.get<Auth>('AUTHENTICATION').API_KEY;
const key = req.get('apikey'); const key = req.get('apikey');

View File

@ -115,7 +115,7 @@ export class WAMonitoringService {
if (this.configService.get<Auth>('AUTHENTICATION').EXPOSE_IN_FETCH_INSTANCES) { if (this.configService.get<Auth>('AUTHENTICATION').EXPOSE_IN_FETCH_INSTANCES) {
instanceData.instance['serverUrl'] = this.configService.get<HttpServer>('SERVER').URL; instanceData.instance['serverUrl'] = this.configService.get<HttpServer>('SERVER').URL;
instanceData.instance['apikey'] = (await this.repository.auth.find(key)).apikey; instanceData.instance['apikey'] = (await this.repository.auth.find(key))?.apikey;
instanceData.instance['chatwoot'] = chatwoot; instanceData.instance['chatwoot'] = chatwoot;
} }
@ -134,7 +134,7 @@ export class WAMonitoringService {
if (this.configService.get<Auth>('AUTHENTICATION').EXPOSE_IN_FETCH_INSTANCES) { if (this.configService.get<Auth>('AUTHENTICATION').EXPOSE_IN_FETCH_INSTANCES) {
instanceData.instance['serverUrl'] = this.configService.get<HttpServer>('SERVER').URL; instanceData.instance['serverUrl'] = this.configService.get<HttpServer>('SERVER').URL;
instanceData.instance['apikey'] = (await this.repository.auth.find(key)).apikey; instanceData.instance['apikey'] = (await this.repository.auth.find(key))?.apikey;
instanceData.instance['chatwoot'] = chatwoot; instanceData.instance['chatwoot'] = chatwoot;
} }
@ -161,8 +161,7 @@ export class WAMonitoringService {
}); });
this.logger.verbose('instance files deleted: ' + name); this.logger.verbose('instance files deleted: ' + name);
}); });
// } else if (this.redis.ENABLED) { } else if (!this.redis.ENABLED) {
} else {
const dir = opendirSync(INSTANCE_DIR, { encoding: 'utf-8' }); const dir = opendirSync(INSTANCE_DIR, { encoding: 'utf-8' });
for await (const dirent of dir) { for await (const dirent of dir) {
if (dirent.isDirectory()) { if (dirent.isDirectory()) {
@ -200,6 +199,7 @@ export class WAMonitoringService {
this.logger.verbose('cleaning up instance in redis: ' + instanceName); this.logger.verbose('cleaning up instance in redis: ' + instanceName);
this.cache.reference = instanceName; this.cache.reference = instanceName;
await this.cache.delAll(); await this.cache.delAll();
this.cache.disconnect();
return; return;
} }
@ -268,6 +268,7 @@ export class WAMonitoringService {
} else { } else {
this.logger.verbose('no instance keys found'); this.logger.verbose('no instance keys found');
} }
this.cache.disconnect();
return; return;
} }

View File

@ -128,6 +128,7 @@ import { Events, MessageSubtype, TypeMediaMessage, wa } from '../types/wa.types'
import { waMonitor } from '../whatsapp.module'; import { waMonitor } from '../whatsapp.module';
import { ChamaaiService } from './chamaai.service'; import { ChamaaiService } from './chamaai.service';
import { ChatwootService } from './chatwoot.service'; import { ChatwootService } from './chatwoot.service';
//import { SocksProxyAgent } from './socks-proxy-agent';
import { TypebotService } from './typebot.service'; import { TypebotService } from './typebot.service';
export class WAStartupService { export class WAStartupService {