summaryrefslogtreecommitdiffstats
path: root/INF/SuperMicro.pm
diff options
context:
space:
mode:
Diffstat (limited to 'INF/SuperMicro.pm')
-rw-r--r--INF/SuperMicro.pm123
1 files changed, 38 insertions, 85 deletions
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 = "<html><head></head><body>" . $content . "</body></html>";
-#
-# $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) = @_;