add exit node name and fix db import issues

This commit is contained in:
miloschwartz 2025-06-15 17:49:27 -04:00
parent d46b9eaf87
commit b39708700d
No known key found for this signature in database
24 changed files with 39 additions and 38 deletions

View file

@ -2,8 +2,8 @@ import {
encodeHexLowerCase, encodeHexLowerCase,
} from "@oslojs/encoding"; } from "@oslojs/encoding";
import { sha256 } from "@oslojs/crypto/sha2"; import { sha256 } from "@oslojs/crypto/sha2";
import { Olm, olms, olmSessions, OlmSession } from "@server/db/schemas"; import { Olm, olms, olmSessions, OlmSession } from "@server/db";
import db from "@server/db"; import { db } from "@server/db";
import { eq } from "drizzle-orm"; import { eq } from "drizzle-orm";
export const EXPIRES = 1000 * 60 * 60 * 24 * 30; export const EXPIRES = 1000 * 60 * 60 * 24 * 30;

View file

@ -1,5 +1,5 @@
import { migrate } from "drizzle-orm/node-postgres/migrator"; import { migrate } from "drizzle-orm/node-postgres/migrator";
import db from "./driver"; import { db } from "./driver";
import path from "path"; import path from "path";
const migrationsFolder = path.join("server/migrations"); const migrationsFolder = path.join("server/migrations");

View file

@ -1,5 +1,5 @@
import { migrate } from "drizzle-orm/better-sqlite3/migrator"; import { migrate } from "drizzle-orm/better-sqlite3/migrator";
import db from "./driver"; import { db } from "./driver";
import path from "path"; import path from "path";
const migrationsFolder = path.join("server/migrations"); const migrationsFolder = path.join("server/migrations");

View file

@ -1,5 +1,5 @@
import db from "@server/db"; import { db } from "@server/db";
import { clients, orgs, sites } from "@server/db/schemas"; import { clients, orgs, sites } from "@server/db";
import { and, eq, isNotNull } from "drizzle-orm"; import { and, eq, isNotNull } from "drizzle-orm";
import config from "@server/lib/config"; import config from "@server/lib/config";

View file

