Commit graph

10392 commits

Author SHA1 Message Date
Adrien Ferrand
9264561944 Check pattern for both old and new openssl (#6450) 2018-10-29 15:56:30 -07:00
ohemorange
36ebce4a5f Fix ranking of vhosts in Nginx so that all port-matching vhosts come first (#6412)
To more closely match how Nginx ranks things.
2018-10-19 19:16:54 -07:00
Adrien Ferrand
7b17c84dd9 Remove custom code for fail fast because rolling builds in AppVeyor are enabled. (#6431) 2018-10-19 17:37:22 -07:00
Adrien Ferrand
1e8c13ebf9 [Windows] Create the CI logic (#6374)
So here we are: after #6361 has been merged, time is to provide an environment to execute the automated testing on Windows.

Here are the assertions used to build the CI on Windows:

every test running on Linux should ultimately be runnable on Windows, in a cross-platform compatible manner (there is one or two exception, when a test does not have any meaning for Windows),
currently some tests are not runnable on Windows: theses tests are ignored by default when the environment is Windows using a custom decorator: @broken_on_windows,
test environment should have functionalities similar to Travis, in particular an execution test matrix against various versions of Python and Windows,
so test execution is done through AppVeyor, as it supports the requirements: it add a CI step along Travis and Codecov for each PR, all of this ensuring that Certbot is entirely functional on both Linux and Windows,
code in tests can be changed, but code in Certbot should be changed as little as possible, to avoid regression risks.
So far in this PR, I focused on the tests on Certbot core and ACME library. Concerning the plugins, it will be done later, for plugins which have an interest on Windows. Test are executed against Python 3.4, 3.5, 3.6 and 3.7, for Windows Server 2012 R2 and Windows Server 2016.

I succeeded at making 258/259 of acme tests to work, and 828/868 of certbot core tests to work. Most of the errors where not because of Certbot itself, but because of how the tests are written. After redesigning some test utilitaries, and things like file path handling, or CRLF/LF, a lot of the errors vanished.

I needed also to ignore a lot of IO errors typically occurring when a tearDown test process tries to delete a file before it has been closed: this kind of behavior is acceptable for Linux, but not for Windows. As a consequence, and until the tearDown process is improved, a lot of temporary files are not cleared on Windows after a test campaign.

Remaining broken tests requires a more subtile approach to solve the errors, I will correct them progressively in future PR.

Last words about tox. I did not used the existing tox.ini for now. It is just to far from what is supported on Windows: lot of bash scripts that should be rewritten completely, and that contain test logic not ready/relevant for Windows (plugin tests, Docker compilation/test, GNU distribution versatility handling and so on). So I use an independent file tox-win.ini for now, with the goal to merge it ultimately with the existing logic.

* Define a tox configuration for windows, to execute tests against Python 3.4, 3.5, 3.6 and 3.7 + code coverage on Codecov.io

* Correct windows compatibility on certbot codebase

* Correct windows compatibility on certbot display functionalities

* Correct windows compatibility on certbot plugins

* Correct test utils to run tests on windows. Add decorator to skip (permanently) or mark broken (temporarily) tests on windows

* Correct tests on certbot core to run them both on windows and linux. Mark some of them as broken on windows for now.

* Lock tests are completely skipped on windows. Planned to be replace in next PR.

* Correct tests on certbot display to run them both on windows and linux. Mark some of them as broken on windows for now.

* Correct test utils for acme on windows. Add decorator to skip (permanently) or mark broken (temporarily) tests on windows.

* Correct acme tests to run them both on windows and linux. Allow a reduction of code coverage of 1% on acme code base.

* Create AppVeyor CI for Certbot on Windows, to run the test matrix (py34,35,36,37+coverage) on Windows Server 2012 R2 and Windows Server 2016.

* Update changelog with Windows compatibility of Certbot.

* Corrections about tox, pyreadline and CI logic

* Correct english

* Some corrections for acme

* Newlines corrections

* Remove changelog

* Use os.devnull instead of /dev/null to be used on Windows

* Uid is a always a number now.

* Correct linting

* PR https://github.com/python/typeshed/pull/2136 has been merge to third-party upstream 6 months ago, so code patch can be removed.

* And so acme coverage should be 100% again.

* More compatible tests Windows+Linux

* Use stable line separator

* Remove unused import

* Do not rely on pytest in certbot tests

* Use json.dumps to another json embedding weird characters

* Change comment

* Add import

* Test rolling builds #1

* Test rolling builds #2

* Correction on json serialization

* It seems that rolling builds are not canceling jobs on PR. Revert back to fail fast code in the pipeline.
2018-10-19 14:53:15 -07:00
sydneyli
8dd68a6551 Add and test new nginx parsing abstractions (#6383)
* feat(nginx): add and test new parsing abstractions

* chore(nginx parser): fix mypy and address small comments

* chore(nginx parser): clean up by removing context object

* fix integration test and lint
2018-10-19 12:30:32 -07:00
Daniel McCarney
0dab41ee13 docs: remove mentions of #letsencrypt on Freenode. (#6419)
* docs: remove mentions of #letsencrypt on Freenode.

* docs: remove unused Freenode link
2018-10-18 13:12:47 -07:00
sydneyli
bfaf0296de
Also write README file to /etc/letsencrypt/live (#6377)
We want to discourage people from moving things around in `/etc/letsencrypt/live`! So we dropped an extra README in the `/etc/` directory when it's first created.
2018-10-18 11:39:21 -07:00
Brad Warren
b9dd40b350
Merge pull request #6271 from certbot/prune_neworder
Do not send status or resource fields in newOrder payloads for ACMEv2
2018-10-18 11:17:59 -07:00
Erica Portnoy
6500b9095e Add test to confirm that status isn't set on neworder object 2018-10-18 10:37:56 -07:00
Erica Portnoy
ee02ed65af remove default status from Order so that the status field isn't filled in upon boulder deserialization 2018-10-18 10:26:37 -07:00
Erica Portnoy
a3a3840e91 replace status field 2018-10-18 10:19:57 -07:00
Erica Portnoy
ca155b48ae Merge branch 'master' into prune_neworder 2018-10-18 10:16:59 -07:00
schoen
3de3188dd6 Warn manual authenticator users not to remove/undo previous challenges (#6370)
* Warn users not to remove/undo previous challenges

* Even more specific DNS challenge message

* Fix spacing and variable names

* Create a second test DNS challenge for UI testing

* Changelog for subsequent manual challenge behavior
2018-10-18 14:44:45 +03:00
schoen
92501eaf8f Note about running on web server, not PC (#6422) 2018-10-17 14:08:59 -07:00
Ștefan Talpalaru
819f95c37d certbot_dns_linode: increase the default propagation interval (#6320)
Using the default value of 16 minutes (960 seconds) for
--dns-linode-propagation-seconds leads to DNS failures when the randomly
selected Linode DNS is not the first one out of six, due to an additional
delay before the other five are updated.

The problem can be easily solved by increasing the wait interval, so
this commit increases the default value to 20 minutes.

More details: https://community.letsencrypt.org/t/dns-servers-used-by-letsencrypt-for-challenges/32127/16
2018-10-17 13:48:49 -07:00
ohemorange
22da2447d5 Stop caching the results of ipv6_info in http01.py (#6411)
Stop caching the results of ipv6_info in http01.py. A call to choose_vhosts might change the ipv6 results of later calls. Add tests for this and default_listen_addresses more broadly.
2018-10-17 10:54:43 -07:00
ohemorange
139ef20650 Add debugging info for Nginx tls-sni and http integration tests purposes (#6414) 2018-10-15 10:41:04 -07:00
ohemorange
e0f760099c
Merge pull request #6407 from fghzxm/patch-1
Fix typo in using.rst
2018-10-09 13:50:07 -04:00
fghzxm
19f74c3dc7
Fix typo in using.rst 2018-10-07 11:14:09 +08:00
ohemorange
06174bc113
Merge pull request #6388 from certbot/local-revoke-certname
revoke accepts --cert-name
2018-09-24 18:44:44 -07:00
schoen
15932dcafc
Merge pull request #6389 from DigitalBrains1/quiet-sudo
Respect --quiet when reporting sudo invocation
2018-09-24 16:34:18 -07:00
Peter Lebbing
e8eeab3eab
Respect --quiet when reporting sudo invocation 2018-09-23 14:22:20 +02:00
Erica Portnoy
eb7a10b5c0 use safe args 2018-09-20 20:12:51 -07:00
Erica Portnoy
faa44070f5 remove inappropriate logic and tests 2018-09-20 20:09:47 -07:00
Erica Portnoy
7ccd6ec98e update changelog 2018-09-20 20:00:13 -07:00
Erica Portnoy
b42283f0b3 update boulder integration test to check for new behavior 2018-09-20 19:57:48 -07:00
Erica Portnoy
f4d615371e Don't let users select both --cert-name and --cert-path when revoking 2018-09-20 19:52:52 -07:00
Erica Portnoy
cb4b1897c9 Make it clear that we don't need both --cert-path and --cert-name 2018-09-20 19:51:27 -07:00
Erica Portnoy
e6a9fa8695 Merge branch 'master' into local-revoke-certname 2018-09-20 19:48:20 -07:00
Adrien Ferrand
efd2ed1bdb Correct OVH integration tests on machines without internet access (#6380)
* Correct OVH integration tests on machines without internet.

* Update changelog
2018-09-18 17:35:28 -07:00
ohemorange
3ef43e4d88
Update parser to match new Nginx functionality (#6381)
Previously, Nginx did not allow `${` to start a variable name. Now it's allowed to. This means we'll be more permissible than Nginx when people are on older versions of Nginx, but it's unlikely anyone was relying on this to fail in the first place, so that's probably ok.
2018-09-18 12:52:11 -07:00
Adrien Ferrand
e501322ff1 Connect AppVeyor to the certbot git repository (#6361) 2018-09-13 15:20:22 -07:00
David Beitey
38b1d9d6ba More detailed error logging for nginx plugin (#6175)
This makes errors more useful when Nginx can't be found or when Nginx's
configuration can't be found.  Previously, a generic
`NoInstallationError` isn't descriptive enough to explain _what_ wasn't
installed or what failed without going digging into the source code.
2018-09-12 16:48:50 -07:00
Eli Young
b32ec6ed30 Remove CHANGES.rst (#6162)
The change log is now being tracked in CHANGELOG.md, so CHANGES.rst is
no longer necessary.
2018-09-12 16:40:10 -07:00
Sam Bull
a3b858db34 Exclude one-time use parameters. Fixes #6118 (#6223)
* Exclude one-time use parameters. Fixes #6118

* Fix error.

* Delete items inplace, rather than creating new list.

* Fix stupid mistake.

* Use .index() for stability.

* Try previous idea while resetting the index.

* Shorter comment for pylint.

* More readable approach

* Fix whitespace
2018-09-12 16:38:37 -07:00
Jacob Hoffman-Andrews
8f7209de14
Silence spammy integration test cases. (#5934) 2018-09-12 16:35:43 -07:00
Brad Warren
251355cade Add better error handling around release signatures (#6353)
* Better error handling around sig after offline-sig

* Add error handling around first sig with git.

* Don't fail if offline-sig fails.
2018-09-11 15:44:26 -07:00
Adrien Ferrand
85a859d63f Make Certbot runnable on Windows (#6296)
* Add and use a compatibility layer to allow certbot to be run on windows.

* Fix path comparison

* Corrections on compat and util for tests

* Less intrusive way to parse prefix in webroot plugin working for both linux and windows.

* Disable pylint import-error for some optional imports in compat.py

* Ensure path is normalized before prefixes are generated in webroot plugin

* Same prefixes in linux and windows, in fact root path is not needed in webroot plugin

* Check that user has administrative rights before continuing on windows (necessary for symlink creation)

* More straightforward way to test administrative rights on windows

* Try to resolve import error in travis ci

* OK. We go for full introspection to trick the ci.

* Move the administrative rights control to the certbot entrypoint

* Add comment for a really non trivial code.

* Allow some commands to be run on a shell without admin rights

* Avoid races conditions on windows for lock files

* Add sphinx doc to the compat functions.

* Remove irrelevant Windows error in the lock mechanism.

* Some corrections on compat
2018-09-08 07:34:27 -07:00
Brad Warren
5d1c6d28d5
Update DNS plugin docs. (#6358) 2018-09-07 12:18:59 -07:00
ohemorange
b50abddb5f
Candidate 0.27.1 (#6351)
* fix(apache): s/handle_mods/handle_modules (#6347) (#6349)

fixes #6344

* fix(apache): s/handle_mods/handle_modules

* test(apache): ensure all keys defined in OS_DEFAULTS overrides

* changelog udpate

(cherry picked from commit 4e2faffe89)

* Release 0.27.1

* Bump version to 0.28.0
2018-09-06 17:49:24 -07:00
ohemorange
101eae4e05
Update CHANGELOG.md for 0.27.1 release (#6350) 2018-09-06 17:21:31 -07:00
sydneyli
4e2faffe89 fix(apache): s/handle_mods/handle_modules (#6347)
fixes #6344

* fix(apache): s/handle_mods/handle_modules

* test(apache): ensure all keys defined in OS_DEFAULTS overrides

* changelog udpate
2018-09-06 15:00:20 -07:00
ohemorange
d39a354a65 Create master section for incremental changes (#6342) 2018-09-06 10:17:51 -07:00
ohemorange
05ad539255
git ignore pytest cache (#6340) 2018-09-05 18:05:48 -07:00
ohemorange
0c66de47cf
Remind people to modify changelog when submitting PRs (#6341)
* Remind people to modify changelog when submitting PRs

* Update pull_request_template.md
2018-09-05 18:05:42 -07:00
Brad Warren
a6f5189593
Merge pull request #6339 from certbot/candidate-0.27.0
Candidate 0.27.0
2018-09-05 17:31:58 -07:00
Brad Warren
2708d28157
Update changelog for 0.27.0 (#6338) 2018-09-05 17:13:30 -07:00
Erica Portnoy
e28f3da974 Bump version to 0.28.0 2018-09-05 15:42:01 -07:00
Erica Portnoy
19149a0d57
Release 0.27.0 2018-09-05 15:41:59 -07:00
Brad Warren
e178bbfdf5 Release script improvements (#6337)
* Add error checking and automatic logging.

* Ignore release dir and logs

* Don't always require PGP card and fix script cmd.

* keep track of default GPG key

* Add PGP card sanity check after offline signature

* fix typo

* I'm tired of pressing y.

* Automate running tools/offline-sigrequest.sh.

* Update comment and make output more readable.
2018-09-05 14:10:05 -07:00