""" Usage: certo [-v] [-j] ... [-d DAYS|--days-to-expiration=DAYS] [-t SECONDS|--timeout=SECONDS] Options: -v Increase verbosity [default: False] -j Output in JSON format [default: False] -d DAYS --days-to-expiration=DAYS Warn about impending expiration if within DAYS of the cert's notAfter [default: 5] -t SECONDS --timeout=SECONDS Timeout for SSL Handshake [default: 5] """ import logging from docopt import docopt from certo.checks.hostname import check_host_certificate_expiration from certo.report import JSONReporter, DefaultReporter if __name__ == "__main__": args = docopt(__doc__) output_as_json = args.get("-j") if args.get("-v"): logging.getLogger().setLevel(logging.INFO) hostnames = args.get("") days_to_expiration = int(args.get("--days-to-expiration")) # @todo factory if output_as_json: reporter = JSONReporter() else: reporter = DefaultReporter() # @todo async for hs in hostnames: logging.info(f"Getting CERT from {hs}") reporter.add_check(check_host_certificate_expiration(hs, days_to_expiration)) if log := reporter.report(): print(log) exit(reporter.num_failed())