import { $ } from "bun"; import fs from "node:fs"; import execute from "../(utils)/execute"; export default async function setupSSL() { console.log("Generating SSL Files ..."); const CA_CERT_FILE = "/ssl/ca-cert.pem"; const CA_KEY_FILE = "/ssl/ca-key.pem"; const SERVER_CERT_FILE = "/ssl/server-cert.pem"; const SERVER_KEY_FILE = "/ssl/server-key.pem"; if (!fs.existsSync("/app/ssl")) { fs.mkdirSync("/app/ssl", { recursive: true }); } if (!fs.existsSync("/app/public/documents/ssl/")) { fs.mkdirSync("/app/public/documents/ssl/", { recursive: true }); } $.cwd("/ssl"); if (!fs.existsSync(CA_CERT_FILE) || !fs.existsSync(CA_KEY_FILE)) { console.log("Generating SSL Files ..."); execute(`rm -Rf /ssl/*`); execute(`openssl genrsa 2048 >ca-key.pem`, { cwd: "/ssl" }); execute( `openssl req -new -x509 -nodes -days 365000 -key ca-key.pem -out ca-cert.pem -subj "/C=/ST=/L=/O=/CN=MariaDB admin"`, { cwd: "/ssl" } ); execute( `openssl req -newkey rsa:2048 -days 365000 -nodes -keyout server-key.pem -out server-req.pem -subj "/C=/ST=/L=/O=/CN=MariaDB server"`, { cwd: "/ssl" } ); execute(`openssl rsa -in server-key.pem -out server-key.pem`, { cwd: "/ssl", }); execute( `openssl x509 -req -in server-req.pem -days 365000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem`, { cwd: "/ssl" } ); execute( `openssl req -newkey rsa:2048 -days 365000 -nodes -keyout client-key.pem -out client-req.pem -subj "/C=/ST=/L=/O=/CN=MariaDB user"`, { cwd: "/ssl" } ); execute(`openssl rsa -in client-key.pem -out client-key.pem`, { cwd: "/ssl", }); execute( `openssl x509 -req -in client-req.pem -days 365000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem`, { cwd: "/ssl" } ); } execute(`chmod 755 /ssl`); execute(`chmod 644 /ssl/\*.pem`); execute(`rm -Rf /app/ssl/\*`); execute(`rm -Rf /app/public/documents/ssl/\*`); execute(`cp /ssl/ca-cert.pem /app/ssl/`); // execute(`cp /ssl/client-key.pem /app/ssl/`); // execute(`cp /ssl/client-cert.pem /app/ssl/`); execute(`cp /ssl/ca-cert.pem /app/public/documents/ssl/`); // execute(`cp /ssl/client-key.pem /app/public/documents/ssl/`); // execute(`cp /ssl/client-cert.pem /app/public/documents/ssl/`); const LOCAL_CONFIG_DIR = "/app/jsonData/dbSchemas/users"; if (!fs.existsSync(LOCAL_CONFIG_DIR)) { console.log("Creating Local Config Directory ..."); fs.mkdirSync(LOCAL_CONFIG_DIR, { recursive: true }); } console.log("SSL Files Setup Complete!"); }