feat: Initial code push
All checks were successful
Build Docker / Build Main Image (push) Successful in 33s
All checks were successful
Build Docker / Build Main Image (push) Successful in 33s
This commit is contained in:
53
account.py
Normal file
53
account.py
Normal 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"
|
||||
Reference in New Issue
Block a user