#!/usr/bin/env python

# This import _must_ be first
import _fipscustomize # noqa: F401, isort:skip

import base64
import json
import os
import sys
from argparse import ArgumentParser

from twisted.logger import globalLogPublisher, textFileLogObserver

from duoauthproxy.lib import const, log, path_util
from duoauthproxy.lib.secret_storage import store_secret


def main():
    # Set the logger to output to stdout and ready the logger
    stdout_observer = textFileLogObserver(sys.stdout)
    globalLogPublisher.addObserver(stdout_observer)
    log.ready()

    parser = ArgumentParser()
    parser.add_argument("enroll_code")
    options = parser.parse_args()
    home_dir = path_util.get_home_dir()
    os.chdir(home_dir)

    try:
        secrets = json.loads(base64.standard_b64decode(options.enroll_code))

        store_secret(const.DRPC_PROXY_KEY_IDENTIFIER, secrets["proxy_key"])
        store_secret(const.DRPC_API_HOST_IDENTIFIER, secrets["api_host"])
        store_secret(const.DRPC_SIGNING_SKEY_IDENTIFIER, secrets["signing_skey"])
        store_secret(const.DRPC_ENCRYPTION_SKEY_IDENTIFIER, secrets["encryption_skey"])

        print("All secrets stored successfully")
        sys.exit(0)
    except Exception as e:
        print(e)
        sys.exit(1)


if __name__ == "__main__":
    main()
