summaryrefslogtreecommitdiff
path: root/fml/lib
diff options
context:
space:
mode:
authorfukachan <fukachan>2002-03-26 04:01:35 +0000
committerfukachan <fukachan>2002-03-26 04:01:35 +0000
commit685c53b1972c1ab4a137bbfff35fbbbd7cc08593 (patch)
treee28c295b700625fc4c2e834898a5189edde9c29d /fml/lib
parent74ea21c801dcd666ee7c88954b35fd50aa12459f (diff)
downloadfml8-685c53b1972c1ab4a137bbfff35fbbbd7cc08593.tar.gz
fml8-685c53b1972c1ab4a137bbfff35fbbbd7cc08593.tar.bz2
fml8-685c53b1972c1ab4a137bbfff35fbbbd7cc08593.zip
prototype of file remove operations
Diffstat (limited to 'fml/lib')
-rw-r--r--fml/lib/FML/Command/Admin/delete.pm113
-rw-r--r--fml/lib/FML/Command/Admin/unlink.pm61
-rw-r--r--fml/lib/FML/Command/FileUtils.pm130
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;