# AGPL 3 or any later version # (C) J.Y.Amihud ( Blender Dumbass ) import os import sys import json import random import hashlib import urllib.parse from datetime import datetime from getpass import getpass from modules import Set from modules import markdown from modules.Common import * def Load(name): folder = Set.Folder()+"/accounts/" try: with open(folder+name+".json") as o: return json.load(o) except: return {} def Save(account): name = account.get("username", "") folder = Set.Folder()+"/accounts/" try: with open(folder+name+".json", "w") as save: json.dump(account, save, indent=4) except Exception as e: print(clr["bold"]+clr["tdrd"]+"Error:"+clr["norm"]+" Cannot save account!", e) def Account(): if len(sys.argv) < 3: from modules import Help Help.Accounts() if "--list" in sys.argv: List() elif "--add" in sys.argv: try: account = sys.argv[ sys.argv.index("--add") + 1] if "--" in account: 1/0 # Failing this for the error message. Add(account) except Exception as e: print(clr["bold"]+clr["tdrd"]+"Error:"+clr["norm"]+" Account name wasn't specified!") print('Use: $ python3 run.py --account --add blenderdumbass') elif "--edit" in sys.argv: try: account = sys.argv[ sys.argv.index("--edit") + 1] if "--" in account: 1/0 # Failing this for the error message. Edit(account) except Exception as e: print(clr["bold"]+clr["tdrd"]+"Error:"+clr["norm"]+" Account name wasn't specified!") print('Use: $ python3 run.py --account --edit blenderdumbass') def List(): folder = Set.Folder()+"/accounts" for account in os.listdir(folder): if account.endswith(".json"): print(account.replace(".json", "")) def Add(name): # Adds a new account. account = Load(name) if account: print(clr["bold"]+clr["tdrd"]+"Error:"+clr["norm"]+" Account already exists.") account = { "username":name, "bio":"", "invite_codes":{}, "invited":[], "invited_by":"", "password":hashlib.sha512(getpass("Account's Password: ").encode("utf-8")).hexdigest(), "title":name, "email":"", "website":"", "mastodon":"", "matrix":"", "sessions":{} } Save(account) print(clr["bold"]+clr["tbyl"]+name+clr["norm"]+" is added."+clr["norm"]) def Edit(name): folder = Set.Folder()+"/accounts/" os.system("nano "+folder+name+".json")