Refactor AcmeService creation into Factory
This commit is contained in:
4
bin/acme
4
bin/acme
@@ -2,6 +2,7 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use Auryn\Injector;
|
use Auryn\Injector;
|
||||||
|
use Kelunik\AcmeClient\AcmeFactory;
|
||||||
use League\CLImate\CLImate;
|
use League\CLImate\CLImate;
|
||||||
|
|
||||||
if (!file_exists(__DIR__ . "/../vendor/autoload.php")) {
|
if (!file_exists(__DIR__ . "/../vendor/autoload.php")) {
|
||||||
@@ -69,7 +70,6 @@ $help = <<<EOT
|
|||||||
EOT;
|
EOT;
|
||||||
|
|
||||||
$climate = new CLImate;
|
$climate = new CLImate;
|
||||||
$injector = new Injector;
|
|
||||||
|
|
||||||
if (!in_array(PHP_SAPI, ["cli", "phpdbg"], true)) {
|
if (!in_array(PHP_SAPI, ["cli", "phpdbg"], true)) {
|
||||||
$climate->error("Please run this script via CLI!");
|
$climate->error("Please run this script via CLI!");
|
||||||
@@ -122,7 +122,9 @@ try {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$injector = new Injector;
|
||||||
$injector->share($climate);
|
$injector->share($climate);
|
||||||
|
$injector->share(new AcmeFactory);
|
||||||
|
|
||||||
$command = $injector->make($class);
|
$command = $injector->make($class);
|
||||||
|
|
||||||
|
|||||||
16
src/AcmeFactory.php
Normal file
16
src/AcmeFactory.php
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Kelunik\AcmeClient;
|
||||||
|
|
||||||
|
use Kelunik\Acme\AcmeClient;
|
||||||
|
use Kelunik\Acme\AcmeService;
|
||||||
|
use Kelunik\Acme\KeyPair;
|
||||||
|
use Webmozart\Assert\Assert;
|
||||||
|
|
||||||
|
class AcmeFactory {
|
||||||
|
public function build($directory, KeyPair $keyPair) {
|
||||||
|
Assert::string($directory);
|
||||||
|
|
||||||
|
return new AcmeService(new AcmeClient($directory, $keyPair));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -5,11 +5,11 @@ namespace Kelunik\AcmeClient\Commands;
|
|||||||
use Amp\CoroutineResult;
|
use Amp\CoroutineResult;
|
||||||
use Amp\Dns\Record;
|
use Amp\Dns\Record;
|
||||||
use Exception;
|
use Exception;
|
||||||
use Kelunik\Acme\AcmeClient;
|
|
||||||
use Kelunik\Acme\AcmeException;
|
use Kelunik\Acme\AcmeException;
|
||||||
use Kelunik\Acme\AcmeService;
|
use Kelunik\Acme\AcmeService;
|
||||||
use Kelunik\Acme\KeyPair;
|
use Kelunik\Acme\KeyPair;
|
||||||
use Kelunik\Acme\OpenSSLKeyGenerator;
|
use Kelunik\Acme\OpenSSLKeyGenerator;
|
||||||
|
use Kelunik\AcmeClient\AcmeFactory;
|
||||||
use Kelunik\AcmeClient\Stores\CertificateStore;
|
use Kelunik\AcmeClient\Stores\CertificateStore;
|
||||||
use Kelunik\AcmeClient\Stores\ChallengeStore;
|
use Kelunik\AcmeClient\Stores\ChallengeStore;
|
||||||
use Kelunik\AcmeClient\Stores\KeyStore;
|
use Kelunik\AcmeClient\Stores\KeyStore;
|
||||||
@@ -21,9 +21,11 @@ use Throwable;
|
|||||||
|
|
||||||
class Issue implements Command {
|
class Issue implements Command {
|
||||||
private $climate;
|
private $climate;
|
||||||
|
private $acmeFactory;
|
||||||
|
|
||||||
public function __construct(CLImate $climate) {
|
public function __construct(CLImate $climate, AcmeFactory $acmeFactory) {
|
||||||
$this->climate = $climate;
|
$this->climate = $climate;
|
||||||
|
$this->acmeFactory = $acmeFactory;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function execute(Manager $args) {
|
public function execute(Manager $args) {
|
||||||
@@ -77,7 +79,7 @@ class Issue implements Command {
|
|||||||
|
|
||||||
$this->climate->br();
|
$this->climate->br();
|
||||||
|
|
||||||
$acme = new AcmeService(new AcmeClient($server, $keyPair));
|
$acme = $this->acmeFactory->build($server, $keyPair);
|
||||||
$promises = [];
|
$promises = [];
|
||||||
|
|
||||||
foreach ($domains as $i => $domain) {
|
foreach ($domains as $i => $domain) {
|
||||||
|
|||||||
@@ -4,8 +4,7 @@ namespace Kelunik\AcmeClient\Commands;
|
|||||||
|
|
||||||
use Amp\CoroutineResult;
|
use Amp\CoroutineResult;
|
||||||
use Amp\File\FilesystemException;
|
use Amp\File\FilesystemException;
|
||||||
use Kelunik\Acme\AcmeClient;
|
use Kelunik\AcmeClient\AcmeFactory;
|
||||||
use Kelunik\Acme\AcmeService;
|
|
||||||
use Kelunik\AcmeClient\Stores\CertificateStore;
|
use Kelunik\AcmeClient\Stores\CertificateStore;
|
||||||
use Kelunik\AcmeClient\Stores\KeyStore;
|
use Kelunik\AcmeClient\Stores\KeyStore;
|
||||||
use Kelunik\Certificate\Certificate;
|
use Kelunik\Certificate\Certificate;
|
||||||
@@ -14,9 +13,11 @@ use League\CLImate\CLImate;
|
|||||||
|
|
||||||
class Revoke implements Command {
|
class Revoke implements Command {
|
||||||
private $climate;
|
private $climate;
|
||||||
|
private $acmeFactory;
|
||||||
|
|
||||||
public function __construct(CLImate $climate) {
|
public function __construct(CLImate $climate, AcmeFactory $acmeFactory) {
|
||||||
$this->climate = $climate;
|
$this->climate = $climate;
|
||||||
|
$this->acmeFactory = $acmeFactory;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function execute(Manager $args) {
|
public function execute(Manager $args) {
|
||||||
@@ -30,7 +31,7 @@ class Revoke implements Command {
|
|||||||
$keyFile = \Kelunik\AcmeClient\serverToKeyname($server);
|
$keyFile = \Kelunik\AcmeClient\serverToKeyname($server);
|
||||||
|
|
||||||
$keyPair = (yield $keyStore->get("accounts/{$keyFile}.pem"));
|
$keyPair = (yield $keyStore->get("accounts/{$keyFile}.pem"));
|
||||||
$acme = new AcmeService(new AcmeClient($server, $keyPair), $keyPair);
|
$acme = $this->acmeFactory->build($server, $keyPair);
|
||||||
|
|
||||||
$this->climate->br();
|
$this->climate->br();
|
||||||
$this->climate->whisper(" Revoking certificate ...");
|
$this->climate->whisper(" Revoking certificate ...");
|
||||||
@@ -57,7 +58,7 @@ class Revoke implements Command {
|
|||||||
$this->climate->br();
|
$this->climate->br();
|
||||||
$this->climate->info(" Certificate has been revoked.");
|
$this->climate->info(" Certificate has been revoked.");
|
||||||
|
|
||||||
yield (new CertificateStore(\Kelunik\AcmeClient\normalizePath($args->get("storage")). "/certs/" . $keyFile))->delete($args->get("name"));
|
yield (new CertificateStore(\Kelunik\AcmeClient\normalizePath($args->get("storage")) . "/certs/" . $keyFile))->delete($args->get("name"));
|
||||||
|
|
||||||
yield new CoroutineResult(0);
|
yield new CoroutineResult(0);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,11 +6,10 @@ use Amp\CoroutineResult;
|
|||||||
use Amp\Dns\Record;
|
use Amp\Dns\Record;
|
||||||
use Amp\Dns\ResolutionException;
|
use Amp\Dns\ResolutionException;
|
||||||
use InvalidArgumentException;
|
use InvalidArgumentException;
|
||||||
use Kelunik\Acme\AcmeClient;
|
|
||||||
use Kelunik\Acme\AcmeException;
|
use Kelunik\Acme\AcmeException;
|
||||||
use Kelunik\Acme\AcmeService;
|
|
||||||
use Kelunik\Acme\OpenSSLKeyGenerator;
|
use Kelunik\Acme\OpenSSLKeyGenerator;
|
||||||
use Kelunik\Acme\Registration;
|
use Kelunik\Acme\Registration;
|
||||||
|
use Kelunik\AcmeClient\AcmeFactory;
|
||||||
use Kelunik\AcmeClient\Stores\KeyStore;
|
use Kelunik\AcmeClient\Stores\KeyStore;
|
||||||
use Kelunik\AcmeClient\Stores\KeyStoreException;
|
use Kelunik\AcmeClient\Stores\KeyStoreException;
|
||||||
use League\CLImate\Argument\Manager;
|
use League\CLImate\Argument\Manager;
|
||||||
@@ -18,9 +17,11 @@ use League\CLImate\CLImate;
|
|||||||
|
|
||||||
class Setup implements Command {
|
class Setup implements Command {
|
||||||
private $climate;
|
private $climate;
|
||||||
|
private $acmeFactory;
|
||||||
|
|
||||||
public function __construct(CLImate $climate) {
|
public function __construct(CLImate $climate, AcmeFactory $acmeFactory) {
|
||||||
$this->climate = $climate;
|
$this->climate = $climate;
|
||||||
|
$this->acmeFactory = $acmeFactory;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function execute(Manager $args) {
|
public function execute(Manager $args) {
|
||||||
@@ -53,7 +54,7 @@ class Setup implements Command {
|
|||||||
$this->climate->whisper(" Generated new private key with {$bits} bits.");
|
$this->climate->whisper(" Generated new private key with {$bits} bits.");
|
||||||
}
|
}
|
||||||
|
|
||||||
$acme = new AcmeService(new AcmeClient($server, $keyPair), $keyPair);
|
$acme = $this->acmeFactory->build($server, $keyPair);
|
||||||
|
|
||||||
$this->climate->whisper(" Registering with " . substr($server, 8) . " ...");
|
$this->climate->whisper(" Registering with " . substr($server, 8) . " ...");
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user