From 6b8b09f3812bc5560843f4d44589066c749c63f8 Mon Sep 17 00:00:00 2001 From: Ben Soares Date: Thu, 25 Mar 2021 02:11:38 +0000 Subject: [PATCH] JAL-3633 getdown reads jalview_properties for proxy settings --- build.gradle | 1 + .../threerings/getdown/launcher/ProxyPanel.java | 14 ++++++- .../com/threerings/getdown/launcher/ProxyUtil.java | 44 +++++++++++++++++++- 3 files changed, 56 insertions(+), 3 deletions(-) diff --git a/build.gradle b/build.gradle index 6dac841..c5e9787 100644 --- a/build.gradle +++ b/build.gradle @@ -1673,6 +1673,7 @@ task getdownWebsite() { from launchJvl from getdownLauncher from "${getdownWebsiteDir}/${getdown_build_properties}" + from "${getdownWebsiteDir}/${channel_props}" if (file(getdownLauncher).getName() != getdown_launcher) { rename(file(getdownLauncher).getName(), getdown_launcher) } diff --git a/getdown/src/getdown/launcher/src/main/java/com/threerings/getdown/launcher/ProxyPanel.java b/getdown/src/getdown/launcher/src/main/java/com/threerings/getdown/launcher/ProxyPanel.java index 2178273..5d697df 100644 --- a/getdown/src/getdown/launcher/src/main/java/com/threerings/getdown/launcher/ProxyPanel.java +++ b/getdown/src/getdown/launcher/src/main/java/com/threerings/getdown/launcher/ProxyPanel.java @@ -40,6 +40,12 @@ public final class ProxyPanel extends JPanel implements ActionListener _getdown = getdown; _msgs = msgs; + String[] hostPortAuthUser = ProxyUtil.jalviewProxyProperties(getdown._app); + String host = hostPortAuthUser[0]; + String port = hostPortAuthUser[1]; + boolean proxyAuth = Boolean.parseBoolean(hostPortAuthUser[2]); + String username = hostPortAuthUser[3]; + setLayout(new VGroupLayout()); setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); add(new SaneLabelField(get("m.configure_proxy"))); @@ -48,11 +54,13 @@ public final class ProxyPanel extends JPanel implements ActionListener JPanel row = new JPanel(new GridLayout()); row.add(new SaneLabelField(get("m.proxy_host")), BorderLayout.WEST); row.add(_host = new SaneTextField()); + _host.setText(host); add(row); row = new JPanel(new GridLayout()); row.add(new SaneLabelField(get("m.proxy_port")), BorderLayout.WEST); row.add(_port = new SaneTextField()); + _port.setText(port); add(row); add(new Spacer(5, 5)); @@ -60,20 +68,22 @@ public final class ProxyPanel extends JPanel implements ActionListener row = new JPanel(new GridLayout()); row.add(new SaneLabelField(get("m.proxy_auth_required")), BorderLayout.WEST); _useAuth = new JCheckBox(); + _useAuth.setSelected(proxyAuth); row.add(_useAuth); add(row); row = new JPanel(new GridLayout()); row.add(new SaneLabelField(get("m.proxy_username")), BorderLayout.WEST); _username = new SaneTextField(); - _username.setEnabled(false); + _username.setText(username); + _username.setEnabled(_useAuth.isSelected()); row.add(_username); add(row); row = new JPanel(new GridLayout()); row.add(new SaneLabelField(get("m.proxy_password")), BorderLayout.WEST); _password = new SanePasswordField(); - _password.setEnabled(false); + _password.setEnabled(_useAuth.isSelected()); row.add(_password); add(row); diff --git a/getdown/src/getdown/launcher/src/main/java/com/threerings/getdown/launcher/ProxyUtil.java b/getdown/src/getdown/launcher/src/main/java/com/threerings/getdown/launcher/ProxyUtil.java index a36b5fa..6295df4 100644 --- a/getdown/src/getdown/launcher/src/main/java/com/threerings/getdown/launcher/ProxyUtil.java +++ b/getdown/src/getdown/launcher/src/main/java/com/threerings/getdown/launcher/ProxyUtil.java @@ -6,8 +6,10 @@ package com.threerings.getdown.launcher; import java.io.File; +import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; +import java.io.InputStream; import java.io.PrintStream; import java.net.Authenticator; import java.net.HttpURLConnection; @@ -19,6 +21,9 @@ import java.net.URLConnection; import java.util.Iterator; import java.util.ServiceLoader; +import jalview.bin.LaunchUtils; +import jalview.util.ChannelProperties; + import ca.beq.util.win32.registry.RegistryKey; import ca.beq.util.win32.registry.RegistryValue; import ca.beq.util.win32.registry.RootKey; @@ -88,15 +93,51 @@ public class ProxyUtil { port = hostPort[1]; } + // look in jalview_properties + String[] hostPortAuthUser = jalviewProxyProperties(app); + host = hostPortAuthUser[0]; + port = hostPortAuthUser[1]; + boolean proxyAuth = Boolean.parseBoolean(hostPortAuthUser[2]); + String username = hostPortAuthUser[3]; + if (StringUtil.isBlank(host)) { return false; } // yay, we found a proxy configuration, configure it in the app - initProxy(app, host, port, null, null); + initProxy(app, host, port, username, null); return true; } + public static String[] jalviewProxyProperties(Application app) { + String host = null; + String port = null; + boolean proxyAuth = false; + String username = null; + File channelProps = app.getLocalPath(ChannelProperties.CHANNEL_PROPERTIES_FILENAME); + if (channelProps.exists()) { + try { + InputStream is = new FileInputStream(channelProps); + ChannelProperties.loadProps(is); + } catch (IOException e) { + log.error(e.getMessage()); + } + if (Boolean.parseBoolean(LaunchUtils.getUserPreference("USE_PROXY"))) { + host = LaunchUtils.getUserPreference("PROXY_SERVER_HTTPS"); + port = LaunchUtils.getUserPreference("PROXY_PORT_HTTPS"); + if (StringUtil.isBlank(host)) { + host = LaunchUtils.getUserPreference("PROXY_SERVER"); + port = LaunchUtils.getUserPreference("PROXY_PORT"); + } + proxyAuth = Boolean.parseBoolean(LaunchUtils.getUserPreference("PROXY_AUTH")); + if (proxyAuth) { + username = LaunchUtils.getUserPreference("PROXY_AUTH_USERNAME"); + } + } + } + return new String[]{ host, port, String.valueOf(proxyAuth), username }; + } + public static boolean canLoadWithoutProxy (URL rurl) { log.info("Testing whether proxy is needed, via: " + rurl); @@ -179,6 +220,7 @@ public class ProxyUtil { public static void initProxy (Application app, String host, String port, String username, String password) { +System.out.println("**** initProxy(app, '"+host+"', "+port+", '"+username+"', "+(password==null?"null":"*x"+password.length())+")"); // check whether we have saved proxy credentials String appDir = app.getAppDir().getAbsolutePath(); ServiceLoader loader = ServiceLoader.load(ProxyAuth.class); -- 1.7.10.2