feat: Initial code push
All checks were successful
Build Docker / Build Main Image (push) Successful in 33s

This commit is contained in:
2023-11-17 00:06:02 +11:00
parent 94f298ad6d
commit 79b210c8a7
47 changed files with 10031 additions and 0 deletions

53
account.py Normal file
View File

@@ -0,0 +1,53 @@
import secrets
import db
import dns.resolver
import os
import dotenv
dotenv.load_dotenv()
avatars = {}
def add_user(domain,token):
db.add_token(token,domain)
def get_user(token):
return db.get_token(token)
def remove_user(token):
db.delete_token(token)
def generate_token(length=32):
token = secrets.token_hex(length // 2)
return token
def get_avatar(domain):
global avatars
if domain in avatars:
return avatars[domain]
else:
avatars[domain] = lookup_avatar(domain)
return avatars[domain]
def lookup_avatar(domain):
resolver = dns.resolver.Resolver()
resolver.nameservers = [os.getenv("DNS_SERVER")]
resolver.port = int(os.getenv("DNS_SERVER_PORT"))
try:
# Query the DNS record
response = resolver.resolve(domain, "TXT")
for record in response:
# If starts with profile avatar=
record = record.to_text().replace('"','')
if record.startswith("profile avatar="):
# Return the URL
return record.replace("profile avatar=","")
except dns.resolver.NXDOMAIN:
return "assets/img/favicon-32x32.png"
except dns.exception.DNSException as e:
return "assets/img/favicon-32x32.png"
return "assets/img/favicon-32x32.png"