navflow-proxy-server
Version:
Dynamic WebSocket proxy server for NavFlow
58 lines (53 loc) • 1.39 kB
JavaScript
/**
* Utility functions for tunnel ID and password generation
*/
/**
* Generate a random tunnel ID (8 characters, alphanumeric)
* @returns {string} Tunnel ID like "a7b2c9d4"
*/
function generateTunnelId() {
const chars = 'abcdefghijklmnopqrstuvwxyz0123456789';
let result = '';
for (let i = 0; i < 8; i++) {
result += chars.charAt(Math.floor(Math.random() * chars.length));
}
return result;
}
/**
* Generate a secure random password for tunnel authentication
* @returns {string} Password like "pass123xyz"
*/
function generatePassword() {
const chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
let result = '';
for (let i = 0; i < 12; i++) {
result += chars.charAt(Math.floor(Math.random() * chars.length));
}
return result;
}
/**
* Parse subdomain from hostname
* @param {string} hostname - Full hostname like "a7b2c9d4.proxy.example.com"
* @returns {string|null} Subdomain like "a7b2c9d4" or null if not found
*/
function parseSubdomain(hostname) {
const parts = hostname.split('.');
if (parts.length >= 3) {
return parts[0];
}
return null;
}
/**
* Validate tunnel ID format
* @param {string} tunnelId
* @returns {boolean}
*/
function isValidTunnelId(tunnelId) {
return /^[a-z0-9]{8}$/.test(tunnelId);
}
module.exports = {
generateTunnelId,
generatePassword,
parseSubdomain,
isValidTunnelId
};