Add global proxy config. Add support for the global proxy config in protocols like ICQ/AIM and Jabber.

cusax-fix
Damian Minkov 16 years ago
parent 96fe4b483e
commit 67106df9d3

@ -729,6 +729,11 @@
<!--sysproperty key="net.java.sip.communicator.SC_HOME_DIR_LOCATION"
value="${user.home}/schome"/-->
<!--sysproperty key="smack.debugEnabled"
value="true"/>
<sysproperty key="smack.debuggerClass"
value="org.jivesoftware.smack.debugger.ConsoleDebugger"/-->
<!-- Setting properties necessary for dependencies on native libs.-->
<sysproperty key="java.library.path"
path="${ld.library.path}:${path}:${dyld.library.path}"/>
@ -885,7 +890,7 @@
bundle-contacteventhandler,bundle-plugin-contactinfo,
bundle-plugin-accountinfo,bundle-plugin-chatalerter,
bundle-plugin-autoaway, bundle-keybindings,
bundle-plugin-keybindingChooser,
bundle-plugin-keybindingChooser,bundle-plugin-globalproxyconfig,
bundle-jfontchooserlib,
bundle-updatecheckplugin,
bundle-dict,bundle-plugin-dictaccregwizz,
@ -2290,6 +2295,16 @@ org.apache.http.util"/>
</jar>
</target>
<!-- BUNDLE-PLUGIN-GLOBALPROXYCONFIG -->
<target name="bundle-plugin-globalproxyconfig">
<!-- Creates a bundle for the global proxy configuration plugin.-->
<jar compress="false" destfile="${bundles.dest}/globalproxyconfig.jar"
manifest="${src}/net/java/sip/communicator/plugin/globalproxyconfig/globalproxyconfig.manifest.mf">
<zipfileset dir="${dest}/net/java/sip/communicator/plugin/globalproxyconfig"
prefix="net/java/sip/communicator/plugin/globalproxyconfig"/>
</jar>
</target>
<!-- BUNDLE-PROTOCOL -->
<target name="bundle-contactsource">
<!-- Creates a bundle containing the contact source interfaces.-->

@ -128,7 +128,8 @@ felix.auto.start.67= \
reference:file:sc-bundles/generalconfig.jar \
reference:file:sc-bundles/dictaccregwizz.jar \
reference:file:sc-bundles/otr.jar \
reference:file:sc-bundles/facebookaccregwizz.jar
reference:file:sc-bundles/facebookaccregwizz.jar \
reference:file:sc-bundles/globalproxyconfig.jar
#level 68 is for profiler, don't use it or change the build.xml file accordingly

@ -23,6 +23,7 @@ Export-Package: org.jivesoftware.smack,
org.jivesoftware.smackx,
org.jivesoftware.smackx.muc,
org.jivesoftware.smackx.packet,
org.jivesoftware.smack.proxy,
org.jivesoftware.smackx.jingle,
org.jivesoftware.smackx.jingle.nat,
org.jivesoftware.smackx.jingle.media,

@ -458,3 +458,6 @@ plugin.otr.MENU_ITEM_ICON_16x16=resources/images/plugin/otr/otr_menu_icon.png
plugin.otr.configform.ICON=resources/images/plugin/otr/otr_config_icon.png
impl.media.DESKTOP_STREAMING_ICON=resources/images/impl/media/desktopStreaming.png
#Global proxy config form
plugin.globalproxy.PLUGIN_ICON=resources/images/plugin/globalproxyconfig/configureIcon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

@ -421,9 +421,9 @@ service.gui.DECEMBER=Dec
service.gui.ALWAYS_TRUST=Always trust this certificate
service.gui.CERT_DIALOG_TITLE=Verify Certificate
service.gui.CERT_DIALOG_DESCRIPTION_TXT=\nCan''t verify identity of server when \
connecting to {0}:{1}.\n\n\
A certificate is not trusted, which means that the server''s \
service.gui.CERT_DIALOG_DESCRIPTION_TXT=\n{0} can''t verify the identity of the server when \
connecting to {1}:{2}.\n\n\
The certificate is not trusted, which means that the server''s \
identity cannot be automatically verified. \
Do you want to continue connecting?\n\n\
For more information, click "Show Certificate".
@ -481,12 +481,6 @@ plugin.aimaccregwizz.USERNAME_AND_PASSWORD=Screen Name and Password
plugin.aimaccregwizz.REGISTER_NEW_ACCOUNT=Register new account
plugin.aimaccregwizz.REGISTER_NEW_ACCOUNT_TEXT=In case you don't have an AIM account, click on this button to create a new one.
plugin.aimaccregwizz.OVERRIDE_SERVER_DEFAULT_OPTIONS=Override server default options
plugin.aimaccregwizz.ADVANCED_OPTIONS=Advanced Options
plugin.aimaccregwizz.PROXY=Proxy
plugin.aimaccregwizz.PROXY_PORT=Proxy port
plugin.aimaccregwizz.PROXY_TYPE=Proxy type
plugin.aimaccregwizz.PROXY_USERNAME=Proxy username
plugin.aimaccregwizz.PROXY_PASSWORD=Proxy password
# branding
plugin.branding.ABOUT_WINDOW_TITLE=About {0}
@ -578,11 +572,6 @@ plugin.icqaccregwizz.PROTOCOL_DESCRIPTION=The AOL ICQ service protocol
plugin.icqaccregwizz.USERNAME=ICQ Number:
plugin.icqaccregwizz.REGISTER_NEW_ACCOUNT_TEXT=In case you don't have an ICQ account, click on this button to create a new one.
plugin.icqaccregwizz.REGISTER_NEW_ACCOUNT=Register new account
plugin.icqaccregwizz.PROXY=Proxy
plugin.icqaccregwizz.PROXY_PORT=Proxy port
plugin.icqaccregwizz.PROXY_USERNAME=Proxy username
plugin.icqaccregwizz.PROXY_PASSWORD=Proxy password
plugin.icqaccregwizz.PROXY_TYPE=Proxy type
# irc accregwizz
plugin.ircaccregwizz.PROTOCOL_NAME=IRC
@ -877,3 +866,15 @@ plugin.otr.activator.unverifiedsessionstared=<b>Unverified</b> private conversat
plugin.otr.activator.sessionstared=Private conversation with {0} started.
plugin.otr.activator.sessionfinished={0} has ended his/her private conversation with you; you should do the same.
plugin.otr.activator.sessionlost=Private conversation with {0} lost.
# global proxy plugin
plugin.globalproxy.GLOBAL_PROXY_CONFIG=Global Proxy Configuration
plugin.globalproxy.PROXY_TYPE=Proxy Type
plugin.globalproxy.PROXY_ADDRESS=Proxy Server
plugin.globalproxy.PROXY_PORT=Proxy port
plugin.globalproxy.PROXY_USERNAME=Proxy username
plugin.globalproxy.PROXY_PASSWORD=Proxy password
plugin.globalproxy.DESCRIPTION={0} will use the above proxy \
settings for all networks you connect or reconnect to from now on. \n\
Proxy support is currently experimental and only works with some protocols like \
Jabber, AIM, and ICQ. Others will follow.

