diff options
Diffstat (limited to 'netx/net/sourceforge/jnlp/controlpanel/SecuritySettingsPanel.java')
-rw-r--r-- | netx/net/sourceforge/jnlp/controlpanel/SecuritySettingsPanel.java | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/netx/net/sourceforge/jnlp/controlpanel/SecuritySettingsPanel.java b/netx/net/sourceforge/jnlp/controlpanel/SecuritySettingsPanel.java new file mode 100644 index 0000000..18d574a --- /dev/null +++ b/netx/net/sourceforge/jnlp/controlpanel/SecuritySettingsPanel.java @@ -0,0 +1,141 @@ +/* SecuritySettingsPanel.java -- Display possible security settings. +Copyright (C) 2010 Red Hat + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package net.sourceforge.jnlp.controlpanel; + +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.GridBagConstraints; +import java.awt.GridBagLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.Box; +import javax.swing.JCheckBox; +import javax.swing.JLabel; +import javax.swing.JPanel; + +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; +import net.sourceforge.jnlp.runtime.Translator; + +/** + * This provides a way for the user to modify the security settings through a + * GUI. + * + * @author Andrew Su ([email protected], [email protected]) + * + */ +@SuppressWarnings("serial") +public class SecuritySettingsPanel extends NamedBorderPanel implements ActionListener { + + private DeploymentConfiguration config; + + // NOTE: All the ones listed with "Default" are in Oracle's implementation. + // Not shown on deployments.properties webpage. Add support for these later! + /** List of properties used by this panel */ + public static String[] properties = { "deployment.security.askgrantdialog.show", + "deployment.security.askgrantdialog.notinca", + "deployment.security.browser.keystore.use", // default TRUE + "deployment.security.clientauth.keystore.auto", // Default FALSE + "deployment.security.jsse.hostmismatch.warning", + "deployment.security.https.warning.show", // Default FALSE + "deployment.security.sandbox.awtwarningwindow", + "deployment.security.sandbox.jnlp.enhanced", + "deployment.security.validation.crl", // Default TRUE + "deployment.security.validation.ocsp", // Default FALSE + "deployment.security.pretrust.list", // Default TRUE + "deployment.security.blacklist.check", // Default TRUE + "deployment.security.password.cache", // Default TRUE + "deployment.security.SSLv2Hello", // Default FALSE + "deployment.security.SSLv3", // Default TRUE + "deployment.security.TLSv1", // Default TRUE +// "deployment.security.mixcode", // Default TRUE + }; + + /** + * This creates a new instance of the security settings panel. + * + * @param config + * Loaded DeploymentConfiguration file. + */ + public SecuritySettingsPanel(DeploymentConfiguration config) { + super(Translator.R("CPHeadSecurity"), new BorderLayout()); + this.config = config; + + addComponents(); + } + + /** + * Add the components to the panel. + */ + private void addComponents() { + JPanel topPanel = new JPanel(new GridBagLayout()); + GridBagConstraints c = new GridBagConstraints(); + + JLabel description = new JLabel("<html>" + Translator.R("CPSecurityDescription") + "<hr /></html>"); + + JCheckBox[] securityGeneralOptions = { new JCheckBox(Translator.R("SGPAllowUserGrantSigned")), + new JCheckBox(Translator.R("SGPAllowUserGrantUntrust")), + new JCheckBox(Translator.R("SGpUseBrowserKeystore")), + new JCheckBox(Translator.R("SGPUsePersonalCertOneMatch")), + new JCheckBox(Translator.R("SGPWarnCertHostMismatch")), + new JCheckBox(Translator.R("SGPShowValid")), + new JCheckBox(Translator.R("SGPShowSandboxWarning")), + new JCheckBox(Translator.R("SGPAllowUserAcceptJNLPSecurityRequests")), + new JCheckBox(Translator.R("SGPCheckCertRevocationList")), + new JCheckBox(Translator.R("SGPEnableOnlineCertValidate")), + new JCheckBox(Translator.R("SGPEnableTrustedPublisherList")), + new JCheckBox(Translator.R("SGPEnableBlacklistRevocation")), + new JCheckBox(Translator.R("SGPEnableCachingPassword")), + new JCheckBox(Translator.R("SGPUseSSL2")), + new JCheckBox(Translator.R("SGPUseSSL3")), + new JCheckBox(Translator.R("SGPUseTLS1")), }; + + c.fill = GridBagConstraints.BOTH; + c.gridx = 0; + c.weightx = 1; + + topPanel.add(description, c); + + // Only display the ones with properties that are valid or existent. + for (int i = 0; i < properties.length; i++) { + try { + String s = config.getProperty(properties[i]); + securityGeneralOptions[i].setSelected(Boolean.parseBoolean(s)); + securityGeneralOptions[i].setActionCommand(properties[i]); + securityGeneralOptions[i].addActionListener(this); + c.gridy = i + 1; + topPanel.add(securityGeneralOptions[i], c); + } catch (Exception e) { + securityGeneralOptions[i] = null; + } + } + + Component filler = Box.createRigidArea(new Dimension(1, 1)); + c.weighty = 1; + c.gridy++; + topPanel.add(filler, c); + + add(topPanel, BorderLayout.CENTER); + } + + @Override + public void actionPerformed(ActionEvent e) { + config.setProperty(e.getActionCommand(), String.valueOf(((JCheckBox) e.getSource()).isSelected())); + } +} |