forked from Ponysearch/Ponysearch
Merge pull request #971 from kvch/image-proxy-compatibility
fix hmac python3 compatibility
This commit is contained in:
commit
6ebfdf0bb3
2 changed files with 13 additions and 3 deletions
|
@ -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()
|
||||||
|
|
|
@ -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):
|
||||||
|
|
Loading…
Reference in a new issue