@ -161,6 +161,7 @@ export const configSchema = z
.default({}), .default({}),
gerbil: z gerbil: z
.object({ .object({
exit_node_name: z.string().optional().default("default"),
start_port: portSchema start_port: portSchema
.optional() .optional()
.default(51820) .default(51820)

View file

@ -1,6 +1,6 @@
import { Request, Response, NextFunction } from "express"; import { Request, Response, NextFunction } from "express";
import { db } from "@server/db"; import { db } from "@server/db";
import { userOrgs, clients, roleClients, userClients } from "@server/db/schemas"; import { userOrgs, clients, roleClients, userClients } from "@server/db";
import { and, eq } from "drizzle-orm"; import { and, eq } from "drizzle-orm";
import createHttpError from "http-errors"; import createHttpError from "http-errors";
import HttpCode from "@server/types/HttpCode"; import HttpCode from "@server/types/HttpCode";

View file

@ -12,7 +12,7 @@ import {
exitNodes, exitNodes,
orgs, orgs,
sites sites
} from "@server/db/schemas"; } from "@server/db";
import response from "@server/lib/response"; import response from "@server/lib/response";
import HttpCode from "@server/types/HttpCode"; import HttpCode from "@server/types/HttpCode";
import createHttpError from "http-errors"; import createHttpError from "http-errors";

View file

@ -1,7 +1,7 @@
import { Request, Response, NextFunction } from "express"; import { Request, Response, NextFunction } from "express";
import { z } from "zod"; import { z } from "zod";
import { db } from "@server/db"; import { db } from "@server/db";
import { clients, clientSites } from "@server/db/schemas"; import { clients, clientSites } from "@server/db";
import { eq } from "drizzle-orm"; import { eq } from "drizzle-orm";
import response from "@server/lib/response"; import response from "@server/lib/response";
import HttpCode from "@server/types/HttpCode"; import HttpCode from "@server/types/HttpCode";

View file

@ -1,7 +1,7 @@
import { Request, Response, NextFunction } from "express"; import { Request, Response, NextFunction } from "express";
import { z } from "zod"; import { z } from "zod";
import { db } from "@server/db"; import { db } from "@server/db";
import { clients, clientSites } from "@server/db/schemas"; import { clients, clientSites } from "@server/db";
import { eq, and } from "drizzle-orm"; import { eq, and } from "drizzle-orm";
import response from "@server/lib/response"; import response from "@server/lib/response";
import HttpCode from "@server/types/HttpCode"; import HttpCode from "@server/types/HttpCode";

View file

@ -6,7 +6,7 @@ import {
sites, sites,
userClients, userClients,
clientSites clientSites
} from "@server/db/schemas"; } from "@server/db";
import logger from "@server/logger"; import logger from "@server/logger";
import HttpCode from "@server/types/HttpCode"; import HttpCode from "@server/types/HttpCode";
import response from "@server/lib/response"; import response from "@server/lib/response";

View file

@ -1,7 +1,7 @@
import { Request, Response, NextFunction } from "express"; import { Request, Response, NextFunction } from "express";
import { z } from "zod"; import { z } from "zod";
import { db } from "@server/db"; import { db } from "@server/db";
import { clients, clientSites } from "@server/db/schemas"; import { clients, clientSites } from "@server/db";
import response from "@server/lib/response"; import response from "@server/lib/response";
import HttpCode from "@server/types/HttpCode"; import HttpCode from "@server/types/HttpCode";
import createHttpError from "http-errors"; import createHttpError from "http-errors";

View file

@ -1,6 +1,6 @@
import { Request, Response, NextFunction } from "express"; import { Request, Response, NextFunction } from "express";
import { z } from "zod"; import { z } from "zod";
import { clients, exitNodes, newts, olms, Site, sites, clientSites } from "@server/db/schemas"; import { clients, exitNodes, newts, olms, Site, sites, clientSites } from "@server/db";
import { db } from "@server/db"; import { db } from "@server/db";
import { eq } from "drizzle-orm"; import { eq } from "drizzle-orm";
import HttpCode from "@server/types/HttpCode"; import HttpCode from "@server/types/HttpCode";

View file

@ -53,7 +53,7 @@ export async function getConfig(
} }
// Fetch exit node // Fetch exit node
let exitNodeQuery = await db const exitNodeQuery = await db
.select() .select()
.from(exitNodes) .from(exitNodes)
.where(eq(exitNodes.publicKey, publicKey)); .where(eq(exitNodes.publicKey, publicKey));
@ -77,7 +77,7 @@ export async function getConfig(
address, address,
listenPort, listenPort,
reachableAt, reachableAt,
name: `Exit Node ${publicKey.slice(0, 8)}` name: config.getRawConfig().gerbil.exit_node_name // defaults to "default"
}) })
.returning() .returning()
.execute(); .execute();

View file

@ -1,6 +1,6 @@
import { Request, Response, NextFunction } from "express"; import { Request, Response, NextFunction } from "express";
import { z } from "zod"; import { z } from "zod";
import { clients, newts, olms, Site, sites, clientSites } from "@server/db/schemas"; import { clients, newts, olms, Site, sites, clientSites } from "@server/db";
import { db } from "@server/db"; import { db } from "@server/db";
import { eq } from "drizzle-orm"; import { eq } from "drizzle-orm";
import HttpCode from "@server/types/HttpCode"; import HttpCode from "@server/types/HttpCode";

View file

@ -2,8 +2,8 @@ import { z } from "zod";
import { MessageHandler } from "../ws"; import { MessageHandler } from "../ws";
import logger from "@server/logger"; import logger from "@server/logger";
import { fromError } from "zod-validation-error"; import { fromError } from "zod-validation-error";
import db from "@server/db"; import { db } from "@server/db";
import { clients, clientSites, Newt, sites } from "@server/db/schemas"; import { clients, clientSites, Newt, sites } from "@server/db";
import { eq } from "drizzle-orm"; import { eq } from "drizzle-orm";
import { updatePeer } from "../olm/peers"; import { updatePeer } from "../olm/peers";

View file

@ -1,6 +1,6 @@
import db from "@server/db"; import { db } from "@server/db";
import { MessageHandler } from "../ws"; import { MessageHandler } from "../ws";
import { clients, Newt } from "@server/db/schemas"; import { clients, Newt } from "@server/db";
import { eq } from "drizzle-orm"; import { eq } from "drizzle-orm";
import logger from "@server/logger"; import logger from "@server/logger";

View file

