fosrl.pangolin/scripts/hydrate.ts

160 lines
3.9 KiB
TypeScript
Raw Normal View History

import {
orgs,
sites,
resources,
exitNodes,
routes,
targets,
} from "@server/db/schema";
import db from "@server/db";
2024-10-10 21:59:30 -04:00
import { createSuperuserRole } from "@server/db/ensureActions";
2024-09-28 14:46:36 -04:00
async function insertDummyData() {
// Insert dummy orgs
const org1 = db
.insert(orgs)
.values({
2024-10-14 15:11:18 -04:00
orgId: "default",
2024-10-10 21:59:30 -04:00
name: "Default",
domain: "fosrl.io",
})
.returning()
.get();
2024-09-28 14:46:36 -04:00
2024-10-14 15:11:18 -04:00
await createSuperuserRole(org1.orgId!);
2024-10-10 21:59:30 -04:00
const org2 = db
.insert(orgs)
.values({
2024-10-14 15:11:18 -04:00
orgId: "fossorial",
2024-10-10 21:59:30 -04:00
name: "Fossorial",
domain: "fossorial.io",
})
.returning()
.get();
2024-09-28 14:46:36 -04:00
2024-10-14 15:11:18 -04:00
await createSuperuserRole(org2.orgId!);
2024-09-28 14:46:36 -04:00
// Insert dummy exit nodes
const exitNode1 = db
.insert(exitNodes)
.values({
name: "Exit Node 1",
address: "10.0.0.1/24",
privateKey: "sKQlCNErB2n+dV8eLp5Yw/avsjK/zkrxJE0n48hjb10=",
listenPort: 51820,
})
.returning()
.get();
2024-09-28 14:46:36 -04:00
const exitNode2 = db
.insert(exitNodes)
.values({
name: "Exit Node 2",
address: "172.16.1.1/24",
privateKey: "ACaw+q5vHVm8Xb0jIgIkMzlkJiriC7cURuOiNbGsGHg=",
listenPort: 51820,
})
.returning()
.get();
2024-09-28 14:46:36 -04:00
// Insert dummy sites
const site1 = db
.insert(sites)
.values({
orgId: org1.orgId,
exitNode: exitNode1.exitNodeId,
name: "Main Site",
subdomain: "main",
pubKey: "Kn4eD0kvcTwjO//zqH/CtNVkMNdMiUkbqFxysEym2D8=",
subnet: "10.0.0.16/28",
})
.returning()
.get();
2024-09-28 14:46:36 -04:00
const site2 = db
.insert(sites)
.values({
orgId: org2.orgId,
exitNode: exitNode2.exitNodeId,
name: "Dev Site",
subdomain: "dev",
pubKey: "V329Uf/vhnBwYxAuT/ZlMZuLokHy5tug/sGsLfIMK1w=",
subnet: "172.16.1.16/28",
})
.returning()
.get();
2024-09-28 14:46:36 -04:00
// Insert dummy resources
const resource1 = db
.insert(resources)
.values({
resourceId: `web.${site1.subdomain}.${org1.domain}`,
siteId: site1.siteId,
2024-10-02 22:17:43 -04:00
orgId: site1.orgId,
name: "Web Server",
subdomain: "web",
})
.returning()
.get();
2024-09-28 14:46:36 -04:00
const resource2 = db
.insert(resources)
.values({
resourceId: `web2.${site1.subdomain}.${org1.domain}`,
siteId: site1.siteId,
2024-10-02 22:17:43 -04:00
orgId: site1.orgId,
name: "Web Server 2",
subdomain: "web2",
})
.returning()
.get();
2024-09-28 17:10:03 -04:00
const resource3 = db
.insert(resources)
.values({
resourceId: `db.${site2.subdomain}.${org2.domain}`,
siteId: site2.siteId,
2024-10-02 22:17:43 -04:00
orgId: site2.orgId,
name: "Database",
subdomain: "db",
})
.returning()
.get();
2024-09-28 14:46:36 -04:00
// Insert dummy routes
await db.insert(routes).values([
{ exitNodeId: exitNode1.exitNodeId, subnet: "10.0.0.0/24" },
{ exitNodeId: exitNode2.exitNodeId, subnet: "172.16.1.1/24" },
]);
2024-09-28 14:46:36 -04:00
// Insert dummy targets
await db.insert(targets).values([
{
resourceId: resource1.resourceId,
ip: "10.0.0.16",
2024-09-29 15:43:52 -04:00
method: "http",
2024-09-29 18:29:36 -04:00
port: 4200,
protocol: "TCP",
},
{
resourceId: resource2.resourceId,
ip: "10.0.0.17",
2024-09-29 15:43:52 -04:00
method: "https",
port: 443,
protocol: "TCP",
},
{
resourceId: resource3.resourceId,
ip: "172.16.1.16",
method: "http",
port: 80,
protocol: "TCP",
},
]);
2024-09-28 14:46:36 -04:00
console.log("Dummy data inserted successfully");
2024-09-28 14:46:36 -04:00
}
insertDummyData().catch(console.error);