]> git.mar77i.info Git - hublib/blobdiff - hub/utils.py
serve other hubapps too, consolidate and a lot more...
[hublib] / hub / utils.py
index c9d955cfa107e1e6cc01f5d7a7ea1b3d1e9a23d1..ae1fd1242684f692ccec08e4293fcaba6807214e 100644 (file)
@@ -1,11 +1,29 @@
 from base64 import urlsafe_b64encode
-from hashlib import sha3_512
+from hashlib import pbkdf2_hmac
+from pathlib import Path
+
+from jinja2_simple_tags import StandaloneTag
+
+
+class StaticTag(StandaloneTag):
+    tags = {"static"}
+
+    def render(self, filename="/", hubapp=None):
+        if not hubapp:
+            hubapp = self.context["hubapp"]
+        elif isinstance(hubapp, str):
+            hubapp = self.context["hubapp"].app.get_hubapp_by_name(hubapp)
+        return hubapp.uri_from(Path(filename))
 
 
 def scramble(secret, value):
-    h = sha3_512()
-    h.update(f"{secret}{value}".encode())
-    return urlsafe_b64encode(h.digest()).rstrip(b"=").decode("ascii")
+    if isinstance(value, str):
+        value = value.encode()
+    if isinstance(secret, str):
+        secret = secret.encode()
+    return urlsafe_b64encode(
+        pbkdf2_hmac("sha512", value, secret, 221100)
+    ).rstrip(b"=").decode("ascii")
 
 
 def get_redis_pass(redis_conf):