diff --git a/backend/src/services/arpService.ts b/backend/src/services/arpService.ts
index 3b211fa..27b4280 100644
--- a/backend/src/services/arpService.ts
+++ b/backend/src/services/arpService.ts
@@ -38,7 +38,7 @@ export default class PingService {
async addInfoGWAndTenantToDevices(arpData: any, contactedGW: any) {
const gwMacs = Object.keys(contactedGW);
- const leases = dnsService.getCurrentLeases();
+ const leases = Utilities.getCurrentLeases();
if (arpData) {
await Object.keys(arpData).forEach(async (interfaceKey: string) => {
const mac_addresses = arpData[interfaceKey].mac_addresses;
@@ -136,8 +136,8 @@ export default class PingService {
try {
const tenants = await tenantStore.findAll();
if (tenants) {
- // const tenantInterfaces = tenants.map((val: ITenant) => val.edge_interface_name);
- const tenantInterfaces: string[] = [cfg.arp.interface];
+ const tenantInterfaces = tenants.map((val: ITenant) => val.edge_interface_name);
+ // const tenantInterfaces: string[] = [cfg.arp.interface];
const promise = new Promise((resolve, reject) => {
let tbl: any = {};
diff --git a/backend/src/services/dnsService.ts b/backend/src/services/dnsService.ts
index 0b7e79b..a11d344 100644
--- a/backend/src/services/dnsService.ts
+++ b/backend/src/services/dnsService.ts
@@ -1,9 +1,6 @@
import _ = require('lodash');
import { ILease, IDevice, ITenant } from '../interfaces/interfaces';
const cfg = require('config');
-const fs = require('fs');
-const leases = require('dnsmasq-leases');
-const path = require('path');
import DeviceStore from '../stores/deviceStore';
import TenantStore from '../stores/tenantStore';
import { Utilities } from '../shared/utilities';
@@ -18,33 +15,38 @@ export default class DNSService {
async searchAndSaveNewLeases() {
try {
let prepareFileHost = "";
- let tenantRes = await tenantStore.findBy({ edge_interface_name: cfg.default_tenant });
- if (tenantRes && tenantRes.length == 1) {
- const tenant: ITenant = tenantRes[0];
- let leasesData = this.getCurrentLeases();
- if (leasesData) {
- for (let i = 0; i < leasesData.length; i++) {
- const val = leasesData[i];
- let device: IDevice = {
- mac_address: val.mac,
- tenant_id: tenant.id
- };
- const deviceRes = await deviceStore.findBy(device);
- let devicePersistent = null;
- if (deviceRes && deviceRes.length == 0) {
- device.dns_name_auto = val.host || "";
- await deviceStore.create(device);
- devicePersistent = device;
- } else {
- devicePersistent = deviceRes[0];
- }
- if (devicePersistent) {
- let dns_name = devicePersistent.dns_name_manual && devicePersistent.dns_name_manual != "" ? devicePersistent.dns_name_manual : devicePersistent.dns_name_auto;
- prepareFileHost = prepareFileHost + `${val.ip} ${dns_name}\n`;
- }
+ // const tenantRes = await tenantStore.findAll();
+ // let tenantRes = await tenantStore.findBy({ edge_interface_name: cfg.default_tenant });
+
+ // if (tenantRes) {
+ let leasesData = Utilities.getCurrentLeases();
+ // for (let i = 0; i < tenantRes.length; i++) {
+ // const tenant: ITenant = tenantRes[i];
+ if (leasesData) {
+ for (let j = 0; j < leasesData.length; j++) {
+ const val = leasesData[j];
+ let device: IDevice = {
+ mac_address: val.mac,
+ // tenant_id: tenant.id
+ };
+
+ const deviceRes = await deviceStore.findBy(device);
+ let devicePersistent = null;
+ if (deviceRes && deviceRes.length == 0) {
+ device.dns_name_auto = val.host || "";
+ await deviceStore.create(device);
+ devicePersistent = device;
+ } else {
+ devicePersistent = deviceRes[0];
+ }
+ if (devicePersistent) {
+ let dns_name = devicePersistent.dns_name_manual && devicePersistent.dns_name_manual != "" ? devicePersistent.dns_name_manual : devicePersistent.dns_name_auto;
+ prepareFileHost = prepareFileHost + `${val.ip} ${dns_name}\n`;
}
}
}
+ // }
+ // }
console.log("ContentFileHost", prepareFileHost);
let pathFileHost = cfg.path_file_host ? cfg.path_file_host : "myhostfile";
Utilities.writeFile(pathFileHost, prepareFileHost);
@@ -52,21 +54,4 @@ export default class DNSService {
console.log("ERROR", error);
}
}
-
- // il metodo legge il file relativo alle leases (es. dnsmasq.leases) e ritorna un array di oggetti
- // dove ogni oggetto ha come keys: mac, ip, host, timestamp
- getCurrentLeases() {
- try {
- let tmpDirectoryLeases = cfg.watcher && cfg.watcher.leases_path ? cfg.watcher.leases_path : path.join(__dirname, '../../src/leases');
- let leasesData = [];
- let data = fs.readFileSync(tmpDirectoryLeases, 'utf8');
- if (data) {
- leasesData = leases(data);
- }
- return leasesData;
- } catch (error) {
- console.log("ERROR", error);
- return null;
- }
- }
}
\ No newline at end of file
diff --git a/backend/src/shared/utilities.ts b/backend/src/shared/utilities.ts
index fd40823..1969852 100644
--- a/backend/src/shared/utilities.ts
+++ b/backend/src/shared/utilities.ts
@@ -1,5 +1,8 @@
import { IResultRequest } from "../interfaces/interfaces";
+const cfg = require('config');
+const leases = require('dnsmasq-leases');
const fs = require('fs');
+const path = require('path');
const request = require('request');
export class Utilities {
@@ -35,4 +38,22 @@ export class Utilities {
else console.log("file saved");
});
}
+
+ // il metodo legge il file relativo alle leases (es. dnsmasq.leases) e ritorna un array di oggetti
+ // dove ogni oggetto ha come keys: mac, ip, host, timestamp
+ static getCurrentLeases() {
+ try {
+ let tmpDirectoryLeases = cfg.watcher && cfg.watcher.leases_path ? cfg.watcher.leases_path : path.join(__dirname, '../../src/leases');
+ let leasesData = [];
+ let data = fs.readFileSync(tmpDirectoryLeases, 'utf8');
+ console.log("data", data);
+ if (data) {
+ leasesData = leases(data);
+ }
+ return leasesData;
+ } catch (error) {
+ console.log("ERROR", error);
+ return null;
+ }
+ }
}
\ No newline at end of file
diff --git a/backend/src/stores/deviceStore.ts b/backend/src/stores/deviceStore.ts
index 6ac4b93..58cb085 100644
--- a/backend/src/stores/deviceStore.ts
+++ b/backend/src/stores/deviceStore.ts
@@ -36,8 +36,9 @@ export default class DeviceStore {
getAll(options: ISearchOpt) {
return knex.raw(`SELECT *
FROM devices
- WHERE description LIKE '%${options.needle}%'
- OR edge_interface_name LIKE '%${options.needle}%'
+ WHERE mac_address LIKE '%${options.needle}%'
+ OR dns_name_auto LIKE '%${options.needle}%'
+ OR dns_name_manual LIKE '%${options.needle}%'
ORDER BY created_at DESC
LIMIT ${options.itemsPerPage}
OFFSET ${(options.itemsPerPage * (options.activePage - 1))}`
diff --git a/frontend/src/components/forms/DNSForm.tsx b/frontend/src/components/forms/DNSForm.tsx
index c514b43..8f19f15 100644
--- a/frontend/src/components/forms/DNSForm.tsx
+++ b/frontend/src/components/forms/DNSForm.tsx
@@ -1,7 +1,7 @@
import React, { useState } from 'react';
import DNSBaseComponent from '../dnsBaseComponent';
-import { Grid, Input, Button, Container, Segment, Card, Image, Form } from 'semantic-ui-react';
+import { Grid, Input, Button, Container, Segment, Card, Image, Form, Icon } from 'semantic-ui-react';
import { history } from '../../main';
import _ from 'lodash';
import { Link } from 'react-router-dom';
@@ -11,7 +11,7 @@ import DeviceApi from './../../api/deviceApi';
const DNSForm = () => {
const [mac_address, setMacAddress] = useState('');
const [dns_name_manual, setDnsNameManual] = useState('');
-
+
async function submit() {
try {
@@ -33,6 +33,12 @@ const DNSForm = () => {
return (
<>
+
Aggiungi elemento