Index: pki/dogtag/console-ui/CMSAdminRS.properties =================================================================== --- pki/dogtag/console-ui/CMSAdminRS.properties (revision 2533) +++ pki/dogtag/console-ui/CMSAdminRS.properties (working copy) @@ -598,6 +598,7 @@ CRLSETTING_LABEL_NEXTTIME_LABEL=Extend next update time in full CRLs CRLSETTING_LABEL_MINUTES_LABEL=minutes CRLSETTING_LABEL_GRACEPERIOD_LABEL=Next update grace period +CRLSETTING_LABEL_NEXTASTHISEXTENSION_LABEL=Next update as this update extension CRLSETTING_DIALOG_UPDATES_TITLE=Error CRLSETTING_DIALOG_UPDATES_MESSAGE=You are required to select at least one form of CRL updates. CRLSETTING_DIALOG_BLANKSCHEMA_TITLE=Error @@ -618,6 +619,10 @@ CRLSETTING_DIALOG_BLANKGRACE_MESSAGE=Grace period must be specified! CRLSETTING_DIALOG_GRACENUMBER_TITLE=Number Format Error CRLSETTING_DIALOG_GRACENUMBER_MESSAGE=Grace period must be a positive integer! +CRLSETTING_DIALOG_BLANKNEXTASTHISEXTENSION_TITLE=Error +CRLSETTING_DIALOG_BLANKNEXTASTHISEXTENSION_MESSAGE=Grace period must be specified! +CRLSETTING_DIALOG_NEXTASTHISEXTENSIONNUMBER_TITLE=Number Format Error +CRLSETTING_DIALOG_NEXTASTHISEXTENSIONNUMBER_MESSAGE=This update extension must be a positive integer! CRLCACHE_TITLE=Cache CRLCACHE_BORDER_CACHE_LABEL=CRL Cache CRLCACHE_LABEL_CACHE_LABEL=Enable CRL cache: Index: pki/base/ca/src/com/netscape/ca/CRLIssuingPoint.java =================================================================== --- pki/base/ca/src/com/netscape/ca/CRLIssuingPoint.java (revision 2533) +++ pki/base/ca/src/com/netscape/ca/CRLIssuingPoint.java (working copy) @@ -204,6 +204,11 @@ private long mNextUpdateGracePeriod; /** + * next update as this update extension + */ + private long mNextAsThisUpdateExtension; + + /** * Boolean flag controlling whether CRLv2 extensions are to be * used in CRL. */ @@ -663,6 +668,9 @@ // get next update grace period mNextUpdateGracePeriod = MINUTE * config.getInteger(Constants.PR_GRACE_PERIOD, 0); + // get next update as this update extension + mNextAsThisUpdateExtension = MINUTE * config.getInteger(Constants.PR_NEXT_AS_THIS_EXTENSION, 0); + // Get V2 or V1 CRL mAllowExtensions = config.getBoolean(Constants.PR_EXTENSIONS, false); @@ -1005,6 +1013,16 @@ } } + if (name.equals(Constants.PR_NEXT_AS_THIS_EXTENSION)) { + try { + if (value != null && value.length() > 0) { + mNextAsThisUpdateExtension = MINUTE * Long.parseLong(value.trim()); + } + } catch (NumberFormatException e) { + noRestart = false; + } + } + // -- CRL Cache -- if (name.equals(Constants.PR_ENABLE_CACHE)) { if (value.equals(Constants.FALSE) && mEnableCRLCache) { @@ -2330,6 +2348,15 @@ mLastUpdate = thisUpdate; // mNextUpdate = nextUpdate; mNextDeltaUpdate = (nextDeltaUpdate != null)? new Date(nextDeltaUpdate.getTime()): null; + if (mNextAsThisUpdateExtension > 0) { + Date nextUpdateAsThisUpdateExtension = new Date(thisUpdate.getTime()+mNextAsThisUpdateExtension); + if (nextUpdate != null && nextUpdate.before(nextUpdateAsThisUpdateExtension)) { + nextUpdate = nextUpdateAsThisUpdateExtension; + } + if (nextDeltaUpdate != null && nextDeltaUpdate.before(nextUpdateAsThisUpdateExtension)) { + nextDeltaUpdate = nextUpdateAsThisUpdateExtension; + } + } if (nextUpdate != null) { nextUpdate.setTime((nextUpdate.getTime())+mNextUpdateGracePeriod); } Index: pki/base/common/src/com/netscape/certsrv/common/Constants.java =================================================================== --- pki/base/common/src/com/netscape/certsrv/common/Constants.java (revision 2533) +++ pki/base/common/src/com/netscape/certsrv/common/Constants.java (working copy) @@ -214,6 +214,7 @@ public final static String PR_ENABLE_FREQ = "enableUpdateInterval"; public final static String PR_UPDATE_FREQ = "autoUpdateInterval"; public final static String PR_GRACE_PERIOD = "nextUpdateGracePeriod"; + public final static String PR_NEXT_AS_THIS_EXTENSION = "nextAsThisUpdateExtension"; public final static String PR_ENABLE_CACHE = "enableCRLCache"; public final static String PR_CACHE_FREQ = "cacheUpdateInterval"; public final static String PR_CACHE_RECOVERY = "enableCacheRecovery"; Index: pki/base/console/src/com/netscape/admin/certsrv/config/CMSCRLSettingPanel.java =================================================================== --- pki/base/console/src/com/netscape/admin/certsrv/config/CMSCRLSettingPanel.java (revision 2533) +++ pki/base/console/src/com/netscape/admin/certsrv/config/CMSCRLSettingPanel.java (working copy) @@ -59,6 +59,9 @@ private JLabel mGracePeriodLabel; private JTextField mGracePeriod; private JLabel mGracePeriodMinLabel; + private JLabel mNextAsThisUpdateExtensionLabel; + private JTextField mNextAsThisUpdateExtension; + private JLabel mNextAsThisUpdateExtensionMinLabel; private Color mActiveColor; private AdminConnection _admin; @@ -279,7 +282,32 @@ gbc.insets = new Insets(COMPONENT_SPACE,COMPONENT_SPACE,0,COMPONENT_SPACE); freqPanel.add(mGracePeriodMinLabel, gbc); + // next update as this update extension + CMSAdminUtil.resetGBC(gbc); + mNextAsThisUpdateExtensionLabel = makeJLabel("NEXTASTHISEXTENSION"); + gbc.anchor = gbc.WEST; + gbc.fill = gbc.NONE; + gbc.gridx = 0; + // gbc.gridx = 2; + gbc.weightx = 0.0; + gbc.gridwidth = 1; + gbc.insets = new Insets(COMPONENT_SPACE,DIFFERENT_COMPONENT_SPACE,0,0); + freqPanel.add(mNextAsThisUpdateExtensionLabel, gbc); + mNextAsThisUpdateExtension = makeJTextField(5); + gbc.anchor = gbc.WEST; + gbc.gridx++; + gbc.insets = new Insets(COMPONENT_SPACE,COMPONENT_SPACE,0,0); + freqPanel.add(mNextAsThisUpdateExtension, gbc); + + mNextAsThisUpdateExtensionMinLabel = makeJLabel("MINUTES"); + gbc.anchor = gbc.WEST; + gbc.gridx++; + gbc.weightx = 1.0; + gbc.gridwidth = gbc.REMAINDER; + gbc.insets = new Insets(COMPONENT_SPACE,COMPONENT_SPACE,0,COMPONENT_SPACE); + freqPanel.add(mNextAsThisUpdateExtensionMinLabel, gbc); + refresh(); } @@ -295,6 +323,7 @@ nvps.add(Constants.PR_ENABLE_FREQ, ""); nvps.add(Constants.PR_UPDATE_FREQ, ""); nvps.add(Constants.PR_GRACE_PERIOD, ""); + nvps.add(Constants.PR_NEXT_AS_THIS_EXTENSION, ""); try { NameValuePairs val = null; @@ -342,6 +371,8 @@ mFrequency.setText(value); } else if (name.equals(Constants.PR_GRACE_PERIOD)) { mGracePeriod.setText(value); + } else if (name.equals(Constants.PR_NEXT_AS_THIS_EXTENSION)) { + mNextAsThisUpdateExtension.setText(value); } } } @@ -530,6 +561,21 @@ showMessageDialog("GRACENUMBER"); return false; } + + if (mNextAsThisUpdateExtension.getText().trim().equals("")) { + showMessageDialog("BLANKNEXTASTHISEXTENSION"); + return false; + } + try { + int nextAsThisUpdateExtension = Integer.parseInt(mNextAsThisUpdateExtension.getText().trim()); + if (nextAsThisUpdateExtension < 0) { + showMessageDialog("NEXTASTHISEXTENSIONNUMBER"); + return false; + } + } catch (NumberFormatException e) { + showMessageDialog("NEXTASTHISEXTENSIONNUMBER"); + return false; + } } NameValuePairs nvps = new NameValuePairs(); @@ -571,6 +617,7 @@ nvps.add(Constants.PR_GRACE_PERIOD, mGracePeriod.getText().trim()); + nvps.add(Constants.PR_NEXT_AS_THIS_EXTENSION, mNextAsThisUpdateExtension.getText().trim()); _model.progressStart(); @@ -617,6 +664,11 @@ CMSAdminUtil.repaintComp(mGracePeriodLabel); mGracePeriodMinLabel.setEnabled(true); CMSAdminUtil.repaintComp(mGracePeriodMinLabel); + CMSAdminUtil.enableJTextField(mNextAsThisUpdateExtension, true, mActiveColor); + mNextAsThisUpdateExtensionLabel.setEnabled(true); + CMSAdminUtil.repaintComp(mNextAsThisUpdateExtensionLabel); + mNextAsThisUpdateExtensionMinLabel.setEnabled(true); + CMSAdminUtil.repaintComp(mNextAsThisUpdateExtensionMinLabel); } else { CMSAdminUtil.enableJTextField(mDailyAt, false, getBackground()); if (!mEnableFreq.isSelected()) { @@ -625,6 +677,11 @@ CMSAdminUtil.repaintComp(mGracePeriodLabel); mGracePeriodMinLabel.setEnabled(false); CMSAdminUtil.repaintComp(mGracePeriodMinLabel); + CMSAdminUtil.enableJTextField(mNextAsThisUpdateExtension, false, getBackground()); + mNextAsThisUpdateExtensionLabel.setEnabled(false); + CMSAdminUtil.repaintComp(mNextAsThisUpdateExtensionLabel); + mNextAsThisUpdateExtensionMinLabel.setEnabled(false); + CMSAdminUtil.repaintComp(mNextAsThisUpdateExtensionMinLabel); } } } @@ -638,6 +695,11 @@ CMSAdminUtil.repaintComp(mGracePeriodLabel); mGracePeriodMinLabel.setEnabled(true); CMSAdminUtil.repaintComp(mGracePeriodMinLabel); + CMSAdminUtil.enableJTextField(mNextAsThisUpdateExtension, true, mActiveColor); + mNextAsThisUpdateExtensionLabel.setEnabled(true); + CMSAdminUtil.repaintComp(mNextAsThisUpdateExtensionLabel); + mNextAsThisUpdateExtensionMinLabel.setEnabled(true); + CMSAdminUtil.repaintComp(mNextAsThisUpdateExtensionMinLabel); } else { CMSAdminUtil.enableJTextField(mFrequency, false, getBackground()); mMinLabel.setEnabled(false); @@ -648,6 +710,11 @@ CMSAdminUtil.repaintComp(mGracePeriodLabel); mGracePeriodMinLabel.setEnabled(false); CMSAdminUtil.repaintComp(mGracePeriodMinLabel); + CMSAdminUtil.enableJTextField(mNextAsThisUpdateExtension, false, getBackground()); + mNextAsThisUpdateExtensionLabel.setEnabled(false); + CMSAdminUtil.repaintComp(mNextAsThisUpdateExtensionLabel); + mNextAsThisUpdateExtensionMinLabel.setEnabled(false); + CMSAdminUtil.repaintComp(mNextAsThisUpdateExtensionMinLabel); } } } @@ -696,6 +763,11 @@ CMSAdminUtil.repaintComp(mGracePeriodLabel); mGracePeriodMinLabel.setEnabled(enable3); CMSAdminUtil.repaintComp(mGracePeriodMinLabel); + CMSAdminUtil.enableJTextField(mNextAsThisUpdateExtension, enable3, color3); + mNextAsThisUpdateExtensionLabel.setEnabled(enable3); + CMSAdminUtil.repaintComp(mNextAsThisUpdateExtensionLabel); + mNextAsThisUpdateExtensionMinLabel.setEnabled(enable3); + CMSAdminUtil.repaintComp(mNextAsThisUpdateExtensionMinLabel); } } Index: pki/base/console/src/com/netscape/certsrv/common/Constants.java =================================================================== --- pki/base/console/src/com/netscape/certsrv/common/Constants.java (revision 2533) +++ pki/base/console/src/com/netscape/certsrv/common/Constants.java (working copy) @@ -216,6 +216,7 @@ public final static String PR_ENABLE_FREQ = "enableUpdateInterval"; public final static String PR_UPDATE_FREQ = "autoUpdateInterval"; public final static String PR_GRACE_PERIOD = "nextUpdateGracePeriod"; + public final static String PR_NEXT_AS_THIS_EXTENSION = "nextAsThisUpdateExtension"; public final static String PR_ENABLE_CACHE = "enableCRLCache"; public final static String PR_CACHE_FREQ = "cacheUpdateInterval"; public final static String PR_CACHE_RECOVERY = "enableCacheRecovery"; Index: pki/redhat/console-ui/CMSAdminRS.properties =================================================================== --- pki/redhat/console-ui/CMSAdminRS.properties (revision 16063) +++ pki/redhat/console-ui/CMSAdminRS.properties (working copy) @@ -607,6 +607,7 @@ CRLSETTING_LABEL_NEXTTIME_LABEL=Extend next update time in full CRLs CRLSETTING_LABEL_MINUTES_LABEL=minutes CRLSETTING_LABEL_GRACEPERIOD_LABEL=Next update grace period +CRLSETTING_LABEL_NEXTASTHISEXTENSION_LABEL=Next update as this update extension CRLSETTING_DIALOG_UPDATES_TITLE=Error CRLSETTING_DIALOG_UPDATES_MESSAGE=You are required to select at least one form of CRL updates. CRLSETTING_DIALOG_BLANKSCHEMA_TITLE=Error @@ -627,6 +628,10 @@ CRLSETTING_DIALOG_BLANKGRACE_MESSAGE=Grace period must be specified! CRLSETTING_DIALOG_GRACENUMBER_TITLE=Number Format Error CRLSETTING_DIALOG_GRACENUMBER_MESSAGE=Grace period must be a positive integer! +CRLSETTING_DIALOG_BLANKNEXTASTHISEXTENSION_TITLE=Error +CRLSETTING_DIALOG_BLANKNEXTASTHISEXTENSION_MESSAGE=Grace period must be specified! +CRLSETTING_DIALOG_NEXTASTHISEXTENSIONNUMBER_TITLE=Number Format Error +CRLSETTING_DIALOG_NEXTASTHISEXTENSIONNUMBER_MESSAGE=This update extension must be a positive integer! CRLCACHE_TITLE=Cache CRLCACHE_BORDER_CACHE_LABEL=CRL Cache CRLCACHE_LABEL_CACHE_LABEL=Enable CRL cache: