| Server IP : 104.21.25.180 / Your IP : 162.159.115.41 Web Server : Apache/2.4.37 System : Linux almalinux.duckdns.org 4.18.0-553.111.1.el8_10.x86_64 #1 SMP Sun Mar 8 20:06:07 EDT 2026 x86_64 User : ricodeal ( 1046) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/libexec/usermin/mailbox/ |
Upload File : |
#!/usr/bin/perl
# Output the address book in some format
use strict;
use warnings;
no warnings 'redefine';
no warnings 'uninitialized';
our (%text, %in, $remote_user);
require './mailbox-lib.pl';
&ReadParse();
&error_setup($text{'export_err'});
# Build the list of addresses
my @addrs = &list_addresses();
my @agroups;
if($in{'incgr'}) {
@agroups = grep { defined($_->[2]) } &list_address_groups();
}
my %done;
if ($in{'dup'}) {
@addrs = grep { !$done{$_->[0]}++ } @addrs;
}
if ($in{'fmt'} eq 'csv') {
# CSV format
print "Content-Type: application/x-download\n";
print "Content-Disposition: attachment; filename=\"addressbook-${remote_user}_@{[get_display_hostname()]}.csv\"\n\n";
foreach my $a (@addrs) {
print "\"$a->[0]\",\"$a->[1]\"\n";
}
if($in{'incgr'}) {
foreach my $a (@agroups) {
print "\"-\",\"$a->[0]\"\n";
}
}
}
else {
# VCard format
eval "use Net::vCard";
$@ && &error($text{'import_enetvcard'});
print "Content-type: text/vcard\n\n";
foreach my $a (@addrs) {
my ($first, $last) = split(/\s+/, $a->[1], 2);
print "BEGIN:VCARD\n";
print "VERSION:4.0\n";
if ($first && $last) {
print "FN:$a->[1]\n";
print "N:${last};${first};;;\n";
}
elsif ($first) {
print "FN:$a->[1]\n";
print "N:${first};;;;\n";
}
if ($a->[0]) {
print "EMAIL:$a->[0]\n";
}
print "END:VCARD\n";
}
}