@ -143,8 +143,13 @@ private void init()
this.getContentPane().add(imgLabel, BorderLayout.WEST);
String descriptionTxt = GuiActivator.getResources()
.getI18NString("service.gui.CERT_DIALOG_DESCRIPTION_TXT",
new String[]{host, String.valueOf(port)});
.getI18NString(
"service.gui.CERT_DIALOG_DESCRIPTION_TXT",
new String[]{
GuiActivator.getResources().getSettingsString(
"service.gui.APPLICATION_NAME"),
host,
String.valueOf(port)});
JTextArea descriptionLabel = new JTextArea();
descriptionLabel.setEditable(false);

@ -310,18 +310,23 @@ private void connectAndLogin(SecurityAuthority authority, int reasonCode)
aimSession = session.openAimSession(
new Screenname(getAccountID().getUserID()));
String proxyAddress =
getAccountID().getAccountPropertyString(
ProtocolProviderFactory.PROXY_ADDRESS);
if(proxyAddress != null && proxyAddress.length() > 0)
String globalProxyType =
IcqActivator.getConfigurationService()
.getString(ProxyInfo.CONNECTON_PROXY_TYPE_PROPERTY_NAME);
if(globalProxyType != null &&
!globalProxyType.equals(ProxyInfo.ProxyType.NONE.name()))
{
String proxyPortStr =
getAccountID().getAccountPropertyString(
ProtocolProviderFactory.PROXY_PORT);
String globalProxyAddress =
IcqActivator.getConfigurationService().getString(
ProxyInfo.CONNECTON_PROXY_ADDRESS_PROPERTY_NAME);
String globalProxyPortStr =
IcqActivator.getConfigurationService().getString(
ProxyInfo.CONNECTON_PROXY_PORT_PROPERTY_NAME);
int proxyPort;
try
{
proxyPort = Integer.parseInt(proxyPortStr);
proxyPort = Integer.parseInt(globalProxyPortStr);
}
catch (NumberFormatException ex)
{
@ -329,22 +334,21 @@ private void connectAndLogin(SecurityAuthority authority, int reasonCode)
OperationFailedException.INVALID_ACCOUNT_PROPERTIES, ex);
}
String proxyType =
getAccountID().getAccountPropertyString(
ProtocolProviderFactory.PROXY_TYPE);
if(proxyType == null)
throw new OperationFailedException("Missing proxy type",
String globalProxyUsername =
IcqActivator.getConfigurationService().getString(
ProxyInfo.CONNECTON_PROXY_USERNAME_PROPERTY_NAME);
String globalProxyPassword =
IcqActivator.getConfigurationService().getString(
ProxyInfo.CONNECTON_PROXY_PASSWORD_PROPERTY_NAME);
if(globalProxyAddress == null ||
globalProxyAddress.length() <= 0)
{
throw new OperationFailedException(
"Missing Proxy Address",
OperationFailedException.INVALID_ACCOUNT_PROPERTIES);
}
String proxyUsername =
getAccountID().getAccountPropertyString(
ProtocolProviderFactory.PROXY_USERNAME);
String proxyPassword =
getAccountID().getAccountPropertyString(
ProtocolProviderFactory.PROXY_PASSWORD);
if(proxyType.equals("http"))
if(globalProxyType.equals(ProxyInfo.ProxyType.HTTP.name()))
{
// If we are using http proxy, sometimes
// default port 5190 is forbidden, so force
@ -356,9 +360,9 @@ private void connectAndLogin(SecurityAuthority authority, int reasonCode)
connProps.setLoginHost("login.icq.com");
connProps.setLoginPort(443);
aimConnection = aimSession.openConnection(connProps);
aimConnection.setProxy(
AimProxyInfo.forHttp(proxyAddress, proxyPort,
proxyUsername, proxyPassword));
aimConnection.setProxy(AimProxyInfo.forHttp(
globalProxyAddress, proxyPort,
globalProxyUsername, globalProxyPassword));
}
else
{
@ -367,14 +371,20 @@ private void connectAndLogin(SecurityAuthority authority, int reasonCode)
new Screenname(getAccountID().getUserID())
, password));
if(proxyType.equals("socks4"))
aimConnection.setProxy(
AimProxyInfo.forSocks4(proxyAddress, proxyPort,
proxyUsername));
else if(proxyType.equals("socks5"))
aimConnection.setProxy(
AimProxyInfo.forSocks5(proxyAddress, proxyPort,
proxyUsername, proxyPassword));
if(globalProxyType.equals(
ProxyInfo.ProxyType.SOCKS4.name()))
{
aimConnection.setProxy(AimProxyInfo.forSocks4(
globalProxyAddress, proxyPort,
globalProxyUsername));
}
else if(globalProxyType.equals(
ProxyInfo.ProxyType.SOCKS5.name()))
{
aimConnection.setProxy(AimProxyInfo.forSocks5(
globalProxyAddress, proxyPort,
globalProxyUsername, globalProxyPassword));
}
}
}
else

