use base64 encoding for file names uploaded with http
This commit is contained in:
		
							parent
							
								
									bbceee7f61
								
							
						
					
					
						commit
						c9e6d05fa0
					
				| @ -10,12 +10,15 @@ import org.whispersystems.libaxolotl.ecc.ECPublicKey; | |||||||
| import org.whispersystems.libaxolotl.state.PreKeyRecord; | import org.whispersystems.libaxolotl.state.PreKeyRecord; | ||||||
| import org.whispersystems.libaxolotl.state.SignedPreKeyRecord; | import org.whispersystems.libaxolotl.state.SignedPreKeyRecord; | ||||||
| 
 | 
 | ||||||
|  | import java.math.BigInteger; | ||||||
|  | import java.nio.ByteBuffer; | ||||||
| import java.security.cert.CertificateEncodingException; | import java.security.cert.CertificateEncodingException; | ||||||
| import java.security.cert.X509Certificate; | import java.security.cert.X509Certificate; | ||||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| import java.util.Set; | import java.util.Set; | ||||||
| import java.util.TimeZone; | import java.util.TimeZone; | ||||||
|  | import java.util.UUID; | ||||||
| 
 | 
 | ||||||
| import eu.siacs.conversations.Config; | import eu.siacs.conversations.Config; | ||||||
| import eu.siacs.conversations.R; | import eu.siacs.conversations.R; | ||||||
| @ -315,7 +318,7 @@ public class IqGenerator extends AbstractGenerator { | |||||||
| 		IqPacket packet = new IqPacket(IqPacket.TYPE.GET); | 		IqPacket packet = new IqPacket(IqPacket.TYPE.GET); | ||||||
| 		packet.setTo(host); | 		packet.setTo(host); | ||||||
| 		Element request = packet.addChild("request", Xmlns.HTTP_UPLOAD); | 		Element request = packet.addChild("request", Xmlns.HTTP_UPLOAD); | ||||||
| 		request.addChild("filename").setContent(file.getName()); | 		request.addChild("filename").setContent(convertFilename(file.getName())); | ||||||
| 		request.addChild("size").setContent(String.valueOf(file.getExpectedSize())); | 		request.addChild("size").setContent(String.valueOf(file.getExpectedSize())); | ||||||
| 		if (mime != null) { | 		if (mime != null) { | ||||||
| 			request.addChild("content-type").setContent(mime); | 			request.addChild("content-type").setContent(mime); | ||||||
| @ -323,6 +326,23 @@ public class IqGenerator extends AbstractGenerator { | |||||||
| 		return packet; | 		return packet; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | 	private static String convertFilename(String name) { | ||||||
|  | 		int pos = name.indexOf('.'); | ||||||
|  | 		if (pos != -1) { | ||||||
|  | 			try { | ||||||
|  | 				UUID uuid = UUID.fromString(name.substring(0, pos)); | ||||||
|  | 				ByteBuffer bb = ByteBuffer.wrap(new byte[16]); | ||||||
|  | 				bb.putLong(uuid.getMostSignificantBits()); | ||||||
|  | 				bb.putLong(uuid.getLeastSignificantBits()); | ||||||
|  | 				return Base64.encodeToString(bb.array(), Base64.URL_SAFE) + name.substring(pos, name.length()); | ||||||
|  | 			} catch (Exception e) { | ||||||
|  | 				return name; | ||||||
|  | 			} | ||||||
|  | 		} else { | ||||||
|  | 			return name; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| 	public IqPacket generateCreateAccountWithCaptcha(Account account, String id, Data data) { | 	public IqPacket generateCreateAccountWithCaptcha(Account account, String id, Data data) { | ||||||
| 		final IqPacket register = new IqPacket(IqPacket.TYPE.SET); | 		final IqPacket register = new IqPacket(IqPacket.TYPE.SET); | ||||||
| 		register.setFrom(account.getJid().toBareJid()); | 		register.setFrom(account.getJid().toBareJid()); | ||||||
|  | |||||||
| @ -1255,7 +1255,7 @@ public class XmppConnection implements Runnable { | |||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	private String nextRandomId() { | 	private String nextRandomId() { | ||||||
| 		return new BigInteger(50, mXmppConnectionService.getRNG()).toString(32); | 		return new BigInteger(50, mXmppConnectionService.getRNG()).toString(36); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	public String sendIqPacket(final IqPacket packet, final OnIqPacketReceived callback) { | 	public String sendIqPacket(final IqPacket packet, final OnIqPacketReceived callback) { | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Daniel Gultsch
						Daniel Gultsch