[prev] [thread] [next] [lurker] [Date index for 2005/02/08]
Author: simon Date: 2005-02-08 12:55:14 +0000 (Tue, 08 Feb 2005) New Revision: 1842 Added: trunk/buscador/bin/ trunk/buscador/bin/buscador Log: New buscador tool for installing, setting up and importing mail into a Buscador system Added: trunk/buscador/bin/buscador =================================================================== --- trunk/buscador/bin/buscador 2005-02-08 12:54:42 UTC (rev 1841) +++ trunk/buscador/bin/buscador 2005-02-08 12:55:14 UTC (rev 1842) @@ -0,0 +1,208 @@ +#!perl -w + +use strict; +use Buscador::Root; +use Email::Folder; +use File::NCopy; +use Sys::Hostname; +use utf8; +use Text::Unidecode; + +$|++; + + + + +goto SKIP unless @ARGV; +# die "You must pass in at least one argument\n" unless @ARGV; + +# we may be asked to init or setup first + +if ($ARGV[0] =~ /-init/) { + init(); + exit 0; +} elsif ($ARGV[0] =~ /-where/) { + print "$0\n"; + exit 0; +} + + +SKIP: + +require Buscador::Config; +require Email::Store; +require Email::Store::Mail; + +Buscador::Config->import; +Email::Store->import(Buscador::Config->dsn); + +# hmm there's no arguments ... check to see there's anything on STDIN +unless (@ARGV) { + my $data = join '', <>; + # chomp out From_ lines from naughty MTAs + $data =~ s/^From .+$//m; + Email::Store::Mail->store($data); + exit 0; +} + + +if ($ARGV[0] =~ /-setup/) { + print "Setting up ... "; + Email::Store->setup; + print " done\n"; + shift; +} + +# nothing to do now +exit 0 unless @ARGV; + + + +print "Preparing to import ...\n"; + +foreach my $folder (@ARGV) { + print "\nImporting $folder\n"; + + my $f = Email::MIMEFolder->new($folder); + unless ( $f ) { + print "\t FAILED!\n"; + next; + } + while (my $message = $f->next_message) + { + print "\tStoring ",unidecode($message->header('subject'))," - ", $message->header('message-id')," ..."; + Email::Store::Mail->store($message->as_string); + print "\n"; + } + +} + +END: print "\n...Finished\n"; + + +# copy all the files across and generate a config file +sub init { + +# find our hostname (almost certainly wrong but it gives people an idea) +my $host = hostname; + +print "Copying files from $root ... "; +# and get ready to copy ... +my $file = File::NCopy->new( recursive => 1 ); + +# copy over the chrome and templates dirctory +$file->copy("$root/chrome",".") or die "Couldn't copy chrome across from $root/chrome\n"; +$file->copy("$root/templates",".") or die "Couldn't copy templates across from $root/templates\n"; + +print "done\n"; + +print "Generating sample config file ... "; +# now create a sample config file +open (FILE, ">buscador.config") || die "Couldn't write sample buscador.config : $!\n"; +print FILE << "EOC"; + +# what our database should be +dsn = dbi:SQLite:email.db + +# the url where buscador will be installed +uri = http://www.${host}/buscador + +# and the url where the images are going to be +image_uri = http://www.${host}/buscador/chrome + +EOC +close (FILE); +print "done\n"; + +print << "EOH"; + +All files have been copied over successfully and a sample config file +has been written. You should check this over and make any necessary +changes. + +After that add something like this to your httpd.conf file + + <Location /buscador> + SetHandler perl-script + PerlRequire Buscador + </Location> + +If you do want to retain the default and use an SQLite database then it +should be noted that the web server needs write permissions to the file +email.db and to this directory for locking. + +You will then need to import some mails into your database using +something like the buscador-import utility + + % buscador -setup + +and then for any mail folders you want to import + + % buscador /path/to/mail/folder + +Or you can cat mails into buscador-import in order to add them. +This is useful as an entry into an alias file + + my_archiver: "|/path/to/buscador" + +You can find out where buscador-import is located by doing + + buscador -where + +EOH + +# TODO +# check permissions? + +} + + +package Email::MIMEFolder; +use base 'Email::Folder'; +use Email::MIME; +sub bless_message { Email::MIME->new($_[1]) }; +1; + + +__END__ + +=head1 NAME + +buscador - setup and import emails into a Buscador system + +=head1 USAGE + +Change to the directory with your buscador.config file in it. + +If you haven't already done so, do this + + % buscador -setup + +Then for every email folder you wish to import do + + % buscador /path/to/folder + +Or alternatively you can cat a mail into it + + % cat email.txt | buscador + +This is useful for mail alias files. + + my_archiver: "|/path/to/buscador" + +You can find out where buscador-import is located by doing + + buscador -where + +=head1 AUTHOR + +Simon Wistow <simon@xxxxxxxxxx.xxx> + +=head1 COPYRIGHT and LICENSE + +Copyright 2004, Simon Wistow + +This library is free software; you can redistribute it and/or modify +it under the same terms as Perl itself. + +=cut
Generated at 13:00 on 08 Feb 2005 by mariachi 0.52