]> err.no Git - scalable-opengroupware.org/commitdiff
use common way to detect internet access
authorhelge <helge@d1b88da0-ebda-0310-925b-ed51d893ca5b>
Fri, 8 Jul 2005 10:54:44 +0000 (10:54 +0000)
committerhelge <helge@d1b88da0-ebda-0310-925b-ed51d893ca5b>
Fri, 8 Jul 2005 10:54:44 +0000 (10:54 +0000)
git-svn-id: http://svn.opengroupware.org/SOGo/trunk@701 d1b88da0-ebda-0310-925b-ed51d893ca5b

SOGo/SoObjects/Mailer/ChangeLog
SOGo/SoObjects/Mailer/SOGoMailAccounts.m
SOGo/SoObjects/Mailer/Version
SOGo/SoObjects/SOGo/ChangeLog
SOGo/SoObjects/SOGo/Version
SOGo/SoObjects/SOGo/WOContext+Agenor.m

index 498306a64b8fe7577c398373e4551401321e0407..a3eb41a0478279ec7eda6eab7180938cadcb9301 100644 (file)
@@ -1,3 +1,8 @@
+2005-07-08  Helge Hess  <helge.hess@opengroupware.org>
+
+       * SOGoMailAccounts.m: use WOContext method from libSOGo to detect
+         Internet access (v0.9.94)
+
 2005-07-08  Helge Hess  <helge.hess@opengroupware.org>
 
        * SOGoMailAccounts.m: only deliver share-names as subobjects if the
index 78a1b25a8ae81b2f4e7bf16ea764ffb3fd5a47a2..0c4203131442caf137e4a420dfe55f8c416a4e87 100644 (file)
 #include "common.h"
 #include <NGObjWeb/SoObject+SoDAV.h>
 #include <SOGo/AgenorUserManager.h>
+#include <SOGo/WOContext+Agenor.h>
 
 @implementation SOGoMailAccounts
 
-static EOQualifier *internetDetectQualifier = nil;
-static NSString    *AgenorShareLoginMarker  = @".-.";
-
-+ (void)initialize {
-  NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
-  NSString *s;
-
-  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(@"SOGoMailAccounts: no 'SOGoInternetDetectQualifier' configured.");
-  else {
-    NSLog(@"SOGoMailAccounts: detect Internet access using: %@", 
-         internetDetectQualifier);
-  }
-}
+static NSString *AgenorShareLoginMarker  = @".-.";
 
 /* detect webmail being accessed from the outside */
 
 - (BOOL)isInternetRequest {
-  WORequest *rq;
-  
-  rq = [[(WOApplication *)[WOApplication application] context] request];
-  if (rq == nil) {
-    [self logWithFormat:
-           @"ERROR: got no WORequest for checking Internet headers!"];
-    return NO;
-  }
-  
-  return [(id<EOQualifierEvaluation>)internetDetectQualifier
-                                    evaluateWithObject:[rq headers]];
+  return [[(WOApplication *)[WOApplication application] context] 
+           isAccessFromIntranet] ? NO : YES;
 }
 
 /* listing the available mailboxes */
index 52b2edd859a9ae4a9693672cafecc91ff3722d13..c2722d2da806c1d61e56e73fcd89d6d84decda94 100644 (file)
@@ -1,6 +1,6 @@
 # Version file
 
-SUBMINOR_VERSION:=93
+SUBMINOR_VERSION:=94
 
 # v0.9.91 requires libNGMime       v4.5.222
 # v0.9.69 requires libNGMime       v4.5.210
index ed0dd7bfe38e95463dc09c6f676c9c841dead55f..0706bdcbcd9efdea14d88a136072f96e839d8f47 100644 (file)
@@ -1,3 +1,8 @@
+2005-07-08  Helge Hess  <helge.hess@opengroupware.org>
+
+       * WOContext+Agenor.m: use SOGoInternetDetectQualifier for detecting
+         Internet access level (v0.9.41)
+
 2005-07-08  Marcus Mueller  <znek@mulle-kybernetik.com>
 
        * WOContext+Agenor.[hm]: new category for discovering if the current
index b5f44a7a68894a9b78de49f1ef5f3badb009f61f..a84cdcc500ce69bbad2deefaa971cef1534e5056 100644 (file)
@@ -1,6 +1,6 @@
 # version file
 
-SUBMINOR_VERSION:=40
+SUBMINOR_VERSION:=41
 
 # v0.9.34 requires libGDLContentStore v4.5.26
 # v0.9.26 requires libOGoContentStore v0.9.13
index 81bb3939eb81bf95cf59ad8c6efcab1c479f112a..f8d246fde8c0cd16de6b7a917a5fccb75465b6c1 100644 (file)
 #include "WOContext+Agenor.h"
 #include "common.h"
 
-@implementation WOContext (Agenor)
+@implementation WOContext(Agenor)
+
+static EOQualifier *internetDetectQualifier = nil;
+
+static EOQualifier *getInternetDetectQualifier(void) {
+  static BOOL didCheck = NO;
+  NSUserDefaults *ud;
+  NSString *s;
+  
+  if (didCheck) return internetDetectQualifier;
+  
+  ud = [NSUserDefaults standardUserDefaults];
+  
+  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);
+  }
+
+  didCheck = YES;
+  return internetDetectQualifier;
+}
 
 - (BOOL)isAccessFromIntranet {
-  NSNumber *bv;
-
-  bv = [self valueForKey:@"_agenorUnrestricedAccess"];
-  if (!bv) {
-    NSString       *mineqProvenance;
-
-    /* See Agenor technical specification, Section 2 */
-    mineqProvenance = [[self request] formValueForKey:@"X-mineqProvenance"];
-    if ([mineqProvenance hasPrefix:@"intranet"]) {
-      bv = [NSNumber numberWithBool:YES];
-    }
-    else {
-      /* fallback for testing */
-      NSUserDefaults *ud;
-      BOOL           allowed;
-
-      ud      = [NSUserDefaults standardUserDefaults];
-      allowed = [ud boolForKey:@"SOGoAllowsUnrestrictedAccess"];
-      bv      = [NSNumber numberWithBool:allowed];
-    }
-    [self takeValue:bv forKey:@"_agenorUnrestricedAccess"];
+  id<EOQualifierEvaluation> q;
+  NSNumber  *bv;
+  WORequest *rq;
+  BOOL ok;
+  
+  if ((bv = [self objectForKey:@"_agenorUnrestricedAccess"]) != nil)
+    return [bv boolValue];
+
+  if ((rq = [self request]) == nil) {
+    [self logWithFormat:@"ERROR: got no request for context!"];
+    return NO;
   }
-  return [bv boolValue];
+  
+
+  if ((q = (id)getInternetDetectQualifier()) == nil)
+    /* if no qualifier is set, allow access */
+    ok = YES;
+  else
+    /* is Internet request? */
+    ok = [q evaluateWithObject:[rq headers]] ? NO : YES;
+  
+  bv = [NSNumber numberWithBool:ok];
+  [self setObject:bv forKey:@"_agenorUnrestricedAccess"];
+  return ok;
 }
 
-@end
+@end /*  WOContext(Agenor) */