diff options
| author | fukachan <fukachan> | 2002-02-24 08:28:33 +0000 |
|---|---|---|
| committer | fukachan <fukachan> | 2002-02-24 08:28:33 +0000 |
| commit | 0bfc65a2fbb2366faa8df00183d3a4079b43aff8 (patch) | |
| tree | 7d26542794e44800134a09bba0d7a32fcb22834a /fml/lib/FML/Command | |
| parent | 94e4df3d50287abc95530d30b823990490ffca67 (diff) | |
| download | fml8-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.pm | 72 |
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(); |
