From 5cb8c234f0ce52b4c79851854f9830b092b42dd7 Mon Sep 17 00:00:00 2001 From: fishsoupisgood Date: Mon, 13 May 2019 08:42:18 +0100 Subject: Add support for old super micro, and support proxies with supermicro --- INF/SuperMicro.pm | 123 +++++++++++++++++------------------------------------- 1 file changed, 38 insertions(+), 85 deletions(-) (limited to 'INF') diff --git a/INF/SuperMicro.pm b/INF/SuperMicro.pm index 68927c7..3afa3d6 100644 --- a/INF/SuperMicro.pm +++ b/INF/SuperMicro.pm @@ -17,10 +17,6 @@ use XML::Simple; use Data::Dumper; use JSON::PP; -my $prefix = "/usr/local/share/inf/supermicro/"; - -my $jars = [ $prefix . "iKVM__V1.69.25.0x0.jar" ]; - sub login($) { my $self = shift; @@ -86,95 +82,52 @@ sub view($) { mkdir $ENV{HOME} . "/.supermicro_kvm"; chdir $ENV{HOME} . "/.supermicro_kvm"; - my $cp = join( ':', @$jars ); + my $prefix = "/usr/local/share/inf/supermicro/"; - if ( $self->{proxy_host} ) { - system( - "echo", - "java", - "-Djava.net.preferIPv4Stack=true", - "-Djava.net.useSystemProxies=false", - "-DsocksProxyVersion=4", - "-DsocksProxySet=true", - "-DsocksProxyHost=" . $self->{proxy_host}, - "-DsocksProxyPort=" . $self->{proxy_port}, - "-cp", - $cp, - "-Djava.library.path=" . $prefix, - "tw.com.aten.ikvm.KVMMain", - @$args - ); - system( - "java", - "-Djava.net.preferIPv4Stack=true", - "-Djava.net.useSystemProxies=false", - "-DsocksProxyVersion=4", - "-DsocksProxySet=true", - "-DsocksProxyHost=" . $self->{proxy_host}, - "-DsocksProxyPort=" . $self->{proxy_port}, - "-cp", - $cp, - "-Djava.library.path=" . $prefix, - "tw.com.aten.ikvm.KVMMain", - @$args - ); + return undef unless $c =~ /iKVM__V([A-Za-z0-9\.]+).jar/; + my $v = $1; + 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/'; } else { - system( "java", "-cp", $cp, "-Djava.library.path=" . $prefix, - "tw.com.aten.ikvm.KVMMain", @$args ); + printf "Unknow version $v, 10 args using 1.69.25\n"; + $prefix .= '1.69.25.0x0/'; + } + + if ( defined $self->{proxy_host} ) { + my $tmp = File::Temp->new( UNLINK => 0, SUFFIX => '.cnf' ); + + select( ( select($tmp), $| = 1 )[0] ); + + print $tmp "server = 127.0.0.1\n"; + print $tmp "server_port = " . $self->{proxy_port} . "\n"; + print $tmp "local = 127.0.0.0/255.0.0.0\n"; + + $ENV{'LD_PRELOAD'} = 'libtsocks.so'; + $ENV{'TSOCKS_CONF_FILE'} = $tmp->filename; + + print "Filename is $tmp->filename\n"; } + my $jars = [ $prefix . "iKVM__V" . $v . ".jar" ]; + + my $cp = join( ':', @$jars ); + + push @$java_args, "-cp"; + push @$java_args, $cp; + push @$java_args, "-Djava.library.path=" . $prefix; + push @$java_args, "tw.com.aten.ikvm.KVMMain"; + + system( "echo", "java", @$java_args, @$args ); + system( "java", @$java_args, @$args ); } -# -# unless ( $content =~ /Netscape'\) {(.*)}[\s\n]*else if/s ) { -# print STDERR "returned html doesn't look right\n"; -# return -1; -# } -# -# $content = $1; -# -# #$content=~ s/document.writeln\("(.*)"\);$/\1/m; -# $content =~ s/^\s*document.writeln\("(.*)"\);\s*$/\1/mg; -# $content =~ s/\\//g; -# -# $content =~ s/RCINFO1=.*$/RCINFO1="$self->{skey}"/m; -# $content =~ s/RCINFO6=.*$/RCINFO6="17990"/m; -# $content =~ s/RCINFOLANG=.*$/RCINFOLANG="en"/m; -# $content =~ s%(archive=)(/.*)$%\1$self->{proxy_url}\2%m; -# -# $content = "" . $content . ""; -# -# $self->{java_html} = $content; -# -# my $webserver_pid = fork(); -# -# if ( $webserver_pid == 0 ) { -# $SIG{INT} = sub { kill 'KILL', ( @{ $self->{to_kill} } ); die; }; -# $SIG{TERM} = sub { kill 'KILL', ( @{ $self->{to_kill} } ); die; }; -# -# $self->{server}->start; -# print STDERR "failed to web server"; -# sleep(100000); -# } -# -# push @{ $self->{to_kill} }, $webserver_pid; -# -# $SIG{INT} = sub { kill 'INT', ( @{ $self->{to_kill} } ); die; }; -# $SIG{TERM} = sub { kill 'TERM', ( @{ $self->{to_kill} } ); die; }; -# -# system( -# "appletviewer", -# "-J-Djava.security.manager", -# "-J-Djava.security.policy=/usr/local/share/inf/ilo/mypolicy", -# "-J-Djavax.net.ssl.trustStore=/usr/local/share/inf/ilo/server.jks", -# $self->{proxy_url} . "/html/java_irc.html" -# ); -# -# kill 'TERM', ( @{ $self->{to_kill} } ); -#} -# sub get_host_power($) { my ($self) = @_; -- cgit v1.2.3