@ -339,11 +339,88 @@ private synchronized void connectAndLogin(SecurityAuthority authority,
try
{
//Getting global proxy information from configuration files
org.jivesoftware.smack.proxy.ProxyInfo proxy = null;
String globalProxyType =
JabberActivator.getConfigurationService()
.getString(ProxyInfo.CONNECTON_PROXY_TYPE_PROPERTY_NAME);
if(globalProxyType == null ||
globalProxyType.equals(ProxyInfo.ProxyType.NONE.name()))
{
proxy = org.jivesoftware.smack.proxy.ProxyInfo
.forNoProxy();
}
else
{
String globalProxyAddress =
JabberActivator.getConfigurationService().getString(
ProxyInfo.CONNECTON_PROXY_ADDRESS_PROPERTY_NAME);
String globalProxyPortStr =
JabberActivator.getConfigurationService().getString(
ProxyInfo.CONNECTON_PROXY_PORT_PROPERTY_NAME);
int globalProxyPort;
try
{
globalProxyPort = Integer.parseInt(
globalProxyPortStr);
}
catch(NumberFormatException ex)
{
throw new OperationFailedException("Wrong port",
OperationFailedException.INVALID_ACCOUNT_PROPERTIES,
ex);
}
String globalProxyUsername =
JabberActivator.getConfigurationService().getString(
ProxyInfo.CONNECTON_PROXY_USERNAME_PROPERTY_NAME);
String globalProxyPassword =
JabberActivator.getConfigurationService().getString(
ProxyInfo.CONNECTON_PROXY_PASSWORD_PROPERTY_NAME);
if(globalProxyAddress == null ||
globalProxyAddress.length() <= 0)
{
throw new OperationFailedException(
"Missing Proxy Address",
OperationFailedException.INVALID_ACCOUNT_PROPERTIES);
}
if(globalProxyType.equals(
ProxyInfo.ProxyType.HTTP.name()))
{
proxy = org.jivesoftware.smack.proxy.ProxyInfo
.forHttpProxy(
globalProxyAddress,
globalProxyPort,
globalProxyUsername,
globalProxyPassword);
}
else if(globalProxyType.equals(
ProxyInfo.ProxyType.SOCKS4.name()))
{
proxy = org.jivesoftware.smack.proxy.ProxyInfo
.forSocks4Proxy(
globalProxyAddress,
globalProxyPort,
globalProxyUsername,
globalProxyPassword);
}
else if(globalProxyType.equals(
ProxyInfo.ProxyType.SOCKS5.name()))
{
proxy = org.jivesoftware.smack.proxy.ProxyInfo
.forSocks5Proxy(
globalProxyAddress,
globalProxyPort,
globalProxyUsername,
globalProxyPassword);
}
}
ConnectionConfiguration confConn =
new ConnectionConfiguration(
serverAddress,
Integer.parseInt(serverPort),
serviceName
serviceName,
proxy
);
confConn.setReconnectionAllowed(false);
connection = new XMPPConnection(confConn);

@ -14,6 +14,7 @@ Import-Package: org.osgi.framework,
org.jivesoftware.smackx,
org.jivesoftware.smackx.muc,
org.jivesoftware.smackx.packet,
org.jivesoftware.smack.proxy,
org.jivesoftware.smackx.jingle,
org.jivesoftware.smackx.jingle.listeners,
org.jivesoftware.smackx.jingle.media,

@ -35,16 +35,6 @@ public class AimAccountRegistration
*/
private boolean rememberPassword = true;
private String proxyPort;
private String proxy;
private String proxyType = "http";
private String proxyUsername;
private String proxyPassword;
/**
* Returns the password of the aim registration account.
* @return the password of the aim registration account.
@ -104,94 +94,4 @@ public void setUin(String uin)
{
this.uin = uin;
}
/**
* Returns the proxy that will be used for this aim account.
* @return the proxy that will be used for this aim account.
*/
public String getProxy()
{
return proxy;
}
/**
* Sets the proxy for this aim account.
* @param proxy the proxy for this aim account.
*/
public void setProxy(String proxy)
{
this.proxy = proxy;
}
/**
* Returns the proxy port that will be used for this aim account.
* @return the proxy port that will be used for this aim account.
*/
public String getProxyPort()
{
return proxyPort;
}
/**
* Sets the proxy port for this aim account.
* @param proxyPort the proxy port for this aim account.
*/
public void setProxyPort(String proxyPort)
{
this.proxyPort = proxyPort;
}
/**
* Returns the proxy type that will be used for this aim account.
* @return the proxy type that will be used for this aim account.
*/
public String getProxyType()
{
return proxyType;
}
/**
* Sets the proxy type for this aim account.
* @param proxyType the proxy type for this aim account
*/
public void setProxyType(String proxyType)
{
this.proxyType = proxyType;
}
/**
* Returns the proxy password of the aim registration account.
* @return the proxy password of the aim registration account.
*/
public String getProxyPassword()
{
return proxyPassword;
}
/**
* Sets the proxy password of the aim registration account.
* @param password the proxy password of the aim registration account.
*/
public void setProxyPassword(String password)
{
this.proxyPassword = password;
}
/**
* Returns the proxy username of the aim registration account.
* @return the proxy username of the aim registration account.
*/
public String getProxyUsername()
{
return proxyUsername;
}
/**
* Sets the proxy username of the aim registration account.
* @param username the proxy username of the aim registration account
*/
public void setProxyUsername(String username)
{
this.proxyUsername = username;
}
}

@ -24,6 +24,9 @@
public class AimAccountRegistrationWizard
implements AccountRegistrationWizard
{
/**
* The logger.
*/
private final Logger logger
= Logger.getLogger(AimAccountRegistrationWizard.class);
@ -116,34 +119,14 @@ public Iterator<Map.Entry<String, String>> getSummary()
summaryTable.put(Resources.getString("service.gui.REMEMBER_PASSWORD"),
Boolean.toString(registration.isRememberPassword()));
if (registration.getProxy() != null)
summaryTable.put(Resources.getString("plugin.aimaccregwizz.PROXY"),
registration.getProxy());
if (registration.getProxyPort() != null)
summaryTable.put(Resources.getString("plugin.aimaccregwizz.PROXY"),
registration.getProxyPort());
if (registration.getProxyType() != null)
summaryTable.put(
Resources.getString("plugin.aimaccregwizz.PROXY_TYPE"),
registration.getProxyType());
if (registration.getProxyPort() != null)
summaryTable.put(
Resources.getString("plugin.aimaccregwizz.PROXY_USERNAME"),
registration.getProxyPort());
if (registration.getProxyType() != null)
summaryTable.put(
Resources.getString("plugin.aimaccregwizz.PROXY_PASSWORD"),
registration.getProxyType());
return summaryTable.entrySet().iterator();
}
/**
* Installs the account created through this wizard.
* @return the <tt>ProtocolProviderService</tt> for the newly created
* account.
* @throws OperationFailedException
*/
public ProtocolProviderService signin()
throws OperationFailedException
@ -159,6 +142,8 @@ public ProtocolProviderService signin()
*
* @param userName the user name to sign in with
* @param password the password to sign in with
* @return the <tt>ProtocolProviderService</tt> for the new account.
* @throws OperationFailedException
*/
public ProtocolProviderService signin(String userName, String password)
throws OperationFailedException
@ -177,6 +162,7 @@ public ProtocolProviderService signin(String userName, String password)
* @param user the user identifier
* @param passwd the password
* @return the <tt>ProtocolProviderService</tt> for the new account.
* @throws OperationFailedException
*/
public ProtocolProviderService installAccount(
ProtocolProviderFactory providerFactory, String user, String passwd)
@ -190,31 +176,6 @@ public ProtocolProviderService installAccount(
accountProperties.put(ProtocolProviderFactory.PASSWORD, passwd);
}
if (registration.getProxy() != null
&& registration.getProxy().length() != 0)
accountProperties.put(ProtocolProviderFactory.PROXY_ADDRESS,
registration.getProxy());
if (registration.getProxyPort() != null
&& registration.getProxyPort().length() != 0)
accountProperties.put(ProtocolProviderFactory.PROXY_PORT,
registration.getProxyPort());
if (registration.getProxyType() != null
&& registration.getProxyType().length() != 0)
accountProperties.put(ProtocolProviderFactory.PROXY_TYPE,
registration.getProxyType());
if (registration.getProxyUsername() != null
&& registration.getProxyUsername().length() != 0)
accountProperties.put(ProtocolProviderFactory.PROXY_USERNAME,
registration.getProxyUsername());
if (registration.getProxyPassword() != null
&& registration.getProxyPassword().length() != 0)
accountProperties.put(ProtocolProviderFactory.PROXY_PASSWORD,
registration.getProxyPassword());
if (isModification)
{
providerFactory.modifyAccount( protocolProvider,

@ -38,15 +38,6 @@ public class FirstWizardPage
private JPanel valuesPanel = new TransparentPanel();
private JPanel advancedOpPanel =
new TransparentPanel(new BorderLayout(10, 10));
private JPanel labelsAdvOpPanel =
new TransparentPanel(new GridLayout(0, 1, 10, 10));
private JPanel valuesAdvOpPanel =
new TransparentPanel(new GridLayout(0, 1, 10, 10));
private JLabel uinLabel = new JLabel(
Resources.getString("plugin.aimaccregwizz.USERNAME"));
@ -78,32 +69,6 @@ public class FirstWizardPage
new JButton(Resources.getString(
"plugin.aimaccregwizz.REGISTER_NEW_ACCOUNT"));
private JLabel proxyLabel = new JLabel(
Resources.getString("plugin.aimaccregwizz.PROXY"));
private JLabel proxyPortLabel =
new JLabel(Resources.getString("plugin.aimaccregwizz.PROXY"));
private JLabel proxyUsernameLabel =
new JLabel(Resources.getString("plugin.aimaccregwizz.PROXY_USERNAME"));
private JLabel proxyPasswordLabel =
new JLabel(Resources.getString("plugin.aimaccregwizz.PROXY_PASSWORD"));
private JLabel proxyTypeLabel =
new JLabel(Resources.getString("plugin.aimaccregwizz.PROXY_TYPE"));
private JTextField proxyField = new JTextField();
private JTextField proxyPortField = new JTextField();
private JTextField proxyUsernameField = new JTextField();
private JPasswordField proxyPassField = new JPasswordField();
private JComboBox proxyTypeCombo = new JComboBox(new Object[]
{ "http", "socks5", "socks4" });
private JPanel mainPanel = new TransparentPanel();
private Object nextPageIdentifier = WizardPage.SUMMARY_PAGE_IDENTIFIER;
@ -178,28 +143,6 @@ private void init()
mainPanel.add(uinPassPanel);
proxyTypeCombo.setSelectedItem(wizard.getRegistration().getProxyType());
labelsAdvOpPanel.add(proxyLabel);
labelsAdvOpPanel.add(proxyPortLabel);
labelsAdvOpPanel.add(proxyTypeLabel);
labelsAdvOpPanel.add(proxyUsernameLabel);
labelsAdvOpPanel.add(proxyPasswordLabel);
valuesAdvOpPanel.add(proxyField);
valuesAdvOpPanel.add(proxyPortField);
valuesAdvOpPanel.add(proxyTypeCombo);
valuesAdvOpPanel.add(proxyUsernameField);
valuesAdvOpPanel.add(proxyPassField);
advancedOpPanel.add(labelsAdvOpPanel, BorderLayout.WEST);
advancedOpPanel.add(valuesAdvOpPanel, BorderLayout.CENTER);
advancedOpPanel.setBorder(BorderFactory.createTitledBorder(Resources
.getString("plugin.aimaccregwizz.ADVANCED_OPTIONS")));
mainPanel.add(advancedOpPanel);
this.buttonPanel.add(registerButton);
this.registerArea.setEditable(false);
@ -280,18 +223,6 @@ public void commitPage()
registration.setPassword(new String(passField.getPassword()));
registration.setRememberPassword(rememberPassBox.isSelected());
registration.setProxy(proxyField.getText());
registration.setProxyPort(proxyPortField.getText());
registration.setProxyUsername(proxyUsernameField.getText());
if (proxyTypeCombo.getSelectedItem() != null)
registration.setProxyType(proxyTypeCombo.getSelectedItem()
.toString());
if (proxyPassField.getPassword() != null)
registration.setProxyPassword(new String(proxyPassField
.getPassword()));
nextPageIdentifier = SUMMARY_PAGE_IDENTIFIER;
isCommitted = true;
@ -373,32 +304,6 @@ public void loadAccount(ProtocolProviderService protocolProvider)
this.rememberPassBox.setSelected(
wizard.getRegistration().isRememberPassword());
}
String proxyAddress =
accountID
.getAccountPropertyString(ProtocolProviderFactory.PROXY_ADDRESS);
String proxyPort =
accountID
.getAccountPropertyString(ProtocolProviderFactory.PROXY_PORT);
String proxyType =
accountID
.getAccountPropertyString(ProtocolProviderFactory.PROXY_TYPE);
String proxyUsername =
accountID
.getAccountPropertyString(ProtocolProviderFactory.PROXY_USERNAME);
String proxyPassword =
accountID
.getAccountPropertyString(ProtocolProviderFactory.PROXY_PASSWORD);
proxyField.setText(proxyAddress);
proxyPortField.setText(proxyPort);
proxyTypeCombo.setSelectedItem(proxyType);
proxyUsernameField.setText(proxyUsername);
proxyPassField.setText(proxyPassword);
}
public void actionPerformed(ActionEvent e)
@ -406,11 +311,19 @@ public void actionPerformed(ActionEvent e)
wizard.webSignup();
}
/**
* The simple form for this wizard.
* @return
*/
public Object getSimpleForm()
{
return uinPassPanel;
}
/**
* Whether is committed.
* @return
*/
public boolean isCommitted()
{
return isCommitted;

@ -0,0 +1,279 @@
/*
* SIP Communicator, the OpenSource Java VoIP and Instant Messaging client.
*
* Distributable under LGPL license. See terms of license at gnu.org.
*/
package net.java.sip.communicator.plugin.globalproxyconfig;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import net.java.sip.communicator.service.configuration.*;
import net.java.sip.communicator.service.protocol.*;
import net.java.sip.communicator.util.swing.*;
/**
* Implementation of the configuration form.
*
* @author Damian Minkov
*/
public class GlobalProxyConfigForm
extends TransparentPanel
implements ActionListener
{
/**
* Hold the available proxy types.
*/
private JComboBox typeCombo;
/**
* The proxy server address.
*/
private JTextField serverAddressField = new JTextField();
/**
* The proxy server port.
*/
private JTextField portField = new JTextField();
/**
* The username if any.
*/
private JTextField usernameField = new JTextField();
/**
* The password for accessing proxy, if any.
*/
private JPasswordField passwordField = new JPasswordField();
/**
* Creates the form.
*/
public GlobalProxyConfigForm()
{
super(new BorderLayout());
init();
loadValues();
}
/**
* Creating the configuration form
*/
private void init()
{
this.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
TransparentPanel centerPanel = new TransparentPanel(new GridBagLayout());
GridBagConstraints constraints = new GridBagConstraints();
constraints.fill = GridBagConstraints.HORIZONTAL;
constraints.anchor = GridBagConstraints.NORTHWEST;
constraints.insets = new Insets(5,10,0,0);
constraints.gridx = 0;
constraints.weightx = 0;
constraints.weighty = 0;
constraints.gridy = 0;
centerPanel.add(new JLabel(
Resources.getString("plugin.globalproxy.PROXY_TYPE")),
constraints);
constraints.gridy = 1;
centerPanel.add(new JLabel(
Resources.getString("plugin.globalproxy.PROXY_ADDRESS")),
constraints);
constraints.gridy = 2;
centerPanel.add(new JLabel(
Resources.getString("plugin.globalproxy.PROXY_USERNAME")),
constraints);
constraints.gridy = 3;
centerPanel.add(new JLabel(
Resources.getString("plugin.globalproxy.PROXY_PASSWORD")),
constraints);
constraints.weightx = 1;
constraints.gridx = 1;
constraints.gridy = 0;
constraints.gridwidth = 3;
typeCombo = new JComboBox(ProxyInfo.ProxyType.values());
typeCombo.addActionListener(this);
typeCombo.setEditable(false);
centerPanel.add(typeCombo, constraints);
constraints.gridy = 1;
constraints.gridwidth = 1;
centerPanel.add(serverAddressField, constraints);
constraints.gridx = 2;
constraints.weightx = 0;
centerPanel.add(
new JLabel(
Resources.getString("plugin.globalproxy.PROXY_PORT")),
constraints);
constraints.gridx = 3;
constraints.weightx = 1;
centerPanel.add(portField, constraints);
constraints.gridx = 1;
constraints.gridwidth = 3;
constraints.gridy = 2;
centerPanel.add(usernameField, constraints);
constraints.gridy = 3;
centerPanel.add(passwordField, constraints);
constraints.gridx = 0;
constraints.gridy = 4;
constraints.gridwidth = 4;
constraints.gridheight = 2;
constraints.insets = new Insets(20,20,20,20);
JTextPane pane = new JTextPane();
pane.setEditable(false);
pane.setOpaque(false);
pane.setText(Resources.getResources().getI18NString(
"plugin.globalproxy.DESCRIPTION",
new String[]{Resources.getResources().getSettingsString(
"service.gui.APPLICATION_NAME")}));
centerPanel.add(
pane,
constraints);
add(centerPanel, BorderLayout.NORTH);
TransparentPanel p = new TransparentPanel(new FlowLayout(FlowLayout.RIGHT));
JButton saveButton = new JButton(
Resources.getString("service.gui.SAVE"));
saveButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
saveValues();
}
});
p.add(saveButton);
add(p, BorderLayout.SOUTH);
}
/**
* Loading the values stored onto configuration form
*/
private void loadValues()
{
ConfigurationService configService =
GlobalProxyPluginActivator.getConfigurationService();
try
{
String type = configService.getString(
ProxyInfo.CONNECTON_PROXY_TYPE_PROPERTY_NAME);
if(type != null)
typeCombo.setSelectedItem(ProxyInfo.ProxyType.valueOf(type));
} catch (IllegalArgumentException e)
{
// wrong proxy type stored in configuration
}
String serverAddress = configService.getString(
ProxyInfo.CONNECTON_PROXY_ADDRESS_PROPERTY_NAME);
if(serverAddress != null)
serverAddressField.setText(serverAddress);
String port = configService.getString(
ProxyInfo.CONNECTON_PROXY_PORT_PROPERTY_NAME);
if(port != null)
portField.setText(port);
String username = configService.getString(
ProxyInfo.CONNECTON_PROXY_USERNAME_PROPERTY_NAME);
if(username != null)
usernameField.setText(username);
String password = configService.getString(
ProxyInfo.CONNECTON_PROXY_USERNAME_PROPERTY_NAME);
if(password != null)
passwordField.setText(password);
if(typeCombo.getSelectedItem().equals(ProxyInfo.ProxyType.NONE))
{
serverAddressField.setEnabled(false);
portField.setEnabled(false);
usernameField.setEnabled(false);
passwordField.setEnabled(false);
}
}
/**
* Function which save values onto configuration file after save button is
* clicked
*/
private void saveValues()
{
ConfigurationService configService =
GlobalProxyPluginActivator.getConfigurationService();
if(typeCombo.getSelectedItem().equals(ProxyInfo.ProxyType.NONE))
{
configService.setProperty(
ProxyInfo.CONNECTON_PROXY_TYPE_PROPERTY_NAME,
ProxyInfo.ProxyType.NONE.name());
configService.removeProperty(
ProxyInfo.CONNECTON_PROXY_ADDRESS_PROPERTY_NAME);
configService.removeProperty(
ProxyInfo.CONNECTON_PROXY_PORT_PROPERTY_NAME);
configService.removeProperty(
ProxyInfo.CONNECTON_PROXY_USERNAME_PROPERTY_NAME);
configService.removeProperty(
ProxyInfo.CONNECTON_PROXY_PASSWORD_PROPERTY_NAME);
return;
}
configService.setProperty(
ProxyInfo.CONNECTON_PROXY_TYPE_PROPERTY_NAME,
((ProxyInfo.ProxyType)typeCombo.getSelectedItem()).name());
String serverAddress = serverAddressField.getText();
if(serverAddress != null && serverAddress.length() > 0)
configService.setProperty(
ProxyInfo.CONNECTON_PROXY_ADDRESS_PROPERTY_NAME, serverAddress);
String port = portField.getText();
if(port != null && port.length() > 0)
configService.setProperty(
ProxyInfo.CONNECTON_PROXY_PORT_PROPERTY_NAME, port);
String username = usernameField.getText();
if(username != null && username.length() > 0)
configService.setProperty(
ProxyInfo.CONNECTON_PROXY_USERNAME_PROPERTY_NAME, username);
char[] password = passwordField.getPassword();
if(password.length > 0)
configService.setProperty(
ProxyInfo.CONNECTON_PROXY_PASSWORD_PROPERTY_NAME,
new String(password));
}
/**
* A new type was selected in the type combo box.
* @param e the event
*/
public void actionPerformed(ActionEvent e)
{
if(typeCombo.getSelectedItem().equals(ProxyInfo.ProxyType.NONE))
{
serverAddressField.setEnabled(false);
portField.setEnabled(false);
usernameField.setEnabled(false);
passwordField.setEnabled(false);
}
else
{
serverAddressField.setEnabled(true);
portField.setEnabled(true);
usernameField.setEnabled(true);
passwordField.setEnabled(true);
}
}
}

