/usr/share/usermin/mailbox
Edit: /usr/share/usermin/mailbox/list_addresses.cgi (8729B)
#!/usr/bin/perl
# Display contents of the user's address book, and allowed and denied addresses
use strict;
use warnings;
no warnings 'redefine';
no warnings 'uninitialized';
our (%text, %in, %config, %userconfig);
require './mailbox-lib.pl';
&ReadParse();
&ui_print_header(undef, $text{'address_title'}, "");
# Build tabs
my $prog = "list_addresses.cgi?mode=";
my @tabs = ( [ "users", $text{'address_users'}, $prog."users" ],
[ "groups", $text{'address_groups'}, $prog."groups" ] );
if (&foreign_installed("spam")) {
if (!$userconfig{'white_rec'}) {
push(@tabs, [ "allow", $text{'address_allow'}, $prog."allow" ]);
}
push(@tabs, [ "deny", $text{'address_deny'}, $prog."deny" ]);
}
push(@tabs, [ "import", $text{'address_import'}, $prog."import" ]);
push(@tabs, [ "export", $text{'address_export'}, $prog."export" ]);
# Start tabs for users and groups, and maybe spam addresses
print &ui_tabs_start(\@tabs, "mode", $in{'mode'} || "users", 1);
print &ui_tabs_start_tab("mode", "users");
my @addrs = &list_addresses();
print "$text{'address_desc'}
\n";
if (@addrs || $in{'add'}) {
if ($in{'add'} || $in{'edit'} ne '') {
print "
\n";
}
}
else {
print "
$text{'address_none'} \n";
}
print "",
"$text{'address_add'} \n"
if (!$in{'add'});
print &ui_tabs_end_tab();
print &ui_tabs_start_tab("mode", "groups");
my @gaddrs = grep { defined($_->[2]) } &list_address_groups();
print "$text{'address_gdesc'}
\n";
if (@gaddrs || $in{'gadd'}) {
if ($in{'gadd'} || $in{'gedit'} ne '') {
print "
\n";
}
}
else {
print "
$text{'address_gnone'} \n";
}
print "",
"$text{'address_gadd'} \n"
if (!$in{'gadd'});
print &ui_tabs_end_tab();
# Show allowed / denied addresses tabs
if (&foreign_installed("spam")) {
&foreign_require("spam", "spam-lib.pl");
my $conf = &spam::get_config();
foreach my $m ($userconfig{'white_rec'} ? ( ) :
( [ "allow", "whitelist_from" ] ),
[ "deny", "blacklist_from" ]) {
my ($mode, $opt) = @$m;
print &ui_tabs_start_tab("mode", $mode);
print $text{'address_'.$mode.'desc'},"
\n";
print &ui_form_start("save_allow.cgi", "post");
print &ui_hidden("mode", $mode);
@addrs = map { @{$_->{'words'}} } &spam::find($opt, $conf);
print &ui_textarea("addrs", join("\n", @addrs)."\n", 20, 80,
undef, 0, "style='width:90%'");
print &ui_form_end([ [ undef, $text{'save'} ] ]);
print &ui_tabs_end_tab();
}
}
# Show import tab
print &ui_tabs_start_tab("mode", "import");
print $text{'address_importdesc'},"
\n";
print &ui_form_start("import.cgi", "form-data");
print &ui_table_start(undef, undef, 2);
# Import source
print &ui_table_row($text{'address_importsrc'},
&ui_radio_table("src", 0,
[ [ 0, $text{'address_importsrc0'}, &ui_upload("upload") ],
[ 1, $text{'address_importsrc1'},
&ui_textarea("paste", undef, 5, 60) ] ])."
\n".
$text{'address_importformat'});
# Import format
print &ui_table_row($text{'address_importfmt'},
&ui_radio("fmt", "csv", [ [ 'csv', $text{'address_importcsv'} ],
[ 'vcard', $text{'address_importvcard'} ] ]));
# Duplicate handling
print &ui_table_row($text{'address_importdup'},
&ui_radio("dup", 0, [ [ 0, $text{'address_importdup0'} ],
[ 1, $text{'address_importdup1'} ] ]));
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'address_importok'} ] ]);
print &ui_tabs_end_tab();
# Show export tab
print &ui_tabs_start_tab("mode", "export");
print $text{'address_exportdesc'},"
\n";
print &ui_form_start("export.cgi");
print &ui_table_start(undef, undef, 2);
# Import format
print &ui_table_row($text{'address_exportfmt'},
&ui_radio("fmt", "csv", [ [ 'csv', $text{'address_importcsv'} ],
[ 'vcard', $text{'address_importvcard'} ] ]));
# Duplicate handling
print &ui_table_row($text{'address_exportdup'},
&ui_radio("dup", 0, [ [ 0, $text{'address_exportdup0'} ],
[ 1, $text{'address_exportdup1'} ] ]));
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'address_exportok'} ] ]);
print &ui_tabs_end_tab();
print &ui_tabs_end(1);
&ui_print_footer("", $text{'mail_return'});
sub from_sel
{
my ($f) = @_;
print "
".&ui_select("from", $f,
[ [ 0, $text{'no'} ],
[ 1, $text{'yes'} ],
[ 2, $text{'address_yd'} ] ])." | \n";
}