#!/usr/bin/perl # cpanel - base/backend/mailappsetup.cgi Copyright(c) 2012 cPanel, Inc. # All rights Reserved. # copyright@cpanel.net http://cpanel.net # This code is subject to the cpanel license. Unauthorized copying is prohibited BEGIN { unshift @INC, '/usr/local/cpanel'; } use Cpanel::Encoder::URI (); use Archive::Zip (); my $useroot = 0; my ( $acct, $host, $smtpport, $usessl, $hasmaildir, $ver, $archive_config ) = split( /\|/, Cpanel::Encoder::URI::uri_decode_str( $ENV{'QUERY_STRING'} ) ); my ( $user, $domain ) = split( /\@/, $acct ); if ( $domain eq '' ) { $domain = $ENV{'DNS'}; $useroot = 1; } ## force a 0 or 1 $archive_config = !!$archive_config; my $displayacct = $archive_config ? $domain : $acct; my $safeacct = $displayacct; $safeacct =~ s/[^A-Za-z0-9\.\@]/_/g; my $displayname = $archive_config ? 'Email Archive Setup' : 'Email Setup'; my $ssl = int($usessl); my $secure = $ssl ? 'Secure ' : ''; my $securetxt = $ssl ? 'Secure ' : ''; $hasmaildir = int $hasmaildir; print <new(); if ( $ver eq '10.7' ) { $zip->read("/usr/local/cpanel/obj/Email_Setup_Lion.app.zip"); $zip->addString( $useroot, 'cPanel_Email_Setup_5.0.app/Contents/config/useroot.txt' ); $zip->addString( $domain, 'cPanel_Email_Setup_5.0.app/Contents/config/domain.txt' ); $zip->addString( $host, 'cPanel_Email_Setup_5.0.app/Contents/config/host.txt' ); $zip->addString( $user, 'cPanel_Email_Setup_5.0.app/Contents/config/user.txt' ); $zip->addString( $smtpport, 'cPanel_Email_Setup_5.0.app/Contents/config/smtpport.txt' ); $zip->addString( $usessl, 'cPanel_Email_Setup_5.0.app/Contents/config/usessl.txt' ); $zip->addString( $hasmaildir, 'cPanel_Email_Setup_5.0.app/Contents/config/maildir.txt' ); } else { $zip->read("/usr/local/cpanel/obj/Email_Setup.app.zip"); $zip->addString( $useroot, 'cPanel_Email_Setup_4.2.app/Contents/Resources/useroot.txt' ); $zip->addString( $domain, 'cPanel_Email_Setup_4.2.app/Contents/Resources/domain.txt' ); $zip->addString( $host, 'cPanel_Email_Setup_4.2.app/Contents/Resources/host.txt' ); $zip->addString( $user, 'cPanel_Email_Setup_4.2.app/Contents/Resources/user.txt' ); $zip->addString( $smtpport, 'cPanel_Email_Setup_4.2.app/Contents/Resources/smtpport.txt' ); $zip->addString( $usessl, 'cPanel_Email_Setup_4.2.app/Contents/Resources/usessl.txt' ); $zip->addString( $hasmaildir, 'cPanel_Email_Setup_4.2.app/Contents/Resources/maildir.txt' ); } #$zip->writeToFileNamed('Email_Setup.app.zip'); foreach my $member ( $zip->members() ) { my $memberName = $member->fileName(); my $newname = $memberName; if ( $ver eq '10.7' ) { $newname =~ s/cPanel_Email_Setup_5.0.app/${safeacct} ${securetxt}$displayname.app/g; } else { $newname =~ s/cPanel_Email_Setup_4.2.app/${safeacct} ${securetxt}$displayname.app/g; } $member->fileName($newname); } my ( $fh, $name ); write_file($zip); exit; sub _remove_file { unlink $name if $name; } sub write_file { my $zip = shift; $SIG{'INT'} = $SIG{'HUP'} = \&_remove_file; ( $fh, $name ) = Archive::Zip::tempFile(); $zip->writeToFileHandle($fh); seek( $fh, 0, 0 ); local ($/); print readline($fh); close($fh); _remove_file(); }