RTx-Foundry

 view release on metacpan or  search on metacpan

sbin/foundry-setup  view on Meta::CPAN


sub postfix_conf {
    return unless -e "/usr/local/sbin/postfix";

    open my $MAIN, '>>', '/usr/local/etc/postfix/main.cf';
    print $MAIN qq(
alias_database = hash:/etc/aliases, hash:/etc/mail/sympa_aliases
alias_maps = ${db_module}:/usr/local/etc/postfix/aliases.cf, hash:/etc/mail/sympa_aliases, hash:/etc/aliases
);

    open my $ALIASES, '>', '/usr/local/etc/postfix/aliases.cf';
    print $ALIASES qq(
user=${db_dba_user}
password=${db_dba_password}
dbname=rt3
table=users
select_field=emailaddress
where_field=name
hosts=${db_host}
);
}

sub sympa_conf {
    return unless -e "/usr/local/etc/sympa.conf";
    open my $SYMPA, '>>', '/usr/local/etc/sympa.conf';
    print $SYMPA qq(
# Foundry-specific settings
dark_color      #0F6080
selected_color  #0F6080
light_color     #D3DCE3
shaded_color    #EEEEEE
bg_color        #C4E1F0
text_color      #000000
);
}

sub foundry_conf {
    my $conf = "/usr/local/etc/foundry.conf";

    my @in_lines;
    if (open my $IN, $conf) {
	@in_lines = grep {
	    my $line = $_;
	    !grep $line =~ /\$ENV\{$_\}/, +VARS
	} <$IN>;
	close $IN;
    }

    no strict 'refs';
    no warnings 'uninitialized';
    open my $OUT, '>', $conf or die $!;
    print $OUT (
	@in_lines,
	map {
	    "\$ENV{$_}" .
	    ("\t" x (2 - int((length($_)-1) / 8))) .
	    "= '${lc$_}';\n"
	} +VARS,
    );
    close $OUT;
    chown 0600, $conf;

    print "===> $conf successfully written.\n";
}

sub pam_conf {
    my %params = (
	host		=> $db_host,
	user		=> $db_dba_user,
	passwd		=> $db_dba_password,
	db		=> 'rt3',
	table		=> 'Users',
	usercolumn	=> 'Name',
	passwdcolumn	=> 'Password',
	crypt		=> 'md5',
    );
    my %keys_pg = (
	db		=> 'database',
	usercolumn	=> 'user_column',
	passwdcolumn	=> 'pwd_column',
	crypt		=> 'pw_type',
    );

    my $params = '';
    $params = join('', map " $_=$params{$_}", sort keys %params)
	if $db_pam_module eq 'pam_mysql';
    @params{values(%keys_pg)} = delete @params{keys(%keys_pg)}
	if $db_pam_module eq 'pam_pgsql';

    my @conf_lines = (
	"auth        required    $db_pam_module.so$params\n",
	"account     required    pam_permit.so\n",
	"password    required    $db_pam_module.so$params\n",
	"session     required    pam_permit.so\n",
    );

    my $service = 'sshdcvs';
    my $pam_d = "/usr/local/etc/pam.d";
    my $pam_conf = "/etc/pam.conf";
    my $pam_module_conf = "/etc/$db_pam_module.conf";

    if (-e $pam_conf) {
	open my $IN, $pam_conf or die $!;
	my @in_lines = grep !/^(?:# )?$service\s+/, <$IN>;
	close $IN;
	open my $OUT, '>', $pam_conf or die $!;
	print $OUT (
	    @in_lines,
	    "# $service: added by $0 at " . localtime() . $/,
	    map "$service $_", @conf_lines,
	);
	close $OUT;

	print "===> $pam_conf successfully written.\n";
    }
    elsif (-d $pam_d) {
	open my $OUT, '>', "$pam_d/$service" or die $!;
	print $OUT @conf_lines;
	close $OUT;

	print "===> $pam_d/$service successfully written.\n";



( run in 1.061 second using v1.01-cache-2.11-cpan-5511b514fd6 )