diff options
9 files changed, 162 insertions, 151 deletions
| diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/Main.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/Main.java index 43762b13..809c1d7d 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/Main.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/Main.java @@ -16,6 +16,8 @@  package at.asit.pdfover.gui;  //Imports +import java.io.File; +  import org.slf4j.Logger;  import org.slf4j.LoggerFactory; @@ -36,6 +38,14 @@ public class Main {  	 */  	public static void main(String[] args) {  		StateMachineImpl stateMachine = new StateMachineImpl(args); +		 +		File configDir = new File(System.getProperty("user.home")+"/.pdfover"); +		 +		if(!configDir.exists()) { +			configDir.mkdir(); +			 +		} +		  		log.debug("Starting stateMachine ..."); //$NON-NLS-1$  		stateMachine.start(); 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 2c25bd61..4b342cad 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 @@ -333,7 +333,10 @@ public class AdvancedConfigurationComposite extends BaseConfigurationComposite {  		// load advanced settings  		this.performBKUSelectionChanged(this.configurationContainer.getBKUSelection()); -		this.performOutputFolderChanged(this.configurationContainer.getOutputFolder()); +		String outputFolder = this.configurationContainer.getOutputFolder(); +		if(outputFolder != null) { +			this.performOutputFolderChanged(outputFolder); +		}  		this.performPositionSelection(this.configurationContainer.getAutomaticPosition());  	} diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/messages.properties b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/messages.properties deleted file mode 100644 index 244cfb3d..00000000 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/messages.properties +++ /dev/null @@ -1,113 +0,0 @@ -TrustedSocketFactory.FailedToCreateSecureConnection=Failed to create secure network connection - -main.title=PDF-Over -main.configuration=Configuration -main.position=Positioning -main.signature=Signing -main.done=Finish - -common.browse=browse -common.Cancel=Cancel -common.Ok=OK -common.Save=Save -common.PDFExtension_Description=PDF documents -common.JPGExtension_Description=JPG Dateien -common.GIFExtension_Description=Gif Dateien -common.ALLExtension_Description=All files -common.file=File:  -common.file_not_exists= does not exist! -common.open=Open - -config.Simple=Simple -config.Advanced=Advanced - -advanced_config.AutoPosition_Title=Positioning -advanced_config.AutoPosition=Automatic positioning -advanced_config.BKUSelection_Title=BKU Selection -advanced_config.OutputFolder_Title=Output location -advanced_config.OutputFolder=Default output folder: -advanced_config.OutputFolder.Dialog_Title=Select Output folder -advanced_config.OutputFolder.Dialog=Select a folder - -simple_config.Emblem_Title=Emblem -simple_config.EmblemEmpty=No Image. Drag and Drop a Image. Or use the browse button to select an emblem. -simple_config.UseEmblem=Use emblem -simple_config.MobileBKU_Title=Mobile signature -simple_config.PhoneNumber=Mobile number: -simple_config.ExampleNumber=+43676123456789 -simple_config.Proxy_Title=Proxy -simple_config.ProxyHost=Host: -simple_config.ProxyHostTemplate=Hostname or IP of proxy server -simple_config.ProxyPort=Port: -simple_config.ProxyPortTemplate=port proxy server [1-65535] - - - -dataSourceSelection.DropLabel=To sign a document\ndrag and drop it here\nor use the button below - -bku_selection.card=CARD -bku_selection.mobile=MOBILE - -mobileBKU.number=Number: -mobileBKU.password=Password: - -tanEnter.tries= tries left!" -tanEnter.ReferenceValue=reference value -tanEnter.TAN=TAN: - -BKU.LOCAL=Local BKU -BKU.MOBILE=Mobile BKU -BKU.NONE=no default - -error.SaveOutputFolder=Failed to save signed document to configured output folder. -error.Signatur=Signature error -error.PrepareDocument=Failed to prepare document for signature. -error.Initialization=Initialization failed. Please check your configuration. -error.Unexpected=Unexpected Error -error.LocalBKU=Please check if a local BKU is running -error.Details=Details -error.Retry=Retry -error.InvalidBKU=Invalid BKU selection. Please check. -error.InvalidSettings=Invalid settings are still present. Please check your input. -error.FailedToSaveSettings=Failed to save configuration file! -error.InvalidPhoneNumber=Given phone number is invalid! Example: +43664123456789 -error.EnteredReferenceValue=You entered the reference value! -error.TanTooLong=Entered TAN too long -error.FailedToGetSignedDocument=Failed to get signed document. -error.FailedToLoadEmblem=Failed to load the emblem - -exception.InvalidEmblemFile= is an invalid emblem file! -exception.InvalidPort= is invalid has to be between 1 and  -exception.PasswordTooLong=Given password is too long! -exception.PasswordTooShort=Given password is too short! - -argument.help.bku=Select the BKU to use values are: LOCAL, MOBILE (example: -b <option> -argument.invalid.bku=BKU Argument invalid! Use:  - -argument.help.config=Defines which configuration file to use. Example: -c <config file> -argument.invalid.config=Configuration File Argument invalid! Use:  - -argument.help.emblem=Sets the emblem file to use for the signature. Example: -e <emblem file> -argument.invalid.emblem=Emblem argument invalid! Use:  - -argument.help.help=shows this help message -argument.info.help=The following options are available: - -argument.help.input=Sets the document to sign. Example: -i <input document> -argument.invalid.input=Document to sign argument invalid! Use:  - -argument.help.output=Sets the output folder to use. Example: -o <folder> -argument.invalid.output=Output folder argument invalid! Use:  -argument.error.output= is not a directory - -argument.help.password=Sets the password to use for mobile bku. Example: -p <password> -argument.invalid.password=Mobile BKU password invalid! Use:  - -argument.help.number=Sets the telephone number to use for mobile bku. Example: -n <number> -argument.invalid.number=Phone Number Argument invalid! Use:  - -argument.help.proxyhost=Sets the proxy host to use. Example: -proxy <hostname/IP> -argument.invalid.proxyhost=Proxy host argument invalid! Use:  - -argument.help.proxyport=Sets the proxy port to use. Example: -proxyport <port> -argument.invalid.proxyport=Proxy port argument invalid! Use:  
\ No newline at end of file diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/ConfigProviderImpl.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/ConfigProviderImpl.java index ea4088c6..a95423e3 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/ConfigProviderImpl.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/ConfigProviderImpl.java @@ -309,7 +309,11 @@ public class ConfigProviderImpl implements ConfigProvider, ConfigManipulator {  	 */  	@Override  	public void setDefaultOutputFolder(String outputFolder) { -		this.outputFolder = outputFolder; +		if (outputFolder == null || outputFolder.trim().equals("")) { //$NON-NLS-1$ +			this.outputFolder = STRING_EMPTY; +		} else { +			this.outputFolder = outputFolder; +		}  	}  	/* diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/MobileBKUState.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/MobileBKUState.java index f04805a7..18f913ef 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/MobileBKUState.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/MobileBKUState.java @@ -150,11 +150,12 @@ public class MobileBKUState extends State {  		MobileBKUStatus mobileStatus = this.getStatus();  		if (this.threadException != null) { -			ErrorDialog error = new ErrorDialog(this.stateMachine.getGUIProvider().getMainShell(), +			ErrorDialog error = new ErrorDialog( +					this.stateMachine.getGUIProvider().getMainShell(),  					SWT.NONE,  					Messages.getString("error.Unexpected"), this.threadException, false); //$NON-NLS-1$ -			//error.setException(this.threadException); -			//this.setNextState(error); +			// error.setException(this.threadException); +			// this.setNextState(error);  			error.open();  			this.stateMachine.exit();  			return; @@ -165,7 +166,8 @@ public class MobileBKUState extends State {  			this.stateMachine.getGUIProvider().display(  					this.getWaitingComposite());  			Thread postSLRequestThread = new Thread(new PostSLRequestThread( -					this, this.stateMachine.getConfigProvider().getMobileBKUURL())); +					this, this.stateMachine.getConfigProvider() +							.getMobileBKUURL()));  			postSLRequestThread.start();  			break;  		case POST_NUMBER: @@ -208,16 +210,26 @@ public class MobileBKUState extends State {  				} else {  					// We need number and password => show UI! + +					if (mobileStatus.getErrorMessage() != null +							&& !mobileStatus.getErrorMessage().equals("")) { //$NON-NLS-1$ +						// set possible error message +						ui.setErrorMessage(mobileStatus.getErrorMessage()); +						mobileStatus.setErrorMessage(null); +					} -					// set possible error message -					ui.setErrorMessage(mobileStatus.getErrorMessage()); -					 -					// set possible phone number -					ui.setMobileNumber(mobileStatus.getPhoneNumber()); -					 -					// set possible password -					ui.setMobilePassword(mobileStatus.getMobilePassword()); -					 + +					if (ui.getMobileNumber() == null +							|| ui.getMobileNumber().equals("")) { //$NON-NLS-1$ +						// set possible phone number +						ui.setMobileNumber(mobileStatus.getPhoneNumber()); +					} + +					if (ui.getMobilePassword() == null +							|| ui.getMobilePassword().equals("")) { //$NON-NLS-1$ +						// set possible password +						ui.setMobilePassword(mobileStatus.getMobilePassword()); +					}  					this.stateMachine.getGUIProvider().display(ui);  				}  			} @@ -231,23 +243,23 @@ public class MobileBKUState extends State {  			if (tan.isUserAck()) {  				// user hit ok!  				tan.setUserAck(false); -				 +  				mobileStatus.setTan(tan.getTan()); -				 +  				// post to BKU!  				Thread postTanThread = new Thread(new PostTanThread(this));  				postTanThread.start();  			} else {  				tan.setVergleichswert(mobileStatus.getVergleichswert()); -				 -				if(mobileStatus.getTanTries() < MobileBKUStatus.MOBILE_MAX_TAN_TRIES  + +				if (mobileStatus.getTanTries() < MobileBKUStatus.MOBILE_MAX_TAN_TRIES  						&& mobileStatus.getTanTries() > 0) {  					// show warning message x tries left! -					 +  					tan.setTries(mobileStatus.getTanTries()); -					 -				}  + +				}  				this.stateMachine.getGUIProvider().display(tan);  			} @@ -265,11 +277,11 @@ public class MobileBKUState extends State {  	 */  	@Override  	public void cleanUp() { -		if(this.mobileBKUEnterNumberComposite != null) +		if (this.mobileBKUEnterNumberComposite != null)  			this.mobileBKUEnterNumberComposite.dispose(); -		if(this.mobileBKUEnterTANComposite != null) +		if (this.mobileBKUEnterTANComposite != null)  			this.mobileBKUEnterTANComposite.dispose(); -		if(this.waitingComposite != null) +		if (this.waitingComposite != null)  			this.waitingComposite.dispose();  	} diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareConfigurationState.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareConfigurationState.java index 6957f85c..237dffa9 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareConfigurationState.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareConfigurationState.java @@ -16,16 +16,21 @@  package at.asit.pdfover.gui.workflow.states;  //Imports +import java.io.BufferedInputStream; +import java.io.File;  import java.io.FileInputStream;  import java.io.FileNotFoundException; +import java.io.FileOutputStream;  import java.io.IOException;  import java.io.InputStream; +import java.net.URL;  import org.eclipse.swt.SWT;  import org.slf4j.Logger;  import org.slf4j.LoggerFactory;  import at.asit.pdfover.gui.Messages; +import at.asit.pdfover.gui.Unzipper;  import at.asit.pdfover.gui.cliarguments.ArgumentHandler;  import at.asit.pdfover.gui.cliarguments.BKUArgument;  import at.asit.pdfover.gui.cliarguments.ConfigFileArgument; @@ -50,7 +55,11 @@ import at.asit.pdfover.signator.Signator;   */  public class PrepareConfigurationState extends State { -	 +	/** +	 * PDFOver config directory +	 */ +	public static String CONFIG_DIRECTORY = System.getProperty("user.home") + "/.pdfover"; //$NON-NLS-1$ //$NON-NLS-2$ +  	/**  	 * @param stateMachine  	 */ @@ -68,8 +77,7 @@ public class PrepareConfigurationState extends State {  		this.handler.addCLIArgument(new InputDocumentArgument());  		// adding config file argument to this handler so it appears in help  		this.handler.addCLIArgument(new ConfigFileArgument()); -		 -		 +  		this.configFilehandler = new ArgumentHandler(this.stateMachine);  		this.configFilehandler.addCLIArgument(new ConfigFileArgument());  	} @@ -89,10 +97,11 @@ public class PrepareConfigurationState extends State {  		try {  			try { -				this.stateMachine.getConfigProvider().loadConfiguration(new FileInputStream(filename)); -				 +				this.stateMachine.getConfigProvider().loadConfiguration( +						new FileInputStream(CONFIG_DIRECTORY + "/" + filename)); //$NON-NLS-1$ +  				log.info("Loaded config from file : " + filename); //$NON-NLS-1$ -				 +  			} catch (FileNotFoundException ex) {  				if (filename.equals(ConfigManipulator.DEFAULT_CONFIG_FILE)) {  					// we only check for resource config file if it is the @@ -100,8 +109,9 @@ public class PrepareConfigurationState extends State {  					try {  						InputStream is = this.getClass().getResourceAsStream(  								"/" + filename); //$NON-NLS-1$ -						this.stateMachine.getConfigProvider().loadConfiguration(is); -						 +						this.stateMachine.getConfigProvider() +								.loadConfiguration(is); +  						log.info("Loaded config from resource : " + filename); //$NON-NLS-1$  					} catch (Exception eex) {  						throw ex; @@ -110,7 +120,7 @@ public class PrepareConfigurationState extends State {  					throw ex;  				}  			} -			 +  		} catch (IOException ex) {  			throw new InitializationException(  					"Failed to read configuration from config file", ex); //$NON-NLS-1$ @@ -130,6 +140,85 @@ public class PrepareConfigurationState extends State {  	public void run() {  		// Read config file  		try { + +			File configDir = new File(CONFIG_DIRECTORY); +			File configFile = new File(CONFIG_DIRECTORY + "/" //$NON-NLS-1$ +					+ ConfigManipulator.DEFAULT_CONFIG_FILE); +			if (!configDir.exists() || !configFile.exists()) { +				boolean allOK = false; + +				log.info("Creating configuration directory"); //$NON-NLS-1$ + +				try { +					if (!configDir.exists()) { +						configDir.mkdir(); +					} +					// Copy PDFOver config to config Dir + +					// 1Kb buffer +					byte[] buffer = new byte[1024]; +					int byteCount = 0; + +					InputStream inputStream = null; +					FileOutputStream pdfOverConfig = null; +					try { +						inputStream = this.getClass().getResourceAsStream( +								"/" + ConfigManipulator.DEFAULT_CONFIG_FILE); //$NON-NLS-1$ +						pdfOverConfig = new FileOutputStream(CONFIG_DIRECTORY +								+ "/" //$NON-NLS-1$ +								+ ConfigManipulator.DEFAULT_CONFIG_FILE); + +						while ((byteCount = inputStream.read(buffer)) >= 0) { +							pdfOverConfig.write(buffer, 0, byteCount); +						} +					} catch (Exception e) { +						log.error( +								"Failed to write PDF Over config file to config directory", e); //$NON-NLS-1$ +						throw new InitializationException( +								"Failed to write PDF Over config file to config directory", +								e); +					} finally { +						if (pdfOverConfig != null) { +							try { +								pdfOverConfig.close(); +							} catch (IOException e) { +								log.warn( +										"Failed to close File stream for PDFOver config", e); //$NON-NLS-1$ +							} +						} + +						if (inputStream != null) { +							try { +								inputStream.close(); +							} catch (IOException e) { +								log.warn( +										"Failed to close Resource stream for PDFOver config", e); //$NON-NLS-1$ +							} +						} +					} + +					InputStream is = this.getClass().getResourceAsStream( +							"/cfg/PDFASConfig.zip"); //$NON-NLS-1$ + +					try { +						Unzipper.unzip(is, configDir.getAbsolutePath()); +					} catch (IOException e) { +						log.error( +								"Failed to create local configuration directory!", e); //$NON-NLS-1$ +						throw new InitializationException( +								"Failed to create local configuration directory!", +								e); +					} +					allOK = true; +				} finally { +					if (!allOK) { +						configDir.delete(); +					} +				} +			} else { +				log.debug("Configuration directory exists!"); +			} +  			// Read cli arguments with for config file!  			this.initializeFromArguments(this.stateMachine.getCmdArgs(),  					this.configFilehandler); @@ -158,11 +247,12 @@ public class PrepareConfigurationState extends State {  		} catch (InitializationException e) {  			log.error("Failed to initialize: ", e); //$NON-NLS-1$ -			ErrorDialog error = new ErrorDialog(this.stateMachine.getGUIProvider().getMainShell(), -					SWT.NONE, Messages.getString("error.Initialization"),  //$NON-NLS-1$ +			ErrorDialog error = new ErrorDialog(this.stateMachine +					.getGUIProvider().getMainShell(), SWT.NONE, +					Messages.getString("error.Initialization"), //$NON-NLS-1$  					e, false); -			//error.setException(e); -			//this.setNextState(error); +			// error.setException(e); +			// this.setNextState(error);  			error.open();  			this.stateMachine.exit();  		} diff --git a/pdf-over-signator/src/main/java/at/asit/pdfover/signator/FileNameEmlbem.java b/pdf-over-signator/src/main/java/at/asit/pdfover/signator/FileNameEmlbem.java index ac2f9e49..53e8faeb 100644 --- a/pdf-over-signator/src/main/java/at/asit/pdfover/signator/FileNameEmlbem.java +++ b/pdf-over-signator/src/main/java/at/asit/pdfover/signator/FileNameEmlbem.java @@ -26,6 +26,7 @@ public class FileNameEmlbem implements Emblem {  	/**  	 * SLF4J Logger instance  	 **/ +	@SuppressWarnings("unused")  	private static final Logger log = LoggerFactory  			.getLogger(FileNameEmlbem.class); diff --git a/pdf-over-signator/src/main/java/at/asit/pdfover/signator/SignatureParameter.java b/pdf-over-signator/src/main/java/at/asit/pdfover/signator/SignatureParameter.java index a89f9784..e16656dd 100644 --- a/pdf-over-signator/src/main/java/at/asit/pdfover/signator/SignatureParameter.java +++ b/pdf-over-signator/src/main/java/at/asit/pdfover/signator/SignatureParameter.java @@ -48,6 +48,9 @@ public abstract class SignatureParameter {  	 */  	protected Emblem emblem; +	/** +	 * The signature device +	 */  	protected BKUs signatureDevice;  	/** diff --git a/pdf-over-signer/pdf-over-sigpdfas/src/main/java/at/asit/pdfover/signer/pdfas/PDFASHelper.java b/pdf-over-signer/pdf-over-sigpdfas/src/main/java/at/asit/pdfover/signer/pdfas/PDFASHelper.java index cac338ba..ee3cc7a9 100644 --- a/pdf-over-signer/pdf-over-sigpdfas/src/main/java/at/asit/pdfover/signer/pdfas/PDFASHelper.java +++ b/pdf-over-signer/pdf-over-sigpdfas/src/main/java/at/asit/pdfover/signer/pdfas/PDFASHelper.java @@ -46,6 +46,7 @@ public class PDFASHelper {  	private static PdfAs createPdfAs() throws PdfAsException {  		File directory = new File (".");  		System.setProperty("log4j.configuration", directory.getAbsolutePath()+"/log4j.properties"); +		System.setProperty("pdf-as.work-dir", System.getProperty("user.home")+"/.pdfover");  		return new at.gv.egiz.pdfas.impl.api.PdfAsObject();  	} | 
