handle source IP for PNG queries (#311)

This commit is contained in:
Igor Chubin 2019-07-08 19:56:29 +02:00
parent e7b7b91277
commit a17e778bca
2 changed files with 8 additions and 3 deletions

View file

@ -55,7 +55,11 @@ def client_ip_address(request):
Flask related
"""
if request.headers.getlist("X-Forwarded-For"):
if request.headers.getlist("X-PNG-Query-For"):
ip_addr = request.headers.getlist("X-PNG-Query-For")[0]
if ip_addr.startswith('::ffff:'):
ip_addr = ip_addr[7:]
elif request.headers.getlist("X-Forwarded-For"):
ip_addr = request.headers.getlist("X-Forwarded-For")[0]
if ip_addr.startswith('::ffff:'):
ip_addr = ip_addr[7:]
@ -238,6 +242,7 @@ def wttr(location, request):
if png_filename:
options = {
'ip_addr': ip_addr,
'lang': lang,
'location': location}
options.update(query)

View file

@ -301,7 +301,6 @@ def make_wttr_in_png(png_name, options=None):
if key not in parsed:
parsed[key] = val
url = make_wttrin_query(parsed)
print("URL = ", url)
timestamp = time.strftime("%Y%m%d%H", time.localtime())
cached_basename = url[14:].replace('/','_')
@ -315,7 +314,8 @@ def make_wttr_in_png(png_name, options=None):
if os.path.exists(cached_png_file):
return cached_png_file
text = requests.get(url).text.replace('\n', '\r\n')
headers = {'X-PNG-Query-For': options.get('ip_addr', '1.1.1.1')}
text = requests.get(url, headers=headers).text.replace('\n', '\r\n')
curl_output = text.encode('utf-8')
typescript_to_one_frame(cached_png_file, curl_output, options=parsed)