]> err.no Git - scalable-opengroupware.org/commitdiff
made Internet request detection configurable,
authorhelge <helge@d1b88da0-ebda-0310-925b-ed51d893ca5b>
Mon, 7 Feb 2005 13:39:20 +0000 (13:39 +0000)
committerhelge <helge@d1b88da0-ebda-0310-925b-ed51d893ca5b>
Mon, 7 Feb 2005 13:39:20 +0000 (13:39 +0000)
added ability to add special MIME headers for such requests

git-svn-id: http://svn.opengroupware.org/SOGo/trunk@526 d1b88da0-ebda-0310-925b-ed51d893ca5b

SOGo/UI/Mailer/ChangeLog
SOGo/UI/Mailer/README
SOGo/UI/Mailer/UIxMailEditor.m
SOGo/UI/Mailer/UIxMailEditor.wox
SOGo/UI/Mailer/Version

index 44325bd5fa1ad6095a0083afd1da8a634810f521..795bc8a381c45647ed854e76779387cf8db7f4f3 100644 (file)
@@ -1,5 +1,12 @@
 2005-02-07  Helge Hess  <helge.hess@opengroupware.org>
 
+       * UIxMailEditor.m: disabled Internet warning in the mail editor per
+         default, can be enabled using the 'SOGoShowInternetMarker' default,
+         made Internet header detection qualifier configurable, see README
+         (SOGoInternetDetectQualifier string default), when the request is
+         from the Internet, add headers as specified in the
+         'SOGoInternetMailHeaders' dictionary default (v0.9.91)
+
        * UIxMailTree.m: added support for special folder icons (v0.9.90)
 
        * v0.9.89
index 96ab0eefc3006376f89f71138906bbd5da5ccb44..7f893ff0dc7ecfbcc069261989710f7c1e2b87d9 100644 (file)
@@ -20,6 +20,27 @@ UIxMailMainFrame.wox
 UIxMailTree.wox
 UIxMailView.wox
 
+Defaults
+========
+
+SOGoShowInternetMarker - bool
+- show a marker in the editor that the request is from the outside
+
+SOGoInternetDetectQualifier - string
+- an EOQualifier to detect whether a set of HTTP headers is from the outside,
+  eg: "NOT (minequprovenance = 'intranet')"
+      -SOGoInternetDetectQualifier '"NOT (minequprovenance = \"intranet\")"'
+  Note: all header field names are lowercase
+
+SOGoInternetMailHeaders - dictionary
+- if a request was detected as coming from the Internet, add the mail headers
+  specified in this default
+  eg: { received = "sogo depuis internet"; }
+  -SOGoInternetMailHeaders "{received=\"sogo depuis internet\"; }"
+
+SOGoMailEditorKeepTmpFile
+- for debugging, if a mail was send, keep the file containing the MIME in the
+  temporary directory for review instead of deleting it
 
 Notes
 =====
index b79884a981f97deb23861b7294b78e0ccdb14d89..568a5d912ec9fdb180f43c95f58cb68e459a07d1 100644 (file)
 
 @implementation UIxMailEditor
 
