home *** CD-ROM | disk | FTP | other *** search
/ Computer Active 2010 July / CA07.iso / Multimedija / QuickTimeInstaller.exe / AppleApplicationSupport.msi / CFNetwork.resources_PACSupport.js < prev    next >
Encoding:
JavaScript  |  2010-03-15  |  9.6 KB  |  443 lines

  1. /*
  2.     File:       PACSuppport.js
  3.  
  4.     Contains:   PAC Support functions
  5.  
  6.     Copyright:  ⌐ 2003-2004 by Apple Computer, Inc., all rights reserved
  7.  
  8.     Bugs?:      For bug reports, consult the following page on
  9.                 the World Wide Web:
  10.  
  11.                     http://developer.apple.com/bugreporter/
  12.  
  13. */
  14.  
  15. var __Apple_dsn_cache = new Array;
  16.  
  17. function isPlainHostName(host) {
  18.     
  19.     return (host.indexOf('.') == -1 ? true : false);
  20. }
  21.  
  22.  
  23. function dnsDomainIs(host, domain) {
  24.     
  25.     var h = host.toLowerCase();
  26.     var d = domain.toLowerCase();
  27.     var sub = h.substring(h.length - d.length, h.length);
  28.  
  29.     if (sub == d)
  30.         return true;
  31.     
  32.     return false;
  33. }
  34.  
  35.  
  36. function localHostOrDomainIs(host, hostdom) {
  37.     
  38.     var h1 = host.toLowerCase();
  39.     var h2 = hostdom.toLowerCase();
  40.     
  41.     return ((h1 == h2) || (isPlainHostName(h1) & !isPlainHostName(h2))) ? true : false;
  42. }
  43.  
  44.  
  45. function isResolvable(host) {
  46.     
  47.     var ip = dnsResolve(host);
  48.     
  49.     return ((typeof ip == "string") && ip.length) ? true : false;
  50. }
  51.  
  52.  
  53. function isInNet(host, pattern, mask) {
  54.     
  55.     var ip = dnsResolve(host);
  56.     
  57.     if (ip) {
  58.         
  59.         var p = pattern.split('.');
  60.         var m = mask.split('.');
  61.         var a = ip.split('.');
  62.         
  63.         if ((p.length == m.length) && (m.length == a.length)) {
  64.             
  65.             for (i = 0; i < p.length; i++) {
  66.                 if ((p[i]& m[i]) != (m[i]& a[i]))
  67.                     return false;
  68.             }
  69.             
  70.             return true;
  71.         }
  72.     }
  73.     
  74.     return false;
  75. }
  76.  
  77.  
  78. function dnsResolve(host) {
  79.     
  80.     var ips, i;
  81.     for (i = 0; i < __Apple_dsn_cache.length; i += 2) {
  82.         
  83.         if (__Apple_dsn_cache[i] == host) {
  84.             ips = __Apple_dsn_cache[i + 1];
  85.             break;
  86.         }
  87.     }
  88.     
  89.     if (i >= __Apple_dsn_cache.length) {
  90.         
  91.         ips = __dnsResolve(host);
  92.         
  93.         if (__Apple_dsn_cache.length == 20) {
  94.             __Apple_dsn_cache.pop();
  95.             __Apple_dsn_cache.pop();
  96.         }
  97.         
  98.         __Apple_dsn_cache[__Apple_dsn_cache.length] = host;
  99.         __Apple_dsn_cache[__Apple_dsn_cache.length] = ips;
  100.     }
  101.     
  102.     if (ips && ips.length) {
  103.         
  104.         for (var i = 0; i < ips.length; i++) {
  105.             
  106.             var bytes = ips[i].split('.');
  107.             if (bytes.length == 4)
  108.                 return ips[i];
  109.         }
  110.     }
  111.     
  112.     return null;
  113. }
  114.  
  115.  
  116. function myIpAddress() {
  117.     
  118.     var ips = __primaryIPv4Addresses();
  119.     
  120.     if (ips && ips.length) {
  121.         
  122.         for (var i = 0; i < ips.length; i++) {
  123.             
  124.             var bytes = ips[i].split('.');
  125.             if (bytes.length == 4)
  126.                 return ips[i];
  127.         }
  128.     }
  129.     
  130.     return null;
  131. }
  132.  
  133.  
  134. function dnsDomainLevels(host) {
  135.     
  136.     var parts = host.split('.');
  137.     return parts.length - 1;
  138. }
  139.  
  140.  
  141. function shExpMatch(str, shexp) {
  142.     var matchStr = shexp;
  143.     var myRegex;
  144.     if (typeof str != "string" || typeof shexp != "string")
  145.         return false;
  146.     
  147.     if (str == "" && shexp == "")
  148.         return true;
  149.     
  150.     // My strategy is going to be to piggyback off of the JavaScript
  151.     // regex engine.  I just have to tweak the incoming pattern...
  152.     
  153.     //escape control chars / classes
  154.     matchStr = matchStr.replace(/\\/g, "\\\\");
  155.     matchStr = matchStr.replace(/([+,^$|{}().])/g, "\\$1");
  156.     //turn shell-wildcards into wildcard/quantifier
  157.     matchStr = matchStr.replace(/\*/g, ".*");
  158.     matchStr = matchStr.replace(/\?/g, ".?");
  159.     
  160.     matchStr = "^" + matchStr + "$";
  161.     //shell expression matching is case-insensitive
  162.     myRegex = new RegExp(matchStr, "i");
  163.     
  164.     return str.search(myRegex) != -1;
  165. }
  166.  
  167.  
  168. function weekdayRange(wd1, wd2, gmt) {
  169.     
  170.     var today = new Date();
  171.     var days = "SUNMONTUEWEDTHUFRISAT";
  172.     
  173.     wd1 = wd1.toUpperCase();
  174.     if (wd2 == undefined)
  175.         wd2 = wd1;
  176.     else
  177.         wd2 = wd2.toUpperCase();
  178.     
  179.     var d1 = days.indexOf(wd1);
  180.     var d2 = days.indexOf(wd2);
  181.     
  182.     if ((d2 == -1) && (wd2 == "GMT")) {
  183.         gmt = wd2;
  184.         d2 = d1;
  185.     }
  186.     
  187.     if ((d1 == -1) || (d2 == -1))
  188.         return false;
  189.     
  190.     d1 = d1 / 3;
  191.     d2 = d2 / 3;
  192.     
  193.     if (gmt == "GMT")
  194.         today = today.getUTCDay();
  195.     else
  196.         today = today.getDay();
  197.     
  198.     if ((d1 <= d2) && (today >= d1) && (today <= d2))
  199.         return true;
  200.     
  201.     if ((d2 < d1) && ((today <= d2) || (today >= d1)))
  202.         return true;
  203.     
  204.     return false;
  205. }
  206.  
  207.  
  208. function dateRange() {
  209.     
  210.     var today = new Date();
  211.     
  212.     var num = arguments.length;
  213.     var gmt = arguments[num - 1];
  214.     if (typeof gmt !=  "string")
  215.         gmt = false;
  216.     else {
  217.         gmt = gmt.toUpperCase();
  218.         if (gmt != "GMT")
  219.             gmt = false;
  220.         else {
  221.             gmt = true;
  222.             num--;
  223.         }
  224.     }
  225.     
  226.     if (!num || (num > 6))
  227.         return false;
  228.     
  229.     var d1 = 0;
  230.     var d2 = 0;
  231.     var m1 = 0;
  232.     var m2 = 0;
  233.     var y1 = 0;
  234.     var y2 = 0;
  235.     
  236.     for (i = 0; i < num; i++) {
  237.         
  238.         var arg = arguments[i];
  239.         
  240.         if (typeof arg == "number") {
  241.             
  242.             if (arg > 31) {
  243.                 
  244.                 if (!y1)
  245.                     y1 = arg;
  246.                 else if (!y2)
  247.                     y2 = arg;
  248.                 else
  249.                     return false;
  250.             }
  251.             
  252.             else if (!arg)
  253.                 return false;
  254.             
  255.             else if (!d1)
  256.                 d1 = arg;
  257.             else if (!d2)
  258.                 d2 = arg;
  259.             else
  260.                 return false;
  261.         }
  262.         
  263.         else if (typeof arg == "string") {
  264.             
  265.             var months = "JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC";
  266.             
  267.             arg = arg.toUpperCase();
  268.             arg = months.indexOf(arg);
  269.             
  270.             if (arg == -1)
  271.                 return false;            
  272.             
  273.             arg /= 3;
  274.             arg += 1;
  275.             
  276.             if (!m1)
  277.                 m1 = arg;
  278.             else if (!m2)
  279.                 m2 = arg;
  280.             else
  281.                 return false;
  282.         }
  283.         
  284.         else
  285.             return false;
  286.     }
  287.     
  288.     if (!y1) y1 = gmt ? today.getUTCFullYear() : today.getFullYear();
  289.     if (!y2) y2 = y1;
  290.     if (!m1) m1 = (gmt ? today.getUTCMonth() : today.getMonth()) + 1;
  291.     if (!m2) m2 = m1;
  292.     if (!d1) d1 = gmt ? today.getUTCDate() : today.getDate();
  293.     if (!d2) d2 = d1;
  294.     
  295.     var date1;
  296.     var date2;
  297.     
  298.     if (gmt) {
  299.         
  300.         date1 = Date.UTC(y1, m1 - 1, d1, 0, 0, 0, 0);
  301.         date2 = Date.UTC(y2, m2 - 1, d2, 23, 59, 59, 999);
  302.     }
  303.     
  304.     else {
  305.         
  306.         date1 = (Date(y1, m1 - 1, d1, 0, 0, 0, 0)).valueOf();
  307.         date2 = (Date(y2, m2 - 1, d2, 23, 59, 59, 999)).valueOf();
  308.     }
  309.     
  310.     today = today.valueOf();
  311.     
  312.     return ((date1 <= today) && (today <= date2));
  313. }
  314.  
  315.  
  316. function timeRange() {
  317.     
  318.     var date1 = new Date();
  319.     var today = new Date();
  320.     var date2 = new Date();
  321.     
  322.     var num = arguments.length;
  323.     var gmt = arguments[num - 1];
  324.     if (typeof gmt !=  "string")
  325.         gmt = false;
  326.     else {
  327.         gmt = gmt.toUpperCase();
  328.         if (gmt != "GMT")
  329.             gmt = false;
  330.         else {
  331.             gmt = true;
  332.             num--;
  333.         }
  334.     }
  335.     
  336.     if (!num || (num > 6) || ((num % 2) && (num != 1)))
  337.         return false;
  338.     
  339.     date1.setMinutes(0);
  340.     date1.setSeconds(0);
  341.     date1.setMilliseconds(0);
  342.     
  343.     date2.setMinutes(59);
  344.     date2.setSeconds(59);
  345.     date2.setMilliseconds(999);
  346.     
  347.     for (i = 0; i < (num / 2); i++) {
  348.         
  349.         var arg = arguments[i];
  350.         if (gmt) {
  351.             switch (i) {
  352.                 case 0:
  353.                     date1.setUTCHours(arg);
  354.                     date2.setUTCHours(arg);
  355.                     break;
  356.                 case 1:
  357.                     date1.setUTCMinutes(arg);
  358.                     date2.setUTCMinutes(arg);
  359.                     break;
  360.                 case 2:
  361.                     date1.setUTCSeconds(arg);
  362.                     date2.setUTCSeconds(arg);
  363.                     break;
  364.             }
  365.         }
  366.         else {
  367.             switch (i) {
  368.                 case 0:
  369.                     date1.setHours(arg);
  370.                     date2.setHours(arg);
  371.                     break;
  372.                 case 1:
  373.                     date1.setMinutes(arg);
  374.                     date2.setMinutes(arg);
  375.                     break;
  376.                 case 2:
  377.                     date1.setSeconds(arg);
  378.                     date2.setSeconds(arg);
  379.                     break;
  380.             }
  381.         }
  382.     }
  383.     
  384.     if (num != 1) {
  385.         
  386.         date2.setMinutes(0);
  387.         date2.setSeconds(0);
  388.         date2.setMilliseconds(0);
  389.         
  390.         for (i = 0; i < (num / 2); i++) {
  391.             
  392.             var arg = arguments[(num / 2) + i];
  393.             if (gmt) {
  394.                 switch (i) {
  395.                     case 0:
  396.                         date2.setUTCHours(arg);
  397.                         break;
  398.                     case 1:
  399.                         date2.setUTCMinutes(arg);
  400.                         break;
  401.                     case 2:
  402.                         date2.setUTCSeconds(arg);
  403.                         break;
  404.                 }
  405.             }
  406.             else {
  407.                 switch (i) {
  408.                     case 0:
  409.                         date2.setHours(arg);
  410.                         break;
  411.                     case 1:
  412.                         date2.setMinutes(arg);
  413.                         break;
  414.                     case 2:
  415.                         date2.setSeconds(arg);
  416.                         break;
  417.                 }
  418.             }
  419.         }
  420.     }
  421.     
  422.     today = today.valueOf();
  423.     date1 = date1.valueOf();
  424.     date2 = date2.valueOf();
  425.     
  426.     if (date2 < date1)
  427.         date2 += 86400000;
  428.     
  429.     return ((date1 <= today) && (today <= date2));
  430. }
  431.  
  432.  
  433. function __Apple_FindProxyForURL(url, host) {
  434.     
  435.     __Apple_dsn_cache = new Array;
  436.     
  437.     var result = FindProxyForURL(url, host);
  438.     
  439.     __Apple_dsn_cache = new Array;
  440.     
  441.     return result;
  442. }
  443.