1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
package network::ifw;
use dbus_object;
use Socket;
our @ISA = qw(dbus_object);
sub new {
my ($type, $bus, $filter) = @_;
my $con = $bus->{connection};
$con->add_filter($filter);
$con->add_match("type='signal',interface='com.mandriva.monitoring.ifw'");
my $o = dbus_object::new($type,
$bus,
"com.mandriva.monitoring",
"/com/mandriva/monitoring/ifw",
"com.mandriva.monitoring.ifw");
dbus_object::set_gtk2_watch($o);
$o;
}
sub blacklist {
my ($o, $seq, $blacklist) = @_;
$o->call_method('Blacklist',
Net::DBus::Binding::Value->new(&Net::DBus::Binding::Message::TYPE_UINT32, $seq),
Net::DBus::Binding::Value->new(&Net::DBus::Binding::Message::TYPE_UINT32, $blacklist));
}
sub unblacklist {
my ($o, $addr) = @_;
$o->call_method('UnBlacklist',
Net::DBus::Binding::Value->new(&Net::DBus::Binding::Message::TYPE_UINT32, $addr));
}
sub whitelist {
my ($o, $addr) = @_;
$o->call_method('Whitelist',
Net::DBus::Binding::Value->new(&Net::DBus::Binding::Message::TYPE_UINT32, $addr));
}
sub unwhitelist {
my ($o, $addr) = @_;
$o->call_method('UnWhitelist',
Net::DBus::Binding::Value->new(&Net::DBus::Binding::Message::TYPE_UINT32, $addr));
}
sub get_interactive {
my ($o) = @_;
$o->call_method('GetMode');
}
sub set_interactive {
my ($o, $mode) = @_;
$o->call_method('SetMode',
Net::DBus::Binding::Value->new(&Net::DBus::Binding::Message::TYPE_UINT32, $mode));
}
sub get_reports {
my ($o) = @_;
$o->call_method('GetReports');
}
sub get_blacklist {
my ($o) = @_;
$o->call_method('GetBlacklist');
}
sub get_whitelist {
my ($o) = @_;
$o->call_method('GetWhitelist');
}
sub format_date {
my ($timestamp) = @_;
require c;
c::strftime("%c", localtime($timestamp));
}
sub get_service {
my ($port) = @_;
getservbyport($port, undef) || $port;
}
sub get_ip_address {
my ($addr) = @_;
inet_ntoa(pack('L', $addr));
}
sub resolve_address {
my ($ip_addr) = @_;
#- try to resolve address, timeout after 2 seconds
my $hostname;
eval {
local $SIG{ALRM} = sub { die "ALARM" };
alarm 2;
$hostname = gethostbyaddr(inet_aton($ip_addr), AF_INET);
alarm 0;
};
$hostname || $ip_addr;
}
1;
|