home *** CD-ROM | disk | FTP | other *** search
- package java.net;
-
- import java.io.BufferedOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.io.UnsupportedEncodingException;
- import java.net.Proxy.Type;
- import java.security.AccessController;
- import java.security.PrivilegedActionException;
- import java.util.Iterator;
- import java.util.prefs.Preferences;
- import sun.net.www.ParseUtil;
- import sun.security.action.GetPropertyAction;
-
- class SocksSocketImpl extends PlainSocketImpl implements SocksConsts {
- private String server = null;
- private int port = 1080;
- private InetSocketAddress external_address;
- private boolean useV4 = false;
- private Socket cmdsock = null;
- private InputStream cmdIn = null;
- private OutputStream cmdOut = null;
-
- SocksSocketImpl() {
- }
-
- SocksSocketImpl(String var1, int var2) {
- this.server = var1;
- this.port = var2 == -1 ? 1080 : var2;
- }
-
- SocksSocketImpl(Proxy var1) {
- SocketAddress var2 = var1.address();
- if (var2 instanceof InetSocketAddress) {
- InetSocketAddress var3 = (InetSocketAddress)var2;
- this.server = var3.getHostString();
- this.port = var3.getPort();
- }
-
- }
-
- void setV4() {
- this.useV4 = true;
- }
-
- private synchronized void privilegedConnect(String var1, int var2, int var3) throws IOException {
- try {
- AccessController.doPrivileged(new 1(this, var1, var2, var3));
- } catch (PrivilegedActionException var5) {
- throw (IOException)var5.getException();
- }
- }
-
- private void superConnectServer(String var1, int var2, int var3) throws IOException {
- super.connect(new InetSocketAddress(var1, var2), var3);
- }
-
- private int readSocksReply(InputStream var1, byte[] var2) throws IOException {
- int var3 = var2.length;
- int var4 = 0;
-
- for(int var5 = 0; var4 < var3 && var5 < 3; ++var5) {
- int var6 = var1.read(var2, var4, var3 - var4);
- if (var6 < 0) {
- throw new SocketException("Malformed reply from SOCKS server");
- }
-
- var4 += var6;
- }
-
- return var4;
- }
-
- private boolean authenticate(byte var1, InputStream var2, BufferedOutputStream var3) throws IOException {
- Object var4 = null;
- if (var1 == 0) {
- return true;
- } else if (var1 == 2) {
- String var7 = null;
- InetAddress var8 = InetAddress.getByName(this.server);
- PasswordAuthentication var9 = (PasswordAuthentication)AccessController.doPrivileged(new 2(this, var8));
- String var6;
- if (var9 != null) {
- var6 = var9.getUserName();
- var7 = new String(var9.getPassword());
- } else {
- Preferences var10 = Preferences.userRoot().node("/java/net/socks");
-
- try {
- var6 = (String)AccessController.doPrivileged(new 3(this, var10));
- } catch (PrivilegedActionException var13) {
- throw (IOException)var13.getException();
- }
-
- if (var6 != null) {
- try {
- var7 = (String)AccessController.doPrivileged(new 4(this, var10));
- } catch (PrivilegedActionException var12) {
- throw (IOException)var12.getException();
- }
- } else {
- var6 = (String)AccessController.doPrivileged(new GetPropertyAction("user.name"));
- }
- }
-
- if (var6 == null) {
- return false;
- } else {
- var3.write(1);
- var3.write(var6.length());
-
- try {
- var3.write(var6.getBytes("ISO-8859-1"));
- } catch (UnsupportedEncodingException var15) {
- assert false;
- }
-
- if (var7 != null) {
- var3.write(var7.length());
-
- try {
- var3.write(var7.getBytes("ISO-8859-1"));
- } catch (UnsupportedEncodingException var14) {
- assert false;
- }
- } else {
- var3.write(0);
- }
-
- var3.flush();
- byte[] var16 = new byte[2];
- int var5 = this.readSocksReply(var2, var16);
- if (var5 == 2 && var16[1] == 0) {
- return true;
- } else {
- var3.close();
- var2.close();
- return false;
- }
- }
- } else {
- return false;
- }
- }
-
- private void connectV4(InputStream var1, OutputStream var2, InetSocketAddress var3) throws IOException {
- if (!(var3.getAddress() instanceof Inet4Address)) {
- throw new SocketException("SOCKS V4 requires IPv4 only addresses");
- } else {
- var2.write(4);
- var2.write(1);
- var2.write(var3.getPort() >> 8 & 255);
- var2.write(var3.getPort() >> 0 & 255);
- var2.write(var3.getAddress().getAddress());
- String var4 = (String)AccessController.doPrivileged(new GetPropertyAction("user.name"));
-
- try {
- var2.write(var4.getBytes("ISO-8859-1"));
- } catch (UnsupportedEncodingException var8) {
- assert false;
- }
-
- var2.write(0);
- var2.flush();
- byte[] var5 = new byte[8];
- int var6 = this.readSocksReply(var1, var5);
- if (var6 != 8) {
- throw new SocketException("Reply from SOCKS server has bad length: " + var6);
- } else if (var5[0] != 0 && var5[0] != 4) {
- throw new SocketException("Reply from SOCKS server has bad version");
- } else {
- SocketException var7 = null;
- switch (var5[1]) {
- case 90:
- this.external_address = var3;
- break;
- case 91:
- var7 = new SocketException("SOCKS request rejected");
- break;
- case 92:
- var7 = new SocketException("SOCKS server couldn't reach destination");
- break;
- case 93:
- var7 = new SocketException("SOCKS authentication failed");
- break;
- default:
- var7 = new SocketException("Reply from SOCKS server contains bad status");
- }
-
- if (var7 != null) {
- var1.close();
- var2.close();
- throw var7;
- }
- }
- }
- }
-
- protected void connect(SocketAddress var1, int var2) throws IOException {
- SecurityManager var3 = System.getSecurityManager();
- if (var1 != null && var1 instanceof InetSocketAddress) {
- InetSocketAddress var4 = (InetSocketAddress)var1;
- if (var3 != null) {
- if (var4.isUnresolved()) {
- var3.checkConnect(var4.getHostName(), var4.getPort());
- } else {
- var3.checkConnect(var4.getAddress().getHostAddress(), var4.getPort());
- }
- }
-
- if (this.server != null) {
- try {
- this.privilegedConnect(this.server, this.port, var2);
- } catch (IOException var14) {
- throw new SocketException(var14.getMessage());
- }
- } else {
- ProxySelector var5 = (ProxySelector)AccessController.doPrivileged(new 5(this));
- if (var5 == null) {
- super.connect(var4, var2);
- return;
- }
-
- URI var6 = null;
- String var7 = var4.getHostString();
- if (var4.getAddress() instanceof Inet6Address && !var7.startsWith("[") && var7.indexOf(":") >= 0) {
- var7 = "[" + var7 + "]";
- }
-
- try {
- var6 = new URI("socket://" + ParseUtil.encodePath(var7) + ":" + var4.getPort());
- } catch (URISyntaxException var16) {
- assert false : var16;
- }
-
- Object var8 = null;
- IOException var9 = null;
- Object var10 = null;
- Iterator var35 = var5.select(var6).iterator();
- if (var35 == null || !var35.hasNext()) {
- super.connect(var4, var2);
- return;
- }
-
- while(true) {
- if (var35.hasNext()) {
- Proxy var25 = (Proxy)var35.next();
- if (var25 == null || var25 == Proxy.NO_PROXY) {
- super.connect(var4, var2);
- return;
- }
-
- if (var25.type() != Type.SOCKS) {
- throw new SocketException("Unknown proxy type : " + var25.type());
- }
-
- if (!(var25.address() instanceof InetSocketAddress)) {
- throw new SocketException("Unknow address type for proxy: " + var25);
- }
-
- this.server = ((InetSocketAddress)var25.address()).getHostString();
- this.port = ((InetSocketAddress)var25.address()).getPort();
-
- try {
- this.privilegedConnect(this.server, this.port, var2);
- } catch (IOException var17) {
- var5.connectFailed(var6, var25.address(), var17);
- this.server = null;
- this.port = -1;
- var9 = var17;
- continue;
- }
- }
-
- if (this.server == null) {
- throw new SocketException("Can't connect to SOCKS proxy:" + var9.getMessage());
- }
- break;
- }
- }
-
- BufferedOutputStream var18 = new BufferedOutputStream(this.cmdOut, 512);
- InputStream var19 = this.cmdIn;
- if (this.useV4) {
- if (var4.isUnresolved()) {
- throw new UnknownHostException(var4.toString());
- } else {
- this.connectV4(var19, var18, var4);
- }
- } else {
- var18.write(5);
- var18.write(2);
- var18.write(0);
- var18.write(2);
- var18.flush();
- byte[] var20 = new byte[2];
- int var26 = this.readSocksReply(var19, var20);
- if (var26 == 2 && var20[0] == 5) {
- if (var20[1] == -1) {
- throw new SocketException("SOCKS : No acceptable methods");
- } else if (!this.authenticate(var20[1], var19, var18)) {
- throw new SocketException("SOCKS : authentication failed");
- } else {
- var18.write(5);
- var18.write(1);
- var18.write(0);
- if (var4.isUnresolved()) {
- var18.write(3);
- var18.write(var4.getHostName().length());
-
- try {
- var18.write(var4.getHostName().getBytes("ISO-8859-1"));
- } catch (UnsupportedEncodingException var15) {
- assert false;
- }
-
- var18.write(var4.getPort() >> 8 & 255);
- var18.write(var4.getPort() >> 0 & 255);
- } else if (var4.getAddress() instanceof Inet6Address) {
- var18.write(4);
- var18.write(var4.getAddress().getAddress());
- var18.write(var4.getPort() >> 8 & 255);
- var18.write(var4.getPort() >> 0 & 255);
- } else {
- var18.write(1);
- var18.write(var4.getAddress().getAddress());
- var18.write(var4.getPort() >> 8 & 255);
- var18.write(var4.getPort() >> 0 & 255);
- }
-
- var18.flush();
- var20 = new byte[4];
- var26 = this.readSocksReply(var19, var20);
- if (var26 != 4) {
- throw new SocketException("Reply from SOCKS server has bad length");
- } else {
- SocketException var34;
- var34 = null;
- label120:
- switch (var20[1]) {
- case 0:
- switch (var20[3]) {
- case 1:
- byte[] var40 = new byte[4];
- var26 = this.readSocksReply(var19, var40);
- if (var26 != 4) {
- throw new SocketException("Reply from SOCKS server badly formatted");
- }
-
- var20 = new byte[2];
- var26 = this.readSocksReply(var19, var20);
- if (var26 != 2) {
- throw new SocketException("Reply from SOCKS server badly formatted");
- }
-
- int var38 = (var20[0] & 255) << 8;
- int var42 = var38 + (var20[1] & 255);
- break label120;
- case 2:
- default:
- var34 = new SocketException("Reply from SOCKS server contains wrong code");
- break label120;
- case 3:
- byte var39 = var20[1];
- byte[] var13 = new byte[var39];
- var26 = this.readSocksReply(var19, var13);
- if (var26 != var39) {
- throw new SocketException("Reply from SOCKS server badly formatted");
- }
-
- var20 = new byte[2];
- var26 = this.readSocksReply(var19, var20);
- if (var26 != 2) {
- throw new SocketException("Reply from SOCKS server badly formatted");
- }
-
- int var37 = (var20[0] & 255) << 8;
- int var41 = var37 + (var20[1] & 255);
- break label120;
- case 4:
- byte var11 = var20[1];
- byte[] var12 = new byte[var11];
- var26 = this.readSocksReply(var19, var12);
- if (var26 != var11) {
- throw new SocketException("Reply from SOCKS server badly formatted");
- }
-
- var20 = new byte[2];
- var26 = this.readSocksReply(var19, var20);
- if (var26 != 2) {
- throw new SocketException("Reply from SOCKS server badly formatted");
- }
-
- int var36 = (var20[0] & 255) << 8;
- int var10000 = var36 + (var20[1] & 255);
- break label120;
- }
- case 1:
- var34 = new SocketException("SOCKS server general failure");
- break;
- case 2:
- var34 = new SocketException("SOCKS: Connection not allowed by ruleset");
- break;
- case 3:
- var34 = new SocketException("SOCKS: Network unreachable");
- break;
- case 4:
- var34 = new SocketException("SOCKS: Host unreachable");
- break;
- case 5:
- var34 = new SocketException("SOCKS: Connection refused");
- break;
- case 6:
- var34 = new SocketException("SOCKS: TTL expired");
- break;
- case 7:
- var34 = new SocketException("SOCKS: Command not supported");
- break;
- case 8:
- var34 = new SocketException("SOCKS: address type not supported");
- }
-
- if (var34 != null) {
- var19.close();
- var18.close();
- throw var34;
- } else {
- this.external_address = var4;
- }
- }
- }
- } else if (var4.isUnresolved()) {
- throw new UnknownHostException(var4.toString());
- } else {
- this.connectV4(var19, var18, var4);
- }
- }
- } else {
- throw new IllegalArgumentException("Unsupported address type");
- }
- }
-
- private void bindV4(InputStream var1, OutputStream var2, InetAddress var3, int var4) throws IOException {
- if (!(var3 instanceof Inet4Address)) {
- throw new SocketException("SOCKS V4 requires IPv4 only addresses");
- } else {
- super.bind(var3, var4);
- byte[] var5 = var3.getAddress();
- if (var3.isAnyLocalAddress()) {
- InetAddress var6 = this.cmdsock.getLocalAddress();
- var5 = var6.getAddress();
- }
-
- var2.write(4);
- var2.write(2);
- var2.write(super.getLocalPort() >> 8 & 255);
- var2.write(super.getLocalPort() >> 0 & 255);
- var2.write(var5);
- String var7 = (String)AccessController.doPrivileged(new GetPropertyAction("user.name"));
-
- try {
- var2.write(var7.getBytes("ISO-8859-1"));
- } catch (UnsupportedEncodingException var11) {
- assert false;
- }
-
- var2.write(0);
- var2.flush();
- byte[] var8 = new byte[8];
- int var9 = this.readSocksReply(var1, var8);
- if (var9 != 8) {
- throw new SocketException("Reply from SOCKS server has bad length: " + var9);
- } else if (var8[0] != 0 && var8[0] != 4) {
- throw new SocketException("Reply from SOCKS server has bad version");
- } else {
- SocketException var10 = null;
- switch (var8[1]) {
- case 90:
- this.external_address = new InetSocketAddress(var3, var4);
- break;
- case 91:
- var10 = new SocketException("SOCKS request rejected");
- break;
- case 92:
- var10 = new SocketException("SOCKS server couldn't reach destination");
- break;
- case 93:
- var10 = new SocketException("SOCKS authentication failed");
- break;
- default:
- var10 = new SocketException("Reply from SOCKS server contains bad status");
- }
-
- if (var10 != null) {
- var1.close();
- var2.close();
- throw var10;
- }
- }
- }
- }
-
- protected synchronized void socksBind(InetSocketAddress var1) throws IOException {
- if (this.socket == null) {
- if (this.server != null) {
- try {
- AccessController.doPrivileged(new 8(this));
- } catch (Exception var13) {
- throw new SocketException(var13.getMessage());
- }
- } else {
- ProxySelector var2 = (ProxySelector)AccessController.doPrivileged(new 6(this));
- if (var2 == null) {
- return;
- }
-
- URI var3 = null;
- String var4 = var1.getHostString();
- if (var1.getAddress() instanceof Inet6Address && !var4.startsWith("[") && var4.indexOf(":") >= 0) {
- var4 = "[" + var4 + "]";
- }
-
- try {
- var3 = new URI("serversocket://" + ParseUtil.encodePath(var4) + ":" + var1.getPort());
- } catch (URISyntaxException var16) {
- assert false : var16;
- }
-
- Object var5 = null;
- Exception var6 = null;
- Object var7 = null;
- Iterator var33 = var2.select(var3).iterator();
- if (var33 == null || !var33.hasNext()) {
- return;
- }
-
- while(var33.hasNext()) {
- Proxy var24 = (Proxy)var33.next();
- if (var24 == null || var24 == Proxy.NO_PROXY) {
- return;
- }
-
- if (var24.type() != Type.SOCKS) {
- throw new SocketException("Unknown proxy type : " + var24.type());
- }
-
- if (!(var24.address() instanceof InetSocketAddress)) {
- throw new SocketException("Unknow address type for proxy: " + var24);
- }
-
- this.server = ((InetSocketAddress)var24.address()).getHostString();
- this.port = ((InetSocketAddress)var24.address()).getPort();
-
- try {
- AccessController.doPrivileged(new 7(this));
- } catch (Exception var14) {
- var2.connectFailed(var3, var24.address(), new SocketException(var14.getMessage()));
- this.server = null;
- this.port = -1;
- this.cmdsock = null;
- var6 = var14;
- }
- }
-
- if (this.server == null || this.cmdsock == null) {
- throw new SocketException("Can't connect to SOCKS proxy:" + var6.getMessage());
- }
- }
-
- BufferedOutputStream var17 = new BufferedOutputStream(this.cmdOut, 512);
- InputStream var18 = this.cmdIn;
- if (this.useV4) {
- this.bindV4(var18, var17, var1.getAddress(), var1.getPort());
- } else {
- var17.write(5);
- var17.write(2);
- var17.write(0);
- var17.write(2);
- var17.flush();
- byte[] var19 = new byte[2];
- int var25 = this.readSocksReply(var18, var19);
- if (var25 == 2 && var19[0] == 5) {
- if (var19[1] == -1) {
- throw new SocketException("SOCKS : No acceptable methods");
- } else if (!this.authenticate(var19[1], var18, var17)) {
- throw new SocketException("SOCKS : authentication failed");
- } else {
- var17.write(5);
- var17.write(2);
- var17.write(0);
- int var32 = var1.getPort();
- if (var1.isUnresolved()) {
- var17.write(3);
- var17.write(var1.getHostName().length());
-
- try {
- var17.write(var1.getHostName().getBytes("ISO-8859-1"));
- } catch (UnsupportedEncodingException var15) {
- assert false;
- }
-
- var17.write(var32 >> 8 & 255);
- var17.write(var32 >> 0 & 255);
- } else if (var1.getAddress() instanceof Inet4Address) {
- byte[] var34 = var1.getAddress().getAddress();
- var17.write(1);
- var17.write(var34);
- var17.write(var32 >> 8 & 255);
- var17.write(var32 >> 0 & 255);
- var17.flush();
- } else {
- if (!(var1.getAddress() instanceof Inet6Address)) {
- this.cmdsock.close();
- throw new SocketException("unsupported address type : " + var1);
- }
-
- byte[] var35 = var1.getAddress().getAddress();
- var17.write(4);
- var17.write(var35);
- var17.write(var32 >> 8 & 255);
- var17.write(var32 >> 0 & 255);
- var17.flush();
- }
-
- SocketException var36;
- var19 = new byte[4];
- this.readSocksReply(var18, var19);
- var36 = null;
- label111:
- switch (var19[1]) {
- case 0:
- Object var11 = null;
- switch (var19[3]) {
- case 1:
- byte[] var43 = new byte[4];
- var25 = this.readSocksReply(var18, var43);
- if (var25 != 4) {
- throw new SocketException("Reply from SOCKS server badly formatted");
- }
-
- var19 = new byte[2];
- var25 = this.readSocksReply(var18, var19);
- if (var25 != 2) {
- throw new SocketException("Reply from SOCKS server badly formatted");
- }
-
- int var41 = (var19[0] & 255) << 8;
- var41 += var19[1] & 255;
- this.external_address = new InetSocketAddress(new Inet4Address("", var43), var41);
- case 2:
- default:
- break label111;
- case 3:
- byte var37 = var19[1];
- byte[] var12 = new byte[var37];
- var25 = this.readSocksReply(var18, var12);
- if (var25 != var37) {
- throw new SocketException("Reply from SOCKS server badly formatted");
- }
-
- var19 = new byte[2];
- var25 = this.readSocksReply(var18, var19);
- if (var25 != 2) {
- throw new SocketException("Reply from SOCKS server badly formatted");
- }
-
- int var39 = (var19[0] & 255) << 8;
- var39 += var19[1] & 255;
- this.external_address = new InetSocketAddress(new String(var12), var39);
- break label111;
- case 4:
- byte var8 = var19[1];
- byte[] var10 = new byte[var8];
- var25 = this.readSocksReply(var18, var10);
- if (var25 != var8) {
- throw new SocketException("Reply from SOCKS server badly formatted");
- }
-
- var19 = new byte[2];
- var25 = this.readSocksReply(var18, var19);
- if (var25 != 2) {
- throw new SocketException("Reply from SOCKS server badly formatted");
- }
-
- int var9 = (var19[0] & 255) << 8;
- var9 += var19[1] & 255;
- this.external_address = new InetSocketAddress(new Inet6Address("", var10), var9);
- break label111;
- }
- case 1:
- var36 = new SocketException("SOCKS server general failure");
- break;
- case 2:
- var36 = new SocketException("SOCKS: Bind not allowed by ruleset");
- break;
- case 3:
- var36 = new SocketException("SOCKS: Network unreachable");
- break;
- case 4:
- var36 = new SocketException("SOCKS: Host unreachable");
- break;
- case 5:
- var36 = new SocketException("SOCKS: Connection refused");
- break;
- case 6:
- var36 = new SocketException("SOCKS: TTL expired");
- break;
- case 7:
- var36 = new SocketException("SOCKS: Command not supported");
- break;
- case 8:
- var36 = new SocketException("SOCKS: address type not supported");
- }
-
- if (var36 != null) {
- var18.close();
- var17.close();
- this.cmdsock.close();
- this.cmdsock = null;
- throw var36;
- } else {
- this.cmdIn = var18;
- this.cmdOut = var17;
- }
- }
- } else {
- this.bindV4(var18, var17, var1.getAddress(), var1.getPort());
- }
- }
- }
- }
-
- protected void acceptFrom(SocketImpl var1, InetSocketAddress var2) throws IOException {
- if (this.cmdsock != null) {
- InputStream var3;
- SocketException var5;
- InetSocketAddress var8;
- var3 = this.cmdIn;
- this.socksBind(var2);
- var3.read();
- int var4 = var3.read();
- var3.read();
- var5 = null;
- var8 = null;
- label36:
- switch (var4) {
- case 0:
- var4 = var3.read();
- switch (var4) {
- case 1:
- byte[] var17 = new byte[4];
- this.readSocksReply(var3, var17);
- int var14 = var3.read() << 8;
- var14 += var3.read();
- var8 = new InetSocketAddress(new Inet4Address("", var17), var14);
- case 2:
- default:
- break label36;
- case 3:
- int var9 = var3.read();
- byte[] var16 = new byte[var9];
- this.readSocksReply(var3, var16);
- int var12 = var3.read() << 8;
- var12 += var3.read();
- var8 = new InetSocketAddress(new String(var16), var12);
- break label36;
- case 4:
- byte[] var7 = new byte[16];
- this.readSocksReply(var3, var7);
- int var6 = var3.read() << 8;
- var6 += var3.read();
- var8 = new InetSocketAddress(new Inet6Address("", var7), var6);
- break label36;
- }
- case 1:
- var5 = new SocketException("SOCKS server general failure");
- break;
- case 2:
- var5 = new SocketException("SOCKS: Accept not allowed by ruleset");
- break;
- case 3:
- var5 = new SocketException("SOCKS: Network unreachable");
- break;
- case 4:
- var5 = new SocketException("SOCKS: Host unreachable");
- break;
- case 5:
- var5 = new SocketException("SOCKS: Connection refused");
- break;
- case 6:
- var5 = new SocketException("SOCKS: TTL expired");
- break;
- case 7:
- var5 = new SocketException("SOCKS: Command not supported");
- break;
- case 8:
- var5 = new SocketException("SOCKS: address type not supported");
- }
-
- if (var5 != null) {
- this.cmdIn.close();
- this.cmdOut.close();
- this.cmdsock.close();
- this.cmdsock = null;
- throw var5;
- } else {
- if (var1 instanceof SocksSocketImpl) {
- ((SocksSocketImpl)var1).external_address = var8;
- }
-
- if (var1 instanceof PlainSocketImpl) {
- ((PlainSocketImpl)var1).setInputStream((SocketInputStream)var3);
- }
-
- var1.fd = this.cmdsock.getImpl().fd;
- var1.address = this.cmdsock.getImpl().address;
- var1.port = this.cmdsock.getImpl().port;
- var1.localport = this.cmdsock.getImpl().localport;
- this.cmdsock = null;
- }
- }
- }
-
- protected InetAddress getInetAddress() {
- return this.external_address != null ? this.external_address.getAddress() : super.getInetAddress();
- }
-
- protected int getPort() {
- return this.external_address != null ? this.external_address.getPort() : super.getPort();
- }
-
- protected int getLocalPort() {
- if (this.socket != null) {
- return super.getLocalPort();
- } else {
- return this.external_address != null ? this.external_address.getPort() : super.getLocalPort();
- }
- }
-
- protected void close() throws IOException {
- if (this.cmdsock != null) {
- this.cmdsock.close();
- }
-
- this.cmdsock = null;
- super.close();
- }
-
- // $FF: synthetic method
- static void access$000(SocksSocketImpl var0, String var1, int var2, int var3) throws IOException {
- var0.superConnectServer(var1, var2, var3);
- }
-
- // $FF: synthetic method
- static InputStream access$102(SocksSocketImpl var0, InputStream var1) {
- return var0.cmdIn = var1;
- }
-
- // $FF: synthetic method
- static OutputStream access$202(SocksSocketImpl var0, OutputStream var1) {
- return var0.cmdOut = var1;
- }
-
- // $FF: synthetic method
- static String access$300(SocksSocketImpl var0) {
- return var0.server;
- }
-
- // $FF: synthetic method
- static int access$400(SocksSocketImpl var0) {
- return var0.port;
- }
-
- // $FF: synthetic method
- static Socket access$502(SocksSocketImpl var0, Socket var1) {
- return var0.cmdsock = var1;
- }
-
- // $FF: synthetic method
- static Socket access$500(SocksSocketImpl var0) {
- return var0.cmdsock;
- }
- }
-