diff --git a/server/lib/readConfigFile.ts b/server/lib/readConfigFile.ts index 5071edc8..b9f90d46 100644 --- a/server/lib/readConfigFile.ts +++ b/server/lib/readConfigFile.ts @@ -161,7 +161,7 @@ export const configSchema = z .default({}), gerbil: z .object({ - exit_node_name: z.string().optional().default("default"), + exit_node_name: z.string().optional(), start_port: portSchema .optional() .default(51820) diff --git a/server/routers/gerbil/getConfig.ts b/server/routers/gerbil/getConfig.ts index 60340ede..601f7655 100644 --- a/server/routers/gerbil/getConfig.ts +++ b/server/routers/gerbil/getConfig.ts @@ -68,6 +68,10 @@ export async function getConfig( subEndpoint = await getUniqueExitNodeEndpointName(); } + const exitNodeName = + config.getRawConfig().gerbil.exit_node_name || + `Exit Node ${publicKey.slice(0, 8)}`; + // create a new exit node exitNode = await db .insert(exitNodes) @@ -77,7 +81,7 @@ export async function getConfig( address, listenPort, reachableAt, - name: config.getRawConfig().gerbil.exit_node_name // defaults to "default" + name: exitNodeName }) .returning() .execute(); diff --git a/server/setup/copyInConfig.ts b/server/setup/copyInConfig.ts index e375211c..055e85eb 100644 --- a/server/setup/copyInConfig.ts +++ b/server/setup/copyInConfig.ts @@ -106,13 +106,19 @@ export async function copyInConfig() { }); const exitNodeName = config.getRawConfig().gerbil.exit_node_name; - - await db - .update(exitNodes) - .set({ endpoint }) - .where(eq(exitNodes.name, exitNodeName)); - await db - .update(exitNodes) - .set({ listenPort }) - .where(eq(exitNodes.name, exitNodeName)); + if (exitNodeName) { + await db + .update(exitNodes) + .set({ endpoint, listenPort }) + .where(eq(exitNodes.name, exitNodeName)); + } else { + await db + .update(exitNodes) + .set({ endpoint }) + .where(ne(exitNodes.endpoint, endpoint)); + await db + .update(exitNodes) + .set({ listenPort }) + .where(ne(exitNodes.listenPort, listenPort)); + } }