@ -1,5 +1,5 @@
import db from "@server/db"; import { db } from "@server/db";
import { newts, sites } from "@server/db/schemas"; import { newts, sites } from "@server/db";
import { eq } from "drizzle-orm"; import { eq } from "drizzle-orm";
import { sendToClient } from "../ws"; import { sendToClient } from "../ws";
import logger from "@server/logger"; import logger from "@server/logger";

View file

@ -1,9 +1,9 @@
import { NextFunction, Request, Response } from "express"; import { NextFunction, Request, Response } from "express";
import db from "@server/db"; import { db } from "@server/db";
import { hash } from "@node-rs/argon2"; import { hash } from "@node-rs/argon2";
import HttpCode from "@server/types/HttpCode"; import HttpCode from "@server/types/HttpCode";
import { z } from "zod"; import { z } from "zod";
import { newts } from "@server/db/schemas"; import { newts } from "@server/db";
import createHttpError from "http-errors"; import createHttpError from "http-errors";
import response from "@server/lib/response"; import response from "@server/lib/response";
import { SqliteError } from "better-sqlite3"; import { SqliteError } from "better-sqlite3";

View file

@ -1,6 +1,6 @@
import { generateSessionToken } from "@server/auth/sessions/app"; import { generateSessionToken } from "@server/auth/sessions/app";
import db from "@server/db"; import { db } from "@server/db";
import { olms } from "@server/db/schemas"; import { olms } from "@server/db";
import HttpCode from "@server/types/HttpCode"; import HttpCode from "@server/types/HttpCode";
import response from "@server/lib/response"; import response from "@server/lib/response";
import { eq } from "drizzle-orm"; import { eq } from "drizzle-orm";

View file

@ -1,6 +1,6 @@
import db from "@server/db"; import { db } from "@server/db";
import { MessageHandler } from "../ws"; import { MessageHandler } from "../ws";
import { clients, Olm } from "@server/db/schemas"; import { clients, Olm } from "@server/db";
import { eq, lt, isNull } from "drizzle-orm"; import { eq, lt, isNull } from "drizzle-orm";
import logger from "@server/logger"; import logger from "@server/logger";

View file

@ -1,4 +1,4 @@
import db from "@server/db"; import { db } from "@server/db";
import { MessageHandler } from "../ws"; import { MessageHandler } from "../ws";
import { import {
clients, clients,
@ -7,7 +7,7 @@ import {
Olm, Olm,
olms, olms,
sites sites
} from "@server/db/schemas"; } from "@server/db";
import { eq, inArray } from "drizzle-orm"; import { eq, inArray } from "drizzle-orm";
import { addPeer, deletePeer } from "../newt/peers"; import { addPeer, deletePeer } from "../newt/peers";
import logger from "@server/logger"; import logger from "@server/logger";

View file

@ -1,6 +1,6 @@
import db from "@server/db"; import { db } from "@server/db";
import { MessageHandler } from "../ws"; import { MessageHandler } from "../ws";
import { clients, clientSites, Olm } from "@server/db/schemas"; import { clients, clientSites, Olm } from "@server/db";
import { eq } from "drizzle-orm"; import { eq } from "drizzle-orm";
import { updatePeer } from "../newt/peers"; import { updatePeer } from "../newt/peers";
import logger from "@server/logger"; import logger from "@server/logger";

View file

@ -1,5 +1,5 @@
import db from "@server/db"; import { db } from "@server/db";
import { clients, olms, newts, sites } from "@server/db/schemas"; import { clients, olms, newts, sites } from "@server/db";
import { eq } from "drizzle-orm"; import { eq } from "drizzle-orm";
import { sendToClient } from "../ws"; import { sendToClient } from "../ws";
import logger from "@server/logger"; import logger from "@server/logger";

View file

@ -105,14 +105,14 @@ export async function copyInConfig() {
} }
}); });
// TODO: eventually each exit node could have a different endpoint const exitNodeName = config.getRawConfig().gerbil.exit_node_name;
await db await db
.update(exitNodes) .update(exitNodes)
.set({ endpoint }) .set({ endpoint })
.where(ne(exitNodes.endpoint, endpoint)); .where(eq(exitNodes.name, exitNodeName));
// TODO: eventually each exit node could have a different port
await db await db
.update(exitNodes) .update(exitNodes)
.set({ listenPort }) .set({ listenPort })
.where(ne(exitNodes.listenPort, listenPort)); .where(eq(exitNodes.name, exitNodeName));
} }