org.gudy.azureus2.core3.util
Class UrlUtils

java.lang.Object
  extended by org.gudy.azureus2.core3.util.UrlUtils

public class UrlUtils
extends java.lang.Object

Author:
TuxPaper

Constructor Summary
UrlUtils()
           
 
Method Summary
static java.net.Socket connectSocketAndWrite(boolean is_ssl, java.lang.String target_host, int target_port, byte[] bytes, int connect_timeout, int read_timeout)
           
static java.net.Socket connectSocketAndWrite(boolean is_ssl, java.lang.String target_host, int target_port, byte[] bytes, int connect_timeout, int read_timeout, boolean unconnected_socket_hack)
           
static void connectWithTimeout(java.net.URLConnection connection, long connect_timeout)
           
static void connectWithTimeouts(java.net.URLConnection connection, long connect_timeout, long read_timeout)
           
static boolean containsPasskey(java.net.URL url)
           
static java.lang.String convertIPV6Host(java.lang.String host)
           
static java.lang.String decode(java.lang.String s)
           
static java.util.Map<java.lang.String,java.lang.String> decodeArgs(java.lang.String args)
           
static java.lang.String decodeIfNeeded(java.lang.String s)
          Unfortunately we have code that mindlessly decoded URLs (FileDownloadWindow) which borked (in the case I discovered) magnet uris with encoded parameters (e.g.
static byte[] decodeSHA1Hash(java.lang.String str)
           
static void DHHackIt(javax.net.ssl.HttpsURLConnection ssl_con)
           
static javax.net.ssl.SSLSocketFactory DHHackIt(javax.net.ssl.SSLSocketFactory factory)
           
static java.lang.String encode(java.lang.String s)
          Like URLEncoder.encode, except translates spaces into %20 instead of +
static java.lang.String escapeXML(java.lang.String s)
           
static java.lang.String expandIPV6Host(java.lang.String host)
           
static byte[] extractHash(java.lang.String magnet_uri)
           
static java.util.Set<java.lang.String> extractNetworks(java.lang.String[] magnet_uri)
           
static java.net.URL getBaseURL(java.net.URL u)
           
static java.util.Map getBrowserHeaders(java.lang.String referer)
           
static java.lang.String getCanonicalString(java.net.URL url)
           
static long getContentLength(java.net.URLConnection con)
           
static byte[] getHashFromMagnetURI(java.lang.String magnetURI)
           
static java.net.URL getIPV4Fallback(java.net.URL url)
          Returns an explicit IPv4 url if the supplied one has both IPv6 and IPv4 addresses
static java.lang.String getMagnetURI(byte[] hash)
           
static java.lang.String getMagnetURI(byte[] hash, java.lang.String name, java.lang.String[] networks)
           
static java.lang.String getMagnetURI(Download download)
           
static java.lang.String getMagnetURI(Download download, int max_name_len)
           
static java.lang.String getMagnetURI(DownloadManager dm)
           
static java.lang.String getMagnetURI(DownloadManager dm, int max_name_len)
           
static java.lang.String getMagnetURI(java.lang.String name, Torrent torrent)
           
static java.lang.String getURL(java.lang.String text)
           
static void HTTPSURLConnectionSNIHack(java.lang.String host_name, javax.net.ssl.HttpsURLConnection con)
           
static boolean isInternalProtocol(java.lang.String url)
           
static boolean isURL(java.lang.String sURL)
          test string for possibility that it's an URL.
static boolean isURL(java.lang.String sURL, boolean bGuess)
           
static void main(java.lang.String[] args)
           
static java.lang.String normaliseMagnetURI(java.lang.String base_hash)
          returns magnet uri if input is base 32 or base 16 encoded sha1 hash, null otherwise
static java.lang.String parseTextForMagnets(java.lang.String text)
           
static java.lang.String parseTextForURL(java.lang.String text, boolean accept_magnets)
           
static java.lang.String parseTextForURL(java.lang.String text, boolean accept_magnets, boolean guess)
           
static boolean queryHasParameter(java.lang.String query_string, java.lang.String param_name, boolean case_sensitive)
           
static void setBrowserHeaders(ResourceDownloader rd, java.lang.String referer)
           
static void setBrowserHeaders(ResourceDownloader rd, java.lang.String encoded_headers, java.lang.String referer)
           
static void setBrowserHeaders(ResourceUploader ru, java.lang.String encoded_headers, java.lang.String referer)
           
static void setBrowserHeaders(java.net.URLConnection connection, java.lang.String referer)
           
static void setBrowserHeaders(java.net.URLConnection connection, java.lang.String encoded_headers, java.lang.String referer)
           
static java.net.URL setHost(java.net.URL u, java.lang.String host)
           
static java.net.URL setPort(java.net.URL u, int port)
           
static java.net.URL setProtocol(java.net.URL u, java.lang.String protocol)
           
static boolean SSLSocketSNIHack(java.lang.String host_name, javax.net.ssl.SSLSocket socket)
           
static java.lang.String unescapeXML(java.lang.String s)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

UrlUtils

public UrlUtils()
Method Detail

decodeArgs

public static java.util.Map<java.lang.String,java.lang.String> decodeArgs(java.lang.String args)

getMagnetURI

public static java.lang.String getMagnetURI(byte[] hash)

getMagnetURI

public static java.lang.String getMagnetURI(byte[] hash,
                                            java.lang.String name,
                                            java.lang.String[] networks)

extractHash

public static byte[] extractHash(java.lang.String magnet_uri)

extractNetworks

public static java.util.Set<java.lang.String> extractNetworks(java.lang.String[] magnet_uri)

getMagnetURI

public static java.lang.String getMagnetURI(Download download)

getMagnetURI

public static java.lang.String getMagnetURI(Download download,
                                            int max_name_len)

getMagnetURI

public static java.lang.String getMagnetURI(DownloadManager dm)

getMagnetURI

public static java.lang.String getMagnetURI(DownloadManager dm,
                                            int max_name_len)

getMagnetURI

public static java.lang.String getMagnetURI(java.lang.String name,
                                            Torrent torrent)

normaliseMagnetURI

public static java.lang.String normaliseMagnetURI(java.lang.String base_hash)
returns magnet uri if input is base 32 or base 16 encoded sha1 hash, null otherwise

Parameters:
base_hash -
Returns:

getHashFromMagnetURI

public static byte[] getHashFromMagnetURI(java.lang.String magnetURI)

decodeSHA1Hash

public static byte[] decodeSHA1Hash(java.lang.String str)

isURL

public static boolean isURL(java.lang.String sURL)
test string for possibility that it's an URL. Considers 40 byte hex strings as URLs

Parameters:
sURL -
Returns:

isURL

public static boolean isURL(java.lang.String sURL,
                            boolean bGuess)

parseTextForURL

public static java.lang.String parseTextForURL(java.lang.String text,
                                               boolean accept_magnets)

getURL

public static java.lang.String getURL(java.lang.String text)

isInternalProtocol

public static boolean isInternalProtocol(java.lang.String url)

parseTextForURL

public static java.lang.String parseTextForURL(java.lang.String text,
                                               boolean accept_magnets,
                                               boolean guess)

parseTextForMagnets

public static java.lang.String parseTextForMagnets(java.lang.String text)

encode

public static java.lang.String encode(java.lang.String s)
Like URLEncoder.encode, except translates spaces into %20 instead of +

Parameters:
s -
Returns:

decode

public static java.lang.String decode(java.lang.String s)

decodeIfNeeded

public static java.lang.String decodeIfNeeded(java.lang.String s)
Unfortunately we have code that mindlessly decoded URLs (FileDownloadWindow) which borked (in the case I discovered) magnet uris with encoded parameters (e.g. the &tr= parameter) - doing so screws stuff up later if, for example, the parameter included an encoded '&'

Parameters:
s -
Returns:

escapeXML

public static java.lang.String escapeXML(java.lang.String s)

unescapeXML

public static java.lang.String unescapeXML(java.lang.String s)

convertIPV6Host

public static java.lang.String convertIPV6Host(java.lang.String host)

expandIPV6Host

public static java.lang.String expandIPV6Host(java.lang.String host)

connectWithTimeout

public static void connectWithTimeout(java.net.URLConnection connection,
                                      long connect_timeout)
                               throws java.io.IOException
Throws:
java.io.IOException

connectWithTimeouts

public static void connectWithTimeouts(java.net.URLConnection connection,
                                       long connect_timeout,
                                       long read_timeout)
                                throws java.io.IOException
Throws:
java.io.IOException

setBrowserHeaders

public static void setBrowserHeaders(ResourceDownloader rd,
                                     java.lang.String referer)

setBrowserHeaders

public static void setBrowserHeaders(ResourceDownloader rd,
                                     java.lang.String encoded_headers,
                                     java.lang.String referer)

setBrowserHeaders

public static void setBrowserHeaders(ResourceUploader ru,
                                     java.lang.String encoded_headers,
                                     java.lang.String referer)

setBrowserHeaders

public static void setBrowserHeaders(java.net.URLConnection connection,
                                     java.lang.String referer)

setBrowserHeaders

public static void setBrowserHeaders(java.net.URLConnection connection,
                                     java.lang.String encoded_headers,
                                     java.lang.String referer)

getBrowserHeaders

public static java.util.Map getBrowserHeaders(java.lang.String referer)

queryHasParameter

public static boolean queryHasParameter(java.lang.String query_string,
                                        java.lang.String param_name,
                                        boolean case_sensitive)

containsPasskey

public static boolean containsPasskey(java.net.URL url)

setPort

public static java.net.URL setPort(java.net.URL u,
                                   int port)

setHost

public static java.net.URL setHost(java.net.URL u,
                                   java.lang.String host)

setProtocol

public static java.net.URL setProtocol(java.net.URL u,
                                       java.lang.String protocol)

getBaseURL

public static java.net.URL getBaseURL(java.net.URL u)

getCanonicalString

public static java.lang.String getCanonicalString(java.net.URL url)

getIPV4Fallback

public static java.net.URL getIPV4Fallback(java.net.URL url)
Returns an explicit IPv4 url if the supplied one has both IPv6 and IPv4 addresses

Parameters:
url -
Returns:

getContentLength

public static long getContentLength(java.net.URLConnection con)

SSLSocketSNIHack

public static boolean SSLSocketSNIHack(java.lang.String host_name,
                                       javax.net.ssl.SSLSocket socket)

DHHackIt

public static javax.net.ssl.SSLSocketFactory DHHackIt(javax.net.ssl.SSLSocketFactory factory)

HTTPSURLConnectionSNIHack

public static void HTTPSURLConnectionSNIHack(java.lang.String host_name,
                                             javax.net.ssl.HttpsURLConnection con)

DHHackIt

public static void DHHackIt(javax.net.ssl.HttpsURLConnection ssl_con)

connectSocketAndWrite

public static java.net.Socket connectSocketAndWrite(boolean is_ssl,
                                                    java.lang.String target_host,
                                                    int target_port,
                                                    byte[] bytes,
                                                    int connect_timeout,
                                                    int read_timeout)
                                             throws java.lang.Exception
Throws:
java.lang.Exception

connectSocketAndWrite

public static java.net.Socket connectSocketAndWrite(boolean is_ssl,
                                                    java.lang.String target_host,
                                                    int target_port,
                                                    byte[] bytes,
                                                    int connect_timeout,
                                                    int read_timeout,
                                                    boolean unconnected_socket_hack)
                                             throws java.lang.Exception
Throws:
java.lang.Exception

main

public static void main(java.lang.String[] args)