From: Randy Baumgarte Date: Sat, 9 Oct 2010 15:06:30 +0000 (-0400) Subject: Add experimental http proxy support X-Git-Tag: version0.1.1~315 X-Git-Url: http://git.sourceforge.jp/view?p=neighbornote%2FNeighborNote.git;a=commitdiff_plain;h=2bb49c282cd0339520010a4a13d234342f390a8b Add experimental http proxy support --- diff --git a/src/cx/fbn/nevernote/Global.java b/src/cx/fbn/nevernote/Global.java index d9da6fb..b93ccda 100644 --- a/src/cx/fbn/nevernote/Global.java +++ b/src/cx/fbn/nevernote/Global.java @@ -1031,6 +1031,20 @@ public class Global { invalidElements.add(element); } + // Proxy settings + public static String getProxyValue(String key) { + settings.beginGroup("Proxy"); + String val = (String)settings.value(key, ""); + settings.endGroup(); + return val; + } + public static void setProxyValue(String key, String value) { + settings.beginGroup("Proxy"); + settings.setValue(key, value); + settings.endGroup(); + } + + // Convert a byte array to a hex string public static String byteArrayToHexString(byte data[]) { StringBuffer buf = new StringBuffer(); diff --git a/src/cx/fbn/nevernote/NeverNote.java b/src/cx/fbn/nevernote/NeverNote.java index 7cf0ac0..dbec10c 100644 --- a/src/cx/fbn/nevernote/NeverNote.java +++ b/src/cx/fbn/nevernote/NeverNote.java @@ -21,6 +21,8 @@ import java.awt.Desktop; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; +import java.net.Authenticator; +import java.net.PasswordAuthentication; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.sql.Connection; @@ -2362,6 +2364,30 @@ public class NeverNote extends QMainWindow{ syncRunner.userStoreUrl = Global.userStoreUrl; syncRunner.noteStoreUrl = Global.noteStoreUrl; syncRunner.noteStoreUrlBase = Global.noteStoreUrlBase; + + if (Global.getProxyValue("url").equals("")) { + System.setProperty("http.proxyHost","") ; + System.setProperty("http.proxyPort", "") ; + System.setProperty("https.proxyHost","") ; + System.setProperty("https.proxyPort", "") ; + } else { + // PROXY + System.setProperty("http.proxyHost",Global.getProxyValue("url")) ; + System.setProperty("http.proxyPort", Global.getProxyValue("port")) ; + System.setProperty("https.proxyHost",Global.getProxyValue("url")) ; + System.setProperty("https.proxyPort", Global.getProxyValue("port")) ; + + if (Global.getProxyValue("userid").equals("")) { + Authenticator.setDefault(new Authenticator() { + @Override + protected PasswordAuthentication getPasswordAuthentication() { + return new + PasswordAuthentication(Global.getProxyValue("userid"),Global.getProxyValue("password").toCharArray()); + }}); + } + } + + syncRunner.enConnect(); Global.isConnected = syncRunner.isConnected; setupOnlineMenu(); diff --git a/src/cx/fbn/nevernote/dialog/ConfigConnectionPage.java b/src/cx/fbn/nevernote/dialog/ConfigConnectionPage.java index de20203..12ae530 100644 --- a/src/cx/fbn/nevernote/dialog/ConfigConnectionPage.java +++ b/src/cx/fbn/nevernote/dialog/ConfigConnectionPage.java @@ -24,9 +24,11 @@ import java.util.List; import com.trolltech.qt.gui.QCheckBox; import com.trolltech.qt.gui.QComboBox; import com.trolltech.qt.gui.QFormLayout; +import com.trolltech.qt.gui.QGridLayout; import com.trolltech.qt.gui.QGroupBox; import com.trolltech.qt.gui.QLabel; import com.trolltech.qt.gui.QLineEdit; +import com.trolltech.qt.gui.QSpinBox; import com.trolltech.qt.gui.QVBoxLayout; import com.trolltech.qt.gui.QWidget; @@ -43,6 +45,11 @@ public class ConfigConnectionPage extends QWidget { private final QCheckBox synchronizeOnClose; private final QCheckBox synchronizeDeletedContents; + private final QLineEdit proxyHost; + private final QSpinBox proxyPort; + private final QLineEdit proxyUserid; + private final QLineEdit proxyPassword; + public ConfigConnectionPage(QWidget parent) { // Userid settings @@ -67,6 +74,27 @@ public class ConfigConnectionPage extends QWidget { synchronizeDeletedContents = new QCheckBox("Synchronze Deleted Note Content"); synchronizeOnClose = new QCheckBox("Synchronize On Shutdown (only if connected)"); + QGroupBox proxyGroup = new QGroupBox("Proxy Settings"); + QLabel proxyHostLabel = new QLabel(tr("Host")); + QLabel proxyPortLabel = new QLabel(tr("Port")); + QLabel proxyUseridLabel = new QLabel(tr("Userid")); + QLabel proxyPasswordLabel = new QLabel(tr("Password")); + proxyHost = new QLineEdit(); + proxyPort = new QSpinBox(); + proxyUserid = new QLineEdit(); + proxyPassword = new QLineEdit(); + proxyPassword.setEchoMode(QLineEdit.EchoMode.Password); + + proxyHost.setText(Global.getProxyValue("url")); + proxyPort.setValue(new Integer(Global.getProxyValue("port"))); + proxyPort.setMinimum(1); + proxyPort.setMaximum(65565); + proxyUserid.setText(Global.getProxyValue("userid")); + proxyPassword.setText(Global.getProxyValue("password")); + + if (!proxyHost.text().trim().equals("") && proxyPort.text().trim().equals("")) + proxyPort.setValue(80); + QFormLayout useridLayout = new QFormLayout(); useridLayout.addWidget(useridLabel); @@ -79,12 +107,24 @@ public class ConfigConnectionPage extends QWidget { useridLayout.addWidget(autoLogin); useridLayout.addWidget(synchronizeOnClose); useridLayout.addWidget(synchronizeDeletedContents); + + QGridLayout proxyLayout = new QGridLayout(); + proxyLayout.addWidget(proxyHostLabel,1,1); + proxyLayout.addWidget(proxyHost,1,2); + proxyLayout.addWidget(proxyPortLabel,2,1); + proxyLayout.addWidget(proxyPort,2,2); + proxyLayout.addWidget(proxyUseridLabel,3,1); + proxyLayout.addWidget(proxyUserid,3,2); + proxyLayout.addWidget(proxyPasswordLabel,4,1); + proxyLayout.addWidget(proxyPassword,4,2); useridGroup.setLayout(useridLayout); + proxyGroup.setLayout(proxyLayout); // Add everything together QVBoxLayout mainLayout = new QVBoxLayout(); mainLayout.addWidget(useridGroup); + mainLayout.addWidget(proxyGroup); mainLayout.addStretch(1); setLayout(mainLayout); @@ -150,6 +190,29 @@ public class ConfigConnectionPage extends QWidget { + //****************************************** + //* Get Proxy settings + //****************************************** + public String getProxyUrl() { + return proxyHost.text().trim(); + } + public String getProxyPort() { + if (!proxyHost.text().trim().equalsIgnoreCase("") && proxyPort.text().trim().equals("")) + return "80"; + if (proxyHost.text().trim().equals("")) + return ""; + return proxyPort.text().trim(); + } + public String getProxyUserid() { + if (proxyHost.text().trim().equals("")) + return ""; + return proxyUserid.text().trim(); + } + public String getProxyPassword() { + if (proxyHost.text().trim().equals("")) + return ""; + return proxyPassword.text().trim(); + } diff --git a/src/cx/fbn/nevernote/dialog/ConfigDialog.java b/src/cx/fbn/nevernote/dialog/ConfigDialog.java index 879be62..d332691 100644 --- a/src/cx/fbn/nevernote/dialog/ConfigDialog.java +++ b/src/cx/fbn/nevernote/dialog/ConfigDialog.java @@ -132,6 +132,11 @@ public class ConfigDialog extends QDialog { if (connectionPage.getRememberPassword()) { aes.setPassword(connectionPage.getPassword()); } + Global.setProxyValue("url", connectionPage.getProxyUrl()); + Global.setProxyValue("port", connectionPage.getProxyPort()); + Global.setProxyValue("userid", connectionPage.getProxyUserid()); + Global.setProxyValue("password", connectionPage.getProxyPassword()); + Global.setShowTrayIcon(appearancePage.getShowTrayIcon()); Global.setVerifyDelete(appearancePage.getVerifyDelete()); Global.setStartMinimized(appearancePage.getStartMinimized());