linkr/account.py
Nathan Woodburn 79b210c8a7
All checks were successful
Build Docker / Build Main Image (push) Successful in 33s
feat: Initial code push
2023-11-17 00:06:02 +11:00

53 lines
1.3 KiB
Python

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"