HTML-EP-Glimpse
view release on metacpan or search on metacpan
lib/HTML/EP/Glimpse/Install.pm view on Meta::CPAN
# -*- perl -*-
#
# HTML::EP::Glimpse - A simple search engine using Glimpse
#
#
# Copyright (C) 1998 Jochen Wiedmann
# Am Eisteich 9
# 72555 Metzingen
# Germany
#
# Phone: +49 7123 14887
# Email: joe@ispsoft.de
#
# All rights reserved.
#
# You may distribute this module under the terms of either
# the GNU General Public License or the Artistic License, as
# specified in the Perl README file.
#
############################################################################
use strict;
use HTML::EP::Install ();
use File::Basename ();
use File::Path ();
use ExtUtils::MakeMaker ();
use Exporter ();
use Symbol ();
package HTML::EP::Glimpse::Install;
use vars qw(@EXPORT @ISA $VERSION);
@EXPORT = qw(Install Config);
@ISA = qw(Exporter);
$VERSION = '0.02';
sub Install {
require HTML::EP::Glimpse::Config;
my $cfg = $HTML::EP::Glimpse::Config::config;
my $basedir = $cfg->{'html_base_dir'};
print "Copying HTML files from directory 'html' to $basedir.\n";
HTML::EP::Install::InstallHtmlFiles('html', $basedir);
# Create the "var" directory and make it owned by the web servers UID
my $vardir = File::Spec->catdir($basedir, "admin", "var");
my($user, $passwd, $uid, $gid) = getpwnam($cfg->{'httpd_user'});
die "No such user: $cfg->{'httpd_user'}" unless defined $uid;
if (-d $vardir) {
my ($dev, $ino, $mode,$nlink,$u,$g) = stat $vardir;
print STDERR "Warning: Directory $vardir is not owned by the httpd",
" user, $cfg->{'httpd_user'}\n" unless $u == $uid;
print STDERR "Warning: Directory $vardir is not writable and readable",
" by the owner" unless ($mode & 0700) == 0700;
} else {
print "Creating directory $vardir, mode 0700, owned by $cfg->{'httpd_user'}.\n";
File::Path::mkpath($vardir, 0, 0700);
chown $uid, $gid, $vardir;
}
}
sub PathOf {
my $self = shift; my $prog = shift;
foreach my $dir (File::Spec->path()) {
my $f = File::Spec->catfile($dir, $prog);
return $f if -x $f;
}
File::Spec->catfile("/usr/bin", $prog);
}
sub new {
my $proto = shift();
my $file = shift() || "lib/HTML/EP/Glimpse/Config.pm";
my $cfg = eval {
require HTML::EP::Glimpse::Config;
$HTML::EP::Glimpse::Config::config;
} || {};
bless($cfg, (ref($proto) || $proto));
my $config = shift();
$config = (! -f $file ) unless defined $config;
if ($config || !defined($cfg->{'install_html_files'})) {
my $reply = ExtUtils::MakeMaker::prompt
("Install HTML files",
(!defined($cfg->{'install_html_files'}) ||
$cfg->{'install_html_files'}) ? "y" : "n");
$cfg->{'install_html_files'} = ($reply =~ /y/i);
}
if ($cfg->{'install_html_files'} &&
($config || !$cfg->{'html_base_dir'})) {
$cfg->{'html_base_dir'} = ExtUtils::MakeMaker::prompt
("Directory for installing HTML files",
($cfg->{'html_base_dir'} || "/home/httpd/html/Glimpse"));
$cfg->{'vardir'} = File::Spec->catdir($cfg->{'html_base_dir'},
'admin', 'var');
}
if ($config || !$cfg->{'httpd_user'}) {
$cfg->{'httpd_user'} = ExtUtils::MakeMaker::prompt
("UID the httpd is running as",
($cfg->{'httpd_user'} || "nobody"));
}
if ($config || !$cfg->{'glimpse_path'}) {
$cfg->{'glimpse_path'} = ExtUtils::MakeMaker::prompt
("Path of the glimpse binary",
$cfg->{'glimpse_path'} || $cfg->PathOf("glimpse"))
|| die "Missing path of glimpse binary";
}
print STDERR "Warning: Program $cfg->{'glimpse_path'} not found."
unless -x $cfg->{'glimpse_path'};
if ($config || !$cfg->{'glimpseindex_path'}) {
$cfg->{'glimpseindex_path'} = ExtUtils::MakeMaker::prompt
("Path of the glimpseindex binary",
$cfg->{'glimpseindex_path'} || $cfg->PathOf("glimpseindex"))
|| die "Missing path of glimpseindex binary";
}
$cfg;
( run in 2.182 seconds using v1.01-cache-2.11-cpan-71847e10f99 )