@ -0,0 +1,90 @@
/*
* SIP Communicator, the OpenSource Java VoIP and Instant Messaging client.
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package net.java.sip.communicator.plugin.globalproxyconfig;
import net.java.sip.communicator.service.configuration.*;
import net.java.sip.communicator.service.gui.*;
import net.java.sip.communicator.util.*;
import org.osgi.framework.*;
/**
* Register the configuration form.
*
* @author Atul Aggarwal
* @author Damian Minkov
*/
public class GlobalProxyPluginActivator implements BundleActivator
{
/**
* Our logger.
*/
private Logger logger = Logger.getLogger(GlobalProxyPluginActivator.class);
/**
* The Configuration service.
*/
private static ConfigurationService configService;
/**
* The context of this bundle.
*/
protected static BundleContext bundleContext;
/**
* Starts the bundle.
* @param bc the context
* @throws Exception
*/
public void start(BundleContext bc) throws Exception
{
bundleContext = bc;
GlobalProxyConfigForm proxyConfigForm = new GlobalProxyConfigForm();
bundleContext.registerService(
ConfigurationForm.class.getName(),
new LazyConfigurationForm(
GlobalProxyConfigForm.class.getName(),
getClass().getClassLoader(),
"plugin.globalproxy.PLUGIN_ICON",
"plugin.globalproxy.GLOBAL_PROXY_CONFIG",
51),
null);
logger.info("GLOBAL PROXY CONFIGURATION PLUGIN... [REGISTERED]");
}
/**
* Stops it.
* @param bc the context.
* @throws Exception
*/
public void stop(BundleContext bc) throws Exception
{
}
/**
* Returns the <tt>ConfigurationService</tt> obtained from the bundle
* context.
* @return the <tt>ConfigurationService</tt> obtained from the bundle
* context
*/
public static ConfigurationService getConfigurationService()
{
if(configService == null)
{
ServiceReference configReference = bundleContext
.getServiceReference(ConfigurationService.class.getName());
configService = (ConfigurationService) bundleContext
.getService(configReference);
}
return configService;
}
}

