home *** CD-ROM | disk | FTP | other *** search
/ PC World 2005 December / PCWorld_2005-12_cd.bin / komunikace / netscape / nsb-install-8-0.exe / chrome / pippki.jar / content / pippki / pref-crlupdate.js < prev    next >
Text File  |  2005-09-26  |  9KB  |  259 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.  *  Rangan Sen <rangansen@netscape.com>
  21.  */
  22.  
  23. const nsICRLManager = Components.interfaces.nsICRLManager;
  24. const nsCRLManager  = "@mozilla.org/security/crlmanager;1";
  25. const nsIPKIParamBlock    = Components.interfaces.nsIPKIParamBlock;
  26. const nsICRLInfo          = Components.interfaces.nsICRLInfo;
  27. const nsIPrefService      = Components.interfaces.nsIPrefService;
  28.  
  29. var crl;
  30. var bundle;
  31. var prefService;
  32. var prefBranch;
  33. var updateTypeRadio;
  34. var enabledCheckBox;
  35. var timeBasedRadio;
  36. var freqBasedRadio;
  37. var crlManager;
  38.  
  39. var autoupdateEnabledString   = "security.crl.autoupdate.enable.";
  40. var autoupdateTimeTypeString  = "security.crl.autoupdate.timingType.";
  41. var autoupdateTimeString      = "security.crl.autoupdate.nextInstant.";
  42. var autoupdateURLString       = "security.crl.autoupdate.url.";
  43. var autoupdateErrCntString    = "security.crl.autoupdate.errCount.";
  44. var autoupdateErrDetailString = "security.crl.autoupdate.errDetail.";
  45. var autoupdateDayCntString    = "security.crl.autoupdate.dayCnt.";
  46. var autoupdateFreqCntString   = "security.crl.autoupdate.freqCnt.";
  47.  
  48. function onLoad()
  49. {
  50.   crlManager = Components.classes[nsCRLManager].getService(nsICRLManager);
  51.   var pkiParams = window.arguments[0].QueryInterface(nsIPKIParamBlock);  
  52.   var isupport = pkiParams.getISupportAtIndex(1);
  53.   crl = isupport.QueryInterface(nsICRLInfo);
  54.  
  55.   autoupdateEnabledString    = autoupdateEnabledString + crl.nameInDb;
  56.   autoupdateTimeTypeString  = autoupdateTimeTypeString + crl.nameInDb;
  57.   autoupdateTimeString      = autoupdateTimeString + crl.nameInDb;
  58.   autoupdateDayCntString    = autoupdateDayCntString + crl.nameInDb;
  59.   autoupdateFreqCntString   = autoupdateFreqCntString + crl.nameInDb;
  60.   autoupdateURLString       = autoupdateURLString + crl.nameInDb;
  61.   autoupdateErrCntString    = autoupdateErrCntString + crl.nameInDb;
  62.   autoupdateErrDetailString = autoupdateErrDetailString + crl.nameInDb;
  63.  
  64.   bundle = srGetStrBundle("chrome://pippki/locale/pippki.properties");
  65.   prefService = Components.classes["@mozilla.org/preferences-service;1"].getService(nsIPrefService);
  66.   prefBranch = prefService.getBranch(null);
  67.  
  68.   updateTypeRadio = document.getElementById("autoUpdateType");
  69.   enabledCheckBox = document.getElementById("enableCheckBox");
  70.   timeBasedRadio = document.getElementById("timeBasedRadio");
  71.   freqBasedRadio = document.getElementById("freqBasedRadio");
  72.  
  73.   //Read the existing prefs, if any
  74.   initializeSelection();
  75. }
  76.  
  77. function updateSelectedTimingControls()
  78. {
  79.   var freqBox = document.getElementById("nextUpdateFreq");
  80.   var timeBox = document.getElementById("nextUpdateDay");
  81.   if(updateTypeRadio.selectedItem.id == "freqBasedRadio"){
  82.     freqBox.removeAttribute("disabled");
  83.     timeBox.disabled = true;
  84.   } else {
  85.     timeBox.removeAttribute("disabled");
  86.     freqBox.disabled = true;
  87.   }
  88. }
  89.  
  90. function initializeSelection()
  91. {
  92.   var menuItemNode;
  93.   var hasAdvertisedURL = false;
  94.   var hasNextUpdate = true;
  95.  
  96.   var lastFetchMenuNode;
  97.   var advertisedMenuNode;
  98.   
  99.   try {
  100.     var isEnabled = prefBranch.getBoolPref(autoupdateEnabledString);
  101.     enabledCheckBox.checked = isEnabled;
  102.   } catch(exception){
  103.     enabledCheckBox.checked = false;
  104.   }
  105.  
  106.   //Always the last fetch url, for now.
  107.   var URLDisplayed = document.getElementById("urlName"); 
  108.   URLDisplayed.value = crl.lastFetchURL;
  109.   
  110.   //Decide how many update timing types to be shown
  111.   //If no next update specified, hide the first choice. Default shows both
  112.   if(crl.nextUpdateLocale == null || crl.nextUpdateLocale.length == 0) {
  113.     timeBasedRadio.disabled = true;
  114.     hasNextUpdate = false;
  115.   }
  116.   
  117.   //Set up the initial selections based on defaults and prefs, if any
  118.   try{
  119.     var timingPref = prefBranch.getIntPref(autoupdateTimeTypeString);
  120.     if(timingPref != null) {
  121.       if(timingPref == crlManager.TYPE_AUTOUPDATE_TIME_BASED) {
  122.         if(hasNextUpdate){
  123.           updateTypeRadio.selectedItem = timeBasedRadio;
  124.         }
  125.       } else {
  126.         updateTypeRadio.selectedItem = freqBasedRadio;
  127.       }
  128.     } else {
  129.       if(hasNextUpdate){
  130.         updateTypeRadio.selectedItem = timeBasedRadio;
  131.       } else {
  132.         updateTypeRadio.selectedItem = freqBasedRadio;
  133.       }
  134.     }
  135.     
  136.   }catch(exception){
  137.     if(!hasNextUpdate) {
  138.       updateTypeRadio.selectedItem = freqBasedRadio;
  139.     } else {
  140.       updateTypeRadio.selectedItem = timeBasedRadio;
  141.     }
  142.   }
  143.  
  144.   updateSelectedTimingControls();
  145.  
  146.   //Now, retrieving the day count
  147.   var timeBasedBox = document.getElementById("nextUpdateDay");
  148.   try {
  149.     var dayCnt = prefBranch.getCharPref(autoupdateDayCntString);
  150.     //alert(dayCnt);
  151.     if(dayCnt != null){
  152.       timeBasedBox.value = dayCnt;
  153.     } else {
  154.       timeBasedBox.value = 1; 
  155.     }
  156.   } catch(exception) {
  157.     timeBasedBox.value = 1;
  158.   }
  159.  
  160.   var freqBasedBox = document.getElementById("nextUpdateFreq");
  161.   try {
  162.     var freqCnt = prefBranch.getCharPref(autoupdateFreqCntString);
  163.     //alert(freqCnt);
  164.     if(freqCnt != null){
  165.       freqBasedBox.value = freqCnt;
  166.     } else {
  167.       freqBasedBox.value = 1; 
  168.     }
  169.   } catch(exception) {
  170.     freqBasedBox.value = 1;
  171.   }
  172.  
  173.   var errorCountText = document.getElementById("FailureCnt");
  174.   var errorDetailsText = document.getElementById("FailureDetails");
  175.   var cnt = 0;
  176.   var text;
  177.   try{
  178.     cnt = prefBranch.getIntPref(autoupdateErrCntString);
  179.     txt = prefBranch.getCharPref(autoupdateErrDetailString);
  180.   }catch(exception){}
  181.  
  182.   if( cnt > 0 ){
  183.     errorCountText.setAttribute("value",cnt);
  184.     errorDetailsText.setAttribute("value",txt);
  185.   } else {
  186.     errorCountText.setAttribute("value",bundle.GetStringFromName("NoUpdateFailure"));
  187.     var reasonBox = document.getElementById("reasonbox");
  188.     reasonBox.hidden = true;
  189.   }
  190. }
  191.  
  192. function onCancel()
  193. {
  194.   // Close dialog by returning true
  195.   return true;
  196. }
  197.  
  198. function doHelpButton()
  199. {
  200.   openHelp("validation-crl-auto-update-prefs");
  201. }
  202.  
  203. function onAccept()
  204. {
  205.    if(!validatePrefs())
  206.      return false;
  207.  
  208.    //set enable pref
  209.    prefBranch.setBoolPref(autoupdateEnabledString, enabledCheckBox.checked );
  210.    
  211.    //set URL TYPE and value prefs - always to last fetch url - till we have anything else available
  212.    prefBranch.setCharPref(autoupdateURLString, crl.lastFetchURL);
  213.    
  214.    var timingTypeId = updateTypeRadio.selectedItem.id;
  215.    var updateTime;
  216.    var dayCnt = (document.getElementById("nextUpdateDay")).value;
  217.    var freqCnt = (document.getElementById("nextUpdateFreq")).value;
  218.  
  219.    if(timingTypeId == "timeBasedRadio"){
  220.      prefBranch.setIntPref(autoupdateTimeTypeString, crlManager.TYPE_AUTOUPDATE_TIME_BASED);
  221.      updateTime = crlManager.computeNextAutoUpdateTime(crl, crlManager.TYPE_AUTOUPDATE_TIME_BASED, dayCnt);
  222.    } else {
  223.      prefBranch.setIntPref(autoupdateTimeTypeString, crlManager.TYPE_AUTOUPDATE_FREQ_BASED);
  224.      updateTime = crlManager.computeNextAutoUpdateTime(crl, crlManager.TYPE_AUTOUPDATE_FREQ_BASED, freqCnt);
  225.    }
  226.  
  227.    //alert(updateTime);
  228.    prefBranch.setCharPref(autoupdateTimeString, updateTime); 
  229.    prefBranch.setCharPref(autoupdateDayCntString, dayCnt);
  230.    prefBranch.setCharPref(autoupdateFreqCntString, freqCnt);
  231.  
  232.    //Save Now
  233.    prefService.savePrefFile(null);
  234.    
  235.    crlManager.rescheduleCRLAutoUpdate();
  236.    //Close dialog by returning true
  237.    return true;
  238. }
  239.  
  240. function validatePrefs()
  241. {
  242.    var dayCnt = (document.getElementById("nextUpdateDay")).value;
  243.    var freqCnt = (document.getElementById("nextUpdateFreq")).value;
  244.  
  245.    var tmp = parseFloat(dayCnt);
  246.    if(!(tmp > 0.0)){
  247.      alert(bundle.GetStringFromName("crlAutoUpdateDayCntError"));
  248.      return false;
  249.    }
  250.    
  251.    tmp = parseFloat(freqCnt);
  252.    if(!(tmp > 0.0)){
  253.      alert(bundle.GetStringFromName("crlAutoUpdtaeFreqCntError"));
  254.      return false;
  255.    }
  256.    
  257.    return true;
  258. }
  259.