diff --git a/conteroller.py b/conteroller.py index 2767c77..e7e7cf8 100644 --- a/conteroller.py +++ b/conteroller.py @@ -30,3 +30,22 @@ def index(method, get, post, headers): manager.save(message) return status, body + + +def add(method, get, post, headers): + a = get_first_element(get, 'a', '') + b = get_first_element(get, 'b', '') + print(a, b) + status = '200 OK' + summ = int(a) + int(b) + body = b'

' + str(summ).encode() + b'

' + return status, body + + +# def static(method, get, post, headers): +# headers[0] = ('Content-type', 'image/png; charset=utf-8') +# status = '200 OK' +# f = open('data/logo.png', 'rb') +# body = f.read() +# f.close() +# return status, body \ No newline at end of file diff --git a/data/Audi.jpg b/data/Audi.jpg new file mode 100644 index 0000000..b7622f7 Binary files /dev/null and b/data/Audi.jpg differ diff --git a/data/BMW_logo.png b/data/BMW_logo.png new file mode 100644 index 0000000..8574909 Binary files /dev/null and b/data/BMW_logo.png differ diff --git a/main.html b/main.html index 61423bc..cddf71b 100644 --- a/main.html +++ b/main.html @@ -6,6 +6,8 @@ logo
+logo
+audi
{{messages}}
diff --git a/wsgi.py b/wsgi.py index d6c9656..13c63cf 100644 --- a/wsgi.py +++ b/wsgi.py @@ -1,6 +1,9 @@ import wsgiref.validate -from conteroller import index +import mimetypes +import os.path + +from conteroller import index, add from router import Router from utils import parse_http_x_www_form_urlencoded_post_data, \ parse_http_get_data, parse_http_headers, \ @@ -11,8 +14,15 @@ STATIC_URL = '/static/' STATIC_ROOT = 'data' +os.curdir +startdir = os.path.abspath(STATIC_ROOT) +# print(startdir) + + router = Router() router.register_controller('/', index) +router.register_controller('/add/', add) +# router.register_controller('/static/logo.png', logo) @wsgiref.validate.validator @@ -35,14 +45,30 @@ def application(environ, start_response): if URI_PATH.startswith(STATIC_URL): print('STATIC FILE DETECTED!') + print(URI_PATH) + file = str(URI_PATH).replace(STATIC_URL, "", 1) + requested_path = os.path.join(startdir, file) + requested_path = os.path.abspath(requested_path) + print(requested_path) + if not requested_path.startswith(startdir): + raise OSError("Hack") + headers[0] = ('Content-type', mimetypes.guess_type(URI_PATH, strict=True)[0]+'; charset=utf-8') + try: + f = open(requested_path, 'rb') + except FileExistsError: + status = '404 Not Found' + status = '200 OK' + body = f.read() + f.close() + - if DEBUG: - print("{REQUEST_METHOD} {URI_PATH}?{URI_QUERY} {SERVER_PROTOCOL}\n" - "CONTENT_TYPE: {CONTENT_TYPE}; {CONTENT_TYPE_KWARGS}\n" - "POST: {POST}\n" - "GET: {GET}\n" - ":HEADERS:\n{HEADERS}\n" - .format(**locals())) + # if DEBUG: + # print("{REQUEST_METHOD} {URI_PATH}?{URI_QUERY} {SERVER_PROTOCOL}\n" + # "CONTENT_TYPE: {CONTENT_TYPE}; {CONTENT_TYPE_KWARGS}\n" + # "POST: {POST}\n" + # "GET: {GET}\n" + # ":HEADERS:\n{HEADERS}\n" + # .format(**locals())) start_response(status, headers) return [body]