@ -0,0 +1,75 @@
/*
* SIP Communicator, the OpenSource Java VoIP and Instant Messaging client.
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package net.java.sip.communicator.plugin.globalproxyconfig;
import net.java.sip.communicator.service.resources.*;
import net.java.sip.communicator.util.*;
import org.osgi.framework.*;
/**
* The <tt>Resources</tt> class manages the access to the internationalization
* properties files and the image resources used in this plugin.
*
* @author Atul Aggarwal
* @author Damian Minkov
*/
public class Resources
{
/**
* Our logger.
*/
private static Logger log = Logger.getLogger(Resources.class);
/**
* The resource management service.
*/
private static ResourceManagementService resourcesService;
/**
* Returns an internationalized string corresponding to the given key.
* @param key The key of the string.
* @return An internationalized string corresponding to the given key.
*/
public static String getString(String key)
{
return getResources().getI18NString(key);
}
/**
* Returns an application property string corresponding to the given key.
* @param key The key of the string.
* @return A string corresponding to the given key.
*/
public static String getApplicationString(String key)
{
return getResources().getSettingsString(key);
}
/**
* Returns the resource service.
* @return
*/
public static ResourceManagementService getResources()
{
if (resourcesService == null)
{
ServiceReference serviceReference = GlobalProxyPluginActivator.bundleContext
.getServiceReference(ResourceManagementService.class.getName());
if(serviceReference == null)
return null;
resourcesService =
(ResourceManagementService)GlobalProxyPluginActivator.bundleContext
.getService(serviceReference);
}
return resourcesService;
}
}

