Start working on authentication

This commit is contained in:
Juhani Krekelä 2018-04-08 17:10:21 +03:00
parent d0de210c4f
commit 9e2a7d338d
1 changed files with 32 additions and 0 deletions

View File

@ -1,3 +1,4 @@
import http.cookies
import http.server
import urllib.parse
@ -11,9 +12,23 @@ class HTTPRequestHandler(http.server.BaseHTTPRequestHandler):
encoded = html.encode('utf-8')
length = len(encoded)
# TODO: Make this more sensical
sent_cookies = http.cookies.SimpleCookie()
sent_cookies['buranun_session'] = 'dihutenosa'
sent_cookies['buranun_session']['domain'] = 'ahti-saarelainen.zgrep.org'
sent_cookies['buranun_session']['path'] = '/board'
sent_cookies['buranun_session']['max-age'] = 60
sent_cookies['buranun_session']['secure'] = True
sent_cookies['buranun_session']['httponly'] = True
self.send_response(status_code)
self.send_header('Content-Type', 'text/html; charset=utf-8')
self.send_header('Content-Length', length)
# Since http.cookies doesn't play nicely with http.server we need to do this manually
self.flush_headers()
self.wfile.write(sent_cookies.output().encode('utf-8') + b'\r\n')
self.end_headers()
self.wfile.write(encoded)
@ -23,6 +38,23 @@ class HTTPRequestHandler(http.server.BaseHTTPRequestHandler):
self.__send_html(html, status_code = 404)
def do_GET(self):
# TODO: Do something with the session
cookies_string = self.headers['cookie']
if cookies_string is not None:
received_cookies = http.cookies.SimpleCookie()
try:
received_cookies.load(cookies_string)
except http.cookies.CookieError:
print('malformed cookies')
if 'buranun_session' in received_cookies:
print(received_cookies['buranun_session'].value)
else:
print('no cookies')
path = urllib.parse.unquote(self.path)
path_components = [component for component in path.split('/') if component != '']