From a993908ebc1df2812a82b64915a21ae9e2aa2075 Mon Sep 17 00:00:00 2001 From: Giorgi Lekveishvili Date: Sun, 27 Apr 2025 08:20:41 +0400 Subject: [PATCH] fix: improve headscale proc detection Check if command line also includes 'serve'. Move command line processing logic into a helper function. --- app/server/config/integration/cmdline.ts | 3 +++ app/server/config/integration/kubernetes.ts | 3 ++- app/server/config/integration/proc.ts | 3 ++- 3 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 app/server/config/integration/cmdline.ts diff --git a/app/server/config/integration/cmdline.ts b/app/server/config/integration/cmdline.ts new file mode 100644 index 0000000..d9d4ab8 --- /dev/null +++ b/app/server/config/integration/cmdline.ts @@ -0,0 +1,3 @@ +export function isHeadscaleServeCmd(cmdline: string): boolean { + return cmdline.includes('headscale') && cmdline.includes("serve"); +} diff --git a/app/server/config/integration/kubernetes.ts b/app/server/config/integration/kubernetes.ts index 707088c..2533ed9 100644 --- a/app/server/config/integration/kubernetes.ts +++ b/app/server/config/integration/kubernetes.ts @@ -8,6 +8,7 @@ import { ApiClient } from '~/server/headscale/api-client'; import log from '~/utils/log'; import { HeadplaneConfig } from '../schema'; import { Integration } from './abstract'; +import { isHeadscaleServeCmd } from './cmdline.ts'; // TODO: Upgrade to the new CoreV1Api from @kubernetes/client-node type T = NonNullable['kubernetes']; @@ -162,7 +163,7 @@ export default class KubernetesIntegration extends Integration { try { log.debug('config', 'Reading %s', path); const data = await readFile(path, 'utf8'); - if (data.includes('headscale')) { + if (isHeadscaleServeCmd(data)) { return pid; } } catch (error) { diff --git a/app/server/config/integration/proc.ts b/app/server/config/integration/proc.ts index 7bcaf03..8538316 100644 --- a/app/server/config/integration/proc.ts +++ b/app/server/config/integration/proc.ts @@ -7,6 +7,7 @@ import { ApiClient } from '~/server/headscale/api-client'; import log from '~/utils/log'; import { HeadplaneConfig } from '../schema'; import { Integration } from './abstract'; +import { isHeadscaleServeCmd } from './cmdline.ts'; type T = NonNullable['proc']; export default class ProcIntegration extends Integration { @@ -38,7 +39,7 @@ export default class ProcIntegration extends Integration { try { log.debug('config', 'Reading %s', path); const data = await readFile(path, 'utf8'); - if (data.includes('headscale')) { + if (isHeadscaleServeCmd(data)) { return pid; } } catch (error) {