OSDN Git Service

Add experimental http proxy support
authorRandy Baumgarte <randy@fbn.cx>
Sat, 9 Oct 2010 15:06:30 +0000 (11:06 -0400)
committerRandy Baumgarte <randy@fbn.cx>
Sun, 10 Oct 2010 14:04:32 +0000 (10:04 -0400)
src/cx/fbn/nevernote/Global.java
src/cx/fbn/nevernote/NeverNote.java
src/cx/fbn/nevernote/dialog/ConfigConnectionPage.java
src/cx/fbn/nevernote/dialog/ConfigDialog.java

index d9da6fb..b93ccda 100644 (file)
@@ -1031,6 +1031,20 @@ public class Global {
        invalidElements.add(element);\r
     }\r
     \r
+    // Proxy settings\r
+    public static String getProxyValue(String key) {\r
+               settings.beginGroup("Proxy");\r
+               String val  = (String)settings.value(key, "");\r
+               settings.endGroup();\r
+               return val;\r
+    }\r
+    public static void setProxyValue(String key, String value) {\r
+               settings.beginGroup("Proxy");\r
+               settings.setValue(key, value);\r
+               settings.endGroup();\r
+    }\r
+    \r
+    \r
     // Convert a byte array to a hex string\r
        public static String byteArrayToHexString(byte data[]) {\r
                StringBuffer buf = new StringBuffer();\r
index 7cf0ac0..dbec10c 100644 (file)
@@ -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();
index de20203..12ae530 100644 (file)
@@ -24,9 +24,11 @@ import java.util.List;
 import com.trolltech.qt.gui.QCheckBox;\r
 import com.trolltech.qt.gui.QComboBox;\r
 import com.trolltech.qt.gui.QFormLayout;\r
+import com.trolltech.qt.gui.QGridLayout;\r
 import com.trolltech.qt.gui.QGroupBox;\r
 import com.trolltech.qt.gui.QLabel;\r
 import com.trolltech.qt.gui.QLineEdit;\r
+import com.trolltech.qt.gui.QSpinBox;\r
 import com.trolltech.qt.gui.QVBoxLayout;\r
 import com.trolltech.qt.gui.QWidget;\r
 \r
@@ -43,6 +45,11 @@ public class ConfigConnectionPage extends QWidget {
        private final QCheckBox synchronizeOnClose;\r
        private final QCheckBox synchronizeDeletedContents;\r
        \r
+       private final QLineEdit proxyHost;\r
+       private final QSpinBox proxyPort;\r
+       private final QLineEdit proxyUserid;\r
+       private final QLineEdit proxyPassword;\r
+       \r
        public ConfigConnectionPage(QWidget parent) {\r
                \r
                // Userid settings\r
@@ -67,6 +74,27 @@ public class ConfigConnectionPage extends QWidget {
                synchronizeDeletedContents = new QCheckBox("Synchronze Deleted Note Content");\r
                synchronizeOnClose = new QCheckBox("Synchronize On Shutdown (only if connected)");\r
                \r
+               QGroupBox proxyGroup = new QGroupBox("Proxy Settings");\r
+               QLabel proxyHostLabel = new QLabel(tr("Host"));\r
+               QLabel proxyPortLabel = new QLabel(tr("Port"));\r
+               QLabel proxyUseridLabel = new QLabel(tr("Userid"));\r
+               QLabel proxyPasswordLabel = new QLabel(tr("Password"));\r
+               proxyHost = new QLineEdit();\r
+               proxyPort = new QSpinBox();\r
+               proxyUserid = new QLineEdit();\r
+               proxyPassword = new QLineEdit();\r
+               proxyPassword.setEchoMode(QLineEdit.EchoMode.Password);\r
+               \r
+               proxyHost.setText(Global.getProxyValue("url"));\r
+               proxyPort.setValue(new Integer(Global.getProxyValue("port")));\r
+               proxyPort.setMinimum(1);\r
+               proxyPort.setMaximum(65565);\r
+               proxyUserid.setText(Global.getProxyValue("userid"));\r
+               proxyPassword.setText(Global.getProxyValue("password"));\r
+               \r
+               if (!proxyHost.text().trim().equals("") && proxyPort.text().trim().equals(""))\r
+                       proxyPort.setValue(80);\r
+               \r
                \r
                QFormLayout useridLayout = new QFormLayout();\r
                useridLayout.addWidget(useridLabel);\r
@@ -79,12 +107,24 @@ public class ConfigConnectionPage extends QWidget {
                useridLayout.addWidget(autoLogin);\r
                useridLayout.addWidget(synchronizeOnClose);\r
                useridLayout.addWidget(synchronizeDeletedContents);\r
+               \r
+               QGridLayout proxyLayout = new QGridLayout();\r
+               proxyLayout.addWidget(proxyHostLabel,1,1);\r
+               proxyLayout.addWidget(proxyHost,1,2);\r
+               proxyLayout.addWidget(proxyPortLabel,2,1);\r
+               proxyLayout.addWidget(proxyPort,2,2);\r
+               proxyLayout.addWidget(proxyUseridLabel,3,1);\r
+               proxyLayout.addWidget(proxyUserid,3,2);\r
+               proxyLayout.addWidget(proxyPasswordLabel,4,1);\r
+               proxyLayout.addWidget(proxyPassword,4,2);\r
                                \r
                useridGroup.setLayout(useridLayout);\r
+               proxyGroup.setLayout(proxyLayout);\r
                \r
                // Add everything together\r
                QVBoxLayout mainLayout = new QVBoxLayout();\r
                mainLayout.addWidget(useridGroup);\r
+               mainLayout.addWidget(proxyGroup);\r
                mainLayout.addStretch(1);\r
                setLayout(mainLayout);\r
                \r
@@ -150,6 +190,29 @@ public class ConfigConnectionPage extends QWidget {
        \r
 \r
        \r
+       //******************************************\r
+       //* Get Proxy settings\r
+       //******************************************\r
+       public String getProxyUrl() {\r
+               return proxyHost.text().trim();\r
+       }\r
+       public String getProxyPort() {\r
+               if (!proxyHost.text().trim().equalsIgnoreCase("") && proxyPort.text().trim().equals(""))\r
+                       return "80";\r
+               if (proxyHost.text().trim().equals(""))\r
+                       return "";\r
+               return proxyPort.text().trim();\r
+       }\r
+       public String getProxyUserid() {\r
+               if (proxyHost.text().trim().equals(""))\r
+                       return "";\r
+               return proxyUserid.text().trim();\r
+       }\r
+       public String getProxyPassword() {\r
+               if (proxyHost.text().trim().equals(""))\r
+                       return "";\r
+               return proxyPassword.text().trim();\r
+       }\r
 \r
        \r
        \r
index 879be62..d332691 100644 (file)
@@ -132,6 +132,11 @@ public class ConfigDialog extends QDialog {
                if (connectionPage.getRememberPassword()) {     \r
                        aes.setPassword(connectionPage.getPassword());\r
                }\r
+               Global.setProxyValue("url", connectionPage.getProxyUrl());\r
+               Global.setProxyValue("port", connectionPage.getProxyPort());\r
+               Global.setProxyValue("userid", connectionPage.getProxyUserid());\r
+               Global.setProxyValue("password", connectionPage.getProxyPassword());\r
+               \r
                Global.setShowTrayIcon(appearancePage.getShowTrayIcon());\r
                Global.setVerifyDelete(appearancePage.getVerifyDelete());\r
                Global.setStartMinimized(appearancePage.getStartMinimized());\r