fosrl.pangolin/scripts/hydrate.ts

99 lines
3.1 KiB
TypeScript
Raw Normal View History

2024-09-28 14:46:36 -04:00
import { drizzle } from 'drizzle-orm/better-sqlite3';
import Database from 'better-sqlite3';
import { orgs, users, sites, resources, exitNodes, routes, targets } from '../server/db/schema';
const sqlite = new Database('./config/db/db.sqlite');
const db = drizzle(sqlite);
async function insertDummyData() {
// Insert dummy orgs
const org1 = await db.insert(orgs).values({
name: 'Fosrl',
domain: 'fosrl.io'
}).returning().get();
const org2 = await 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
2024-09-28 17:10:03 -04:00
const exitNode1 = db.insert(exitNodes).values({
2024-09-28 14:46:36 -04:00
name: 'Exit Node 1',
2024-09-28 17:10:03 -04:00
address: '10.0.0.1/24',
privateKey: 'sKQlCNErB2n+dV8eLp5Yw/avsjK/zkrxJE0n48hjb10=',
listenPort: 51820
2024-09-28 14:46:36 -04:00
}).returning().get();
2024-09-28 17:10:03 -04:00
const exitNode2 = db.insert(exitNodes).values({
2024-09-28 14:46:36 -04:00
name: 'Exit Node 2',
2024-09-28 17:10:03 -04:00
address: '172.16.1.1/24',
privateKey: 'ACaw+q5vHVm8Xb0jIgIkMzlkJiriC7cURuOiNbGsGHg=',
listenPort: 51820
2024-09-28 14:46:36 -04:00
}).returning().get();
// Insert dummy sites
2024-09-28 17:10:03 -04:00
const site1 = db.insert(sites).values({
2024-09-28 14:46:36 -04:00
orgId: org1.orgId,
exitNode: exitNode1.exitNodeId,
name: 'Main Site',
subdomain: 'main',
2024-09-28 17:10:03 -04:00
pubKey: 'Kn4eD0kvcTwjO//zqH/CtNVkMNdMiUkbqFxysEym2D8=',
subnet: '10.0.0.16/28'
2024-09-28 14:46:36 -04:00
}).returning().get();
2024-09-28 17:10:03 -04:00
const site2 = db.insert(sites).values({
2024-09-28 14:46:36 -04:00
orgId: org2.orgId,
exitNode: exitNode2.exitNodeId,
name: 'Dev Site',
subdomain: 'dev',
2024-09-28 17:10:03 -04:00
pubKey: 'V329Uf/vhnBwYxAuT/ZlMZuLokHy5tug/sGsLfIMK1w=',
subnet: '172.16.1.16/28'
2024-09-28 14:46:36 -04:00
}).returning().get();
// Insert dummy resources
2024-09-28 17:10:03 -04:00
const resource1 = db.insert(resources).values({
resourceId: `web.${site1.subdomain}.${org1.domain}`,
2024-09-28 14:46:36 -04:00
siteId: site1.siteId,
name: 'Web Server',
subdomain: 'web'
}).returning().get();
2024-09-28 17:10:03 -04:00
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}`,
2024-09-28 14:46:36 -04:00
siteId: site2.siteId,
name: 'Database',
subdomain: 'db'
}).returning().get();
// Insert dummy routes
await db.insert(routes).values([
2024-09-28 17:10:03 -04:00
{ 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([
2024-09-28 17:10:03 -04:00
{ 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' }
2024-09-28 14:46:36 -04:00
]);
console.log('Dummy data inserted successfully');
}
insertDummyData().catch(console.error);