# Author: andreas@ndfnet.de

use Win32;
use Win32::Registry;

if (!$ARGV[0]) {
    print 'svskill [stop|start]';   
}

if ($ARGV[0] =~ m/start/i) {
    layers_start();
} elsif ($ARGV[0] =~ m/stop/i) {
    layers_stop();
} else {
    print 'svskill [stop|start]';
    exit 0; 
}

sub layers_stop {
    my $Register = "SYSTEM\\ALTIRIS\\FSL";
    my ($hkey, $layername,$hklm_temp,$layerstarted);
    $HKEY_LOCAL_MACHINE->Open($Register,$hkey) || die $!;
    my @keys;
    $hkey->GetKeys(\@keys);
    foreach $key (@keys) {
        $reg_temp = $Register."\\$key";
        $HKEY_LOCAL_MACHINE->Open($reg_temp,$hklm_temp);
        # check if Layer started 
        $hklm_temp->QueryValueEx(Active, &REG_DWORD, $layerstarted);
    
            if ($layerstarted eq "1") {
                # get layer name
                $hklm_temp->QueryValueEx(Name, &REG_SZ, $layername);
                $layername =~ s/_FSLPEERFSL$//;
                
                print "Layername: ". $layername;
                system "svscmd.exe \"".$layername."\" D -f 1>nul " ;
                print "  ... wurde deaktivert\n"            
            }
    }
    $hkey->Close();
    $hklm_temp->Close();
}

sub layers_start {
    my $Register = "SYSTEM\\ALTIRIS\\FSL";
    my ($hkey, $layername,$hklm_temp,$layerstarted);
    $HKEY_LOCAL_MACHINE->Open($Register,$hkey) || die $!;
    my @keys;
    $hkey->GetKeys(\@keys);
    foreach $key (@keys) {
        $reg_temp = $Register."\\$key";
        $HKEY_LOCAL_MACHINE->Open($reg_temp,$hklm_temp);
        # check if Layer started 
        $hklm_temp->QueryValueEx(ActiveOnStart, &REG_DWORD, $layerstarted);
    
            if ($layerstarted eq "1") {
                # get layer name
                $hklm_temp->QueryValueEx(Name, &REG_SZ, $layername);
                $layername =~ s/_FSLPEERFSL$//;
                
                print "Layername: ". $layername;
                system "svscmd.exe \"".$layername."\" A 1>nul " ;
                print "  ... wurde gestarted\n"            
            }
    }
    $hkey->Close();
    $hklm_temp->Close();
}