Add proxy info to conf file and swing ui

This commit is contained in:
Laurent Clouet
2015-07-06 18:41:28 +01:00
parent be4b8969ba
commit a0daf5e262
5 changed files with 135 additions and 28 deletions

View File

@@ -44,6 +44,7 @@ public class Configuration {
public String static_exeDirName; public String static_exeDirName;
private String login; private String login;
private String password; private String password;
private String proxy;
private int maxUploadingJob; private int maxUploadingJob;
private int nbCores; private int nbCores;
private ComputeType computeMethod; private ComputeType computeMethod;
@@ -57,6 +58,7 @@ public class Configuration {
public Configuration(File cache_dir_, String login_, String password_) { public Configuration(File cache_dir_, String login_, String password_) {
this.login = login_; this.login = login_;
this.password = password_; this.password = password_;
this.proxy = null;
this.static_exeDirName = "exe"; this.static_exeDirName = "exe";
this.maxUploadingJob = 1; this.maxUploadingJob = 1;
this.nbCores = -1; // ie not set this.nbCores = -1; // ie not set
@@ -93,6 +95,14 @@ public class Configuration {
this.password = password_; this.password = password_;
} }
public String getProxy() {
return this.proxy;
}
public void setProxy(String url) {
this.proxy = url;
}
public int maxUploadingJob() { public int maxUploadingJob() {
return this.maxUploadingJob; return this.maxUploadingJob;
} }

View File

@@ -23,6 +23,7 @@ public class SettingsLoader {
private String login; private String login;
private String password; private String password;
private String proxy;
private String computeMethod; private String computeMethod;
private String gpu; private String gpu;
private String cores; private String cores;
@@ -38,10 +39,11 @@ public class SettingsLoader {
path = path_; path = path_;
} }
public SettingsLoader(String login_, String password_, ComputeType computeMethod_, GPUDevice gpu_, int cores_, String cacheDir_, boolean autoSignIn_, String ui_) { public SettingsLoader(String login_, String password_, String proxy_, ComputeType computeMethod_, GPUDevice gpu_, int cores_, String cacheDir_, boolean autoSignIn_, String ui_) {
path = getDefaultFilePath(); path = getDefaultFilePath();
login = login_; login = login_;
password = password_; password = password_;
proxy = proxy_;
cacheDir = cacheDir_; cacheDir = cacheDir_;
autoSignIn = String.valueOf(autoSignIn_); autoSignIn = String.valueOf(autoSignIn_);
ui = ui_; ui = ui_;
@@ -100,6 +102,10 @@ public class SettingsLoader {
prop.setProperty("password", password); prop.setProperty("password", password);
} }
if (proxy != null) {
prop.setProperty("proxy", proxy);
}
if (autoSignIn != null) { if (autoSignIn != null) {
prop.setProperty("auto-signin", autoSignIn); prop.setProperty("auto-signin", autoSignIn);
} }
@@ -143,6 +149,7 @@ public class SettingsLoader {
public void loadFile() { public void loadFile() {
this.login = null; this.login = null;
this.password = null; this.password = null;
this.proxy = null;
this.computeMethod = null; this.computeMethod = null;
this.gpu = null; this.gpu = null;
this.cacheDir = null; this.cacheDir = null;
@@ -183,6 +190,10 @@ public class SettingsLoader {
this.password = prop.getProperty("password"); this.password = prop.getProperty("password");
} }
if (prop.containsKey("proxy")) {
this.proxy = prop.getProperty("proxy");
}
if (prop.containsKey("auto-signin")) { if (prop.containsKey("auto-signin")) {
this.autoSignIn = prop.getProperty("auto-signin"); this.autoSignIn = prop.getProperty("auto-signin");
} }
@@ -224,6 +235,10 @@ public class SettingsLoader {
config.setPassword(password); config.setPassword(password);
} }
if ((config.getProxy() == null || config.getProxy().isEmpty()) && proxy != null) {
config.setProxy(proxy);
}
try { try {
if ((config.getComputeMethod() == null && computeMethod != null) || (computeMethod != null && config.getComputeMethod() != ComputeType.valueOf(computeMethod))) { if ((config.getComputeMethod() == null && computeMethod != null) || (computeMethod != null && config.getComputeMethod() != ComputeType.valueOf(computeMethod))) {
config.setComputeMethod(ComputeType.valueOf(computeMethod)); config.setComputeMethod(ComputeType.valueOf(computeMethod));

View File

@@ -0,0 +1,71 @@
/*
* Copyright (C) 2015 Laurent CLOUET
* Author Laurent CLOUET <laurent.clouet@nopnop.net>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; version 2
* of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package com.sheepit.client.network;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.Authenticator;
import com.sheepit.client.network.Proxy;
import com.sheepit.client.network.ProxyAuthenticator;
public class Proxy {
public static void set(String url_) throws MalformedURLException {
URL url = new URL(url_);
String userinfo = url.getUserInfo();
if (userinfo != null) {
String[] elements = userinfo.split(":");
if (elements.length == 2) {
String proxy_user = elements[0];
String proxy_password = elements[1];
if (proxy_user != null && proxy_password != null) {
Authenticator.setDefault(new ProxyAuthenticator(proxy_user, proxy_password));
}
}
}
int port = url.getPort();
if (port == -1) {
port = 8080;
}
System.setProperty("http.proxyHost", url.getHost());
System.setProperty("http.proxyPort", Integer.toString(port));
System.setProperty("https.proxyHost", url.getHost());
System.setProperty("https.proxyPort", Integer.toString(port));
}
public static boolean isValidURL(String url_) {
if (url_ == null || url_.isEmpty()) {
return true;
}
try {
new URL(url_);
return true;
}
catch (MalformedURLException e) {
e.printStackTrace();
return false;
}
}
}

View File

@@ -25,9 +25,7 @@ import static org.kohsuke.args4j.ExampleMode.REQUIRED;
import org.kohsuke.args4j.Option; import org.kohsuke.args4j.Option;
import java.io.File; import java.io.File;
import java.net.Authenticator;
import java.net.MalformedURLException; import java.net.MalformedURLException;
import java.net.URL;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Calendar; import java.util.Calendar;
@@ -42,7 +40,7 @@ import com.sheepit.client.SettingsLoader;
import com.sheepit.client.ShutdownHook; import com.sheepit.client.ShutdownHook;
import com.sheepit.client.hardware.gpu.GPU; import com.sheepit.client.hardware.gpu.GPU;
import com.sheepit.client.hardware.gpu.GPUDevice; import com.sheepit.client.hardware.gpu.GPUDevice;
import com.sheepit.client.network.ProxyAuthenticator; import com.sheepit.client.network.Proxy;
public class Worker { public class Worker {
@Option(name = "-server", usage = "Render-farm server, default https://www.sheepit-renderfarm.com", metaVar = "URL", required = false) @Option(name = "-server", usage = "Render-farm server, default https://www.sheepit-renderfarm.com", metaVar = "URL", required = false)
@@ -209,25 +207,7 @@ public class Worker {
if (proxy != null) { if (proxy != null) {
try { try {
URL url = new URL(proxy); Proxy.set(proxy);
String userinfo = url.getUserInfo();
if (userinfo != null) {
String[] elements = userinfo.split(":");
if (elements.length == 2) {
String proxy_user = elements[0];
String proxy_password = elements[1];
if (proxy_user != null && proxy_password != null) {
Authenticator.setDefault(new ProxyAuthenticator(proxy_user, proxy_password));
}
}
}
System.setProperty("http.proxyHost", url.getHost());
System.setProperty("http.proxyPort", Integer.toString(url.getPort()));
System.setProperty("https.proxyHost", url.getHost());
System.setProperty("https.proxyPort", Integer.toString(url.getPort()));
} }
catch (MalformedURLException e) { catch (MalformedURLException e) {
System.err.println("Error: wrong url for proxy"); System.err.println("Error: wrong url for proxy");

View File

@@ -5,6 +5,7 @@ import java.awt.event.ActionListener;
import java.awt.event.KeyEvent; import java.awt.event.KeyEvent;
import java.awt.event.KeyListener; import java.awt.event.KeyListener;
import java.io.File; import java.io.File;
import java.net.MalformedURLException;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
@@ -23,6 +24,7 @@ import com.sheepit.client.SettingsLoader;
import com.sheepit.client.hardware.cpu.CPU; import com.sheepit.client.hardware.cpu.CPU;
import com.sheepit.client.hardware.gpu.GPU; import com.sheepit.client.hardware.gpu.GPU;
import com.sheepit.client.hardware.gpu.GPUDevice; import com.sheepit.client.hardware.gpu.GPUDevice;
import com.sheepit.client.network.Proxy;
import com.sheepit.client.standalone.GuiSwing; import com.sheepit.client.standalone.GuiSwing;
public class Settings implements Activity { public class Settings implements Activity {
@@ -38,6 +40,7 @@ public class Settings implements Activity {
private JCheckBox useCPU; private JCheckBox useCPU;
private List<JCheckBoxGPU> useGPUs; private List<JCheckBoxGPU> useGPUs;
private JSlider cpuCores; private JSlider cpuCores;
private JTextField proxy;
private JCheckBox saveFile; private JCheckBox saveFile;
private JCheckBox autoSignIn; private JCheckBox autoSignIn;
@@ -61,8 +64,8 @@ public class Settings implements Activity {
int start_label_left = 109; int start_label_left = 109;
int start_label_right = 265; int start_label_right = 265;
int end_label_right = 490; int end_label_right = 490;
int n = 10; int n = 5;
int sep = 45; int sep = 40;
ImageIcon image = new ImageIcon(getClass().getResource("/title.png")); ImageIcon image = new ImageIcon(getClass().getResource("/title.png"));
JLabel labelImage = new JLabel(image); JLabel labelImage = new JLabel(image);
@@ -70,7 +73,7 @@ public class Settings implements Activity {
n = labelImage.getHeight(); n = labelImage.getHeight();
parent.getContentPane().add(labelImage); parent.getContentPane().add(labelImage);
n += 40; n += sep;
JLabel loginLabel = new JLabel("Login:"); JLabel loginLabel = new JLabel("Login:");
loginLabel.setBounds(start_label_left, n, 170, size_height_label); loginLabel.setBounds(start_label_left, n, 170, size_height_label);
@@ -98,6 +101,21 @@ public class Settings implements Activity {
n += sep; n += sep;
JLabel proxyLabel = new JLabel("Proxy:");
proxyLabel.setBounds(start_label_left, n, 170, size_height_label);
proxyLabel.setToolTipText("http://login:password@host:port");
parent.getContentPane().add(proxyLabel);
proxy = new JTextField();
proxy.setBounds(start_label_right, n, end_label_right - start_label_right, size_height_label);
proxy.setToolTipText("http://login:password@host:port");
System.out.println("parent.getConfiguration().getProxy() " + parent.getConfiguration().getProxy());
proxy.setText(parent.getConfiguration().getProxy());
proxy.addKeyListener(new CheckCanStart());
parent.getContentPane().add(proxy);
n += sep;
JLabel cacheLabel = new JLabel("Working directory:"); JLabel cacheLabel = new JLabel("Working directory:");
cacheLabel.setBounds(start_label_left, n, 240, size_height_label); cacheLabel.setBounds(start_label_left, n, 240, size_height_label);
parent.getContentPane().add(cacheLabel); parent.getContentPane().add(cacheLabel);
@@ -215,7 +233,7 @@ public class Settings implements Activity {
selected = true; selected = true;
} }
} }
if (login.getText().isEmpty() || password.getPassword().length == 0) { if (login.getText().isEmpty() || password.getPassword().length == 0 || Proxy.isValidURL(proxy.getText()) == false) {
selected = false; selected = false;
} }
saveButton.setEnabled(selected); saveButton.setEnabled(selected);
@@ -322,6 +340,19 @@ public class Settings implements Activity {
config.setUseNbCores(cpu_cores); config.setUseNbCores(cpu_cores);
} }
String proxyText = null;
if (proxy != null) {
try {
Proxy.set(proxy.getText());
proxyText = proxy.getText();
}
catch (MalformedURLException e1) {
System.err.println("Error: wrong url for proxy");
System.err.println(e);
System.exit(2);
}
}
parent.setCredentials(login.getText(), new String(password.getPassword())); parent.setCredentials(login.getText(), new String(password.getPassword()));
String cachePath = null; String cachePath = null;
@@ -330,7 +361,7 @@ public class Settings implements Activity {
} }
if (saveFile.isSelected()) { if (saveFile.isSelected()) {
new SettingsLoader(login.getText(), new String(password.getPassword()), method, selected_gpu, cpu_cores, cachePath, autoSignIn.isSelected(), GuiSwing.type).saveFile(); new SettingsLoader(login.getText(), new String(password.getPassword()), proxyText, method, selected_gpu, cpu_cores, cachePath, autoSignIn.isSelected(), GuiSwing.type).saveFile();
} }
else { else {
try { try {