going-flying.com gemini git repository
84f67cabb158e94c364807362a7881ddc39ada43 - Matthew Ernisse - 1612631367
byte vs str semantics
diff --git a/cgi-bin/converter b/cgi-bin/converter index 0ec205a..f12bb79 100755 --- a/cgi-bin/converter +++ b/cgi-bin/converter @@ -118,8 +118,13 @@ class GeminiCGI(object): self.script_path = os.environ.get('SCRIPT_PATH') self.query_string = os.environ.get('QUERY_STRING') + self.query_dequoted = '' + self.query_parsed = {} + if self.query_string: + self.query_dequoted = unquote(self.query_string) self.query_parsed = parse_qs(self.query_string) + def encode_response(input, result): @@ -251,19 +256,23 @@ if __name__ == '__main__': # base64 encode/decode elif cgi.path_info == 'base64/encode': - s = cgi.query_string + s = cgi.query_dequoted try: - res = base64.b64encode(s) - except Exception: + res = base64.b64encode(s.encode('utf-8')) + res = res.decode('utf-8') + except Exception as e: + sys.stderr.write(f'{e!s}\n') + sys.stderr.flush() cgi.Response.Fail() sys.exit() encode_response(s, res) elif cgi.path_info == 'base64/decode': - s = cgi.query_string + s = cgi.query_dequoted try: res = base64.b64decode(s, validate=True) + res = res.decode('utf-8') except Exception: cgi.Response.Fail() sys.exit() @@ -272,7 +281,7 @@ if __name__ == '__main__': # urlencode/decode elif cgi.path_info == 'url/encode': - s = cgi.query_string + s = cgi.query_dequoted try: res = quote(s, errors='strict') except Exception: