Commit Graph
10036 Commits
Author SHA1 Message Date
22cf94f930 cli: clean up certbot renew summary (#8503)
* cli: clean up `certbot renew` summary

- Unduplicate output which was being sent to both stdout and stderr
- Don't use IDisplay.notification to buffer output
- Remove big "DRY RUN" guards above and below, instead change language
  to "renewal" or "simulated renewal"
- Reword "Attempting to renew cert ... produced an unexpected error"
  to be more concise.

* add newline to docstring

Co-authored-by: ohemorange <ebportnoy@gmail.com>

Co-authored-by: ohemorange <ebportnoy@gmail.com>
2020-12-03 16:38:59 -08:00
ohemorangeandGitHub d3166d7072 Merge pull request #8505 from certbot/candidate-1.10.1
Candidate 1.10.1
2020-12-03 12:29:26 -08:00
Brad Warren 67fecbe1e0 Merge branch 'master' into candidate-1.10.1 2020-12-03 11:01:46 -08:00
Brad Warren 1dfac955c7 Bump version to 1.11.0 2020-12-03 10:33:32 -08:00
Brad Warren 38f3d3d185 Add contents to certbot/CHANGELOG.md for next version 2020-12-03 10:33:32 -08:00
Brad Warren 64543d4970 Release 1.10.1 v1.10.1 2020-12-03 10:33:30 -08:00
Brad Warren 4c896fd87c Update changelog for 1.10.1 release 2020-12-03 10:20:11 -08:00
Brad WarrenandGitHub a71e22678f Fix add deprecated argument (#8500) (#8501)
Fixes https://github.com/certbot/certbot/issues/8495.

To further explain the problem here, `modify_kwargs_for_default_detection` as called in `add` is simplistic and doesn't always work. See https://github.com/certbot/certbot/issues/6164 for one other example.

In this case, were bitten by the code https://github.com/certbot/certbot/blob/d1e7404358c05734aaf436ef3c9d709029d62b09/certbot/certbot/_internal/cli/helpful.py#L393-L395

The action used for deprecated arguments isn't in `ZERO_ARG_ACTIONS` so it assumes that all deprecated flags take one parameter.

Rather than trying to fix this function (which I think can only realistically be fixed by https://github.com/certbot/certbot/issues/4493), I took the approach that was previously used in `HelpfulArgumentParser.add_deprecated_argument` of bypassing this extra logic entirely. I adapted that function to now call `HelpfulArgumentParser.add` as well for consistency and to make testing easier.

* Rename deprecated arg action class

* Skip extra parsing for deprecated arguments

* Add back test of --manual-public-ip-logging-ok

* Add changelog entry

(cherry picked from commit 5f73274390)
2020-12-03 09:06:05 +01:00
45e48b565d Fix changelog typo (#8497)
Co-authored-by: Adrien Ferrand <ferrand.ad@gmail.com>
2020-12-02 15:12:27 -08:00
Brad WarrenandGitHub 5f73274390 Fix add deprecated argument (#8500)
Fixes https://github.com/certbot/certbot/issues/8495.

To further explain the problem here, `modify_kwargs_for_default_detection` as called in `add` is simplistic and doesn't always work. See https://github.com/certbot/certbot/issues/6164 for one other example.

In this case, were bitten by the code https://github.com/certbot/certbot/blob/d1e7404358c05734aaf436ef3c9d709029d62b09/certbot/certbot/_internal/cli/helpful.py#L393-L395

The action used for deprecated arguments isn't in `ZERO_ARG_ACTIONS` so it assumes that all deprecated flags take one parameter.

Rather than trying to fix this function (which I think can only realistically be fixed by https://github.com/certbot/certbot/issues/4493), I took the approach that was previously used in `HelpfulArgumentParser.add_deprecated_argument` of bypassing this extra logic entirely. I adapted that function to now call `HelpfulArgumentParser.add` as well for consistency and to make testing easier.

* Rename deprecated arg action class

* Skip extra parsing for deprecated arguments

* Add back test of --manual-public-ip-logging-ok

* Add changelog entry
2020-12-02 15:08:07 -08:00
Brad WarrenandGitHub 87386769f7 Merge pull request #8499 from certbot/remove-centos6-tests-1.10.x
Remove centos6 tests 1.10.x
2020-12-02 13:08:03 -08:00
Brad Warren 7497c51f34 Undo certbot-auto changes and remove centos6 tests
* Don't deprecate certbot-auto quite yet

* Remove centos6 test farm tests

* undo changes to test farm test scripts

(cherry picked from commit e5113d5815)
2020-12-02 12:37:43 -08:00
Adrien FerrandandBrad Warren 1a3c96a955 Deprecate certbot-auto and remove tests
* Completely deprecate certbot-auto

* DeaDeactivate centos6/oraclelinux6 tests

* Remove tests assets

* Remove another test

* Revert "Remove tests assets"

This reverts commit e603afe6c4.

(cherry picked from commit ff3a07dca3)
2020-12-02 12:37:38 -08:00
Brad WarrenandGitHub d1e7404358 Merge pull request #8498 from certbot/remove-centos6-tests
Remove CentOS 6 tests
2020-12-02 12:35:55 -08:00
Brad Warren e5113d5815 Undo certbot-auto changes and remove centos6 tests
* Don't deprecate certbot-auto quite yet

* Remove centos6 test farm tests

* undo changes to test farm test scripts
2020-12-02 10:22:44 -08:00
Adrien FerrandandBrad Warren ff3a07dca3 Deprecate certbot-auto and remove tests
* Completely deprecate certbot-auto

* DeaDeactivate centos6/oraclelinux6 tests

* Remove tests assets

* Remove another test

* Revert "Remove tests assets"

This reverts commit e603afe6c4.
2020-12-02 09:48:57 -08:00
Brad WarrenandGitHub 31b5f1310e Fix changelog typo (#8488)
* fix changelog typo

* remove empty entry
2020-12-02 08:57:04 +11:00
ohemorangeandGitHub faa8d230c7 Merge pull request #8487 from certbot/candidate-1.10.0
Update files from 1.10.0 release
2020-12-01 12:25:10 -08:00
Brad Warren baab69e653 Bump version to 1.11.0 2020-12-01 10:35:58 -08:00
Brad Warren 7b687611a4 Add contents to certbot/CHANGELOG.md for next version 2020-12-01 10:35:57 -08:00
Brad Warren adacc4ab6d Release 1.10.0 v1.10.0 2020-12-01 10:35:55 -08:00
Brad Warren 43ee2993f1 Update changelog for 1.10.0 release 2020-12-01 10:22:39 -08:00
alexzorinandGitHub f5a88ade54 nginx: fix Unicode crash on Python 2 (#8480)
* nginx: fix py2 unicode sandwich

The nginx parser would crash when saving configuraitons containing
Unicode, because py2's `str` type does not support Unicode.

This change fixes that crash by ensuring that a string type supporting
Unicode is used in both Python 2 and Python 3.

* nginx: add unicode to the integration test config

* update CHANGELOG
2020-11-27 18:15:27 +01:00
Mads JensenandGitHub aea416f654 Fix link typo in README (#8476) 2020-11-25 10:11:51 +01:00
Brad WarrenandGitHub 9a4e95e25a Add Python 3.9 support and tests (#8460)
Fixes https://github.com/certbot/certbot/issues/8134.

* Test on Python 3.9.

* Mention Python 3.9 support in changelog.

* s/\( *'Pro.*3\.\)8\(',\)/\18\2\n\19\2/

* undo changes to tox.ini

* Move more tests to Python 3.9

* Update PyYAML and packages which pinned it back

* Upgrade typed-ast

* Use <= to "pin" dnspython

* Fix lint by telling pylint it cannot be trusted

* Disable mypy on RFC plugin

* add comment about <= support
2020-11-19 12:48:36 -08:00
Brad WarrenandGitHub 9ca7f76505 Merge pull request #8444 from certbot/ecdsa
Integrate the ECDSA certificates feature on master
2020-11-19 11:54:24 -08:00
Brad WarrenandGitHub a8cede6ae1 Flesh out ECDSA documentation (#8464)
* Changelog tweaks.

* Add ECDSA documentation

* Fix typo
2020-11-19 09:10:56 +01:00
Mads JensenandGitHub be3d0d872f Read files as binary in crypto_util for crypto.load_certificate. (#8371) 2020-11-17 16:02:35 -08:00
Brad WarrenandGitHub 5a85825493 Merge pull request #8458 from certbot/fix-py2-integration
Fix Python 2 integration tests
2020-11-17 15:39:01 -08:00
Alex ZorinandBrad Warren e8139e80be certbot-ci: fix py2 crash in dns_server 2020-11-17 14:58:29 -08:00
Brad Warren 7ba35b4407 import print_function 2020-11-17 11:51:27 -08:00
alexzorinandGitHub 90557921e3 Add certbot-dns-rfc2136 integration testing (#8448)
* tests: add certbot-dns-rfc2136 integration tests

* dont use 'with' form of socket.socket

fixes py2 crash

* address some feedback:

- conftest: make DNS server a global resource
- conftest: add dns_xdist parameter into node config
- conftest: add --dns-server=bind flag
- conftest: if configured, point the ACME server to the DNS server
- dnsserver: make it sort-of compatible with xdist (future-proofing)
- context: parameterize dns-rfc2136 credentials file (future proofing)
- context: reduce dns-rfc2136 propagation time to speed up tests
- tox: add a integration-dns-rfc2136 target
- rfc2136: add a test/zone for subdelegation
- rfc2136: skip tests if no DNS server is configured

* try add integration-dns-rfc2136 to CI

* mock recursive dns via RPZ

* update --dns-server args and tox.ini args

* address more feedback:

- dns_server: rename rfc2136 creds file to .tpl
- dns_server: dont vary dns server port, instead we will vary zone names (#8455)
- dns_server: log error if bind9 fails to stop cleanly
- dns_server: replace assert with raise
- context: remove redundant _worker_id
- context: remove redundant cleanup override
- context: fix seek/flush in credentials context manager
- context: rename skip_if_no_server -> ...bind_server
- context: add newline EOF

* conftest: document _setup_primary_node sideeffects

* ci: rfc2136-integration from standard->nightly

* fix _stop_bind (function was renamed to stop)

* ignore errors from shutil.rmtree during cleanup

* dns_server: check for crash while polling

* remove --dry-run from rfc2136 test
2020-11-17 09:27:27 +01:00
alexzorinandGitHub 78edb2889e cli: improve Obtaining/Renewing wording (#8395)
* cli: improve Obtaining/Renewing wording

* dont use logger, and use new phrasing

* .display_util.notify: dont wrap

As this function is supposed to be an analogue for print, we do not want
it to wrap by default.
2020-11-12 16:09:29 -08:00
Adrien FerrandandGitHub 553d3279c6 Add --dns-server option in run_acme_server (#7722)
Fixes #7717

This PR adds a `--dns-server` option to the `run_acme_server` test tool, in order to provide an arbitrary DNS server to Pebble or Boulder for the integration tests.

I also take this occasion to make `run_acme_server` a real CLI tool using argparse, and set the `--server-type` (default `pebble`) option as well.

* Set --dns-server flag in run_acme_server

* Default to pebble

* Add documentation

* Configure also Boulder
2020-11-12 15:31:32 -08:00
Mads JensenandGitHub b742b60c4d Use better asserts. Added notes to style guide. (#8451) 2020-11-12 23:33:02 +01:00
Adrien FerrandandGitHub 2132cf7f04 Use Python 3.8 for Linux integration tests (#8449)
Do we have any specific reason to run the standard Linux integration tests on Python 2.7?

If not, we should move to a more recent version of Python. This PR does it for Python 3.8.
2020-11-12 12:44:05 -08:00
Brad WarrenandGitHub f15f4f9838 Add certbot renew --key-type test (#8447)
* Test certbot renew --key-type

* Fix typo
2020-11-12 00:06:50 +01:00
Adrien FerrandandGitHub 2a118f3e83 Close the session once snap connections are acquired (#8438)
This PR uses the context manager available for `requests.Session` to close properly the `session` once snap connections have been acquired.
2020-11-11 12:54:29 -08:00
8f5787008d Handle unexpected key type migration. (#8435)
Fixes #8365

This PR adds a control when `certbot certonly` or `certbot run` are called for a certificate that already exists and would eventually be replaced. As described in #8365, this control is here to ensure that the user will not modify the key type of their certificate (eg. ECDSA to RSA) without an explicit approval (set explicitly `--cert-name` and `--key-type`), since RSA is the default if not specified.

* Handle unexpected key type migration.

* Update certbot-ci/certbot_integration_tests/certbot_tests/test_main.py

Co-authored-by: Brad Warren <bmw@users.noreply.github.com>
2020-11-11 12:36:16 -08:00
alexzorinandGitHub db2ffea351 Fix #8436 & #8432 tests (#8440)
* tests: fix leaking patch in eff_test.py

* tests: PrintTest->NotifyTest in .display.util

The function was renamed during #8432. This change renames the test as
well.
2020-11-10 14:42:51 -08:00
alexzorinandGitHub bf20f39ceb cli: miscellaneous IReporter removals (#8436)
* certbot delete: use undecorated print

* certbot revoke: use undecorated print

* certbot revoke: remove ireporter usages

* eff: remove IReporter usages

* certbot unregister: remove IReporter usage

* certbot update_account: remove IReporter usages

* certbot run: remove IReporter in duplicate prompt

* fix test_revoke_multiple_lineages
2020-11-09 15:31:27 -08:00
alexzorinandGitHub 11a4882128 certbot.display: add new method to print CLI messages (#8432)
* IDisplay.notification: add `decorate` param.

The flag allows the caller to control whether the message will be
printed in a decorated way (wrapped by hlines) or in an undecorated
way (similar to print).

It is set to true by default, to reflect the existing behavior of the
function.

* IDisplay.notification: write message to debug log

In the same vein as IReporter, this ensures that all notifications which
are shown to the user also make an appearance in the debug log, which
will aid in troubleshooting.

* restore accidentally deleted newline in decoration

* add helper function for printing status messages

* register: use notify rather than logger

Undoes the change in #8393 in favor of the new helper

* comment .display and ._internal.log

Describing when it is suitable to use each

* add more comments to log.py

* make IDisplay.notification decorate arg private

* rename notify->print and move to .display.util

* rename .display.print back to .display.notify

because linters complain about print being a redefined builtin
2020-11-06 16:47:07 -08:00
Brad WarrenandGitHub c102ca66c3 Write a replacement for pipstrap (#8401)
* Add a new, simplified version of pipstrap.

* Use tools/pipstrap.py

* Uncomment code

* Refactor pip_install.py and provide hashes.

* Fix test_sdists.sh.

* Make code work on Python 2.

* Call strip_hashes.py using Python 3.

* Pin the oldest version of httplib2 used in distros

* Strip enum34 dependency.

* Remove pip pinnings from dev_constraints.txt

* Correct pipstrap docstring.

* Don't set working_dir twice.

* Add comments
2020-11-06 11:17:41 +01:00
Brad WarrenandGitHub 75365f1d4e Remove python_version setting from mypy.ini (#8426)
* Remove python_version from mypy.ini.

* Fix magic_typing

* Ignore msvcrt usage.

* make mypy happier

* clean up changes

* Add type for reporter queue

* More mypy fixes

* Fix pyrfc3339 str.

* Remove unused import.

* Make certbot.util mypy work in both Pythons

* Fix typo
2020-11-05 15:28:35 -08:00
Adrien FerrandandGitHub 198f5a99bc Merge pull request #8431 from atombrella/ec_dsa_2163
Implements support for ECDSA keys. Fixes #2163.
2020-11-04 23:43:46 +01:00
47c1045f6d Implements support for ECDSA keys. Fixes #2163.
Thanks to @pahrohfit and @Tomoyuki-GH for previous efforts to implement
suport for this.

Co-Authored-By: Robert Dailey <rob@wargam.es>
Co-Authored-By: Tomoyuki-GH <55397638+Tomoyuki-GH@users.noreply.github.com>
2020-11-04 15:16:48 +01:00
Brad WarrenandGitHub e570e8ad32 Generate plugin snap configs as needed (#8411)
While reviewing https://github.com/certbot/certbot/pull/8404, it occurred to me that we're keeping both the generated files and the script used to generate them in `git`. Keeping both around seems unnecessary and is almost asking for the files to get out of sync at some point in the future. I fixed that by removing the files, adding them to `.gitignore`, and updating `build_remote.py` to generate them as needed.

* Remove generated files.

* Add generated files to gitignore.

* Reuse generate_dnsplugins_all.sh in build_remote
2020-10-30 14:12:57 -07:00
Brad WarrenandGitHub df138d0027 Document that logs aren't always created. (#8410) 2020-10-30 13:15:47 -07:00
Brad WarrenandGitHub 9567352002 Update tools/snap/generate_* comments. (#8412) 2020-10-30 13:08:57 -07:00
Brad WarrenandGitHub 6c7b99f7e0 Remove fedora test farm tests (#8415)
While working on https://github.com/certbot/certbot/issues/8400, I noticed our Fedora AMIs are quite out of date. I considered updating them and what we could do to avoid the AMIs becoming so out-of-date in the future, but I think we don't actually need these tests.

I pulled a new count of Certbot users by OS and we have less than 7,000 Fedora users meaning only ~0.26% of Certbot users run Fedora. (I think Fedora is a popular desktop OS, but not as popular of a server OS which is where Certbot normally runs.)

Also, Certbot is regularly updated on Fedora including Fedora Rawhide or the rolling release version of Fedora which is similar to Debian sid/unstable. Rawhide changes far too frequently for it to make sense for us to run tests there in my opinon, but that also means that many problems such as Certbot's unit tests failing to run because of Fedora changes will be caught there by our Fedora maintainers before we'd even see it. This is how https://github.com/certbot/certbot/issues/7106 became an issue and how I learned [Certbot worked on Python 3.9 before we could run tests on it](https://github.com/certbot/certbot/issues/8134#issuecomment-655106169).

Because of all this, I think we should just simplify things and remove these tests. If a problem arises in the future, we can always add them back.
2020-10-28 15:52:20 -07:00