65 lines
2.0 KiB
Perl
65 lines
2.0 KiB
Perl
#!/usr/bin/perl
|
|
#
|
|
|
|
my @errors;
|
|
my $err = sub {
|
|
return unless @_;
|
|
print STDERR "Problem:\n" . join('', map { " * $_\n" } @_) . "\n";
|
|
exit 1;
|
|
};
|
|
|
|
############################################################################
|
|
print "[Checking site-local config....]\n";
|
|
############################################################################
|
|
|
|
my %modules = (
|
|
"Crypt::Cracklib" => { 'deb' => 'libcrypt-cracklib-perl',
|
|
'opt' => 'Provides checking of strong password.' },
|
|
"GnuPG::Interface" => { 'deb' => 'libgnupg-interface-perl',
|
|
'opt' => 'Crypto and signed message authentication.' },
|
|
"Inline" => { 'deb' => 'libinline-perl', },
|
|
"Crypt::SSLeay" => {'deb' => "libcrypt-ssleay-perl", },
|
|
"Geo::IP::PurePerl" => { 'opt' => "Provides IP to country mapping for stopping some CC fraud.", },
|
|
);
|
|
|
|
my @debs;
|
|
|
|
foreach my $mod (sort keys %modules) {
|
|
my $rv = eval "use $mod;";
|
|
if ($@) {
|
|
my $dt = $modules{$mod};
|
|
if ($dt->{'opt'}) {
|
|
print STDERR "Missing optional module $mod: $dt->{'opt'}\n";
|
|
} else {
|
|
push @errors, "Missing perl module: $mod";
|
|
}
|
|
push @debs, $dt->{'deb'} if $dt->{'deb'};
|
|
next;
|
|
}
|
|
my $ver_want = $modules{$mod}{ver};
|
|
my $ver_got = $mod->VERSION;
|
|
if ($ver_want && $ver_got && $ver_got < $ver_want) {
|
|
push @errors, "Out of date module: $mod (need $ver_want, $ver_got installed)";
|
|
}
|
|
}
|
|
|
|
unless (-e "/usr/share/doc/aspell-en" || -e "/usr/local/share/aspell") {
|
|
push @errors, "Spell check dictionary not installed?";
|
|
push @debs, "aspell-en";
|
|
}
|
|
|
|
unless (-d "$ENV{'LJHOME'}/temp") {
|
|
push @errors, "\$LJHOME/temp dir doesn't exist";
|
|
}
|
|
unless (-d "$ENV{'LJHOME'}/var") {
|
|
push @errors, "\$LJHOME/var dir doesn't exist";
|
|
}
|
|
|
|
if (@debs && -e '/etc/debian_version') {
|
|
print STDERR "\n# apt-get install ", join(' ', @debs), "\n\n";
|
|
}
|
|
|
|
$err->(@errors);
|
|
|
|
1;
|