DirectAdmin\LetsEncrypt\Lib\Challenges::solveChallenge PHP Метод

solveChallenge() публичный Метод

Solve a challenge
public solveChallenge ( )
    public function solveChallenge()
    {
        if (empty($this->solvableChallenges)) {
            $this->solvableChallenges();
        }
        $domains = array_merge((array) $this->domain->getDomain(), $this->subdomains);
        foreach ($domains as $domain) {
            $challenge = $this->challenges[$domain][reset($this->solvableChallenges[$domain])];
            if ($challenge->solvable()) {
                try {
                    $challenge->solve();
                } catch (\Exception $e) {
                    throw new \Exception('Exception while solving challenge for ' . $domain . ': ' . $e->getMessage(), 0, $e);
                }
            } else {
                throw new \Exception('Defined unsolvable challenge for ' . $domain);
            }
        }
    }

Usage Example

Пример #1
0
     }
     // Replace the $domain with our Domain object,
     $domain = new Domain($domain, $account);
     if (!$domain->existsInStorage('config.json')) {
         $log->log('Skipped domain ' . $domain->getDomain());
         continue;
     }
     $log->log('Processing domain ' . $domain->getDomain());
     // Check if a renew is required, if everything needs to be checked within 10 days or in the past
     if (strtotime($domain->config('expire')) - time() >= 10 * 86400) {
         $log->log('Domain ' . $domain->getDomain() . ' doesn\'t need a reissue');
         continue;
     }
     try {
         $challenges = new Challenges($domain);
         $challenges->solveChallenge();
         $log->log('Successfully completed challenge for ' . $domain->getDomain());
         $domain->createKeys();
         $domain->requestCertificate(null, $domain->config('subdomains'));
         $log->log('Successfully received certificate from Let\'s Encrypt');
         $domain->applyCertificates();
         $log->log('Successfully applied certificate and CA certificates to DirectAdmin');
         $domain->config('domain', $domain->getDomain());
         $domain->config('subdomains', $domain->getSubdomains());
         $domain->config('status', 'applied to DirectAdmin (renewed)');
         $domain->config('expire', date('Y-m-d', strtotime('+50 days')));
         $log->log('Reissued domain ' . $domain->getDomain() . ' with success.');
     } catch (\Exception $e) {
         $log->error($e->getMessage(), null, false);
     }
 }