use lib '/srv/Intel-AMT/lib/';
use Intel::AMT::RemoteControl;
use Intel::AMT::NetworkAdministration;
+use Intel::AMT::EventManager;
use Data::Dump qw/dump/;
use Regexp::Common qw/net/;
use html;
use ping;
-use CouchDB;
+use store;
use Carp qw/confess/;
sub ip {
- my $client_ip = shift || confess "no ip";
- my ( $passwd, $ip ) = split(/\s+/, client::conf( $client_ip => 'amt' ));
+ my ( $client_ip, $amt ) = @_;
+ return unless $client_ip;
+ $amt ||= client::conf( $client_ip => 'amt' );
+ my ( $passwd, $ip ) = split(/\s+/, $amt);
( $ip, $passwd ) = ( $passwd, $ip ) if $passwd =~ m/$RE{net}{IPv4}/;
$ip ||= $client_ip;
- if ( ! ping::host( $ip ) ) {
- warn "W: ping $ip unreachable\n";
- }
-
- warn "amt $ip ", '*' x length($passwd), "\n";
-
$ENV{AMT_PASSWORD} = $passwd;
$ENV{AMT_HOST} = $ip;
-}
+ my $hostname = client::conf( $client_ip => 'hostname' ) || $client_ip;
-sub power_on {
- ip @_;
- ( power_state() & 0x0f ) == 0;
+ client::conf( $ip => 'hostname', default => "amt-$hostname" );
+
+ return $ip;
}
sub power_state {
my $state = eval { Intel::AMT::RemoteControl::SystemPowerState };
- CouchDB::audit('SystemPowerState', { ip => $ENV{AMT_HOST}, SystemPowerState => $state });
+ store::audit('SystemPowerState', { ip => $ENV{AMT_HOST}, SystemPowerState => $state });
return $state;
}
-sub info {
+sub power_on {
+ ip @_;
+ my $state = power_state;
+ defined $state && ( $state & 0x0f ) == 0;
+}
+
+sub network {
ip @_;
- my $amt;
- eval {
- $amt = Intel::AMT::NetworkAdministration::network_settings;
- $amt->{power_state} = Intel::AMT::RemoteControl::SystemPowerState;
- CouchDB::audit('network', $amt );
- };
- warn "ERROR amt $@" if $@;
-
- my $out;
- my $ip = $ENV{AMT_HOST};
-
- $out =
- qq| <a href="http://$ip:16992/" target="$ip">amt</a>|
- . qq| <a href="http://$ip:16992/ip.htm" target="$ip">ip</a>|
- . qq|<br>|
- . html::pre_dump( $amt )
- ;
-
- return $out;
+ my $amt = eval { Intel::AMT::NetworkAdministration::network_settings };
+ if ( $@ ) {
+ warn "ERROR $@";
+ } else {
+ $amt->{ip} = $ENV{AMT_HOST};
+ store::audit('log', $amt );
+ }
+ $amt;
}
+sub log {
+ ip @_;
+
+ my $amt = eval { Intel::AMT::EventManager::ReadEventLogRecords };
+ if ( $@ ) {
+ warn "ERROR $@";
+ } else {
+ $amt->{ip} = $ENV{AMT_HOST};
+ store::audit('log', $amt );
+ }
+ $amt;
+}
sub RemoteControl {
ip shift;
my $command = shift;
eval { Intel::AMT::RemoteControl::run( $command ) };
- CouchDB::audit( $command, { ip => $ENV{AMT_HOST}, error => $@ } );
+ store::audit( $command, { ip => $ENV{AMT_HOST}, error => $@ } );
warn "ERROR $@" if $@;
}