Implement multi docroot feature which is already documented, but has never been commited
This commit is contained in:
@@ -46,6 +46,19 @@ class Issue implements Command {
|
|||||||
$domains = array_map("trim", explode(":", str_replace(",", ":", $args->get("domains"))));
|
$domains = array_map("trim", explode(":", str_replace(",", ":", $args->get("domains"))));
|
||||||
yield \Amp\resolve($this->checkDnsRecords($domains));
|
yield \Amp\resolve($this->checkDnsRecords($domains));
|
||||||
|
|
||||||
|
$docRoots = explode(":", str_replace("\\", "/", $args->get("path")));
|
||||||
|
$docRoots = array_map(function($root) {
|
||||||
|
return rtrim($root, "/");
|
||||||
|
}, $docRoots);
|
||||||
|
|
||||||
|
if (count($domains) < count($docRoots)) {
|
||||||
|
throw new AcmeException("Specified more document roots than domains.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (count($domains) > count($docRoots)) {
|
||||||
|
$docRoots = array_fill(count($docRoots), count($domains) - count($docRoots), end($docRoots));
|
||||||
|
}
|
||||||
|
|
||||||
$keyStore = new KeyStore(dirname(dirname(__DIR__)) . "/data");
|
$keyStore = new KeyStore(dirname(dirname(__DIR__)) . "/data");
|
||||||
|
|
||||||
$server = \Kelunik\AcmeClient\resolveServer($args->get("server"));
|
$server = \Kelunik\AcmeClient\resolveServer($args->get("server"));
|
||||||
@@ -61,7 +74,7 @@ class Issue implements Command {
|
|||||||
|
|
||||||
$acme = new AcmeService(new AcmeClient($server, $keyPair));
|
$acme = new AcmeService(new AcmeClient($server, $keyPair));
|
||||||
|
|
||||||
foreach ($domains as $domain) {
|
foreach ($domains as $i => $domain) {
|
||||||
list($location, $challenges) = (yield $acme->requestChallenges($domain));
|
list($location, $challenges) = (yield $acme->requestChallenges($domain));
|
||||||
$goodChallenges = $this->findSuitableCombination($challenges);
|
$goodChallenges = $this->findSuitableCombination($challenges);
|
||||||
|
|
||||||
@@ -80,9 +93,9 @@ class Issue implements Command {
|
|||||||
$payload = $acme->generateHttp01Payload($keyPair, $token);
|
$payload = $acme->generateHttp01Payload($keyPair, $token);
|
||||||
|
|
||||||
$this->logger->info("Providing payload at http://{$domain}/.well-known/acme-challenge/{$token}");
|
$this->logger->info("Providing payload at http://{$domain}/.well-known/acme-challenge/{$token}");
|
||||||
$docRoot = rtrim(str_replace("\\", "/", $args->get("path")), "/");
|
|
||||||
|
|
||||||
$challengeStore = new ChallengeStore($docRoot);
|
|
||||||
|
$challengeStore = new ChallengeStore($docRoots[$i]);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$challengeStore->put($token, $payload, isset($user) ? $user : null);
|
$challengeStore->put($token, $payload, isset($user) ? $user : null);
|
||||||
|
|||||||
Reference in New Issue
Block a user