UNPKG

navflow-proxy-server

Version:

Dynamic WebSocket proxy server for NavFlow

58 lines (53 loc) 1.39 kB
/** * 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 };