/** * @param Manager $args * @return \Generator */ private function doExecute(Manager $args) { $server = \Kelunik\AcmeClient\resolveServer($args->get("server")); $keyName = \Kelunik\AcmeClient\serverToKeyname($server); $storage = \Kelunik\AcmeClient\normalizePath($args->get("storage")); try { $keyStore = new KeyStore($storage); (yield $keyStore->get("accounts/{$keyName}.pem")); $setup = true; } catch (KeyStoreException $e) { $setup = false; } $this->climate->br(); $this->climate->out(" [" . ($setup ? "<green> ✓ </green>" : "<red> ✗ </red>") . "] " . ($setup ? "Registered on " : "Not yet registered on ") . $server); $this->climate->br(); if ((yield \Amp\File\exists($storage . "/certs/{$keyName}"))) { $certificateStore = new CertificateStore($storage . "/certs/{$keyName}"); $domains = (yield \Amp\File\scandir($storage . "/certs/{$keyName}")); foreach ($domains as $domain) { $pem = (yield $certificateStore->get($domain)); $cert = new Certificate($pem); $symbol = time() > $cert->getValidTo() ? "<red> ✗ </red>" : "<green> ✓ </green>"; if (time() < $cert->getValidTo() && time() + $args->get("ttl") * 24 * 60 * 60 > $cert->getValidTo()) { $symbol = "<yellow> ⭮ </yellow>"; } $this->climate->out(" [" . $symbol . "] " . implode(", ", $cert->getNames())); } $this->climate->br(); } }
private function doDelete($name) { Assert::string($name, "Name must be a string. Got: %s"); foreach ((yield \Amp\File\scandir($this->root . "/" . $name)) as $file) { (yield \Amp\File\unlink($this->root . "/" . $name . "/" . $file)); } (yield \Amp\File\rmdir($this->root . "/" . $name)); }
public function doInfo() { $result = []; $keyFile = $this->serverToKeyName(); $certificateStore = $this->getCertificateStorage(); $domains = (yield \Amp\File\scandir($certificateStore->getRoot() . '/certs/' . $this->serverToKeyName())); foreach ($domains as $domain) { $cert = $certificateStore->get('/certs/' . $keyFile . DIRECTORY_SEPARATOR . $domain); $result[] = $cert; } (yield new CoroutineResult($result)); }