]> git.zerfleddert.de Git - rsbs2/blobdiff - rsbs2.pl
supermicro-kvm: handle redirects to https
[rsbs2] / rsbs2.pl
index cb0534a5605c4ea6f7e888a6f4e488c69929339e..76f745b52e3c471aa97f023d2c62b3612e7c7c9d 100755 (executable)
--- a/rsbs2.pl
+++ b/rsbs2.pl
@@ -219,8 +219,9 @@ sub serveraction {
 
        my $pmode = 2;
 
-       setprop("SERVER_HARD_RESET_VIA_IPMI", "FALSE");
-       setprop("SERVER_POWER_CHANGE_VIA_IPMI", "FALSE");
+       #setprop("SERVER_HARD_RESET_VIA_IPMI", "FALSE");
+       #setprop("SERVER_POWER_CHANGE_VIA_IPMI", "FALSE");
+
        #PM Mode
        setprop("SERVER_POWER_ON_MODE", sprintf("0x%x", $pmode));
        setprop("SERVER_POWER_OFF_MODE", sprintf("0x%x", $pmode));
@@ -235,23 +236,37 @@ sub serveraction {
 }
 
 sub powerup {
-       print "powerup\n" if ($verbose);
-       setprop("SERVER_POWER_ON_PULSE_MS", sprintf("0x%x", $poweronms));
-       setprop("SERVER_POWER_OFF_PULSE_MS", "0x0");
-       serveraction("powercycle");
+       if (_getprop("SERVER_POWER_CHANGE_VIA_IPMI")->{PROPLIST}->{PROP}->{VAL} eq "TRUE") {
+               print "powerup via IPMI\n" if ($verbose);
+               serveraction("powerup");
+       } else {
+               print "powerup via relay (hack)\n" if ($verbose);
+               setprop("SERVER_POWER_ON_PULSE_MS", sprintf("0x%x", $poweronms));
+               setprop("SERVER_POWER_OFF_PULSE_MS", "0x0");
+               serveraction("powercycle");
+       }
 }
 
 sub powerdown {
-       print "powerdown\n" if ($verbose);
-       setprop("SERVER_POWER_ON_PULSE_MS", "0x0");
-       setprop("SERVER_POWER_OFF_PULSE_MS", sprintf("0x%x", $poweroffms));
-       serveraction("powercycle");
+       if (_getprop("SERVER_POWER_CHANGE_VIA_IPMI")->{PROPLIST}->{PROP}->{VAL} eq "TRUE") {
+               print "powerdown via IPMI\n" if ($verbose);
+               serveraction("powerdown");
+       } else {
+               print "powerdown via relay (hack)\n" if ($verbose);
+               setprop("SERVER_POWER_ON_PULSE_MS", "0x0");
+               setprop("SERVER_POWER_OFF_PULSE_MS", sprintf("0x%x", $poweroffms));
+               serveraction("powercycle");
+       }
 }
 
 sub powercycle {
-       print "powercycle\n" if ($verbose);
-       setprop("SERVER_POWER_ON_PULSE_MS", sprintf("0x%x", $poweronms));
-       setprop("SERVER_POWER_OFF_PULSE_MS", sprintf("0x%x", $poweroffms));
+       if (_getprop("SERVER_POWER_CHANGE_VIA_IPMI")->{PROPLIST}->{PROP}->{VAL} eq "TRUE") {
+               print "powercycle via IPMI\n" if ($verbose);
+       } else {
+               print "powercycle via relay\n" if ($verbose);
+               setprop("SERVER_POWER_ON_PULSE_MS", sprintf("0x%x", $poweronms));
+               setprop("SERVER_POWER_OFF_PULSE_MS", sprintf("0x%x", $poweroffms));
+       }
        serveraction("powercycle");
 }
 
@@ -385,7 +400,7 @@ sub get_sensors {
                return;
        }
 
-       my $req = '<REQ CMD="sensorpropget"><HANDLE>0x1</HANDLE><SENSORLIST>';
+       my $req = '<REQ CMD="sensorpropget"><HANDLE>'.$slist->{HANDLE}.'</HANDLE><SENSORLIST>';
        foreach my $s (@{$slist->{SENSORLIST}->{SENSOR}}) {
                $req .= '<SENSOR KEY="'.$s->{KEY}.'"/>';
        }
@@ -412,7 +427,7 @@ sub show_sensors {
                print $sensor->{NAME}.": ".$sensor->{VAL}.$sensor->{UNITS};
 
                my @info = ();
-               foreach my $field qw(MIN MAX LOW_NON_CRITICAL UPPER_NON_CRITICAL LOW_CRITICAL UPPER_CRITICAL) {
+               foreach my $field (qw(MIN MAX LOW_NON_CRITICAL UPPER_NON_CRITICAL LOW_CRITICAL UPPER_CRITICAL)) {
                        if ($sensor->{$field} ne '') {
                                push @info, "${field}: ".$sensor->{$field}.$sensor->{UNITS};
                        }
@@ -477,7 +492,8 @@ sub status {
 
 sub spawn_gui {
        my $base = shift;
-       open(APPLET,"|appletviewer /dev/stdin");
+       $ENV{'AWT_TOOLKIT'} = 'MToolkit';
+       open(APPLET,"|appletviewer -J-Djava.security.policy=applet.policy -J-Djava.net.preferIPv4Stack=true /dev/stdin");
        print APPLET '<HTML><HEAD><TITLE>RSB S2 User Interface</TITLE></HEAD>';
        print APPLET '<BODY>';
        print APPLET '<object width="640" height="480">';
@@ -689,10 +705,22 @@ my $host = ${$Config{$hostalias}}{"host"};
 $poweronms = ${$Config{$hostalias}}{"poweronms"} if (defined(${$Config{$hostalias}}{"poweronms"}));
 $poweroffms = ${$Config{$hostalias}}{"poweroffms"} if (defined(${$Config{$hostalias}}{"poweroffms"}));
 
-$url = "http://${host}";
+my $ssl = ${$Config{$hostalias}}{"ssl"};
+my $port = ${$Config{$hostalias}}{"port"};
+
+if (defined($ssl) && (lc($ssl) eq 'yes')) {
+       $ENV{HTTPS_DEBUG} = 1;
+       $ENV{HTTPS_VERSION} = 3;
+       $port = 443 if (!defined($port));
+       $url = "https://${host}:${port}";
+} else {
+       $port = 80 if (!defined($port));
+       $url = "http://${host}:${port}";
+}
 
 if ($gui) {
        spawn_gui($url);
+       exit 0;
 }
 
 login(${$Config{$hostalias}}{"user"}, ${$Config{$hostalias}}{"pass"});
Impressum, Datenschutz