Change execSync/spawnSync to async (#4123)

* WIP

* Add missing await

* Update package-lock.json
This commit is contained in:
Louis Lam 2023-11-30 16:12:04 +08:00 committed by GitHub
parent 73239d441d
commit 1708b67949
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 23 additions and 16 deletions

9
package-lock.json generated
View File

@ -63,6 +63,7 @@
"playwright-core": "~1.35.1", "playwright-core": "~1.35.1",
"prom-client": "~13.2.0", "prom-client": "~13.2.0",
"prometheus-api-metrics": "~3.2.1", "prometheus-api-metrics": "~3.2.1",
"promisify-child-process": "~4.1.2",
"protobufjs": "~7.2.4", "protobufjs": "~7.2.4",
"qs": "~6.10.4", "qs": "~6.10.4",
"redbean-node": "~0.3.0", "redbean-node": "~0.3.0",
@ -15751,6 +15752,14 @@
"node": ">=10" "node": ">=10"
} }
}, },
"node_modules/promisify-child-process": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/promisify-child-process/-/promisify-child-process-4.1.2.tgz",
"integrity": "sha512-APnkIgmaHNJpkAn7k+CrJSi9WMuff5ctYFbD0CO2XIPkM8yO7d/ShouU2clywbpHV/DUsyc4bpJCsNgddNtx4g==",
"engines": {
"node": ">=8"
}
},
"node_modules/prompts": { "node_modules/prompts": {
"version": "2.4.2", "version": "2.4.2",
"resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",

View File

@ -130,6 +130,7 @@
"playwright-core": "~1.35.1", "playwright-core": "~1.35.1",
"prom-client": "~13.2.0", "prom-client": "~13.2.0",
"prometheus-api-metrics": "~3.2.1", "prometheus-api-metrics": "~3.2.1",
"promisify-child-process": "~4.1.2",
"protobufjs": "~7.2.4", "protobufjs": "~7.2.4",
"qs": "~6.10.4", "qs": "~6.10.4",
"redbean-node": "~0.3.0", "redbean-node": "~0.3.0",

View File

@ -1,6 +1,6 @@
const { MonitorType } = require("./monitor-type"); const { MonitorType } = require("./monitor-type");
const { UP } = require("../../src/util"); const { UP } = require("../../src/util");
const childProcess = require("child_process"); const childProcessAsync = require("promisify-child-process");
/** /**
* A TailscalePing class extends the MonitorType. * A TailscalePing class extends the MonitorType.
@ -38,12 +38,9 @@ class TailscalePing extends MonitorType {
*/ */
async runTailscalePing(hostname, interval) { async runTailscalePing(hostname, interval) {
let timeout = interval * 1000 * 0.8; let timeout = interval * 1000 * 0.8;
let res = childProcess.spawnSync("tailscale", [ "ping", hostname ], { let res = await childProcessAsync.spawn("tailscale", [ "ping", "--c", "1", hostname ], {
timeout: timeout timeout: timeout
}); });
if (res.error) {
throw new Error(`Execution error: ${res.error.message}`);
}
if (res.stderr && res.stderr.toString()) { if (res.stderr && res.stderr.toString()) {
throw new Error(`Error in output: ${res.stderr.toString()}`); throw new Error(`Error in output: ${res.stderr.toString()}`);
} }

View File

@ -1,5 +1,5 @@
const NotificationProvider = require("./notification-provider"); const NotificationProvider = require("./notification-provider");
const childProcess = require("child_process"); const childProcessAsync = require("promisify-child-process");
class Apprise extends NotificationProvider { class Apprise extends NotificationProvider {
@ -11,7 +11,7 @@ class Apprise extends NotificationProvider {
args.push("-t"); args.push("-t");
args.push(notification.title); args.push(notification.title);
} }
const s = childProcess.spawnSync("apprise", args); const s = await childProcessAsync.spawn("apprise", args);
const output = (s.stdout) ? s.stdout.toString() : "ERROR: maybe apprise not found"; const output = (s.stdout) ? s.stdout.toString() : "ERROR: maybe apprise not found";

View File

@ -1223,9 +1223,9 @@ let needSetup = false;
// Update nscd status // Update nscd status
if (previousNSCDStatus !== data.nscd) { if (previousNSCDStatus !== data.nscd) {
if (data.nscd) { if (data.nscd) {
server.startNSCDServices(); await server.startNSCDServices();
} else { } else {
server.stopNSCDServices(); await server.stopNSCDServices();
} }
} }

View File

@ -10,7 +10,7 @@ const util = require("util");
const { CacheableDnsHttpAgent } = require("./cacheable-dns-http-agent"); const { CacheableDnsHttpAgent } = require("./cacheable-dns-http-agent");
const { Settings } = require("./settings"); const { Settings } = require("./settings");
const dayjs = require("dayjs"); const dayjs = require("dayjs");
const childProcess = require("child_process"); const childProcessAsync = require("promisify-child-process");
const path = require("path"); const path = require("path");
// DO NOT IMPORT HERE IF THE MODULES USED `UptimeKumaServer.getInstance()`, put at the bottom of this file instead. // DO NOT IMPORT HERE IF THE MODULES USED `UptimeKumaServer.getInstance()`, put at the bottom of this file instead.
@ -344,7 +344,7 @@ class UptimeKumaServer {
let enable = await Settings.get("nscd"); let enable = await Settings.get("nscd");
if (enable || enable === null) { if (enable || enable === null) {
this.startNSCDServices(); await this.startNSCDServices();
} }
} }
@ -356,7 +356,7 @@ class UptimeKumaServer {
let enable = await Settings.get("nscd"); let enable = await Settings.get("nscd");
if (enable || enable === null) { if (enable || enable === null) {
this.stopNSCDServices(); await this.stopNSCDServices();
} }
} }
@ -364,11 +364,11 @@ class UptimeKumaServer {
* Start all system services (e.g. nscd) * Start all system services (e.g. nscd)
* For now, only used in Docker * For now, only used in Docker
*/ */
startNSCDServices() { async startNSCDServices() {
if (process.env.UPTIME_KUMA_IS_CONTAINER) { if (process.env.UPTIME_KUMA_IS_CONTAINER) {
try { try {
log.info("services", "Starting nscd"); log.info("services", "Starting nscd");
childProcess.execSync("sudo service nscd start", { stdio: "pipe" }); await childProcessAsync.exec("sudo service nscd start");
} catch (e) { } catch (e) {
log.info("services", "Failed to start nscd"); log.info("services", "Failed to start nscd");
} }
@ -378,11 +378,11 @@ class UptimeKumaServer {
/** /**
* Stop all system services * Stop all system services
*/ */
stopNSCDServices() { async stopNSCDServices() {
if (process.env.UPTIME_KUMA_IS_CONTAINER) { if (process.env.UPTIME_KUMA_IS_CONTAINER) {
try { try {
log.info("services", "Stopping nscd"); log.info("services", "Stopping nscd");
childProcess.execSync("sudo service nscd stop"); await childProcessAsync.exec("sudo service nscd stop");
} catch (e) { } catch (e) {
log.info("services", "Failed to stop nscd"); log.info("services", "Failed to stop nscd");
} }