15 Commits

Author SHA1 Message Date
Niklas Keller
af44670353 Improve error message for failed domain DNS 2017-01-02 00:07:23 +01:00
Niklas Keller
0bd3525938 Use 'composer update' instead of 'composer install'
We need another PHPUnit version for PHP 5.5.
2016-12-15 10:53:03 +01:00
Niklas Keller
c3f8424785 Fix tests 2016-12-15 10:35:24 +01:00
Niklas Keller
040aebe993 Improve error message on timed out MX query
Any error, not only NoRecordExceptions, resulted in a MX record not found
error message. The previous message is now only shown if there's really no
record. Otherwise a more generic message is shown now.

Fixes #43.
2016-12-14 19:21:41 +01:00
Niklas Keller
8944aee552 Fall back to global config for server and storage if possible 2016-10-22 12:21:09 +02:00
Niklas Keller
5b2c47c30f Args::exists → Args::defined 2016-10-22 12:15:07 +02:00
Niklas Keller
ecb46af5c0 Pass right variables to checkAndIssue 2016-10-22 12:07:10 +02:00
Niklas Keller
253d3f476b Renew if not all names are covered
Renew a certificate if not all names are covered by the current certificate yet.
Adds a new `--names` option to `check` that makes `check` fail if not all names are covered.
Resolves #34.
2016-10-22 11:41:34 +02:00
Niklas Keller
c6d9c2016c Make 'server' and 'storage' optional for 'auto'
Resolves #35. Takes the value from the global config file as default argument.
If it doesn't exist, but something in the config file exists, it takes that.
If a command line argument is provided, it always takes precedence.
2016-10-22 11:27:52 +02:00
Niklas Keller
b4d4da7a51 Update dependencies 2016-10-22 11:27:25 +02:00
Niklas Keller
0d61689da1 Wait for challenge to be written to disk before continuing
This also makes exceptions visible now. This commit resolves #37.
2016-10-22 11:10:01 +02:00
Niklas Keller
349a12aae6 Merge pull request #41 from spikyjt/patch-1
Correct brackets
2016-10-22 11:01:32 +02:00
JT
28ae97f135 Correct brackets
I'm sure I did this properly the first time. Must have lost concentration!
2016-10-22 09:55:36 +01:00
Niklas Keller
0fc0e45e57 Merge pull request #40 from spikyjt/patch-1
POSIX compliant cron example
2016-10-21 14:15:12 +02:00
JT
9356a060e7 POSIX compliant cron example
Changed the cron auto example to be POSIX compliant and use full paths.
Changed `exit` variable to `RC` (commonly used in system scripts for "return code") as `exit` is a shell builtin.
Added note about setting the full path as $PATH may not be set.
2016-10-21 11:56:29 +01:00
8 changed files with 289 additions and 135 deletions

View File

@@ -11,12 +11,10 @@ cache:
- vendor
install:
- phpenv config-rm xdebug.ini
- composer self-update
- phpenv config-rm xdebug.ini || true
- composer config --global discard-changes true
- if [[ ${TRAVIS_PHP_VERSION:0:3} == "5.5" ]]; then composer require --dev --no-update phpunit/phpunit ^4; fi
- composer require satooshi/php-coveralls dev-master --dev --no-update
- composer update --ignore-platform-reqs
- composer update
- composer require satooshi/php-coveralls dev-master --dev
- composer show --installed
script:

View File

