Marius Burkard
2016-06-07 b63119417fe6e4bbcd072108d7dec927ee879d4a
server/lib/classes/cron.d/900-letsencrypt.inc.php
@@ -36,10 +36,28 @@
   public function onRunJob() {
      global $app, $conf;
      $letsencrypt = array_shift( split("\n", `which letsencrypt /root/.local/share/letsencrypt/bin/letsencrypt`) );
      $letsencrypt = array_shift( explode("\n", shell_exec('which letsencrypt certbot /root/.local/share/letsencrypt/bin/letsencrypt')) );
      if(is_executable($letsencrypt)) {
         exec($letsencrypt . ' -n renew');
         $app->services->restartServiceDelayed('httpd', 'reload');
         $version = trim(exec($letsencrypt . ' --version 2>/dev/null'));
         if(preg_match('/^(\S+)\s+(\d+(\.\d+)+)$/', $version, $matches)) {
            $type = strtolower($matches[1]);
            $version = $matches[2];
            if(($type != 'letsencrypt' && $type != 'certbot') || version_compare($version, '0.7.0', '<')) {
               exec($letsencrypt . ' -n renew');
               $app->services->restartServiceDelayed('httpd', 'reload');
            } else {
               $marker_file = '/usr/local/ispconfig/server/le.restart';
               $cmd = "echo '1' > " . $marker_file;
               exec($letsencrypt . ' -n renew --post-hook ' . escapeshellarg($cmd));
               if(file_exists($marker_file) && trim(file_get_contents($marker_file)) == '1') {
                  unlink($marker_file);
                  $app->services->restartServiceDelayed('httpd', 'reload');
               }
            }
         } else {
            exec($letsencrypt . ' -n renew');
            $app->services->restartServiceDelayed('httpd', 'reload');
         }
      }
      
      parent::onRunJob();