Move ping code to own file

This commit is contained in:
Zaid Abdulla committed 2019-10-21 22:58:22 -07:00
1 parent 0e02b7c7ea
commit 77563fc85e
4 files changed
+104 -49

No files matched your search

-34
View File
@@ -17,7 +17,6 @@
* along with GenieACS. If not, see <http://www.gnu.org/licenses/>.
*/
import { exec } from "child_process";
import { ObjectID } from "mongodb";
import * as db from "./db";
import { del } from "../cache";
@@ -29,17 +28,6 @@ import {
connectionRequest,
deleteDevice
} from "../api-functions";
import * as os from "os";
function pingVariant(): string {
return os.platform() === "freebsd" ? "-t 1 -c 3" : "-w 1 -i 0.2 -c 3";
}
function pingOutRegex(): RegExp {
return os.platform() === "freebsd"
? /(\d) packets transmitted, (\d) packets received, ([\d.%]+) packet loss\nround-trip min\/avg\/max\/stddev = ([\d.]+)\/([\d.]+)\/([\d.]+)\/([\d.]+) ms/
: /(\d) packets transmitted, (\d) received, ([\d.%]+) packet loss[^]*([\d.]+)\/([\d.]+)\/([\d.]+)\/([\d.]+)/;
}
async function deleteFault(id): Promise<void> {
const deviceId = id.split(":", 1)[0];
@@ -160,28 +148,6 @@ interface PingResponse {
mdev: number;
}
export function ping(host): Promise<PingResponse> {
return new Promise((resolve, reject) => {
const pingArgs = pingVariant();
exec(`ping ${pingArgs} ${host}`, (err, stdout) => {
if (err) return void reject(err);
const m = stdout.match(pingOutRegex());
if (!m) return void reject(new Error("Could not parse ping response"));
resolve({
packetsTransmitted: +m[1],
packetsReceived: +m[2],
packetLoss: m[3],
min: +m[4],
avg: +m[5],
max: +m[6],
mdev: +m[7]
});
});
});
}
export async function putResource(resource, id, data): Promise<void> {
if (resource === "presets") {
await db.putPreset(id, data);