]> err.no Git - sope/blobdiff - sope-appserver/NGObjWeb/WEClientCapabilities.m
hotfix
[sope] / sope-appserver / NGObjWeb / WEClientCapabilities.m
index ac3a820a293a8f9c2c05543dcd0f9c1c61044a63..cdb6950bafd7bac5cab0b77709018b676ad8a2f3 100644 (file)
@@ -1,5 +1,6 @@
 /*
-  Copyright (C) 2000-2005 SKYRIX Software AG
+  Copyright (C) 2000-2006 SKYRIX Software AG
+  Copyright (C) 2006      Helge Hess
 
   This file is part of SOPE.
 
 #define WEUA_Ecto             38
 #define WEUA_NewsFire         39
 #define WEUA_Goliath          40
+#define WEUA_PerlHTTPDAV      41
+#define WEUA_Google           42
+#define WEUA_WebDrive         43
+#define WEUA_Sunbird          44
 
 #define WEOS_UNKNOWN   0
 #define WEOS_WINDOWS   1
@@ -88,8 +93,8 @@
 
 - (id)initWithRequest:(WORequest *)_request {
   NSString *ac;
-  const unsigned char *ua;
-  const unsigned char *tmp;
+  const char *ua;
+  const char *tmp;
   int defaultOS  = WEOS_UNKNOWN;
   int defaultCPU = WECPU_UNKNOWN;
   
       self->browserMajorVersion = combinedVersion / 100;
     }
   }
+  else if ((tmp = strstr(ua, "Sunbird/"))) {
+    /* Sunbird says it is a Mozilla */
+    self->browser = WEUA_Sunbird;
+    tmp += 8; /* skip "Sunbird/" */
+    
+    self->browserMajorVersion = atoi(tmp);
+    if ((tmp = index(tmp, '.'))) {
+      tmp++;
+      self->browserMinorVersion = atoi(tmp);
+    }
+  }
   else if (strstr(ua, "Outlook-Express/")) {
     /* Outlook Express 5.5 mailbox access via http */
     self->browser = WEUA_MSOutlookExpress;
     /* Entourage MacOSX 10.1.4 */
     self->browser = WEUA_Entourage;
   }
+  else if (strstr(ua, "Microsoft-WebDAV-MiniRedir/5")) {
+    /* WebFolders Win XP SP 2 */
+    self->browser = WEUA_WebFolder;
+  }
   else if ((tmp = strstr(ua, "MSIE"))) {
     /* Internet Explorer */
     self->browser = WEUA_IE;
     /* Adobe GoLive */
     self->browser = WEUA_GOLIVE;
   }
+  else if (strstr(ua, "DAV.pm")) {
+    /* Perl HTTP::DAV */
+    self->browser = WEUA_PerlHTTPDAV;
+  }
   else if (strstr(ua, "Darwin") != NULL && strstr(ua, "fetch/") != NULL) {
     /* MacOSX 10.0 DAV FileSystem */
     self->browser = WEUA_MACOSX_DAVFS;
     /* WebFolder */
     self->browser = WEUA_WebFolder;
   }
+  else if (strstr(ua, "Microsoft Office Protocol Discovery")) {
+    /* Word 2003, treat as WebFolder */
+    self->browser = WEUA_WebFolder;
+  }
   else if (strstr(ua, "curl")) {
     /* curl program */
     self->browser = WEUA_CURL;
   else if (strstr(ua, "Morgul")) {
     self->browser = WEUA_Morgul;
   }
+  else if (strstr(ua, "WebDrive")) {
+    self->browser = WEUA_WebDrive;
+  }
   else if (strstr(ua, "CFNetwork/1.1")) {
     self->browser = WEUA_CFNetwork;
   }
   else if (strstr(ua, "SOPE/")) {
     self->browser = WEUA_SOPE;
   }
+  else if (strstr(ua, "Mediapartners-Google/")) {
+    self->browser = WEUA_Google;
+  }
   else {
     /* unknown browser */
     self->browser = WEUA_UNKNOWN;
     case WEUA_Ecto:             return @"Ecto";
     case WEUA_NewsFire:         return @"NewsFire";
     case WEUA_Goliath:          return @"Goliath";
+    case WEUA_PerlHTTPDAV:      return @"PerlHTTPDAV";
+    case WEUA_Google:           return @"Google";
+    case WEUA_WebDrive:         return @"WebDrive";
+    case WEUA_Sunbird:          return @"Sunbird";
     default:                    return @"unknown";
   }
 }
     case WEUA_Netscape:
     case WEUA_OmniWeb:
     case WEUA_Konqueror:
