2006/unicorn/src/org/w3c/unicorn/input URIInputParameter.java,1.15,1.16

Update of /sources/public/2006/unicorn/src/org/w3c/unicorn/input
In directory hutz:/tmp/cvs-serv6203/src/org/w3c/unicorn/input

Modified Files:
	URIInputParameter.java 
Log Message:
deactivates SSL security checks if a resource has an invalid SSL certificate and adds a warning to the user

Index: URIInputParameter.java
===================================================================
RCS file: /sources/public/2006/unicorn/src/org/w3c/unicorn/input/URIInputParameter.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- URIInputParameter.java	9 Oct 2009 14:59:38 -0000	1.15
+++ URIInputParameter.java	21 Mar 2010 22:52:50 -0000	1.16
@@ -7,14 +7,21 @@
 import java.net.SocketTimeoutException;
 import java.net.URL;
 import java.net.UnknownHostException;
+import java.security.KeyManagementException;
+import java.security.NoSuchAlgorithmException;
+import java.util.ArrayList;
 import java.util.regex.Pattern;
 
 import javax.activation.MimeType;
 import javax.activation.MimeTypeParseException;
+import javax.net.ssl.HttpsURLConnection;
+import javax.net.ssl.SSLContext;
 import javax.net.ssl.SSLException;
+import javax.net.ssl.TrustManager;
 
 import org.w3c.unicorn.contract.EnumInputMethod;
 import org.w3c.unicorn.exceptions.UnicornException;
+import org.w3c.unicorn.request.TrustAllManager;
 import org.w3c.unicorn.util.Message;
 import org.w3c.unicorn.util.Property;
 
@@ -24,6 +31,22 @@
 	
 	private int connectTimeOut;
 	
+	private static SSLContext sc;
+	
+	static {
+		try {
+			sc = SSLContext.getInstance("SSL");
+			sc.init(null, new TrustManager[]{new TrustAllManager()}, new java.security.SecureRandom());
+		} catch (NoSuchAlgorithmException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		} catch (KeyManagementException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+		
+	}
+	
 	public URIInputParameter(String uri) {
 		this.uri = uri;
 		if (Property.get("DOCUMENT_CONNECT_TIMEOUT") != null)
@@ -33,7 +56,7 @@
 	}
 	
 	@Override
-	public void check() throws UnicornException {
+	public void check(ArrayList<Message> messages) throws UnicornException {
 		URL docUrl = null;
 		try {
 			if (uri == null || uri.equals(""))
@@ -52,9 +75,18 @@
 			docUrl = new URL(uri);
 			if (!docUrl.getProtocol().equals("http") && !docUrl.getProtocol().equals("https"))
 				throw new UnicornException(Message.ERROR, "$message_unsupported_protocol", null, docUrl.getProtocol());
-			HttpURLConnection con = (HttpURLConnection) docUrl.openConnection();
+			
+			HttpsURLConnection con = (HttpsURLConnection) docUrl.openConnection();
 			con.setConnectTimeout(connectTimeOut);
-			con.connect();
+			try {
+				con.connect();
+			} catch (SSLException e) {
+				con.setSSLSocketFactory(sc.getSocketFactory());
+				con.connect();
+				Message message = new Message(Message.WARNING, "$message_ssl_warning", e.getClass() + "\n" + e.getMessage());
+				message.setEvaluateContent(false);
+				messages.add(message);
+			}
 			int responseCode = con.getResponseCode();
 			switch (responseCode) {
 			case HttpURLConnection.HTTP_UNAUTHORIZED:
@@ -72,8 +104,6 @@
 			throw new UnicornException(Message.ERROR, "$message_invalid_mime_type");
 		} catch (UnknownHostException e) { 
 			throw new UnicornException(Message.ERROR, "$message_unknown_host" , null, docUrl.getHost());
-		} catch (SSLException e) {
-			throw new UnicornException(Message.ERROR, "$message_ssl_exception");
 		} catch (ConnectException e) {
 			throw new UnicornException(Message.ERROR, "$message_connect_exception");
 		} catch (SocketTimeoutException e) {

Received on Sunday, 21 March 2010 22:52:54 UTC