70 lines
2.4 KiB
JavaScript
70 lines
2.4 KiB
JavaScript
#!/usr/bin/env node
|
|
/**
|
|
* Aggiunge un listener HTTPS alla sezione `listeners` del gateway.yaml.
|
|
*
|
|
* Uso:
|
|
* node add-listener.js <hostname> <name> <secret-name> [gateway-file]
|
|
*
|
|
* Esempio:
|
|
* node add-listener.js sonarqube.italiadatacenter.com https-sonarqube sonarqube-secret
|
|
* node add-listener.js grafana.italiadatacenter.com https-grafana grafana-secret gateway.yaml
|
|
*/
|
|
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
const [,, hostname, name, secretName, gatewayFile = 'gateway.yaml'] = process.argv;
|
|
|
|
if (!hostname || !name || !secretName) {
|
|
console.error('Uso: node add-listener.js <hostname> <name> <secret-name> [gateway-file]');
|
|
console.error('Es.: node add-listener.js sonarqube.italiadatacenter.com https-sonarqube sonarqube-secret');
|
|
process.exit(1);
|
|
}
|
|
|
|
const filepath = path.resolve(__dirname, gatewayFile);
|
|
|
|
if (!fs.existsSync(filepath)) {
|
|
console.error(`File non trovato: ${filepath}`);
|
|
process.exit(1);
|
|
}
|
|
|
|
const content = fs.readFileSync(filepath, 'utf8');
|
|
|
|
// Controlla se il listener esiste già (per nome o hostname)
|
|
if (content.includes(`name: ${name}`) || content.includes(`hostname: ${hostname}`)) {
|
|
console.warn(`Attenzione: un listener con name "${name}" o hostname "${hostname}" esiste già. Nessuna modifica applicata.`);
|
|
process.exit(0);
|
|
}
|
|
|
|
const newBlock = ` - allowedRoutes:
|
|
namespaces:
|
|
from: All
|
|
hostname: ${hostname}
|
|
name: ${name}
|
|
port: 443
|
|
protocol: HTTPS
|
|
tls:
|
|
certificateRefs:
|
|
- group: ""
|
|
kind: Secret
|
|
name: ${secretName}
|
|
mode: Terminate`;
|
|
|
|
// Inserisce il nuovo block prima della riga "kind: List" o in fondo alla lista listeners
|
|
// Trova l'ultima occorrenza di "mode: Terminate" e appende subito dopo
|
|
const lastTerminateIdx = content.lastIndexOf(' mode: Terminate');
|
|
if (lastTerminateIdx === -1) {
|
|
console.error('Impossibile trovare il punto di inserimento (mode: Terminate). File non modificato.');
|
|
process.exit(1);
|
|
}
|
|
|
|
const insertAfter = lastTerminateIdx + ' mode: Terminate'.length;
|
|
const updated = content.slice(0, insertAfter) + '\n' + newBlock + content.slice(insertAfter);
|
|
|
|
fs.writeFileSync(filepath, updated, 'utf8');
|
|
console.log(`Listener aggiunto:`);
|
|
console.log(` hostname : ${hostname}`);
|
|
console.log(` name : ${name}`);
|
|
console.log(` secret : ${secretName}`);
|
|
console.log(`File aggiornato: ${filepath}`);
|