@@ -22,9 +22,9 @@
"symfony/yaml": "^3.0"
},
"require-dev": {
"phpunit/phpunit": "^5",
"phpunit/phpunit": "^4|^5",
"friendsofphp/php-cs-fixer": "^1.9",
"macfja/phar-builder": "dev-events-dev-files"
"macfja/phar-builder": "^0.2.5"
},
"license": "MIT",
"authors": [

331
composer.lock generated
View File

@@ -4,8 +4,8 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
"hash": "8aca843d1d25555d3bb10078455f8020",
"content-hash": "8398b7b6f2a3198c911b9a1161fd1dfa",
"hash": "c1f8c0b5b34063a785f81d0045483b69",
"content-hash": "da36b1d8f2a36563f1cfa33c172cb3c4",
"packages": [
{
"name": "amphp/amp",
@@ -66,16 +66,16 @@
},
{
"name": "amphp/artax",
"version": "v2.0.4",
"version": "v2.0.5",
"source": {
"type": "git",
"url": "https://github.com/amphp/artax.git",
"reference": "b60cf493c9e577a3678865f620b1eb61ab3d7ca9"
"reference": "1795ed4076469546f79804b348ffd6dd77656f73"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/amphp/artax/zipball/b60cf493c9e577a3678865f620b1eb61ab3d7ca9",
"reference": "b60cf493c9e577a3678865f620b1eb61ab3d7ca9",
"url": "https://api.github.com/repos/amphp/artax/zipball/1795ed4076469546f79804b348ffd6dd77656f73",
"reference": "1795ed4076469546f79804b348ffd6dd77656f73",
"shasum": ""
},
"require": {
@@ -84,7 +84,7 @@
"php": ">=5.5.0"
},
"require-dev": {
"fabpot/php-cs-fixer": "~1.9",
"friendsofphp/php-cs-fixer": "~1.9",
"phpunit/phpunit": "~4.8"
},
"type": "library",
@@ -120,7 +120,7 @@
"parallel",
"rest"
],
"time": "2016-07-18 16:44:41"
"time": "2016-08-08 16:27:01"
},
{
"name": "amphp/cache",
@@ -240,16 +240,16 @@
},
{
"name": "amphp/file",
"version": "v0.1.2",
"version": "v0.1.3",
"source": {
"type": "git",
"url": "https://github.com/amphp/file.git",
"reference": "7e04d6badea1f904cb1b894771f9c7e073799874"
"reference": "6612ae6757d4719492ed8b34ea6181ff67cfbed1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/amphp/file/zipball/7e04d6badea1f904cb1b894771f9c7e073799874",
"reference": "7e04d6badea1f904cb1b894771f9c7e073799874",
"url": "https://api.github.com/repos/amphp/file/zipball/6612ae6757d4719492ed8b34ea6181ff67cfbed1",
"reference": "6612ae6757d4719492ed8b34ea6181ff67cfbed1",
"shasum": ""
},
"require": {
@@ -257,13 +257,14 @@
"php": ">=5.5"
},
"require-dev": {
"fabpot/php-cs-fixer": "~1.9",
"friendsofphp/php-cs-fixer": "~1.9",
"phpunit/phpunit": "~4.8"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "0.1.0-dev"
"dev-master": "0.1.0-dev",
"dev-amp_v2": "0.2.0-dev"
}
},
"autoload": {
@@ -295,20 +296,20 @@
"non-blocking",
"static"
],
"time": "2016-03-24 17:31:44"
"time": "2016-10-01 17:43:52"
},
{
"name": "amphp/process",
"version": "v0.1.2",
"version": "v0.1.3",
"source": {
"type": "git",
"url": "https://github.com/amphp/process.git",
"reference": "255325ca82a92b05974efce27e9b92b2155fc408"
"reference": "f22cca2af36e442b771c0de2e24e8025550d8ffc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/amphp/process/zipball/255325ca82a92b05974efce27e9b92b2155fc408",
"reference": "255325ca82a92b05974efce27e9b92b2155fc408",
"url": "https://api.github.com/repos/amphp/process/zipball/f22cca2af36e442b771c0de2e24e8025550d8ffc",
"reference": "f22cca2af36e442b771c0de2e24e8025550d8ffc",
"shasum": ""
},
"require": {
@@ -338,7 +339,7 @@
],
"description": "Asynchronous process manager",
"homepage": "https://github.com/amphp/process",
"time": "2015-12-24 12:44:49"
"time": "2016-09-24 10:49:26"
},
{
"name": "amphp/socket",
@@ -647,16 +648,16 @@
},
{
"name": "phpseclib/phpseclib",
"version": "2.0.2",
"version": "2.0.4",
"source": {
"type": "git",
"url": "https://github.com/phpseclib/phpseclib.git",
"reference": "3d265f7c079f5b37d33475f996d7a383c5fc8aeb"
"reference": "ab8028c93c03cc8d9c824efa75dc94f1db2369bf"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/3d265f7c079f5b37d33475f996d7a383c5fc8aeb",
"reference": "3d265f7c079f5b37d33475f996d7a383c5fc8aeb",
"url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/ab8028c93c03cc8d9c824efa75dc94f1db2369bf",
"reference": "ab8028c93c03cc8d9c824efa75dc94f1db2369bf",
"shasum": ""
},
"require": {
@@ -735,7 +736,7 @@
"x.509",
"x509"
],
"time": "2016-05-13 01:15:21"
"time": "2016-10-04 00:57:04"
},
{
"name": "rdlowrey/auryn",
@@ -1007,16 +1008,16 @@
},
{
"name": "symfony/yaml",
"version": "v3.1.3",
"version": "v3.1.5",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
"reference": "1819adf2066880c7967df7180f4f662b6f0567ac"
"reference": "368b9738d4033c8b93454cb0dbd45d305135a6d3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/yaml/zipball/1819adf2066880c7967df7180f4f662b6f0567ac",
"reference": "1819adf2066880c7967df7180f4f662b6f0567ac",
"url": "https://api.github.com/repos/symfony/yaml/zipball/368b9738d4033c8b93454cb0dbd45d305135a6d3",
"reference": "368b9738d4033c8b93454cb0dbd45d305135a6d3",
"shasum": ""
},
"require": {
@@ -1052,32 +1053,33 @@
],
"description": "Symfony Yaml Component",
"homepage": "https://symfony.com",
"time": "2016-07-17 14:02:08"
"time": "2016-09-25 08:27:07"
},
{
"name": "webmozart/assert",
"version": "1.0.2",
"version": "1.1.0",
"source": {
"type": "git",
"url": "https://github.com/webmozart/assert.git",
"reference": "30eed06dd6bc88410a4ff7f77b6d22f3ce13dbde"
"reference": "bb2d123231c095735130cc8f6d31385a44c7b308"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/webmozart/assert/zipball/30eed06dd6bc88410a4ff7f77b6d22f3ce13dbde",
"reference": "30eed06dd6bc88410a4ff7f77b6d22f3ce13dbde",
"url": "https://api.github.com/repos/webmozart/assert/zipball/bb2d123231c095735130cc8f6d31385a44c7b308",
"reference": "bb2d123231c095735130cc8f6d31385a44c7b308",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
"php": "^5.3.3|^7.0"
},
"require-dev": {
"phpunit/phpunit": "^4.6"
"phpunit/phpunit": "^4.6",
"sebastian/version": "^1.0.1"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0-dev"
"dev-master": "1.2-dev"
}
},
"autoload": {
@@ -1101,7 +1103,7 @@
"check",
"validate"
],
"time": "2015-08-24 13:29:44"
"time": "2016-08-09 15:02:57"
}
],
"packages-dev": [
@@ -1161,16 +1163,16 @@
},
{
"name": "friendsofphp/php-cs-fixer",
"version": "v1.11.6",
"version": "v1.11.8",
"source": {
"type": "git",
"url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git",
"reference": "41dc93abd2937a85a3889e28765231d574d2bac8"
"reference": "117137e9970054d022b7656209f094dab852b90c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/41dc93abd2937a85a3889e28765231d574d2bac8",
"reference": "41dc93abd2937a85a3889e28765231d574d2bac8",
"url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/117137e9970054d022b7656209f094dab852b90c",
"reference": "117137e9970054d022b7656209f094dab852b90c",
"shasum": ""
},
"require": {
@@ -1215,7 +1217,7 @@
}
],
"description": "A tool to automatically fix PHP code style",
"time": "2016-07-22 06:46:28"
"time": "2016-08-16 23:31:05"
},
{
"name": "league/event",
@@ -1269,16 +1271,16 @@
},
{
"name": "macfja/phar-builder",
"version": "dev-events-dev-files",
"version": "0.2.5",
"source": {
"type": "git",
"url": "https://github.com/kelunik/PharBuilder.git",
"reference": "ca02acf19255255f8bc0f490caaf9c086e64062b"
"url": "https://github.com/MacFJA/PharBuilder.git",
"reference": "0a5270b565242a99371ff94d2ebecb85b2854a1d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/kelunik/PharBuilder/zipball/ca02acf19255255f8bc0f490caaf9c086e64062b",
"reference": "ca02acf19255255f8bc0f490caaf9c086e64062b",
"url": "https://api.github.com/repos/MacFJA/PharBuilder/zipball/0a5270b565242a99371ff94d2ebecb85b2854a1d",
"reference": "0a5270b565242a99371ff94d2ebecb85b2854a1d",
"shasum": ""
},
"require": {
@@ -1317,14 +1319,7 @@
"MacFJA\\PharBuilder\\": "app/"
}
},
"scripts": {
"test": [
"php -l app/",
"phpmd app/ text phpmd.xml.dist",
"phpcpd app/",
"phpcs"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
@@ -1334,10 +1329,7 @@
}
],
"description": "CLI tool for create phar of your composer based project",
"support": {
"source": "https://github.com/kelunik/PharBuilder/tree/events-dev-files"
},
"time": "2016-06-02 19:28:27"
"time": "2016-08-07 12:35:14"
},
{
"name": "macfja/symfony-console-filechooser",
@@ -1387,16 +1379,16 @@
},
{
"name": "myclabs/deep-copy",
"version": "1.5.1",
"version": "1.5.4",
"source": {
"type": "git",
"url": "https://github.com/myclabs/DeepCopy.git",
"reference": "a8773992b362b58498eed24bf85005f363c34771"
"reference": "ea74994a3dc7f8d2f65a06009348f2d63c81e61f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/a8773992b362b58498eed24bf85005f363c34771",
"reference": "a8773992b362b58498eed24bf85005f363c34771",
"url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/ea74994a3dc7f8d2f65a06009348f2d63c81e61f",
"reference": "ea74994a3dc7f8d2f65a06009348f2d63c81e61f",
"shasum": ""
},
"require": {
@@ -1425,7 +1417,7 @@
"object",
"object graph"
],
"time": "2015-11-20 12:04:31"
"time": "2016-09-16 13:37:59"
},
{
"name": "neutron/signal-handler",
@@ -1526,16 +1518,16 @@
},
{
"name": "phpdocumentor/reflection-docblock",
"version": "3.1.0",
"version": "3.1.1",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
"reference": "9270140b940ff02e58ec577c237274e92cd40cdd"
"reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/9270140b940ff02e58ec577c237274e92cd40cdd",
"reference": "9270140b940ff02e58ec577c237274e92cd40cdd",
"url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/8331b5efe816ae05461b7ca1e721c01b46bafb3e",
"reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e",
"shasum": ""
},
"require": {
@@ -1567,7 +1559,7 @@
}
],
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
"time": "2016-06-10 09:48:41"
"time": "2016-09-30 07:12:33"
},
{
"name": "phpdocumentor/type-resolver",
@@ -1924,24 +1916,24 @@
},
{
"name": "phpunit/phpunit",
"version": "5.4.8",
"version": "5.6.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
"reference": "3132365e1430c091f208e120b8845d39c25f20e6"
"reference": "60c32c5b5e79c2248001efa2560f831da11cc2d7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3132365e1430c091f208e120b8845d39c25f20e6",
"reference": "3132365e1430c091f208e120b8845d39c25f20e6",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/60c32c5b5e79c2248001efa2560f831da11cc2d7",
"reference": "60c32c5b5e79c2248001efa2560f831da11cc2d7",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-json": "*",
"ext-pcre": "*",
"ext-reflection": "*",
"ext-spl": "*",
"ext-libxml": "*",
"ext-mbstring": "*",
"ext-xml": "*",
"myclabs/deep-copy": "~1.3",
"php": "^5.6 || ^7.0",
"phpspec/prophecy": "^1.3.1",
@@ -1963,7 +1955,11 @@
"conflict": {
"phpdocumentor/reflection-docblock": "3.0.2"
},
"require-dev": {
"ext-pdo": "*"
},
"suggest": {
"ext-xdebug": "*",
"phpunit/php-invoker": "~1.1"
},
"bin": [
@@ -1972,7 +1968,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "5.4.x-dev"
"dev-master": "5.6.x-dev"
}
},
"autoload": {
@@ -1998,20 +1994,20 @@
"testing",
"xunit"
],
"time": "2016-07-26 14:48:00"
"time": "2016-10-07 13:03:26"
},
{
"name": "phpunit/phpunit-mock-objects",
"version": "3.2.3",
"version": "3.4.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
"reference": "b13d0d9426ced06958bd32104653526a6c998a52"
"reference": "238d7a2723bce689c79eeac9c7d5e1d623bb9dc2"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/b13d0d9426ced06958bd32104653526a6c998a52",
"reference": "b13d0d9426ced06958bd32104653526a6c998a52",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/238d7a2723bce689c79eeac9c7d5e1d623bb9dc2",
"reference": "238d7a2723bce689c79eeac9c7d5e1d623bb9dc2",
"shasum": ""
},
"require": {
@@ -2057,7 +2053,54 @@
"mock",
"xunit"
],
"time": "2016-06-12 07:37:26"
"time": "2016-10-09 07:01:45"
},
{
"name": "psr/log",
"version": "1.0.2",
"source": {
"type": "git",
"url": "https://github.com/php-fig/log.git",
"reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
"reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\Log\\": "Psr/Log/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common interface for logging libraries",
"homepage": "https://github.com/php-fig/log",
"keywords": [
"log",
"psr",
"psr-3"
],
"time": "2016-10-10 12:19:37"
},
{
"name": "rych/bytesize",
@@ -2267,23 +2310,23 @@
},
{
"name": "sebastian/environment",
"version": "1.3.7",
"version": "1.3.8",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/environment.git",
"reference": "4e8f0da10ac5802913afc151413bc8c53b6c2716"
"reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/4e8f0da10ac5802913afc151413bc8c53b6c2716",
"reference": "4e8f0da10ac5802913afc151413bc8c53b6c2716",
"url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/be2c607e43ce4c89ecd60e75c6a85c126e754aea",
"reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
"php": "^5.3.3 || ^7.0"
},
"require-dev": {
"phpunit/phpunit": "~4.4"
"phpunit/phpunit": "^4.8 || ^5.0"
},
"type": "library",
"extra": {
@@ -2313,7 +2356,7 @@
"environment",
"hhvm"
],
"time": "2016-05-17 03:18:57"
"time": "2016-08-18 05:49:44"
},
{
"name": "sebastian/exporter",
@@ -2619,20 +2662,21 @@
},
{
"name": "symfony/console",
"version": "v2.8.9",
"version": "v2.8.12",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
"reference": "36e62335caca8a6e909c5c5bac4a8128149911c9"
"reference": "d7a5a88178f94dcc29531ea4028ea614e35452d4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/console/zipball/36e62335caca8a6e909c5c5bac4a8128149911c9",
"reference": "36e62335caca8a6e909c5c5bac4a8128149911c9",
"url": "https://api.github.com/repos/symfony/console/zipball/d7a5a88178f94dcc29531ea4028ea614e35452d4",
"reference": "d7a5a88178f94dcc29531ea4028ea614e35452d4",
"shasum": ""
},
"require": {
"php": ">=5.3.9",
"symfony/debug": "~2.7,>=2.7.2|~3.0.0",
"symfony/polyfill-mbstring": "~1.0"
},
"require-dev": {
@@ -2675,11 +2719,68 @@
],
"description": "Symfony Console Component",
"homepage": "https://symfony.com",
"time": "2016-07-30 07:20:35"
"time": "2016-09-28 00:10:16"
},
{
"name": "symfony/debug",
"version": "v3.0.9",
"source": {
"type": "git",
"url": "https://github.com/symfony/debug.git",
"reference": "697c527acd9ea1b2d3efac34d9806bf255278b0a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/debug/zipball/697c527acd9ea1b2d3efac34d9806bf255278b0a",
"reference": "697c527acd9ea1b2d3efac34d9806bf255278b0a",
"shasum": ""
},
"require": {
"php": ">=5.5.9",
"psr/log": "~1.0"
},
"conflict": {
"symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
},
"require-dev": {
"symfony/class-loader": "~2.8|~3.0",
"symfony/http-kernel": "~2.8|~3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.0-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Component\\Debug\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony Debug Component",
"homepage": "https://symfony.com",
"time": "2016-07-30 07:22:48"
},
{
"name": "symfony/event-dispatcher",
"version": "v3.1.3",
"version": "v3.1.5",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
@@ -2739,16 +2840,16 @@
},
{
"name": "symfony/filesystem",
"version": "v3.1.3",
"version": "v3.1.5",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
"reference": "bb29adceb552d202b6416ede373529338136e84f"
"reference": "682fd8fdb3135fdf05fc496a01579ccf6c85c0e5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/filesystem/zipball/bb29adceb552d202b6416ede373529338136e84f",
"reference": "bb29adceb552d202b6416ede373529338136e84f",
"url": "https://api.github.com/repos/symfony/filesystem/zipball/682fd8fdb3135fdf05fc496a01579ccf6c85c0e5",
"reference": "682fd8fdb3135fdf05fc496a01579ccf6c85c0e5",
"shasum": ""
},
"require": {
@@ -2784,20 +2885,20 @@
],
"description": "Symfony Filesystem Component",
"homepage": "https://symfony.com",
"time": "2016-07-20 05:44:26"
"time": "2016-09-14 00:18:46"
},
{
"name": "symfony/finder",
"version": "v2.8.9",
"version": "v2.8.12",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
"reference": "60804d88691e4a73bbbb3035eb1d9f075c5c2c10"
"reference": "bc24c8f5674c6f6841f2856b70e5d60784be5691"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/finder/zipball/60804d88691e4a73bbbb3035eb1d9f075c5c2c10",
"reference": "60804d88691e4a73bbbb3035eb1d9f075c5c2c10",
"url": "https://api.github.com/repos/symfony/finder/zipball/bc24c8f5674c6f6841f2856b70e5d60784be5691",
"reference": "bc24c8f5674c6f6841f2856b70e5d60784be5691",
"shasum": ""
},
"require": {
@@ -2833,7 +2934,7 @@
],
"description": "Symfony Finder Component",
"homepage": "https://symfony.com",
"time": "2016-07-26 08:02:44"
"time": "2016-09-28 00:10:16"
},
{
"name": "symfony/polyfill-mbstring",
@@ -2896,16 +2997,16 @@
},
{
"name": "symfony/process",
"version": "v3.1.3",
"version": "v3.1.5",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
"reference": "04c2dfaae4ec56a5c677b0c69fac34637d815758"
"reference": "66de154ae86b1a07001da9fbffd620206e4faf94"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/process/zipball/04c2dfaae4ec56a5c677b0c69fac34637d815758",
"reference": "04c2dfaae4ec56a5c677b0c69fac34637d815758",
"url": "https://api.github.com/repos/symfony/process/zipball/66de154ae86b1a07001da9fbffd620206e4faf94",
"reference": "66de154ae86b1a07001da9fbffd620206e4faf94",
"shasum": ""
},
"require": {
@@ -2941,11 +3042,11 @@
],
"description": "Symfony Process Component",
"homepage": "https://symfony.com",
"time": "2016-07-28 11:13:48"
"time": "2016-09-29 14:13:09"
},
{
"name": "symfony/stopwatch",
"version": "v3.1.3",
"version": "v3.1.5",
"source": {
"type": "git",
"url": "https://github.com/symfony/stopwatch.git",
@@ -3038,9 +3139,7 @@
],
"aliases": [],
"minimum-stability": "dev",
"stability-flags": {
"macfja/phar-builder": 20
},
"stability-flags": [],
"prefer-stable": true,
"prefer-lowest": false,
"platform": {

View File

@@ -77,9 +77,10 @@ the script will be quiet to be cron friendly. If an error occurs, the script wil
You should execute `acme-client auto` as a daily cron. It's recommended to setup e-mail notifications for all output of
that script.
```bash
0 0 * * * acme-client auto; exit=$?; if [[ $exit = 4 ]] || [[ $exit = 5 ]]; then service nginx reload; fi
```sh
0 0 * * * /usr/local/sbin/acme-client auto; RC=$?; if [ $RC = 4 ] || [ $RC = 5 ]; then /usr/sbin/service nginx reload; fi
```
The path to `acme-client` should be modified to suit your system. The full path should be used as the system path may not be set up in your cron environment.
| Exit Code | Description |
|-----------|-------------|

View File

@@ -37,8 +37,6 @@ class Auto implements Command {
* @return \Generator
*/
private function doExecute(Manager $args) {
$server = $args->get("server");
$storage = $args->get("storage");
$configPath = $args->get("config");
try {
@@ -55,6 +53,30 @@ class Auto implements Command {
return;
}
if ($args->defined("server")) {
$config["server"] = $args->get("server");
} else if (!isset($config["server"]) && $args->exists("server")) {
$config["server"] = $args->get("server");
}
if ($args->defined("storage")) {
$config["storage"] = $args->get("storage");
} else if (!isset($config["storage"]) && $args->exists("storage")) {
$config["storage"] = $args->get("storage");
}
if (!isset($config["server"])) {
$this->climate->error("Config file ({$configPath}) didn't have a 'server' set nor was it passed as command line argument.");
yield new CoroutineResult(self::EXIT_CONFIG_ERROR);
return;
}
if (!isset($config["storage"])) {
$this->climate->error("Config file ({$configPath}) didn't have a 'storage' set nor was it passed as command line argument.");
yield new CoroutineResult(self::EXIT_CONFIG_ERROR);
return;
}
if (!isset($config["email"])) {
$this->climate->error("Config file ({$configPath}) didn't have a 'email' set.");
yield new CoroutineResult(self::EXIT_CONFIG_ERROR);
@@ -72,9 +94,9 @@ class Auto implements Command {
$GLOBALS["argv"][0],
"setup",
"--server",
$server,
$config["server"],
"--storage",
$storage,
$config["storage"],
"--email",
$config["email"],
]));
@@ -100,7 +122,7 @@ class Auto implements Command {
$promises = [];
foreach ($certificateChunk as $certificate) {
$promises[] = \Amp\resolve($this->checkAndIssue($certificate, $server, $storage));
$promises[] = \Amp\resolve($this->checkAndIssue($certificate, $config["server"], $config["storage"]));
}
list($chunkErrors, $chunkValues) = (yield \Amp\any($promises));
@@ -167,6 +189,8 @@ class Auto implements Command {
$storage,
"--name",
$commonName,
"--names",
implode(",", $domains),
];
$command = implode(" ", array_map("escapeshellarg", $args));
@@ -277,9 +301,15 @@ MESSAGE;
}
public static function getDefinition() {
$server = \Kelunik\AcmeClient\getArgumentDescription("server");
$storage = \Kelunik\AcmeClient\getArgumentDescription("storage");
$server["required"] = false;
$storage["required"] = false;
$args = [
"server" => \Kelunik\AcmeClient\getArgumentDescription("server"),
"storage" => \Kelunik\AcmeClient\getArgumentDescription("storage"),
"server" => $server,
"storage" => $storage,
"config" => [
"prefix" => "c",
"longPrefix" => "config",

View File

@@ -45,6 +45,18 @@ class Check implements Command {
$this->climate->br();
$this->climate->whisper(" Certificate is valid until " . date("d.m.Y", $cert->getValidTo()))->br();
if ($args->defined("names")) {
$names = array_map("trim", explode(",", $args->get("names")));
$missingNames = array_diff($names, $cert->getNames());
if ($missingNames) {
$this->climate->comment(" The following names are not covered: " . implode(", ", $missingNames))->br();
yield new CoroutineResult(1);
return;
}
}
if ($cert->getValidTo() > time() + $args->get("ttl") * 24 * 60 * 60) {
yield new CoroutineResult(0);
return;
@@ -70,6 +82,11 @@ class Check implements Command {
"defaultValue" => 30,
"castTo" => "int",
],
"names" => [
"longPrefix" => "names",
"description" => "Names that must be covered by the certificate identified based on the common name. Names have to be separated by commas.",
"required" => false,
],
];
}
}

View File

@@ -153,7 +153,7 @@ class Issue implements Command {
$challengeStore = new ChallengeStore($path);
try {
$challengeStore->put($token, $payload, isset($user) ? $user : null);
yield $challengeStore->put($token, $payload, isset($user) ? $user : null);
yield $acme->verifyHttp01Challenge($domain, $token, $payload);
yield $acme->answerChallenge($challenge->uri, $payload);
@@ -194,7 +194,13 @@ class Issue implements Command {
}
if (!empty($errors)) {
throw new AcmeException("Couldn't resolve the following domains to an IPv4 nor IPv6 record: " . implode(", ", array_keys($errors)));
$failedDomains = implode(", ", array_keys($errors));
$reasons = implode("\n\n", array_map(function ($exception) {
/** @var \Exception|\Throwable $exception */
return get_class($exception) . ": " . $exception->getMessage();
}, $errors));
throw new AcmeException("Couldn't resolve the following domains to an IPv4 nor IPv6 record: {$failedDomains}\n\n{$reasons}");
}
}

View File

@@ -3,6 +3,7 @@
namespace Kelunik\AcmeClient\Commands;
use Amp\CoroutineResult;
use Amp\Dns\NoRecordException;
use Amp\Dns\Record;
use Amp\Dns\ResolutionException;
use InvalidArgumentException;
@@ -80,8 +81,10 @@ class Setup implements Command {
try {
yield \Amp\Dns\query($host, Record::MX);
} catch (ResolutionException $e) {
} catch (NoRecordException $e) {
throw new AcmeException("No MX record defined for '{$host}'");
} catch (ResolutionException $e) {
throw new AcmeException("Dns query for an MX record on '{$host}' failed for the following reason: " . $e->getMessage(), null, $e);
}
}