Mercurial > 510Connectbot
changeset 350:72de889ecfe7
update jsocks to 2011-03-19
author | Carl Byington <carl@five-ten-sg.com> |
---|---|
date | Fri, 01 Aug 2014 11:26:27 -0700 |
parents | 205ee2873330 |
children | 1bf94d2bfafe |
files | src/net/sourceforge/jsocks/SocksDialog.java src/net/sourceforge/jsocks/server/Ident.java src/net/sourceforge/jsocks/server/IdentAuthenticator.java src/net/sourceforge/jsocks/server/ServerAuthenticator.java src/net/sourceforge/jsocks/server/ServerAuthenticatorNone.java src/net/sourceforge/jsocks/server/UserPasswordAuthenticator.java src/net/sourceforge/jsocks/server/UserValidation.java |
diffstat | 7 files changed, 6 insertions(+), 621 deletions(-) [+] |
line wrap: on
line diff
--- a/src/net/sourceforge/jsocks/SocksDialog.java Fri Aug 01 11:23:10 2014 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,615 +0,0 @@ -package net.sourceforge.jsocks; -import java.awt.*; -import java.awt.event.*; - -/** - Socks configuration dialog.<br> - Class which provides GUI means of getting CProxy configuration - from the user. - */ -public class SocksDialog extends Dialog - implements WindowListener, - ItemListener, - ActionListener, - Runnable{ - -//GUI components - TextField host_text, - port_text, - user_text, - password_text, - direct_text; - Button add_button, - remove_button, - cancel_button, - ok_button, - dismiss_button; - List direct_list; - Checkbox socks4radio, - socks5radio, - none_check, - up_check, - gssapi_check; - - Dialog warning_dialog; - Label warning_label; - - String host,user,password; - int port; - Thread net_thread = null; - - //CheckboxGroups - CheckboxGroup socks_group = new CheckboxGroup(); - - CProxy proxy; - InetRange ir; - - final static int COMMAND_MODE = 0; - final static int OK_MODE = 1; - - int mode; - - /**Wether to resolve addresses in separate thread. - <p> - Default value is true, however on some JVMs, namely one from - the Microsoft, it doesn't want to work properly, separate thread - can't close the dialog opened in GUI thread, and everuthing else - is then crashes. - <p> - When setting this variable to false, SocksDialog will block while - trying to look up proxy host, and if this takes considerable amount - of time it might be annoying to user. - - */ - public static boolean useThreads = true; - - -// Constructors -//////////////////////////////////// - /** - Creates SOCKS configuration dialog.<br> - Uses default initialisation:<br> - CProxy host: socks-proxy <br> - CProxy port: 1080 <br> - Version: 5<br> - - */ - public SocksDialog(Frame parent){ - this(parent,null); - } - /** - Creates SOCKS configuration dialog and initialises it - to given proxy. - */ - public SocksDialog(Frame parent,CProxy init_proxy){ - super(parent,"Proxy Configuration",true); - warning_dialog = new Dialog(parent,"Warning",true); - - guiInit(); - setResizable(false); - addWindowListener(this); - Component[] comps = getComponents(); - for(int i=0;i<comps.length;++i){ - if(comps[i] instanceof Button) - ((Button)comps[i]).addActionListener(this); - else if(comps[i] instanceof TextField) - ((TextField) comps[i]).addActionListener(this); - else if(comps[i] instanceof Checkbox){ - ((Checkbox)comps[i]).addItemListener(this); - } - } - proxy = init_proxy; - if(proxy != null) doInit(proxy); - else ir = new InetRange(); - - dismiss_button.addActionListener(this); - warning_dialog.addWindowListener(this); - } - -//Public Methods -//////////////// - - /** - Displays SOCKS configuartion dialog. - <p> - Returns initialised proxy object, or null if user cancels dialog - by either pressing Cancel or closing the dialog window. - */ - public CProxy getProxy(){ - mode = COMMAND_MODE; - pack(); - show(); - return proxy; - } - - /** - Initialises dialog to given proxy and displays SOCKS configuartion dialog. - <p> - Returns initialised proxy object, or null if user cancels dialog - by either pressing Cancel or closing the dialog window. - */ - public CProxy getProxy(CProxy p){ - if(p != null){ - doInit(p); - } - mode = COMMAND_MODE; - pack(); - show(); - return proxy; - } - -// WindowListener Interface -///////////////////////////////// - public void windowActivated(java.awt.event.WindowEvent e){ - } - public void windowDeactivated(java.awt.event.WindowEvent e){ - } - public void windowOpened(java.awt.event.WindowEvent e){ - } - public void windowClosing(java.awt.event.WindowEvent e){ - Window source = e.getWindow(); - if(source == this){ - onCancel(); - }else if(source == warning_dialog){ - onDismiss(); - } - } - public void windowClosed(java.awt.event.WindowEvent e){ - } - public void windowIconified(java.awt.event.WindowEvent e){ - } - public void windowDeiconified(java.awt.event.WindowEvent e){ - } - -//ActionListener interface -/////////////////////////// - public void actionPerformed(ActionEvent ae){ - - Object source = ae.getSource(); - - if(source == cancel_button ) - onCancel(); - else if(source == add_button || source == direct_text) - onAdd(); - else if(source == remove_button) - onRemove(); - else if(source == dismiss_button) - onDismiss(); - else if(source == ok_button || source instanceof TextField) - onOK(); - } -//ItemListener interface -//////////////////////// - public void itemStateChanged(ItemEvent ie){ - Object source = ie.getSource(); - //System.out.println("ItemEvent:"+source); - if(source == socks5radio || source == socks4radio) - onSocksChange(); - else if(source == up_check) - onUPChange(); - - } -//Runnable interface -//////////////////// - /** - Resolves proxy address in other thread, to avoid - annoying blocking in GUI thread. - */ - public void run(){ - - if(!initProxy()){ - //Check if we have been aborted - if(mode != OK_MODE) return; - if(net_thread != Thread.currentThread()) return; - - mode = COMMAND_MODE; - warning_label.setText("Look up failed."); - warning_label.invalidate(); - return; - } - - //System.out.println("Done!"); - while(!warning_dialog.isShowing()) - ; /* do nothing*/; - - warning_dialog.dispose(); - //dispose(); //End Dialog - } - -//Private Methods -/////////////////// - private void onOK(){ - host = host_text.getText().trim(); - user = user_text.getText(); - password = password_text.getText(); - - if(host.length() == 0){ - warn("Proxy host is not set!"); - return; - } - if(socks_group.getSelectedCheckbox() == socks4radio){ - if(user.length() == 0){ - warn("User name is not set"); - return; - } - - }else{ - if(up_check.getState()){ - if(user.length() == 0){ - warn("User name is not set."); - return; - } - if(password.length()==0){ - warn("Password is not set."); - return; - } - }else if(!none_check.getState()){ - warn("Please select at least one Authentication Method."); - return; - } - } - - try{ - port = Integer.parseInt(port_text.getText()); - }catch(NumberFormatException nfe){ - warn("Proxy port is invalid!"); - return; - } - - mode = OK_MODE; - - if(useThreads){ - net_thread = new Thread(this); - net_thread.start(); - - info("Looking up host: "+host); - //System.out.println("Info returned."); - }else if(!initProxy()){ - warn("Proxy host is invalid."); - mode = COMMAND_MODE; - } - - if(mode == OK_MODE) dispose(); - } - - private void onCancel(){ - //System.out.println("Cancel"); - proxy = null; - dispose(); - } - - private void onAdd(){ - String s = direct_text.getText(); - s.trim(); - if(s.length() == 0 ) return; - //Check for Duplicate - String[] direct_hosts = direct_list.getItems(); - for(int i=0;i<direct_hosts.length;++i) - if(direct_hosts[i].equals(s)) return; - - direct_list.add(s); - ir.add(s); - } - private void onRemove(){ - int index = direct_list.getSelectedIndex(); - if(index < 0) return; - ir.remove(direct_list.getItem(index)); - direct_list.remove(index); - direct_list.select(index); - } - - private void onSocksChange(){ - Object selected = socks_group.getSelectedCheckbox(); - if(selected == socks4radio){ - user_text.setEnabled(true); - password_text.setEnabled(false); - none_check.setEnabled(false); - up_check.setEnabled(false); - }else{ - if(up_check.getState()){ - user_text.setEnabled(true); - password_text.setEnabled(true); - }else{ - user_text.setEnabled(false); - password_text.setEnabled(false); - } - none_check.setEnabled(true); - up_check.setEnabled(true); - } - //System.out.println("onSocksChange:"+selected); - } - private void onUPChange(){ - //System.out.println("onUPChange"); - if(up_check.getState()){ - user_text.setEnabled(true); - password_text.setEnabled(true); - }else{ - user_text.setEnabled(false); - password_text.setEnabled(false); - } - } - private void onDismiss(){ - warning_dialog.dispose(); - if(mode == OK_MODE){ - mode = COMMAND_MODE; - if(net_thread!=null) net_thread.interrupt(); - } - } - - private void doInit(CProxy p){ - if(p.version == 5){ - socks_group.setSelectedCheckbox(socks5radio); - onSocksChange(); - if(((Socks5Proxy)p).getAuthenticationMethod(0)!=null) - none_check.setState(true); - UserPasswordAuthentication auth = (UserPasswordAuthentication) - ((Socks5Proxy)p).getAuthenticationMethod(2); - if(auth!=null){ - user_text.setText(auth.getUser()); - password_text.setText(auth.getPassword()); - up_check.setState(true); - onUPChange(); - } - }else{ - socks_group.setSelectedCheckbox(socks4radio); - onSocksChange(); - user_text.setText(((Socks4Proxy)p).user); - } - ir = (InetRange)(p.directHosts.clone()); - String[] direct_hosts = ir.getAll(); - direct_list.removeAll(); - for(int i=0;i<direct_hosts.length;++i) - direct_list.add(direct_hosts[i]); - - host_text.setText(p.proxyIP.getHostName()); - port_text.setText(""+p.proxyPort); - - } - - private boolean initProxy(){ - try{ - if(socks_group.getSelectedCheckbox() == socks5radio){ - proxy = new Socks5Proxy(host,port); - if(up_check.getState()) - ((Socks5Proxy)proxy).setAuthenticationMethod(2, - new UserPasswordAuthentication(user,password)); - if(!none_check.getState()) - ((Socks5Proxy)proxy).setAuthenticationMethod(0,null); - } - else - proxy = new Socks4Proxy(host,port,user); - }catch(java.net.UnknownHostException uhe){ - return false; - } - proxy.directHosts = ir; - return true; - } - private void info(String s){ - msgBox("Info",s); - } - - private void warn(String s){ - msgBox("Warning",s); - } - - private void msgBox(String title, String message){ - warning_label.setText(message); - warning_label.invalidate(); - warning_dialog.setTitle(title); - warning_dialog.pack(); - warning_dialog.show(); - } - -/*====================================================================== - Form: - Table: - +---+-------+---+---+ - | | | | | - +---+-------+---+---+ - | | | - +---+-------+-------+ - | | | | - +---+-------+-------+ - | | | | - +---+-------+-------+ - | | | - +-----------+-------+ - | | | - | +---+---+ - | | | | - +-----------+---+---+ - | | | | - +---+---+---+---+---+ - | | | | | | - +---+---+---+---+---+ -*/ - - void guiInit(){ - //Some default names used - Label label; - Container container; - Font font; - - GridBagConstraints c = new GridBagConstraints(); - - font = new Font("Dialog",Font.PLAIN,12); - - container = this; - //container = new Panel(); - container.setLayout(new GridBagLayout()); - container.setFont(font); - container.setBackground(SystemColor.menu); - c.insets = new Insets(3,3,3,3); - - c.gridx=0; c.gridy=0; - c.gridwidth=1; c.gridheight=1; - c.anchor=GridBagConstraints.NORTHEAST; - label = new Label("Host:"); - container.add(label,c); - - c.gridx=1; c.gridy=0; - c.gridwidth=2; c.gridheight=1; - c.anchor=GridBagConstraints.NORTHWEST; - host_text = new TextField("socks-proxy",15); - container.add(host_text,c); - - c.gridx=3; c.gridy=0; - c.gridwidth=1; c.gridheight=1; - c.anchor=GridBagConstraints.NORTHEAST; - label = new Label("Port:"); - container.add(label,c); - - c.gridx=4; c.gridy=0; - c.gridwidth=1; c.gridheight=1; - c.anchor=GridBagConstraints.NORTHWEST; - port_text = new TextField("1080",5); - container.add(port_text,c); - - c.gridx=0; c.gridy=1; - c.gridwidth=3; c.gridheight=1; - c.anchor=GridBagConstraints.NORTH; - socks4radio = new Checkbox("Socks4",socks_group,false); - //1.0 compatible code - //socks4radio = new Checkbox("Socks4",false); - //socks4radio.setCheckboxGroup(socks_group); - socks4radio.setFont(new Font(font.getName(),Font.BOLD,14)); - container.add(socks4radio,c); - - c.gridx=3; c.gridy=1; - c.gridwidth=2; c.gridheight=1; - c.anchor=GridBagConstraints.NORTH; - socks5radio = new Checkbox("Socks5",socks_group,true); - //1.0 compatible code - //socks5radio = new Checkbox("Socks5",true); - //socks5radio.setCheckboxGroup(socks_group); - socks5radio.setFont(new Font(font.getName(),Font.BOLD,14)); - container.add(socks5radio,c); - - c.gridx=0; c.gridy=2; - c.gridwidth=1; c.gridheight=1; - c.anchor=GridBagConstraints.EAST; - label = new Label("User Id:"); - container.add(label,c); - - c.gridx=1; c.gridy=2; - c.gridwidth=2; c.gridheight=1; - c.anchor=GridBagConstraints.NORTHWEST; - user_text = new TextField("",15); - user_text.setEnabled(false); - container.add(user_text,c); - - c.gridx=3; c.gridy=2; - c.gridwidth=2; c.gridheight=1; - c.anchor=GridBagConstraints.NORTH; - label = new Label("Authentication"); - label.setFont(new Font(font.getName(),Font.BOLD,14)); - container.add(label,c); - - c.gridx=0; c.gridy=3; - c.gridwidth=1; c.gridheight=1; - c.anchor=GridBagConstraints.EAST; - label = new Label("Password:"); - container.add(label,c); - - c.gridx=1; c.gridy=3; - c.gridwidth=2; c.gridheight=1; - c.anchor=GridBagConstraints.NORTHWEST; - password_text = new TextField("",15); - password_text.setEchoChar('*'); - password_text.setEnabled(false); - //password_text.setEchoCharacter('*');//1.0 - container.add(password_text,c); - - c.gridx=3; c.gridy=3; - c.gridwidth=2; c.gridheight=1; - c.anchor=GridBagConstraints.NORTHWEST; - none_check = new Checkbox("None",true); - container.add(none_check,c); - - c.gridx=0; c.gridy=4; - c.gridwidth=3; c.gridheight=1; - c.anchor=GridBagConstraints.NORTH; - label = new Label("Direct Hosts"); - label.setFont(new Font(font.getName(),Font.BOLD,14)); - container.add(label,c); - - c.gridx=3; c.gridy=4; - c.gridwidth=2; c.gridheight=1; - c.anchor=GridBagConstraints.NORTHWEST; - up_check = new Checkbox("User/Password",false); - container.add(up_check,c); - - c.gridx=0; c.gridy=5; - c.gridwidth=3; c.gridheight=2; - c.anchor=GridBagConstraints.NORTHWEST; - c.fill = GridBagConstraints.BOTH; - direct_list = new List(3); - container.add(direct_list,c); - - c.gridx=3; c.gridy=5; - c.gridwidth=2; c.gridheight=1; - c.anchor=GridBagConstraints.NORTHWEST; - gssapi_check = new Checkbox("GSSAPI",false); - gssapi_check.setEnabled(false); - container.add(gssapi_check,c); - - c.gridx=0; c.gridy=7; - c.gridwidth=3; c.gridheight=1; - c.anchor=GridBagConstraints.NORTHWEST; - direct_text = new TextField("",25); - container.add(direct_text,c); - - c.gridx=3; c.gridy=7; - c.gridwidth=1; c.gridheight=1; - c.anchor=GridBagConstraints.NORTH; - add_button = new Button("Add"); - container.add(add_button,c); - - c.gridx=3; c.gridy=6; - c.gridwidth=1; c.gridheight=1; - c.anchor=GridBagConstraints.NORTH; - remove_button = new Button("Remove"); - container.add(remove_button,c); - - c.gridx=1; c.gridy=8; - c.gridwidth=1; c.gridheight=1; - c.anchor=GridBagConstraints.NORTH; - cancel_button = new Button("Cancel"); - container.add(cancel_button,c); - - c.gridx=0; c.gridy=8; - c.gridwidth=1; c.gridheight=1; - c.anchor=GridBagConstraints.NORTHWEST; - ok_button = new Button("OK"); - container.add(ok_button,c); - - //up_check.setEnabled(false); - - //Warning Dialog - dismiss_button = new Button("Dismiss"); - warning_label = new Label("",Label.CENTER); - warning_label.setFont(new Font("Dialog",Font.BOLD,15)); - - Panel p = new Panel(); - p.add(dismiss_button); - warning_dialog.add(p,BorderLayout.SOUTH); - warning_dialog.add(warning_label,BorderLayout.CENTER); - warning_dialog.setResizable(false); - }//end guiInit - -/* -// Main -//////////////////////////////////// - public static void main(String[] args) throws Exception{ - Frame f = new Frame("Test for SocksDialog"); - f.add("Center", new Label("Fill the Dialog")); - SocksDialog socksdialog = new SocksDialog(f); - f.pack(); - f.show(); - f.addWindowListener(socksdialog); - CProxy p = socksdialog.getProxy(); - System.out.println("Selected: "+p); - } -*/ - -}//end class
--- a/src/net/sourceforge/jsocks/server/Ident.java Fri Aug 01 11:23:10 2014 -0700 +++ b/src/net/sourceforge/jsocks/server/Ident.java Fri Aug 01 11:26:27 2014 -0700 @@ -1,4 +1,4 @@ -package socks.server; +package net.sourceforge.jsocks.server; import net.sourceforge.jsocks.*; import java.net.*; import java.io.*;
--- a/src/net/sourceforge/jsocks/server/IdentAuthenticator.java Fri Aug 01 11:23:10 2014 -0700 +++ b/src/net/sourceforge/jsocks/server/IdentAuthenticator.java Fri Aug 01 11:26:27 2014 -0700 @@ -1,4 +1,4 @@ -package socks.server; +package net.sourceforge.jsocks.server; import net.sourceforge.jsocks.InetRange; import net.sourceforge.jsocks.ProxyMessage; import java.util.Hashtable;
--- a/src/net/sourceforge/jsocks/server/ServerAuthenticator.java Fri Aug 01 11:23:10 2014 -0700 +++ b/src/net/sourceforge/jsocks/server/ServerAuthenticator.java Fri Aug 01 11:26:27 2014 -0700 @@ -1,4 +1,4 @@ -package socks.server; +package net.sourceforge.jsocks.server; import java.io.IOException; import java.io.InputStream;
--- a/src/net/sourceforge/jsocks/server/ServerAuthenticatorNone.java Fri Aug 01 11:23:10 2014 -0700 +++ b/src/net/sourceforge/jsocks/server/ServerAuthenticatorNone.java Fri Aug 01 11:26:27 2014 -0700 @@ -1,4 +1,4 @@ -package socks.server; +package net.sourceforge.jsocks.server; import net.sourceforge.jsocks.ProxyMessage; import net.sourceforge.jsocks.UDPEncapsulation;
--- a/src/net/sourceforge/jsocks/server/UserPasswordAuthenticator.java Fri Aug 01 11:23:10 2014 -0700 +++ b/src/net/sourceforge/jsocks/server/UserPasswordAuthenticator.java Fri Aug 01 11:26:27 2014 -0700 @@ -1,4 +1,4 @@ -package socks.server; +package net.sourceforge.jsocks.server; import net.sourceforge.jsocks.ProxyMessage; import java.io.IOException;
--- a/src/net/sourceforge/jsocks/server/UserValidation.java Fri Aug 01 11:23:10 2014 -0700 +++ b/src/net/sourceforge/jsocks/server/UserValidation.java Fri Aug 01 11:26:27 2014 -0700 @@ -1,4 +1,4 @@ -package socks.server; +package net.sourceforge.jsocks.server; /** Interface which provides for user validation, based on user name