From d0e60aec6a27edb1cec64b23ea26de7c19138331 Mon Sep 17 00:00:00 2001 From: Bastian Tweddell Date: Sat, 23 Oct 2021 22:58:50 +0200 Subject: [PATCH 1/5] add arg --outfile - default behaviour: if --outfile is not given or equals "STDOUT" then the signed cert is printed to STDOUT as legacy - otherwise the file given with --outfile is opened for write and sigend cert is written to it (no handling of mode bits, because the cert is no secret) --- acme_tiny.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/acme_tiny.py b/acme_tiny.py index d992d02d..92524f7c 100755 --- a/acme_tiny.py +++ b/acme_tiny.py @@ -189,11 +189,13 @@ def main(argv=None): parser.add_argument("--ca", default=DEFAULT_CA, help="DEPRECATED! USE --directory-url INSTEAD!") parser.add_argument("--contact", metavar="CONTACT", default=None, nargs="*", help="Contact details (e.g. mailto:aaa@bbb.com) for your account-key") parser.add_argument("--check-port", metavar="PORT", default=None, help="what port to use when self-checking the challenge file, default is port 80") + parser.add_argument("--outfile", metavar="FILE", required=False, default="STDOUT", help="write signed cert to this file. default=STDOUT") args = parser.parse_args(argv) LOGGER.setLevel(args.quiet or LOGGER.level) signed_crt = get_crt(args.account_key, args.csr, args.acme_dir, log=LOGGER, CA=args.ca, disable_check=args.disable_check, directory_url=args.directory_url, contact=args.contact, check_port=args.check_port) - sys.stdout.write(signed_crt) + with sys.stdout if args.outfile == "STDOUT" else open(args.outfile, "w") as fout: + fout.write(signed_crt) if __name__ == "__main__": # pragma: no cover main(sys.argv[1:]) From ac2fc53c410bcf5fdda2ffcee6794e9fa649fbbc Mon Sep 17 00:00:00 2001 From: Bastian Tweddell Date: Sat, 23 Oct 2021 23:22:08 +0200 Subject: [PATCH 2/5] log write destination --- acme_tiny.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/acme_tiny.py b/acme_tiny.py index 92524f7c..676afecb 100755 --- a/acme_tiny.py +++ b/acme_tiny.py @@ -194,7 +194,9 @@ def main(argv=None): args = parser.parse_args(argv) LOGGER.setLevel(args.quiet or LOGGER.level) signed_crt = get_crt(args.account_key, args.csr, args.acme_dir, log=LOGGER, CA=args.ca, disable_check=args.disable_check, directory_url=args.directory_url, contact=args.contact, check_port=args.check_port) + with sys.stdout if args.outfile == "STDOUT" else open(args.outfile, "w") as fout: + LOGGER.info(f"Writing signed certificate to {args.outfile}") fout.write(signed_crt) if __name__ == "__main__": # pragma: no cover From a50fc4d9eb90c52fe0c7b64665111e0c4b067b5b Mon Sep 17 00:00:00 2001 From: Bastian Tweddell Date: Sun, 24 Oct 2021 08:58:28 +0200 Subject: [PATCH 3/5] convert f-string to str.format() this should fix the test errors --- acme_tiny.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/acme_tiny.py b/acme_tiny.py index 676afecb..85f439cb 100755 --- a/acme_tiny.py +++ b/acme_tiny.py @@ -196,7 +196,8 @@ def main(argv=None): signed_crt = get_crt(args.account_key, args.csr, args.acme_dir, log=LOGGER, CA=args.ca, disable_check=args.disable_check, directory_url=args.directory_url, contact=args.contact, check_port=args.check_port) with sys.stdout if args.outfile == "STDOUT" else open(args.outfile, "w") as fout: - LOGGER.info(f"Writing signed certificate to {args.outfile}") + LOGGER.info("Writing signed certificate to {outfile}".format(outfile=args.outfile)) + ) fout.write(signed_crt) if __name__ == "__main__": # pragma: no cover From 4c5d79cdb6e9d30977554cadba96f698bf22a934 Mon Sep 17 00:00:00 2001 From: Bastian Tweddell Date: Sun, 24 Oct 2021 09:00:09 +0200 Subject: [PATCH 4/5] remove stray line with ) --- acme_tiny.py | 1 - 1 file changed, 1 deletion(-) diff --git a/acme_tiny.py b/acme_tiny.py index 85f439cb..26462481 100755 --- a/acme_tiny.py +++ b/acme_tiny.py @@ -197,7 +197,6 @@ def main(argv=None): with sys.stdout if args.outfile == "STDOUT" else open(args.outfile, "w") as fout: LOGGER.info("Writing signed certificate to {outfile}".format(outfile=args.outfile)) - ) fout.write(signed_crt) if __name__ == "__main__": # pragma: no cover From 080b342d0dbcd8956f17f8fa93159cc489fcc40a Mon Sep 17 00:00:00 2001 From: Bastian Tweddell Date: Sun, 24 Oct 2021 21:13:59 +0200 Subject: [PATCH 5/5] don't close stdout --- acme_tiny.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/acme_tiny.py b/acme_tiny.py index 26462481..15e72e72 100755 --- a/acme_tiny.py +++ b/acme_tiny.py @@ -189,15 +189,18 @@ def main(argv=None): parser.add_argument("--ca", default=DEFAULT_CA, help="DEPRECATED! USE --directory-url INSTEAD!") parser.add_argument("--contact", metavar="CONTACT", default=None, nargs="*", help="Contact details (e.g. mailto:aaa@bbb.com) for your account-key") parser.add_argument("--check-port", metavar="PORT", default=None, help="what port to use when self-checking the challenge file, default is port 80") - parser.add_argument("--outfile", metavar="FILE", required=False, default="STDOUT", help="write signed cert to this file. default=STDOUT") + parser.add_argument("--outfile", metavar="FILE", required=False, default=None, help="write signed cert to this file. default=STDOUT") args = parser.parse_args(argv) LOGGER.setLevel(args.quiet or LOGGER.level) signed_crt = get_crt(args.account_key, args.csr, args.acme_dir, log=LOGGER, CA=args.ca, disable_check=args.disable_check, directory_url=args.directory_url, contact=args.contact, check_port=args.check_port) - with sys.stdout if args.outfile == "STDOUT" else open(args.outfile, "w") as fout: + if args.outfile: LOGGER.info("Writing signed certificate to {outfile}".format(outfile=args.outfile)) - fout.write(signed_crt) + with open(args.outfile, "w") as fout: + fout.write(signed_crt) + else: + sys.stdout.write(signed_crt) if __name__ == "__main__": # pragma: no cover main(sys.argv[1:])