package org.wiztools.restclient.ui.reqssl; import java.awt.BorderLayout; import java.awt.Component; import java.awt.FlowLayout; import java.awt.GridLayout; import javax.annotation.PostConstruct; import javax.inject.Inject; import javax.swing.*; import org.wiztools.restclient.bean.SSLHostnameVerifier; import org.wiztools.restclient.bean.SSLKeyStore; import org.wiztools.restclient.bean.SSLReq; import org.wiztools.restclient.bean.SSLReqBean; import org.wiztools.restclient.ui.*; /** * * @author subwiz */ public class ReqSSLPanelImpl extends JPanel implements ReqSSLPanel { @Inject RESTView view; @Inject RESTUserInterface rest_ui; // SSL - general private final JCheckBox jcb_disable_hostname_verifier = new JCheckBox("Disable hostname verification? "); private final JCheckBox jcb_ssl_trust_self_signed_cert = new JCheckBox("Ignore cert errors (self-signed, expired, etc.)? "); // SSL - trust store @Inject private KeyStorePanel jp_truststore; // SSL - key store @Inject private KeyStorePanel jp_keystore; private SSLHostnameVerifier getSelectedHostnameVerifier() { return jcb_disable_hostname_verifier.isSelected()? SSLHostnameVerifier.ALLOW_ALL: SSLHostnameVerifier.STRICT; } @Override public SSLReq getSslReq() { SSLReqBean out = new SSLReqBean(); out.setHostNameVerifier(getSelectedHostnameVerifier()); out.setTrustAllCerts(jcb_ssl_trust_self_signed_cert.isSelected()); SSLKeyStore trustStore = jp_truststore.getKeyStore(); out.setTrustStore(trustStore); SSLKeyStore keyStore = jp_keystore.getKeyStore(); out.setKeyStore(keyStore); return out; } @Override public void setSslReq(SSLReq sslReq) { // general tab: switch(sslReq.getHostNameVerifier()) { case ALLOW_ALL: jcb_disable_hostname_verifier.setSelected(true); break; default: jcb_disable_hostname_verifier.setSelected(false); break; } jcb_ssl_trust_self_signed_cert.setSelected(sslReq.isTrustAllCerts()); // truststore / keystore tab: jp_truststore.setKeyStore(sslReq.getTrustStore()); jp_keystore.setKeyStore(sslReq.getKeyStore()); } @Override public void clear() { jcb_disable_hostname_verifier.setSelected(false); jcb_ssl_trust_self_signed_cert.setSelected(false); jp_truststore.clear(); jp_keystore.clear(); } @PostConstruct protected void init() { setLayout(new BorderLayout(RESTView.BORDER_WIDTH, 2)); JTabbedPane jtp_ssl = new JTabbedPane(); { // SSL General: JPanel jpGrid = new JPanel(new GridLayout(2, 1)); { // Trust self-signed cert: JPanel jp = new JPanel(); jp.setLayout(new FlowLayout(FlowLayout.LEFT)); jp.add(jcb_ssl_trust_self_signed_cert); jpGrid.add(jp); } { // Hostname verifier: JPanel jp = new JPanel(); jp.setLayout(new FlowLayout(FlowLayout.LEFT)); jp.add(jcb_disable_hostname_verifier); jpGrid.add(jp); } jtp_ssl.addTab("General", UIUtil.getFlowLayoutPanelLeftAligned(jpGrid)); } { // Trust / Key store: jp_truststore.setLabel("Truststore:"); jp_truststore.setTitle("Enter Truststore Details"); jp_keystore.setLabel("Keystore:"); jp_keystore.setTitle("Enter Keystore Details"); JPanel jp_grid = new JPanel(new GridLayout(2, 1)); jp_grid.add(jp_truststore); jp_grid.add(jp_keystore); jtp_ssl.addTab("Truststore / Keystore", UIUtil.getFlowLayoutPanelLeftAligned(jp_grid)); } add(jtp_ssl); } @Override public Component getComponent() { return this; } }