X-Git-Url: https://git.mar77i.info/?a=blobdiff_plain;f=hub%2Futils.py;fp=hub%2Futils.py;h=ae1fd1242684f692ccec08e4293fcaba6807214e;hb=6128e895bc2a5da5fe645cc9a7ad74ac75af4f6b;hp=c9d955cfa107e1e6cc01f5d7a7ea1b3d1e9a23d1;hpb=66e1cc7886b1ce7092281a43b9ee7969366e6835;p=hublib diff --git a/hub/utils.py b/hub/utils.py index c9d955c..ae1fd12 100644 --- a/hub/utils.py +++ b/hub/utils.py @@ -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):