@ -0,0 +1,26 @@
Bundle-Activator: net.java.sip.communicator.plugin.globalproxyconfig.GlobalProxyPluginActivator
Bundle-Name: Global Proxy Config Plugin
Bundle-Description: A plugin to configure global proxy for sip communicator
Bundle-Vendor: sip-communicator.org
Bundle-Version: 0.0.1
Import-Package: org.osgi.framework,
net.java.sip.communicator.util,
net.java.sip.communicator.util.swing,
net.java.sip.communicator.service.gui,
net.java.sip.communicator.service.protocol,
net.java.sip.communicator.service.resources,
net.java.sip.communicator.service.configuration,
javax.swing,
javax.swing.event,
javax.swing.table,
javax.swing.text,
javax.swing.text.html,
javax.accessibility,
javax.swing.plaf,
javax.swing.plaf.metal,
javax.swing.plaf.basic,
javax.imageio,
javax.swing.filechooser,
javax.swing.tree,
javax.swing.undo,
javax.swing.border

@ -36,15 +36,6 @@ public class FirstWizardPage
private JPanel valuesPanel = new TransparentPanel();
private JPanel advancedOpPanel
= new TransparentPanel(new BorderLayout(10, 10));
private JPanel labelsAdvOpPanel
= new TransparentPanel(new GridLayout(0, 1, 10, 10));
private JPanel valuesAdvOpPanel
= new TransparentPanel(new GridLayout(0, 1, 10, 10));
private JLabel uinLabel
= new JLabel(Resources.getString("plugin.icqaccregwizz.USERNAME"));
@ -73,32 +64,6 @@ public class FirstWizardPage
private JButton registerButton = new JButton(
Resources.getString("plugin.icqaccregwizz.REGISTER_NEW_ACCOUNT"));
private JLabel proxyLabel = new JLabel(
Resources.getString("plugin.icqaccregwizz.PROXY"));
private JLabel proxyPortLabel =
new JLabel(Resources.getString("plugin.icqaccregwizz.PROXY_PORT"));
private JLabel proxyUsernameLabel =
new JLabel(Resources.getString("plugin.icqaccregwizz.PROXY_USERNAME"));
private JLabel proxyPasswordLabel =
new JLabel(Resources.getString("plugin.icqaccregwizz.PROXY_PASSWORD"));
private JLabel proxyTypeLabel =
new JLabel(Resources.getString("plugin.icqaccregwizz.PROXY_TYPE"));
private JTextField proxyField = new JTextField();
private JTextField proxyPortField = new JTextField();
private JTextField proxyUsernameField = new JTextField();
private JPasswordField proxyPassField = new JPasswordField();
private JComboBox proxyTypeCombo = new JComboBox(new Object[]
{ "http", "socks5", "socks4" });
private JPanel mainPanel = new TransparentPanel();
private Object nextPageIdentifier = WizardPage.SUMMARY_PAGE_IDENTIFIER;
@ -171,28 +136,6 @@ private void init()
mainPanel.add(uinPassPanel);
proxyTypeCombo.setSelectedItem(wizard.getRegistration().getProxyType());
labelsAdvOpPanel.add(proxyLabel);
labelsAdvOpPanel.add(proxyPortLabel);
labelsAdvOpPanel.add(proxyTypeLabel);
labelsAdvOpPanel.add(proxyUsernameLabel);
labelsAdvOpPanel.add(proxyPasswordLabel);
valuesAdvOpPanel.add(proxyField);
valuesAdvOpPanel.add(proxyPortField);
valuesAdvOpPanel.add(proxyTypeCombo);
valuesAdvOpPanel.add(proxyUsernameField);
valuesAdvOpPanel.add(proxyPassField);
advancedOpPanel.add(labelsAdvOpPanel, BorderLayout.WEST);
advancedOpPanel.add(valuesAdvOpPanel, BorderLayout.CENTER);
advancedOpPanel.setBorder(BorderFactory.createTitledBorder(Resources
.getString("plugin.aimaccregwizz.ADVANCED_OPTIONS")));
mainPanel.add(advancedOpPanel);
this.buttonPanel.add(registerButton);
this.registerArea.setEditable(false);
@ -275,19 +218,6 @@ public void commitPage()
registration.setPassword(new String(passField.getPassword()));
registration.setRememberPassword(rememberPassBox.isSelected());
registration.setProxy(proxyField.getText());
registration.setProxyPort(proxyPortField.getText());
if (proxyTypeCombo.getSelectedItem() != null)
registration.setProxyType(
proxyTypeCombo.getSelectedItem().toString());
registration.setProxyUsername(proxyUsernameField.getText());
if (proxyPassField.getPassword() != null)
registration.setProxyPassword(
new String(proxyPassField.getPassword()));
nextPageIdentifier = SUMMARY_PAGE_IDENTIFIER;
isCommitted = true;
@ -369,32 +299,6 @@ public void loadAccount(ProtocolProviderService protocolProvider)
this.rememberPassBox.setSelected(true);
}
String proxyAddress =
accountID
.getAccountPropertyString(ProtocolProviderFactory.PROXY_ADDRESS);
String proxyPort =
accountID
.getAccountPropertyString(ProtocolProviderFactory.PROXY_PORT);
String proxyType =
accountID
.getAccountPropertyString(ProtocolProviderFactory.PROXY_TYPE);
String proxyUsername =
accountID
.getAccountPropertyString(ProtocolProviderFactory.PROXY_USERNAME);
String proxyPassword =
accountID
.getAccountPropertyString(ProtocolProviderFactory.PROXY_PASSWORD);
proxyField.setText(proxyAddress);
proxyPortField.setText(proxyPort);
proxyTypeCombo.setSelectedItem(proxyType);
proxyUsernameField.setText(proxyUsername);
proxyPassField.setText(proxyPassword);
}
public void actionPerformed(ActionEvent e)

