From 4a0674cf55a8e2a76da1f88cce520acc3098774b Mon Sep 17 00:00:00 2001
From: root <root@new-fish.medaka.james.internal>
Date: Tue, 12 Sep 2023 13:46:41 +0100
Subject: new supermicro bug for portunus

---
 INF/SuperMicro.pm | 21 ++++++++++++++-------
 1 file changed, 14 insertions(+), 7 deletions(-)

diff --git a/INF/SuperMicro.pm b/INF/SuperMicro.pm
index 121d36a..151735d 100644
--- a/INF/SuperMicro.pm
+++ b/INF/SuperMicro.pm
@@ -21,6 +21,7 @@ sub login($) {
     my $self = shift;
 
     my $post = POST( $self->{bmc_url} . '/cgi/login.cgi' );
+    $post->header( 'Referer' => $self->{bmc_url}.'/'); 
     my $form_content =
       'name=' . $self->{user} . '&' . 'pwd=' . $self->{password};
 
@@ -55,11 +56,14 @@ sub view($) {
 
     $self->login() unless defined $self->{logged_in};
 
-    my $get = GET( $self->{bmc_url}
-          . '/cgi/url_redirect.cgi?url_name=ikvm&url_type=jwsk' );
+    my $get = GET( $self->{bmc_url} . '/cgi/url_redirect.cgi?url_name=ikvm&url_type=jwsk' );
+    $get->header( 'Referer' => $self->{bmc_url}.'/'); 
+
 
     my $res = $self->{ua}->request($get);
 
+    print $res->request->as_string;
+
     unless ( $res->is_success ) {
         print STDERR "JWSK frequest failed - did not get 200\n";
         return -1;
@@ -89,17 +93,18 @@ sub view($) {
 
     if ( -d $prefix . $v ) {
         printf "Known version\n";
-        $prefix .= $v . '/';
     }
     elsif ( scalar(@$args) == 8 ) {
         printf "Unknow version $v, 8 args using 1.69.21\n";
-        $prefix .= '1.69.21.0x0/';
+        $v = '1.69.21.0x0';
     }
     else {
         printf "Unknow version $v, 10 args using 1.69.25\n";
-        $prefix .= '1.69.25.0x0/';
+        $v = '1.69.21.0x0';
     }
 
+        $prefix .= $v . '/';
+
     if ( defined $self->{proxy_host} ) {
         my $tmp = File::Temp->new( UNLINK => 0, SUFFIX => '.cnf' );
 
@@ -134,6 +139,7 @@ sub get_host_power($) {
     $self->login() unless defined $self->{logged_in};
 
     my $post         = POST( $self->{bmc_url} . '/cgi/ipmi.cgi' );
+    $post->header( 'Referer' => $self->{bmc_url}.'/'); 
     my $form_content = 'op=POWER_INFO.XML&r=(0%2C0)';
 
     $post->header( 'Content-Type'   => 'application/x-www-form-urlencoded' );
@@ -168,6 +174,7 @@ sub set_host_power($$) {
     $self->login() unless defined $self->{logged_in};
 
     my $post         = POST( $self->{bmc_url} . '/cgi/ipmi.cgi' );
+    $post->header( 'Referer' => $self->{bmc_url}.'/'); 
     my $form_content = 'op=POWER_INFO.XML&r=(1%2C' . $what . ')';
 
     $post->header( 'Content-Type'   => 'application/x-www-form-urlencoded' );
@@ -265,7 +272,7 @@ sub new ($;$) {
     my ( $class, $parm ) = @_;
     my $self;
 
-    $self->{ua}         = my $ua = LWP::UserAgent->new;
+    $self->{ua}         = my $ua = LWP::UserAgent->new(agent => 'Mozilla/5.0 (X11; Linux x86_64; rv:107.0) Gecko/20100101 Firefox/107.0');
     $self->{cookie_jar} = HTTP::Cookies->new();
     $self->{ua}->cookie_jar( $self->{cookie_jar} );
 
@@ -277,7 +284,7 @@ sub new ($;$) {
     $self->{name} = $parm->{name} || $self->{host};
 
     $self->{bmc_url} = $parm->{bmc_url}
-      || 'https://' . $self->{host};
+      || 'http://' . $self->{host};
 
     $self->{ua}->ssl_opts(
         SSL_verify_mode => IO::Socket::SSL::SSL_VERIFY_NONE,
-- 
cgit v1.2.3