@@ -264,7 +88,7 @@ function createPhoneLink(phone) { if (!phone) return 'N/A'; const cleaned = phone.replace(/[^\d+\s]/g, ''); - const clientIP = '{{ request.remote_addr }}'; // Client-IP aus dem Server + const clientIP = '{{ request.headers.get("X-Forwarded-For", request.remote_addr) }}'; const allowedIPRanges = '{{ allowed_ip_ranges }}'.split(','); // Überprüfen, ob die Client-IP in einem der erlaubten Bereiche liegt @@ -328,6 +152,8 @@ const address = `${street}, ${plz} ${city}`; const searchQuery = encodeURIComponent(address); const routeQuery = encodeURIComponent(address); + const clientIP = '{{ request.headers.get("X-Forwarded-For", request.remote_addr) }}'; + console.log('Client IP in createAddressLink:', clientIP); return `${address} @@ -343,9 +169,46 @@ return number - 12000; } - function createCustomerLink(number) { - const adjustedNumber = adjustCustomerNumber(number); - return `${adjustedNumber}`; + function isIPInSubnet(ip, subnet) { + // Teile die IP und das Subnetz in ihre Komponenten + const [subnetIP, bits] = subnet.split('/'); + const ipParts = ip.split('.').map(Number); + const subnetParts = subnetIP.split('.').map(Number); + + // Konvertiere IPs in 32-bit Zahlen + const ipNum = (ipParts[0] << 24) | (ipParts[1] << 16) | (ipParts[2] << 8) | ipParts[3]; + const subnetNum = (subnetParts[0] << 24) | (subnetParts[1] << 16) | (subnetParts[2] << 8) | subnetParts[3]; + + // Erstelle die Subnetzmaske + const mask = ~((1 << (32 - bits)) - 1); + + // Prüfe, ob die IP im Subnetz liegt + return (ipNum & mask) === (subnetNum & mask); + } + + function createCustomerLink(nummer) { + const clientIP = '{{ request.headers.get("X-Forwarded-For", request.remote_addr) }}'; + const allowedIPRanges = '{{ allowed_ip_ranges }}'.split(','); + + // Debug-Ausgabe für die IP-Bereiche + console.log('Client IP in createCustomerLink:', clientIP); + console.log('Allowed IP Ranges:', allowedIPRanges); + + // Überprüfe, ob die Client-IP in einem der erlaubten Bereiche liegt + const isAllowed = allowedIPRanges.some(range => { + const trimmedRange = range.trim(); + console.log('Checking range:', trimmedRange); + return isIPInSubnet(clientIP, trimmedRange); + }); + + console.log('isAllowed in createCustomerLink:', isAllowed); + + const adjustedNumber = adjustCustomerNumber(nummer); + if (isAllowed) { + return `${nummer}`; + } else { + return nummer; + } } function showCopyFeedback() { @@ -483,7 +346,7 @@ Firma: ${highlightedCompanyPhone}
Mobil: ${highlightedMobilePhone}