home *** CD-ROM | disk | FTP | other *** search
/ PC World 2006 December / PCWorld_2006-12_cd.bin / komunikace / netscape / nsb-install-8-1-2.exe / chrome / pippki.jar / content / pippki / crlManager.js < prev    next >
Text File  |  2006-01-06  |  8KB  |  226 lines

  1. /*
  2.  * The contents of this file are subject to the Mozilla Public
  3.  * License Version 1.1 (the "License"); you may not use this file
  4.  * except in compliance with the License. You may obtain a copy of
  5.  * the License at http://www.mozilla.org/MPL/
  6.  *
  7.  * Software distributed under the License is distributed on an "AS
  8.  * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
  9.  * implied. See the License for the specific language governing
  10.  * rights and limitations under the License.
  11.  *
  12.  * The Original Code is mozilla.org code.
  13.  *
  14.  * The Initial Developer of the Original Code is Netscape
  15.  * Communications Corporation.  Portions created by Netscape are
  16.  * Copyright (C) 2001 Netscape Communications Corporation. All
  17.  * Rights Reserved.
  18.  *
  19.  * Contributor(s):
  20.  *  David Drinan <ddrinan@netscape.com>
  21.  */
  22.  
  23. const nsICRLManager = Components.interfaces.nsICRLManager;
  24. const nsCRLManager  = "@mozilla.org/security/crlmanager;1";
  25. const nsICRLInfo = Components.interfaces.nsICRLInfo;
  26. const nsISupportsArray = Components.interfaces.nsISupportsArray;
  27. const nsIPKIParamBlock    = Components.interfaces.nsIPKIParamBlock;
  28. const nsPKIParamBlock    = "@mozilla.org/security/pkiparamblock;1";
  29. const nsIPrefService      = Components.interfaces.nsIPrefService;
  30.  
  31. var crlManager;
  32. var crls;
  33. var prefService;
  34. var prefBranch;
  35.  
  36. var autoupdateEnabledBaseString   = "security.crl.autoupdate.enable.";
  37. var autoupdateTimeTypeBaseString  = "security.crl.autoupdate.timingType.";
  38. var autoupdateTimeBaseString      = "security.crl.autoupdate.nextInstant.";
  39. var autoupdateURLBaseString       = "security.crl.autoupdate.url.";
  40. var autoupdateErrCntBaseString    = "security.crl.autoupdate.errCount.";
  41. var autoupdateErrDetailBaseString = "security.crl.autoupdate.errDetail.";
  42. var autoupdateDayCntString        = "security.crl.autoupdate.dayCnt.";
  43. var autoupdateFreqCntString       = "security.crl.autoupdate.freqCnt.";
  44.  
  45. function onLoad()
  46. {
  47.   var crlEntry;
  48.   var i;
  49.  
  50.   crlManager = Components.classes[nsCRLManager].getService(nsICRLManager);
  51.   crls = crlManager.getCrls();
  52.   prefService = Components.classes["@mozilla.org/preferences-service;1"].getService(nsIPrefService);
  53.   prefBranch = prefService.getBranch(null);
  54.   var bundle = srGetStrBundle("chrome://pippki/locale/pippki.properties");
  55.   var autoupdateEnabledString;
  56.   var autoupdateErrCntString;
  57.  
  58.   for (i=0; i<crls.length; i++) {
  59.     crlEntry = crls.queryElementAt(i, nsICRLInfo);
  60.     var org = crlEntry.organization;
  61.     var orgUnit = crlEntry.organizationalUnit;
  62.     var lastUpdate = crlEntry.lastUpdateLocale;
  63.     var nextUpdate = crlEntry.nextUpdateLocale;
  64.     autoupdateEnabledString    = autoupdateEnabledBaseString + crlEntry.nameInDb;
  65.     autoupdateErrCntString    = autoupdateErrCntBaseString + crlEntry.nameInDb;
  66.     var enabled = false;
  67.     var enabledStr = bundle.GetStringFromName("crlAutoupdateNotEnabled");
  68.     var status = "";
  69.     try{
  70.       enabled = prefBranch.getBoolPref(autoupdateEnabledString)
  71.       if(enabled){
  72.         enabledStr = bundle.GetStringFromName("crlAutoupdateEnabled");
  73.       }
  74.       var cnt;
  75.       cnt = prefBranch.getIntPref(autoupdateErrCntString);
  76.       if(cnt > 0){
  77.         status = bundle.GetStringFromName("crlAutoupdateFailed");
  78.       } else {
  79.         status = bundle.GetStringFromName("crlAutoupdateOk");
  80.       }
  81.     }catch(exception){}
  82.     
  83.     AddItem("crlList", [org, orgUnit, lastUpdate, nextUpdate, enabledStr, status], "crltree_", i);
  84.   }
  85. }
  86.  
  87. function AddItem(children,cells,prefix,idfier)
  88. {
  89.   var kids = document.getElementById(children);
  90.   var item  = document.createElement("treeitem");
  91.   var row   = document.createElement("treerow");
  92.   for(var i = 0; i < cells.length; i++)
  93.   {
  94.     var cell  = document.createElement("treecell");
  95.     cell.setAttribute("class", "propertylist");
  96.     cell.setAttribute("label", cells[i])
  97.     row.appendChild(cell);
  98.   }
  99.   item.appendChild(row);
  100.   item.setAttribute("id",prefix + idfier);
  101.   kids.appendChild(item);
  102. }
  103.  
  104. function DeleteCrlSelected() {
  105.   var crlEntry;
  106.  
  107.   // delete selected item
  108.   var crltree = document.getElementById("crltree");
  109.   var i = crltree.currentIndex;
  110.   if(i<0){
  111.     return;
  112.   }
  113.   crlEntry = crls.queryElementAt(i, nsICRLInfo);
  114.     
  115.   var autoupdateEnabled = false;
  116.   var autoupdateParamAvailable = false;
  117.   var id = crlEntry.nameInDb;
  118.   
  119.   //First, check if autoupdate was enabled for this crl
  120.   try {
  121.     autoupdateEnabled = prefBranch.getBoolPref(autoupdateEnabledBaseString + id);
  122.     //Note, if the pref is not present, we get an exception right here,
  123.     //and autoupdateEnabled remains false
  124.     autoupdateParamAvailable = true;
  125.     prefBranch.clearUserPref(autoupdateEnabledBaseString + id);
  126.     prefBranch.clearUserPref(autoupdateTimeTypeBaseString + id);
  127.     prefBranch.clearUserPref(autoupdateTimeBaseString + id);
  128.     prefBranch.clearUserPref(autoupdateURLBaseString + id);
  129.     prefBranch.clearUserPref(autoupdateDayCntString + id);
  130.     prefBranch.clearUserPref(autoupdateFreqCntString + id);
  131.     prefBranch.clearUserPref(autoupdateErrCntBaseString + id);
  132.     prefBranch.clearUserPref(autoupdateErrDetailBaseString + id);
  133.   } catch(Exception){}
  134.  
  135.   //Once we have deleted the prefs that can be deleted, we save the 
  136.   //file if relevant, restart the scheduler, and once we are successful 
  137.   //in doind that, we try to delete the crl 
  138.   try{
  139.     if(autoupdateParamAvailable){
  140.       prefService.savePrefFile(null);
  141.     }
  142.  
  143.     if(autoupdateEnabled){
  144.       crlManager.rescheduleCRLAutoUpdate();
  145.     }
  146.           
  147.     // Now, try to delete it
  148.     crlManager.deleteCrl(i);
  149.     DeleteItemSelected("crltree", "crltree_", "crlList");
  150.     //To do: If delete fails, we should be able to retrieve the deleted
  151.     //settings
  152.     //XXXXXXXXXXXXXXXXXXXXX
  153.   
  154.   }catch(exception) {
  155.     //To Do: Possibly show an error ...
  156.     //XXXXXXXXXXXX
  157.   }
  158.  
  159.   EnableCrlActions();
  160. }
  161.  
  162. function EnableCrlActions() {
  163.   var tree = document.getElementById("crltree");
  164.   if (tree.treeBoxObject.selection.count) {
  165.     document.getElementById("deleteCrl").removeAttribute("disabled");
  166.     document.getElementById("editPrefs").removeAttribute("disabled");
  167.     document.getElementById("updateCRL").removeAttribute("disabled");
  168.   } else {
  169.     document.getElementById("deleteCrl").setAttribute("disabled", "true");
  170.     document.getElementById("editPrefs").setAttribute("disabled", "true");
  171.     document.getElementById("updateCRL").setAttribute("disabled", "true");
  172.   }
  173. }
  174.  
  175. function DeleteItemSelected(tree, prefix, kids) {
  176.   var i;
  177.   var delnarray = [];
  178.   var rv = "";
  179.   var cookietree = document.getElementById(tree);
  180.   var rangeCount = cookietree.view.selection.getRangeCount();
  181.   for(i = 0; i < rangeCount; ++i) 
  182.   { 
  183.     var start = {}, end = {};
  184.     cookietree.view.selection.getRangeAt(i, start, end);
  185.     for (var k = start.value; k <= end.value; ++k) {
  186.       var item = cookietree.contentView.getItemAtIndex(k);
  187.       delnarray[i] = document.getElementById(item.id);
  188.       var itemid = parseInt(item.id.substring(prefix.length, item.id.length));
  189.       rv += (itemid + ",");
  190.     }
  191.   }
  192.   for(i = 0; i < delnarray.length; i++) 
  193.   { 
  194.     document.getElementById(kids).removeChild(delnarray[i]);
  195.   }
  196.   return rv;
  197. }
  198.  
  199. function EditAutoUpdatePrefs() {
  200.   var crlEntry;
  201.  
  202.   // delete selected item
  203.   var crltree = document.getElementById("crltree");
  204.   var i = crltree.currentIndex;
  205.   if(i<0){
  206.     return;
  207.   }
  208.   crlEntry = crls.queryElementAt(i, nsICRLInfo);
  209.   var params = Components.classes[nsPKIParamBlock].createInstance(nsIPKIParamBlock);
  210.   params.setISupportAtIndex(1, crlEntry);
  211.   window.openDialog("chrome://pippki/content/pref-crlupdate.xul","",
  212.                     "chrome,centerscreen,modal", params);
  213. }
  214.  
  215. function UpdateCRL()
  216. {
  217.   var crlEntry;
  218.   var crltree = document.getElementById("crltree");
  219.   var i = crltree.currentIndex;
  220.   if(i<0){
  221.     return;
  222.   }
  223.   crlEntry = crls.queryElementAt(i, nsICRLInfo);
  224.   crlManager.updateCRLFromURL(crlEntry.lastFetchURL, crlEntry.nameInDb);
  225. }
  226.