# AGPL 3 or any later version # (C) J.Y.Amihud ( Blender Dumbass ) from modules import Set def guess_type(path): if "/json/" in path or ".json" in path: return "application/json" if "/css" in path or ".css" in path: return "text/css" if "/icon" in path or path.endswith(".png"): return "image/png" if path.endswith("jpg"): return "image/jpg" return "text/html" def headers(server, code): server.send_response(code) server.send_header("Content-type", guess_type(server.path)) server.end_headers() def head(title="", description="", image="", config={}): if image.startswith("/"): image = config.get("url","")+image html = """ <!DOCTYPE html> <!-- The head. Part of the HTML code where metadata about the page is storred. Including the metadata readable by social media websites, when generating link previwews, which are called mata-tags in HTML. --> <meta charset="utf-8"> <title>"""+title+"""</title> <!-- Title in the browser tab --> <link media="all" href="/css" type="text/css" rel="stylesheet" /> <!-- CSS theme link --> <link rel="icon" href="/pictures/favicon.png"> <!-- Tiny image in the tab --> <!-- Now meta tags for social media --> <meta property="og:site_name" content=\""""+config.get("title", "My Website")+""""> <meta property="og:title" content=\""""+title+""""> <meta property="og:description" content=\""""+description+""""> <meta property="og:image" content=\""""+image+""""> </head> <body> """ return html def send(server, html, code): # Add headers headers(server, code) server.wfile.write(html.encode("utf-8")) def MainPage(server): # Reading config config = Set.Load() # Generating <head> html = head(title = config.get("title", "Website"), description = config.get("description", "Description"), config = config ) html = html + "hello world" send(server, html, 200)