From 88f53948b2ae25d09ebf70282fcd8ea3c5f4e23e Mon Sep 17 00:00:00 2001 From: Aarnav Tale Date: Sat, 26 Apr 2025 17:50:07 -0400 Subject: [PATCH] fix: when not using dns_records_path, use config dns editor --- app/server/headscale/config-dns.ts | 2 +- app/server/headscale/config-loader.ts | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/app/server/headscale/config-dns.ts b/app/server/headscale/config-dns.ts index 713ca6c..832dafd 100644 --- a/app/server/headscale/config-dns.ts +++ b/app/server/headscale/config-dns.ts @@ -77,7 +77,7 @@ export class HeadscaleDNSConfig { export async function loadHeadscaleDNS(path?: string) { if (!path) { - return new HeadscaleDNSConfig('no'); + return; } log.debug('config', 'Loading Headscale DNS configuration file: %s', path); diff --git a/app/server/headscale/config-loader.ts b/app/server/headscale/config-loader.ts index 11fb05e..ad8e930 100644 --- a/app/server/headscale/config-loader.ts +++ b/app/server/headscale/config-loader.ts @@ -1,4 +1,5 @@ import { constants, access, readFile, writeFile } from 'node:fs/promises'; +import { exit } from 'node:process'; import { setTimeout } from 'node:timers/promises'; import { type } from 'arktype'; import { Document, parseDocument } from 'yaml'; @@ -269,6 +270,23 @@ export async function loadHeadscaleConfig( } const dns = await loadHeadscaleDNS(dnsPath); + if (dns && !config.dns.extra_records_path) { + log.error( + 'config', + 'Using separate DNS config file but dns.extra_records_path is not set in Headscale config', + ); + log.error( + 'config', + 'Please set `dns.extra_records_path` in the Headscale config', + ); + log.error( + 'config', + 'Or remove `headscale.dns_records_path` from the Headplane config', + ); + + exit(1); + } + return new HeadscaleConfig(w ? 'rw' : 'ro', dns, config, document, path); }