summaryrefslogtreecommitdiff
path: root/fml/lib/FML/Command
diff options
context:
space:
mode:
authorfukachan <fukachan>2002-02-24 08:28:33 +0000
committerfukachan <fukachan>2002-02-24 08:28:33 +0000
commit0bfc65a2fbb2366faa8df00183d3a4079b43aff8 (patch)
tree7d26542794e44800134a09bba0d7a32fcb22834a /fml/lib/FML/Command
parent94e4df3d50287abc95530d30b823990490ffca67 (diff)
downloadfml8-0bfc65a2fbb2366faa8df00183d3a4079b43aff8.tar.gz
fml8-0bfc65a2fbb2366faa8df00183d3a4079b43aff8.tar.bz2
fml8-0bfc65a2fbb2366faa8df00183d3a4079b43aff8.zip
install aliases when makefml newml runs.
Diffstat (limited to 'fml/lib/FML/Command')
-rw-r--r--fml/lib/FML/Command/Admin/newml.pm72
1 files changed, 57 insertions, 15 deletions
diff --git a/fml/lib/FML/Command/Admin/newml.pm b/fml/lib/FML/Command/Admin/newml.pm
index c90c3cf7..36ec608e 100644
--- a/fml/lib/FML/Command/Admin/newml.pm
+++ b/fml/lib/FML/Command/Admin/newml.pm
@@ -4,7 +4,7 @@
# All rights reserved. This program is free software; you can
# redistribute it and/or modify it under the same terms as Perl itself.
#
-# $FML: newml.pm,v 1.15 2002/02/18 14:24:12 fukachan Exp $
+# $FML: newml.pm,v 1.16 2002/02/20 14:10:37 fukachan Exp $
#
package FML::Command::Admin::newml;
@@ -70,6 +70,7 @@ sub process
my ($ml_name, $ml_domain, $ml_home_prefix, $ml_home_dir) =
$self->_get_domain_info($curproc, $command_args);
my $params = {
+ fml_owner => $curproc->fml_owner(),
executable_prefix => $curproc->executable_prefix(),
ml_name => $ml_name,
ml_domain => $ml_domain,
@@ -81,6 +82,10 @@ sub process
croak("\$ml_name is not specified") unless $ml_name;
croak("\$ml_home_dir is not specified") unless $ml_home_dir;
+ # update $ml_home_prefix and expand variables again.
+ $config->set( 'ml_home_prefix' , $ml_home_prefix );
+
+ # o.k. here we go !
unless (-d $ml_home_dir) {
eval q{
use File::Utils qw(mkdirhier);
@@ -90,14 +95,17 @@ sub process
mkdirhier( $ml_home_dir, $config->{ default_dir_mode } || 0755 );
- my $template_dir = $curproc->template_files_dir_for_newml();
- for my $file (qw(config.cf include include-ctl)) {
- my $src = File::Spec->catfile($template_dir, $file);
- my $dst = File::Spec->catfile($ml_home_dir, $file);
-
- print STDERR "installing $dst\n";
- _install($src, $dst, $params);
+ # $ml_home_dir/etc/mail
+ my $mailconfdir = $config->{ mailconf_dir };
+ unless (-d $mailconfdir) {
+ print STDERR "creating $mailconfdir\n";
+ mkdirhier( $mailconfdir, $config->{ default_dir_mode } || 0755 );
}
+
+ # 1. install $ml_home_dir/{config.cf,include,include-ctl}
+ # 2. set up aliases
+ $self->_install_files_for_newml($curproc, $command_args, $params);
+ $self->_setup_aliases_for_newml($curproc, $command_args, $params);
}
else {
warn("$ml_name already exists");
@@ -105,6 +113,41 @@ sub process
}
+sub _install_files_for_newml
+{
+ my ($self, $curproc, $command_args, $params) = @_;
+ my $template_dir = $curproc->template_files_dir_for_newml();
+ my $ml_home_dir = $params->{ ml_home_dir };
+
+ for my $file (qw(config.cf include include-ctl)) {
+ my $src = File::Spec->catfile($template_dir, $file);
+ my $dst = File::Spec->catfile($ml_home_dir, $file);
+
+ print STDERR "installing $dst\n";
+ _install($src, $dst, $params);
+ }
+}
+
+
+sub _setup_aliases_for_newml
+{
+ my ($self, $curproc, $command_args, $params) = @_;
+ my $template_dir = $curproc->template_files_dir_for_newml();
+ my $config = $curproc->{ config };
+
+ use File::Spec;
+ my $alias = $config->{ mail_aliases_file };
+ my $src = File::Spec->catfile($template_dir, 'aliases');
+ my $dst = $alias . "." . $$;
+
+ print STDERR "updating $dst\n";
+ _install($src, $dst, $params);
+
+ # append
+ system "cat $dst >> $alias";
+}
+
+
# Descriptions: check argument and prepare virtual domain information
# if needed.
# Arguments: OBJ($self) OBJ($curproc) HASH_REF($command_args)
@@ -144,19 +187,18 @@ sub _install
{
my ($src, $dst, $config) = @_;
- eval q{
- use FileHandle;
- use FML::Config::Convert;
- };
- croak($@) if $@;
-
+ use FileHandle;
my $in = new FileHandle $src;
my $out = new FileHandle "> $dst.$$";
if (defined $in && defined $out) {
chmod 0644, "$dst.$$";
- &FML::Config::Convert::convert($in, $out, $config);
+ eval q{
+ use FML::Config::Convert;
+ &FML::Config::Convert::convert($in, $out, $config);
+ };
+ croak($@) if $@;
$out->close();
$in->close();