[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