Fixing stuff

This commit is contained in:
Owen Schwartz 2024-10-14 21:59:35 -04:00
parent 0599421975
commit d3b3667b72
No known key found for this signature in database
GPG key ID: 8271FDFFD9E0CCBD
5 changed files with 1765 additions and 382 deletions

File diff suppressed because it is too large Load diff

18
server/db/names.ts Normal file
View file

@ -0,0 +1,18 @@
import { fileURLToPath } from 'url';
import { dirname, join } from 'path';
import { readFileSync } from 'fs';
// Get the directory name of the current module
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
// Load the names from the names.json file
const file = join(__dirname, 'names.json');
export const names = JSON.parse(readFileSync(file, 'utf-8'));
export function getUniqueName(): string {
return (
names.animals[Math.floor(Math.random() * names.animals.length)] +
names.descriptor[Math.floor(Math.random() * names.descriptor.length)]
).toLowerCase();
}

View file

@ -12,6 +12,7 @@ export const sites = sqliteTable("sites", {
orgId: text("orgId").references(() => orgs.orgId, {
onDelete: "cascade",
}),
niceId: text("niceId"),
exitNode: integer("exitNode").references(() => exitNodes.exitNodeId, {
onDelete: "set null",
}),

View file

@ -9,6 +9,7 @@ import fetch from 'node-fetch';
import { ActionsEnum, checkUserActionPermission } from '@server/auth/actions';
import logger from '@server/logger';
import { eq, and } from 'drizzle-orm';
import { getUniqueName } from '@server/db/names';
const API_BASE_URL = "http://localhost:3000";
@ -24,6 +25,16 @@ const createSiteSchema = z.object({
subnet: z.string().optional(),
});
export type GetSiteResponse = {
name: string;
siteId: number;
orgId: string;
niceId: string;
// niceId: string;
// subdomain: string;
// subnet: string;
};
export async function createSite(req: Request, res: Response, next: NextFunction): Promise<any> {
try {
// Validate request body
@ -62,10 +73,15 @@ export async function createSite(req: Request, res: Response, next: NextFunction
return next(createHttpError(HttpCode.FORBIDDEN, 'User does not have a role'));
}
const niceId = getUniqueName();
// TODO: pick a subnet
// Create new site in the database
const newSite = await db.insert(sites).values({
const [newSite] = await db.insert(sites).values({
orgId,
name,
niceId,
subdomain,
pubKey,
subnet,
@ -87,19 +103,26 @@ export async function createSite(req: Request, res: Response, next: NextFunction
await db.insert(roleSites).values({
roleId: superuserRole[0].roleId,
siteId: newSite[0].siteId,
siteId: newSite.siteId,
});
if (req.userOrgRoleId != superuserRole[0].roleId) {
// make sure the user can access the site
db.insert(userSites).values({
userId: req.user?.userId!,
siteId: newSite[0].siteId,
siteId: newSite.siteId,
});
}
return response(res, {
data: newSite[0],
data: {
name: newSite.name,
niceId: newSite.niceId,
siteId: newSite.siteId,
orgId: newSite.orgId,
// subdomain: newSite.subdomain,
// subnet: newSite.subnet,
},
success: true,
error: false,
message: "Site created successfully",