Browse Source

Merge pull request #298 from dalf/ssl

[fix] SSL : SNI support
Adam Tauber 10 years ago
parent
commit
18e7d60702

+ 5 - 0
requirements.txt

@@ -5,3 +5,8 @@ lxml
 pyyaml
 pygments
 python-dateutil
+ndg-httpsclient
+pyopenssl
+pyasn1
+pyasn1-modules
+certifi

+ 0 - 4
searx/engines/btdigg.py

@@ -29,10 +29,6 @@ def request(query, params):
     params['url'] = search_url.format(search_term=quote(query),
                                       pageno=params['pageno']-1)
 
-    # FIX: SSLError: hostname 'btdigg.org'
-    # doesn't match either of 'ssl2000.cloudflare.com', 'cloudflare.com', '*.cloudflare.com'
-    params['verify'] = False
-
     return params
 
 

+ 0 - 4
searx/engines/kickass.py

@@ -34,10 +34,6 @@ def request(query, params):
     params['url'] = search_url.format(search_term=quote(query),
                                       pageno=params['pageno'])
 
-    # FIX: SSLError: hostname 'kickass.so'
-    # doesn't match either of '*.kickass.to', 'kickass.to'
-    params['verify'] = False
-
     return params
 
 

+ 0 - 3
searx/engines/photon.py

@@ -41,9 +41,6 @@ def request(query, params):
     # using searx User-Agent
     params['headers']['User-Agent'] = searx_useragent()
 
-    # FIX: SSLError: SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
-    params['verify'] = False
-
     return params
 
 

+ 0 - 1
searx/tests/engines/test_kickass.py

@@ -15,7 +15,6 @@ class TestKickassEngine(SearxTestCase):
         self.assertIn('url', params)
         self.assertIn(query, params['url'])
         self.assertIn('kickass.to', params['url'])
-        self.assertIn('verify', params)
         self.assertFalse(params['verify'])
 
     def test_response(self):

+ 10 - 0
searx/webapp.py

@@ -65,6 +65,16 @@ from searx.query import Query
 from searx.autocomplete import searx_bang, backends as autocomplete_backends
 from searx.plugins import plugins
 
+# check if the pyopenssl, ndg-httpsclient, pyasn1 packages are installed.
+# They are needed for SSL connection without trouble, see #298
+try:
+    import OpenSSL.SSL  # NOQA
+    import ndg.httpsclient  # NOQA
+    import pyasn1  # NOQA
+except ImportError:
+    logger.critical("The pyopenssl, ndg-httpsclient, pyasn1 packages have to be installed.\n"
+                    "Some HTTPS connections will failed")
+
 
 static_path, templates_path, themes =\
     get_themes(settings['themes_path']

+ 5 - 0
setup.py

@@ -47,6 +47,11 @@ setup(
         'pygments',
         'setuptools',
         'python-dateutil',
+        'pyopenssl',
+        'ndg-httpsclient',
+        'pyasn1',
+        'pyasn1-modules',
+        'certifi'
     ],
     extras_require={
         'test': [

+ 5 - 0
versions.cfg

@@ -32,6 +32,11 @@ speaklater = 1.3
 unittest2 = 0.5.1
 waitress = 0.8.8
 zc.recipe.testrunner = 2.0.0
+pyopenssl = 0.15.1
+ndg-httpsclient = 0.3.3
+pyasn1 = 0.1.7
+pyasn1-modules = 0.0.5
+certifi = 14.05.14
 
 # Required by:
 # WebTest==2.0.11