antares/src/main/ipc-handlers/connection.js

87 lines
2.1 KiB
JavaScript
Raw Normal View History

2021-02-03 21:53:24 +01:00
import fs from 'fs';
2020-05-14 15:21:57 +02:00
import { ipcMain } from 'electron';
import { ClientsFactory } from '../libs/ClientsFactory';
2020-05-14 15:21:57 +02:00
export default connections => {
ipcMain.handle('test-connection', async (event, conn) => {
2021-02-03 21:53:24 +01:00
const params = {
host: conn.host,
port: +conn.port,
user: conn.user,
password: conn.password
};
if (conn.ssl) {
params.ssl = {
key: conn.key ? fs.readFileSync(conn.key) : null,
cert: conn.cert ? fs.readFileSync(conn.cert) : null,
ca: conn.ca ? fs.readFileSync(conn.ca) : null,
ciphers: conn.ciphers
};
}
const connection = ClientsFactory.getConnection({
2020-06-05 21:00:15 +02:00
client: conn.client,
2021-02-03 21:53:24 +01:00
params
2020-06-05 21:00:15 +02:00
});
await connection.connect();
2020-06-07 14:38:38 +02:00
2020-05-14 15:21:57 +02:00
try {
await connection.select('1+1').run();
connection.destroy();
2020-05-14 15:21:57 +02:00
return { status: 'success' };
}
catch (err) {
return { status: 'error', response: err };
}
});
ipcMain.handle('check-connection', async (event, uid) => {
2020-05-14 15:21:57 +02:00
return uid in connections;
});
ipcMain.handle('connect', async (event, conn) => {
2021-02-03 21:53:24 +01:00
const params = {
host: conn.host,
port: +conn.port,
user: conn.user,
password: conn.password
};
if (conn.ssl) {
params.ssl = {
key: conn.key ? fs.readFileSync(conn.key) : null,
cert: conn.cert ? fs.readFileSync(conn.cert) : null,
ca: conn.ca ? fs.readFileSync(conn.ca) : null,
ciphers: conn.ciphers
};
}
const connection = ClientsFactory.getConnection({
2020-05-14 15:21:57 +02:00
client: conn.client,
2021-02-03 21:53:24 +01:00
params,
2020-10-01 15:08:35 +02:00
poolSize: 1
2020-05-14 15:21:57 +02:00
});
try {
await connection.connect();
2020-06-15 18:23:51 +02:00
const structure = await connection.getStructure(new Set());
connections[conn.uid] = connection;
2020-05-20 18:00:14 +02:00
return { status: 'success', response: structure };
}
catch (err) {
return { status: 'error', response: err.toString() };
}
2020-05-14 15:21:57 +02:00
});
2020-05-18 18:06:32 +02:00
ipcMain.handle('disconnect', (event, uid) => {
connections[uid].destroy();
delete connections[uid];
});
2020-05-14 15:21:57 +02:00
};