package ij.plugin; import ij.*; import ij.gui.*; import ij.util.Tools; import java.util.*; /** This plugin implements the Plugins/Utilities/Proxy Settings command. It sets * the JVM proxy properties to allow the Plugins/Utilities/Update ImageJ command * and File/Open Samples menu to work on networks behind a proxy server. * * @author Dimiter Prodanov */ public class ProxySettings implements PlugIn { private static Properties props = System.getProperties(); private String proxyhost = Prefs.get("proxy.server", ""); private int proxyport = (int)Prefs.get("proxy.port", 8080); private String proxyuser = Prefs.get("proxy.user", ""); private String proxypass = ""; private boolean authenticate; public void run(String arg) { if (IJ.getApplet()!=null) return; String host = System.getProperty("http.proxyHost"); if (host!=null) proxyhost = host; String port = System.getProperty("http.proxyPort"); if (port!=null) { double portNumber = Tools.parseDouble(port); if (!Double.isNaN(portNumber)) proxyport = (int)portNumber; } String user = System.getProperty("http.proxyUser"); if (user!=null) proxyuser = user; String pass = System.getProperty("http.proxyPassword"); if (pass!=null) proxypass = pass; if (!showDialog()) return; if (!proxyhost.equals("")) props.put("proxySet", "true"); else props.put("proxySet", "false"); props.put("http.proxyHost", proxyhost); props.put("http.proxyPort", ""+proxyport); props.put("http.proxyUser", proxyuser); props.put("http.proxyPassword", proxypass); Prefs.set("proxy.server", proxyhost); Prefs.set("proxy.port", proxyport); Prefs.set("proxy.user", proxyuser); if (IJ.debugMode) { IJ.log("proxy set: "+ System.getProperty("proxySet")); IJ.log("proxy host: "+ System.getProperty("http.proxyHost")); IJ.log("proxy port: "+System.getProperty("http.proxyPort")); IJ.log("proxy username: "+ System.getProperty("http.proxyUser")); IJ.log("proxy password: "+ System.getProperty("http.proxyPassword")); } } boolean showDialog() { GenericDialog gd=new GenericDialog("Proxy Settings"); gd.addStringField("Proxy Server:", proxyhost, 15); gd.addNumericField("Port:", proxyport , 0); gd.addCheckbox(" Authenticate", authenticate); gd.showDialog(); if (gd.wasCanceled()) return false; proxyhost = gd.getNextString(); proxyport = (int)gd.getNextNumber(); authenticate = gd.getNextBoolean(); if (authenticate && !proxyhost.equals("")) { GenericDialog gd2=new GenericDialog("Authentication"); gd2.setInsets(0,0,12); gd2.addMessage("Enter user name and password for proxy server"); gd2.addStringField("User:", proxyuser, 12); gd2.setEchoChar('*'); gd2.addStringField("Password:", proxypass, 12); gd2.showDialog(); if (gd. wasCanceled()) return false; proxyuser = gd2.getNextString(); proxypass = gd2.getNextString(); } else { proxyuser = ""; proxypass = ""; } return true; } }