support omemo:// style urls
This commit is contained in:
		
							parent
							
								
									c37117b940
								
							
						
					
					
						commit
						71ad18beb9
					
				| @ -657,6 +657,12 @@ public class Message extends AbstractEntity { | |||||||
| 		} | 		} | ||||||
| 		try { | 		try { | ||||||
| 			URL url = new URL(body); | 			URL url = new URL(body); | ||||||
|  | 			String ref = url.getRef(); | ||||||
|  | 			final String protocol = url.getProtocol(); | ||||||
|  | 			final boolean encrypted = ref != null && ref.matches("([A-Fa-f0-9]{2}){48}"); | ||||||
|  | 			if ("omemo".equalsIgnoreCase(protocol) && encrypted) { | ||||||
|  | 				return Decision.MUST; | ||||||
|  | 			} | ||||||
| 			if (!url.getProtocol().equalsIgnoreCase("http") && !url.getProtocol().equalsIgnoreCase("https")) { | 			if (!url.getProtocol().equalsIgnoreCase("http") && !url.getProtocol().equalsIgnoreCase("https")) { | ||||||
| 				return Decision.NEVER; | 				return Decision.NEVER; | ||||||
| 			} else if (oob) { | 			} else if (oob) { | ||||||
| @ -666,8 +672,6 @@ public class Message extends AbstractEntity { | |||||||
| 			if (extension == null) { | 			if (extension == null) { | ||||||
| 				return Decision.NEVER; | 				return Decision.NEVER; | ||||||
| 			} | 			} | ||||||
| 			String ref = url.getRef(); |  | ||||||
| 			boolean encrypted = ref != null && ref.matches("([A-Fa-f0-9]{2}){48}"); |  | ||||||
| 
 | 
 | ||||||
| 			if (encrypted) { | 			if (encrypted) { | ||||||
| 				return Decision.MUST; | 				return Decision.MUST; | ||||||
|  | |||||||
| @ -1,7 +1,14 @@ | |||||||
| package eu.siacs.conversations.http; | package eu.siacs.conversations.http; | ||||||
| 
 | 
 | ||||||
| /** | import java.io.IOException; | ||||||
|  * Created by daniel on 2/7/17. | import java.net.URL; | ||||||
|  */ | import java.net.URLConnection; | ||||||
| public class OmemoURLStreamHandler { | import java.net.URLStreamHandler; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | public class OmemoURLStreamHandler extends URLStreamHandler { | ||||||
|  |     @Override | ||||||
|  |     protected URLConnection openConnection(URL url) throws IOException { | ||||||
|  |         return new URL("https"+url.toString().substring(5)).openConnection(); | ||||||
|  |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,7 +1,15 @@ | |||||||
| package eu.siacs.conversations.http; | package eu.siacs.conversations.http; | ||||||
| 
 | 
 | ||||||
| /** | import java.net.URLStreamHandler; | ||||||
|  * Created by daniel on 2/7/17. | import java.net.URLStreamHandlerFactory; | ||||||
|  */ | 
 | ||||||
| public class OmemoURLStreamHandlerFactory { | public class OmemoURLStreamHandlerFactory implements URLStreamHandlerFactory { | ||||||
|  |     @Override | ||||||
|  |     public URLStreamHandler createURLStreamHandler(String protocol) { | ||||||
|  |         if ("omemo".equals(protocol)) { | ||||||
|  |             return new OmemoURLStreamHandler(); | ||||||
|  |         } else { | ||||||
|  |             return null; | ||||||
|  |         } | ||||||
|  |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -48,6 +48,7 @@ import org.openintents.openpgp.util.OpenPgpServiceConnection; | |||||||
| import java.io.FileDescriptor; | import java.io.FileDescriptor; | ||||||
| import java.io.FileNotFoundException; | import java.io.FileNotFoundException; | ||||||
| import java.math.BigInteger; | import java.math.BigInteger; | ||||||
|  | import java.net.URL; | ||||||
| import java.security.SecureRandom; | import java.security.SecureRandom; | ||||||
| import java.security.cert.CertificateException; | import java.security.cert.CertificateException; | ||||||
| import java.security.cert.X509Certificate; | import java.security.cert.X509Certificate; | ||||||
| @ -95,6 +96,7 @@ import eu.siacs.conversations.generator.IqGenerator; | |||||||
| import eu.siacs.conversations.generator.MessageGenerator; | import eu.siacs.conversations.generator.MessageGenerator; | ||||||
| import eu.siacs.conversations.generator.PresenceGenerator; | import eu.siacs.conversations.generator.PresenceGenerator; | ||||||
| import eu.siacs.conversations.http.HttpConnectionManager; | import eu.siacs.conversations.http.HttpConnectionManager; | ||||||
|  | import eu.siacs.conversations.http.OmemoURLStreamHandlerFactory; | ||||||
| import eu.siacs.conversations.parser.AbstractParser; | import eu.siacs.conversations.parser.AbstractParser; | ||||||
| import eu.siacs.conversations.parser.IqParser; | import eu.siacs.conversations.parser.IqParser; | ||||||
| import eu.siacs.conversations.parser.MessageParser; | import eu.siacs.conversations.parser.MessageParser; | ||||||
| @ -142,6 +144,10 @@ import me.leolin.shortcutbadger.ShortcutBadger; | |||||||
| 
 | 
 | ||||||
| public class XmppConnectionService extends Service { | public class XmppConnectionService extends Service { | ||||||
| 
 | 
 | ||||||
|  | 	static { | ||||||
|  | 		URL.setURLStreamHandlerFactory(new OmemoURLStreamHandlerFactory()); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| 	public static final String ACTION_REPLY_TO_CONVERSATION = "reply_to_conversations"; | 	public static final String ACTION_REPLY_TO_CONVERSATION = "reply_to_conversations"; | ||||||
| 	public static final String ACTION_CLEAR_NOTIFICATION = "clear_notification"; | 	public static final String ACTION_CLEAR_NOTIFICATION = "clear_notification"; | ||||||
| 	public static final String ACTION_DISABLE_FOREGROUND = "disable_foreground"; | 	public static final String ACTION_DISABLE_FOREGROUND = "disable_foreground"; | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Daniel Gultsch
						Daniel Gultsch