Merge branch 'dev' into clients-pops

This commit is contained in:
Owen
2025-06-10 13:00:20 -04:00
282 changed files with 6489 additions and 3540 deletions

View File

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

View File

@@ -0,0 +1,22 @@
import NodeCache from "node-cache";
import { sendToClient } from "../ws";
export const dockerSocketCache = new NodeCache({
stdTTL: 3600 // seconds
});
export function fetchContainers(newtId: string) {
const payload = {
type: `newt/socket/fetch`,
data: {}
};
sendToClient(newtId, payload);
}
export function dockerSocket(newtId: string) {
const payload = {
type: `newt/socket/check`,
data: {}
};
sendToClient(newtId, payload);
}

View File

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

View File

@@ -1,4 +1,4 @@
import db from "@server/db";
import { db } from "@server/db";
import { MessageHandler } from "../ws";
import {
exitNodes,
@@ -7,7 +7,7 @@ import {
sites,
Target,
targets
} from "@server/db/schemas";
} from "@server/db";
import { eq, and, sql, inArray } from "drizzle-orm";
import { addPeer, deletePeer } from "../gerbil/peers";
import logger from "@server/logger";

View File

@@ -0,0 +1,57 @@
import { MessageHandler } from "../ws";
import logger from "@server/logger";
import { dockerSocketCache } from "./dockerSocket";
export const handleDockerStatusMessage: MessageHandler = async (context) => {
const { message, newt } = context;
logger.info("Handling Docker socket check response");
if (!newt) {
logger.warn("Newt not found");
return;
}
logger.info(`Newt ID: ${newt.newtId}, Site ID: ${newt.siteId}`);
const { available, socketPath } = message.data;
logger.info(
`Docker socket availability for Newt ${newt.newtId}: available=${available}, socketPath=${socketPath}`
);
if (available) {
logger.info(`Newt ${newt.newtId} has Docker socket access`);
dockerSocketCache.set(`${newt.newtId}:socketPath`, socketPath, 0);
dockerSocketCache.set(`${newt.newtId}:isAvailable`, available, 0);
} else {
logger.warn(`Newt ${newt.newtId} does not have Docker socket access`);
}
return;
};
export const handleDockerContainersMessage: MessageHandler = async (
context
) => {
const { message, newt } = context;
logger.info("Handling Docker containers response");
if (!newt) {
logger.warn("Newt not found");
return;
}
logger.info(`Newt ID: ${newt.newtId}, Site ID: ${newt.siteId}`);
const { containers } = message.data;
logger.info(
`Docker containers for Newt ${newt.newtId}: ${containers ? containers.length : 0}`
);
if (containers && containers.length > 0) {
dockerSocketCache.set(`${newt.newtId}:dockerContainers`, containers, 0);
} else {
logger.warn(`Newt ${newt.newtId} does not have Docker containers`);
}
};

View File

@@ -2,4 +2,5 @@ export * from "./createNewt";
export * from "./getNewtToken";
export * from "./handleNewtRegisterMessage";
export * from "./handleReceiveBandwidthMessage";
export * from "./handleGetConfigMessage";
export * from "./handleGetConfigMessage";
export * from "./handleSocketMessages";

View File

@@ -1,4 +1,4 @@
import { Target } from "@server/db/schemas";
import { Target } from "@server/db";
import { sendToClient } from "../ws";
export function addTargets(