From 6e9a24ae59941bb936ab475b177ac0fafff589e9 Mon Sep 17 00:00:00 2001 From: BlenderDumbass Date: Sat, 30 Nov 2024 19:43:35 +0200 Subject: [PATCH] Moved login and register to user POST | Added referrer analytics --- modules/Render.py | 39 ++++++++++++++++++++++++++++++++------- modules/Run.py | 14 +++++++++----- 2 files changed, 41 insertions(+), 12 deletions(-) diff --git a/modules/Render.py b/modules/Render.py index 5923e2b..344fbd1 100644 --- a/modules/Render.py +++ b/modules/Render.py @@ -16,6 +16,7 @@ from modules.Common import * KnownCookies = [] RecentArticles = {} +RefferedArticles = {} def guess_type(path): @@ -479,6 +480,8 @@ def ListPage(server, tab): def ArticlePage(server, url): user = validate(server.cookie) + + referrer = server.headers.get("referer", "") if url.endswith(".md"): url = url.replace(".md", "") @@ -486,6 +489,7 @@ def ArticlePage(server, url): # Recording when was the last time # the article loaded. RecentArticles["/"+url] = time.time() + RefferedArticles["/"+url] = referrer config = Set.Load() tab, article, *rest = url.split("/") @@ -542,7 +546,14 @@ def ArticlePage(server, url): html = html + '
👁 '+views+'' html = html + """ -

+

""" + + referrers = Articles.get(article, {}).get("views", {}).get("referrers", {}) + if referrers: + for referrer in referrers: + html = html + referrer + " : 👁 "+str(referrers[referrer]) + "
\n" + + html = html + """
""" @@ -895,7 +906,7 @@ def LoginPage(server):
-
+ @@ -952,7 +963,7 @@ def RegisterPage(server):
- + """ if wrongcode: @@ -1369,6 +1380,9 @@ def User(username, stretch=False): def Graph(server, url): + if url.endswith(".md"): + url = url.replace(".md", "") + # If there are any values after ? in the path # which means, that somebody is sending the old # version of the graph link from the legacy code @@ -1392,14 +1406,18 @@ def Graph(server, url): # Sometimes scrapers try to load graph without # loading the article first. We don't want to count # it as a view. - if time.time()-10 > RecentArticles.get(url, 0): + if time.time()-20 > RecentArticles.get(url, 0): print(consoleForm(server.cookie), "Article wasn't loaded, scrapers!") AccessDenied(server) return - + user = validate(server.cookie) + # Store general analytics about which search engines were used. + # To get to this article. + referrer = RefferedArticles.get(url, "") + html = """ @@ -1414,8 +1432,7 @@ def Graph(server, url): """ - if url.endswith(".md"): - url = url.replace(".md", "") + try: with open(Set.Folder()+"/tabs"+url+"/metadata.json") as o: @@ -1464,6 +1481,14 @@ def Graph(server, url): article["views"]["amount"] += 1 article["views"]["viewers"].append(cookie) + if "referrers" not in article["views"]: + article["views"]["referrers"] = {} + if referrer and referrer not in article["views"]["referrers"]: + article["views"]["referrers"][referrer] = 0 + + if referrer: + article["views"]["referrers"][referrer] += 1 + dates = article["views"]["dates"] date = datetime.now().strftime(dateformat) dates[date] = dates.get(date, 0) + 1 diff --git a/modules/Run.py b/modules/Run.py index cf7c6a6..f4e5f5d 100644 --- a/modules/Run.py +++ b/modules/Run.py @@ -69,7 +69,7 @@ class handler(BaseHTTPRequestHandler): # Failing early to make sure that nobody will # try attacking this part of the server. - commands = ["do_edit"] + commands = ["do_edit", "do_login", "do_register"] found = False for i in commands: if i in self.path: @@ -103,6 +103,12 @@ class handler(BaseHTTPRequestHandler): if self.path[1:].startswith("do_edit"): Render.Publish(self) + elif self.path[1:].startswith("do_login"): + Render.Login(self) + + elif self.path[1:].startswith("do_register"): + Render.Register(self) + else: Render.NotFound(self) @@ -185,11 +191,9 @@ class handler(BaseHTTPRequestHandler): elif self.path[1:].startswith("log_out"): Render.LogOut(self) - elif self.path[1:].startswith("do_login"): - Render.Login(self) + - elif self.path[1:].startswith("do_register"): - Render.Register(self) + elif self.path[1:].startswith("read_notification"): Render.ReadNotification(self)