From a52b66cf1d0a579b95cddba44fb4df0e97bf8e22 Mon Sep 17 00:00:00 2001 From: tkellner Date: Wed, 24 Jul 2013 14:57:49 +0000 Subject: Add proxy authentication git-svn-id: https://joinup.ec.europa.eu/svn/pdf-over/trunk@465 174cde9d-5d70-4d2a-aa98-46368bc2aaf7 --- .../main/java/at/asit/pdfover/gui/Constants.java | 6 + .../composites/AdvancedConfigurationComposite.java | 213 +++++++++++++++++++-- .../gui/composites/ConfigurationComposite.java | 8 + .../gui/workflow/config/ConfigManipulator.java | 12 ++ .../workflow/config/ConfigOverlayManipulator.java | 12 ++ .../gui/workflow/config/ConfigProvider.java | 12 ++ .../gui/workflow/config/ConfigProviderImpl.java | 108 +++++++++++ .../workflow/config/ConfigurationContainer.java | 48 +++-- .../config/ConfigurationContainerImpl.java | 66 +++++-- .../workflow/config/PersistentConfigProvider.java | 14 +- .../gui/workflow/states/PrepareSigningState.java | 184 +++++++++++------- .../at/asit/pdfover/gui/messages.properties | 20 +- .../at/asit/pdfover/gui/messages_de.properties | 20 +- 13 files changed, 604 insertions(+), 119 deletions(-) (limited to 'pdf-over-gui') diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/Constants.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/Constants.java index 4c361819..d95fd000 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/Constants.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/Constants.java @@ -110,6 +110,12 @@ public class Constants { /** The proxy port config parameter */ public static final String CFG_PROXY_PORT = "PROXY_PORT"; //$NON-NLS-1$ + /** The proxy username config parameter */ + public static final String CFG_PROXY_USER = "PROXY_USER"; //$NON-NLS-1$ + + /** The proxy password config parameter */ + public static final String CFG_PROXY_PASS = "PROXY_PASS"; //$NON-NLS-1$ + /** The output folder config parameter */ public static final String CFG_OUTPUT_FOLDER = "OUTPUT_FOLDER"; //$NON-NLS-1$ diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/AdvancedConfigurationComposite.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/AdvancedConfigurationComposite.java index 998e5720..20ca737d 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/AdvancedConfigurationComposite.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/AdvancedConfigurationComposite.java @@ -91,9 +91,15 @@ public class AdvancedConfigurationComposite extends BaseConfigurationComposite { private Text txtProxyHost; private ErrorMarker proxyHostErrorMarker; private Label lblProxyPort; - Text txtProxyPort; + private Text txtProxyPort; + private ErrorMarker txtProxyPortErrorMarker; + private Label lblProxyUser; + private Text txtProxyUser; + private ErrorMarker proxyUserErrorMarker; + private Label lblProxyPass; + private Text txtProxyPass; + private ErrorMarker proxyPassErrorMarker; FormData fd_txtProxyPort; - ErrorMarker txtProxyPortErrorMarker; FormData fd_txtProxyPortErrorMarker; @@ -410,16 +416,16 @@ public class AdvancedConfigurationComposite extends BaseConfigurationComposite { this.grpProxy.setFont(new Font(Display.getCurrent(), fD_grpProxy[0])); this.lblProxyHost = new Label(this.grpProxy, SWT.NONE); - GridData gd_lblNewLabel = new GridData(SWT.LEFT, SWT.CENTER, false, + GridData gd_lblProxyHost = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1); - gd_lblNewLabel.widthHint = 66; - this.lblProxyHost.setLayoutData(gd_lblNewLabel); + gd_lblProxyHost.widthHint = 66; + this.lblProxyHost.setLayoutData(gd_lblProxyHost); this.lblProxyHost.setBounds(0, 0, 57, 15); - FontData[] fD_lblNewLabel = this.lblProxyHost.getFont().getFontData(); - fD_lblNewLabel[0].setHeight(Constants.TEXT_SIZE_NORMAL); + FontData[] fD_lblProxyHost = this.lblProxyHost.getFont().getFontData(); + fD_lblProxyHost[0].setHeight(Constants.TEXT_SIZE_NORMAL); this.lblProxyHost.setFont(new Font(Display.getCurrent(), - fD_lblNewLabel[0])); + fD_lblProxyHost[0])); Composite compProxyHostContainer = new Composite(this.grpProxy, SWT.NONE); compProxyHostContainer.setLayout(new FormLayout()); @@ -520,6 +526,118 @@ public class AdvancedConfigurationComposite extends BaseConfigurationComposite { } }); + this.lblProxyUser = new Label(this.grpProxy, SWT.NONE); + GridData gd_lblProxyUser = new GridData(SWT.LEFT, SWT.CENTER, false, + false, 1, 1); + gd_lblProxyUser.widthHint = 80; + this.lblProxyUser.setLayoutData(gd_lblProxyUser); + this.lblProxyUser.setBounds(0, 0, 57, 15); + + FontData[] fD_lblProxyUser = this.lblProxyUser.getFont().getFontData(); + fD_lblProxyUser[0].setHeight(Constants.TEXT_SIZE_NORMAL); + this.lblProxyUser.setFont(new Font(Display.getCurrent(), + fD_lblProxyUser[0])); + + Composite compProxyUserContainer = new Composite(this.grpProxy, SWT.NONE); + compProxyUserContainer.setLayout(new FormLayout()); + compProxyUserContainer.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, + 1, 1)); + this.txtProxyUser = new Text(compProxyUserContainer, SWT.BORDER); + FormData fd_txtProxyUser = new FormData(); + fd_txtProxyUser.right = new FormAttachment(100, -42); + fd_txtProxyUser.top = new FormAttachment(0); + fd_txtProxyUser.left = new FormAttachment(0, 5); + + FontData[] fD_txtProxyUser = this.txtProxyUser.getFont().getFontData(); + fD_txtProxyUser[0].setHeight(Constants.TEXT_SIZE_NORMAL); + this.txtProxyUser.setFont(new Font(Display.getCurrent(), + fD_txtProxyUser[0])); + + this.proxyUserErrorMarker = new ErrorMarker(compProxyUserContainer, SWT.NONE, ""); //$NON-NLS-1$ + + FormData fd_proxyUserErrorMarker = new FormData(); + fd_proxyUserErrorMarker.left = new FormAttachment(100, -32); + fd_proxyUserErrorMarker.right = new FormAttachment(100); + fd_proxyUserErrorMarker.top = new FormAttachment(0); + fd_proxyUserErrorMarker.bottom = new FormAttachment(0, 32); + + this.proxyUserErrorMarker.setLayoutData(fd_proxyUserErrorMarker); + this.proxyUserErrorMarker.setVisible(false); + this.txtProxyUser.setLayoutData(fd_txtProxyUser); + + this.txtProxyUser.addFocusListener(new FocusAdapter() { + + @Override + public void focusLost(FocusEvent e) { + processProxyUserChanged(); + } + }); + + this.txtProxyUser.addTraverseListener(new TraverseListener() { + + @Override + public void keyTraversed(TraverseEvent e) { + if (e.detail == SWT.TRAVERSE_RETURN) { + processProxyUserChanged(); + } + } + }); + + this.lblProxyPass = new Label(this.grpProxy, SWT.NONE); + this.lblProxyPass.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, + false, false, 1, 1)); + this.lblProxyPass.setBounds(0, 0, 57, 15); + + FontData[] fD_lblProxyPass = this.lblProxyPass.getFont().getFontData(); + fD_lblProxyPass[0].setHeight(Constants.TEXT_SIZE_NORMAL); + this.lblProxyPass.setFont(new Font(Display.getCurrent(), + fD_lblProxyPass[0])); + + Composite compProxyPassContainer = new Composite(this.grpProxy, SWT.NONE); + compProxyPassContainer.setLayout(new FormLayout()); + compProxyPassContainer.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, + 1, 1)); + this.txtProxyPass = new Text(compProxyPassContainer, SWT.PASSWORD | SWT.BORDER); + FormData fd_txtProxyPass = new FormData(); + fd_txtProxyPass.right = new FormAttachment(100, -42); + fd_txtProxyPass.top = new FormAttachment(0); + fd_txtProxyPass.left = new FormAttachment(0, 5); + + FontData[] fD_txtProxyPass = this.txtProxyPass.getFont().getFontData(); + fD_txtProxyPass[0].setHeight(Constants.TEXT_SIZE_NORMAL); + this.txtProxyPass.setFont(new Font(Display.getCurrent(), + fD_txtProxyPass[0])); + + this.proxyPassErrorMarker = new ErrorMarker(compProxyPassContainer, SWT.NONE, ""); //$NON-NLS-1$ + + FormData fd_proxyPassErrorMarker = new FormData(); + fd_proxyPassErrorMarker.left = new FormAttachment(100, -32); + fd_proxyPassErrorMarker.right = new FormAttachment(100); + fd_proxyPassErrorMarker.top = new FormAttachment(0); + fd_proxyPassErrorMarker.bottom = new FormAttachment(0, 32); + + this.proxyPassErrorMarker.setLayoutData(fd_proxyPassErrorMarker); + this.proxyPassErrorMarker.setVisible(false); + this.txtProxyPass.setLayoutData(fd_txtProxyPass); + + this.txtProxyPass.addFocusListener(new FocusAdapter() { + + @Override + public void focusLost(FocusEvent e) { + processProxyPassChanged(); + } + }); + + this.txtProxyPass.addTraverseListener(new TraverseListener() { + + @Override + public void keyTraversed(TraverseEvent e) { + if (e.detail == SWT.TRAVERSE_RETURN) { + processProxyPassChanged(); + } + } + }); + reloadResources(); } @@ -634,6 +752,44 @@ public class AdvancedConfigurationComposite extends BaseConfigurationComposite { this.configurationContainer.setProxyHost(host); } + void processProxyUserChanged() { + try { + this.proxyUserErrorMarker.setVisible(false); + plainProxyUserSetter(); + } catch (Exception ex) { + this.proxyUserErrorMarker.setVisible(true); + this.proxyUserErrorMarker.setToolTipText(ex.getMessage()); + log.error("processProxyUser: ", ex); //$NON-NLS-1$ + } + } + + /** + * + */ + private void plainProxyUserSetter() { + String user = this.txtProxyUser.getText(); + this.configurationContainer.setProxyUser(user); + } + + void processProxyPassChanged() { + try { + this.proxyPassErrorMarker.setVisible(false); + plainProxyPassSetter(); + } catch (Exception ex) { + this.proxyPassErrorMarker.setVisible(true); + this.proxyPassErrorMarker.setToolTipText(ex.getMessage()); + log.error("processProxyPass: ", ex); //$NON-NLS-1$ + } + } + + /** + * + */ + private void plainProxyPassSetter() { + String pass = this.txtProxyPass.getText(); + this.configurationContainer.setProxyPass(pass); + } + void processProxyPortChanged() { try { this.txtProxyPortErrorMarker.setVisible(false); @@ -705,7 +861,17 @@ public class AdvancedConfigurationComposite extends BaseConfigurationComposite { if (host != null) { this.txtProxyHost.setText(host); } - } + + String user = this.configurationContainer.getProxyUser(); + if (user != null) { + this.txtProxyUser.setText(user); + } + + String pass = this.configurationContainer.getProxyPass(); + if (pass != null) { + this.txtProxyPass.setText(pass); + } +} /* * (non-Javadoc) @@ -737,6 +903,11 @@ public class AdvancedConfigurationComposite extends BaseConfigurationComposite { case 2: this.plainProxyPortSetter(); // Fall through + case 3: + this.plainProxyUserSetter(); + // Fall through + case 4: + this.plainProxyPassSetter(); } } @@ -778,17 +949,27 @@ public class AdvancedConfigurationComposite extends BaseConfigurationComposite { this.cmbLocaleAuswahl.setToolTipText(Messages .getString("advanced_config.LocaleSelection_ToolTip")); //$NON-NLS-1$ - this.grpProxy.setText(Messages.getString("simple_config.Proxy_Title")); //$NON-NLS-1$ - this.lblProxyHost.setText(Messages.getString("simple_config.ProxyHost")); //$NON-NLS-1$ + this.grpProxy.setText(Messages.getString("advanced_config.Proxy_Title")); //$NON-NLS-1$ + this.lblProxyHost.setText(Messages.getString("advanced_config.ProxyHost")); //$NON-NLS-1$ this.txtProxyHost.setToolTipText(Messages - .getString("simple_config.ProxyHost_ToolTip")); //$NON-NLS-1$ + .getString("advanced_config.ProxyHost_ToolTip")); //$NON-NLS-1$ this.txtProxyHost.setMessage(Messages - .getString("simple_config.ProxyHostTemplate")); //$NON-NLS-1$ + .getString("advanced_config.ProxyHost_Template")); //$NON-NLS-1$ this.lblProxyPort.setText(Messages - .getString("simple_config.ProxyPort")); //$NON-NLS-1$ + .getString("advanced_config.ProxyPort")); //$NON-NLS-1$ this.txtProxyPort.setToolTipText(Messages - .getString("simple_config.ProxyPort_ToolTip")); //$NON-NLS-1$ + .getString("advanced_config.ProxyPort_ToolTip")); //$NON-NLS-1$ this.txtProxyPort.setMessage(Messages - .getString("simple_config.ProxyPortTemplate")); //$NON-NLS-1$ + .getString("advanced_config.ProxyPort_Template")); //$NON-NLS-1$ + this.lblProxyUser.setText(Messages.getString("advanced_config.ProxyUser")); //$NON-NLS-1$ + this.txtProxyUser.setToolTipText(Messages + .getString("advanced_config.ProxyUser_ToolTip")); //$NON-NLS-1$ + this.txtProxyUser.setMessage(Messages + .getString("advanced_config.ProxyUser_Template")); //$NON-NLS-1$ + this.lblProxyPass.setText(Messages.getString("advanced_config.ProxyPass")); //$NON-NLS-1$ + this.txtProxyPass.setToolTipText(Messages + .getString("advanced_config.ProxyPass_ToolTip")); //$NON-NLS-1$ + this.txtProxyPass.setMessage(Messages + .getString("advanced_config.ProxyPass_Template")); //$NON-NLS-1$ } } diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/ConfigurationComposite.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/ConfigurationComposite.java index c4691571..fcf3119f 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/ConfigurationComposite.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/ConfigurationComposite.java @@ -320,6 +320,10 @@ public class ConfigurationComposite extends StateComposite { } catch (InvalidPortException e) { log.error("Failed to set proxy port!", e); //$NON-NLS-1$ } + this.configurationContainer.setProxyUser(this.configProvider + .getProxyUserPersistent()); + this.configurationContainer.setProxyPass(this.configProvider + .getProxyPassPersistent()); this.simpleConfigComposite.loadConfiguration(); this.advancedConfigComposite.loadConfiguration(); @@ -421,6 +425,10 @@ public class ConfigurationComposite extends StateComposite { .getProxyHost()); this.configManipulator.setProxyPort(this.configurationContainer .getProxyPort()); + this.configManipulator.setProxyUser(this.configurationContainer + .getProxyUser()); + this.configManipulator.setProxyPass(this.configurationContainer + .getProxyPass()); this.configManipulator.setDefaultEmblem(this.configurationContainer .getEmblem()); diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigManipulator.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigManipulator.java index 58b9e453..68b48242 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigManipulator.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigManipulator.java @@ -75,6 +75,18 @@ public interface ConfigManipulator { */ public void setProxyPort(int port); + /** + * Sets the proxy username + * @param user the proxy username + */ + public void setProxyUser(String user); + + /** + * Sets the proxy password + * @param pass the proxy password + */ + public void setProxyPass(String pass); + /** * Sets the default output folder * @param outputFolder the default output folder diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigOverlayManipulator.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigOverlayManipulator.java index 952116ec..e3fec9f5 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigOverlayManipulator.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigOverlayManipulator.java @@ -60,6 +60,18 @@ public interface ConfigOverlayManipulator { */ public void setProxyPortOverlay(int port); + /** + * Sets the proxy username + * @param user the proxy username + */ + public void setProxyUserOverlay(String user); + + /** + * Sets the proxy password + * @param pass the proxy password + */ + public void setProxyPassOverlay(String pass); + /** * Sets the default output folder * @param outputFolder the default output folder diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigProvider.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigProvider.java index 1adf39e4..91bd5ecf 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigProvider.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigProvider.java @@ -84,6 +84,18 @@ public interface ConfigProvider { */ public int getProxyPort(); + /** + * Gets the proxy username + * @return the proxy username + */ + public String getProxyUser(); + + /** + * Gets the proxy password + * @return the proxy password + */ + public String getProxyPass(); + /** * Get the default configured BKU * @return the default configured BKU diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigProviderImpl.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigProviderImpl.java index 3225c92d..3010868b 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigProviderImpl.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigProviderImpl.java @@ -101,6 +101,14 @@ public class ConfigProviderImpl implements ConfigProvider, ConfigManipulator, this.setProxyHost(config .getProperty(Constants.CFG_PROXY_HOST)); + // Set Proxy User + this.setProxyUser(config + .getProperty(Constants.CFG_PROXY_USER)); + + // Set Proxy Password + this.setProxyPass(config + .getProperty(Constants.CFG_PROXY_PASS)); + // Set Output Folder this.setDefaultOutputFolder(config .getProperty(Constants.CFG_OUTPUT_FOLDER)); @@ -279,6 +287,8 @@ public class ConfigProviderImpl implements ConfigProvider, ConfigManipulator, props.setProperty(Constants.CFG_PROXY_HOST, this.getProxyHostPersistent()); props.setProperty(Constants.CFG_PROXY_PORT, Integer.toString(getProxyPortPersistent())); + props.setProperty(Constants.CFG_PROXY_USER, this.getProxyUserPersistent()); + props.setProperty(Constants.CFG_PROXY_PASS, this.getProxyPassPersistent()); props.setProperty(Constants.CFG_EMBLEM, this.getDefaultEmblemPersistent()); props.setProperty(Constants.CFG_SIGNATURE_NOTE, this.getSignatureNote()); props.setProperty(Constants.CFG_MOBILE_NUMBER, this.getDefaultMobileNumberPersistent()); @@ -758,6 +768,104 @@ public class ConfigProviderImpl implements ConfigProvider, ConfigManipulator, return this.configuration.getProxyPort(); } + /** + * Sets the proxy username + * + * @param user + * the proxy username + */ + @Override + public void setProxyUser(String user) { + if (user == null || user.trim().isEmpty()) { + this.configuration.setProxyUser(STRING_EMPTY); + } else { + this.configuration.setProxyUser(user); + } + } + + /* (non-Javadoc) + * @see at.asit.pdfover.gui.workflow.config.ConfigOverlayManipulator#setProxyUserOverlay(java.lang.String) + */ + @Override + public void setProxyUserOverlay(String user) { + if (user == null || user.trim().isEmpty()) { + this.configurationOverlay.setProxyUser(STRING_EMPTY); + } else { + this.configurationOverlay.setProxyUser(user); + } + } + + /* (non-Javadoc) + * @see at.asit.pdfover.gui.workflow.config.ConfigProvider#getProxyUser() + */ + @Override + public String getProxyUser() { + String user = this.configurationOverlay.getProxyUser(); + if (user == null) + user = getProxyUserPersistent(); + return user; + } + + /* (non-Javadoc) + * @see at.asit.pdfover.gui.workflow.config.PersistentConfigProvider#getProxyUserPersistent() + */ + @Override + public String getProxyUserPersistent() { + String user = this.configuration.getProxyUser(); + if (user == null) + user = STRING_EMPTY; + return user; + } + + /** + * Sets the proxy password + * + * @param pass + * the proxy password + */ + @Override + public void setProxyPass(String pass) { + if (pass == null || pass.trim().isEmpty()) { + this.configuration.setProxyPass(STRING_EMPTY); + } else { + this.configuration.setProxyPass(pass); + } + } + + /* (non-Javadoc) + * @see at.asit.pdfover.gui.workflow.config.ConfigOverlayManipulator#setProxyPassOverlay(java.lang.String) + */ + @Override + public void setProxyPassOverlay(String pass) { + if (pass == null || pass.trim().isEmpty()) { + this.configurationOverlay.setProxyPass(STRING_EMPTY); + } else { + this.configurationOverlay.setProxyPass(pass); + } + } + + /* (non-Javadoc) + * @see at.asit.pdfover.gui.workflow.config.ConfigProvider#getProxyPass() + */ + @Override + public String getProxyPass() { + String pass = this.configurationOverlay.getProxyPass(); + if (pass == null) + pass = getProxyPassPersistent(); + return pass; + } + + /* (non-Javadoc) + * @see at.asit.pdfover.gui.workflow.config.PersistentConfigProvider#getProxyPassPersistent() + */ + @Override + public String getProxyPassPersistent() { + String pass = this.configuration.getProxyPass(); + if (pass == null) + pass = STRING_EMPTY; + return pass; + } + /* * (non-Javadoc) * diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigurationContainer.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigurationContainer.java index 383f5e9b..486647cc 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigurationContainer.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigurationContainer.java @@ -80,18 +80,6 @@ public interface ConfigurationContainer { */ public void setProxyHost(String host); - /** - * Gets the signature note - * @return the signature note - */ - public String getSignatureNote(); - - /** - * Sets the signature note - * @param note the signature note - */ - public void setSignatureNote(String note); - /** * Gets the proxy port * @@ -111,6 +99,42 @@ public interface ConfigurationContainer { */ public void setProxyPort(int port) throws InvalidPortException; + /** + * Gets the proxy username + * @return the proxy username + */ + public String getProxyUser(); + + /** + * Sets the proxy username + * @param user the proxy username + */ + public void setProxyUser(String user); + + /** + * Gets the proxy password + * @return the proxy password + */ + public String getProxyPass(); + + /** + * Sets the proxy password + * @param pass the proxy password + */ + public void setProxyPass(String pass); + + /** + * Gets the signature note + * @return the signature note + */ + public String getSignatureNote(); + + /** + * Sets the signature note + * @param note the signature note + */ + public void setSignatureNote(String note); + /** * Gets the transparency of the placeholder * @return transparency of the placeholder (0-255) diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigurationContainerImpl.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigurationContainerImpl.java index d878f59e..ec79b403 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigurationContainerImpl.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigurationContainerImpl.java @@ -54,31 +54,37 @@ public class ConfigurationContainerImpl implements ConfigurationContainer { /** The mobile phone number */ protected String mobileNumber = null; - + /** The mobile phone password */ protected String mobilePassword = null; - - /** Holds the proxy Host */ + + /** Holds the proxy host */ protected String proxyHost = null; - - /** Holds the signatureNote */ - protected String signatureNote = null; - + /** Holds the proxy port number */ protected int proxyPort = -1; - + + /** Holds the proxy username */ + protected String proxyUser = null; + + /** Holds the proxy password */ + protected String proxyPass = null; + + /** Holds the signatureNote */ + protected String signatureNote = null; + /** Holds the locale */ protected Locale locale = null; - + /** Holds the signature locale */ protected Locale signLocale = null; - + /** Holds the output folder */ protected String folder = null; - + /** Holds the default BKU to use */ protected BKUs defaultBKU = BKUs.NONE; - + /** Holds the automatic positioning value */ protected boolean automaticPositioning = false; @@ -224,6 +230,42 @@ public class ConfigurationContainerImpl implements ConfigurationContainer { } + /* (non-Javadoc) + * @see at.asit.pdfover.gui.workflow.config.ConfigurationContainer#getProxyUser() + */ + @Override + public String getProxyUser() { + return this.proxyUser; + } + + + /* (non-Javadoc) + * @see at.asit.pdfover.gui.workflow.config.ConfigurationContainer#setProxyUser(java.lang.String) + */ + @Override + public void setProxyUser(String user) { + this.proxyUser = user; + } + + + /* (non-Javadoc) + * @see at.asit.pdfover.gui.workflow.config.ConfigurationContainer#getProxyPass() + */ + @Override + public String getProxyPass() { + return this.proxyPass; + } + + + /* (non-Javadoc) + * @see at.asit.pdfover.gui.workflow.config.ConfigurationContainer#setProxyPass(java.lang.String) + */ + @Override + public void setProxyPass(String pass) { + this.proxyPass = pass; + } + + /* (non-Javadoc) * @see at.asit.pdfover.gui.workflow.ConfigurationContainer#getPlaceholderTransparency() */ diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/PersistentConfigProvider.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/PersistentConfigProvider.java index ea2c97b1..fe4fceb3 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/PersistentConfigProvider.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/PersistentConfigProvider.java @@ -52,7 +52,7 @@ public interface PersistentConfigProvider { * @return the emblem */ public String getDefaultEmblemPersistent(); - + /** * Gets the proxy host * @return the proxy hostname or ip address @@ -65,6 +65,18 @@ public interface PersistentConfigProvider { */ public int getProxyPortPersistent(); + /** + * Gets the proxy username + * @return the proxy username + */ + public String getProxyUserPersistent(); + + /** + * Gets the proxy password + * @return the proxy password + */ + public String getProxyPassPersistent(); + /** * Gets the default output folder for signed documents * @return the default output folder diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareSigningState.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareSigningState.java index d0e9bdfe..ad0658c5 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareSigningState.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareSigningState.java @@ -16,6 +16,9 @@ package at.asit.pdfover.gui.workflow.states; //Imports +import java.net.Authenticator; +import java.net.PasswordAuthentication; + import org.eclipse.swt.SWT; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -36,7 +39,8 @@ import at.asit.pdfover.signator.SignatureParameter; import at.asit.pdfover.signator.Signer; /** - * User waiting state, wait for PDF Signator library to prepare document for signing. + * User waiting state, wait for PDF Signator library to prepare document for + * signing. */ public class PrepareSigningState extends State { @@ -48,97 +52,145 @@ public class PrepareSigningState extends State { } private final class PrepareDocumentThread implements Runnable { - + private PrepareSigningState state; - + /** * Default constructor + * * @param state */ public PrepareDocumentThread(PrepareSigningState state) { this.state = state; } - + @Override public void run() { try { - + Status status = this.state.stateMachine.getStatus(); - - ConfigProvider configuration = this.state.stateMachine.getConfigProvider(); - + + ConfigProvider configuration = this.state.stateMachine + .getConfigProvider(); + // SET PROXY HOST and PORT settings - String proxyHost = configuration.getProxyHost(); - int proxyPort = configuration.getProxyPort(); - - if(proxyPort > 0 && proxyPort <= 0xFFFF) { - System.setProperty("http.proxyPort", Integer.toString(proxyPort)); //$NON-NLS-1$ - System.setProperty("https.proxyPort", Integer.toString(proxyPort)); //$NON-NLS-1$ - } - - if(proxyHost != null && !proxyHost.isEmpty()) { + final String proxyHost = configuration.getProxyHost(); + final int proxyPort = configuration.getProxyPort(); + final String proxyUser = configuration.getProxyUser(); + final String proxyPass = configuration.getProxyPass(); + + if (proxyPort > 0 && proxyPort <= 0xFFFF) { + System.setProperty( + "http.proxyPort", Integer.toString(proxyPort)); //$NON-NLS-1$ + System.setProperty( + "https.proxyPort", Integer.toString(proxyPort)); //$NON-NLS-1$ + } + + if (proxyHost != null && !proxyHost.isEmpty()) { System.setProperty("http.proxyHost", proxyHost); //$NON-NLS-1$ System.setProperty("https.proxyHost", proxyHost); //$NON-NLS-1$ - } - - if(this.state.signer == null) { - this.state.signer = this.state.stateMachine.getPDFSigner().getPDFSigner(); } - - if(this.state.signatureParameter == null) { - this.state.signatureParameter = this.state.signer.newParameter(); + + if (proxyUser != null && !proxyUser.isEmpty()) { + System.setProperty("http.proxyUser", proxyUser); //$NON-NLS-1$ + System.setProperty("https.proxyUser", proxyUser); //$NON-NLS-1$ + } + + if (proxyPass != null && !proxyPass.isEmpty()) { + System.setProperty("http.proxyPassword", proxyPass); //$NON-NLS-1$ + System.setProperty("https.proxyPassword", proxyPass); //$NON-NLS-1$ + } + + if (proxyUser != null && !proxyUser.isEmpty() && + proxyPass != null && !proxyPass.isEmpty()) { + Authenticator.setDefault(new Authenticator() { + /* (non-Javadoc) + * @see java.net.Authenticator#getPasswordAuthentication() + */ + @Override + protected PasswordAuthentication getPasswordAuthentication() { + if (getRequestorType() == RequestorType.PROXY) { + if (getRequestingHost().equalsIgnoreCase(proxyHost) && + (getRequestingPort() == proxyPort)) { + return new PasswordAuthentication(proxyUser, + proxyPass.toCharArray()); + } + } + return super.getPasswordAuthentication(); + } + }); + } + if (this.state.signer == null) { + this.state.signer = this.state.stateMachine.getPDFSigner() + .getPDFSigner(); } - - this.state.signatureParameter.setInputDocument(new PDFFileDocumentSource(status.getDocument())); - this.state.signatureParameter.setSignatureDevice(status.getBKU()); - this.state.signatureParameter.setSignaturePosition(status.getSignaturePosition()); - - if(configuration.getDefaultEmblem() != null && !configuration.getDefaultEmblem().isEmpty()) { - this.state.signatureParameter.setEmblem(new FileNameEmblem(configuration.getDefaultEmblem())); + + if (this.state.signatureParameter == null) { + this.state.signatureParameter = this.state.signer + .newParameter(); + } + + this.state.signatureParameter + .setInputDocument(new PDFFileDocumentSource(status + .getDocument())); + this.state.signatureParameter.setSignatureDevice(status + .getBKU()); + this.state.signatureParameter.setSignaturePosition(status + .getSignaturePosition()); + + if (configuration.getDefaultEmblem() != null + && !configuration.getDefaultEmblem().isEmpty()) { + this.state.signatureParameter.setEmblem(new FileNameEmblem( + configuration.getDefaultEmblem())); } - - if(configuration.getSignatureNote() != null && !configuration.getSignatureNote().isEmpty()) { - this.state.signatureParameter.setProperty("SIG_NOTE", configuration.getSignatureNote()); //$NON-NLS-1$ + + if (configuration.getSignatureNote() != null + && !configuration.getSignatureNote().isEmpty()) { + this.state.signatureParameter.setProperty( + "SIG_NOTE", configuration.getSignatureNote()); //$NON-NLS-1$ } - - this.state.signatureParameter.setSignatureLanguage(configuration.getSignLocale().getLanguage()); - - this.state.signingState = this.state.signer.prepare(this.state.signatureParameter); - + + this.state.signatureParameter + .setSignatureLanguage(configuration.getSignLocale() + .getLanguage()); + + this.state.signingState = this.state.signer + .prepare(this.state.signatureParameter); + } catch (Exception e) { log.error("PrepareDocumentThread: ", e); //$NON-NLS-1$ this.state.threadException = e; - } - finally { + } finally { this.state.stateMachine.invokeUpdate(); } } } - + /** * SFL4J Logger instance **/ - static final Logger log = LoggerFactory.getLogger(PrepareSigningState.class); - + static final Logger log = LoggerFactory + .getLogger(PrepareSigningState.class); + SignatureParameter signatureParameter; - + private WaitingComposite waitingComposite = null; private WaitingComposite getSelectionComposite() { if (this.waitingComposite == null) { - this.waitingComposite = - this.stateMachine.getGUIProvider().createComposite(WaitingComposite.class, SWT.RESIZE, this); + this.waitingComposite = this.stateMachine.getGUIProvider() + .createComposite(WaitingComposite.class, SWT.RESIZE, this); } return this.waitingComposite; } - - at.asit.pdfover.signator.SigningState signingState = null; + + at.asit.pdfover.signator.SigningState signingState = null; Signer signer; - + Exception threadException = null; - + @Override public void run() { WaitingComposite waiting = this.getSelectionComposite(); @@ -149,22 +201,23 @@ public class PrepareSigningState extends State { Status status = this.stateMachine.getStatus(); - if(this.signatureParameter == null) { - this.signatureParameter = this.signer.newParameter(); + if (this.signatureParameter == null) { + this.signatureParameter = this.signer.newParameter(); } - if(this.signingState == null && this.threadException == null) { + if (this.signingState == null && this.threadException == null) { Thread t = new Thread(new PrepareDocumentThread(this)); t.start(); return; } - if(this.threadException != null) { - ErrorDialog error = new ErrorDialog(this.stateMachine.getGUIProvider().getMainShell(), - Messages.getString("error.PrepareDocument"), //$NON-NLS-1$ + if (this.threadException != null) { + ErrorDialog error = new ErrorDialog(this.stateMachine + .getGUIProvider().getMainShell(), + Messages.getString("error.PrepareDocument"), //$NON-NLS-1$ BUTTONS.RETRY_CANCEL); this.threadException = null; - if(error.open() == SWT.RETRY) { + if (error.open() == SWT.RETRY) { run(); } else { this.setNextState(new BKUSelectionState(this.stateMachine)); @@ -174,10 +227,10 @@ public class PrepareSigningState extends State { // We got the Request set it into status and move on to next state ... status.setSigningState(this.signingState); - - if(this.stateMachine.getStatus().getBKU() == BKUs.LOCAL) { + + if (this.stateMachine.getStatus().getBKU() == BKUs.LOCAL) { this.setNextState(new LocalBKUState(this.stateMachine)); - } else if(this.stateMachine.getStatus().getBKU() == BKUs.MOBILE) { + } else if (this.stateMachine.getStatus().getBKU() == BKUs.MOBILE) { this.setNextState(new MobileBKUState(this.stateMachine)); } else { log.error("Invalid selected BKU Value \"NONE\" in PrepareSigningState!"); //$NON-NLS-1$ @@ -185,7 +238,8 @@ public class PrepareSigningState extends State { } } - /* (non-Javadoc) + /* + * (non-Javadoc) * @see at.asit.pdfover.gui.workflow.states.State#cleanUp() */ @Override @@ -194,12 +248,14 @@ public class PrepareSigningState extends State { this.waitingComposite.dispose(); } - /* (non-Javadoc) + /* + * (non-Javadoc) * @see at.asit.pdfover.gui.workflow.states.State#setMainWindowBehavior() */ @Override public void updateMainWindowBehavior() { - MainWindowBehavior behavior = this.stateMachine.getStatus().getBehavior(); + MainWindowBehavior behavior = this.stateMachine.getStatus() + .getBehavior(); behavior.reset(); behavior.setActive(Buttons.OPEN, true); behavior.setActive(Buttons.POSITION, true); diff --git a/pdf-over-gui/src/main/resources/at/asit/pdfover/gui/messages.properties b/pdf-over-gui/src/main/resources/at/asit/pdfover/gui/messages.properties index 8d174012..c5991585 100644 --- a/pdf-over-gui/src/main/resources/at/asit/pdfover/gui/messages.properties +++ b/pdf-over-gui/src/main/resources/at/asit/pdfover/gui/messages.properties @@ -16,6 +16,19 @@ advanced_config.OutputFolder.Dialog=Select a folder advanced_config.OutputFolder.Dialog_Title=Select Output folder advanced_config.OutputFolder_Title=&Output location advanced_config.OutputFolder_ToolTip=Select the folder where the signed document will be saved automatically (clear this field to disable automatic saving, enter a single dot (".") to denote the input document directory) +advanced_config.Proxy_Title=&Proxy +advanced_config.ProxyHost=Host: +advanced_config.ProxyHost_ToolTip=To use a proxy server enter the hostname or the IP here +advanced_config.ProxyHost_Template=Hostname or IP of the proxy server +advanced_config.ProxyPort=Port: +advanced_config.ProxyPort_Template=Port of the proxy server [1-65535] +advanced_config.ProxyPort_ToolTip=To use a proxy server enter the port number here +advanced_config.ProxyUser=Username: +advanced_config.ProxyUser_Template=Username for proxy authentication +advanced_config.ProxyUser_ToolTip=To use proxy authentication enter username here +advanced_config.ProxyPass=Password: +advanced_config.ProxyPass_Template=Password for proxy authentication +advanced_config.ProxyPass_ToolTip=To use proxy authentication enter password here advanced_config.Signature_Title=Si&gnature advanced_config.SigPHTransparency=Signature placeholder transparency advanced_config.SigPHTransparencyMax=Opaque @@ -130,13 +143,6 @@ simple_config.Note_SetDefault=Restore default simple_config.Note_Title=Signature &Note simple_config.Note_Tooltip=Add an optional note to display on your Signature simple_config.PhoneNumber=Mobile number: -simple_config.ProxyHost=Host: -simple_config.ProxyHostTemplate=Hostname or IP of the proxy server -simple_config.ProxyPort=Port: -simple_config.ProxyPortTemplate=Port of the proxy server [1-65535] -simple_config.Proxy_Title=&Proxy -simple_config.ProxyHost_ToolTip=To use a proxy server enter the hostname or the IP here -simple_config.ProxyPort_ToolTip=To use a proxy server enter the port number here simple_config.SigBlockLang_Title=Signature block lan&guage: simple_config.SigBlockLang_ToolTip=Select the language to be used in the signature block displayed on the signed document tanEnter.ReferenceValue=Reference value: diff --git a/pdf-over-gui/src/main/resources/at/asit/pdfover/gui/messages_de.properties b/pdf-over-gui/src/main/resources/at/asit/pdfover/gui/messages_de.properties index e4add447..4d9eaf50 100644 --- a/pdf-over-gui/src/main/resources/at/asit/pdfover/gui/messages_de.properties +++ b/pdf-over-gui/src/main/resources/at/asit/pdfover/gui/messages_de.properties @@ -16,6 +16,19 @@ advanced_config.OutputFolder.Dialog=W advanced_config.OutputFolder.Dialog_Title=Ausgabeordner Wählen advanced_config.OutputFolder_Title=Ausgabe&ort advanced_config.OutputFolder_ToolTip=Wählen Sie einen Ordner, in dem signierte Dokumente automatisch abgelegt werden (deaktivert, wenn das Feld leer ist; ein einzelner Punkt (".") wählt das Verzeichnis des Ursprungsdokuments) +advanced_config.Proxy_Title=&Proxy +advanced_config.ProxyHost=Host: +advanced_config.ProxyHost_Template=Hostname oder IP des Proxy-Servers +advanced_config.ProxyHost_ToolTip=Um einen Proxy zu verwenden Hostname/IP hier eingeben +advanced_config.ProxyPort=Port: +advanced_config.ProxyPort_Template=Port des Proxy-Servers [1-65535] +advanced_config.ProxyPort_ToolTip=Um einen Proxy zu verwenden Portnummer hier eingeben +advanced_config.ProxyUser=Benutzer: +advanced_config.ProxyUser_Template=Benutzername für den Proxy-Server +advanced_config.ProxyUser_ToolTip=Für Proxy-Authentifizierung Benutzername hier eingeben +advanced_config.ProxyPass=Passwort: +advanced_config.ProxyPass_Template=Passwort für den Proxy-Server +advanced_config.ProxyPass_ToolTip=Für Proxy-Authentifizierung Passwort hier eingeben advanced_config.Signature_Title=Si&gnatur advanced_config.SigPHTransparency=Signaturplatzhalter-Transparenz advanced_config.SigPHTransparencyMax=Undurchsichtig @@ -128,15 +141,8 @@ simple_config.Note_SetDefault=Standard wiederherstellen simple_config.Note_Title=Signaturhi&nweis simple_config.Note_Tooltip=Ein optionaler Hinweis, der in Ihrer Signatur angezeigt wird simple_config.PhoneNumber=Handynummer: -simple_config.ProxyHost=Host: -simple_config.ProxyHostTemplate=Hostname oder IP des Proxy-Servers -simple_config.ProxyPort=Port: -simple_config.ProxyPortTemplate=Port des Proxy-Servers [1-65535] -simple_config.Proxy_Title=&Proxy simple_config.ClearEmblem=Ent&fernen simple_config.ExampleNumber_ToolTip=Um die Handynummer voreinzustellen hier eingeben -simple_config.ProxyHost_ToolTip=Um einen Proxy zu verwenden Hostname/IP hier eingeben -simple_config.ProxyPort_ToolTip=Um einen Proxy zu verwenden Portnummer hier eingeben simple_config.SigBlockLang_Title=Sp&rache des Signaturblocks: simple_config.SigBlockLang_ToolTip=Wählen Sie eine Sprache für den Signaturblock, der am signierten Dokument erscheint tanEnter.ReferenceValue=Vergleichswert: -- cgit v1.2.3