[Schmitzm-commits] r2339 - in trunk/schmitzm-core/src/main: java/de/schmitzm/io resources/de/schmitzm/io/resource/locales

scm-commit at wald.intevation.org scm-commit at wald.intevation.org
Sun Jun 9 22:08:08 CEST 2013


Author: mojays
Date: 2013-06-09 22:08:08 +0200 (Sun, 09 Jun 2013)
New Revision: 2339

Modified:
   trunk/schmitzm-core/src/main/java/de/schmitzm/io/IOUtil.java
   trunk/schmitzm-core/src/main/resources/de/schmitzm/io/resource/locales/IOResourceBundle_de.properties
Log:
- IOUtil.downloadUrlToFile(.): ignore certificates on SSLHandshakeException when downloading from https URL
- IOResourceBundle_de.properties: broken umlauts restored

Modified: trunk/schmitzm-core/src/main/java/de/schmitzm/io/IOUtil.java
===================================================================
--- trunk/schmitzm-core/src/main/java/de/schmitzm/io/IOUtil.java	2013-06-09 19:20:27 UTC (rev 2338)
+++ trunk/schmitzm-core/src/main/java/de/schmitzm/io/IOUtil.java	2013-06-09 20:08:08 UTC (rev 2339)
@@ -63,6 +63,7 @@
 import java.nio.charset.Charset;
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
+import java.security.cert.X509Certificate;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -77,6 +78,13 @@
 import java.util.zip.ZipFile;
 import java.util.zip.ZipOutputStream;
 
+import javax.net.ssl.HttpsURLConnection;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLHandshakeException;
+import javax.net.ssl.SSLSocketFactory;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.X509TrustManager;
+
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang.StringUtils;
@@ -130,7 +138,26 @@
 	 */
 	private static ConnectionSettings CONNECTION_SETTINGS = new ConnectionSettings();
 
+	
     /**
+     * Trust manager that does not validate certificate chains.<br>
+     * @see http://code.google.com/p/misc-utils/wiki/JavaHttpsUrl
+     */
+    public static final TrustManager[] TRUST_ALL_CERTS_TRUSTMANAGER = new TrustManager[] { new X509TrustManager() {
+        @Override
+        public void checkClientTrusted( final X509Certificate[] chain, final String authType ) {
+        }
+        @Override
+        public void checkServerTrusted( final X509Certificate[] chain, final String authType ) {
+        }
+        @Override
+        public X509Certificate[] getAcceptedIssuers() {
+            return null;
+        }
+    } };
+	
+	
+    /**
 	 * Liefert den Index des Dateinames, an der die Dateinamen-Erweiterung
 	 * (inkl. Punkt) beginnt.
 	 * 
@@ -813,7 +840,29 @@
 //          }
           URLConnection connection = openConnection(url, user, password, proxy, connTimeout, readTimeout);
           LOGGER.debug("Download: "+url+" to "+file);
-          InputStream input = connection.getInputStream();
+          InputStream input = null;
+          try {
+            input = connection.getInputStream();
+          } catch (SSLHandshakeException err) {
+            if ( !(connection instanceof HttpsURLConnection) )
+              throw err;
+            try {
+              // Install the all-trusting trust manager
+              final SSLContext sslContext = SSLContext.getInstance( "SSL" );
+              sslContext.init( null, TRUST_ALL_CERTS_TRUSTMANAGER, new java.security.SecureRandom() );
+              // Create an ssl socket factory with our all-trusting manager
+              final SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
+              // Reopen the connection and set new SSL socket factory before
+              // opening the InputStream
+              connection = openConnection(url, user, password, proxy, connTimeout, readTimeout);
+              ((HttpsURLConnection)connection).setSSLSocketFactory(sslSocketFactory);
+              input = connection.getInputStream();
+              LOGGER.warn("SSL connecion established ignoring any certificate!");
+            } catch (Exception e) {
+              throw new IOException(e);
+            }                        
+          }
+          
           copyInputStreamToFile(input, file);
           
 //          OutputStream output = null;

Modified: trunk/schmitzm-core/src/main/resources/de/schmitzm/io/resource/locales/IOResourceBundle_de.properties
===================================================================
--- trunk/schmitzm-core/src/main/resources/de/schmitzm/io/resource/locales/IOResourceBundle_de.properties	2013-06-09 19:20:27 UTC (rev 2338)
+++ trunk/schmitzm-core/src/main/resources/de/schmitzm/io/resource/locales/IOResourceBundle_de.properties	2013-06-09 20:08:08 UTC (rev 2339)
@@ -40,15 +40,15 @@
 IOUtil.downloadUrlToFile.err.unknown.host=Der Download-Server ist nicht erreichbar: ${0}
 
 ReleaseUpdater.err.latest.release=Neuste Programm-Version kann (auf dem Server) nicht ermittelt werden. Update-Check kann nicht vorgenommen werden!
-ReleaseUpdater.err.no.release.local=F\ufffdr das laufende Programm ist keine Versionsnummer hinterlegt. Update-Check kann nicht vorgenommen werden!
+ReleaseUpdater.err.no.release.local=F\u00fcr das laufende Programm ist keine Versionsnummer hinterlegt. Update-Check kann nicht vorgenommen werden!
 ReleaseUpdater.err.no.release.remote=Neuste Programm-Version kann (auf dem Server) nicht ermittelt werden. Update-Check kann nicht vorgenommen werden!
 
 ApplicationUpdater.appl.update.title=Programm-Update
 ApplicationUpdater.err.title=Fehler beim Programm-Update
-ApplicationUpdater.err.update.not.available=Das Programm wurde nicht lokal gestartet (JAR oder EXE), sondern \ufffdber WebStart oder Classpath.\nEin automatisches Update kann nicht vorgenommen werden!
-ApplicationUpdater.err.download.tempfile=Die tempor\ufffdre Datei f\ufffdr den Download kann nicht angelegt werden: ${0}\nUnter Umst\ufffdnden besteht kein Schreibrecht auf dem Programmverzeichnis ${1} 
+ApplicationUpdater.err.update.not.available=Das Programm wurde nicht lokal gestartet (JAR oder EXE), sondern \u00fcber WebStart oder Classpath.\nEin automatisches Update kann nicht vorgenommen werden!
+ApplicationUpdater.err.download.tempfile=Die tempor\u00e4re Datei f\u00fcr den Download kann nicht angelegt werden: ${0}\nUnter Umst\u00e4nden besteht kein Schreibrecht auf dem Programmverzeichnis ${1} 
 ApplicationUpdater.err.updater.not.exist=Das erforderliche Hilfs-Programm ${0} kann auf dem Server nicht gefunden werden!
 ApplicationUpdater.restart.request.mess=Das Update wurde erfolgreich herunter geladen. Die Anwendung muss JETZT geschlossen werden, um das Update abzuschliessen.\nDas Programm sollte in wenigen Sekunden automatisch neu starten...
 ApplicationUpdater.restart.request.title=Programm-Update abschliessen
-ApplicationUpdater.restart.canceled.mess=Das Update wurde nicht abgeschlossen. Es muss ggf. nochmals komplett durchgef\ufffdhrt werden!
+ApplicationUpdater.restart.canceled.mess=Das Update wurde nicht abgeschlossen. Es muss ggf. nochmals komplett durchgef\u00fchrt werden!
 ApplicationUpdater.restart.canceled.title=Programm-Update abgebrochen



More information about the Schmitzm-commits mailing list