{"action":"created","issue":{"url":"https://api.github.com/repos/certbot/certbot/issues/3466","repository_url":"https://api.github.com/repos/certbot/certbot","labels_url":"https://api.github.com/repos/certbot/certbot/issues/3466/labels{/name}","comments_url":"https://api.github.com/repos/certbot/certbot/issues/3466/comments","events_url":"https://api.github.com/repos/certbot/certbot/issues/3466/events","html_url":"https://github.com/certbot/certbot/pull/3466","id":173904386,"number":3466,"title":"DNS challenge support in the manual plugin and general purpose --preferred-challenges flag","user":{"login":"bmw","id":6504915,"avatar_url":"https://avatars.githubusercontent.com/u/6504915?v=3","gravatar_id":"","url":"https://api.github.com/users/bmw","html_url":"https://github.com/bmw","followers_url":"https://api.github.com/users/bmw/followers","following_url":"https://api.github.com/users/bmw/following{/other_user}","gists_url":"https://api.github.com/users/bmw/gists{/gist_id}","starred_url":"https://api.github.com/users/bmw/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bmw/subscriptions","organizations_url":"https://api.github.com/users/bmw/orgs","repos_url":"https://api.github.com/users/bmw/repos","events_url":"https://api.github.com/users/bmw/events{/privacy}","received_events_url":"https://api.github.com/users/bmw/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/certbot/certbot/labels/acme","name":"acme","color":"888888"},{"url":"https://api.github.com/repos/certbot/certbot/labels/enhancement","name":"enhancement","color":"84b6eb"},{"url":"https://api.github.com/repos/certbot/certbot/labels/manual%20authenticator","name":"manual authenticator","color":"505050"},{"url":"https://api.github.com/repos/certbot/certbot/labels/refactoring","name":"refactoring","color":"d4c5f9"}],"state":"open","locked":false,"assignee":{"login":"pde","id":479213,"avatar_url":"https://avatars.githubusercontent.com/u/479213?v=3","gravatar_id":"","url":"https://api.github.com/users/pde","html_url":"https://github.com/pde","followers_url":"https://api.github.com/users/pde/followers","following_url":"https://api.github.com/users/pde/following{/other_user}","gists_url":"https://api.github.com/users/pde/gists{/gist_id}","starred_url":"https://api.github.com/users/pde/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pde/subscriptions","organizations_url":"https://api.github.com/users/pde/orgs","repos_url":"https://api.github.com/users/pde/repos","events_url":"https://api.github.com/users/pde/events{/privacy}","received_events_url":"https://api.github.com/users/pde/received_events","type":"User","site_admin":false},"assignees":[{"login":"pde","id":479213,"avatar_url":"https://avatars.githubusercontent.com/u/479213?v=3","gravatar_id":"","url":"https://api.github.com/users/pde","html_url":"https://github.com/pde","followers_url":"https://api.github.com/users/pde/followers","following_url":"https://api.github.com/users/pde/following{/other_user}","gists_url":"https://api.github.com/users/pde/gists{/gist_id}","starred_url":"https://api.github.com/users/pde/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pde/subscriptions","organizations_url":"https://api.github.com/users/pde/orgs","repos_url":"https://api.github.com/users/pde/repos","events_url":"https://api.github.com/users/pde/events{/privacy}","received_events_url":"https://api.github.com/users/pde/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/certbot/certbot/milestones/22","html_url":"https://github.com/certbot/certbot/milestones/0.9.0","labels_url":"https://api.github.com/repos/certbot/certbot/milestones/22/labels","id":1805759,"number":22,"title":"0.9.0","description":"Nginx plugin, DNS Challenge support, plus lots of polish and bugfixes","creator":{"login":"bmw","id":6504915,"avatar_url":"https://avatars.githubusercontent.com/u/6504915?v=3","gravatar_id":"","url":"https://api.github.com/users/bmw","html_url":"https://github.com/bmw","followers_url":"https://api.github.com/users/bmw/followers","following_url":"https://api.github.com/users/bmw/following{/other_user}","gists_url":"https://api.github.com/users/bmw/gists{/gist_id}","starred_url":"https://api.github.com/users/bmw/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bmw/subscriptions","organizations_url":"https://api.github.com/users/bmw/orgs","repos_url":"https://api.github.com/users/bmw/repos","events_url":"https://api.github.com/users/bmw/events{/privacy}","received_events_url":"https://api.github.com/users/bmw/received_events","type":"User","site_admin":false},"open_issues":20,"closed_issues":103,"state":"open","created_at":"2016-06-02T19:22:08Z","updated_at":"2016-09-22T00:29:59Z","due_on":"2016-08-19T00:00:00Z","closed_at":null},"comments":21,"created_at":"2016-08-30T00:35:48Z","updated_at":"2016-09-22T01:03:49Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/certbot/certbot/pulls/3466","html_url":"https://github.com/certbot/certbot/pull/3466","diff_url":"https://github.com/certbot/certbot/pull/3466.diff","patch_url":"https://github.com/certbot/certbot/pull/3466.patch"},"body":"Builds on and brings in #3379, #3439, and #3457. Fixes #3343.\r\n\r\nThis PR adds a `--preferred-challenges` flag to the Certbot core instead of having near identical flags in each plugin that supports multiple challenge types. The `--http-01-port` and `--tls-sni-01-port` flags are cleaned up to make them more user friendly. Mostly due to the work of @mlhamel, this PR also adds support for the `dns-01` challenge to manual plugin.\r\n\r\n### Questions I have regarding this PR:\r\n\r\n#### -01 suffix\r\nWe currently require the user to specify `-01` on every challenge type. This is true for selection both ports and challenge type. Is this the behavior we want?\r\n\r\nI think this is fairly tricky and we should think about it now before introducing the `--preferred-challenges` flag and making the port flags more visible. Allowing the user to omit the version of the challenge they want may simplify Certbot upgrading to new challenge types in the future. On the other hand, it's possible an ACME CA supports multiple types of the same challenge and the user has a preference. In fact, a different version of the challenge may not work on a user's system. For example, a change in the path used for the HTTP challenge may cause webroot not to work if their web server is not configured to serve files out of a different (hidden) directory.\r\n\r\nWhile it's ugly and verbose, I think I'm in favor of keeping the `-01` suffix. We could perhaps write special logic that allows the user to also specify `--preferred-challenges http,tls-sni,dns` which would select either all or the most recent challenge of each type. This may not be worth the effort and could result in confusing behavior for users who don't understand the difference in between specifying challenges with and without the version number\r\n\r\nI'd like to hear other people's opinions here.\r\n\r\n#### DNS self verification\r\n\r\nOne of the changes I made from @mlhamel's PR is a softer error message when `dnspython` is not available. Due to the way the dependency is specified in `acme/setup.py`, I suspect most Certbot installations will not have this package. If we want to make an additional change here, we have a few options:\r\n\r\n1. Make `dnspython` a required dependency in the `certbot` package. This is nicer than making it in required in `acme` as it keeps the library more flexible.\r\n2. Remove the self verification entirely.\r\n3. Remove the warning when `dnspython` is not available.\r\n\r\nI don't have a strong preference here, but I think I prefer any the three options above over the approach in this PR. I appreciate any feedback."},"comment":{"url":"https://api.github.com/repos/certbot/certbot/issues/comments/248785860","html_url":"https://github.com/certbot/certbot/pull/3466#issuecomment-248785860","issue_url":"https://api.github.com/repos/certbot/certbot/issues/3466","id":248785860,"user":{"login":"coveralls","id":2354108,"avatar_url":"https://avatars.githubusercontent.com/u/2354108?v=3","gravatar_id":"","url":"https://api.github.com/users/coveralls","html_url":"https://github.com/coveralls","followers_url":"https://api.github.com/users/coveralls/followers","following_url":"https://api.github.com/users/coveralls/following{/other_user}","gists_url":"https://api.github.com/users/coveralls/gists{/gist_id}","starred_url":"https://api.github.com/users/coveralls/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/coveralls/subscriptions","organizations_url":"https://api.github.com/users/coveralls/orgs","repos_url":"https://api.github.com/users/coveralls/repos","events_url":"https://api.github.com/users/coveralls/events{/privacy}","received_events_url":"https://api.github.com/users/coveralls/received_events","type":"User","site_admin":false},"created_at":"2016-09-22T01:03:49Z","updated_at":"2016-09-22T01:03:49Z","body":"\n[![Coverage Status](https://coveralls.io/builds/7998181/badge)](https://coveralls.io/builds/7998181)\n\nCoverage decreased (-0.005%) to 98.692% when pulling **74ac006f14959aebdf77a0b81182ebdc85042531 on all-together-now** into **f544b03911a2c9357fb686e639b27324a12f2d75 on master**.\n"}}
{"actor":{"display_login":"coveralls"}}