feat: enforce private backend isolation, deploy live interactive SOC Gateway UI, and provide English security report
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
const fs = require('fs');
|
||||
const cp = require('child_process');
|
||||
const path = require('path');
|
||||
|
||||
const USER_ID = 'd62f9886-fced-4cf2-98e4-5b62000d4f03';
|
||||
const REGISTRY = `registry.ghaymah.systems/${USER_ID}`;
|
||||
|
||||
function execPromise(cmd, cwd) {
|
||||
return new Promise((resolve, reject) => {
|
||||
console.log(`[EXEC] ${cmd} (in ${cwd || process.cwd()})`);
|
||||
cp.exec(cmd, { cwd, maxBuffer: 10 * 1024 * 1024 }, (err, stdout, stderr) => {
|
||||
if (err) {
|
||||
console.error(`[STDERR] ${stderr}`);
|
||||
return reject(new Error(`${cmd} failed: ${err.message}`));
|
||||
}
|
||||
console.log(`[STDOUT]\n${stdout}`);
|
||||
resolve(stdout);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
async function main() {
|
||||
const tokenData = JSON.parse(fs.readFileSync('D:/cumin/ghaymah_dns_net_sec_tests/token.json', 'utf8'));
|
||||
|
||||
// 1. Docker login
|
||||
console.log('--- Step 1: Docker Login to Ghaymah Registry ---');
|
||||
await execPromise(`echo ${tokenData.token} | docker login registry.ghaymah.systems -u ${USER_ID} --password-stdin`);
|
||||
|
||||
// 2. Prepare Backend Docker directory
|
||||
console.log('\n--- Step 2: Preparing SOC Backend Image ---');
|
||||
const backendDir = 'D:/cumin/ghaymah_dns_net_sec_tests/docker/backend';
|
||||
fs.mkdirSync(backendDir, { recursive: true });
|
||||
|
||||
let backendCode = fs.readFileSync('D:/cumin/src/backend.js', 'utf8');
|
||||
backendCode = backendCode.replace('Cumin Cloud (cumin.dev)', 'Ghaymah Systems Cloud (deploy.ghaymah.systems)');
|
||||
fs.writeFileSync(path.join(backendDir, 'backend.js'), backendCode);
|
||||
|
||||
const backendDockerfile = `FROM node:20-alpine
|
||||
WORKDIR /app
|
||||
COPY backend.js ./
|
||||
EXPOSE 4000
|
||||
CMD ["node", "backend.js"]
|
||||
`;
|
||||
fs.writeFileSync(path.join(backendDir, 'Dockerfile'), backendDockerfile);
|
||||
|
||||
const backendTag = `${REGISTRY}/soc-backend:latest`;
|
||||
console.log('Building Backend image:', backendTag);
|
||||
await execPromise(`docker build -t ${backendTag} .`, backendDir);
|
||||
console.log('Pushing Backend image to Ghaymah Registry...');
|
||||
await execPromise(`docker push ${backendTag}`, backendDir);
|
||||
|
||||
// 3. Prepare Gateway Docker directory
|
||||
console.log('\n--- Step 3: Preparing SOC Gateway Image ---');
|
||||
const gatewayDir = 'D:/cumin/ghaymah_dns_net_sec_tests/docker/gateway';
|
||||
fs.mkdirSync(gatewayDir, { recursive: true });
|
||||
|
||||
let gatewayCode = fs.readFileSync('D:/cumin/src/gateway.js', 'utf8');
|
||||
gatewayCode = gatewayCode.replace('const PORT = process.env.PORT || 3000;', 'const PORT = process.env.PORT || 3000;');
|
||||
gatewayCode = gatewayCode.replace('const BACKEND = process.env.BACKEND_URL || "http://10.100.0.94:4000";', 'const BACKEND = process.env.BACKEND_URL || "http://soc-backend-d1895c70f6b2:4000";');
|
||||
gatewayCode = gatewayCode.replace('<title>SOC Command Center | Security Operations</title>', '<title>Ghaymah SOC Command Center | Cloud Security Operations</title>');
|
||||
gatewayCode = gatewayCode.replace('<div class="logo">SOC COMMAND CENTER</div>', '<div class="logo">GHAYMAH SOC COMMAND CENTER</div>');
|
||||
fs.writeFileSync(path.join(gatewayDir, 'gateway.js'), gatewayCode);
|
||||
|
||||
const gatewayDockerfile = `FROM node:20-alpine
|
||||
WORKDIR /app
|
||||
COPY gateway.js ./
|
||||
EXPOSE 3000
|
||||
CMD ["node", "gateway.js"]
|
||||
`;
|
||||
fs.writeFileSync(path.join(gatewayDir, 'Dockerfile'), gatewayDockerfile);
|
||||
|
||||
const gatewayTag = `${REGISTRY}/soc-gateway:latest`;
|
||||
console.log('Building Gateway image:', gatewayTag);
|
||||
await execPromise(`docker build -t ${gatewayTag} .`, gatewayDir);
|
||||
console.log('Pushing Gateway image to Ghaymah Registry...');
|
||||
await execPromise(`docker push ${gatewayTag}`, gatewayDir);
|
||||
|
||||
console.log('\n>>> BOTH IMAGES SUCCESSFULLY BUILT AND PUSHED TO REGISTRY.GHAYMAH.SYSTEMS! <<<');
|
||||
}
|
||||
|
||||
main().catch(console.error);
|
||||
Reference in New Issue
Block a user