-static BOOL keepMailTmpFile    = NO;
-static NSArray *infoKeys = nil;
+static BOOL         keepMailTmpFile    = NO;
+static BOOL         showInternetMarker = NO;
+static EOQualifier  *internetDetectQualifier = nil;
+static NSDictionary *internetMailHeaders     = nil;
+static NSArray      *infoKeys = nil;
 
 + (void)initialize {
   NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
+  NSString *s;
   
   infoKeys = [[NSArray alloc] initWithObjects:
                                @"subject", @"text", @"to", @"cc", @"bcc", 
@@ -69,6 +73,30 @@ static NSArray *infoKeys = nil;
   keepMailTmpFile = [ud boolForKey:@"SOGoMailEditorKeepTmpFile"];
   if (keepMailTmpFile)
     NSLog(@"WARNING: keeping mail files.");
+
+  /* Internet mail settings */
+  
+  showInternetMarker = [ud boolForKey:@"SOGoShowInternetMarker"];
+  if (!showInternetMarker) {
+    NSLog(@"Note: visual Internet marker on mail editor disabled "
+         @"(SOGoShowInternetMarker)");
+  }
+  
+  if ((s = [ud stringForKey:@"SOGoInternetDetectQualifier"]) != nil) {
+    internetDetectQualifier = 
+      [[EOQualifier qualifierWithQualifierFormat:s] retain];
+    if (internetDetectQualifier == nil)
+      NSLog(@"ERROR: could not parse qualifier: '%@'", s);
+  }
+  if (internetDetectQualifier == nil)
+    NSLog(@"Note: no 'SOGoInternetDetectQualifier' configured.");
+  else
+    NSLog(@"Note: detect Internet access using: %@", internetDetectQualifier);
+  
+  internetMailHeaders = 
+    [[ud dictionaryForKey:@"SOGoInternetMailHeaders"] copy];
+  NSLog(@"Note: specified %d headers for mails send via the Internet.", 
+       [internetMailHeaders count]);
 }
 
 - (void)dealloc {
@@ -136,6 +164,23 @@ static NSArray *infoKeys = nil;
   return [self labelForKey:@"Compose Mail"];
 }
 
+/* detect webmail being accessed from the outside */
+
+- (BOOL)isInternetRequest {
+  // TODO: make configurable! (eg allow specification of a qualifier)
+  WORequest *rq;
+  
+  rq = [[self context] request];
+  return [(id<EOQualifierEvaluation>)internetDetectQualifier
+                                    evaluateWithObject:[rq headers]];
+}
+
+- (BOOL)showInternetMarker {
+  if (!showInternetMarker)
+    return NO;
+  return [self isInternetRequest];
+}
+
 /* info loading */
 
 - (void)loadInfo:(NSDictionary *)_info {
@@ -242,8 +287,9 @@ static NSArray *infoKeys = nil;
 }
 
 - (id)sendAction {
-  NSException *error;
-  NSString *mailPath;
+  NSException  *error;
+  NSString     *mailPath;
+  NSDictionary *h;
   
   // TODO: need to validate whether we have a To etc
   
@@ -251,11 +297,15 @@ static NSArray *infoKeys = nil;
   
   if (![self _saveFormInfo])
     return [self failedToSaveFormResponse];
+
+  /* setup some extra headers if required */
+  
+  h = [self isInternetRequest] ? internetMailHeaders : nil;
   
   /* save mail to file (so that we can upload the mail to Cyrus) */
   // TODO: all this could be handled by the SOGoDraftObject?
   
-  mailPath = [[self clientObject] saveMimeMessageToTemporaryFile];
+  mailPath = [[self clientObject] saveMimeMessageToTemporaryFileWithHeaders:h];
   
   /* then, send mail */
   
index c51c4dad6b7a891b3406418d471b4f5794896beb..5196c0e60982309b5d0c9cf8cc2d89bfcb37d244 100644 (file)
@@ -22,8 +22,7 @@
   </div>
 -->
   
-  <var:if condition="request.headers.MinequProvenance" const:value="intranet"
-          const:negate="1">
+  <var:if condition="showInternetMarker">
     <div id="compose_internetmarker">
       <var:string
           label:value="This mail is being sent from an unsecure network!" />
index ec1d8ba8b163e1c740467f37840aa2d79e35bb30..df435c35d8c80bd61400b58732c86e35f05ab761 100644 (file)
@@ -1,7 +1,8 @@
 # version file
 
-SUBMINOR_VERSION:=90
+SUBMINOR_VERSION:=91
 
+# v0.9.91 requires SoObjects/Mailer v0.9.68
 # v0.9.89 requires SoObjects/Mailer v0.9.67
 # v0.9.87 requires SoObjects/Mailer v0.9.65
 # v0.9.86 requires SoObjects/Mailer v0.9.64