Untitled

mail@pastecode.io avatar
unknown
plain_text
a month ago
1.6 kB
5
Indexable
Never
const maxmind = require('maxmind');
const { exec } = require('child_process');

// Pfad zur MMDB-Datenbank
const DB_PATH = './path/to/your/dbip-country-lite.mmdb';

// Erlaubte Ländercodes
const ALLOWED_COUNTRIES = ['DE', 'AT', 'CH']; // Deutschland, Österreich, Schweiz

// Funktion zum Hinzufügen einer Firewall-Regel
function addFirewallRule(ip) {
    const command = `powershell.exe -Command "New-NetFirewallRule -DisplayName 'Allow ${ip}' -Direction Inbound -Action Allow -RemoteAddress ${ip} -Protocol TCP"`;
    exec(command, (error, stdout, stderr) => {
        if (error) {
            console.error(`Error: ${error.message}`);
            return;
        }
        if (stderr) {
            console.error(`stderr: ${stderr}`);
            return;
        }
        console.log(`Firewall rule added for ${ip}: ${stdout}`);
    });
}

// Öffne die GeoIP2-Datenbank
maxmind.open(DB_PATH)
    .then((lookup) => {
        // Hier müsstest du deine IP-Adressen prüfen, zum Beispiel:
        const testIPs = ['80.133.29.37', '192.168.1.1']; // Füge hier realistische IP-Adressen hinzu
        testIPs.forEach(ip => {
            const geoData = lookup.get(ip);
            if (geoData && ALLOWED_COUNTRIES.includes(geoData.country.iso_code)) {
                console.log(`IP ${ip} is allowed from ${geoData.country.names.en}`);
                addFirewallRule(ip);
            } else {
                console.log(`IP ${ip} is not allowed.`);
            }
        });
    })
    .catch(err => {
        console.error('Error opening MMDB file:', err);
    });
Leave a Comment