diff options
Diffstat (limited to 'rt/etc/upgrade/4.1.22/content')
-rw-r--r-- | rt/etc/upgrade/4.1.22/content | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/rt/etc/upgrade/4.1.22/content b/rt/etc/upgrade/4.1.22/content new file mode 100644 index 000000000..c9f18ff40 --- /dev/null +++ b/rt/etc/upgrade/4.1.22/content @@ -0,0 +1,85 @@ +use strict; +use warnings; + +our @Initial = ( + sub { + my $template = RT::Template->new( RT->SystemUser ); + $template->Load("Error: bad GnuPG data"); + unless ($template->id) { + RT->Logger->error( "Couldn't find 'Error: bad GnuPG data' template to rename" ); + return; + } + + my ($ok, $msg) = $template->SetName("Error: bad encrypted data"); + RT->Logger->error( "Couldn't rename 'Error: bad GnuPG data' template: $msg") + unless $ok; + + ($ok, $msg) = $template->SetDescription("Inform user that a message he sent has invalid encryption data"); + RT->Logger->error( "Couldn't update 'Error: bad encrypted data' template description: $msg") + unless $ok; + + my $content = $template->Content; + $content =~ s/GnuPG signature/signature/g; + ($ok, $msg) = $template->SetContent( $content ); + RT->Logger->error( "Couldn't update 'Error: bad encrypted data' template content: $msg") + unless $ok; + }, + sub { + my $type = RT::User->new( $RT::SystemUser )->CustomFieldLookupType; + my $cf = RT::CustomField->new( $RT::SystemUser ); + $cf->LoadByCols( Name => 'SMIME Key', LookupType => $type ); + $cf->LoadByCols( Name => 'PublicKey', LookupType => $type ) unless $cf->id; + unless ( $cf->id ) { + $RT::Logger->debug("You don't have an 'SMIME Key' or 'PublicKey' user CF -- nothing to do."); + return; + } + + my $users = RT::Users->new( RT->SystemUser ); + $users->LimitCustomField( + CUSTOMFIELD => $cf->id, + OPERATOR => "IS NOT", + VALUE => "NULL", + ); + while (my $u = $users->Next) { + $u->SetSMIMECertificate( + $u->FirstCustomFieldValue( $cf->id ), + ); + } + + my $ocfs = $cf->AddedTo; + while (my $ocf = $ocfs->Next) { + my ($ok, $msg) = $ocf->Delete; + RT->Logger->error( "Couldn't delete OCF ".$ocf->id." while deleting ".$cf->Name." CF: $msg") + unless $ok; + } + + my ($ok, $msg) = $cf->Delete; + RT->Logger->error( "Couldn't delete ".$cf->Name." CF: $msg") + unless $ok; + }, + sub { + $RT::Logger->info("Going to delete all SMIMEKeyNotAfter attributes"); + my $attrs = RT::Attributes->new( $RT::SystemUser ); + $attrs->Limit( FIELD => 'ObjectType', VALUE => 'RT::User' ); + $attrs->Limit( FIELD => 'Name', VALUE => 'SMIMEKeyNotAfter' ); + while ( my $attr = $attrs->Next ) { + my ($status, $msg) = $attr->Delete; + unless ( $status ) { + $RT::Logger->error("Couldn't delete attribute: $msg"); + } + } + return 1; + }, +); + +our @Templates = ( + { Queue => 0, + Name => "Error: unencrypted message", # loc + Description => + "Inform user that their unencrypted mail has been rejected", # loc + Content => q{Subject: RT requires that all incoming mail be encrypted + +You received this message because RT received mail from you that was not encrypted. As such, it has been rejected. +} + }, +); |