6 Commits

Author SHA1 Message Date
Niklas Keller
35070bb70a Add logging support for debugging 2018-06-09 19:00:02 +02:00
Niklas Keller
6da46ddaf6 Upgrade dependencies 2018-06-06 21:50:52 +02:00
Niklas Keller
51acff5bd3 Implement --rekey option
Closes #65.
Closes #19.
2018-04-15 19:14:36 +02:00
Niklas Keller
ea3e9dc68c Update LICENSE date 2018-04-15 18:27:00 +02:00
Niklas Keller
6f01055884 Upgrade to amphp/process v0.3.x 2018-04-15 18:19:40 +02:00
Niklas Keller
297e1aa9b1 Update dependencies 2018-04-15 18:12:32 +02:00
9 changed files with 430 additions and 178 deletions

View File

@@ -28,7 +28,10 @@ certificates:
# user: User running the web server. Challenge files are world readable,
# but some servers might require to be owner of files they serve.
#
# rekey: Regenerate certificate key pairs even if a key pair already exists.
#
- bits: 4096
rekey: true
paths:
/var/www/example:
- example.org

View File

@@ -1,6 +1,6 @@
The MIT License (MIT)
Copyright (c) 2015-2017 Niklas Keller
Copyright (c) 2015-2018 Niklas Keller
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@@ -13,14 +13,15 @@
"require": {
"php": ">=7",
"ext-openssl": "*",
"amphp/process": "^0.2",
"amphp/process": "^0.3.3",
"amphp/parallel": "^0.2.5",
"kelunik/acme": "^0.5",
"kelunik/certificate": "^1",
"league/climate": "^3.2",
"rdlowrey/auryn": "^1.4.2",
"webmozart/assert": "^1.2",
"symfony/yaml": "^3.0"
"symfony/yaml": "^3.0",
"amphp/log": "^1.0"
},
"require-dev": {
"phpunit/phpunit": "^6",

539
composer.lock generated
View File

@@ -4,20 +4,20 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
"content-hash": "dfce16af4260296c6ecf258e5b7e57b1",
"content-hash": "2eaf21a959712e9286b2819ca08ecb96",
"packages": [
{
"name": "amphp/amp",
"version": "v2.0.6",
"version": "v2.0.7",
"source": {
"type": "git",
"url": "https://github.com/amphp/amp.git",
"reference": "4a742beb59615f36ed998e2dc210e36576e44c44"
"reference": "d561cc9736bc18dd94a2fc9cdae98b616bd92c43"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/amphp/amp/zipball/4a742beb59615f36ed998e2dc210e36576e44c44",
"reference": "4a742beb59615f36ed998e2dc210e36576e44c44",
"url": "https://api.github.com/repos/amphp/amp/zipball/d561cc9736bc18dd94a2fc9cdae98b616bd92c43",
"reference": "d561cc9736bc18dd94a2fc9cdae98b616bd92c43",
"shasum": ""
},
"require": {
@@ -80,7 +80,7 @@
"non-blocking",
"promise"
],
"time": "2018-01-27T19:18:05+00:00"
"time": "2018-04-30T20:49:57+00:00"
},
{
"name": "amphp/artax",
@@ -144,16 +144,16 @@
},
{
"name": "amphp/byte-stream",
"version": "v1.3.0",
"version": "v1.3.1",
"source": {
"type": "git",
"url": "https://github.com/amphp/byte-stream.git",
"reference": "6d6c89f58c213e600e2ab5e3b1678fb61333eeb7"
"reference": "1b75b122e6f069e7d102eef065dc192119d99ca7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/amphp/byte-stream/zipball/6d6c89f58c213e600e2ab5e3b1678fb61333eeb7",
"reference": "6d6c89f58c213e600e2ab5e3b1678fb61333eeb7",
"url": "https://api.github.com/repos/amphp/byte-stream/zipball/1b75b122e6f069e7d102eef065dc192119d99ca7",
"reference": "1b75b122e6f069e7d102eef065dc192119d99ca7",
"shasum": ""
},
"require": {
@@ -197,7 +197,7 @@
"non-blocking",
"stream"
],
"time": "2018-03-13T15:32:38+00:00"
"time": "2018-04-04T05:33:09+00:00"
},
{
"name": "amphp/cache",
@@ -247,16 +247,16 @@
},
{
"name": "amphp/dns",
"version": "v0.9.12",
"version": "v0.9.13",
"source": {
"type": "git",
"url": "https://github.com/amphp/dns.git",
"reference": "2c8133a7b4267ba570f473abe4b08b01a0c8238a"
"reference": "4647e5f58263ffdeff7da5c269f517cb48cff84f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/amphp/dns/zipball/2c8133a7b4267ba570f473abe4b08b01a0c8238a",
"reference": "2c8133a7b4267ba570f473abe4b08b01a0c8238a",
"url": "https://api.github.com/repos/amphp/dns/zipball/4647e5f58263ffdeff7da5c269f517cb48cff84f",
"reference": "4647e5f58263ffdeff7da5c269f517cb48cff84f",
"shasum": ""
},
"require": {
@@ -268,6 +268,7 @@
"amphp/uri": "^0.1",
"amphp/windows-registry": "^0.3",
"daverandom/libdns": "^2.0.1",
"ext-filter": "*",
"php": ">=7.0"
},
"require-dev": {
@@ -320,7 +321,7 @@
"dns",
"resolve"
],
"time": "2018-01-10T16:26:11+00:00"
"time": "2018-05-01T18:08:54+00:00"
},
{
"name": "amphp/file",
@@ -388,6 +389,67 @@
],
"time": "2018-03-17T12:24:35+00:00"
},
{
"name": "amphp/log",
"version": "v1.0.0",
"source": {
"type": "git",
"url": "https://github.com/amphp/log.git",
"reference": "728678d6e751abeb54a4d2fc6e76ef977de3f43b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/amphp/log/zipball/728678d6e751abeb54a4d2fc6e76ef977de3f43b",
"reference": "728678d6e751abeb54a4d2fc6e76ef977de3f43b",
"shasum": ""
},
"require": {
"amphp/amp": "^2",
"amphp/byte-stream": "^1.3",
"monolog/monolog": "^1.23"
},
"require-dev": {
"amphp/file": "^0.3",
"amphp/phpunit-util": "^1",
"friendsofphp/php-cs-fixer": "^2.3",
"phpunit/phpunit": "^6"
},
"type": "library",
"autoload": {
"psr-4": {
"Amp\\Log\\": "src"
},
"files": [
"src/functions.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Niklas Keller",
"email": "me@kelunik.com"
},
{
"name": "Aaron Piotrowski",
"email": "aaron@trowski.com"
}
],
"description": "Non-blocking logging for PHP based on Amp and Monolog.",
"homepage": "https://github.com/amphp/log",
"keywords": [
"amp",
"amphp",
"async",
"log",
"logger",
"logging",
"non-blocking"
],
"time": "2018-03-22T19:39:52+00:00"
},
{
"name": "amphp/parallel",
"version": "v0.2.5",
@@ -504,33 +566,36 @@
},
{
"name": "amphp/process",
"version": "v0.2.1",
"version": "v0.3.3",
"source": {
"type": "git",
"url": "https://github.com/amphp/process.git",
"reference": "5aa6040fcf5c98bfb4f4a8e68305cb6cd6a3d37a"
"reference": "b795d20a7f6d5a0637128a02be613f520f1705fc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/amphp/process/zipball/5aa6040fcf5c98bfb4f4a8e68305cb6cd6a3d37a",
"reference": "5aa6040fcf5c98bfb4f4a8e68305cb6cd6a3d37a",
"url": "https://api.github.com/repos/amphp/process/zipball/b795d20a7f6d5a0637128a02be613f520f1705fc",
"reference": "b795d20a7f6d5a0637128a02be613f520f1705fc",
"shasum": ""
},
"require": {
"amphp/amp": "^2",
"amphp/byte-stream": "^1"
"amphp/byte-stream": "^1",
"php": ">=7"
},
"require-dev": {
"amphp/phpunit-util": "^1",
"friendsofphp/php-cs-fixer": "^2.3",
"kelunik/fqn-check": "^0.1.3",
"phpunit/phpunit": "^6"
},
"type": "library",
"autoload": {
"psr-4": {
"Amp\\Process\\": "lib"
}
},
"files": [
"lib/constants.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -541,27 +606,31 @@
"name": "Bob Weinand",
"email": "bobwei9@hotmail.com"
},
{
"name": "Niklas Keller",
"email": "me@kelunik.com"
},
{
"name": "Aaron Piotrowski",
"email": "aaron@trowski.com"
}
],
"description": "Asynchronous process manager",
"description": "Asynchronous process manager.",
"homepage": "https://github.com/amphp/process",
"time": "2017-07-18T03:37:19+00:00"
"time": "2018-04-08T18:55:42+00:00"
},
{
"name": "amphp/socket",
"version": "v0.10.6",
"version": "v0.10.9",
"source": {
"type": "git",
"url": "https://github.com/amphp/socket.git",
"reference": "be8bec970151404e85f33122d59b4943c4500c5a"
"reference": "6e9686b62b87c2cad235139a44be5121fe34edbb"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/amphp/socket/zipball/be8bec970151404e85f33122d59b4943c4500c5a",
"reference": "be8bec970151404e85f33122d59b4943c4500c5a",
"url": "https://api.github.com/repos/amphp/socket/zipball/6e9686b62b87c2cad235139a44be5121fe34edbb",
"reference": "6e9686b62b87c2cad235139a44be5121fe34edbb",
"shasum": ""
},
"require": {
@@ -615,7 +684,7 @@
"tcp",
"tls"
],
"time": "2018-03-14T18:37:46+00:00"
"time": "2018-05-01T21:14:10+00:00"
},
{
"name": "amphp/sync",
@@ -799,22 +868,23 @@
},
{
"name": "kelunik/acme",
"version": "v0.5.0",
"version": "v0.5.2",
"source": {
"type": "git",
"url": "https://github.com/kelunik/acme.git",
"reference": "496c9189f37ab512664cb12dc7b994c1ca6965cb"
"reference": "26bfdbe167d295c046240b419a78a0cb6b3f9c1d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/kelunik/acme/zipball/496c9189f37ab512664cb12dc7b994c1ca6965cb",
"reference": "496c9189f37ab512664cb12dc7b994c1ca6965cb",
"url": "https://api.github.com/repos/kelunik/acme/zipball/26bfdbe167d295c046240b419a78a0cb6b3f9c1d",
"reference": "26bfdbe167d295c046240b419a78a0cb6b3f9c1d",
"shasum": ""
},
"require": {
"amphp/amp": "^2",
"amphp/artax": "^3",
"namshi/jose": "^7",
"psr/log": "^1.0",
"sabre/uri": "^1"
},
"require-dev": {
@@ -855,7 +925,7 @@
"ssl",
"tls"
],
"time": "2017-11-28T14:26:01+00:00"
"time": "2018-06-08T12:28:30+00:00"
},
{
"name": "kelunik/certificate",
@@ -908,26 +978,30 @@
},
{
"name": "league/climate",
"version": "3.2.4",
"version": "3.4.1",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/climate.git",
"reference": "ca70f67f7739cca823eba0ad98f8130bca226bf0"
"reference": "d657a19837c1f79a891381fb128b755aa3386381"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/thephpleague/climate/zipball/ca70f67f7739cca823eba0ad98f8130bca226bf0",
"reference": "ca70f67f7739cca823eba0ad98f8130bca226bf0",
"url": "https://api.github.com/repos/thephpleague/climate/zipball/d657a19837c1f79a891381fb128b755aa3386381",
"reference": "d657a19837c1f79a891381fb128b755aa3386381",
"shasum": ""
},
"require": {
"php": ">=5.4.0",
"seld/cli-prompt": "~1.0"
"php": "^5.6|^7.0",
"psr/log": "^1.0",
"seld/cli-prompt": "^1.0"
},
"require-dev": {
"mikey179/vfsstream": "~1.4",
"mockery/mockery": "~0.9",
"phpunit/phpunit": "~4.6"
"mikey179/vfsstream": "^1.4",
"mockery/mockery": "^1.0",
"phpunit/phpunit": "^5.7.16"
},
"suggest": {
"ext-mbstring": "If ext-mbstring is not available you MUST install symfony/polyfill-mbstring"
},
"type": "library",
"autoload": {
@@ -940,6 +1014,12 @@
"MIT"
],
"authors": [
{
"name": "Craig Duncan",
"email": "git@duncanc.co.uk",
"homepage": "https://github.com/duncan3dc",
"role": "Developer"
},
{
"name": "Joe Tannenbaum",
"email": "hey@joe.codes",
@@ -955,7 +1035,85 @@
"php",
"terminal"
],
"time": "2016-10-30T22:18:25+00:00"
"time": "2018-04-29T16:43:54+00:00"
},
{
"name": "monolog/monolog",
"version": "1.23.0",
"source": {
"type": "git",
"url": "https://github.com/Seldaek/monolog.git",
"reference": "fd8c787753b3a2ad11bc60c063cff1358a32a3b4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd8c787753b3a2ad11bc60c063cff1358a32a3b4",
"reference": "fd8c787753b3a2ad11bc60c063cff1358a32a3b4",
"shasum": ""
},
"require": {
"php": ">=5.3.0",
"psr/log": "~1.0"
},
"provide": {
"psr/log-implementation": "1.0.0"
},
"require-dev": {
"aws/aws-sdk-php": "^2.4.9 || ^3.0",
"doctrine/couchdb": "~1.0@dev",
"graylog2/gelf-php": "~1.0",
"jakub-onderka/php-parallel-lint": "0.9",
"php-amqplib/php-amqplib": "~2.4",
"php-console/php-console": "^3.1.3",
"phpunit/phpunit": "~4.5",
"phpunit/phpunit-mock-objects": "2.3.0",
"ruflin/elastica": ">=0.90 <3.0",
"sentry/sentry": "^0.13",
"swiftmailer/swiftmailer": "^5.3|^6.0"
},
"suggest": {
"aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
"doctrine/couchdb": "Allow sending log messages to a CouchDB server",
"ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
"ext-mongo": "Allow sending log messages to a MongoDB server",
"graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
"mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver",
"php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
"php-console/php-console": "Allow sending log messages to Google Chrome",
"rollbar/rollbar": "Allow sending log messages to Rollbar",
"ruflin/elastica": "Allow sending log messages to an Elastic Search server",
"sentry/sentry": "Allow sending log messages to a Sentry server"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Monolog\\": "src/Monolog"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Jordi Boggiano",
"email": "j.boggiano@seld.be",
"homepage": "http://seld.be"
}
],
"description": "Sends your logs to files, sockets, inboxes, databases and various web services",
"homepage": "http://github.com/Seldaek/monolog",
"keywords": [
"log",
"logging",
"psr-3"
],
"time": "2017-06-19T01:22:40+00:00"
},
{
"name": "namshi/jose",
@@ -1020,6 +1178,53 @@
],
"time": "2016-12-05T07:27:31+00:00"
},
{
"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-10T12:19:37+00:00"
},
{
"name": "rdlowrey/auryn",
"version": "v1.4.2",
@@ -1182,16 +1387,16 @@
},
{
"name": "symfony/polyfill-php56",
"version": "v1.7.0",
"version": "v1.8.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php56.git",
"reference": "ebc999ce5f14204c5150b9bd15f8f04e621409d8"
"reference": "af98553c84912459db3f636329567809d639a8f6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/ebc999ce5f14204c5150b9bd15f8f04e621409d8",
"reference": "ebc999ce5f14204c5150b9bd15f8f04e621409d8",
"url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/af98553c84912459db3f636329567809d639a8f6",
"reference": "af98553c84912459db3f636329567809d639a8f6",
"shasum": ""
},
"require": {
@@ -1201,7 +1406,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.7-dev"
"dev-master": "1.8-dev"
}
},
"autoload": {
@@ -1234,20 +1439,20 @@
"portable",
"shim"
],
"time": "2018-01-30T19:27:44+00:00"
"time": "2018-04-26T10:06:28+00:00"
},
{
"name": "symfony/polyfill-util",
"version": "v1.7.0",
"version": "v1.8.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-util.git",
"reference": "e17c808ec4228026d4f5a8832afa19be85979563"
"reference": "1a5ad95d9436cbff3296034fe9f8d586dce3fb3a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-util/zipball/e17c808ec4228026d4f5a8832afa19be85979563",
"reference": "e17c808ec4228026d4f5a8832afa19be85979563",
"url": "https://api.github.com/repos/symfony/polyfill-util/zipball/1a5ad95d9436cbff3296034fe9f8d586dce3fb3a",
"reference": "1a5ad95d9436cbff3296034fe9f8d586dce3fb3a",
"shasum": ""
},
"require": {
@@ -1256,7 +1461,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.7-dev"
"dev-master": "1.8-dev"
}
},
"autoload": {
@@ -1286,7 +1491,7 @@
"polyfill",
"shim"
],
"time": "2018-01-31T18:08:44+00:00"
"time": "2018-04-26T10:06:28+00:00"
},
{
"name": "symfony/yaml",
@@ -1457,6 +1662,50 @@
],
"time": "2016-08-30T16:08:34+00:00"
},
{
"name": "composer/xdebug-handler",
"version": "1.1.0",
"source": {
"type": "git",
"url": "https://github.com/composer/xdebug-handler.git",
"reference": "c919dc6c62e221fc6406f861ea13433c0aa24f08"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/composer/xdebug-handler/zipball/c919dc6c62e221fc6406f861ea13433c0aa24f08",
"reference": "c919dc6c62e221fc6406f861ea13433c0aa24f08",
"shasum": ""
},
"require": {
"php": "^5.3.2 || ^7.0",
"psr/log": "^1.0"
},
"require-dev": {
"phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5"
},
"type": "library",
"autoload": {
"psr-4": {
"Composer\\XdebugHandler\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "John Stevenson",
"email": "john-stevenson@blueyonder.co.uk"
}
],
"description": "Restarts a process without xdebug.",
"keywords": [
"Xdebug",
"performance"
],
"time": "2018-04-11T15:42:36+00:00"
},
{
"name": "doctrine/annotations",
"version": "v1.4.0",
@@ -1635,20 +1884,21 @@
},
{
"name": "friendsofphp/php-cs-fixer",
"version": "v2.11.0",
"version": "v2.12.0",
"source": {
"type": "git",
"url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git",
"reference": "2ac8defbe07599b79005cca764bfffe7aeac0bf2"
"reference": "a53f39a72cf0baa03909fae779a4de6d3772c74f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/2ac8defbe07599b79005cca764bfffe7aeac0bf2",
"reference": "2ac8defbe07599b79005cca764bfffe7aeac0bf2",
"url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/a53f39a72cf0baa03909fae779a4de6d3772c74f",
"reference": "a53f39a72cf0baa03909fae779a4de6d3772c74f",
"shasum": ""
},
"require": {
"composer/semver": "^1.4",
"composer/xdebug-handler": "^1.0",
"doctrine/annotations": "^1.2",
"ext-json": "*",
"ext-tokenizer": "*",
@@ -1670,16 +1920,20 @@
"require-dev": {
"johnkary/phpunit-speedtrap": "^1.1 || ^2.0 || ^3.0",
"justinrainbow/json-schema": "^5.0",
"keradus/cli-executor": "^1.0",
"keradus/cli-executor": "^1.1",
"mikey179/vfsstream": "^1.6",
"php-coveralls/php-coveralls": "^2.0",
"php-coveralls/php-coveralls": "^2.1",
"php-cs-fixer/accessible-object": "^1.0",
"phpunit/phpunit": "^5.7.23 || ^6.4.3 || ^7.0",
"phpunitgoodpractices/traits": "^1.3.1",
"symfony/phpunit-bridge": "^3.2.2 || ^4.0"
"php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.0",
"php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.0",
"phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1",
"phpunitgoodpractices/traits": "^1.4",
"symfony/phpunit-bridge": "^4.0"
},
"suggest": {
"ext-mbstring": "For handling non-UTF8 characters in cache signature.",
"php-cs-fixer/phpunit-constraint-isidenticalstring": "For IsIdenticalString constraint.",
"php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "For XmlMatchesXsd constraint.",
"symfony/polyfill-mbstring": "When enabling `ext-mbstring` is not possible."
},
"bin": [
@@ -1688,7 +1942,7 @@
"type": "application",
"extra": {
"branch-alias": {
"dev-master": "2.11-dev"
"dev-master": "2.12-dev"
}
},
"autoload": {
@@ -1700,9 +1954,6 @@
"tests/Test/AbstractIntegrationCaseFactory.php",
"tests/Test/AbstractIntegrationTestCase.php",
"tests/Test/Assert/AssertTokensTrait.php",
"tests/Test/Constraint/SameStringsConstraint.php",
"tests/Test/Constraint/SameStringsConstraintForV5.php",
"tests/Test/Constraint/SameStringsConstraintForV7.php",
"tests/Test/IntegrationCase.php",
"tests/Test/IntegrationCaseFactory.php",
"tests/Test/IntegrationCaseFactoryInterface.php",
@@ -1725,7 +1976,7 @@
}
],
"description": "A tool to automatically fix PHP code style",
"time": "2018-03-20T18:11:36+00:00"
"time": "2018-06-02T17:33:35+00:00"
},
{
"name": "league/event",
@@ -1779,16 +2030,16 @@
},
{
"name": "macfja/phar-builder",
"version": "0.2.6",
"version": "0.2.7",
"source": {
"type": "git",
"url": "https://github.com/MacFJA/PharBuilder.git",
"reference": "ab3d6f2089e1dc908b545627ab857861bdf2891c"
"reference": "630b908ed22fae8611dfd2dff72930f7f395d8b6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/MacFJA/PharBuilder/zipball/ab3d6f2089e1dc908b545627ab857861bdf2891c",
"reference": "ab3d6f2089e1dc908b545627ab857861bdf2891c",
"url": "https://api.github.com/repos/MacFJA/PharBuilder/zipball/630b908ed22fae8611dfd2dff72930f7f395d8b6",
"reference": "630b908ed22fae8611dfd2dff72930f7f395d8b6",
"shasum": ""
},
"require": {
@@ -1839,7 +2090,7 @@
}
],
"description": "CLI tool for create phar of your composer based project",
"time": "2017-09-30T12:15:07+00:00"
"time": "2018-05-07T09:29:55+00:00"
},
{
"name": "macfja/symfony-console-filechooser",
@@ -1977,16 +2228,16 @@
},
{
"name": "paragonie/random_compat",
"version": "v2.0.11",
"version": "v2.0.15",
"source": {
"type": "git",
"url": "https://github.com/paragonie/random_compat.git",
"reference": "5da4d3c796c275c55f057af5a643ae297d96b4d8"
"reference": "10bcb46e8f3d365170f6de9d05245aa066b81f09"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/paragonie/random_compat/zipball/5da4d3c796c275c55f057af5a643ae297d96b4d8",
"reference": "5da4d3c796c275c55f057af5a643ae297d96b4d8",
"url": "https://api.github.com/repos/paragonie/random_compat/zipball/10bcb46e8f3d365170f6de9d05245aa066b81f09",
"reference": "10bcb46e8f3d365170f6de9d05245aa066b81f09",
"shasum": ""
},
"require": {
@@ -2018,10 +2269,11 @@
"description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
"keywords": [
"csprng",
"polyfill",
"pseudorandom",
"random"
],
"time": "2017-09-27T21:40:39+00:00"
"time": "2018-06-08T15:26:40+00:00"
},
{
"name": "phar-io/manifest",
@@ -2330,23 +2582,23 @@
},
{
"name": "phpspec/prophecy",
"version": "1.7.5",
"version": "1.7.6",
"source": {
"type": "git",
"url": "https://github.com/phpspec/prophecy.git",
"reference": "dfd6be44111a7c41c2e884a336cc4f461b3b2401"
"reference": "33a7e3c4fda54e912ff6338c48823bd5c0f0b712"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpspec/prophecy/zipball/dfd6be44111a7c41c2e884a336cc4f461b3b2401",
"reference": "dfd6be44111a7c41c2e884a336cc4f461b3b2401",
"url": "https://api.github.com/repos/phpspec/prophecy/zipball/33a7e3c4fda54e912ff6338c48823bd5c0f0b712",
"reference": "33a7e3c4fda54e912ff6338c48823bd5c0f0b712",
"shasum": ""
},
"require": {
"doctrine/instantiator": "^1.0.2",
"php": "^5.3|^7.0",
"phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0",
"sebastian/comparator": "^1.1|^2.0",
"sebastian/comparator": "^1.1|^2.0|^3.0",
"sebastian/recursion-context": "^1.0|^2.0|^3.0"
},
"require-dev": {
@@ -2389,20 +2641,20 @@
"spy",
"stub"
],
"time": "2018-02-19T10:16:54+00:00"
"time": "2018-04-18T13:57:24+00:00"
},
{
"name": "phpunit/php-code-coverage",
"version": "5.3.0",
"version": "5.3.2",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
"reference": "661f34d0bd3f1a7225ef491a70a020ad23a057a1"
"reference": "c89677919c5dd6d3b3852f230a663118762218ac"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/661f34d0bd3f1a7225ef491a70a020ad23a057a1",
"reference": "661f34d0bd3f1a7225ef491a70a020ad23a057a1",
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c89677919c5dd6d3b3852f230a663118762218ac",
"reference": "c89677919c5dd6d3b3852f230a663118762218ac",
"shasum": ""
},
"require": {
@@ -2452,7 +2704,7 @@
"testing",
"xunit"
],
"time": "2017-12-06T09:29:45+00:00"
"time": "2018-04-06T15:36:58+00:00"
},
{
"name": "phpunit/php-file-iterator",
@@ -2642,16 +2894,16 @@
},
{
"name": "phpunit/phpunit",
"version": "6.5.7",
"version": "6.5.8",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
"reference": "6bd77b57707c236833d2b57b968e403df060c9d9"
"reference": "4f21a3c6b97c42952fd5c2837bb354ec0199b97b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/6bd77b57707c236833d2b57b968e403df060c9d9",
"reference": "6bd77b57707c236833d2b57b968e403df060c9d9",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/4f21a3c6b97c42952fd5c2837bb354ec0199b97b",
"reference": "4f21a3c6b97c42952fd5c2837bb354ec0199b97b",
"shasum": ""
},
"require": {
@@ -2722,20 +2974,20 @@
"testing",
"xunit"
],
"time": "2018-02-26T07:01:09+00:00"
"time": "2018-04-10T11:38:34+00:00"
},
{
"name": "phpunit/phpunit-mock-objects",
"version": "5.0.6",
"version": "5.0.7",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
"reference": "33fd41a76e746b8fa96d00b49a23dadfa8334cdf"
"reference": "3eaf040f20154d27d6da59ca2c6e28ac8fd56dce"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/33fd41a76e746b8fa96d00b49a23dadfa8334cdf",
"reference": "33fd41a76e746b8fa96d00b49a23dadfa8334cdf",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/3eaf040f20154d27d6da59ca2c6e28ac8fd56dce",
"reference": "3eaf040f20154d27d6da59ca2c6e28ac8fd56dce",
"shasum": ""
},
"require": {
@@ -2781,54 +3033,7 @@
"mock",
"xunit"
],
"time": "2018-01-06T05:45:45+00:00"
},
{
"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-10T12:19:37+00:00"
"time": "2018-05-29T13:50:43+00:00"
},
{
"name": "rych/bytesize",
@@ -3776,16 +3981,16 @@
},
{
"name": "symfony/polyfill-mbstring",
"version": "v1.7.0",
"version": "v1.8.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b"
"reference": "3296adf6a6454a050679cde90f95350ad604b171"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/78be803ce01e55d3491c1397cf1c64beb9c1b63b",
"reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/3296adf6a6454a050679cde90f95350ad604b171",
"reference": "3296adf6a6454a050679cde90f95350ad604b171",
"shasum": ""
},
"require": {
@@ -3797,7 +4002,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.7-dev"
"dev-master": "1.8-dev"
}
},
"autoload": {
@@ -3831,20 +4036,20 @@
"portable",
"shim"
],
"time": "2018-01-30T19:27:44+00:00"
"time": "2018-04-26T10:06:28+00:00"
},
{
"name": "symfony/polyfill-php70",
"version": "v1.7.0",
"version": "v1.8.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php70.git",
"reference": "3532bfcd8f933a7816f3a0a59682fc404776600f"
"reference": "77454693d8f10dd23bb24955cffd2d82db1007a6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/3532bfcd8f933a7816f3a0a59682fc404776600f",
"reference": "3532bfcd8f933a7816f3a0a59682fc404776600f",
"url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/77454693d8f10dd23bb24955cffd2d82db1007a6",
"reference": "77454693d8f10dd23bb24955cffd2d82db1007a6",
"shasum": ""
},
"require": {
@@ -3854,7 +4059,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.7-dev"
"dev-master": "1.8-dev"
}
},
"autoload": {
@@ -3890,20 +4095,20 @@
"portable",
"shim"
],
"time": "2018-01-30T19:27:44+00:00"
"time": "2018-04-26T10:06:28+00:00"
},
{
"name": "symfony/polyfill-php72",
"version": "v1.7.0",
"version": "v1.8.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php72.git",
"reference": "8eca20c8a369e069d4f4c2ac9895144112867422"
"reference": "a4576e282d782ad82397f3e4ec1df8e0f0cafb46"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/8eca20c8a369e069d4f4c2ac9895144112867422",
"reference": "8eca20c8a369e069d4f4c2ac9895144112867422",
"url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/a4576e282d782ad82397f3e4ec1df8e0f0cafb46",
"reference": "a4576e282d782ad82397f3e4ec1df8e0f0cafb46",
"shasum": ""
},
"require": {
@@ -3912,7 +4117,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.7-dev"
"dev-master": "1.8-dev"
}
},
"autoload": {
@@ -3945,7 +4150,7 @@
"portable",
"shim"
],
"time": "2018-01-31T17:43:24+00:00"
"time": "2018-04-26T10:06:28+00:00"
},
{
"name": "symfony/process",

View File

@@ -24,7 +24,7 @@ You can separate multiple domains (`-d`) with `,`, `:` or `;`. You can separate
If you specify less paths than domains, the last one will be used for the remaining domains.
Please note that Let's Encrypt has rate limits. Currently it's five certificates per domain per seven days. If you combine multiple subdomains in a single certificate, they count as just one certificate. If you just want to test things out, you can use their staging server, which has way higher rate limits by appending `--s letsencrypt:staging`.
Please note that Let's Encrypt has rate limits. Currently it's five certificates per domain per seven days. If you combine multiple subdomains in a single certificate, they count as just one certificate. If you just want to test things out, you can use their staging server, which has way higher rate limits by appending `--server letsencrypt:staging`.
## Revoke a Certificate

View File

@@ -53,7 +53,10 @@ certificates:
# user: User running the web server. Challenge files are world readable,
# but some servers might require to be owner of files they serve.
#
# rekey: Regenerate certificate key pairs even if a key pair already exists.
#
- bits: 4096
rekey: true
paths:
/var/www/example:
- example.org

View File

@@ -2,12 +2,27 @@
namespace Kelunik\AcmeClient;
use Amp\ByteStream\ResourceOutputStream;
use Amp\Log\ConsoleFormatter;
use Amp\Log\StreamHandler;
use Kelunik\Acme\AcmeClient;
use Kelunik\Acme\AcmeService;
use Kelunik\Acme\Crypto\PrivateKey;
use Monolog\Logger;
use Monolog\Processor\PsrLogMessageProcessor;
class AcmeFactory {
public function build(string $directory, PrivateKey $keyPair): AcmeService {
return new AcmeService(new AcmeClient($directory, $keyPair));
$logger = null;
if (\getenv('ACME_LOG')) {
$logger = new Logger('acme');
$logger->pushProcessor(new PsrLogMessageProcessor);
$handler = new StreamHandler(new ResourceOutputStream(\STDERR));
$handler->setFormatter(new ConsoleFormatter(null, null, true, true));
$logger->pushHandler($handler);
}
return new AcmeService(new AcmeClient($directory, $keyPair, null, null, $logger));
}
}

View File

@@ -86,6 +86,13 @@ class Auto implements Command {
return self::EXIT_CONFIG_ERROR;
}
foreach ($config['certificates'] as $certificateConfig) {
if (isset($certificateConfig['rekey']) && !\is_bool($certificateConfig['rekey'])) {
$this->climate->error("Config file ({$configPath}) defines an invalid 'rekey' value.");
return self::EXIT_CONFIG_ERROR;
}
}
$concurrency = isset($config['challenge-concurrency']) ? (int) $config['challenge-concurrency'] : null;
$process = new Process([
@@ -179,8 +186,7 @@ class Auto implements Command {
$domainPathMap = $this->toDomainPathMap($certificate['paths']);
$domains = \array_keys($domainPathMap);
$commonName = \reset($domains);
$process = new Process([
$processArgs = [
PHP_BINARY,
$GLOBALS['argv'][0],
'check',
@@ -192,7 +198,13 @@ class Auto implements Command {
$commonName,
'--names',
\implode(',', $domains),
]);
];
if ($certificate['rekey'] ?? false) {
$processArgs[] = '--rekey';
}
$process = new Process($processArgs);
$process->start();
$exit = yield $process->join();

View File

@@ -97,14 +97,20 @@ class Issue implements Command {
throw new AcmeException('Issuance failed, not all challenges could be solved.');
}
$path = 'certs/' . $keyFile . '/' . \reset($domains) . '/key.pem';
$keyPath = 'certs/' . $keyFile . '/' . \reset($domains) . '/key.pem';
$bits = $args->get('bits');
$regenerateKey = $args->get('rekey');
try {
$key = yield $keyStore->get($path);
$key = yield $keyStore->get($keyPath);
} catch (KeyStoreException $e) {
$regenerateKey = true;
}
if ($regenerateKey) {
$this->climate->whisper(' Generating new key pair ...');
$key = (new RsaKeyGenerator($bits))->generateKey();
$key = yield $keyStore->put($path, $key);
}
$this->climate->br();
@@ -117,6 +123,8 @@ class Issue implements Command {
$path = AcmeClient\normalizePath($args->get('storage')) . '/certs/' . $keyFile;
$certificateStore = new CertificateStore($path);
yield $keyStore->put($keyPath, $key);
yield $certificateStore->put($certificates);
$this->climate->info(' Successfully issued certificate.');
@@ -232,6 +240,11 @@ class Issue implements Command {
'defaultValue' => 10,
'castTo' => 'int',
],
'rekey' => [
'longPrefix' => 'rekey',
'description' => 'Regenerate the key pair even if a key pair already exists.',
'noValue' => true,
],
];
}
}