""" Usage: certo [-vj] ... [-d DAYS|--days-to-expiration=DAYS] [-t SECONDS|--timeout=SECONDS] certo -h | --help Options: -h --help Show this help. -j Output in JSON format [default: False]. -v Increase verbosity [default: False]. -d DAYS --days-to-expiration=DAYS Warn about near 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())