iop
Version:
Ship Docker Anywhere
44 lines • 1.63 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateAppSslipDomain = generateAppSslipDomain;
exports.shouldUseSslip = shouldUseSslip;
const crypto_1 = __importDefault(require("crypto"));
/**
* Validates if a string is a valid IPv4 address
*/
function isValidIPv4(ip) {
const ipRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;
return ipRegex.test(ip);
}
/**
* Sanitizes a hostname or IP address for DNS usage
*/
function sanitizeHostForDns(host) {
return host.replace(/\./g, '-').replace(/[^a-zA-Z0-9-]/g, '');
}
/**
* Generates a deterministic hash for app.iop.run domain
*/
function generateDeterministicHash(projectName, appName, serverHost) {
const input = `${projectName}:${appName}:${serverHost}`;
return crypto_1.default.createHash('sha256').update(input).digest('hex').substring(0, 8);
}
/**
* Generates a deterministic app.iop.run domain for an app
*/
function generateAppSslipDomain(projectName, appName, serverHost) {
const hash = generateDeterministicHash(projectName, appName, serverHost);
const sanitizedHost = sanitizeHostForDns(serverHost);
return `${hash}-${appName}-iop-${sanitizedHost}.app.iop.run`;
}
/**
* Checks if app.iop.run should be used for domain generation
*/
function shouldUseSslip(hosts) {
// Use app.iop.run if no custom hosts are specified
return !hosts || hosts.length === 0;
}
//# sourceMappingURL=sslip.js.map