mirror of
https://github.com/fosrl/pangolin.git
synced 2025-05-13 05:40:38 +01:00
add .editorconfig and fix db imports in scripts
This commit is contained in:
parent
2970088b29
commit
a67463a518
3 changed files with 182 additions and 106 deletions
15
.editorconfig
Normal file
15
.editorconfig
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
root = true
|
||||||
|
|
||||||
|
[*]
|
||||||
|
charset = utf-8
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 4
|
||||||
|
insert_final_newline = true
|
||||||
|
trim_trailing_whitespace = true
|
||||||
|
|
||||||
|
[*.ts]
|
||||||
|
quote_type = double
|
||||||
|
|
||||||
|
[*.md]
|
||||||
|
max_line_length = off
|
||||||
|
trim_trailing_whitespace = false
|
|
@ -1,99 +1,172 @@
|
||||||
import { drizzle } from 'drizzle-orm/better-sqlite3';
|
import {
|
||||||
import Database from 'better-sqlite3';
|
orgs,
|
||||||
import { orgs, users, sites, resources, exitNodes, routes, targets } from '../server/db/schema';
|
users,
|
||||||
|
sites,
|
||||||
const sqlite = new Database('./config/db/db.sqlite');
|
resources,
|
||||||
const db = drizzle(sqlite);
|
exitNodes,
|
||||||
|
routes,
|
||||||
|
targets,
|
||||||
|
} from "@server/db/schema";
|
||||||
|
import db from "@server/db";
|
||||||
|
|
||||||
async function insertDummyData() {
|
async function insertDummyData() {
|
||||||
// Insert dummy orgs
|
// Insert dummy orgs
|
||||||
const org1 = await db.insert(orgs).values({
|
const org1 = db
|
||||||
name: 'Fosrl',
|
.insert(orgs)
|
||||||
domain: 'fosrl.io'
|
.values({
|
||||||
}).returning().get();
|
name: "Fosrl",
|
||||||
|
domain: "fosrl.io",
|
||||||
|
})
|
||||||
|
.returning()
|
||||||
|
.get();
|
||||||
|
|
||||||
const org2 = await db.insert(orgs).values({
|
const org2 = db
|
||||||
name: 'Fossorial',
|
.insert(orgs)
|
||||||
domain: 'fossorial.io'
|
.values({
|
||||||
}).returning().get();
|
name: "Fossorial",
|
||||||
|
domain: "fossorial.io",
|
||||||
|
})
|
||||||
|
.returning()
|
||||||
|
.get();
|
||||||
|
|
||||||
// Insert dummy users
|
// Insert dummy users
|
||||||
await db.insert(users).values([
|
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: org1.orgId,
|
||||||
{ orgId: org2.orgId, name: 'Bob Johnson', email: 'bob@fosrl.io', groups: 'admin' }
|
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
|
// Insert dummy exit nodes
|
||||||
const exitNode1 = db.insert(exitNodes).values({
|
const exitNode1 = db
|
||||||
name: 'Exit Node 1',
|
.insert(exitNodes)
|
||||||
address: '10.0.0.1/24',
|
.values({
|
||||||
privateKey: 'sKQlCNErB2n+dV8eLp5Yw/avsjK/zkrxJE0n48hjb10=',
|
name: "Exit Node 1",
|
||||||
listenPort: 51820
|
address: "10.0.0.1/24",
|
||||||
}).returning().get();
|
privateKey: "sKQlCNErB2n+dV8eLp5Yw/avsjK/zkrxJE0n48hjb10=",
|
||||||
|
listenPort: 51820,
|
||||||
|
})
|
||||||
|
.returning()
|
||||||
|
.get();
|
||||||
|
|
||||||
const exitNode2 = db.insert(exitNodes).values({
|
const exitNode2 = db
|
||||||
name: 'Exit Node 2',
|
.insert(exitNodes)
|
||||||
address: '172.16.1.1/24',
|
.values({
|
||||||
privateKey: 'ACaw+q5vHVm8Xb0jIgIkMzlkJiriC7cURuOiNbGsGHg=',
|
name: "Exit Node 2",
|
||||||
listenPort: 51820
|
address: "172.16.1.1/24",
|
||||||
}).returning().get();
|
privateKey: "ACaw+q5vHVm8Xb0jIgIkMzlkJiriC7cURuOiNbGsGHg=",
|
||||||
|
listenPort: 51820,
|
||||||
|
})
|
||||||
|
.returning()
|
||||||
|
.get();
|
||||||
|
|
||||||
// Insert dummy sites
|
// Insert dummy sites
|
||||||
const site1 = db.insert(sites).values({
|
const site1 = db
|
||||||
orgId: org1.orgId,
|
.insert(sites)
|
||||||
exitNode: exitNode1.exitNodeId,
|
.values({
|
||||||
name: 'Main Site',
|
orgId: org1.orgId,
|
||||||
subdomain: 'main',
|
exitNode: exitNode1.exitNodeId,
|
||||||
pubKey: 'Kn4eD0kvcTwjO//zqH/CtNVkMNdMiUkbqFxysEym2D8=',
|
name: "Main Site",
|
||||||
subnet: '10.0.0.16/28'
|
subdomain: "main",
|
||||||
}).returning().get();
|
pubKey: "Kn4eD0kvcTwjO//zqH/CtNVkMNdMiUkbqFxysEym2D8=",
|
||||||
|
subnet: "10.0.0.16/28",
|
||||||
|
})
|
||||||
|
.returning()
|
||||||
|
.get();
|
||||||
|
|
||||||
const site2 = db.insert(sites).values({
|
const site2 = db
|
||||||
orgId: org2.orgId,
|
.insert(sites)
|
||||||
exitNode: exitNode2.exitNodeId,
|
.values({
|
||||||
name: 'Dev Site',
|
orgId: org2.orgId,
|
||||||
subdomain: 'dev',
|
exitNode: exitNode2.exitNodeId,
|
||||||
pubKey: 'V329Uf/vhnBwYxAuT/ZlMZuLokHy5tug/sGsLfIMK1w=',
|
name: "Dev Site",
|
||||||
subnet: '172.16.1.16/28'
|
subdomain: "dev",
|
||||||
}).returning().get();
|
pubKey: "V329Uf/vhnBwYxAuT/ZlMZuLokHy5tug/sGsLfIMK1w=",
|
||||||
|
subnet: "172.16.1.16/28",
|
||||||
|
})
|
||||||
|
.returning()
|
||||||
|
.get();
|
||||||
|
|
||||||
// Insert dummy resources
|
// Insert dummy resources
|
||||||
const resource1 = db.insert(resources).values({
|
const resource1 = db
|
||||||
resourceId: `web.${site1.subdomain}.${org1.domain}`,
|
.insert(resources)
|
||||||
siteId: site1.siteId,
|
.values({
|
||||||
name: 'Web Server',
|
resourceId: `web.${site1.subdomain}.${org1.domain}`,
|
||||||
subdomain: 'web'
|
siteId: site1.siteId,
|
||||||
}).returning().get();
|
name: "Web Server",
|
||||||
|
subdomain: "web",
|
||||||
|
})
|
||||||
|
.returning()
|
||||||
|
.get();
|
||||||
|
|
||||||
const resource2 = db.insert(resources).values({
|
const resource2 = db
|
||||||
resourceId: `web2.${site1.subdomain}.${org1.domain}`,
|
.insert(resources)
|
||||||
siteId: site1.siteId,
|
.values({
|
||||||
name: 'Web Server 2',
|
resourceId: `web2.${site1.subdomain}.${org1.domain}`,
|
||||||
subdomain: 'web2'
|
siteId: site1.siteId,
|
||||||
}).returning().get();
|
name: "Web Server 2",
|
||||||
|
subdomain: "web2",
|
||||||
|
})
|
||||||
|
.returning()
|
||||||
|
.get();
|
||||||
|
|
||||||
const resource3 = db.insert(resources).values({
|
const resource3 = db
|
||||||
resourceId: `db.${site2.subdomain}.${org2.domain}`,
|
.insert(resources)
|
||||||
siteId: site2.siteId,
|
.values({
|
||||||
name: 'Database',
|
resourceId: `db.${site2.subdomain}.${org2.domain}`,
|
||||||
subdomain: 'db'
|
siteId: site2.siteId,
|
||||||
}).returning().get();
|
name: "Database",
|
||||||
|
subdomain: "db",
|
||||||
|
})
|
||||||
|
.returning()
|
||||||
|
.get();
|
||||||
|
|
||||||
// Insert dummy routes
|
// Insert dummy routes
|
||||||
await db.insert(routes).values([
|
await db.insert(routes).values([
|
||||||
{ exitNodeId: exitNode1.exitNodeId, subnet: '10.0.0.0/24' },
|
{ exitNodeId: exitNode1.exitNodeId, subnet: "10.0.0.0/24" },
|
||||||
{ exitNodeId: exitNode2.exitNodeId, subnet: '172.16.1.1/24' }
|
{ exitNodeId: exitNode2.exitNodeId, subnet: "172.16.1.1/24" },
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// Insert dummy targets
|
// Insert dummy targets
|
||||||
await db.insert(targets).values([
|
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: resource1.resourceId,
|
||||||
{ resourceId: resource3.resourceId, ip: '172.16.1.16', method: 'http', port: 80, protocol: 'TCP' }
|
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');
|
console.log("Dummy data inserted successfully");
|
||||||
}
|
}
|
||||||
|
|
||||||
insertDummyData().catch(console.error);
|
insertDummyData().catch(console.error);
|
|
@ -1,27 +1,15 @@
|
||||||
import { drizzle } from 'drizzle-orm/better-sqlite3';
|
import { migrate } from "drizzle-orm/better-sqlite3/migrator";
|
||||||
import { migrate } from 'drizzle-orm/better-sqlite3/migrator';
|
import db from "@server/db";
|
||||||
import Database from 'better-sqlite3';
|
|
||||||
|
|
||||||
const runMigrations = async () => {
|
const runMigrations = async () => {
|
||||||
// Create a new SQLite database connection
|
console.log("Running migrations...");
|
||||||
const sqlite = new Database('./config/db/db.sqlite');
|
try {
|
||||||
|
migrate(db, { migrationsFolder: "./server/migrations" });
|
||||||
// Create a Drizzle instance
|
console.log("Migrations completed successfully.");
|
||||||
const db = drizzle(sqlite);
|
} catch (error) {
|
||||||
|
console.error("Error running migrations:", error);
|
||||||
console.log('Running migrations...');
|
process.exit(1);
|
||||||
|
}
|
||||||
try {
|
|
||||||
// Run the migrations
|
|
||||||
await migrate(db, { migrationsFolder: './server/migrations' });
|
|
||||||
console.log('Migrations completed successfully.');
|
|
||||||
} catch (error) {
|
|
||||||
console.error('Error running migrations:', error);
|
|
||||||
process.exit(1);
|
|
||||||
} finally {
|
|
||||||
// Close the database connection
|
|
||||||
sqlite.close();
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
runMigrations();
|
runMigrations();
|
Loading…
Reference in a new issue