HEX
Server: Apache
System: Linux vps-cdc32557.vps.ovh.ca 5.15.0-156-generic #166-Ubuntu SMP Sat Aug 9 00:02:46 UTC 2025 x86_64
User: hanode (1017)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //usr/share/usermin/mailbox/export.cgi
#!/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";
		}
	}