1
0
mirror of https://github.com/laravel/valet.git synced 2026-02-07 01:00:09 +01:00
Files
laravel-valet/cli/Valet/Caddy.php
Adam Wathan 403e75d580 Rewrite TLS Caddy files on install
Porting this from master branch for now, makes it a lot easier for
people to go from master to 1.1.* since the master branch has a
different Caddyfile structure.

Since Caddy 0.9.* still has the X-Accel-Redirect issue re:
Content-Type, we can't tag on master yet, so this will help people get
back to a tagged release without having to manually fix a bunch of
Caddyfiles.
2016-09-23 09:50:09 -04:00

136 lines
3.1 KiB
PHP

<?php
namespace Valet;
class Caddy
{
var $cli;
var $files;
var $configuration;
var $site;
var $daemonPath = '/Library/LaunchDaemons/com.laravel.valetServer.plist';
/**
* Create a new Brew instance.
*
* @param CommandLine $cli
* @param Filesystem $files
*/
function __construct(CommandLine $cli, Filesystem $files, Configuration $configuration, Site $site)
{
$this->cli = $cli;
$this->files = $files;
$this->configuration = $configuration;
$this->site = $site;
}
/**
* Install the system launch daemon for the Caddy server.
*
* @return void
*/
function install()
{
$this->installCaddyFile();
$this->installCaddyDirectory();
$this->installCaddyDaemon();
}
/**
* Install the Caddyfile to the ~/.valet directory.
*
* This file serves as the main server configuration for Valet.
*
* @return void
*/
function installCaddyFile()
{
$this->files->putAsUser(
VALET_HOME_PATH.'/Caddyfile',
str_replace('VALET_HOME_PATH', VALET_HOME_PATH, $this->files->get(__DIR__.'/../stubs/Caddyfile'))
);
}
/**
* Install the Caddy configuration directory to the ~/.valet directory.
*
* This directory contains all site-specific Caddy definitions.
*
* @return void
*/
function installCaddyDirectory()
{
if (! $this->files->isDir($caddyDirectory = VALET_HOME_PATH.'/Caddy')) {
$this->files->mkdirAsUser($caddyDirectory);
}
$this->files->putAsUser($caddyDirectory.'/.keep', "\n");
$this->rewriteSecureCaddyFiles();
}
/**
* Generate fresh Caddyfiles for existing secure sites.
*
* This simplifies upgrading when the Caddyfile structure changes.
*
* @return void
*/
function rewriteSecureCaddyFiles()
{
$domain = $this->configuration->read()['domain'];
$this->site->resecureForNewDomain($domain, $domain);
}
/**
* Install the Caddy daemon on a system level daemon.
*
* @return void
*/
function installCaddyDaemon()
{
$contents = str_replace(
'VALET_PATH', $this->files->realpath(__DIR__.'/../../'),
$this->files->get(__DIR__.'/../stubs/daemon.plist')
);
$this->files->put(
$this->daemonPath, str_replace('VALET_HOME_PATH', VALET_HOME_PATH, $contents)
);
}
/**
* Restart the launch daemon.
*
* @return void
*/
function restart()
{
$this->cli->quietly('sudo launchctl unload '.$this->daemonPath);
$this->cli->quietly('sudo launchctl load '.$this->daemonPath);
}
/**
* Stop the launch daemon.
*
* @return void
*/
function stop()
{
$this->cli->quietly('sudo launchctl unload '.$this->daemonPath);
}
/**
* Remove the launch daemon.
*
* @return void
*/
function uninstall()
{
$this->stop();
$this->files->unlink($this->daemonPath);
}
}