source: main/trunk/greenstone2/bin/script/mirror.pl@ 28560

Last change on this file since 28560 was 28560, checked in by ak19, 10 years ago
  1. New subroutine util::set_gnomelib_env that sets the environment for gnomelib needed for running hashfile, suffix and wget which are dependent on the libiconv dll in ext/gnome-lib(-minimal). It's particularly the Mac Lions that need libiconv.2.dylib. 2. Updated the call to hashfile in doc.pm, the call to suffix in Phind.pm and the calls to wget in several perl scripts and modules to call util::set_gnomelib_env, though this will only set the environment once for each subshell.
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 4.5 KB
Line 
1#!/usr/bin/perl -w
2
3###########################################################################
4#
5# mirror.pl
6#
7# A component of the Greenstone digital library software
8# from the New Zealand Digital Library Project at the
9# University of Waikato, New Zealand.
10#
11# Copyright (C) 1999 New Zealand Digital Library Project
12#
13# This program is free software; you can redistribute it and/or modify
14# it under the terms of the GNU General Public License as published by
15# the Free Software Foundation; either version 2 of the License, or
16# (at your option) any later version.
17#
18# This program is distributed in the hope that it will be useful,
19# but WITHOUT ANY WARRANTY; without even the implied warranty of
20# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21# GNU General Public License for more details.
22#
23# You should have received a copy of the GNU General Public License
24# along with this program; if not, write to the Free Software
25# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
26#
27###########################################################################
28
29
30# This program uses w3mirror to mirror a web site. It looks for a
31# mirror program configuration files in etc, and if it finds them then
32# it runs the mirroring software using this configuration file, and placing
33# the mirror in the import directory.
34#
35# mirror.pl can use the w3mirror program or the wget program if they are
36# installed.
37#
38# To use w3mirror, the configuration file must be in etc/w3mir.cfg.
39# To use GNU wget, the configuration file (i.e. a wgetrc file) must
40# be in etc/wget.cfg and a file of the URLs to read in etc/wget.url
41
42BEGIN {
43 die "GSDLHOME not set\n" unless defined $ENV{'GSDLHOME'};
44 die "GSDLOS not set\n" unless defined $ENV{'GSDLOS'};
45 unshift (@INC, "$ENV{'GSDLHOME'}/perllib");
46 unshift (@INC, "$ENV{'GSDLHOME'}/perllib/plugins");
47 unshift (@INC, "$ENV{'GSDLHOME'}/perllib/classify");
48}
49
50use arcinfo;
51use colcfg;
52use util;
53use parsargv;
54
55sub print_usage {
56 print STDERR "\n";
57 print STDERR "mirror.pl: Uses w3mir or wget to sync a collections import data\n";
58 print STDERR " with a website.\n\n";
59 print STDERR " usage: $0 [options] collection-name\n\n";
60 print STDERR " options:\n";
61 print STDERR " -verbosity number 0=none, 3=lots\n";
62 print STDERR " -importdir directory Where to place the mirrored material\n";
63}
64
65
66&main ();
67
68sub main {
69 my ($verbosity, $importdir, $etcdir,
70 $collection, $configfilename, $collectcfg);
71
72 if (!parsargv::parse(\@ARGV,
73 'verbosity/\d+/2', \$verbosity,
74 'importdir/.*/', \$importdir )) {
75 &print_usage();
76 die "\n";
77 }
78
79 # get and check the collection name
80 if (($collection = &util::use_collection(@ARGV)) eq "") {
81 &print_usage();
82 die "\n";
83 }
84
85 # get the etc directory
86 $etcdir = &FileUtils::filenameConcatenate($ENV{'GSDLCOLLECTDIR'}, "etc");
87
88 # check the collection configuration file for options
89 my $interval = 0;
90 $configfilename = &FileUtils::filenameConcatenate($ENV{'GSDLCOLLECTDIR'},
91 "etc", "collect.cfg");
92 if (-e $configfilename) {
93 $collectcfg = &colcfg::read_collect_cfg ($configfilename);
94 if (defined $collectcfg->{'importdir'} && $importdir eq "") {
95 $importdir = $collectcfg->{'importdir'};
96 }
97 } else {
98 die "Couldn't find the configuration file $configfilename\n";
99 }
100
101 # fill in the default import directories if none
102 # were supplied, turn all \ into / and remove trailing /
103 $importdir = "$ENV{'GSDLCOLLECTDIR'}/import" if $importdir eq "";
104 $importdir =~ s/[\\\/]+/\//g;
105 $importdir =~ s/\/$//;
106
107 # make sure there is an import directory
108 if (! -e "$importdir") {
109 &FileUtils::makeDirectory($importdir);
110 }
111
112 # if w3mir.cfg exists,
113 # then we are using w3mirror to mirror the remote site
114 if (-e "$etcdir/w3mir.cfg") {
115
116 # run the mirror program from the import directory
117 my $cmd = "cd $importdir; ";
118 # need to ensure that the path to perl is quoted (in case there's spaces in it)
119 $cmd .= "\"".&util::get_perl_exec()."\" -S gsw3mir.pl -cfgfile $etcdir/w3mir.cfg";
120 # print "\n$cmd\n";
121 `$cmd`;
122
123 }
124
125 # if wget.cfg and wget.url both exist,
126 # then we are using GNU wget to mirror the remote site
127 elsif ((-e "$etcdir/wget.cfg") && (-e "$etcdir/wget.url")) {
128 $ENV{WGETRC} = "$etcdir/wget.cfg";
129 my $cmd = "\"".&util::get_perl_exec()."\" -S gsWget.pl --input-file=$etcdir/wget.url --directory-prefix=$importdir";
130 system($cmd);
131 }
132
133 # otherwise, there are no mirror copnfiguration files
134 else {
135 die "Couldn't find the mirror configuration files in $etcdir\n";
136 }
137
138
139}
140
141
142
143
144
145
Note: See TracBrowser for help on using the repository browser.