in msticpy/nbtools/nbinit.py [0:0]
def _get_or_create_config() -> bool:
# Cases
# 1. Env var set and mpconfig exists -> goto 4
# 2. Env var set and mpconfig file not exists - warn and continue
# 3. search_for_file finds mpconfig -> goto 4
# 4. if file and check_file_contents -> return ok
# 5. search_for_file(config.json)
# 6. If config.json -> import into mpconfig and save
# 7. Error - no Microsoft Sentinel config
mp_path = os.environ.get("MSTICPYCONFIG")
if mp_path and not Path(mp_path).is_file():
_err_output(_MISSING_MPCONFIG_ENV_ERR)
if not mp_path or not Path(mp_path).is_file():
mp_path = search_for_file("msticpyconfig.yaml", paths=[".", ".."])
if mp_path:
errs: List[str] = []
try:
std_out_cap = io.StringIO()
with redirect_stdout(std_out_cap):
errs, _ = validate_config(config_file=mp_path)
if errs:
_pr_output(std_out_cap.getvalue())
if _verify_no_azs_errors(errs):
# If the mpconfig has a Microsoft Sentinel config, return here
return True
# pylint: disable=broad-except
except Exception as err:
errs.append(f"Exception while checking configuration:\n{err}")
_pr_output(f"Exception while checking configuration:\n{type(err)} - {err}")
_pr_output("\n".join(traceback.format_tb(err.__traceback__)))
_pr_output("Please report this to msticpy@microsoft.com")
# pylint: enable=broad-except
# Look for a config.json
config_json = search_for_file("config.json", paths=[".", ".."])
if config_json:
# if we found one, use it to populate msticpyconfig.yaml
_populate_config_to_mp_config(mp_path, config_json)
return True
_pr_output("No valid configuration for Microsoft Sentinel found.")
return False