From 2fa4ab9b128eef35e0b1a465de80bcb364822314 Mon Sep 17 00:00:00 2001 From: JOLIMAITRE Matthieu Date: Sun, 4 Feb 2024 02:47:42 +0100 Subject: [PATCH 1/2] fix nginx conf linking failing --- instance/src/lib/nginx.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/instance/src/lib/nginx.ts b/instance/src/lib/nginx.ts index 64c3dc3..6df2c59 100644 --- a/instance/src/lib/nginx.ts +++ b/instance/src/lib/nginx.ts @@ -24,6 +24,7 @@ server { const conf_file_path = path.join(conf_dir, domain + ".conf"); const enabled_conf_file_path = path.join(this.enabled_conf_dir, domain + ".conf"); await Deno.writeTextFile(conf_file_path, conf_file_content); + await Deno.remove(enabled_conf_file_path, { recursive: true }); await run("ln", "-s", await Deno.realPath(conf_file_path), enabled_conf_file_path); await this.reload(); return conf_file_path; From 6c0038b421f73c66281a0e486387d493f69d220f Mon Sep 17 00:00:00 2001 From: JOLIMAITRE Matthieu Date: Sun, 4 Feb 2024 02:58:09 +0100 Subject: [PATCH 2/2] fixes leftover container --- instance/src/lib.ts | 10 +++++----- instance/src/lib/nginx.ts | 4 ++-- instance/src/lib/nspawn.ts | 10 +++++++++- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/instance/src/lib.ts b/instance/src/lib.ts index 7e172c4..d677807 100644 --- a/instance/src/lib.ts +++ b/instance/src/lib.ts @@ -1,11 +1,10 @@ export type { Base, BaseContext } from "./lib/create.ts"; import { toText } from "https://deno.land/std@0.208.0/streams/to_text.ts"; -import { lines, log_from, loop_process, run } from "./lib/utils.ts"; +import { lines, log_from, loop_process, LoopProcess, run } from "./lib/utils.ts"; import { ContainerConfig } from "./lib/config.ts"; import { container_paths } from "./lib/paths.ts"; -import { container_command } from "./lib/nspawn.ts"; -import { LoopProcess } from "./lib/utils.ts"; +import { container_command, stop_container } from "./lib/nspawn.ts"; import { NginxController } from "./lib/nginx.ts"; const log = log_from("lib"); @@ -81,8 +80,9 @@ export class Runner { this.loop = null as LoopProcess | null; } - start() { - this.update_proxies(); + async start() { + await stop_container(this.name); + await this.update_proxies(); this.start_process(); } diff --git a/instance/src/lib/nginx.ts b/instance/src/lib/nginx.ts index 6df2c59..52c6892 100644 --- a/instance/src/lib/nginx.ts +++ b/instance/src/lib/nginx.ts @@ -1,4 +1,4 @@ -import { run } from "./utils.ts"; +import { exists, run } from "./utils.ts"; import * as path from "https://deno.land/std@0.214.0/path/mod.ts"; export class NginxController { @@ -24,7 +24,7 @@ server { const conf_file_path = path.join(conf_dir, domain + ".conf"); const enabled_conf_file_path = path.join(this.enabled_conf_dir, domain + ".conf"); await Deno.writeTextFile(conf_file_path, conf_file_content); - await Deno.remove(enabled_conf_file_path, { recursive: true }); + if (await exists(enabled_conf_file_path)) await Deno.remove(enabled_conf_file_path); await run("ln", "-s", await Deno.realPath(conf_file_path), enabled_conf_file_path); await this.reload(); return conf_file_path; diff --git a/instance/src/lib/nspawn.ts b/instance/src/lib/nspawn.ts index 12b76ca..cbdf80f 100644 --- a/instance/src/lib/nspawn.ts +++ b/instance/src/lib/nspawn.ts @@ -1,6 +1,6 @@ // wrapper -import { log_from, sleep } from "./utils.ts"; +import { log_from, run, sleep } from "./utils.ts"; import { ContainerConfigRedirection } from "./config.ts"; const log = log_from("nspawn"); @@ -30,6 +30,14 @@ export function container_command(name: string, directory: string, opts?: { return command; } +export async function stop_container(name: string) { + try { + await run("machinectl", "stop", name); + } catch (_) { + // + } +} + export async function get_container_addresses(name: string) { const command = new Deno.Command("machinectl", { args: ["status", name], stdout: "piped" }); while (true) {