diff options
Diffstat (limited to 'src/org/jivesoftware/smack/proxy/ProxyInfo.java')
-rw-r--r-- | src/org/jivesoftware/smack/proxy/ProxyInfo.java | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/src/org/jivesoftware/smack/proxy/ProxyInfo.java b/src/org/jivesoftware/smack/proxy/ProxyInfo.java new file mode 100644 index 0000000..5a7d354 --- /dev/null +++ b/src/org/jivesoftware/smack/proxy/ProxyInfo.java @@ -0,0 +1,131 @@ +/** + * $RCSfile$ + * $Revision$ + * $Date$ + * + * All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jivesoftware.smack.proxy; + +import javax.net.SocketFactory; + +/** + * Class which stores proxy information such as proxy type, host, port, + * authentication etc. + * + * @author Atul Aggarwal + */ + +public class ProxyInfo +{ + public static enum ProxyType + { + NONE, + HTTP, + SOCKS4, + SOCKS5 + } + + private String proxyAddress; + private int proxyPort; + private String proxyUsername; + private String proxyPassword; + private ProxyType proxyType; + + public ProxyInfo( ProxyType pType, String pHost, int pPort, String pUser, + String pPass) + { + this.proxyType = pType; + this.proxyAddress = pHost; + this.proxyPort = pPort; + this.proxyUsername = pUser; + this.proxyPassword = pPass; + } + + public static ProxyInfo forHttpProxy(String pHost, int pPort, String pUser, + String pPass) + { + return new ProxyInfo(ProxyType.HTTP, pHost, pPort, pUser, pPass); + } + + public static ProxyInfo forSocks4Proxy(String pHost, int pPort, String pUser, + String pPass) + { + return new ProxyInfo(ProxyType.SOCKS4, pHost, pPort, pUser, pPass); + } + + public static ProxyInfo forSocks5Proxy(String pHost, int pPort, String pUser, + String pPass) + { + return new ProxyInfo(ProxyType.SOCKS5, pHost, pPort, pUser, pPass); + } + + public static ProxyInfo forNoProxy() + { + return new ProxyInfo(ProxyType.NONE, null, 0, null, null); + } + + public static ProxyInfo forDefaultProxy() + { + return new ProxyInfo(ProxyType.NONE, null, 0, null, null); + } + + public ProxyType getProxyType() + { + return proxyType; + } + + public String getProxyAddress() + { + return proxyAddress; + } + + public int getProxyPort() + { + return proxyPort; + } + + public String getProxyUsername() + { + return proxyUsername; + } + + public String getProxyPassword() + { + return proxyPassword; + } + + public SocketFactory getSocketFactory() + { + if(proxyType == ProxyType.NONE) + { + return new DirectSocketFactory(); + } + else if(proxyType == ProxyType.HTTP) + { + return new HTTPProxySocketFactory(this); + } + else if(proxyType == ProxyType.SOCKS4) + { + return new Socks4ProxySocketFactory(this); + } + else if(proxyType == ProxyType.SOCKS5) + { + return new Socks5ProxySocketFactory(this); + } + else + { + return null; + } + } +} |