# Kod wcza filtrowanie TCP/IP dla wszystkich kart i konfiguruje
# filtrowanie dla wszystkich kart korzystajcych z protokou IP.

use Win32::OLE qw(in);
$Win32::OLE::Warn = 3;

# ------ KONFIGURACJA SKRYPTU ------
$strComputer = '.';
$arrTCPPorts = [0]; # Udostpnianie wszystkich portw TCP
$arrUDPPorts = [0]; # Udostpnianie wszystkich portw UDP
$arrProtos = [80, 25]; # Udostpnianie jedynie portw HTTP i SMTP
# ------ KONIEC KONFIGURACJI ---------
$objWMI = Win32::OLE->GetObject('winmgmts:\\\\' . $strComputer . '\\root\\cimv2');
$objAdapterConfig = $objWMI->Get('Win32_NetworkAdapterConfiguration');
$intRC = $objAdapterConfig->EnableIPFilterSec(1);
if ($intRC == 0) {
    print "Filtrowanie TCP/IP wczono dla wszystkich kart.\n";
}
elsif ($intRC == 1) {
    print "Filtrowanie TCP/IP wczono dla wszystkich kart, ale w celu uwzgldnienia zmian konieczne jest przeadowanie systemu.\n";
}
else {
    print 'Podczas wczania filtrowania TCP/IP dla wszystkich ' . 'kart wystpi bd: ' . $intRC, "\n";
}

$colNAConfigs = $objWMI->ExecQuery('select * ' . ' from Win32_NetworkAdapterConfiguration ' . ' where IPEnabled = True');
foreach my $objNAConfig (in $colNAConfigs) {
    $intRC = $objNAConfig->EnableIPSec($arrTCPPorts, $arrUDPPorts, $arrProtos);
    if ($intRC == 0) {
        print 'Filtrowanie TCP/IP skonfigurowano dla \'' . $objNAConfig->Description . '\'', "\n";
    }
    elsif ($intRC == 1) {
        print 'Filtrowanie TCP/IP skonfigurowano dla \'' . $objNAConfig->Description . '\', ale w celu uwzgldnienia zmian konieczne jest przeadowanie systemu.', "\n";
    }
    else {
        print 'Podczas konfigurowania filtrowania TCP/IP dla \'' . $objNAConfig->Description . '\'wystpi bd: ' . $intRC, "\n";
    }
}