@ -20,16 +20,6 @@ public class IcqAccountRegistration
private boolean rememberPassword = true;
private String proxyPort;
private String proxy;
private String proxyType = "http";
private String proxyUsername;
private String proxyPassword;
/**
* Returns the password of the icq registration account.
* @return the password of the icq registration account.
@ -78,84 +68,4 @@ public String getUin() {
public void setUin(String uin) {
this.uin = uin;
}
/**
* Returns the proxy that will be used for this icq account.
* @return the proxy that will be used for this icq account.
*/
public String getProxy() {
return proxy;
}
/**
* Sets the proxy for this icq account.
* @param proxy the proxy for this icq account.
*/
public void setProxy(String proxy) {
this.proxy = proxy;
}
/**
* Returns the proxy port that will be used for this icq account.
* @return the proxy port that will be used for this icq account.
*/
public String getProxyPort() {
return proxyPort;
}
/**
* Sets the proxy port for this icq account.
* @param proxyPort the proxy port for this icq account.
*/
public void setProxyPort(String proxyPort) {
this.proxyPort = proxyPort;
}
/**
* Returns the proxy type that will be used for this icq account.
* @return the proxy type that will be used for this icq account.
*/
public String getProxyType() {
return proxyType;
}
/**
* Sets the proxy type for this icq account.
* @param proxyType the proxy type for this icq account
*/
public void setProxyType(String proxyType) {
this.proxyType = proxyType;
}
/**
* Returns the proxy password of the icq registration account.
* @return the proxy password of the icq registration account.
*/
public String getProxyPassword() {
return proxyPassword;
}
/**
* Sets the proxy password of the icq registration account.
* @param password the proxy password of the icq registration account.
*/
public void setProxyPassword(String password) {
this.proxyPassword = password;
}
/**
* Returns the proxy username of the icq registration account.
* @return the proxy username of the icq registration account.
*/
public String getProxyUsername() {
return proxyUsername;
}
/**
* Sets the proxy username of the icq registration account.
* @param username the proxy username of the icq registration account
*/
public void setProxyUsername(String username) {
this.proxyUsername = username;
}
}

