summaryrefslogtreecommitdiff
path: root/FS/FS/Yori.pm
blob: b5bdc0c168eaeb0654a0c4be8ced02580a6f7c68 (plain)
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
package FS::Yori;
# a reporting program, to report information to the MCP

use strict;
use base 'Exporter';

our @EXPORT_OK = qw( reports report );

sub reports { #should be autogenerated i guess
  qw( freeside_version debian_version pg_version
      apache_version apache_mpm
      payment_gateways
    );
      #ssh_vulnkey
}

sub report {
  my $report = shift;
  $report =~ /^(\w+)$/ or die;
  eval "report_$report();";
}

sub report_all {
  foreach my $report ( reports() ) {
    print "$report: ". report($report). "\n";
  }
}

sub report_freeside_version {
  chomp( my $fs_version =
    `grep '^VERSION=' /home/ivan/freeside/Makefile | cut -d= -f2`
  );
  $fs_version;
}

sub report_debian_version {
  chomp( my $deb_version = `cat /etc/debian_version` );
  $deb_version;
}

sub report_pg_version {
  chomp( my $pg_version = `echo 'show server_version' | psql -t freeside` );
  chomp($pg_version); #two?
  $pg_version =~ s/^ +//;
  $pg_version;
}

sub report_apache_version {
  chomp( my $apache_version =
    `/usr/sbin/apache2 -v | head -1 | cut -d: -f2 | cut -d/ -f2 | cut -d' ' -f1`
  );
  $apache_version;
}

sub report_apache_mpm {
  chomp( my $apache_mpm =
    `/usr/sbin/apache2 -V | grep '^Server MPM' | cut -d: -f2`
  );
  $apache_mpm =~ s/^ +//;
  $apache_mpm;
}

sub report_payment_gateways {
  my @gateways = split(/\n/,
    `aptitude -F '%c %p' search 'libbusiness-onlinepayment-.*' | grep '^i ' | grep -v '^i libbusiness-onlinepayment-perl' | cut -c29- | cut -d- -f1`
  );
  join(', ', @gateways);
}

#sub report_ssh_vulnkey{
#  my $ssh_vulnkey = `ssh-vulnkey -a | grep COMPROMISED`;
#  $ssh_vulnkey;
#}

sub report_load {
  open LOAD, "</proc/loadavg" || return;
  my($one, $five, $fifteen) = split ' ', <LOAD>;
  close LOAD;
  ($one, $five, $fifteen);
}

sub report_freememory {
  open MEM, "</proc/meminfo" || return;
  my $free = 0;
  my @interesting = qw( MemFree Cached SwapFree );
  while (<MEM>) {
    /^(\w*):\s*(\d*) kB$/ || next;
   next unless grep { $_ eq $1 } @interesting;
   $free += $2;
  }
  close MEM;
  $free;
}