Merge pull request #971 from kvch/image-proxy-compatibility

fix hmac python3 compatibility
This commit is contained in:
Adam Tauber 2017-09-08 21:39:17 +02:00 committed by GitHub
commit 6ebfdf0bb3
2 changed files with 13 additions and 3 deletions

View File

@ -1,4 +1,6 @@
import csv import csv
import hashlib
import hmac
import os import os
import re import re
@ -321,3 +323,10 @@ def load_module(filename, module_dir):
module = load_source(modname, filepath) module = load_source(modname, filepath)
module.name = modname module.name = modname
return module return module
def new_hmac(secret_key, url):
if sys.version_info[0] == 2:
return hmac.new(bytes(secret_key), url, hashlib.sha256).hexdigest()
else:
return hmac.new(bytes(secret_key, 'utf-8'), url, hashlib.sha256).hexdigest()

View File

@ -69,6 +69,7 @@ from searx.plugins import plugins
from searx.preferences import Preferences, ValidationException from searx.preferences import Preferences, ValidationException
from searx.answerers import answerers from searx.answerers import answerers
from searx.url_utils import urlencode, urlparse, urljoin from searx.url_utils import urlencode, urlparse, urljoin
from searx.utils import new_hmac
# check if the pyopenssl package is installed. # check if the pyopenssl package is installed.
# It is needed for SSL connection without trouble, see #298 # It is needed for SSL connection without trouble, see #298
@ -290,7 +291,7 @@ def image_proxify(url):
if settings.get('result_proxy'): if settings.get('result_proxy'):
return proxify(url) return proxify(url)
h = hmac.new(settings['server']['secret_key'], url.encode('utf-8'), hashlib.sha256).hexdigest() h = new_hmac(settings['server']['secret_key'], url.encode('utf-8'))
return '{0}?{1}'.format(url_for('image_proxy'), return '{0}?{1}'.format(url_for('image_proxy'),
urlencode(dict(url=url.encode('utf-8'), h=h))) urlencode(dict(url=url.encode('utf-8'), h=h)))
@ -704,7 +705,7 @@ def image_proxy():
if not url: if not url:
return '', 400 return '', 400
h = hmac.new(settings['server']['secret_key'], url, hashlib.sha256).hexdigest() h = new_hmac(settings['server']['secret_key'], url)
if h != request.args.get('h'): if h != request.args.get('h'):
return '', 400 return '', 400
@ -731,7 +732,7 @@ def image_proxy():
logger.debug('image-proxy: wrong content-type: {0}'.format(resp.headers.get('content-type'))) logger.debug('image-proxy: wrong content-type: {0}'.format(resp.headers.get('content-type')))
return '', 400 return '', 400
img = '' img = b''
chunk_counter = 0 chunk_counter = 0
for chunk in resp.iter_content(1024 * 1024): for chunk in resp.iter_content(1024 * 1024):