export function generateWireGuardConfig( privateKey: string, publicKey: string, subnet: string, address: string, endpoint: string, listenPort: string | number ): string { const addressWithoutCidr = address.split("/")[0]; const port = typeof listenPort === "number" ? listenPort : listenPort; return `[Interface] Address = ${subnet} ListenPort = 51820 PrivateKey = ${privateKey} [Peer] PublicKey = ${publicKey} AllowedIPs = ${addressWithoutCidr}/32 Endpoint = ${endpoint}:${port} PersistentKeepalive = 5`; } export function generateObfuscatedWireGuardConfig(options?: { subnet?: string | null; address?: string | null; endpoint?: string | null; listenPort?: number | string | null; publicKey?: string | null; }): string { const obfuscate = ( value: string | null | undefined, length: number = 20 ): string => { return value || "•".repeat(length); }; const obfuscateKey = (value: string | null | undefined): string => { return value || "•".repeat(44); // Base64 key length }; const subnet = options?.subnet || obfuscate(null, 20); const subnetWithCidr = subnet.includes("•") ? `${subnet}/32` : subnet.includes("/") ? subnet : `${subnet}/32`; const address = options?.address ? options.address.split("/")[0] : obfuscate(null, 20); const endpoint = obfuscate(options?.endpoint, 20); const listenPort = options?.listenPort ? typeof options.listenPort === "number" ? options.listenPort : options.listenPort : 51820; const publicKey = obfuscateKey(options?.publicKey); return `[Interface] Address = ${subnetWithCidr} ListenPort = 51820 PrivateKey = ${obfuscateKey(null)} [Peer] PublicKey = ${publicKey} AllowedIPs = ${address}/32 Endpoint = ${endpoint}:${listenPort} PersistentKeepalive = 5`; }