@ -24,6 +24,9 @@
public class IcqAccountRegistrationWizard
implements AccountRegistrationWizard
{
/**
* The logger.
*/
private final Logger logger
= Logger.getLogger(IcqAccountRegistrationWizard.class);
@ -115,26 +118,6 @@ public Iterator<Map.Entry<String,String>> getSummary()
summaryTable.put(Resources.getString("service.gui.REMEMBER_PASSWORD"),
Boolean.toString(registration.isRememberPassword()));
if (registration.getProxy() != null)
summaryTable.put(Resources.getString("plugin.icqaccregwizz.PROXY"),
registration.getProxy());
if (registration.getProxyPort() != null)
summaryTable.put(Resources.getString("proxyPort"),
registration.getProxyPort());
if (registration.getProxyType() != null)
summaryTable.put(Resources.getString("proxyType"),
registration.getProxyType());
if (registration.getProxyPort() != null)
summaryTable.put(Resources.getString("proxyUsername"),
registration.getProxyUsername());
if (registration.getProxyType() != null)
summaryTable.put(Resources.getString("proxyPassword"),
registration.getProxyPassword());
return summaryTable.entrySet().iterator();
}
@ -143,6 +126,7 @@ public Iterator<Map.Entry<String,String>> getSummary()
*
* @return the <tt>ProtocolProviderService</tt> for the newly created
* account.
* @throws OperationFailedException
*/
public ProtocolProviderService signin()
throws OperationFailedException
@ -170,6 +154,7 @@ public ProtocolProviderService signin(String userName, String password)
* @param user the user identifier
* @param passwd the password
* @return the <tt>ProtocolProviderService</tt> for the new account.
* @throws OperationFailedException
*/
public ProtocolProviderService installAccount(
ProtocolProviderFactory providerFactory,
@ -185,31 +170,6 @@ public ProtocolProviderService installAccount(
accountProperties.put(ProtocolProviderFactory.PASSWORD, passwd);
}
if (registration.getProxy() != null
&& registration.getProxy().length() != 0)
accountProperties.put(ProtocolProviderFactory.PROXY_ADDRESS,
registration.getProxy());
if (registration.getProxyPort() != null
&& registration.getProxyPort().length() != 0)
accountProperties.put(ProtocolProviderFactory.PROXY_PORT,
registration.getProxyPort());
if (registration.getProxyType() != null
&& registration.getProxyType().length() != 0)
accountProperties.put(ProtocolProviderFactory.PROXY_TYPE,
registration.getProxyType());
if (registration.getProxyUsername() != null
&& registration.getProxyUsername().length() != 0)
accountProperties.put(ProtocolProviderFactory.PROXY_USERNAME,
registration.getProxyUsername());
if (registration.getProxyPassword() != null
&& registration.getProxyPassword().length() != 0)
accountProperties.put(ProtocolProviderFactory.PROXY_PASSWORD,
registration.getProxyPassword());
if (isModification)
{
providerFactory.modifyAccount( protocolProvider,

@ -0,0 +1,69 @@
/*
* SIP Communicator, the OpenSource Java VoIP and Instant Messaging client.
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package net.java.sip.communicator.service.protocol;
/**
* The supported proxy types and properties used to store the values
* in the configuration service.
*
* @author Damian Minkov
*/
public class ProxyInfo
{
/**
* Enum which stores possible proxy types
*/
public static enum ProxyType
{
/**
* Proxy is not used.
*/
NONE,
/**
* HTTP proxy type.
*/
HTTP,
/**
* Proxy type socks4.
*/
SOCKS4,
/**
* Proxy type socks5.
*/
SOCKS5
}
/**
* Stores in the configuration the connection proxy type.
*/
public final static String CONNECTON_PROXY_TYPE_PROPERTY_NAME =
"net.java.sip.communicator.service.connectionProxyType";
/**
* Stores in the configuration the connection proxy address.
*/
public final static String CONNECTON_PROXY_ADDRESS_PROPERTY_NAME =
"net.java.sip.communicator.service.connectionProxyAddress";
/**
* Stores in the configuration the connection proxy port.
*/
public final static String CONNECTON_PROXY_PORT_PROPERTY_NAME =
"net.java.sip.communicator.service.connectionProxyPort";
/**
* Stores in the configuration the connection proxy username.
*/
public final static String CONNECTON_PROXY_USERNAME_PROPERTY_NAME =
"net.java.sip.communicator.service.connectionProxyUsername";
/**
* Stores in the configuration the connection proxy password.
*/
public final static String CONNECTON_PROXY_PASSWORD_PROPERTY_NAME =
"net.java.sip.communicator.service.connectionProxyPassword";
}
Loading…
Cancel
Save