+    case WEUA_Safari:
       return YES;
       
     default:
 }
 
 - (BOOL)isXULBrowser {
-  if (self->browser == WEUA_Safari)
+  if (self->browser == WEUA_Safari) // TODO: Safari supports some XUL stuff
     return NO;
   if ((self->browser == WEUA_Netscape) && (self->browserMajorVersion >= 6))
     return YES;
   if (self->browser == WEUA_Wget)         return YES;
   if (self->browser == WEUA_JavaSDK)      return YES;
   if (self->browser == WEUA_PythonURLLIB) return YES;
+  if (self->browser == WEUA_Google)       return YES;
   return NO;
 }
 - (BOOL)isDAVClient {
   if (self->browser == WEUA_Entourage)        return YES;
   if (self->browser == WEUA_Morgul)           return YES;
   if (self->browser == WEUA_Goliath)          return YES;
+  if (self->browser == WEUA_PerlHTTPDAV)      return YES;
+  if (self->browser == WEUA_WebDrive)         return YES;
+  if (self->browser == WEUA_Sunbird)          return YES;
   return NO;
 }
 
   case WEUA_Evolution:
   case WEUA_SOUP:
   case WEUA_Morgul:
+  case WEUA_Sunbird:
     /* browser so new, that they always supported UTF-8 ... */
     return YES;
   case WEUA_IE:
 - (NSString *)description {
   NSMutableString *s;
 
-  s = [NSMutableString stringWithFormat:@"<%@[0x%08X]:",
+  s = [NSMutableString stringWithFormat:@"<%@[0x%p]:",
                          NSStringFromClass([self class]), self];
   
   //[s appendFormat:@" ua='%@'", self->userAgent];
-  [s appendFormat:@" type=%@ v%i.%i>",
+  [s appendFormat:@" type=%@ v%i.%i",
        [self userAgentType],
        self->browserMajorVersion, self->browserMinorVersion];
   [s appendFormat:@" os=%@",   [self os]];
 
 @end /* WEClientCapabilities */
 
-static NSString *ClientCapsCacheKey = @"WEClientCapabilties";
+static NSString *ClientCapsCacheKey = @"WEClientCapabilities";
 
 @implementation WORequest(ClientCapabilities)
 
@@ -943,6 +987,9 @@ static NSString *WEClientDetectorFormName = @"WEClientDetect";
   
   MacOSX 10.2.1 DAV FS
     WebDAVFS/1.2.1 (01218000) Darwin/6.1 (Power Macintosh)
+
+  MacOSX 10.4.2 DAV FS
+    WebDAVFS/1.4.1 (01418000) Darwin/8.6.0 (Power Macintosh)
   
   Cadaver 0.17.0
     'cadaver/0.17.0 neon/0.12.0-dev'
@@ -1038,4 +1085,42 @@ static NSString *WEClientDetectorFormName = @"WEClientDetect";
   
   Goliath
     'Goliath/1.0.1 (Macintosh-Carbon; PPC)'
+
+  PERL HTTP::DAV
+    'DAV.pm/v0.31'
+  
+  Google Ads
+    'Mediapartners-Google/2.1'
+
+  WebFolders Win XP SP2
+    'Microsoft-WebDAV-MiniRedir/5.1.2600'
+  
+  Word 2003
+    'Microsoft Office Protocol Discovery'
+
+  WebDrive
+    'WebDrive 7.10.1475 DAV'
+
+  Nokia N80, Opera 8 (352x416, 24b)
+    'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Symbian OS; Series 60/; 7439) Opera 8.60 [de]'
+    'X-OS-Prefs: fw:352; fh:416; cd:24c; pl:3; pj:0; pa:1;pi:0;ps:0;'
+
+  Nokia N80, Safari
+    'User-Agent: Mozilla/5.0 (SymbianOS/9.1; U; en-us) AppleWebKit/413 (KHTML, like Gecko) Safari/413'
+
+  Nokia N80, WAP Browser
+    'User-Agent: NokiaN80-1/3.0 (3.0611.0.8) Series60/3.0  Profile/MIDP-2.0 Configuration/CLDC-1.1'
+    'x-wap-profile: "http://nds1.nds.nokia.com/uaprof/NN80-1r100.xml"'
+
+  Sony/Ericsson T610 (128x160, 16b)
+    'user-agent: SonyEricssonT610/R301 Profile/MIDP-1.0 Configuration/CLDC-1.0 UP.Link/6.3.0.0.0'
+    'x-up-devcap-charset: US-ASCII,ISO-8859-1,UTF-8,ISO-10646-UCS-2'
+    'x-up-devcap-iscolor: 1'
+    'x-up-devcap-max-pdu: 10000'
+    'x-up-devcap-screendepth: 16'
+    'x-up-devcap-screenpixels: 128,160'
+    'x-up-forwarded-for: 10.233.155.62'
+    'x-up-subno: 981574289-60174629'
+    'x-up-wtls-info: off'
+    'x-wap-profile: "http://wap.sonyericsson.com/UAprof/T610R301.xml"'
 */