From 3f95d53de835832e0add5e2aa3d94c9b8ad51b3e Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Sat, 23 Dec 2017 08:59:32 -0500 Subject: [PATCH] (feat) new viewer handler for encrypted emails --- UI/MailPartViewers/UIxMailRenderingContext.h | 9 ++--- UI/MailPartViewers/UIxMailRenderingContext.m | 37 +++++++++++--------- 2 files changed, 26 insertions(+), 20 deletions(-) diff --git a/UI/MailPartViewers/UIxMailRenderingContext.h b/UI/MailPartViewers/UIxMailRenderingContext.h index 967d8669a..aa7a7cb8a 100644 --- a/UI/MailPartViewers/UIxMailRenderingContext.h +++ b/UI/MailPartViewers/UIxMailRenderingContext.h @@ -1,20 +1,21 @@ /* + Copyright (C) 2005-2017 Inverse inc. Copyright (C) 2004-2005 SKYRIX Software AG - This file is part of OpenGroupware.org. + This file is part of SOGo. - OGo is free software; you can redistribute it and/or modify it under + SOGo is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. - OGo is distributed in the hope that it will be useful, but WITHOUT ANY + SOGo is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the + License along withS OGo; see the file COPYING. If not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ diff --git a/UI/MailPartViewers/UIxMailRenderingContext.m b/UI/MailPartViewers/UIxMailRenderingContext.m index b229b01fe..8f0352c71 100644 --- a/UI/MailPartViewers/UIxMailRenderingContext.m +++ b/UI/MailPartViewers/UIxMailRenderingContext.m @@ -1,5 +1,5 @@ /* - Copyright (C) 2007-2013 Inverse inc. + Copyright (C) 2007-2017 Inverse inc. Copyright (C) 2004-2005 SKYRIX Software AG This file is part of SOGo. @@ -125,6 +125,11 @@ static BOOL showNamedTextAttachmentsInline = NO; return [viewer pageWithName: @"UIxMailPartMixedViewer"]; } +- (WOComponent *) encryptedViewer +{ + return [viewer pageWithName: @"UIxMailPartEncryptedViewer"]; +} + - (WOComponent *) signedViewer { /* Note: we cannot cache the multipart viewers, because it can be nested */ @@ -156,11 +161,7 @@ static BOOL showNamedTextAttachmentsInline = NO; - (WOComponent *) htmlViewer { - id o; - - o = [viewer pageWithName: @"UIxMailPartHTMLViewer"]; - - return o; + return [viewer pageWithName: @"UIxMailPartHTMLViewer"]; } - (WOComponent *) messageViewer @@ -198,13 +199,13 @@ static BOOL showNamedTextAttachmentsInline = NO; /* this is used by mail-delivery reports */ return [self mixedViewer]; } - else if ([mt isEqualToString:@"text"]) + else if ([mt isEqualToString: @"text"]) { - if ([st isEqualToString:@"plain"] || [st isEqualToString:@"html"]) { + if ([st isEqualToString: @"plain"] || [st isEqualToString: @"html"]) { if (!showNamedTextAttachmentsInline && [self _shouldDisplayAsAttachment: _info textPart:YES]) return [self linkViewer]; - return [st isEqualToString:@"html"] + return [st isEqualToString: @"html"] ? [self htmlViewer] : [self textViewer]; } @@ -214,7 +215,7 @@ static BOOL showNamedTextAttachmentsInline = NO; // TIFF files aren't well-supported and Thunderbird sometimes send PDF // files over as image/pdf ! - if ([mt isEqualToString:@"image"] && + if ([mt isEqualToString: @"image"] && !([st isEqualToString: @"tiff"] || [st isEqualToString: @"pdf"])) { if ([self _shouldDisplayAsAttachment: _info textPart: NO]) @@ -223,11 +224,11 @@ static BOOL showNamedTextAttachmentsInline = NO; return [self imageViewer]; } - if ([mt isEqualToString:@"message"] && [st isEqualToString:@"rfc822"]) + if ([mt isEqualToString: @"message"] && [st isEqualToString: @"rfc822"]) return [self messageViewer]; - if ([mt isEqualToString:@"message"] && - [st isEqualToString:@"delivery-status"]) { + if ([mt isEqualToString: @"message"] && + [st isEqualToString: @"delivery-status"]) { /* Content-Description: Delivery error report Content-Type: message/delivery-status @@ -245,21 +246,25 @@ static BOOL showNamedTextAttachmentsInline = NO; return [self linkViewer]; } - if ([mt isEqualToString:@"application"]) + if ([mt isEqualToString: @"application"]) { // octet-stream (generate download link?, autodetect type?) if ([st isEqualToString:@"ics"]) /* Cooqle K4lendahr - Google Calendar */ return [self iCalViewer]; + if ([st isEqualToString: @"x-pkcs7-mime"] || + [st isEqualToString: @"pkcs7-mime"]) + return [self encryptedViewer]; + #if 0 /* the link viewer looks better than plain text ;-) */ - if ([st isEqualToString:@"pgp-signature"]) // TODO: real PGP viewer + if ([st isEqualToString: @"pgp-signature"]) // TODO: real PGP viewer return [self textViewer]; #endif } // TODO: always fallback to octet viewer?! #if 1 - [self errorWithFormat:@"found no viewer for MIME type: %@/%@", mt, st]; + [self errorWithFormat: @"found no viewer for MIME type: %@/%@", mt, st]; #endif return [self linkViewer];