/[pxelator]/lib/PXElator/amt.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /lib/PXElator/amt.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 482 - (hide annotations)
Sat Jan 23 18:31:14 2010 UTC (14 years, 2 months ago) by dpavlin
File size: 1644 byte(s)
use store::audit proxy all over the place

1 dpavlin 181 package amt;
2    
3     use warnings;
4     use strict;
5    
6 dpavlin 191 use lib '/srv/Intel-AMT/lib/';
7 dpavlin 181 use Intel::AMT::RemoteControl;
8     use Intel::AMT::NetworkAdministration;
9 dpavlin 385 use Intel::AMT::EventManager;
10 dpavlin 181 use Data::Dump qw/dump/;
11 dpavlin 186 use Regexp::Common qw/net/;
12 dpavlin 181
13     use html;
14 dpavlin 330 use ping;
15 dpavlin 482 use store;
16 dpavlin 376 use Carp qw/confess/;
17 dpavlin 181
18 dpavlin 376 sub ip {
19 dpavlin 380 my ( $client_ip, $amt ) = @_;
20 dpavlin 385 return unless $client_ip;
21 dpavlin 380 $amt ||= client::conf( $client_ip => 'amt' );
22     my ( $passwd, $ip ) = split(/\s+/, $amt);
23 dpavlin 186 ( $ip, $passwd ) = ( $passwd, $ip ) if $passwd =~ m/$RE{net}{IPv4}/;
24 dpavlin 181
25 dpavlin 262 $ip ||= $client_ip;
26    
27 dpavlin 376 $ENV{AMT_PASSWORD} = $passwd;
28 dpavlin 181 $ENV{AMT_HOST} = $ip;
29 dpavlin 473
30     my $hostname = client::conf( $client_ip => 'hostname' ) || $client_ip;
31    
32     client::conf( $ip => 'hostname', default => "amt-$hostname" );
33    
34     return $ip;
35 dpavlin 376 }
36    
37     sub power_state {
38     my $state = eval { Intel::AMT::RemoteControl::SystemPowerState };
39 dpavlin 482 store::audit('SystemPowerState', { ip => $ENV{AMT_HOST}, SystemPowerState => $state });
40 dpavlin 376 return $state;
41     }
42    
43 dpavlin 380 sub power_on {
44     ip @_;
45     my $state = power_state;
46     defined $state && ( $state & 0x0f ) == 0;
47     }
48    
49 dpavlin 385 sub network {
50 dpavlin 376 ip @_;
51    
52 dpavlin 385 my $amt = eval { Intel::AMT::NetworkAdministration::network_settings };
53     if ( $@ ) {
54     warn "ERROR $@";
55     } else {
56     $amt->{ip} = $ENV{AMT_HOST};
57 dpavlin 482 store::audit('log', $amt );
58 dpavlin 385 }
59 dpavlin 380 $amt;
60 dpavlin 181 }
61    
62 dpavlin 385 sub log {
63     ip @_;
64 dpavlin 376
65 dpavlin 385 my $amt = eval { Intel::AMT::EventManager::ReadEventLogRecords };
66     if ( $@ ) {
67     warn "ERROR $@";
68     } else {
69     $amt->{ip} = $ENV{AMT_HOST};
70 dpavlin 482 store::audit('log', $amt );
71 dpavlin 385 }
72     $amt;
73     }
74    
75 dpavlin 376 sub RemoteControl {
76     ip shift;
77     my $command = shift;
78     eval { Intel::AMT::RemoteControl::run( $command ) };
79 dpavlin 482 store::audit( $command, { ip => $ENV{AMT_HOST}, error => $@ } );
80 dpavlin 376 warn "ERROR $@" if $@;
81     }
82    
83 dpavlin 181 1;

  ViewVC Help
Powered by ViewVC 1.1.26