#!/usr/bin/perl # cpanel12 - spamd_dbm_fix Copyright(c) 1997-2007 cPanel, Inc. # All Rights Reserved. # copyright@cpanel.net http://cpanel.net # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions # and limitations under the License. # use Mail::SpamAssassin (); use MIME::Base64 (); use IPC::Open3 (); my $installed_version = $Mail::SpamAssassin::VERSION; my $patches = { '3.002003' => { 'patch' => 'LS0tIGxpYi9NYWlsL1NwYW1Bc3Nhc3Npbi9EQkJhc2VkQWRkckxpc3QucG0ub3JpZwkyMDA3LTA4LTE5IDEzOjM0OjA3LjAwMDAwMDAwMCAtMDUwMAorKysgbGliL01haWwvU3BhbUFzc2Fzc2luL0RCQmFzZWRBZGRyTGlzdC5wbQkyMDA3LTA4LTE5IDE0OjA1OjM3LjAwMDAwMDAwMCAtMDUwMApAQCAtMjEsNiArMjEsOCBAQAogdXNlIHdhcm5pbmdzOwogdXNlIGJ5dGVzOwogdXNlIEZjbnRsOwordXNlIEZpbGU6OlNwZWM7Cit1c2UgRmlsZTo6QmFzZW5hbWU7CiAKIHVzZSBNYWlsOjpTcGFtQXNzYXNzaW46OlBlcnNpc3RlbnRBZGRyTGlzdDsKIHVzZSBNYWlsOjpTcGFtQXNzYXNzaW46OlV0aWw7CkBAIC03NCw2ICs3NiwyNCBAQAogICAgICAgJHNlbGYtPntsb2NrZWRfZmlsZX0gPSAkcGF0aDsKICAgICAgICRzZWxmLT57aXNfbG9ja2VkfSAgID0gMTsKICAgICAgICgkbW9kMSwgJG1vZDIpID0gKCdSL1cnLCBPX1JEV1IgfCBPX0NSRUFUKTsKKwkKKyAgICAgICMgVGhpcyBpcyBhIHdvcmsgYXJvdW5kIGZvciBidWdzIGluIGJlcmtsZXkgZGIgNC4yCisgICAgICAjIG9uIDQuMiBoYXZpbmcgdGhlIF9fZGIuW0RCTkFNRV0gZmlsZSB3aWxsIGNhdXNlIGFuIGxvb3AgdGhhdCB3aWxsIG5ldmVyIGZpbmlzaAorICAgICAgIyBvbiA0LjMrIHRoZSBsb29wIHdpbGwgdGltZW91dCBhZnRlciAzMDEgb3BlbiBhdHRlbXB0cywgYnV0IHdlIHdpbGwgc3RpbGwgYmUgdW5hYmxlIHRvIG9wZW4gCisgICAgICAjIHRoZSBkYXRhYmFzZS4gIFRoaXMgd29yayBhcm91bmQgc29sdmVzIGJvdGggcHJvYmxlbXMuIAorICAgICAgaWYgKCRkYm1fbW9kdWxlIGVxICdEQl9GaWxlJykgeworCSAgICAgIG15ICRwYXJlbnRkaXIgPSBGaWxlOjpCYXNlbmFtZTo6ZGlybmFtZSgkcGF0aCk7CisKKwkgICAgICBteSAkZGJfdG1wZmlsZSA9IEZpbGU6OlNwZWMtPmNhdGZpbGUoJHBhcmVudGRpciwnX19kYi4nIC4gRmlsZTo6QmFzZW5hbWU6OmJhc2VuYW1lKCRwYXRoKSk7CisJICAgICAgZGJnKCJhdXRvLXdoaXRlbGlzdDogQmVya2xleSBEQiBidWcgd29yay1hcm91bmQ6IGNsZWFuaW5nIHRtcCBmaWxlICRkYl90bXBmaWxlIik7CisKKwkgICAgICBpZiAoIC1lICRkYl90bXBmaWxlICkgeworCQkgICAgICBpZiAoICEgdW5saW5rKCRkYl90bXBmaWxlKSApIHsKKwkJCSAgICAgIGRpZSAnYXV0by13aGl0ZWxpc3Q6IGNhbm5vdCByZW1vdmUgJyAuICRkYl90bXBmaWxlIC4gJzogJyAuICQhIC4gIlxuIjsKKwkJICAgICAgfQorCSAgICAgIH0KKyAgICAgIH0KKwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICRzZWxmLT57aXNfbG9ja2VkfSA9IDA7Ci0tLSBsaWIvTWFpbC9TcGFtQXNzYXNzaW4vQmF5ZXNTdG9yZS9EQk0ucG0ub3JpZwkyMDA3LTA4LTE5IDEzOjM4OjM2LjAwMDAwMDAwMCAtMDUwMAorKysgbGliL01haWwvU3BhbUFzc2Fzc2luL0JheWVzU3RvcmUvREJNLnBtCTIwMDctMDgtMTkgMTQ6MTE6MDUuMDAwMDAwMDAwIC0wNTAwCkBAIC0yNzYsNiArMjc4LDIyIEBACiAKICAgbXkgJHVtYXNrID0gdW1hc2sgMDsKICAgZm9yZWFjaCBteSAkZGJuYW1lIChAREJOQU1FUykgeworCisgICAgIyBUaGlzIGlzIGEgd29yayBhcm91bmQgZm9yIGJ1Z3MgaW4gYmVya2xleSBkYiA0LjIKKyAgICAjIG9uIDQuMiBoYXZpbmcgdGhlIF9fZGIuW0RCTkFNRV0gZmlsZSB3aWxsIGNhdXNlIGFuIGxvb3AgdGhhdCB3aWxsIG5ldmVyIGZpbmlzaAorICAgICMgb24gNC4zKyB0aGUgbG9vcCB3aWxsIHRpbWVvdXQgYWZ0ZXIgMzAxIG9wZW4gYXR0ZW1wdHMsIGJ1dCB3ZSB3aWxsIHN0aWxsIGJlIHVuYWJsZSB0byBvcGVuIAorICAgICMgdGhlIGRhdGFiYXNlLiAgVGhpcyB3b3JrIGFyb3VuZCBzb2x2ZXMgYm90aCBwcm9ibGVtcy4gCisgICAgaWYgKCAkc2VsZi0+REJNX01PRFVMRSBlcSAnREJfRmlsZScgKSB7CisgICAgCSAgICBteSAkZGJfdG1wZmlsZSA9IEZpbGU6OlNwZWMtPmNhdGZpbGUoJHBhcmVudGRpciwnX19kYi4nIC4gRmlsZTo6QmFzZW5hbWU6OmJhc2VuYW1lKCRwYXRoKSAuICdfJyAuICRkYm5hbWUpOworCSAgICBkYmcoImJheWVzOiBCZXJrbGV5IERCIGJ1ZyB3b3JrLWFyb3VuZDogY2xlYW5pbmcgdG1wIGZpbGUgJGRiX3RtcGZpbGUiKTsKKwkgICAgaWYgKCAtZSAkZGJfdG1wZmlsZSkgeworCQkgICAgaWYgKCAhIHVubGluaygkZGJfdG1wZmlsZSkgKSB7CisJCQkgICAgd2FybiAnYmF5ZXM6IGNhbm5vdCByZW1vdmUgJyAuICRkYl90bXBmaWxlIC4gJzogJyAuICQhIC4gIlxuIjsKKwkJCSAgICByZXR1cm4gMDsKKwkJICAgIH0KKwkgICAgfQorICAgIH0KKwogICAgIG15ICRuYW1lID0gJHBhdGguJ18nLiRkYm5hbWU7CiAgICAgbXkgJGRiX3ZhciA9ICdkYl8nLiRkYm5hbWU7CiAgICAgZGJnKCJiYXllczogdGllLWluZyB0byBEQiBmaWxlIFIvVyAkbmFtZSIpOwo=', 'strip' => 3 } }; if ( $patches->{$installed_version} ) { my $patch_data = MIME::Base64::decode_base64( $patches->{$installed_version}->{'patch'} ); my $patch_strip = $patches->{$installed_version}->{'strip'}; my $module_path = $INC{'Mail/SpamAssassin.pm'}; $module_path =~ s/\.pm$//g; if ( $module_path && $module_path ne '' && -d $module_path ) { chdir $module_path || die "Could not chdir to $module_path"; print "Patching SpamAssassin in $module_path\n"; my $pid = IPC::Open3::open3( $wtr_fh, ">&STDOUT", ">&STDERR", 'patch', '-N', '-t', '-p' . $patch_strip ); print {$wtr_fh} $patch_data; close($wtr_fh); waitpid( $pid, 0 ); if ( -x '/scripts/restartsrv_exim' ) { system '/scripts/restartsrv_exim'; } elsif ( -x '/etc/init.d/spamd' ) { system '/etc/init.d/spamd', 'restart'; } elsif ( -x '/etc/init.d/spamassassin' ) { system '/etc/init.d/spamassassin', 'restart'; } else { print "You will now need to restart spamd if you are using it.\n"; } } }