diff --git a/lib/wttr_srv.py b/lib/wttr_srv.py index d5f4e3d..0cf47bd 100644 --- a/lib/wttr_srv.py +++ b/lib/wttr_srv.py @@ -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) diff --git a/lib/wttrin_png.py b/lib/wttrin_png.py index 1189078..c54b2a8 100644 --- a/lib/wttrin_png.py +++ b/lib/wttrin_png.py @@ -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)