[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[vidalia-svn] r2150: Add some experimental support for making our GeoIP requests (in trunk: . src/geoip)



Author: edmanm
Date: 2007-12-01 02:40:08 -0500 (Sat, 01 Dec 2007)
New Revision: 2150

Added:
   trunk/src/geoip/cacert_root.crt
   trunk/src/geoip/geoip.qrc
Modified:
   trunk/
   trunk/src/geoip/geoip.pri
   trunk/src/geoip/geoipresolver.cpp
Log:
 r2179@lysithea:  edmanm | 2007-12-01 02:39:40 -0500
 Add some experimental support for making our GeoIP requests over SSL.
 (Requests are still done over Tor as well.)



Property changes on: trunk
___________________________________________________________________
 svk:merge ticket from /local/vidalia/trunk [r2179] on 0108964c-5b0b-4c9e-969f-e2288315d100

Added: trunk/src/geoip/cacert_root.crt
===================================================================
--- trunk/src/geoip/cacert_root.crt	                        (rev 0)
+++ trunk/src/geoip/cacert_root.crt	2007-12-01 07:40:08 UTC (rev 2150)
@@ -0,0 +1,41 @@
+-----BEGIN CERTIFICATE-----
+MIIHPTCCBSWgAwIBAgIBADANBgkqhkiG9w0BAQQFADB5MRAwDgYDVQQKEwdSb290
+IENBMR4wHAYDVQQLExVodHRwOi8vd3d3LmNhY2VydC5vcmcxIjAgBgNVBAMTGUNB
+IENlcnQgU2lnbmluZyBBdXRob3JpdHkxITAfBgkqhkiG9w0BCQEWEnN1cHBvcnRA
+Y2FjZXJ0Lm9yZzAeFw0wMzAzMzAxMjI5NDlaFw0zMzAzMjkxMjI5NDlaMHkxEDAO
+BgNVBAoTB1Jvb3QgQ0ExHjAcBgNVBAsTFWh0dHA6Ly93d3cuY2FjZXJ0Lm9yZzEi
+MCAGA1UEAxMZQ0EgQ2VydCBTaWduaW5nIEF1dGhvcml0eTEhMB8GCSqGSIb3DQEJ
+ARYSc3VwcG9ydEBjYWNlcnQub3JnMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
+CgKCAgEAziLA4kZ97DYoB1CW8qAzQIxL8TtmPzHlawI229Z89vGIj053NgVBlfkJ
+8BLPRoZzYLdufujAWGSuzbCtRRcMY/pnCujW0r8+55jE8Ez64AO7NV1sId6eINm6
+zWYyN3L69wj1x81YyY7nDl7qPv4coRQKFWyGhFtkZip6qUtTefWIonvuLwphK42y
+fk1WpRPs6tqSnqxEQR5YYGUFZvjARL3LlPdCfgv3ZWiYUQXw8wWRBB0bF4LsyFe7
+w2t6iPGwcswlWyCR7BYCEo8y6RcYSNDHBS4CMEK4JZwFaz+qOqfrU0j36NK2B5jc
+G8Y0f3/JHIJ6BVgrCFvzOKKrF11myZjXnhCLotLddJr3cQxyYN/Nb5gznZY0dj4k
+epKwDpUeb+agRThHqtdB7Uq3EvbXG4OKDy7YCbZZ16oE/9KTfWgu3YtLq1i6L43q
+laegw1SJpfvbi1EinbLDvhG+LJGGi5Z4rSDTii8aP8bQUWWHIbEZAWV/RRyH9XzQ
+QUxPKZgh/TMfdQwEUfoZd9vUFBzugcMd9Zi3aQaRIt0AUMyBMawSB3s42mhb5ivU
+fslfrejrckzzAeVLIL+aplfKkQABi6F1ITe1Yw1nPkZPcCBnzsXWWdsC4PDSy826
+YreQQejdIOQpvGQpQsgi3Hia/0PsmBsJUUtaWsJx8cTLc6nloQsCAwEAAaOCAc4w
+ggHKMB0GA1UdDgQWBBQWtTIb1Mfz4OaO873SsDrusjkY0TCBowYDVR0jBIGbMIGY
+gBQWtTIb1Mfz4OaO873SsDrusjkY0aF9pHsweTEQMA4GA1UEChMHUm9vdCBDQTEe
+MBwGA1UECxMVaHR0cDovL3d3dy5jYWNlcnQub3JnMSIwIAYDVQQDExlDQSBDZXJ0
+IFNpZ25pbmcgQXV0aG9yaXR5MSEwHwYJKoZIhvcNAQkBFhJzdXBwb3J0QGNhY2Vy
+dC5vcmeCAQAwDwYDVR0TAQH/BAUwAwEB/zAyBgNVHR8EKzApMCegJaAjhiFodHRw
+czovL3d3dy5jYWNlcnQub3JnL3Jldm9rZS5jcmwwMAYJYIZIAYb4QgEEBCMWIWh0
+dHBzOi8vd3d3LmNhY2VydC5vcmcvcmV2b2tlLmNybDA0BglghkgBhvhCAQgEJxYl
+aHR0cDovL3d3dy5jYWNlcnQub3JnL2luZGV4LnBocD9pZD0xMDBWBglghkgBhvhC
+AQ0ESRZHVG8gZ2V0IHlvdXIgb3duIGNlcnRpZmljYXRlIGZvciBGUkVFIGhlYWQg
+b3ZlciB0byBodHRwOi8vd3d3LmNhY2VydC5vcmcwDQYJKoZIhvcNAQEEBQADggIB
+ACjH7pyCArpcgBLKNQodgW+JapnM8mgPf6fhjViVPr3yBsOQWqy1YPaZQwGjiHCc
+nWKdpIevZ1gNMDY75q1I08t0AoZxPuIrA2jxNGJARjtT6ij0rPtmlVOKTV39O9lg
+18p5aTuxZZKmxoGCXJzN600BiqXfEVWqFcofN8CCmHBh22p8lqOOLlQ+TyGpkO/c
+gr/c6EWtTZBzCDyUZbAEmXZ/4rzCahWqlwQ3JNgelE5tDlG+1sSPypZt90Pf6DBl
+Jzt7u0NDY8RD97LsaMzhGY4i+5jhe1o+ATc7iwiwovOVThrLm82asduycPAtStvY
+sONvRUgzEv/+PDIqVPfE94rwiCPCR/5kenHA0R6mY7AHfqQv0wGP3J8rtsYIqQ+T
+SCX8Ev2fQtzzxD72V7DX3WnRBnc0CkvSyqD/HMaMyRa+xMwyN2hzXwj7UfdJUzYF
+CpUCTPJ5GhD22Dp1nPMd8aINcGeGG7MW9S/lpOt5hvk9C8JzC6WZrG/8Z7jlLwum
+GCSNe9FINSkYQKyTYOGWhlC0elnYjyELn8+CkcY7v2vcB5G5l1YjqrZslMZIBjzk
+zk6q5PYvCdxTby78dOs6Y5nCpqyJvKeyRKANihDjbPIky/qbn3BHLt4Ui9SyIAmW
+omTxJBzcoTWcFbLUvFUufQb1nA5V9FrWk9p2rSVzTMVD
+-----END CERTIFICATE-----

Modified: trunk/src/geoip/geoip.pri
===================================================================
--- trunk/src/geoip/geoip.pri	2007-12-01 07:40:00 UTC (rev 2149)
+++ trunk/src/geoip/geoip.pri	2007-12-01 07:40:08 UTC (rev 2150)
@@ -23,6 +23,8 @@
 
 INCLUDEPATH += $$PWD
 
+RESOURCES += $$PWD/geoip.qrc
+
 HEADERS += $$PWD/geoip.h \
            $$PWD/geoipcache.h \
            $$PWD/geoipcacheitem.h \

Added: trunk/src/geoip/geoip.qrc
===================================================================
--- trunk/src/geoip/geoip.qrc	                        (rev 0)
+++ trunk/src/geoip/geoip.qrc	2007-12-01 07:40:08 UTC (rev 2150)
@@ -0,0 +1,5 @@
+<RCC>
+  <qresource prefix="/geoip">
+    <file>cacert_root.crt</file>
+  </qresource>
+</RCC>

Modified: trunk/src/geoip/geoipresolver.cpp
===================================================================
--- trunk/src/geoip/geoipresolver.cpp	2007-12-01 07:40:00 UTC (rev 2149)
+++ trunk/src/geoip/geoipresolver.cpp	2007-12-01 07:40:08 UTC (rev 2150)
@@ -26,12 +26,17 @@
  */
 
 #include <torsocket.h>
+#include <torsslsocket.h>
 #include "geoipresolver.h"
 
 /** Host for the geo ip information. This hostname round-robins between
  * pasiphae.vidalia-project.net, thebe.vidalia-project.net, and
  * cups.cs.cmu.edu. */ 
 #define GEOIP_HOST    "geoip.vidalia-project.net"
+/** The non-encrypted GeoIP service lives on port 80. */
+#define GEOIP_PORT      80
+/** The SSL GeoIP service runs on port 1443 (443 was taken). */
+#define GEOIP_SSL_PORT  1443
 /** Page that we request the geo ip information from. */
 #define GEOIP_PAGE    "/cgi-bin/geoip"
 
@@ -204,11 +209,16 @@
   }
 
   /* Create a socket used to request the geo ip information. */
