Commit Graph
7679 Commits
Author SHA1 Message Date
Zach Shepherd 9e206f8024 DigitalOcean DNS Authenticator
Implement an Authenticator which can fulfill a dns-01 challenge using the
DigitalOcean API. Applicable only for domains using DigitalOcean for DNS.

Testing Done:
 * `tox -e py27`
 * `tox -e lint`
 * Manual testing:
    * Used `certbot certonly --dns-digitalocean -d`, specifying a
      credentials file as a command line argument. Verified that a
      certificate was successfully obtained without user interaction.
    * Used `certbot certonly --dns-digitalocean -d`, without specifying a
      credentials file as a command line argument. Verified that the user
      was prompted and that a certificate was successfully obtained.
    * Used `certbot certonly -d`. Verified that the user was prompted for
      a credentials file after selecting digitalocean interactively and
      that a certificate was successfully obtained.
    * Used `certbot renew --force-renewal`. Verified that certificates
      were renewed without user interaction.
 * Negative testing:
    * Path to non-existent credentials file.
    * Credentials file with unsafe permissions (644).
    * Credentials file missing token.
    * Credentials file with blank token.
    * Credentials file with incorrect token.
    * Domain name not registered to DigitalOcean account.
2017-05-11 17:26:02 -07:00
Zach ShepherdandBrad Warren 71451dd54b security: preserve permissions on renewal conf (#4430)
Ensure that permissions are preserved when renewal data is written to
conf files. This allows users to limit access to the file, if they wish.

Testing done:
 * `tox -e py27`
 * `tox -e lint`
 * Manual Testing
    * Got a new certificate. Restricted the permissions on the renewal
      conf. Renewed the certificate. Verified that the new renewal conf
      permissions matched.
2017-05-11 15:49:34 -07:00
Brad WarrenandGitHub be7e99a461 Pin dependency versions when using tools/venv.sh (#4629)
* Revert "Pin python-augeas version to avoid error with 1.0.0 (#4422)"

This reverts commit 1c51ae2588.

* make dependency-requirements

* separate certbot and dependency requirements

* fix build.py

* update hashin comment

* simplify release pinning

* separate letsencrypt dependency

* pin hashes in venv

* error out when bad things happen

* use pinned dependencies in tox

* Revert "pin hashes in venv"

This reverts commit 1cd38a9e50.

* use pip_install.sh in venv_common

* quote pip install args

* bump mock version
2017-05-11 10:06:05 -07:00
Brad WarrenandGitHub e37d5ee92c Merge pull request #4567 from zjs/topic/zjs/cloudflare-package
Cloudflare DNS Authenticator
2017-05-10 15:47:35 -07:00
Zach Shepherd 7955274126 Script to create docs directory for new packages. 2017-05-10 15:26:51 -07:00
Zach Shepherd db6defe614 Cloudflare DNS Authenticator
Implement an Authenticator which can fulfill a dns-01 challenge using the
Cloudflare API. Applicable only for domains using Cloudflare for DNS.

Testing Done:
 * `tox -e py27`
 * `tox -e lint`
 * Manual testing:
    * Used `certbot certonly --dns-cloudflare -d`, specifying a
      credentials file as a command line argument. Verified that a
      certificate was successfully obtained without user interaction.
    * Used `certbot certonly --dns-cloudflare -d`, without specifying a
      credentials file as a command line argument. Verified that the user
      was prompted and that a certificate was successfully obtained.
    * Used `certbot certonly -d`. Verified that the user was prompted for
      a credentials file after selecting cloudflare interactively and
      that a certificate was successfully obtained.
    * Used `certbot renew --force-renewal`. Verified that certificates
      were renewed without user interaction.
 * Negative testing:
    * Path to non-existent credentials file.
    * Credentials file with unsafe permissions (644).
    * Credentials file missing e-mail address.
    * Credentials file with blank API key.
    * Credentials file with incorrect e-mail address.
    * Credentials file with malformed API key.
    * Credentials file with invalid API key.
    * Domain name not registered to Cloudflare account.
2017-05-10 15:26:51 -07:00
Alexander KrotovandBrad Warren 3752ed4ee2 ServerName and ServerAlias are directives, not directories (#4632) 2017-05-10 11:43:56 -07:00
Zach ShepherdandBrad Warren 6670f828ef Deduplicate package lists in tox.ini (#4608)
Use substitution of values form other sections[1] to deduplicate information
in tox.ini, including pip install arguments and package paths.

1 - https://tox.readthedocs.io/en/latest/config.html#substitution-for-values-from-other-sections
2017-05-08 11:54:12 -07:00
Yen Chi HsuanandBrad Warren c6fcb017b8 Use universal_newlines=True whereever the output is used (#4626) 2017-05-08 10:55:02 -07:00
Noah SwartzandBrad Warren 1d876aba23 update README (#4623) 2017-05-08 10:54:19 -07:00
Brad WarrenandGitHub d8fbd4f31d Add 0.14.0 release notes (#4618) 2017-05-05 10:10:28 -07:00
Brad WarrenandGitHub ef5894bc9f Merge pull request #4619 from certbot/candidate-0.14.0
Release 0.14.0
2017-05-05 10:10:06 -07:00
Yen Chi HsuanandBrad Warren 51ae69698d Allow boulder-fetch.sh run with ip from iproute2 (#4620) 2017-05-05 08:49:54 -07:00
Brad Warren 2754a2d0ae Bump version to 0.15.0 2017-05-04 16:52:29 -07:00
Brad Warren 4be7efbf74 Release 0.14.0 v0.14.0 2017-05-04 16:52:13 -07:00
Brad WarrenandGitHub 0db668f67b remove unnecessary closes causing logging problems (#4616) 2017-05-04 16:35:37 -07:00
Brad WarrenandGitHub 4d0cf8000a make a copy of keys in all python versions (#4614)
* make a copy of keys in all python versions

* documentation++
2017-05-03 18:42:47 -07:00
Brad WarrenandGitHub 13c88f1c02 Properly handle EOF in input (#4612)
* properly handle eof

* cleanup InputWithTimeoutTest

* add test_eof

* add comment about mimicking getpass
2017-05-03 14:44:15 -07:00
ohemorangeandGitHub a5bd0cf50c Add a test for #4557 (#4609) 2017-05-02 18:37:54 -07:00
ohemorangeandBrad Warren 7016874243 Switch to using include directive for Nginx constants (#4557)
* Switch to using include directive for Nginx constants

* remove deprecated comment

* give better error message when attempting to insert an existing directive

* make code more readable

* add docstrings

* allow a duplicated directive if it's identical

* comment out precisely repeated directives

* add comments
2017-05-02 17:56:56 -07:00
Brad WarrenandGitHub 83064941bc Merge pull request #4607 from certbot/joohoi_multiple_vhosts2
Multiple vhosts 2
2017-05-02 17:55:38 -07:00
Joona HoikkalaandBrad Warren 65c7a5a6f7 Add support for multivhosts in Apache
* Case sensitivity fixes

* Clean up merge leftovers

* Get correct vhost paths when appending to already existing multivhost -le-ssl.conf

* Test, lint and reverter fixes

* Make py26 happy

* Removed skeletons

* Changed new vhost matching

* Added span flag for augeas init

* Extract VirtualHost using aug_span

* Removed dead code

* Fix tests to mitigate not being able to reload Augeas span values after write

* Small fixes and test coverage

* Implementing changes requested in review
2017-05-02 15:56:55 -07:00
Brad Warren 6b26015752 Further Apache multivhost improvements
* Don't filter vhosts on path if you've done so already

* add get_internal_aug_path

* Use relative augeas paths to determine if a file contains multiple virtual hosts
2017-05-02 15:56:48 -07:00
Peter EckersleyandBrad Warren 2613a8b579 Continue work on Apache multivhost
* Apache: do not assume directives will be CamelCased

* Fixup

* Elaborate

* Simplify the definition of vh_p
2017-05-02 15:38:49 -07:00
Noah SwartzandBrad Warren f57f35b1dd Start work on multivhost support in Apache
* get through parsing

* not slice

* add mult vhost per file

* idx line backwards

* blocks be wrong

* always close ifmod

* let's not mess up indexes

* don't double add multi

* fix some lint, only dedupe multi

* tests

* fix lint

* in progress bit flip

* try to pick the right vhost

* take Dominic's suggestion

* don't redo search

* add ancestor

* we now support multiple vhosts

* yay

* add docstrings
2017-05-02 15:38:27 -07:00
Brad WarrenandGitHub 79d5c890c3 Add a timeout to prompts (#4601)
* Add input_with_timeout

* use input_with_timeout
2017-05-01 14:55:31 -07:00
Brad WarrenandPeter Eckersley 5ca8f7c5b9 Add lockfile (#4449)
* add lock_file

* cleanup lock file

* Add LockFile tests

* add lock_dir

* add lock_dir_until_exit

* add set_up_core_dir and move lock_dir_until_exit

* Move lock_and_call to certbot.test.util

* Add lock to Apache

* Add lock to the Nginx plugin

* Improve permissions error message

* sort plugins

* add test_prepare_order

* provide more actionable permissions error

* Document and catch use of OSError

* don't lock a directory twice

* add conditional dependency on ordereddict

* Add lock_test

* expand sorted plugins comment

* Add lock_test to lint

* make make_lineage more conventional and flexible

* enhance lock_test.py

* add lock_test to tox

* Readd success message

* make py26 happy

* add test_acquire_without_deletion
2017-05-01 14:49:12 -07:00
Benjamin QinandBrad Warren 4ca702f6fb Update doc using.rst to correct a sample script (#4582)
'More information about renewal....' should not be part of the code block.
2017-05-01 09:43:07 -07:00
ohemorangeandGitHub 5885b09e13 Merge pull request #4354 from certbot/more-ua
Add extra information to user-agent
2017-04-28 19:17:39 -07:00
Peter Eckersley 72b6179e0e Remove vestigial thingy 2017-04-28 18:46:01 -07:00
Peter Eckersley f6c02728e4 Address review comments 2017-04-28 18:42:03 -07:00
Peter Eckersley 0a4ee306a9 Fix UA flag setting (and set more of them) 2017-04-28 18:02:34 -07:00
Brad WarrenandGitHub 8fa12bef8e Tell the world we're Python 3 compatible (#4568)
* Mention python 3 support in setup.py

* Build universal (py2 and py3 compatible) wheels

* Mention Python 3.3+ support in docs

* we work on python 3.6 too
2017-04-28 16:06:45 -07:00
Brad WarrenandGitHub 89af460792 Reuse dynamic install_requires. (#4554)
* Revert "Make argparse dependency unconditional. (#2249)"

  This reverts commit 8f10103496.

* Update comment about environment markers
2017-04-28 15:03:50 -07:00
yomnaandohemorange 72fa27514e fix for issue 4132: increasing server_names_hash_bucket_size if necessary (#4496)
* increases server_names_hash_bucket_size if it's too low in your nginx conf

* switching from k,v pairwise indices -> inner_line

* simply using bucket_directive
2017-04-27 10:46:33 -07:00
ohemorangeandBrad Warren 1611df4120 Allow empty nginx blocks (#4555)
* modify test config file to allow valid config that fails to parse in parser.py

* make failing tests pass by fixing the problem
2017-04-26 18:44:06 -07:00
Noah SwartzandBrad Warren 5f9c6539d5 make a list of contributors (#4508)
* make a list of contributors

* make all links websites

* alphebetize and remove extra file

* remove ref to contributors

* add one more!

* sort using linux sort command
2017-04-26 14:57:23 -07:00
schoenandBrad Warren 0c4e813a72 Demote PEM generation to logger.debug (#4549) 2017-04-26 10:54:40 -07:00
Zach ShepherdandBrad Warren b41472afce Enhance display.util to support input validation (#4372)
* display: support validation of user input

To avoid each caller of `display.input` and `display.directory_select`
needing to implement validation logic, this allows for a validator to be
supplied as a part of the call.

Following the existing pattern from `webroot`, this validator is expected
to throw a `Error` when it encounters invalid input. The user then
receives a `notification` is re-prompted.

Testing Done:
 * tox -e py27
 * tox -e lint

* plugins: update webroot to use display's validation functionality

This change updates the webroot plugin to use the now-built-in validation
functionality in display, reducing duplicated code.

Testing Done:
 * tox -e py27
 * tox -e lint

* display: move validation logic to ops

To avoid adding complexity to `IDisplay` methods, move validation logic
to helper methods in `display.ops`.

Testing Done:
 * tox -e py27
 * tox -e lint
2017-04-24 17:36:00 -07:00
Noah SwartzandGitHub b079d0da2f Merge pull request #4542 from certbot/dnstypo
fix the word plugin
2017-04-24 13:10:48 -07:00
Kubilay KocakandBrad Warren 419c541b18 Update FreeBSD package entries (#4538)
Add port/package URL for py-acme

Use Freshports URL's instead of SVNWeb (repository) links as they provide (binary) package installation installation as well as further port/package information such as vulnerabilities, revision history and bug reports for each port respectively.
2017-04-24 11:58:00 -07:00
Noah Swartz c6da818d93 fix the word plugin 2017-04-24 11:54:20 -07:00
Jacob Hoffman-AndrewsandBrad Warren b3116af5b4 Add url and kid to jws. (#4340)
* Add url and kid to jws.

This will be required in order to implement the latest ACME spec, which uses
these protected header fields.

* Add comments and fix lint.

* Enforce mutual exclusivity of jwk and kid.
2017-04-21 18:49:57 -07:00
Noah SwartzandGitHub fff34fc790 Merge pull request #4509 from certbot/challenges-docs
Attempt to document challenge types
2017-04-20 17:59:19 -07:00
Yen Chi HsuanandBrad Warren 779af8db1e Extend tools/venv3.sh to support full certbot development (#4532) 2017-04-20 09:09:20 -07:00
Brad WarrenandGitHub 372d201111 use say now that if QUIET statement was moved (#4530) 2017-04-19 14:11:18 -07:00
Josh SorefandBrad Warren c13b2eae9b Make it easier to honor --quiet (#4292)
* say -- echo which honors quiet

* error -- echo which does not honor quiet

* switch non error echos to say

* switch error echos to error

* run letsencrypt-auto-source/build.py
2017-04-19 09:11:38 -07:00
Jacob Hoffman-AndrewsandBrad Warren d54cb3c59d Improve Account.repr() (#4325)
* Include more detail in Account's repr.

In particular, regr and meta.

* Fix test.

* Review feedback.

* Lint

* Test prefix only.
2017-04-18 17:09:22 -07:00
Arthur GautierandBrad Warren b0600483fd interface: IConfig is missing fields used in client.py (#4453)
Signed-off-by: Arthur Gautier <baloo@gandi.net>
2017-04-18 11:18:56 -07:00
Brad WarrenandGitHub 36891033dd Set HOME if it's not defined in certbot-auto (#4503)
* set HOME if it's not defined

* use ~root rather than /root
2017-04-17 14:39:08 -07:00