commit: 18e7d6070275fbc48aef3d84a7f69811541e1fe5
parent: ff68546c69b68c4f83eb843f3ecb5789358d2f32
Author: Adam Tauber <asciimoo@gmail.com>
Date: Sun, 26 Apr 2015 13:12:04 -0400
Merge pull request #298 from dalf/ssl
[fix] SSL : SNI support
Diffstat:
8 files changed, 25 insertions(+), 12 deletions(-)
diff --git a/requirements.txt b/requirements.txt
@@ -5,3 +5,8 @@ lxml
pyyaml
pygments
python-dateutil
+ndg-httpsclient
+pyopenssl
+pyasn1
+pyasn1-modules
+certifi
diff --git a/searx/engines/btdigg.py b/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
diff --git a/searx/engines/kickass.py b/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
diff --git a/searx/engines/photon.py b/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
diff --git a/searx/tests/engines/test_kickass.py b/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):
diff --git a/searx/webapp.py b/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']
diff --git a/setup.py b/setup.py
@@ -47,6 +47,11 @@ setup(
'pygments',
'setuptools',
'python-dateutil',
+ 'pyopenssl',
+ 'ndg-httpsclient',
+ 'pyasn1',
+ 'pyasn1-modules',
+ 'certifi'
],
extras_require={
'test': [
diff --git a/versions.cfg b/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