+#if QT_VERSION >= 0x040300
+  TorSslSocket *socket = new TorSslSocket(_socksAddr, _socksPort);
+#else
   TorSocket *socket = new TorSocket(_socksAddr, _socksPort);
-  connect(socket, SIGNAL(connectedToHost()), this, SLOT(connected()),
+#endif
+
+  connect(socket, SIGNAL(connectedToRemoteHost()), this, SLOT(connected()),
           Qt::QueuedConnection);
   connect(socket, SIGNAL(socketError(QString)), 
-            this,   SLOT(socketError(QString)),
+          this,   SLOT(socketError(QString)),
           Qt::QueuedConnection);
   connect(socket, SIGNAL(disconnected()), this, SLOT(disconnected()),
           Qt::QueuedConnection);
@@ -216,7 +226,17 @@
   _requestList.insert(socket, request);
   
   /* Connect so we can send our request and return the request ID. */
-  socket->connectToHost(GEOIP_HOST, 80);
+#if QT_VERSION >= 0x040300
+  if (TorSslSocket::supportsSsl()) {
+    QByteArray caCert(":/geoip/cacert_root.crt");
+    socket->addCaCertificate(QSslCertificate(caCert));
+    socket->connectToRemoteHost(GEOIP_HOST, GEOIP_SSL_PORT, true);
+  } else {
+    socket->connectToRemoteHost(GEOIP_HOST, GEOIP_PORT, false);
+  }
+#else
+  socket->connectToRemoteHost(GEOIP_HOST, GEOIP_PORt);
+#endif
   return request->id();
 }