]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blob - filters/postal-accept.pl
test wiki
[git.ikiwiki.info.git] / filters / postal-accept.pl
1 #!/usr/bin/perl
3 use Email::Folder;
4 use Email::LocalDelivery;
6 use Convert::YText qw(decode_ytext encode_ytext);
8 # we need at least version 2.54 of IkiWiki for the new config api
9 BEGIN { require IkiWiki; die unless ($IkiWiki::version >= 2.54) }
11 use IkiWiki::Setup;
12 use Getopt::Long;
13 use Carp;
15 my $config_file=undef;
17 GetOptions('config=s'=>\$config_file);
19 die "configuration file is mandatory" unless ($config_file);
21 my %config=IkiWiki::Setup::load($config_file);
23 my $queue=$config{queue} || croak("missing queue location");
25 my $folder=Email::Folder->new($path,reader=>'Email::Folder::maildir') 
26     || croak("mailbox could not be opened");
28 for my $messages  ($folder->messages){
30     my $to=$message->to;
31     if ($to =~ m/$prefix($Convert::YText::valid_rex)/){
32         my $page=decode_ytext($1);
33         
34         # sanity check the page path
35         
36         # check if comments folder exists, create if needed
38         # write the message to the folder
40         $msg_file= $comment_folder->write($message);
42         # update vcs, copied from Ikiwiki::Plugins::attachment
43     
44         if ($config{rcs}) {
45             IkiWiki::rcs_add($filename);
46             IkiWiki::disable_commit_hook();
47             IkiWiki::rcs_commit($filename, gettext("attachment upload"),
48                                 IkiWiki::rcs_prepedit($filename),
49                                 $session->param("name"), $ENV{REMOTE_ADDR});
50             IkiWiki::enable_commit_hook();
51             IkiWiki::rcs_update();
52         }
54         # tag for deletion
55         
56         push (@must_die, $message->message-id);
57         
58         $folder->delete($message);
60     }
62     
63     # refresh wiki
64     IkiWiki::refresh();
65     IkiWiki::saveindex();
66  
67     # make regex for message-id
69     # called delete_message from Email::Delete
70 }