diff options
| author | fukachan <fukachan> | 2002-03-26 04:01:35 +0000 |
|---|---|---|
| committer | fukachan <fukachan> | 2002-03-26 04:01:35 +0000 |
| commit | 685c53b1972c1ab4a137bbfff35fbbbd7cc08593 (patch) | |
| tree | e28c295b700625fc4c2e834898a5189edde9c29d /fml/lib/FML/Command | |
| parent | 74ea21c801dcd666ee7c88954b35fd50aa12459f (diff) | |
| download | fml8-685c53b1972c1ab4a137bbfff35fbbbd7cc08593.tar.gz fml8-685c53b1972c1ab4a137bbfff35fbbbd7cc08593.tar.bz2 fml8-685c53b1972c1ab4a137bbfff35fbbbd7cc08593.zip | |
prototype of file remove operations
Diffstat (limited to 'fml/lib/FML/Command')
| -rw-r--r-- | fml/lib/FML/Command/Admin/delete.pm | 113 | ||||
| -rw-r--r-- | fml/lib/FML/Command/Admin/unlink.pm | 61 | ||||
| -rw-r--r-- | fml/lib/FML/Command/FileUtils.pm | 130 |
3 files changed, 304 insertions, 0 deletions
diff --git a/fml/lib/FML/Command/Admin/delete.pm b/fml/lib/FML/Command/Admin/delete.pm new file mode 100644 index 00000000..d9f88147 --- /dev/null +++ b/fml/lib/FML/Command/Admin/delete.pm @@ -0,0 +1,113 @@ +#-*- perl -*- +# +# Copyright (C) 2002 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: delete.pm,v 1.1 2002/03/24 11:26:46 fukachan Exp $ +# + +package FML::Command::Admin::delete; +use strict; +use vars qw(@ISA @EXPORT @EXPORT_OK $AUTOLOAD); +use Carp; + + +=head1 NAME + +FML::Command::Admin::delete - delete file operations + +=head1 SYNOPSIS + +See C<FML::Command> for more details. + +=head1 DESCRIPTION + +delete a new address. + +=head1 METHODS + +=head2 C<process($curproc, $command_args)> + +=cut + + +# Descriptions: standard constructor +# Arguments: OBJ($self) +# Side Effects: none +# Return Value: OBJ +sub new +{ + my ($self) = @_; + my ($type) = ref($self) || $self; + my $me = {}; + return bless $me, $type; +} + + +# Descriptions: need lock or not +# Arguments: none +# Side Effects: none +# Return Value: NUM( 1 or 0) +sub need_lock { 0;} + + +# Descriptions: delete a new user +# Arguments: OBJ($self) OBJ($curproc) HASH_REF($command_args) +# Side Effects: update $member_map $recipient_map +# Return Value: none +sub process +{ + my ($self, $curproc, $command_args) = @_; + my $config = $curproc->{ config }; + my $log_file = $config->{ log_file }; + my $options = $command_args->{ options }; + my $du_args = {}; + my @argv = (); + + # analyze ... + for my $x (@$options) { + if ($x =~ /^([A-Za-z0-9]+)$/) { + push(@argv, $x); + } + } + $du_args->{ options } = \@argv; + + use FML::Command::FileUtils; + my $obj = new FML::Command::FileUtils; + $obj->delete($curproc, $command_args, $du_args); +} + + +# Descriptions: log a new user +# Arguments: OBJ($self) OBJ($curproc) HASH_REF($command_args) +# Side Effects: update $member_map $recipient_map +# Return Value: none +sub cgi_menu +{ + my ($self, $curproc, $args, $command_args) = @_; + + ; +} + + +=head1 AUTHOR + +Ken'ichi Fukamachi + +=head1 COPYRIGHT + +Copyright (C) 2002 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::Command::Admin::log appeared in fml5 mailing list driver package. +See C<http://www.fml.org/> for more details. + +=cut + + +1; diff --git a/fml/lib/FML/Command/Admin/unlink.pm b/fml/lib/FML/Command/Admin/unlink.pm new file mode 100644 index 00000000..dac793e2 --- /dev/null +++ b/fml/lib/FML/Command/Admin/unlink.pm @@ -0,0 +1,61 @@ +#-*- perl -*- +# +# Copyright (C) 2002 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: ls.pm,v 1.1 2002/03/24 11:26:46 fukachan Exp $ +# + +package FML::Command::Admin::ls; +use strict; +use vars qw(@ISA @EXPORT @EXPORT_OK $AUTOLOAD); +use Carp; + + +use FML::Command::Admin::delete; +@ISA = qw(FML::Command::Admin::delete); + + +# Descriptions: delete files +# Arguments: OBJ($self) OBJ($curproc) HASH_REF($command_args) +# Side Effects: forward request to delete module +# Return Value: none +sub process +{ + my ($self, $curproc, $command_args) = @_; + $self->SUPER::process($curproc, $command_args); +} + +=head1 NAME + +FML::Command::Admin::unlink - remove file + +=head1 SYNOPSIS + +See C<FML::Command> for more details. + +=head1 DESCRIPTION + +same as C<delete>. + +=head1 AUTHOR + +Ken'ichi Fukamachi + +=head1 COPYRIGHT + +Copyright (C) 2002 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::Command::Admin::ls appeared in fml5 mailing list driver package. +See C<http://www.fml.org/> for more details. + +=cut + + +1; diff --git a/fml/lib/FML/Command/FileUtils.pm b/fml/lib/FML/Command/FileUtils.pm new file mode 100644 index 00000000..3427782e --- /dev/null +++ b/fml/lib/FML/Command/FileUtils.pm @@ -0,0 +1,130 @@ +#-*- perl -*- +# +# Copyright (C) 2002 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: FileUtils.pm,v 1.2 2002/03/24 12:32:36 fukachan Exp $ +# + +package FML::Command::FileUtils; +use strict; +use vars qw(@ISA @EXPORT @EXPORT_OK $AUTOLOAD); +use Carp; +use FML::Log qw(Log LogWarn LogError); + + +=head1 NAME + +FML::Command::FileUtils - utilities for file handling + +=head1 SYNOPSIS + +=head1 DESCRIPTION + +=head1 METHODS + +=cut + + +# Descriptions: standard constructor +# Arguments: OBJ($self) +# Side Effects: none +# Return Value: OBJ +sub new +{ + my ($self) = @_; + my ($type) = ref($self) || $self; + my $me = {}; + + use FML::Restriction::Base; + my $safe = new FML::Restriction::Base; + $me->{ _basic_variable } = $safe->basic_variable(); + + return bless $me, $type; +} + + +sub delete +{ + my ($self, @p) = @_; + $self->remove(@p); +} + + +# Descriptions: remove files +# Arguments: OBJ($self) HASH_REF($curproc) HASH_REF($command_args) +# HASH_REF($du_args) +# Side Effects: none +# Return Value: none +sub remove +{ + my ($self, $curproc, $command_args, $du_args) = @_; + my $config = $curproc->{ config }; + my $argv = $du_args->{ options }; + my $is_warn = 0; + + # regexp + my $basic_variable = $self->{ _basic_variable }; + my $regexp = $basic_variable->{ file }; + + my $ml_home_dir = $config->{ ml_home_dir }; + chdir $ml_home_dir; + + for my $file (@$argv) { + if ($file =~ /^$regexp$/) { + if (-f $file) { + unlink $file; + + if (-f $file) { + LogError("fail to remove $file"); + $is_warn++; + } + else { + Log("remove $file"); + $curproc->reply_message_nl("command.remove_file", + "removed $file", + { _arg_file => $file } ); + } + } + else { + $curproc->reply_message_nl("command.no_such_file", + "no such file $file", + { _arg_file => $file } ); + LogWarn("no such file $file"); + $is_warn++; + } + } + else { + $curproc->reply_message_nl('command.insecure', + "insecure input $file"); + croak("remove: insecure argument"); + } + } + + if ($is_warn) { + croak("remove: something fail."); + } +} + + +=head1 AUTHOR + +Ken'ichi Fukamachi + +=head1 COPYRIGHT + +Copyright (C) 2002 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::Command::FileUtils appeared in fml5 mailing list driver package. +See C<http://www.fml.org/> for more details. + +=cut + + +1; |
