Source code for censys.config

"""
Interact with the config file.
"""

import os
from pathlib import Path
from configparser import ConfigParser, NoOptionError

from censys import __version__

DEFAULT = "DEFAULT"

xdg_config_path = os.path.join(str(Path.home()), ".config")
censys_path = os.path.join(xdg_config_path, "censys")
config_path = os.path.join(censys_path, "censys.cfg")

default_config = {
    "version": __version__,
    "api_id": "",
    "api_secret": "",
    "asm_api_key": "",
}


[docs]def write_config(config): """ Writes config to file. Args: config: Configuration to write. """ with open(config_path, "w") as configfile: config.write(configfile)
[docs]def get_config(): """ Reads and returns config. """ config = ConfigParser() if not os.path.isdir(xdg_config_path): os.mkdir(xdg_config_path) if not os.path.isdir(censys_path): os.mkdir(censys_path) if not os.path.exists(config_path): config[DEFAULT] = default_config with open(config_path, "w") as configfile: config.write(configfile) config.read(config_path) check_config(config) if config.get(DEFAULT, "version") != __version__: config.set(DEFAULT, "version", __version__) write_config(config) return config
[docs]def check_config(config): """ Checks config against default config for fields. Args: config: Configuration to write. """ for key in default_config: try: config.get(DEFAULT, key) except NoOptionError: config.set(DEFAULT, key, default_config.get(key)) write_config(config)