diff options
| author | fukachan <fukachan> | 2006-02-04 08:00:09 +0000 |
|---|---|---|
| committer | fukachan <fukachan> | 2006-02-04 08:00:09 +0000 |
| commit | c97f07ece9ae058229b76efacbc97b5f4cd1fcc7 (patch) | |
| tree | b13c2e7b58c9e3769b44561baf35437322d64545 /fml/lib/FML/CreateOnPost.pm | |
| parent | d9abdd754b385693935a632e68b9e69e38417f76 (diff) | |
| download | fml8-c97f07ece9ae058229b76efacbc97b5f4cd1fcc7.tar.gz fml8-c97f07ece9ae058229b76efacbc97b5f4cd1fcc7.tar.bz2 fml8-c97f07ece9ae058229b76efacbc97b5f4cd1fcc7.zip | |
add basic CREATE-ON-POST support.
Diffstat (limited to 'fml/lib/FML/CreateOnPost.pm')
| -rw-r--r-- | fml/lib/FML/CreateOnPost.pm | 149 |
1 files changed, 149 insertions, 0 deletions
diff --git a/fml/lib/FML/CreateOnPost.pm b/fml/lib/FML/CreateOnPost.pm new file mode 100644 index 00000000..b8b136b4 --- /dev/null +++ b/fml/lib/FML/CreateOnPost.pm @@ -0,0 +1,149 @@ +#-*- perl -*- +# +# Copyright (C) 2006 Ken'ichi Fukamachi +# All rights reserved. This program is free software; you can +# redistribute it and/or modify it under the same terms as Perl itself. +# +# $FML: @template.pm,v 1.10 2006/01/07 13:16:41 fukachan Exp $ +# + +package FML::CreateOnPost; +use strict; +use vars qw(@ISA @EXPORT @EXPORT_OK $AUTOLOAD); +use Carp; + +=head1 NAME + +FML::CreateOnPost - CREATE-ON-POST + +=head1 SYNOPSIS + +=head1 DESCRIPTION + +=head1 METHODS + +=head2 C<new()> + +constructor. + +=cut + +# Descriptions: constructor. +# Arguments: OBJ($self) OBJ($curproc) +# Side Effects: none +# Return Value: OBJ +sub new +{ + my ($self, $curproc) = @_; + my ($type) = ref($self) || $self; + my $me = { _curproc => $curproc }; + return bless $me, $type; +} + + +# Descriptions: create ml. +# Arguments: OBJ($self) STR($ml_addr) +# Side Effects: none +# Return Value: none +sub create_ml +{ + my ($self, $ml_addr) = @_; + my $curproc = $self->{ _curproc }; + my $myname = "fml"; + my $hints = {}; + + # prepare parameters; + my ($ml_name, $ml_domain) = split(/\@/, $ml_addr); + $hints->{ ARGV } = [ $ml_addr, "newml" ]; + $hints->{ argv } = [ $ml_addr, "newml", '-O', 'update-alias=no' ]; + $hints->{ options } = { 'O' => { 'update-alias' => 'no' } }; + + eval q{ + $curproc->log("emulate $myname to create $ml_name\@$ml_domain"); + + use FML::Process::Switch; + &FML::Process::Switch::NewProcess($curproc, + $myname, + $ml_name, + $ml_domain, + $hints); + }; + $curproc->logerror($@) if $@; +} + + +# Descriptions: run distribute process. +# Arguments: OBJ($self) STR($ml_addr) +# Side Effects: none +# Return Value: none +sub distribute_ml +{ + my ($self, $ml_addr) = @_; + my $curproc = $self->{ _curproc }; + my $myname = "distribute"; + my $maintainer = 'fukachan@home.fml.org'; + + # prepare parameters; + my ($ml_name, $ml_domain) = split(/\@/, $ml_addr); + my $hints = {}; + $hints->{ ARGV } = [ $ml_addr ]; + $hints->{ argv } = [ $ml_addr ]; + $hints->{ config_overload } = { + 'article_post_restrictions' => 'permit_anyone', + 'maintainer' => $maintainer, + }; + + # open STDIO + my $queue = $curproc->incoming_message_get_current_queue(); + if (defined $queue) { + my $class = "incoming"; + + close(STDIN); + unless ($queue->open($class, { in_channel => *STDIN{IO} })) { + my $qid = $queue->id(); + $curproc->logerror("cannot open qid=$qid"); + } + } + else { + $curproc->logerror("queue not found"); + return; + } + + eval q{ + $curproc->log("emulate $myname for $ml_name\@$ml_domain"); + + use FML::Process::Switch; + &FML::Process::Switch::NewProcess($curproc, + $myname, + $ml_name, + $ml_domain, + $hints); + }; + $curproc->logerror($@) if $@; +} + + +=head1 CODING STYLE + +See C<http://www.fml.org/software/FNF/> on fml coding style guide. + +=head1 AUTHOR + +Ken'ichi Fukamachi + +=head1 COPYRIGHT + +Copyright (C) 2006 Ken'ichi Fukamachi + +All rights reserved. This program is free software; you can +redistribute it and/or modify it under the same terms as Perl itself. + +=head1 HISTORY + +FML::CreateOnPost appeared in fml8 mailing list driver package. +See C<http://www.fml.org/> for more details. + +=cut + + +1; |
