mirror of
https://github.com/fosrl/pangolin.git
synced 2025-05-19 00:27:56 +01:00
172 lines
4.1 KiB
TypeScript
172 lines
4.1 KiB
TypeScript
import {
|
|
orgs,
|
|
users,
|
|
sites,
|
|
resources,
|
|
exitNodes,
|
|
routes,
|
|
targets,
|
|
} from "@server/db/schema";
|
|
import db from "@server/db";
|
|
|
|
async function insertDummyData() {
|
|
// Insert dummy orgs
|
|
const org1 = db
|
|
.insert(orgs)
|
|
.values({
|
|
name: "Fosrl",
|
|
domain: "fosrl.io",
|
|
})
|
|
.returning()
|
|
.get();
|
|
|
|
const org2 = db
|
|
.insert(orgs)
|
|
.values({
|
|
name: "Fossorial",
|
|
domain: "fossorial.io",
|
|
})
|
|
.returning()
|
|
.get();
|
|
|
|
// Insert dummy users
|
|
await db.insert(users).values([
|
|
{
|
|
orgId: org1.orgId,
|
|
name: "John Doe",
|
|
email: "john@fossorial.com",
|
|
groups: "admin,developer",
|
|
},
|
|
{
|
|
orgId: org1.orgId,
|
|
name: "Jane Smith",
|
|
email: "jane@fossorial.com",
|
|
groups: "developer",
|
|
},
|
|
{
|
|
orgId: org2.orgId,
|
|
name: "Bob Johnson",
|
|
email: "bob@fosrl.io",
|
|
groups: "admin",
|
|
},
|
|
]);
|
|
|
|
// 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();
|
|
|
|
const exitNode2 = db
|
|
.insert(exitNodes)
|
|
.values({
|
|
name: "Exit Node 2",
|
|
address: "172.16.1.1/24",
|
|
privateKey: "ACaw+q5vHVm8Xb0jIgIkMzlkJiriC7cURuOiNbGsGHg=",
|
|
listenPort: 51820,
|
|
})
|
|
.returning()
|
|
.get();
|
|
|
|
// 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();
|
|
|
|
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();
|
|
|
|
// Insert dummy resources
|
|
const resource1 = db
|
|
.insert(resources)
|
|
.values({
|
|
resourceId: `web.${site1.subdomain}.${org1.domain}`,
|
|
siteId: site1.siteId,
|
|
name: "Web Server",
|
|
subdomain: "web",
|
|
})
|
|
.returning()
|
|
.get();
|
|
|
|
const resource2 = db
|
|
.insert(resources)
|
|
.values({
|
|
resourceId: `web2.${site1.subdomain}.${org1.domain}`,
|
|
siteId: site1.siteId,
|
|
name: "Web Server 2",
|
|
subdomain: "web2",
|
|
})
|
|
.returning()
|
|
.get();
|
|
|
|
const resource3 = db
|
|
.insert(resources)
|
|
.values({
|
|
resourceId: `db.${site2.subdomain}.${org2.domain}`,
|
|
siteId: site2.siteId,
|
|
name: "Database",
|
|
subdomain: "db",
|
|
})
|
|
.returning()
|
|
.get();
|
|
|
|
// 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" },
|
|
]);
|
|
|
|
// Insert dummy targets
|
|
await db.insert(targets).values([
|
|
{
|
|
resourceId: resource1.resourceId,
|
|
ip: "10.0.0.16",
|
|
method: "https",
|
|
port: 443,
|
|
protocol: "TCP",
|
|
},
|
|
{
|
|
resourceId: resource2.resourceId,
|
|
ip: "10.0.0.17",
|
|
method: "http",
|
|
port: 80,
|
|
protocol: "TCP",
|
|
},
|
|
{
|
|
resourceId: resource3.resourceId,
|
|
ip: "172.16.1.16",
|
|
method: "http",
|
|
port: 80,
|
|
protocol: "TCP",
|
|
},
|
|
]);
|
|
|
|
console.log("Dummy data inserted successfully");
|
|
}
|
|
|
|
insertDummyData().catch(console.error);
|