From f484caf9e6f6df3085beb0f74ea10dc883d153c1 Mon Sep 17 00:00:00 2001 From: Nelson LaQuet Date: Sat, 11 Apr 2015 20:22:15 -0500 Subject: [PATCH] Added Vagrant file. --- Vagrantfile | 10 + app/start/global.php | 2 +- bootstrap/compiled.php | 793 ++++++++++++++++------- bootstrap/start.php | 2 +- composer.json | 2 +- composer.phar | Bin 807659 -> 0 bytes logs/.gitignore | 2 + pony.fm.iml | 8 + public/styles/account-content.less | 4 +- public/styles/animations.less | 4 +- public/styles/base/bootstrap/navbar.less | 2 +- public/styles/body.less | 4 +- public/styles/components.less | 6 +- public/styles/content.less | 6 +- public/styles/dashboard.less | 2 +- public/styles/forms.less | 2 +- public/styles/layout.less | 6 +- public/styles/player.less | 4 +- public/styles/uploader.less | 2 +- vagrant/config/app.php | 14 + vagrant/config/cache.php | 5 + vagrant/config/database.php | 85 +++ vagrant/config/poniverse.php | 12 + vagrant/config/session.php | 125 ++++ vagrant/copy-and-restart-configs.sh | 13 + vagrant/elevator.exe | Bin 0 -> 8704 bytes vagrant/install.sh | 19 + vagrant/pony.fm.mysql.config | 127 ++++ vagrant/pony.fm.nginx.config | 85 +++ vagrant/pony.fm.nginx.site.config | 46 ++ vagrant/pony.fm.redis.config | 696 ++++++++++++++++++++ vagrant/reload-config.bat | 2 + vagrant/reload-config.vmware.bat | 1 + 33 files changed, 1819 insertions(+), 272 deletions(-) create mode 100644 Vagrantfile delete mode 100644 composer.phar create mode 100644 logs/.gitignore create mode 100644 pony.fm.iml create mode 100644 vagrant/config/app.php create mode 100644 vagrant/config/cache.php create mode 100644 vagrant/config/database.php create mode 100644 vagrant/config/poniverse.php create mode 100644 vagrant/config/session.php create mode 100644 vagrant/copy-and-restart-configs.sh create mode 100644 vagrant/elevator.exe create mode 100644 vagrant/install.sh create mode 100644 vagrant/pony.fm.mysql.config create mode 100644 vagrant/pony.fm.nginx.config create mode 100644 vagrant/pony.fm.nginx.site.config create mode 100644 vagrant/pony.fm.redis.config create mode 100644 vagrant/reload-config.bat create mode 100644 vagrant/reload-config.vmware.bat diff --git a/Vagrantfile b/Vagrantfile new file mode 100644 index 00000000..cfaf0dc1 --- /dev/null +++ b/Vagrantfile @@ -0,0 +1,10 @@ +Vagrant.configure("2") do |config| + config.vm.box = 'laravel/homestead' + + config.vm.network :private_network, ip: "192.168.33.11" + config.vm.synced_folder ".", "/vagrant", type: "nfs" + + config.vm.provision "shell", path: "vagrant/install.sh" + + config.vm.synced_folder "../pony.fm.files", "/vagrant-files" +end \ No newline at end of file diff --git a/app/start/global.php b/app/start/global.php index b507135b..6a81c394 100644 --- a/app/start/global.php +++ b/app/start/global.php @@ -74,7 +74,7 @@ App::down(function() }); Auth::extend('pfm', function() { - return new Guard(new PFMAuth(), App::make('session')); + return new Guard(new PFMAuth(), App::make('session.store')); }); Validator::resolver(function($translator, $data, $rules, $messages) diff --git a/bootstrap/compiled.php b/bootstrap/compiled.php index 2079b47f..14971c69 100644 --- a/bootstrap/compiled.php +++ b/bootstrap/compiled.php @@ -52,7 +52,10 @@ class ClassLoader } namespace Illuminate\Container; -use Closure, ArrayAccess, ReflectionParameter; +use Closure; +use ArrayAccess; +use ReflectionClass; +use ReflectionParameter; class BindingResolutionException extends \Exception { @@ -63,6 +66,7 @@ class Container implements ArrayAccess protected $instances = array(); protected $aliases = array(); protected $resolvingCallbacks = array(); + protected $globalResolvingCallbacks = array(); public function bound($abstract) { return isset($this[$abstract]) or isset($this->instances[$abstract]); @@ -146,7 +150,7 @@ class Container implements ArrayAccess if ($this->isShared($abstract)) { $this->instances[$abstract] = $object; } - $this->fireResolvingCallbacks($object); + $this->fireResolvingCallbacks($abstract, $object); return $object; } protected function getConcrete($abstract) @@ -162,7 +166,7 @@ class Container implements ArrayAccess if ($concrete instanceof Closure) { return $concrete($this, $parameters); } - $reflector = new \ReflectionClass($concrete); + $reflector = new ReflectionClass($concrete); if (!$reflector->isInstantiable()) { $message = "Target [{$concrete}] is not instantiable."; throw new BindingResolutionException($message); @@ -209,13 +213,24 @@ class Container implements ArrayAccess } } } - public function resolving(Closure $callback) + public function resolving($abstract, Closure $callback) { - $this->resolvingCallbacks[] = $callback; + $this->resolvingCallbacks[$abstract][] = $callback; } - protected function fireResolvingCallbacks($object) + public function resolvingAny(Closure $callback) { - foreach ($this->resolvingCallbacks as $callback) { + $this->globalResolvingCallbacks[] = $callback; + } + protected function fireResolvingCallbacks($abstract, $object) + { + if (isset($this->resolvingCallbacks[$abstract])) { + $this->fireCallbackArray($object, $this->resolvingCallbacks[$abstract]); + } + $this->fireCallbackArray($object, $this->globalResolvingCallbacks); + } + protected function fireCallbackArray($object, array $callbacks) + { + foreach ($callbacks as $callback) { call_user_func($callback, $object); } } @@ -256,6 +271,7 @@ class Container implements ArrayAccess public function offsetUnset($key) { unset($this->bindings[$key]); + unset($this->instances[$key]); } } namespace Symfony\Component\HttpKernel; @@ -294,15 +310,15 @@ use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpKernel\HttpKernelInterface; use Symfony\Component\HttpFoundation\StreamedResponse; use Symfony\Component\HttpKernel\Exception\HttpException; +use Symfony\Component\Debug\Exception\FatalErrorException; use Illuminate\Support\Contracts\ResponsePreparerInterface; -use Symfony\Component\HttpKernel\Exception\FatalErrorException; use Symfony\Component\HttpFoundation\Request as SymfonyRequest; use Symfony\Component\HttpFoundation\Response as SymfonyResponse; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use Symfony\Component\HttpFoundation\RedirectResponse as SymfonyRedirect; class Application extends Container implements HttpKernelInterface, ResponsePreparerInterface { - const VERSION = '4.0.7'; + const VERSION = '4.0.11'; protected $booted = false; protected $bootingCallbacks = array(); protected $bootedCallbacks = array(); @@ -314,8 +330,24 @@ class Application extends Container implements HttpKernelInterface, ResponsePrep public function __construct(Request $request = null) { $this['request'] = $this->createRequest($request); + $this->registerBaseServiceProviders(); + } + protected function registerBaseServiceProviders() + { + foreach (array('Exception', 'Routing', 'Event') as $name) { + $this->{"register{$name}Provider"}(); + } + } + protected function registerExceptionProvider() + { $this->register(new ExceptionServiceProvider($this)); + } + protected function registerRoutingProvider() + { $this->register(new RoutingServiceProvider($this)); + } + protected function registerEventProvider() + { $this->register(new EventServiceProvider($this)); } protected function createRequest(Request $request = null) @@ -348,7 +380,7 @@ class Application extends Container implements HttpKernelInterface, ResponsePrep } public static function getBootstrapFile() { - return 'F:\\Nelson\\My Documents - Personal\\Visual Studio 2010\\Projects\\Poniverse\\spa.pony.fm\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation' . '/start.php'; + return '/vagrant/vendor/laravel/framework/src/Illuminate/Foundation' . '/start.php'; } public function startExceptionHandling() { @@ -357,7 +389,11 @@ class Application extends Container implements HttpKernelInterface, ResponsePrep } public function environment() { - return $this['env']; + if (count(func_get_args()) > 0) { + return in_array($this['env'], func_get_args()); + } else { + return $this['env']; + } } public function detectEnvironment($environments) { @@ -415,6 +451,7 @@ class Application extends Container implements HttpKernelInterface, ResponsePrep } $this->serviceProviders[] = $provider; $this->loadedProviders[get_class($provider)] = true; + return $provider; } protected function resolveProviderClass($provider) { @@ -530,8 +567,8 @@ class Application extends Container implements HttpKernelInterface, ResponsePrep } public function prepareRequest(Request $request) { - if (isset($this['session'])) { - $request->setSessionStore($this['session']); + if (isset($this['session.store'])) { + $request->setSessionStore($this['session.store']); } return $request; } @@ -587,6 +624,10 @@ class Application extends Container implements HttpKernelInterface, ResponsePrep $manifest = $this['config']['app.manifest']; return new ProviderRepository(new Filesystem(), $manifest); } + public function getLocale() + { + return $this['config']->get('app.locale'); + } public function setLocale($locale) { $this['config']->set('app.locale', $locale); @@ -625,7 +666,8 @@ namespace Illuminate\Http; use Illuminate\Session\Store as SessionStore; use Symfony\Component\HttpFoundation\ParameterBag; -class Request extends \Symfony\Component\HttpFoundation\Request +use Symfony\Component\HttpFoundation\Request as SymfonyRequest; +class Request extends SymfonyRequest { protected $json; protected $sessionStore; @@ -698,7 +740,7 @@ class Request extends \Symfony\Component\HttpFoundation\Request } public function all() { - return $this->input() + $this->files->all(); + return array_merge_recursive($this->input(), $this->files->all()); } public function input($key = null, $default = null) { @@ -729,11 +771,14 @@ class Request extends \Symfony\Component\HttpFoundation\Request } public function file($key = null, $default = null) { - return $this->retrieveItem('files', $key, $default); + return array_get($this->files->all(), $key, $default); } public function hasFile($key) { - return $this->files->has($key) and !is_null($this->file($key)); + if (is_array($file = $this->file($key))) { + $file = head($file); + } + return $file instanceof \SplFileInfo; } public function header($key = null, $default = null) { @@ -894,7 +939,16 @@ class Request } public static function createFromGlobals() { - $request = new static($_GET, $_POST, array(), $_COOKIE, $_FILES, $_SERVER); + $server = $_SERVER; + if ('cli-server' === php_sapi_name()) { + if (array_key_exists('HTTP_CONTENT_LENGTH', $_SERVER)) { + $server['CONTENT_LENGTH'] = $_SERVER['HTTP_CONTENT_LENGTH']; + } + if (array_key_exists('HTTP_CONTENT_TYPE', $_SERVER)) { + $server['CONTENT_TYPE'] = $_SERVER['HTTP_CONTENT_TYPE']; + } + } + $request = new static($_GET, $_POST, array(), $_COOKIE, $_FILES, $server); if (0 === strpos($request->headers->get('CONTENT_TYPE'), 'application/x-www-form-urlencoded') && in_array(strtoupper($request->server->get('REQUEST_METHOD', 'GET')), array('PUT', 'DELETE', 'PATCH'))) { parse_str($request->getContent(), $data); $request->request = new ParameterBag($data); @@ -1001,7 +1055,7 @@ class Request $dup->attributes->set('_format', $this->get('_format')); } if (!$dup->getRequestFormat(null)) { - $dup->setRequestFormat($format = $this->getRequestFormat(null)); + $dup->setRequestFormat($this->getRequestFormat(null)); } return $dup; } @@ -1023,6 +1077,7 @@ class Request } public function overrideGlobals() { + $this->server->set('QUERY_STRING', static::normalizeQueryString(http_build_query($this->query->all(), null, '&'))); $_GET = $this->query->all(); $_POST = $this->request->all(); $_SERVER = $this->server->all(); @@ -1036,7 +1091,7 @@ class Request } } $request = array('g' => $_GET, 'p' => $_POST, 'c' => $_COOKIE); - $requestOrder = ini_get('request_order') ?: ini_get('variable_order'); + $requestOrder = ini_get('request_order') ?: ini_get('variables_order'); $requestOrder = preg_replace('#[^cgp]#', '', strtolower($requestOrder)) ?: 'gp'; $_REQUEST = array(); foreach (str_split($requestOrder) as $order) { @@ -1104,7 +1159,16 @@ class Request } public function get($key, $default = null, $deep = false) { - return $this->query->get($key, $this->attributes->get($key, $this->request->get($key, $default, $deep), $deep), $deep); + if ($this !== ($result = $this->query->get($key, $this, $deep))) { + return $result; + } + if ($this !== ($result = $this->attributes->get($key, $this, $deep))) { + return $result; + } + if ($this !== ($result = $this->request->get($key, $this, $deep))) { + return $result; + } + return $default; } public function getSession() { @@ -1125,7 +1189,7 @@ class Request public function getClientIps() { $ip = $this->server->get('REMOTE_ADDR'); - if (!self::$trustedProxies) { + if (!$this->isFromTrustedProxy()) { return array($ip); } if (!self::$trustedHeaders[self::HEADER_CLIENT_IP] || !$this->headers->has(self::$trustedHeaders[self::HEADER_CLIENT_IP])) { @@ -1133,12 +1197,13 @@ class Request } $clientIps = array_map('trim', explode(',', $this->headers->get(self::$trustedHeaders[self::HEADER_CLIENT_IP]))); $clientIps[] = $ip; - $trustedProxies = !self::$trustedProxies ? array($ip) : self::$trustedProxies; $ip = $clientIps[0]; foreach ($clientIps as $key => $clientIp) { - if (IpUtils::checkIp($clientIp, $trustedProxies)) { + if (preg_match('{((?:\\d+\\.){3}\\d+)\\:\\d+}', $clientIp, $match)) { + $clientIps[$key] = $clientIp = $match[1]; + } + if (IpUtils::checkIp($clientIp, self::$trustedProxies)) { unset($clientIps[$key]); - continue; } } return $clientIps ? array_reverse($clientIps) : array($ip); @@ -1179,7 +1244,7 @@ class Request } public function getPort() { - if (self::$trustedProxies) { + if ($this->isFromTrustedProxy()) { if (self::$trustedHeaders[self::HEADER_CLIENT_PORT] && ($port = $this->headers->get(self::$trustedHeaders[self::HEADER_CLIENT_PORT]))) { return $port; } @@ -1188,8 +1253,13 @@ class Request } } if ($host = $this->headers->get('HOST')) { - if (false !== ($pos = strrpos($host, ':'))) { - return intval(substr($host, $pos + 1)); + if ($host[0] === '[') { + $pos = strpos($host, ':', strrpos($host, ']')); + } else { + $pos = strrpos($host, ':'); + } + if (false !== $pos) { + return (int) substr($host, $pos + 1); } return 'https' === $this->getScheme() ? 443 : 80; } @@ -1197,11 +1267,11 @@ class Request } public function getUser() { - return $this->server->get('PHP_AUTH_USER'); + return $this->headers->get('PHP_AUTH_USER'); } public function getPassword() { - return $this->server->get('PHP_AUTH_PW'); + return $this->headers->get('PHP_AUTH_PW'); } public function getUserInfo() { @@ -1250,14 +1320,15 @@ class Request } public function isSecure() { - if (self::$trustedProxies && self::$trustedHeaders[self::HEADER_CLIENT_PROTO] && ($proto = $this->headers->get(self::$trustedHeaders[self::HEADER_CLIENT_PROTO]))) { - return in_array(strtolower($proto), array('https', 'on', '1')); + if ($this->isFromTrustedProxy() && self::$trustedHeaders[self::HEADER_CLIENT_PROTO] && ($proto = $this->headers->get(self::$trustedHeaders[self::HEADER_CLIENT_PROTO]))) { + return in_array(strtolower(current(explode(',', $proto))), array('https', 'on', 'ssl', '1')); } - return 'on' == strtolower($this->server->get('HTTPS')) || 1 == $this->server->get('HTTPS'); + $https = $this->server->get('HTTPS'); + return !empty($https) && 'off' !== strtolower($https); } public function getHost() { - if (self::$trustedProxies && self::$trustedHeaders[self::HEADER_CLIENT_HOST] && ($host = $this->headers->get(self::$trustedHeaders[self::HEADER_CLIENT_HOST]))) { + if ($this->isFromTrustedProxy() && self::$trustedHeaders[self::HEADER_CLIENT_HOST] && ($host = $this->headers->get(self::$trustedHeaders[self::HEADER_CLIENT_HOST]))) { $elements = explode(',', $host); $host = $elements[count($elements) - 1]; } elseif (!($host = $this->headers->get('HOST'))) { @@ -1266,7 +1337,7 @@ class Request } } $host = strtolower(preg_replace('/:\\d+$/', '', trim($host))); - if ($host && !preg_match('/^\\[?(?:[a-zA-Z0-9-:\\]_]+\\.?)+$/', $host)) { + if ($host && '' !== preg_replace('/(?:^\\[)?[a-zA-Z0-9-:\\]_]+\\.?/', '', $host)) { throw new \UnexpectedValueException('Invalid Host "' . $host . '"'); } if (count(self::$trustedHostPatterns) > 0) { @@ -1326,7 +1397,6 @@ class Request return $format; } } - return null; } public function setFormat($format, $mimeTypes) { @@ -1357,6 +1427,10 @@ class Request $this->setPhpDefaultLocale($locale); } } + public function getDefaultLocale() + { + return $this->defaultLocale; + } public function setLocale($locale) { $this->setPhpDefaultLocale($this->locale = $locale); @@ -1427,13 +1501,13 @@ class Request foreach (array_keys($languages) as $lang) { if (strstr($lang, '-')) { $codes = explode('-', $lang); - if ($codes[0] == 'i') { + if ('i' === $codes[0]) { if (count($codes) > 1) { $lang = $codes[1]; } } else { for ($i = 0, $max = count($codes); $i < $max; $i++) { - if ($i == 0) { + if ($i === 0) { $lang = strtolower($codes[0]); } else { $lang .= '_' . strtoupper($codes[$i]); @@ -1522,7 +1596,7 @@ class Request if ($baseUrl && false !== ($prefix = $this->getUrlencodedPrefix($requestUri, $baseUrl))) { return $prefix; } - if ($baseUrl && false !== ($prefix = $this->getUrlencodedPrefix($requestUri, dirname($baseUrl)))) { + if ($baseUrl && false !== ($prefix = $this->getUrlencodedPrefix($requestUri, dirname($baseUrl) . '/'))) { return rtrim($prefix, '/'); } $truncatedRequestUri = $requestUri; @@ -1592,11 +1666,15 @@ class Request return false; } $len = strlen($prefix); - if (preg_match("#^(%[[:xdigit:]]{2}|.){{$len}}#", $string, $match)) { + if (preg_match(sprintf('#^(%%[[:xdigit:]]{2}|.){%d}#', $len), $string, $match)) { return $match[0]; } return false; } + private function isFromTrustedProxy() + { + return self::$trustedProxies && IpUtils::checkIp($this->server->get('REMOTE_ADDR'), self::$trustedProxies); + } } namespace Symfony\Component\HttpFoundation; @@ -1773,8 +1851,8 @@ class FileBag extends ParameterBag foreach (self::$fileKeys as $k) { unset($files[$k]); } - foreach (array_keys($data['name']) as $key) { - $files[$key] = $this->fixPhpFilesArray(array('error' => $data['error'][$key], 'name' => $data['name'][$key], 'type' => $data['type'][$key], 'tmp_name' => $data['tmp_name'][$key], 'size' => $data['size'][$key])); + foreach ($data['name'] as $key => $name) { + $files[$key] = $this->fixPhpFilesArray(array('error' => $data['error'][$key], 'name' => $name, 'type' => $data['type'][$key], 'tmp_name' => $data['tmp_name'][$key], 'size' => $data['size'][$key])); } return $files; } @@ -1805,12 +1883,12 @@ class ServerBag extends ParameterBag $authorizationHeader = $this->parameters['REDIRECT_HTTP_AUTHORIZATION']; } if (null !== $authorizationHeader) { - if (0 === stripos($authorizationHeader, 'basic')) { - $exploded = explode(':', base64_decode(substr($authorizationHeader, 6))); + if (0 === stripos($authorizationHeader, 'basic ')) { + $exploded = explode(':', base64_decode(substr($authorizationHeader, 6)), 2); if (count($exploded) == 2) { list($headers['PHP_AUTH_USER'], $headers['PHP_AUTH_PW']) = $exploded; } - } elseif (empty($this->parameters['PHP_AUTH_DIGEST']) && 0 === stripos($authorizationHeader, 'digest')) { + } elseif (empty($this->parameters['PHP_AUTH_DIGEST']) && 0 === stripos($authorizationHeader, 'digest ')) { $headers['PHP_AUTH_DIGEST'] = $authorizationHeader; $this->parameters['PHP_AUTH_DIGEST'] = $authorizationHeader; } @@ -2006,7 +2084,6 @@ interface SessionInterface namespace Symfony\Component\HttpFoundation\Session\Storage; use Symfony\Component\HttpFoundation\Session\SessionBagInterface; -use Symfony\Component\HttpFoundation\Session\Storage\MetadataBag; interface SessionStorageInterface { public function start(); @@ -2050,7 +2127,6 @@ use Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag; use Symfony\Component\HttpFoundation\Session\Attribute\AttributeBagInterface; use Symfony\Component\HttpFoundation\Session\Flash\FlashBag; use Symfony\Component\HttpFoundation\Session\Flash\FlashBagInterface; -use Symfony\Component\HttpFoundation\Session\SessionBagInterface; use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage; class Session implements SessionInterface, \IteratorAggregate, \Countable { @@ -2161,7 +2237,6 @@ namespace Symfony\Component\HttpFoundation\Session\Storage; use Symfony\Component\HttpFoundation\Session\SessionBagInterface; use Symfony\Component\HttpFoundation\Session\Storage\Handler\NativeSessionHandler; -use Symfony\Component\HttpFoundation\Session\Storage\MetadataBag; use Symfony\Component\HttpFoundation\Session\Storage\Proxy\NativeProxy; use Symfony\Component\HttpFoundation\Session\Storage\Proxy\AbstractProxy; use Symfony\Component\HttpFoundation\Session\Storage\Proxy\SessionHandlerProxy; @@ -2176,7 +2251,7 @@ class NativeSessionStorage implements SessionStorageInterface { session_cache_limiter(''); ini_set('session.use_cookies', 1); - if (version_compare(phpversion(), '5.4.0', '>=')) { + if (PHP_VERSION_ID >= 50400) { session_register_shutdown(); } else { register_shutdown_function('session_write_close'); @@ -2191,13 +2266,13 @@ class NativeSessionStorage implements SessionStorageInterface } public function start() { - if ($this->started && !$this->closed) { + if ($this->started) { return true; } - if (version_compare(phpversion(), '5.4.0', '>=') && \PHP_SESSION_ACTIVE === session_status()) { + if (PHP_VERSION_ID >= 50400 && \PHP_SESSION_ACTIVE === session_status()) { throw new \RuntimeException('Failed to start the session: already started by PHP.'); } - if (version_compare(phpversion(), '5.4.0', '<') && isset($_SESSION) && session_id()) { + if (PHP_VERSION_ID < 50400 && !$this->closed && isset($_SESSION) && session_id()) { throw new \RuntimeException('Failed to start the session: already started by PHP ($_SESSION is set).'); } if (ini_get('session.use_cookies') && headers_sent($file, $line)) { @@ -2214,9 +2289,6 @@ class NativeSessionStorage implements SessionStorageInterface } public function getId() { - if (!$this->started) { - return ''; - } return $this->saveHandler->getId(); } public function setId($id) @@ -2239,19 +2311,7 @@ class NativeSessionStorage implements SessionStorageInterface if ($destroy) { $this->metadataBag->stampNew(); } - $ret = session_regenerate_id($destroy); - if ('files' === $this->getSaveHandler()->getSaveHandlerName()) { - session_write_close(); - if (isset($_SESSION)) { - $backup = $_SESSION; - session_start(); - $_SESSION = $backup; - } else { - session_start(); - } - $this->loadSession(); - } - return $ret; + return session_regenerate_id($destroy); } public function save() { @@ -2260,6 +2320,7 @@ class NativeSessionStorage implements SessionStorageInterface $this->saveHandler->setActive(false); } $this->closed = true; + $this->started = false; } public function clear() { @@ -2317,11 +2378,11 @@ class NativeSessionStorage implements SessionStorageInterface if (!$saveHandler instanceof AbstractProxy && $saveHandler instanceof \SessionHandlerInterface) { $saveHandler = new SessionHandlerProxy($saveHandler); } elseif (!$saveHandler instanceof AbstractProxy) { - $saveHandler = version_compare(phpversion(), '5.4.0', '>=') ? new SessionHandlerProxy(new \SessionHandler()) : new NativeProxy(); + $saveHandler = PHP_VERSION_ID >= 50400 ? new SessionHandlerProxy(new \SessionHandler()) : new NativeProxy(); } $this->saveHandler = $saveHandler; if ($this->saveHandler instanceof \SessionHandlerInterface) { - if (version_compare(phpversion(), '5.4.0', '>=')) { + if (PHP_VERSION_ID >= 50400) { session_set_save_handler($this->saveHandler, false); } else { session_set_save_handler(array($this->saveHandler, 'open'), array($this->saveHandler, 'close'), array($this->saveHandler, 'read'), array($this->saveHandler, 'write'), array($this->saveHandler, 'destroy'), array($this->saveHandler, 'gc')); @@ -2660,7 +2721,7 @@ class MetadataBag implements SessionBagInterface } namespace Symfony\Component\HttpFoundation\Session\Storage\Handler; -if (version_compare(phpversion(), '5.4.0', '>=')) { +if (PHP_VERSION_ID >= 50400) { class NativeSessionHandler extends \SessionHandler { @@ -2692,14 +2753,14 @@ abstract class AbstractProxy } public function isActive() { - if (version_compare(phpversion(), '5.4.0', '>=')) { + if (PHP_VERSION_ID >= 50400) { return $this->active = \PHP_SESSION_ACTIVE === session_status(); } return $this->active; } public function setActive($flag) { - if (version_compare(phpversion(), '5.4.0', '>=')) { + if (PHP_VERSION_ID >= 50400) { throw new \LogicException('This method is disabled in PHP 5.4.0+'); } $this->active = (bool) $flag; @@ -2751,17 +2812,17 @@ class SessionHandlerProxy extends AbstractProxy implements \SessionHandlerInterf $this->active = false; return (bool) $this->handler->close(); } - public function read($id) + public function read($sessionId) { - return (string) $this->handler->read($id); + return (string) $this->handler->read($sessionId); } - public function write($id, $data) + public function write($sessionId, $data) { - return (bool) $this->handler->write($id, $data); + return (bool) $this->handler->write($sessionId, $data); } - public function destroy($id) + public function destroy($sessionId) { - return (bool) $this->handler->destroy($id); + return (bool) $this->handler->destroy($sessionId); } public function gc($maxlifetime) { @@ -2935,9 +2996,6 @@ namespace Symfony\Component\Debug; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Debug\Exception\FlattenException; -if (!defined('ENT_SUBSTITUTE')) { - define('ENT_SUBSTITUTE', 8); -} class ExceptionHandler { private $debug; @@ -2966,9 +3024,12 @@ class ExceptionHandler if (!$exception instanceof FlattenException) { $exception = FlattenException::create($exception); } - header(sprintf('HTTP/1.0 %s', $exception->getStatusCode())); - foreach ($exception->getHeaders() as $name => $value) { - header($name . ': ' . $value, false); + if (!headers_sent()) { + header(sprintf('HTTP/1.0 %s', $exception->getStatusCode())); + foreach ($exception->getHeaders() as $name => $value) { + header($name . ': ' . $value, false); + } + header('Content-Type: text/html; charset=' . $this->charset); } echo $this->decorate($this->getContent($exception), $this->getStylesheet($exception)); } @@ -2977,7 +3038,7 @@ class ExceptionHandler if (!$exception instanceof FlattenException) { $exception = FlattenException::create($exception); } - return new Response($this->decorate($this->getContent($exception), $this->getStylesheet($exception)), $exception->getStatusCode(), $exception->getHeaders()); + return Response::create($this->decorate($this->getContent($exception), $this->getStylesheet($exception)), $exception->getStatusCode(), $exception->getHeaders())->setCharset($this->charset); } public function getContent(FlattenException $exception) { @@ -2989,6 +3050,7 @@ class ExceptionHandler $title = 'Whoops, looks like something went wrong.'; } $content = ''; + $flags = PHP_VERSION_ID >= 50400 ? ENT_QUOTES | ENT_SUBSTITUTE : ENT_QUOTES; if ($this->debug) { try { $count = count($exception->getAllPrevious()); @@ -2996,7 +3058,7 @@ class ExceptionHandler foreach ($exception->toArray() as $position => $e) { $ind = $count - $position + 1; $class = $this->abbrClass($e['class']); - $message = nl2br($e['message']); + $message = nl2br(htmlspecialchars($e['message'], $flags, $this->charset)); $content .= sprintf('

%d/%d %s: %s

@@ -3024,7 +3086,7 @@ class ExceptionHandler } } catch (\Exception $e) { if ($this->debug) { - $title = sprintf('Exception thrown when handling an exception (%s: %s)', get_class($exception), $exception->getMessage()); + $title = sprintf('Exception thrown when handling an exception (%s: %s)', get_class($e), htmlspecialchars($e->getMessage(), $flags, $this->charset)); } else { $title = 'Whoops, looks like something went wrong.'; } @@ -3087,7 +3149,7 @@ class ExceptionHandler } private function decorate($content, $css) { - return "\n\n \n \n \n \n \n \n {$content}\n \n"; + return "\n\n \n \n \n \n \n \n {$content}\n \n"; } private function abbrClass($class) { @@ -3096,6 +3158,11 @@ class ExceptionHandler } private function formatArgs(array $args) { + if (PHP_VERSION_ID >= 50400) { + $flags = ENT_QUOTES | ENT_SUBSTITUTE; + } else { + $flags = ENT_QUOTES; + } $result = array(); foreach ($args as $key => $item) { if ('object' === $item[0]) { @@ -3103,7 +3170,7 @@ class ExceptionHandler } elseif ('array' === $item[0]) { $formattedValue = sprintf('array(%s)', is_array($item[1]) ? $this->formatArgs($item[1]) : $item[1]); } elseif ('string' === $item[0]) { - $formattedValue = sprintf('\'%s\'', htmlspecialchars($item[1], ENT_QUOTES | ENT_SUBSTITUTE, $this->charset)); + $formattedValue = sprintf('\'%s\'', htmlspecialchars($item[1], $flags, $this->charset)); } elseif ('null' === $item[0]) { $formattedValue = 'null'; } elseif ('boolean' === $item[0]) { @@ -3112,7 +3179,7 @@ class ExceptionHandler $formattedValue = 'resource'; } else { $formattedValue = str_replace(' -', '', var_export(htmlspecialchars((string) $item[1], ENT_QUOTES | ENT_SUBSTITUTE, $this->charset), true)); +', '', var_export(htmlspecialchars((string) $item[1], $flags, $this->charset), true)); } $result[] = is_int($key) ? $formattedValue : sprintf('\'%s\' => %s', $key, $formattedValue); } @@ -3147,7 +3214,7 @@ abstract class ServiceProvider if ($this->app['files']->isDirectory($lang)) { $this->app['translator']->addNamespace($namespace, $lang); } - $appView = $this->getAppViewPath($package, $namespace); + $appView = $this->getAppViewPath($package); if ($this->app['files']->isDirectory($appView)) { $this->app['view']->addNamespace($namespace, $appView); } @@ -3187,9 +3254,9 @@ abstract class ServiceProvider $artisan->resolveCommands($commands); }); } - protected function getAppViewPath($package, $namespace) + protected function getAppViewPath($package) { - return $this->app['path'] . "/views/packages/{$package}/{$namespace}"; + return $this->app['path'] . "/views/packages/{$package}"; } public function provides() { @@ -3203,6 +3270,7 @@ abstract class ServiceProvider namespace Illuminate\Exception; use Closure; +use Whoops\Run; use Whoops\Handler\PrettyPageHandler; use Whoops\Handler\JsonResponseHandler; use Illuminate\Support\ServiceProvider; @@ -3229,8 +3297,12 @@ class ExceptionServiceProvider extends ServiceProvider protected function registerPlainDisplayer() { $this->app['exception.plain'] = $this->app->share(function ($app) { - $handler = new KernelHandler($app['config']['app.debug']); - return new SymfonyDisplayer($handler); + if ($app->runningInConsole()) { + return $app['exception.debug']; + } else { + $handler = new KernelHandler($app['config']['app.debug']); + return new SymfonyDisplayer($handler); + } }); } protected function registerDebugDisplayer() @@ -3244,7 +3316,7 @@ class ExceptionServiceProvider extends ServiceProvider { $this->registerWhoopsHandler(); $this->app['whoops'] = $this->app->share(function ($app) { - with($whoops = new \Whoops\Run())->allowQuit(false); + with($whoops = new Run())->allowQuit(false); return $whoops->pushHandler($app['whoops.handler']); }); } @@ -3282,7 +3354,8 @@ class ExceptionServiceProvider extends ServiceProvider } protected function getResourcePath() { - return 'F:\\Nelson\\My Documents - Personal\\Visual Studio 2010\\Projects\\Poniverse\\spa.pony.fm\\vendor\\laravel\\framework\\src\\Illuminate\\Exception' . '/resources'; + $base = $this->app['path.base']; + return $base . '/vendor/laravel/framework/src/Illuminate/Exception/resources'; } } namespace Illuminate\Routing; @@ -3317,8 +3390,8 @@ class RoutingServiceProvider extends ServiceProvider { $this->app['redirect'] = $this->app->share(function ($app) { $redirector = new Redirector($app['url']); - if (isset($app['session'])) { - $redirector->setSession($app['session']); + if (isset($app['session.store'])) { + $redirector->setSession($app['session.store']); } return $redirector; }); @@ -3354,11 +3427,23 @@ abstract class Facade if (static::isMock()) { $mock = static::$resolvedInstance[$name]; } else { - static::$resolvedInstance[$name] = $mock = \Mockery::mock(static::getMockableClass($name)); - static::$app->instance($name, $mock); + $mock = static::createFreshMockInstance($name); } return call_user_func_array(array($mock, 'shouldReceive'), func_get_args()); } + protected static function createFreshMockInstance($name) + { + static::$resolvedInstance[$name] = $mock = static::createMockByName($name); + if (isset(static::$app)) { + static::$app->instance($name, $mock); + } + return $mock; + } + protected static function createMockByName($name) + { + $class = static::getMockableClass($name); + return $class ? \Mockery::mock($class) : \Mockery::mock(); + } protected static function isMock() { $name = static::getFacadeAccessor(); @@ -3366,7 +3451,9 @@ abstract class Facade } protected static function getMockableClass() { - return get_class(static::getFacadeRoot()); + if ($root = static::getFacadeRoot()) { + return get_class($root); + } } public static function getFacadeRoot() { @@ -3434,10 +3521,10 @@ class Str { return lcfirst(static::studly($value)); } - public static function contains($haystack, $needle) + public static function contains($haystack, $needles) { - foreach ((array) $needle as $n) { - if (strpos($haystack, $n) !== false) { + foreach ((array) $needles as $needle) { + if ($needle != '' && strpos($haystack, $needle) !== false) { return true; } } @@ -3446,7 +3533,7 @@ class Str public static function endsWith($haystack, $needles) { foreach ((array) $needles as $needle) { - if ($needle == substr($haystack, strlen($haystack) - strlen($needle))) { + if ($needle == substr($haystack, -strlen($needle))) { return true; } } @@ -3454,7 +3541,8 @@ class Str } public static function finish($value, $cap) { - return rtrim($value, $cap) . $cap; + $quoted = preg_quote($cap, '/'); + return preg_replace('/(?:' . $quoted . ')+$/', '', $value) . $cap; } public static function is($pattern, $value) { @@ -3462,11 +3550,7 @@ class Str return true; } $pattern = preg_quote($pattern, '#'); - if ($pattern !== '/') { - $pattern = str_replace('\\*', '.*', $pattern) . '\\z'; - } else { - $pattern = '/$'; - } + $pattern = str_replace('\\*', '.*', $pattern) . '\\z'; return (bool) preg_match('#^' . $pattern . '#', $value); } public static function length($value) @@ -3523,6 +3607,10 @@ class Str { return mb_strtoupper($value); } + public static function title($value) + { + return mb_convert_case($value, MB_CASE_TITLE, 'UTF-8'); + } public static function singular($value) { return Pluralizer::singular($value); @@ -3544,7 +3632,7 @@ class Str public static function startsWith($haystack, $needles) { foreach ((array) $needles as $needle) { - if (strpos($haystack, $needle) === 0) { + if ($needle != '' && strpos($haystack, $needle) === 0) { return true; } } @@ -3571,6 +3659,7 @@ namespace Symfony\Component\Debug; use Symfony\Component\Debug\Exception\FatalErrorException; use Symfony\Component\Debug\Exception\ContextErrorException; +use Symfony\Component\Debug\Exception\DummyException; use Psr\Log\LoggerInterface; class ErrorHandler { @@ -3610,7 +3699,7 @@ class ErrorHandler } if ($level & (E_USER_DEPRECATED | E_DEPRECATED)) { if (isset(self::$loggers['deprecation'])) { - if (version_compare(PHP_VERSION, '5.4', '<')) { + if (PHP_VERSION_ID < 50400) { $stack = array_map(function ($row) { unset($row['args']); return $row; @@ -3624,9 +3713,31 @@ class ErrorHandler } if ($this->displayErrors && error_reporting() & $level && $this->level & $level) { if (!class_exists('Symfony\\Component\\Debug\\Exception\\ContextErrorException')) { - require 'F:\\Nelson\\My Documents - Personal\\Visual Studio 2010\\Projects\\Poniverse\\spa.pony.fm\\vendor\\symfony\\debug\\Symfony\\Component\\Debug' . '/Exception/ContextErrorException.php'; + require '/vagrant/vendor/symfony/debug/Symfony/Component/Debug' . '/Exception/ContextErrorException.php'; + } + if (!class_exists('Symfony\\Component\\Debug\\Exception\\FlattenException')) { + require '/vagrant/vendor/symfony/debug/Symfony/Component/Debug' . '/Exception/FlattenException.php'; + } + if (PHP_VERSION_ID < 50400 && isset($context['GLOBALS']) && is_array($context)) { + unset($context['GLOBALS']); + } + $exception = new ContextErrorException(sprintf('%s: %s in %s line %d', isset($this->levels[$level]) ? $this->levels[$level] : $level, $message, $file, $line), 0, $level, $file, $line, $context); + $exceptionHandler = set_exception_handler(function () { + + }); + restore_exception_handler(); + if (is_array($exceptionHandler) && $exceptionHandler[0] instanceof ExceptionHandler) { + $exceptionHandler[0]->handle($exception); + if (!class_exists('Symfony\\Component\\Debug\\Exception\\DummyException')) { + require '/vagrant/vendor/symfony/debug/Symfony/Component/Debug' . '/Exception/DummyException.php'; + } + set_exception_handler(function (\Exception $e) use($exceptionHandler) { + if (!$e instanceof DummyException) { + call_user_func($exceptionHandler, $e); + } + }); + throw new DummyException(); } - throw new ContextErrorException(sprintf('%s: %s in %s line %d', isset($this->levels[$level]) ? $this->levels[$level] : $level, $message, $file, $line), 0, $level, $file, $line, $context); } return false; } @@ -3773,7 +3884,7 @@ class Repository extends NamespacedItemResolver implements ArrayAccess } public function addNamespace($namespace, $hint) { - return $this->loader->addNamespace($namespace, $hint); + $this->loader->addNamespace($namespace, $hint); } public function getNamespaces() { @@ -3997,6 +4108,14 @@ class Filesystem { return file_put_contents($path, $contents); } + public function prepend($path, $data) + { + if ($this->exists($path)) { + return $this->put($path, $data . $this->get($path)); + } else { + return $this->put($path, $data); + } + } public function append($path, $data) { return file_put_contents($path, $data, FILE_APPEND); @@ -4067,9 +4186,13 @@ class Filesystem } return $directories; } - public function makeDirectory($path, $mode = 511, $recursive = false) + public function makeDirectory($path, $mode = 511, $recursive = false, $force = false) { - return mkdir($path, $mode, $recursive); + if ($force) { + return @mkdir($path, $mode, $recursive); + } else { + return mkdir($path, $mode, $recursive); + } } public function copyDirectory($directory, $destination, $options = null) { @@ -4099,7 +4222,7 @@ class Filesystem public function deleteDirectory($directory, $preserve = false) { if (!$this->isDirectory($directory)) { - return; + return false; } $items = new FilesystemIterator($directory); foreach ($items as $item) { @@ -4112,6 +4235,7 @@ class Filesystem if (!$preserve) { @rmdir($directory); } + return true; } public function cleanDirectory($directory) { @@ -4257,6 +4381,15 @@ namespace Illuminate\Cookie; use Illuminate\Support\ServiceProvider; class CookieServiceProvider extends ServiceProvider { + public function boot() + { + $app = $this->app; + $this->app->after(function ($request, $response) use($app) { + foreach ($app['cookie']->getQueuedCookies() as $cookie) { + $response->headers->setCookie($cookie); + } + }); + } public function register() { $this->app['cookie'] = $this->app->share(function ($app) { @@ -4317,6 +4450,7 @@ namespace Illuminate\Session; use Illuminate\Support\ServiceProvider; class SessionServiceProvider extends ServiceProvider { + protected $cookieDefaults = array('secure' => false, 'http_only' => true); public function boot() { $this->registerSessionEvents(); @@ -4335,14 +4469,14 @@ class SessionServiceProvider extends ServiceProvider } protected function registerSessionManager() { - $this->app['session.manager'] = $this->app->share(function ($app) { + $this->app['session'] = $this->app->share(function ($app) { return new SessionManager($app); }); } protected function registerSessionDriver() { - $this->app['session'] = $this->app->share(function ($app) { - $manager = $app['session.manager']; + $this->app['session.store'] = $this->app->share(function ($app) { + $manager = $app['session']; return $manager->driver(); }); } @@ -4357,7 +4491,7 @@ class SessionServiceProvider extends ServiceProvider protected function registerBootingEvent() { $this->app->booting(function ($app) { - $app['session']->start(); + $app['session.store']->start(); }); } protected function registerCloseEvent() @@ -4368,7 +4502,7 @@ class SessionServiceProvider extends ServiceProvider $this->registerCookieToucher(); $app = $this->app; $this->app->close(function () use($app) { - $app['session']->save(); + $app['session.store']->save(); }); } protected function registerCookieToucher() @@ -4382,9 +4516,9 @@ class SessionServiceProvider extends ServiceProvider } public function touchSessionCookie() { - $config = $this->app['config']['session']; + $config = array_merge($this->cookieDefaults, $this->app['config']['session']); $expire = $this->getExpireTime($config); - setcookie($config['cookie'], session_id(), $expire, $config['path'], $config['domain'], false, true); + setcookie($config['cookie'], session_id(), $expire, $config['path'], $config['domain'], $config['secure'], $config['http_only']); } protected function getExpireTime($config) { @@ -4462,7 +4596,7 @@ class ViewServiceProvider extends ServiceProvider list($app, $me) = array($this->app, $this); $app->booted(function () use($app, $me) { if ($me->sessionHasErrors($app)) { - $errors = $app['session']->get('errors'); + $errors = $app['session.store']->get('errors'); $app['view']->share('errors', $errors); } else { $app['view']->share('errors', new MessageBag()); @@ -4472,8 +4606,8 @@ class ViewServiceProvider extends ServiceProvider public function sessionHasErrors($app) { $config = $app['config']['session']; - if (isset($app['session']) and !is_null($config['driver'])) { - return $app['session']->has('errors'); + if (isset($app['session.store']) and !is_null($config['driver'])) { + return $app['session.store']->has('errors'); } } } @@ -4922,7 +5056,7 @@ class Router { foreach ((array) $names as $name) { if (!is_null($methods)) { - $methods = array_change_key_case((array) $methods); + $methods = array_map('strtolower', (array) $methods); } $this->patternFilters[$pattern][] = compact('name', 'methods'); } @@ -5257,12 +5391,12 @@ class Dispatcher public function listen($event, $listener, $priority = 0) { if (str_contains($event, '*')) { - return $this->setupWildcardListen($event, $listener, $priority = 0); + return $this->setupWildcardListen($event, $listener); } $this->listeners[$event][$priority][] = $this->makeListener($listener); unset($this->sorted[$event]); } - protected function setupWildcardListen($event, $listener, $priority) + protected function setupWildcardListen($event, $listener) { $this->wildcards[$event][] = $this->makeListener($listener); } @@ -5370,11 +5504,12 @@ namespace Illuminate\Database\Eloquent; use Closure; use DateTime; -use Carbon\Carbon; use ArrayAccess; +use Carbon\Carbon; use Illuminate\Events\Dispatcher; use Illuminate\Database\Connection; use Illuminate\Database\Eloquent\Collection; +use Illuminate\Database\Eloquent\Relations\Pivot; use Illuminate\Database\Eloquent\Relations\HasOne; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Support\Contracts\JsonableInterface; @@ -5418,9 +5553,10 @@ abstract class Model implements ArrayAccess, ArrayableInterface, JsonableInterfa public function __construct(array $attributes = array()) { if (!isset(static::$booted[get_class($this)])) { - static::boot(); static::$booted[get_class($this)] = true; + static::boot(); } + $this->syncOriginal(); $this->fill($attributes); } protected static function boot() @@ -5448,7 +5584,7 @@ abstract class Model implements ArrayAccess, ArrayableInterface, JsonableInterfa } public function fill(array $attributes) { - foreach ($attributes as $key => $value) { + foreach ($this->fillableFromArray($attributes) as $key => $value) { $key = $this->removeTableFromKey($key); if ($this->isFillable($key)) { $this->setAttribute($key, $value); @@ -5458,6 +5594,13 @@ abstract class Model implements ArrayAccess, ArrayableInterface, JsonableInterfa } return $this; } + protected function fillableFromArray(array $attributes) + { + if (count($this->fillable) > 0 and !static::$unguarded) { + return array_intersect_key($attributes, array_flip($this->fillable)); + } + return $attributes; + } public function newInstance($attributes = array(), $exists = false) { $model = new static((array) $attributes); @@ -5476,6 +5619,28 @@ abstract class Model implements ArrayAccess, ArrayableInterface, JsonableInterfa $model->save(); return $model; } + public static function firstOrCreate(array $attributes) + { + if (!is_null($instance = static::firstByAttributes($attributes))) { + return $instance; + } + return static::create($attributes); + } + public static function firstOrNew(array $attributes) + { + if (!is_null($instance = static::firstByAttributes($attributes))) { + return $instance; + } + return new static($attributes); + } + protected static function firstByAttributes($attributes) + { + $query = static::query(); + foreach ($attributes as $key => $value) { + $query->where($key, $value); + } + return $query->first() ?: null; + } public static function query() { return with(new static())->newQuery(); @@ -5494,9 +5659,6 @@ abstract class Model implements ArrayAccess, ArrayableInterface, JsonableInterfa public static function find($id, $columns = array('*')) { $instance = new static(); - if (is_array($id)) { - return $instance->newQuery()->whereIn($instance->getKeyName(), $id)->get($columns); - } return $instance->newQuery()->find($id, $columns); } public static function findOrFail($id, $columns = array('*')) @@ -5513,6 +5675,7 @@ abstract class Model implements ArrayAccess, ArrayableInterface, JsonableInterfa } $query = $this->newQuery()->with($relations); $query->eagerLoadRelations(array($this)); + return $this; } public static function with($relations) { @@ -5770,7 +5933,7 @@ abstract class Model implements ArrayAccess, ArrayableInterface, JsonableInterfa $this->touchOwners(); } } - protected function performUpdate($query) + protected function performUpdate(Builder $query) { $dirty = $this->getDirty(); if (count($dirty) > 0) { @@ -5786,7 +5949,7 @@ abstract class Model implements ArrayAccess, ArrayableInterface, JsonableInterfa } return true; } - protected function performInsert($query) + protected function performInsert(Builder $query) { if ($this->fireModelEvent('creating') === false) { return false; @@ -5804,7 +5967,7 @@ abstract class Model implements ArrayAccess, ArrayableInterface, JsonableInterfa $this->fireModelEvent('created', false); return true; } - protected function insertAndSetId($query, $attributes) + protected function insertAndSetId(Builder $query, $attributes) { $id = $query->insertGetId($attributes, $keyName = $this->getKeyName()); $this->setAttribute($keyName, $id); @@ -5828,11 +5991,19 @@ abstract class Model implements ArrayAccess, ArrayableInterface, JsonableInterfa $method = $halt ? 'until' : 'fire'; return static::$dispatcher->{$method}($event, $this); } - protected function setKeysForSaveQuery($query) + protected function setKeysForSaveQuery(Builder $query) { - $query->where($this->getKeyName(), '=', $this->getKey()); + $query->where($this->getKeyName(), '=', $this->getKeyForSaveQuery()); return $query; } + protected function getKeyForSaveQuery() + { + if (isset($this->original[$this->getKeyName()])) { + return $this->original[$this->getKeyName()]; + } else { + return $this->getAttribute($this->getKeyName()); + } + } public function touch() { $this->updateTimestamps(); @@ -5917,6 +6088,10 @@ abstract class Model implements ArrayAccess, ArrayableInterface, JsonableInterfa { return new Collection($models); } + public function newPivot(Model $parent, array $attributes, $table, $exists) + { + return new Pivot($parent, $attributes, $table, $exists); + } public function getTable() { if (isset($this->table)) { @@ -6185,7 +6360,7 @@ abstract class Model implements ArrayAccess, ArrayableInterface, JsonableInterfa } elseif (is_numeric($value)) { $value = Carbon::createFromTimestamp($value); } elseif (preg_match('/^(\\d{4})-(\\d{2})-(\\d{2})$/', $value)) { - $value = Carbon::createFromFormat('Y-m-d', $value); + $value = Carbon::createFromFormat('Y-m-d', $value)->startOfDay(); } elseif (!$value instanceof DateTime) { $value = Carbon::createFromFormat($format, $value); } @@ -6196,7 +6371,7 @@ abstract class Model implements ArrayAccess, ArrayableInterface, JsonableInterfa if (is_numeric($value)) { return Carbon::createFromTimestamp($value); } elseif (preg_match('/^(\\d{4})-(\\d{2})-(\\d{2})$/', $value)) { - return Carbon::createFromFormat('Y-m-d', $value); + return Carbon::createFromFormat('Y-m-d', $value)->startOfDay(); } elseif (!$value instanceof DateTime) { $format = $this->getDateFormat(); return Carbon::createFromFormat($format, $value); @@ -6336,7 +6511,7 @@ abstract class Model implements ArrayAccess, ArrayableInterface, JsonableInterfa } public function __isset($key) { - return isset($this->attributes[$key]) or isset($this->relations[$key]); + return isset($this->attributes[$key]) or isset($this->relations[$key]) or $this->hasGetMutator($key) and !is_null($this->getAttributeValue($key)); } public function __unset($key) { @@ -6400,9 +6575,14 @@ class DatabaseManager implements ConnectionResolverInterface public function reconnect($name = null) { $name = $name ?: $this->getDefaultConnection(); - unset($this->connections[$name]); + $this->disconnect($name); return $this->connection($name); } + public function disconnect($name = null) + { + $name = $name ?: $this->getDefaultConnection(); + unset($this->connections[$name]); + } protected function makeConnection($name) { $config = $this->getConfig($name); @@ -6451,6 +6631,10 @@ class DatabaseManager implements ConnectionResolverInterface { $this->extensions[$name] = $resolver; } + public function getConnections() + { + return $this->connections; + } public function __call($method, $parameters) { return call_user_func_array(array($this->connection(), $method), $parameters); @@ -6597,11 +6781,11 @@ class Store extends SymfonySession } public function flashInput(array $value) { - return $this->flash('_old_input', $value); + $this->flash('_old_input', $value); } public function reflash() { - $this->mergeNewFlashes($this->get('flash.old')); + $this->mergeNewFlashes($this->get('flash.old', array())); $this->put('flash.old', array()); } public function keep($keys = null) @@ -6627,7 +6811,7 @@ class Store extends SymfonySession } public function flush() { - return $this->clear(); + $this->clear(); } public function regenerate() { @@ -6640,7 +6824,6 @@ use Illuminate\Support\Manager; use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage; use Symfony\Component\HttpFoundation\Session\Storage\MockArraySessionStorage; use Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler; -use Symfony\Component\HttpFoundation\Session\Storage\Handler\NullSessionHandler; use Symfony\Component\HttpFoundation\Session\Storage\Handler\NativeFileSessionHandler; class SessionManager extends Manager { @@ -6755,6 +6938,7 @@ abstract class Manager public function extend($driver, Closure $callback) { $this->customCreators[$driver] = $callback; + return $this; } public function getDrivers() { @@ -6778,6 +6962,7 @@ class CookieJar protected $encrypter; protected $path = '/'; protected $domain = null; + protected $queued = array(); public function __construct(Request $request, Encrypter $encrypter) { $this->request = $request; @@ -6835,6 +7020,23 @@ class CookieJar { return $this->encrypter; } + public function queue() + { + if (head(func_get_args()) instanceof Cookie) { + $cookie = head(func_get_args()); + } else { + $cookie = call_user_func_array(array($this, 'make'), func_get_args()); + } + $this->queued[$cookie->getName()] = $cookie; + } + public function unqueue($name) + { + unset($this->queued[$name]); + } + public function getQueuedCookies() + { + return $this->queued; + } } namespace Illuminate\Encryption; @@ -6888,7 +7090,7 @@ class Encrypter } protected function validMac(array $payload) { - return $payload['mac'] == $this->hash($payload['iv'], $payload['value']); + return $payload['mac'] === $this->hash($payload['iv'], $payload['value']); } protected function hash($iv, $value) { @@ -6909,9 +7111,9 @@ class Encrypter $beforePad = strlen($value) - $pad; return substr($value, $beforePad) == str_repeat(substr($value, -1), $pad); } - protected function invalidPayload(array $data) + protected function invalidPayload($data) { - return !isset($data['iv']) or !isset($data['value']) or !isset($data['mac']); + return !is_array($data) or !isset($data['iv']) or !isset($data['value']) or !isset($data['mac']); } protected function getIvSize() { @@ -6952,13 +7154,14 @@ class Log extends Facade } namespace Illuminate\Log; +use Monolog\Logger; use Illuminate\Support\ServiceProvider; class LogServiceProvider extends ServiceProvider { protected $defer = true; public function register() { - $logger = new Writer(new \Monolog\Logger('log'), $this->app['events']); + $logger = new Writer(new Logger('log'), $this->app['events']); $this->app->instance('log', $logger); if (isset($this->app['log.setup'])) { call_user_func($this->app['log.setup'], $logger); @@ -7099,6 +7302,10 @@ class Logger implements LoggerInterface } return array_shift($this->handlers); } + public function getHandlers() + { + return $this->handlers; + } public function pushProcessor($callback) { if (!is_callable($callback)) { @@ -7113,18 +7320,19 @@ class Logger implements LoggerInterface } return array_shift($this->processors); } + public function getProcessors() + { + return $this->processors; + } public function addRecord($level, $message, array $context = array()) { if (!$this->handlers) { $this->pushHandler(new StreamHandler('php://stderr', static::DEBUG)); } - if (!static::$timezone) { - static::$timezone = new \DateTimeZone(date_default_timezone_get() ?: 'UTC'); - } - $record = array('message' => (string) $message, 'context' => $context, 'level' => $level, 'level_name' => static::getLevelName($level), 'channel' => $this->name, 'datetime' => \DateTime::createFromFormat('U.u', sprintf('%.6F', microtime(true)), static::$timezone)->setTimezone(static::$timezone), 'extra' => array()); + $levelName = static::getLevelName($level); $handlerKey = null; foreach ($this->handlers as $key => $handler) { - if ($handler->isHandling($record)) { + if ($handler->isHandling(array('level' => $level))) { $handlerKey = $key; break; } @@ -7132,6 +7340,10 @@ class Logger implements LoggerInterface if (null === $handlerKey) { return false; } + if (!static::$timezone) { + static::$timezone = new \DateTimeZone(date_default_timezone_get() ?: 'UTC'); + } + $record = array('message' => (string) $message, 'context' => $context, 'level' => $level, 'level_name' => $levelName, 'channel' => $this->name, 'datetime' => \DateTime::createFromFormat('U.u', sprintf('%.6F', microtime(true)), static::$timezone)->setTimezone(static::$timezone), 'extra' => array()); foreach ($this->processors as $processor) { $record = call_user_func($processor, $record); } @@ -7183,6 +7395,13 @@ class Logger implements LoggerInterface } return static::$levels[$level]; } + public static function toMonologLevel($level) + { + if (is_string($level) && defined(__CLASS__ . '::' . strtoupper($level))) { + return constant(__CLASS__ . '::' . strtoupper($level)); + } + return $level; + } public function isHandling($level) { $record = array('level' => $level); @@ -7276,7 +7495,7 @@ abstract class AbstractHandler implements HandlerInterface protected $processors = array(); public function __construct($level = Logger::DEBUG, $bubble = true) { - $this->level = $level; + $this->setLevel($level); $this->bubble = $bubble; } public function isHandling(array $record) @@ -7322,7 +7541,7 @@ abstract class AbstractHandler implements HandlerInterface } public function setLevel($level) { - $this->level = $level; + $this->level = Logger::toMonologLevel($level); return $this; } public function getLevel() @@ -7357,7 +7576,7 @@ abstract class AbstractProcessingHandler extends AbstractHandler { public function handle(array $record) { - if ($record['level'] < $this->level) { + if (!$this->isHandling($record)) { return false; } $record = $this->processRecord($record); @@ -7383,14 +7602,21 @@ class StreamHandler extends AbstractProcessingHandler { protected $stream; protected $url; - public function __construct($stream, $level = Logger::DEBUG, $bubble = true) + private $errorMessage; + protected $filePermission; + protected $useLocking; + public function __construct($stream, $level = Logger::DEBUG, $bubble = true, $filePermission = null, $useLocking = false) { parent::__construct($level, $bubble); if (is_resource($stream)) { $this->stream = $stream; - } else { + } elseif (is_string($stream)) { $this->url = $stream; + } else { + throw new \InvalidArgumentException('A stream must either be a resource or a string.'); } + $this->filePermission = $filePermission; + $this->useLocking = $useLocking; } public function close() { @@ -7401,22 +7627,33 @@ class StreamHandler extends AbstractProcessingHandler } protected function write(array $record) { - if (null === $this->stream) { + if (!is_resource($this->stream)) { if (!$this->url) { throw new \LogicException('Missing stream url, the stream can not be opened. This may be caused by a premature call to close().'); } - $errorMessage = null; - set_error_handler(function ($code, $msg) use(&$errorMessage) { - $errorMessage = preg_replace('{^fopen\\(.*?\\): }', '', $msg); - }); + $this->errorMessage = null; + set_error_handler(array($this, 'customErrorHandler')); $this->stream = fopen($this->url, 'a'); + if ($this->filePermission !== null) { + @chmod($this->url, $this->filePermission); + } restore_error_handler(); if (!is_resource($this->stream)) { $this->stream = null; - throw new \UnexpectedValueException(sprintf('The stream or file "%s" could not be opened: ' . $errorMessage, $this->url)); + throw new \UnexpectedValueException(sprintf('The stream or file "%s" could not be opened: ' . $this->errorMessage, $this->url)); } } + if ($this->useLocking) { + flock($this->stream, LOCK_EX); + } fwrite($this->stream, (string) $record['formatted']); + if ($this->useLocking) { + flock($this->stream, LOCK_UN); + } + } + private function customErrorHandler($code, $msg) + { + $this->errorMessage = preg_replace('{^fopen\\(.*?\\): }', '', $msg); } } namespace Monolog\Handler; @@ -7428,12 +7665,16 @@ class RotatingFileHandler extends StreamHandler protected $maxFiles; protected $mustRotate; protected $nextRotation; - public function __construct($filename, $maxFiles = 0, $level = Logger::DEBUG, $bubble = true) + protected $filenameFormat; + protected $dateFormat; + public function __construct($filename, $maxFiles = 0, $level = Logger::DEBUG, $bubble = true, $filePermission = null, $useLocking = false) { $this->filename = $filename; $this->maxFiles = (int) $maxFiles; $this->nextRotation = new \DateTime('tomorrow'); - parent::__construct($this->getTimedFilename(), $level, $bubble); + $this->filenameFormat = '{filename}-{date}'; + $this->dateFormat = 'Y-m-d'; + parent::__construct($this->getTimedFilename(), $level, $bubble, $filePermission, $useLocking); } public function close() { @@ -7442,6 +7683,13 @@ class RotatingFileHandler extends StreamHandler $this->rotate(); } } + public function setFilenameFormat($filenameFormat, $dateFormat) + { + $this->filenameFormat = $filenameFormat; + $this->dateFormat = $dateFormat; + $this->url = $this->getTimedFilename(); + $this->close(); + } protected function write(array $record) { if (null === $this->mustRotate) { @@ -7460,12 +7708,7 @@ class RotatingFileHandler extends StreamHandler if (0 === $this->maxFiles) { return; } - $fileInfo = pathinfo($this->filename); - $glob = $fileInfo['dirname'] . '/' . $fileInfo['filename'] . '-*'; - if (!empty($fileInfo['extension'])) { - $glob .= '.' . $fileInfo['extension']; - } - $logFiles = glob($glob); + $logFiles = glob($this->getGlobPattern()); if ($this->maxFiles >= count($logFiles)) { return; } @@ -7481,12 +7724,21 @@ class RotatingFileHandler extends StreamHandler protected function getTimedFilename() { $fileInfo = pathinfo($this->filename); - $timedFilename = $fileInfo['dirname'] . '/' . $fileInfo['filename'] . '-' . date('Y-m-d'); + $timedFilename = str_replace(array('{filename}', '{date}'), array($fileInfo['filename'], date($this->dateFormat)), $fileInfo['dirname'] . '/' . $this->filenameFormat); if (!empty($fileInfo['extension'])) { $timedFilename .= '.' . $fileInfo['extension']; } return $timedFilename; } + protected function getGlobPattern() + { + $fileInfo = pathinfo($this->filename); + $glob = str_replace(array('{filename}', '{date}'), array($fileInfo['filename'], '*'), $fileInfo['dirname'] . '/' . $this->filenameFormat); + if (!empty($fileInfo['extension'])) { + $glob .= '.' . $fileInfo['extension']; + } + return $glob; + } } namespace Monolog\Handler; @@ -7601,7 +7853,7 @@ class Handler { if (error_reporting() & $level) { $e = new ErrorException($message, $level, 0, $file, $line); - $this->handleException($e); + throw $e; } } public function handleException($exception) @@ -7672,8 +7924,11 @@ class Handler } protected function formatException(\Exception $e) { - $location = $e->getMessage() . ' in ' . $e->getFile() . ':' . $e->getLine(); - return 'Error in exception handler: ' . $location; + if ($this->debug) { + $location = $e->getMessage() . ' in ' . $e->getFile() . ':' . $e->getLine(); + return 'Error in exception handler: ' . $location; + } + return 'Error in exception handler.'; } public function error(Closure $callback) { @@ -7741,11 +7996,11 @@ class Route implements \Serializable } public function serialize() { - return serialize(array('path' => $this->path, 'host' => $this->host, 'defaults' => $this->defaults, 'requirements' => $this->requirements, 'options' => $this->options, 'schemes' => $this->schemes, 'methods' => $this->methods)); + return serialize(array('path' => $this->path, 'host' => $this->host, 'defaults' => $this->defaults, 'requirements' => $this->requirements, 'options' => $this->options, 'schemes' => $this->schemes, 'methods' => $this->methods, 'compiled' => $this->compiled)); } - public function unserialize($data) + public function unserialize($serialized) { - $data = unserialize($data); + $data = unserialize($serialized); $this->path = $data['path']; $this->host = $data['host']; $this->defaults = $data['defaults']; @@ -7753,6 +8008,9 @@ class Route implements \Serializable $this->options = $data['options']; $this->schemes = $data['schemes']; $this->methods = $data['methods']; + if (isset($data['compiled'])) { + $this->compiled = $data['compiled']; + } } public function getPattern() { @@ -7797,6 +8055,10 @@ class Route implements \Serializable $this->compiled = null; return $this; } + public function hasScheme($scheme) + { + return in_array(strtolower($scheme), $this->schemes, true); + } public function getMethods() { return $this->methods; @@ -8161,6 +8423,7 @@ class FileViewFinder implements ViewFinderInterface { protected $files; protected $paths; + protected $views = array(); protected $hints = array(); protected $extensions = array('blade.php', 'php'); public function __construct(Filesystem $files, array $paths, array $extensions = null) @@ -8173,10 +8436,13 @@ class FileViewFinder implements ViewFinderInterface } public function find($name) { - if (strpos($name, '::') !== false) { - return $this->findNamedPathView($name); + if (isset($this->views[$name])) { + return $this->views[$name]; } - return $this->findInPaths($name, $this->paths); + if (strpos($name, '::') !== false) { + return $this->views[$name] = $this->findNamedPathView($name); + } + return $this->views[$name] = $this->findInPaths($name, $this->paths); } protected function findNamedPathView($name) { @@ -8499,6 +8765,10 @@ class Environment { $this->container = $container; } + public function shared($key, $default = null) + { + return array_get($this->shared, $key, $default); + } public function getShared() { return $this->shared; @@ -8521,8 +8791,8 @@ interface MessageProviderInterface namespace Illuminate\Support; use Countable; -use Illuminate\Support\Contracts\ArrayableInterface; use Illuminate\Support\Contracts\JsonableInterface; +use Illuminate\Support\Contracts\ArrayableInterface; use Illuminate\Support\Contracts\MessageProviderInterface; class MessageBag implements ArrayableInterface, Countable, JsonableInterface, MessageProviderInterface { @@ -8648,14 +8918,14 @@ class RequestContext private $parameters = array(); public function __construct($baseUrl = '', $method = 'GET', $host = 'localhost', $scheme = 'http', $httpPort = 80, $httpsPort = 443, $path = '/', $queryString = '') { - $this->baseUrl = $baseUrl; - $this->method = strtoupper($method); - $this->host = $host; - $this->scheme = strtolower($scheme); - $this->httpPort = $httpPort; - $this->httpsPort = $httpsPort; - $this->pathInfo = $path; - $this->queryString = $queryString; + $this->setBaseUrl($baseUrl); + $this->setMethod($method); + $this->setHost($host); + $this->setScheme($scheme); + $this->setHttpPort($httpPort); + $this->setHttpsPort($httpsPort); + $this->setPathInfo($path); + $this->setQueryString($queryString); } public function fromRequest(Request $request) { @@ -8666,7 +8936,7 @@ class RequestContext $this->setScheme($request->getScheme()); $this->setHttpPort($request->isSecure() ? $this->httpPort : $request->getPort()); $this->setHttpsPort($request->isSecure() ? $request->getPort() : $this->httpsPort); - $this->setQueryString($request->server->get('QUERY_STRING')); + $this->setQueryString($request->server->get('QUERY_STRING', '')); } public function getBaseUrl() { @@ -8698,7 +8968,7 @@ class RequestContext } public function setHost($host) { - $this->host = $host; + $this->host = strtolower($host); } public function getScheme() { @@ -8714,7 +8984,7 @@ class RequestContext } public function setHttpPort($httpPort) { - $this->httpPort = $httpPort; + $this->httpPort = (int) $httpPort; } public function getHttpsPort() { @@ -8722,7 +8992,7 @@ class RequestContext } public function setHttpsPort($httpsPort) { - $this->httpsPort = $httpsPort; + $this->httpsPort = (int) $httpsPort; } public function getQueryString() { @@ -8730,7 +9000,7 @@ class RequestContext } public function setQueryString($queryString) { - $this->queryString = $queryString; + $this->queryString = (string) $queryString; } public function getParameters() { @@ -8874,18 +9144,14 @@ class RouteCompiler implements RouteCompilerInterface const SEPARATORS = '/,;.:-_~+*=@|'; public static function compile(Route $route) { - $staticPrefix = null; $hostVariables = array(); - $pathVariables = array(); $variables = array(); - $tokens = array(); - $regex = null; $hostRegex = null; $hostTokens = array(); if ('' !== ($host = $route->getHost())) { $result = self::compilePattern($route, $host, true); $hostVariables = $result['variables']; - $variables = array_merge($variables, $hostVariables); + $variables = $hostVariables; $hostTokens = $result['tokens']; $hostRegex = $result['regex']; } @@ -8953,7 +9219,7 @@ class RouteCompiler implements RouteCompilerInterface for ($i = 0, $nbToken = count($tokens); $i < $nbToken; $i++) { $regexp .= self::computeRegexp($tokens, $i, $firstOptional); } - return array('staticPrefix' => 'text' === $tokens[0][0] ? $tokens[0][1] : '', 'regex' => self::REGEX_DELIMITER . '^' . $regexp . '$' . self::REGEX_DELIMITER . 's', 'tokens' => array_reverse($tokens), 'variables' => $variables); + return array('staticPrefix' => 'text' === $tokens[0][0] ? $tokens[0][1] : '', 'regex' => self::REGEX_DELIMITER . '^' . $regexp . '$' . self::REGEX_DELIMITER . 's' . ($isHost ? 'i' : ''), 'tokens' => array_reverse($tokens), 'variables' => $variables); } private static function findNextSeparator($pattern) { @@ -8987,7 +9253,7 @@ class RouteCompiler implements RouteCompilerInterface } namespace Symfony\Component\Routing; -class CompiledRoute +class CompiledRoute implements \Serializable { private $variables; private $tokens; @@ -9008,6 +9274,22 @@ class CompiledRoute $this->hostVariables = $hostVariables; $this->variables = $variables; } + public function serialize() + { + return serialize(array('vars' => $this->variables, 'path_prefix' => $this->staticPrefix, 'path_regex' => $this->regex, 'path_tokens' => $this->tokens, 'path_vars' => $this->pathVariables, 'host_regex' => $this->hostRegex, 'host_tokens' => $this->hostTokens, 'host_vars' => $this->hostVariables)); + } + public function unserialize($serialized) + { + $data = unserialize($serialized); + $this->variables = $data['vars']; + $this->staticPrefix = $data['path_prefix']; + $this->regex = $data['path_regex']; + $this->tokens = $data['path_tokens']; + $this->pathVariables = $data['path_vars']; + $this->hostRegex = $data['host_regex']; + $this->hostTokens = $data['host_tokens']; + $this->hostVariables = $data['host_vars']; + } public function getStaticPrefix() { return $this->staticPrefix; @@ -9082,7 +9364,7 @@ class View implements ArrayAccess, Renderable $env = $this->environment; $env->incrementRender(); $env->callComposer($this); - $contents = trim($this->getContents()); + $contents = $this->getContents(); $env->decrementRender(); if ($env->doneRendering()) { $env->flushSections(); @@ -9172,6 +9454,13 @@ class View implements ArrayAccess, Renderable { unset($this->data[$key]); } + public function __call($method, $parameters) + { + if (starts_with($method, 'with')) { + return $this->with(snake_case(substr($method, 4)), $parameters[0]); + } + throw new \BadMethodCallException("Method [{$method}] does not exist on view."); + } public function __toString() { return $this->render(); @@ -9202,7 +9491,7 @@ class PhpEngine implements EngineInterface } catch (\Exception $e) { $this->handleViewException($e); } - return ob_get_clean(); + return ltrim(ob_get_clean()); } protected function handleViewException($e) { @@ -9248,29 +9537,32 @@ class Response public function prepare(Request $request) { $headers = $this->headers; - if ($this->isInformational() || in_array($this->statusCode, array(204, 304))) { + if ($this->isInformational() || $this->isEmpty()) { $this->setContent(null); - } - if (!$headers->has('Content-Type')) { - $format = $request->getRequestFormat(); - if (null !== $format && ($mimeType = $request->getMimeType($format))) { - $headers->set('Content-Type', $mimeType); - } - } - $charset = $this->charset ?: 'UTF-8'; - if (!$headers->has('Content-Type')) { - $headers->set('Content-Type', 'text/html; charset=' . $charset); - } elseif (0 === strpos($headers->get('Content-Type'), 'text/') && false === strpos($headers->get('Content-Type'), 'charset')) { - $headers->set('Content-Type', $headers->get('Content-Type') . '; charset=' . $charset); - } - if ($headers->has('Transfer-Encoding')) { + $headers->remove('Content-Type'); $headers->remove('Content-Length'); - } - if ($request->isMethod('HEAD')) { - $length = $headers->get('Content-Length'); - $this->setContent(null); - if ($length) { - $headers->set('Content-Length', $length); + } else { + if (!$headers->has('Content-Type')) { + $format = $request->getRequestFormat(); + if (null !== $format && ($mimeType = $request->getMimeType($format))) { + $headers->set('Content-Type', $mimeType); + } + } + $charset = $this->charset ?: 'UTF-8'; + if (!$headers->has('Content-Type')) { + $headers->set('Content-Type', 'text/html; charset=' . $charset); + } elseif (0 === stripos($headers->get('Content-Type'), 'text/') && false === stripos($headers->get('Content-Type'), 'charset')) { + $headers->set('Content-Type', $headers->get('Content-Type') . '; charset=' . $charset); + } + if ($headers->has('Transfer-Encoding')) { + $headers->remove('Content-Length'); + } + if ($request->isMethod('HEAD')) { + $length = $headers->get('Content-Length'); + $this->setContent(null); + if ($length) { + $headers->set('Content-Length', $length); + } } } if ('HTTP/1.0' != $request->server->get('SERVER_PROTOCOL')) { @@ -9316,7 +9608,7 @@ class Response while (($level = ob_get_level()) > 0 && $level !== $previous) { $previous = $level; if ($obStatus[$level - 1]) { - if (version_compare(PHP_VERSION, '5.4', '>=')) { + if (PHP_VERSION_ID >= 50400) { if (isset($obStatus[$level - 1]['flags']) && $obStatus[$level - 1]['flags'] & PHP_OUTPUT_HANDLER_REMOVABLE) { ob_end_flush(); } @@ -9470,7 +9762,6 @@ class Response if (null !== $this->getExpires()) { return $this->getExpires()->format('U') - $this->getDate()->format('U'); } - return null; } public function setMaxAge($value) { @@ -9488,7 +9779,6 @@ class Response if (null !== ($maxAge = $this->getMaxAge())) { return $maxAge - $this->getAge(); } - return null; } public function setTtl($seconds) { @@ -9579,10 +9869,14 @@ class Response } public function getVary() { - if (!($vary = $this->headers->get('Vary'))) { + if (!($vary = $this->headers->get('Vary', null, false))) { return array(); } - return is_array($vary) ? $vary : preg_split('/[\\s,]+/', $vary); + $ret = array(); + foreach ($vary as $item) { + $ret = array_merge($ret, preg_split('/[\\s,]+/', $item)); + } + return $ret; } public function setVary($headers, $replace = true) { @@ -9594,12 +9888,14 @@ class Response if (!$request->isMethodSafe()) { return false; } - $lastModified = $request->headers->get('If-Modified-Since'); $notModified = false; + $lastModified = $this->headers->get('Last-Modified'); + $modifiedSince = $request->headers->get('If-Modified-Since'); if ($etags = $request->getEtags()) { - $notModified = (in_array($this->getEtag(), $etags) || in_array('*', $etags)) && (!$lastModified || $this->headers->get('Last-Modified') == $lastModified); - } elseif ($lastModified) { - $notModified = $lastModified == $this->headers->get('Last-Modified'); + $notModified = in_array($this->getEtag(), $etags) || in_array('*', $etags); + } + if ($modifiedSince && $lastModified) { + $notModified = strtotime($modifiedSince) >= strtotime($lastModified) && (!$etags || $notModified); } if ($notModified) { $this->setNotModified(); @@ -9648,12 +9944,12 @@ class Response } public function isEmpty() { - return in_array($this->statusCode, array(201, 204, 304)); + return in_array($this->statusCode, array(204, 304)); } protected function ensureIEOverSSLCompatibility(Request $request) { if (false !== stripos($this->headers->get('Content-Disposition'), 'attachment') && preg_match('/MSIE (.*?);/i', $request->server->get('HTTP_USER_AGENT'), $match) == 1 && true === $request->isSecure()) { - if (intval(preg_replace('/(MSIE )(.*?);/', '$2', $match[0])) < 9) { + if ((int) preg_replace('/(MSIE )(.*?);/', '$2', $match[0]) < 9) { $this->headers->remove('Cache-Control'); } } @@ -9661,6 +9957,7 @@ class Response } namespace Illuminate\Http; +use ArrayObject; use Symfony\Component\HttpFoundation\Cookie; use Illuminate\Support\Contracts\JsonableInterface; use Illuminate\Support\Contracts\RenderableInterface; @@ -9697,7 +9994,7 @@ class Response extends \Symfony\Component\HttpFoundation\Response } protected function shouldBeJson($content) { - return $content instanceof JsonableInterface or is_array($content); + return $content instanceof JsonableInterface or $content instanceof ArrayObject or is_array($content); } public function getOriginalContent() { @@ -10143,7 +10440,7 @@ class PrettyPageHandler extends Handler return Handler::DONE; } if (!($resources = $this->getResourcesPath())) { - $resources = 'F:\\Nelson\\My Documents - Personal\\Visual Studio 2010\\Projects\\Poniverse\\spa.pony.fm\\vendor\\filp\\whoops\\src\\Whoops\\Handler' . '/../Resources'; + $resources = '/vagrant/vendor/filp/whoops/src/Whoops/Handler' . '/../Resources'; } $templateFile = "{$resources}/pretty-template.php"; $cssFile = "{$resources}/pretty-page.css"; diff --git a/bootstrap/start.php b/bootstrap/start.php index 8b882aef..f48bd6bb 100644 --- a/bootstrap/start.php +++ b/bootstrap/start.php @@ -27,7 +27,7 @@ $app->redirectIfTrailingSlash(); */ $env = $app->detectEnvironment([ - 'local' => ['dev.spa.pony.fm'] + 'local' => ['pony.fm.local', 'api.pony.fm.local', 'homestead'] ]); /* diff --git a/composer.json b/composer.json index 6c00c759..de751d80 100644 --- a/composer.json +++ b/composer.json @@ -30,5 +30,5 @@ "config": { "preferred-install": "dist" }, - "minimum-stability": "dev" + "minimum-stability": "stable" } diff --git a/composer.phar b/composer.phar deleted file mode 100644 index c1b019309793cafee05971e6d0a19de87f8d2ed4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 807659 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

@gq0s+ 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 O(mo~z1_pO0Unc;c6r|k% diff --git a/logs/.gitignore b/logs/.gitignore new file mode 100644 index 00000000..c96a04f0 --- /dev/null +++ b/logs/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore \ No newline at end of file diff --git a/pony.fm.iml b/pony.fm.iml new file mode 100644 index 00000000..80cc7391 --- /dev/null +++ b/pony.fm.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/public/styles/account-content.less b/public/styles/account-content.less index 1ae43147..80e07e72 100644 --- a/public/styles/account-content.less +++ b/public/styles/account-content.less @@ -1,5 +1,5 @@ -@import-once 'base/bootstrap/bootstrap'; -@import-once 'mixins'; +@import 'base/bootstrap/bootstrap'; +@import 'mixins'; ul.playlists { overflow-y: auto; diff --git a/public/styles/animations.less b/public/styles/animations.less index 448c768e..5300c089 100644 --- a/public/styles/animations.less +++ b/public/styles/animations.less @@ -1,5 +1,5 @@ -@import-once 'base/bootstrap/bootstrap'; -@import-once 'mixins'; +@import 'base/bootstrap/bootstrap'; +@import 'mixins'; .fade-hide, .fade-show { .transition(all cubic-bezier(0.250, 0.460, 0.450, 0.940) 350ms); diff --git a/public/styles/base/bootstrap/navbar.less b/public/styles/base/bootstrap/navbar.less index 93d09bca..e8548942 100644 --- a/public/styles/base/bootstrap/navbar.less +++ b/public/styles/base/bootstrap/navbar.less @@ -196,7 +196,7 @@ .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container { - #grid > .core > .span(@gridColumns); + width: (@gridColumnWidth * @gridColumns) + (@gridGutterWidth * (@gridColumns - 1)); } // Fixed to top diff --git a/public/styles/body.less b/public/styles/body.less index e1c1df6a..50814aed 100644 --- a/public/styles/body.less +++ b/public/styles/body.less @@ -1,5 +1,5 @@ -@import-once 'variables'; -@import-once 'base/bootstrap/bootstrap'; +@import 'variables'; +@import 'base/bootstrap/bootstrap'; a { color: #C2889C; diff --git a/public/styles/components.less b/public/styles/components.less index ea0edba6..0ecb10c0 100644 --- a/public/styles/components.less +++ b/public/styles/components.less @@ -1,6 +1,6 @@ -@import-once 'base/bootstrap/bootstrap'; -@import-once 'mixins'; -@import-once 'variables'; +@import 'base/bootstrap/bootstrap'; +@import 'mixins'; +@import 'variables'; .stretch-to-bottom { overflow-y: auto; diff --git a/public/styles/content.less b/public/styles/content.less index b48b8d67..9eec5f1e 100644 --- a/public/styles/content.less +++ b/public/styles/content.less @@ -1,6 +1,6 @@ -@import-once 'base/bootstrap/bootstrap'; -@import-once 'mixins'; -@import-once 'variables'; +@import 'base/bootstrap/bootstrap'; +@import 'mixins'; +@import 'variables'; @media (max-width: 1300px) and (min-width: 720px) { html { diff --git a/public/styles/dashboard.less b/public/styles/dashboard.less index fb07e54c..d4950057 100644 --- a/public/styles/dashboard.less +++ b/public/styles/dashboard.less @@ -1,4 +1,4 @@ -@import-once "base/bootstrap/bootstrap"; +@import "base/bootstrap/bootstrap"; .dashboard { h1 { diff --git a/public/styles/forms.less b/public/styles/forms.less index b8fba33d..4775d55a 100644 --- a/public/styles/forms.less +++ b/public/styles/forms.less @@ -1,4 +1,4 @@ -@import-once "base/bootstrap/bootstrap"; +@import "base/bootstrap/bootstrap"; .form-row { margin-bottom: 10px; diff --git a/public/styles/layout.less b/public/styles/layout.less index b28cfd52..f9306cff 100644 --- a/public/styles/layout.less +++ b/public/styles/layout.less @@ -1,6 +1,6 @@ -@import-once 'base/bootstrap/bootstrap'; -@import-once 'mixins'; -@import-once 'variables'; +@import 'base/bootstrap/bootstrap'; +@import 'mixins'; +@import 'variables'; html, body { } diff --git a/public/styles/player.less b/public/styles/player.less index 566776e4..8f4134a7 100644 --- a/public/styles/player.less +++ b/public/styles/player.less @@ -1,5 +1,5 @@ -@import-once 'variables'; -@import-once 'mixins'; +@import 'variables'; +@import 'mixins'; body.is-logged { .track-player { diff --git a/public/styles/uploader.less b/public/styles/uploader.less index b880795b..f847ba65 100644 --- a/public/styles/uploader.less +++ b/public/styles/uploader.less @@ -1,4 +1,4 @@ -@import-once 'variables'; +@import 'variables'; .uploader { h1 { diff --git a/vagrant/config/app.php b/vagrant/config/app.php new file mode 100644 index 00000000..4e7f61fd --- /dev/null +++ b/vagrant/config/app.php @@ -0,0 +1,14 @@ + true, + 'uglify-js' => 'uglifyjs', + 'uglify-css' => 'uglifycss', + 'coffee' => 'coffee', + 'debug' => true, + 'url' => 'pony.fm.local', + 'files_directory' => '/vagrant-files/', + 'node' => null, + 'node_paths' => ['node'], + 'secure' => false, +); \ No newline at end of file diff --git a/vagrant/config/cache.php b/vagrant/config/cache.php new file mode 100644 index 00000000..90116a11 --- /dev/null +++ b/vagrant/config/cache.php @@ -0,0 +1,5 @@ + 'database', +); diff --git a/vagrant/config/database.php b/vagrant/config/database.php new file mode 100644 index 00000000..064f000b --- /dev/null +++ b/vagrant/config/database.php @@ -0,0 +1,85 @@ + 'mysql', + + /* + |-------------------------------------------------------------------------- + | Database Connections + |-------------------------------------------------------------------------- + | + | Here are each of the database connections setup for your application. + | Of course, examples of configuring each database platform that is + | supported by Laravel is shown below to make development simple. + | + | + | All database work in Laravel is done through the PHP PDO facilities + | so make sure you have the driver for your particular database of + | choice installed on your machine before you begin development. + | + */ + + 'connections' => array( + + 'mysql' => array( + 'driver' => 'mysql', + 'host' => 'localhost', + 'database' => 'homestead', + 'username' => 'homestead', + 'password' => 'secret', + 'charset' => 'utf8', + 'collation' => 'utf8_unicode_ci', + 'prefix' => '', + ), + + ), + + /* + |-------------------------------------------------------------------------- + | Migration Repository Table + |-------------------------------------------------------------------------- + | + | This table keeps track of all the migrations that have already run for + | your application. Using this information, we can determine which of + | the migrations on disk have not actually be run in the databases. + | + */ + + 'migrations' => 'migrations', + + /* + |-------------------------------------------------------------------------- + | Redis Databases + |-------------------------------------------------------------------------- + | + | Redis is an open source, fast, and advanced key-value store that also + | provides a richer set of commands than a typical key-value systems + | such as APC or Memcached. Laravel makes it easy to dig right in. + | + */ + + 'redis' => array( + + 'cluster' => true, + + 'default' => array( + 'host' => '127.0.0.1', + 'port' => 6379, + 'database' => 0, + ), + + ), + +); \ No newline at end of file diff --git a/vagrant/config/poniverse.php b/vagrant/config/poniverse.php new file mode 100644 index 00000000..b5b019c1 --- /dev/null +++ b/vagrant/config/poniverse.php @@ -0,0 +1,12 @@ + 1, + 'urls' => [ + 'api' => 'http://api.poniverse.dev:83/v1/', + 'register' => 'http://poniverse.dev:83/register?site=ponyfm', + 'auth' => 'http://poniverse.dev:83/login/authorize', + 'token' => 'http://api.poniverse.dev:83/v1/oauth2/token' + ], + 'client_id' => 'spa-ponyfm', + 'secret' => 'mwRW6lfm19G9TaN60J0oMq2kapzU83n4' +]; \ No newline at end of file diff --git a/vagrant/config/session.php b/vagrant/config/session.php new file mode 100644 index 00000000..e11e98cd --- /dev/null +++ b/vagrant/config/session.php @@ -0,0 +1,125 @@ + 'native', + + /* + |-------------------------------------------------------------------------- + | Session Lifetime + |-------------------------------------------------------------------------- + | + | Here you may specify the number of minutes that you wish the session + | to be allowed to remain idle for it is expired. If you want them + | to immediately expire when the browser closes, set it to zero. + | + */ + + 'lifetime' => 120, + + /* + |-------------------------------------------------------------------------- + | Session File Location + |-------------------------------------------------------------------------- + | + | When using the native session driver, we need a location where session + | files may be stored. A default has been set for you but a different + | location may be specified. This is only needed for file sessions. + | + */ + + 'files' => storage_path().'/sessions', + + /* + |-------------------------------------------------------------------------- + | Session Database Connection + |-------------------------------------------------------------------------- + | + | When using the "database" session driver, you may specify the database + | connection that should be used to manage your sessions. This should + | correspond to a connection in your "database" configuration file. + | + */ + + 'connection' => null, + + /* + |-------------------------------------------------------------------------- + | Session Database Table + |-------------------------------------------------------------------------- + | + | When using the "database" session driver, you may specify the table we + | should use to manage the sessions. Of course, a sensible default is + | provided for you; however, you are free to change this as needed. + | + */ + + 'table' => 'sessions', + + /* + |-------------------------------------------------------------------------- + | Session Sweeping Lottery + |-------------------------------------------------------------------------- + | + | Some session drivers must manually sweep their storage location to get + | rid of old sessions from storage. Here are the chances that it will + | happen on a given request. By default, the odds are 2 out of 100. + | + */ + + 'lottery' => array(2, 100), + + /* + |-------------------------------------------------------------------------- + | Session Cookie Name + |-------------------------------------------------------------------------- + | + | Here you may change the name of the cookie used to identify a session + | instance by ID. The name specified here will get used every time a + | new session cookie is created by the framework for every driver. + | + */ + + 'cookie' => 'laravel_session', + + /* + |-------------------------------------------------------------------------- + | Session Cookie Path + |-------------------------------------------------------------------------- + | + | The session cookie path determines the path for which the cookie will + | be regarded as available. Typically, this will be the root path of + | your application but you are free to change this when necessary. + | + */ + + 'path' => '/', + + /* + |-------------------------------------------------------------------------- + | Session Cookie Domain + |-------------------------------------------------------------------------- + | + | Here you may change the domain of the cookie used to identify a session + | in your application. This will determine which domains the cookie is + | available to in your application. A sensible default has been set. + | + */ + + 'domain' => null, + +); diff --git a/vagrant/copy-and-restart-configs.sh b/vagrant/copy-and-restart-configs.sh new file mode 100644 index 00000000..cb81e720 --- /dev/null +++ b/vagrant/copy-and-restart-configs.sh @@ -0,0 +1,13 @@ +sudo cp /vagrant/vagrant/pony.fm.nginx.config /etc/nginx/nginx.conf +sudo cp /vagrant/vagrant/pony.fm.nginx.site.config /etc/nginx/sites-enabled/pony.fm + +sudo cp /vagrant/vagrant/pony.fm.mysql.config /etc/mysql/my.cnf + +sudo cp /vagrant/vagrant/pony.fm.redis.config /etc/redis/redis.conf + +sudo service nginx restart +sudo service php5-fpm restart + +sudo service mysql restart + +# todo: figure out how to restart redis \ No newline at end of file diff --git a/vagrant/elevator.exe b/vagrant/elevator.exe new file mode 100644 index 0000000000000000000000000000000000000000..39f997f581dc48d4e971c6ab8cdb27e0c307eb6e GIT binary patch literal 8704 zcmeHMeQX>@6@PnoaU7>P;xug&nxx}PS~*GYd|!6#U?+BMr*#`AZq7+cn-cHs&fP89 z+qv%U*}g)n@L9D8)Jheq+CN$lA1X*y`4ALng+KyTOXdo%CNoAvyi4^xzgVtD@cH=^h8mSs}GHwPEd9l!3Iar)|} z7YClxj=wmtSg|}-b4A(JtIW_HNBFGBnOk?5<*=EP1y&U%Pi@)Kx39^1VV3B)7A5D) z`%j0ny-E>nv$h$`f!P*doh052&m{r#jS1Z8Qckk`}vTm z_f9moY!cVvwNYTn`ht3o*xjmME%tQOuWQvKS3f?;&=La@bw#g8;C(}{*o)UMc3&C0 z?utR|+rIvoxE?R1!)}H71+@ime;JC>)Q>c|X2j{vZ_{o}tnG;m-hlB3ZYtb*lcp>k ztlM%vl}_c-xy+cP-#|8CFYK`Qe(V#xZ-JBUE%>hGls!rD{6+v+XYc6(J&(;Mr`db+ z>A4xae}wj9vhOBa6w#Ii=F`qz73tlCKKje`If8jXLXb&q7g@(Nsty4aKZy&Uun)2~ zrS73o%3zaNbQ17U`XJyJ75ssMzfzDiiQlPUUcr+JKA=^!9(qE-rxoVA3jR@hMLSA8 z5VwbhBUeRw=(K_tBXX{1RQ-pl{<4C<0qmn4(JP`obR@br8mGIXuV``NfIakb^hMy` z5tC!nfU-!9B$V&1bPZhxYs*$YJrGIJ5|h1;&{3tQKOkEl-7y2o2rV$#dW5{l{-(`t zMO&l$BmFc(+i9nQ0}Ad}Fr(m@f>R34DR{er?*`mSx~f|W-lJdxa1T8QxDT_*xj&`g z)AZxWyXZ^wN@NP~&yi#F9XcMp4SqjEWz=tvR_STFBl?h{d6ZsKqh6xr=o9oa`fzkR z;3En?8QqEcR{(!WKacK5{nx<1M6XAm0*uDCg2S%ZXXp=fIQ9kFr1%Wb$7qC7l%uGY zqRsRT)UQZ&20CR!f4d_t`@O>n-CB^v}TB6v+ zaD8A{Rp6lNd}=mf?Lk$AJG2T`Qf|*RbiryLq;oVxh!(Pp&kM6|^CL8C^JU!^Zi=sR zS_sap7Lux-Aza%kQla7byhtl@e5=Y+XSnNG!hwU* zBKo<13W zD%V~8jk>Ef-D#{J2ZhbL;jizQ7PW?Jl`H?CYthwBUe!C531ytF+kV~c5Ppqe<{Y29 zqE_JUvSo0OrbYFP(hI~3! zcZ{VhO&9i!9~nD;ep)vw+?;ZR)2NENH_!cwFlV^U%ev1&)|BLC?rkPI28tJydmCxUHQC@_T63saG)ttkfp4n;XT?esF2ab$A> zaVt&tQG&=jjYy^={&G4@4A92242(~LT*OFDt9TgI6t1FbF8a#o)v1d1U3j}_XXx&Z zR<^5^Q>_&Er4a2H(ZDIHlY^gyr>y1hlRy3b3)K7dd(WNOnSb>`oTS?BIKf%&MBBCFnyrz5 zLJR5UBYS9%7V872O_H6&$9r%x#dqzBG1^vzJP|2be;u`W-^LB`_%;i_#+*j)Or4lr zY(?rDn?Yp)>DaJFi}CHPt{Ka#*?L3n+ih|TYxOYDZqcYWJXD~SR1HTRZEHnT_T8r$ z%ce8KMEf<`HKE@BMZIX!zlC@Ilu*cY@oVaL&Q4<>BX@TL4lxx_vHGvt1Fz_nt#+ zmxjkL%mNUqh7v2D0`3HD8ehm{~f_?cgYEMlPJu5e6vn) l+H; zEYC*Z19S#=^z(qTbPBaO+%`_2JqLIUby;4B{r;~3-+*^G$5GWA4QEC8 z%Tp0`q@u{GHE0mbJfotmq4?Cg=9yh{p2)e=_`1*@dj?~1es#!}!5NWmJ#wxspqJYD ziq?THHtZ))A9K?P!Vr%U+s>V#I z^N&NWA|#b3;HAd>{#)N3Ke}4A*>Z3dm`EUaCm44OVImiqNYwpOax`)D$d=1aokrP9)|VQ?;6H87jR_>9ty7DB$3`bx$Rdfs$`QUNsJLdq^RX z5;vM{U|fDr9Y*Hnf@>`!2`zK)Epp8T`Y=_-2a-v4dTN@@H&>0FRB56oRc@EL5^IP$ zThSe#`GOf0-6?bCS2#OsIVMhMCQn*6Wf({~eTFpNcZJPxHRU#QIkF8SAn#_|QX$Y`ouur?^ShL`DAD6*< zIg{5N#pP7Uc)i?Ty9u5OE`J^S}9l5VJ0#yKiC*=rU@22+=|I0TwoK* zKaoFF4AtQmwTK8Le30s@HviYdAueZ8w;Q z)iESfj(>Mx>QH8E0q$V;2uEIaQ))@V6;h%Go5y`ilC(6zcNAa0k>R_7s7k(S-j>fZ zuU@MO7x51Ne383b&D!)_m}k7Rf6kmpypQ9ClF1JrN@j-hBe<3r!%2O(#FOdtsL46c znYmK>zQmF7p^lM9E|V^YE~6f~;Y@C{IHo6u%`xavDw@ero;8ztHlI&tv%{saoPHlp zn9C&k=w%c=uV+iyQQQZIb4Av?^I=SKfiOE8+sTt-bYrIAA; z#-WkqXqsn|`D|_scidtzIhr%mr4ci2>W837*CLD$bvUAO9Ox#h7ZE1$C2$c(yEBm(8OC~y 1000 bytes +# 1kb => 1024 bytes +# 1m => 1000000 bytes +# 1mb => 1024*1024 bytes +# 1g => 1000000000 bytes +# 1gb => 1024*1024*1024 bytes +# +# units are case insensitive so 1GB 1Gb 1gB are all the same. + +# By default Redis does not run as a daemon. Use 'yes' if you need it. +# Note that Redis will write a pid file in /var/run/redis.pid when daemonized. +daemonize yes + +# When running daemonized, Redis writes a pid file in /var/run/redis.pid by +# default. You can specify a custom pid file location here. +pidfile /var/run/redis/redis.pid + +# Accept connections on the specified port, default is 6379. +# If port 0 is specified Redis will not listen on a TCP socket. +port 6379 + +# By default Redis listens for connections from all the network interfaces +# available on the server. It is possible to listen to just one or multiple +# interfaces using the "bind" configuration directive, followed by one or +# more IP addresses. +# +# Examples: +# +# bind 192.168.1.100 10.0.0.1 +# bind 127.0.0.1 + +# Specify the path for the unix socket that will be used to listen for +# incoming connections. There is no default, so Redis will not listen +# on a unix socket when not specified. +# +# unixsocket /tmp/redis.sock +# unixsocketperm 755 + +# Close the connection after a client is idle for N seconds (0 to disable) +timeout 0 + +# TCP keepalive. +# +# If non-zero, use SO_KEEPALIVE to send TCP ACKs to clients in absence +# of communication. This is useful for two reasons: +# +# 1) Detect dead peers. +# 2) Take the connection alive from the point of view of network +# equipment in the middle. +# +# On Linux, the specified value (in seconds) is the period used to send ACKs. +# Note that to close the connection the double of the time is needed. +# On other kernels the period depends on the kernel configuration. +# +# A reasonable value for this option is 60 seconds. +tcp-keepalive 0 + +# Specify the server verbosity level. +# This can be one of: +# debug (a lot of information, useful for development/testing) +# verbose (many rarely useful info, but not a mess like the debug level) +# notice (moderately verbose, what you want in production probably) +# warning (only very important / critical messages are logged) +loglevel notice + +# Specify the log file name. Also the emptry string can be used to force +# Redis to log on the standard output. Note that if you use standard +# output for logging but daemonize, logs will be sent to /dev/null +logfile /dev/null + +# To enable logging to the system logger, just set 'syslog-enabled' to yes, +# and optionally update the other syslog parameters to suit your needs. +syslog-enabled yes + +# Specify the syslog identity. +# syslog-ident redis + +# Specify the syslog facility. Must be USER or between LOCAL0-LOCAL7. +# syslog-facility local0 + +# Set the number of databases. The default database is DB 0, you can select +# a different one on a per-connection basis using SELECT where +# dbid is a number between 0 and 'databases'-1 +databases 16 + +################################ SNAPSHOTTING ################################# +# +# Save the DB on disk: +# +# save +# +# Will save the DB if both the given number of seconds and the given +# number of write operations against the DB occurred. +# +# In the example below the behaviour will be to save: +# after 900 sec (15 min) if at least 1 key changed +# after 300 sec (5 min) if at least 10 keys changed +# after 60 sec if at least 10000 keys changed +# +# Note: you can disable saving at all commenting all the "save" lines. +# +# It is also possible to remove all the previously configured save +# points by adding a save directive with a single empty string argument +# like in the following example: +# +# save "" + +save 900 1 +save 300 10 +save 60 10000 + +# By default Redis will stop accepting writes if RDB snapshots are enabled +# (at least one save point) and the latest background save failed. +# This will make the user aware (in an hard way) that data is not persisting +# on disk properly, otherwise chances are that no one will notice and some +# distater will happen. +# +# If the background saving process will start working again Redis will +# automatically allow writes again. +# +# However if you have setup your proper monitoring of the Redis server +# and persistence, you may want to disable this feature so that Redis will +# continue to work as usually even if there are problems with disk, +# permissions, and so forth. +stop-writes-on-bgsave-error yes + +# Compress string objects using LZF when dump .rdb databases? +# For default that's set to 'yes' as it's almost always a win. +# If you want to save some CPU in the saving child set it to 'no' but +# the dataset will likely be bigger if you have compressible values or keys. +rdbcompression yes + +# Since version 5 of RDB a CRC64 checksum is placed at the end of the file. +# This makes the format more resistant to corruption but there is a performance +# hit to pay (around 10%) when saving and loading RDB files, so you can disable it +# for maximum performances. +# +# RDB files created with checksum disabled have a checksum of zero that will +# tell the loading code to skip the check. +rdbchecksum yes + +# The filename where to dump the DB +dbfilename redis.rdb + +# The working directory. +# +# The DB will be written inside this directory, with the filename specified +# above using the 'dbfilename' configuration directive. +# +# The Append Only File will also be created inside this directory. +# +# Note that you must specify a directory here, not a file name. +dir /var/lib/redis/ + +################################# REPLICATION ################################# + +# Master-Slave replication. Use slaveof to make a Redis instance a copy of +# another Redis server. Note that the configuration is local to the slave +# so for example it is possible to configure the slave to save the DB with a +# different interval, or to listen to another port, and so on. +# +# slaveof + +# If the master is password protected (using the "requirepass" configuration +# directive below) it is possible to tell the slave to authenticate before +# starting the replication synchronization process, otherwise the master will +# refuse the slave request. +# +# masterauth + +# When a slave loses its connection with the master, or when the replication +# is still in progress, the slave can act in two different ways: +# +# 1) if slave-serve-stale-data is set to 'yes' (the default) the slave will +# still reply to client requests, possibly with out of date data, or the +# data set may just be empty if this is the first synchronization. +# +# 2) if slave-serve-stale-data is set to 'no' the slave will reply with +# an error "SYNC with master in progress" to all the kind of commands +# but to INFO and SLAVEOF. +# +slave-serve-stale-data yes + +# You can configure a slave instance to accept writes or not. Writing against +# a slave instance may be useful to store some ephemeral data (because data +# written on a slave will be easily deleted after resync with the master) but +# may also cause problems if clients are writing to it because of a +# misconfiguration. +# +# Since Redis 2.6 by default slaves are read-only. +# +# Note: read only slaves are not designed to be exposed to untrusted clients +# on the internet. It's just a protection layer against misuse of the instance. +# Still a read only slave exports by default all the administrative commands +# such as CONFIG, DEBUG, and so forth. To a limited extend you can improve +# security of read only slaves using 'rename-command' to shadow all the +# administrative / dangerous commands. +slave-read-only yes + +# Slaves send PINGs to server in a predefined interval. It's possible to change +# this interval with the repl_ping_slave_period option. The default value is 10 +# seconds. +# +# repl-ping-slave-period 10 + +# The following option sets the replication timeout for: +# +# 1) Bulk transfer I/O during SYNC, from the point of view of slave. +# 2) Master timeout from the point of view of slaves (data, pings). +# 3) Slave timeout from the point of view of masters (REPLCONF ACK pings). +# +# It is important to make sure that this value is greater than the value +# specified for repl-ping-slave-period otherwise a timeout will be detected +# every time there is low traffic between the master and the slave. +# +# repl-timeout 60 + +# Disable TCP_NODELAY on the slave socket after SYNC? +# +# If you select "yes" Redis will use a smaller number of TCP packets and +# less bandwidth to send data to slaves. But this can add a delay for +# the data to appear on the slave side, up to 40 milliseconds with +# Linux kernels using a default configuration. +# +# If you select "no" the delay for data to appear on the slave side will +# be reduced but more bandwidth will be used for replication. +# +# By default we optimize for low latency, but in very high traffic conditions +# or when the master and slaves are many hops away, turning this to "yes" may +# be a good idea. +repl-disable-tcp-nodelay no + +# Set the replication backlog size. The backlog is a buffer that accumulates +# slave data when slaves are disconnected for some time, so that when a slave +# wants to reconnect again, often a full resync is not needed, but a partial +# resync is enough, just passing the portion of data the slave missed while +# disconnected. +# +# The biggest the replication backlog, the longer the time the slave can be +# disconnected and later be able to perform a partial resynchronization. +# +# The backlog is only allocated once there is at least a slave connected. +# +# repl-backlog-size 1mb + +# After a master has no longer connected slaves for some time, the backlog +# will be freed. The following option configures the amount of seconds that +# need to elapse, starting from the time the last slave disconnected, for +# the backlog buffer to be freed. +# +# A value of 0 means to never release the backlog. +# +# repl-backlog-ttl 3600 + +# The slave priority is an integer number published by Redis in the INFO output. +# It is used by Redis Sentinel in order to select a slave to promote into a +# master if the master is no longer working correctly. +# +# A slave with a low priority number is considered better for promotion, so +# for instance if there are three slaves with priority 10, 100, 25 Sentinel will +# pick the one wtih priority 10, that is the lowest. +# +# However a special priority of 0 marks the slave as not able to perform the +# role of master, so a slave with priority of 0 will never be selected by +# Redis Sentinel for promotion. +# +# By default the priority is 100. +slave-priority 100 + +# It is possible for a master to stop accepting writes if there are less than +# N slaves connected, having a lag less or equal than M seconds. +# +# The N slaves need to be in "online" state. +# +# The lag in seconds, that must be <= the specified value, is calculated from +# the last ping received from the slave, that is usually sent every second. +# +# This option does not GUARANTEES that N replicas will accept the write, but +# will limit the window of exposure for lost writes in case not enough slaves +# are available, to the specified number of seconds. +# +# For example to require at least 3 slaves with a lag <= 10 seconds use: +# +# min-slaves-to-write 3 +# min-slaves-max-lag 10 +# +# Setting one or the other to 0 disables the feature. +# +# By default min-slaves-to-write is set to 0 (feature disabled) and +# min-slaves-max-lag is set to 10. + +################################## SECURITY ################################### + +# Require clients to issue AUTH before processing any other +# commands. This might be useful in environments in which you do not trust +# others with access to the host running redis-server. +# +# This should stay commented out for backward compatibility and because most +# people do not need auth (e.g. they run their own servers). +# +# Warning: since Redis is pretty fast an outside user can try up to +# 150k passwords per second against a good box. This means that you should +# use a very strong password otherwise it will be very easy to break. +# +# requirepass foobared + +# Command renaming. +# +# It is possible to change the name of dangerous commands in a shared +# environment. For instance the CONFIG command may be renamed into something +# hard to guess so that it will still be available for internal-use tools +# but not available for general clients. +# +# Example: +# +# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52 +# +# It is also possible to completely kill a command by renaming it into +# an empty string: +# +# rename-command CONFIG "" +# +# Please note that changing the name of commands that are logged into the +# AOF file or transmitted to slaves may cause problems. + +################################### LIMITS #################################### + +# Set the max number of connected clients at the same time. By default +# this limit is set to 10000 clients, however if the Redis server is not +# able to configure the process file limit to allow for the specified limit +# the max number of allowed clients is set to the current file limit +# minus 32 (as Redis reserves a few file descriptors for internal uses). +# +# Once the limit is reached Redis will close all the new connections sending +# an error 'max number of clients reached'. +# +# maxclients 10000 + +# Don't use more memory than the specified amount of bytes. +# When the memory limit is reached Redis will try to remove keys +# accordingly to the eviction policy selected (see maxmemmory-policy). +# +# If Redis can't remove keys according to the policy, or if the policy is +# set to 'noeviction', Redis will start to reply with errors to commands +# that would use more memory, like SET, LPUSH, and so on, and will continue +# to reply to read-only commands like GET. +# +# This option is usually useful when using Redis as an LRU cache, or to set +# an hard memory limit for an instance (using the 'noeviction' policy). +# +# WARNING: If you have slaves attached to an instance with maxmemory on, +# the size of the output buffers needed to feed the slaves are subtracted +# from the used memory count, so that network problems / resyncs will +# not trigger a loop where keys are evicted, and in turn the output +# buffer of slaves is full with DELs of keys evicted triggering the deletion +# of more keys, and so forth until the database is completely emptied. +# +# In short... if you have slaves attached it is suggested that you set a lower +# limit for maxmemory so that there is some free RAM on the system for slave +# output buffers (but this is not needed if the policy is 'noeviction'). +# +# maxmemory + +# MAXMEMORY POLICY: how Redis will select what to remove when maxmemory +# is reached. You can select among five behaviors: +# +# volatile-lru -> remove the key with an expire set using an LRU algorithm +# allkeys-lru -> remove any key accordingly to the LRU algorithm +# volatile-random -> remove a random key with an expire set +# allkeys-random -> remove a random key, any key +# volatile-ttl -> remove the key with the nearest expire time (minor TTL) +# noeviction -> don't expire at all, just return an error on write operations +# +# Note: with any of the above policies, Redis will return an error on write +# operations, when there are not suitable keys for eviction. +# +# At the date of writing this commands are: set setnx setex append +# incr decr rpush lpush rpushx lpushx linsert lset rpoplpush sadd +# sinter sinterstore sunion sunionstore sdiff sdiffstore zadd zincrby +# zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby +# getset mset msetnx exec sort +# +# The default is: +# +# maxmemory-policy volatile-lru + +# LRU and minimal TTL algorithms are not precise algorithms but approximated +# algorithms (in order to save memory), so you can select as well the sample +# size to check. For instance for default Redis will check three keys and +# pick the one that was used less recently, you can change the sample size +# using the following configuration directive. +# +# maxmemory-samples 3 + +############################## APPEND ONLY MODE ############################### + +# By default Redis asynchronously dumps the dataset on disk. This mode is +# good enough in many applications, but an issue with the Redis process or +# a power outage may result into a few minutes of writes lost (depending on +# the configured save points). +# +# The Append Only File is an alternative persistence mode that provides +# much better durability. For instance using the default data fsync policy +# (see later in the config file) Redis can lose just one second of writes in a +# dramatic event like a server power outage, or a single write if something +# wrong with the Redis process itself happens, but the operating system is +# still running correctly. +# +# AOF and RDB persistence can be enabled at the same time without problems. +# If the AOF is enabled on startup Redis will load the AOF, that is the file +# with the better durability guarantees. +# +# Please check http://redis.io/topics/persistence for more information. + +appendonly no + +# The name of the append only file (default: "appendonly.aof") +# appendfilename appendonly.aof + +# The fsync() call tells the Operating System to actually write data on disk +# instead to wait for more data in the output buffer. Some OS will really flush +# data on disk, some other OS will just try to do it ASAP. +# +# Redis supports three different modes: +# +# no: don't fsync, just let the OS flush the data when it wants. Faster. +# always: fsync after every write to the append only log . Slow, Safest. +# everysec: fsync only one time every second. Compromise. +# +# The default is "everysec", as that's usually the right compromise between +# speed and data safety. It's up to you to understand if you can relax this to +# "no" that will let the operating system flush the output buffer when +# it wants, for better performances (but if you can live with the idea of +# some data loss consider the default persistence mode that's snapshotting), +# or on the contrary, use "always" that's very slow but a bit safer than +# everysec. +# +# More details please check the following article: +# http://antirez.com/post/redis-persistence-demystified.html +# +# If unsure, use "everysec". + +# appendfsync always +appendfsync everysec +# appendfsync no + +# When the AOF fsync policy is set to always or everysec, and a background +# saving process (a background save or AOF log background rewriting) is +# performing a lot of I/O against the disk, in some Linux configurations +# Redis may block too long on the fsync() call. Note that there is no fix for +# this currently, as even performing fsync in a different thread will block +# our synchronous write(2) call. +# +# In order to mitigate this problem it's possible to use the following option +# that will prevent fsync() from being called in the main process while a +# BGSAVE or BGREWRITEAOF is in progress. +# +# This means that while another child is saving, the durability of Redis is +# the same as "appendfsync none". In practical terms, this means that it is +# possible to lose up to 30 seconds of log in the worst scenario (with the +# default Linux settings). +# +# If you have latency problems turn this to "yes". Otherwise leave it as +# "no" that is the safest pick from the point of view of durability. +no-appendfsync-on-rewrite no + +# Automatic rewrite of the append only file. +# Redis is able to automatically rewrite the log file implicitly calling +# BGREWRITEAOF when the AOF log size grows by the specified percentage. +# +# This is how it works: Redis remembers the size of the AOF file after the +# latest rewrite (if no rewrite has happened since the restart, the size of +# the AOF at startup is used). +# +# This base size is compared to the current size. If the current size is +# bigger than the specified percentage, the rewrite is triggered. Also +# you need to specify a minimal size for the AOF file to be rewritten, this +# is useful to avoid rewriting the AOF file even if the percentage increase +# is reached but it is still pretty small. +# +# Specify a percentage of zero in order to disable the automatic AOF +# rewrite feature. + +auto-aof-rewrite-percentage 100 +auto-aof-rewrite-min-size 64mb + +################################ LUA SCRIPTING ############################### + +# Max execution time of a Lua script in milliseconds. +# +# If the maximum execution time is reached Redis will log that a script is +# still in execution after the maximum allowed time and will start to +# reply to queries with an error. +# +# When a long running script exceed the maximum execution time only the +# SCRIPT KILL and SHUTDOWN NOSAVE commands are available. The first can be +# used to stop a script that did not yet called write commands. The second +# is the only way to shut down the server in the case a write commands was +# already issue by the script but the user don't want to wait for the natural +# termination of the script. +# +# Set it to 0 or a negative value for unlimited execution without warnings. +lua-time-limit 5000 + +################################## SLOW LOG ################################### + +# The Redis Slow Log is a system to log queries that exceeded a specified +# execution time. The execution time does not include the I/O operations +# like talking with the client, sending the reply and so forth, +# but just the time needed to actually execute the command (this is the only +# stage of command execution where the thread is blocked and can not serve +# other requests in the meantime). +# +# You can configure the slow log with two parameters: one tells Redis +# what is the execution time, in microseconds, to exceed in order for the +# command to get logged, and the other parameter is the length of the +# slow log. When a new command is logged the oldest one is removed from the +# queue of logged commands. + +# The following time is expressed in microseconds, so 1000000 is equivalent +# to one second. Note that a negative number disables the slow log, while +# a value of zero forces the logging of every command. +slowlog-log-slower-than 10000 + +# There is no limit to this length. Just be aware that it will consume memory. +# You can reclaim memory used by the slow log with SLOWLOG RESET. +slowlog-max-len 128 + +############################# Event notification ############################## + +# Redis can notify Pub/Sub clients about events happening in the key space. +# This feature is documented at http://redis.io/topics/keyspace-events +# +# For instance if keyspace events notification is enabled, and a client +# performs a DEL operation on key "foo" stored in the Database 0, two +# messages will be published via Pub/Sub: +# +# PUBLISH __keyspace@0__:foo del +# PUBLISH __keyevent@0__:del foo +# +# It is possible to select the events that Redis will notify among a set +# of classes. Every class is identified by a single character: +# +# K Keyspace events, published with __keyspace@__ prefix. +# E Keyevent events, published with __keyevent@__ prefix. +# g Generic commands (non-type specific) like DEL, EXPIRE, RENAME, ... +# $ String commands +# l List commands +# s Set commands +# h Hash commands +# z Sorted set commands +# x Expired events (events generated every time a key expires) +# e Evicted events (events generated when a key is evicted for maxmemory) +# A Alias for g$lshzxe, so that the "AKE" string means all the events. +# +# The "notify-keyspace-events" takes as argument a string that is composed +# by zero or multiple characters. The empty string means that notifications +# are disabled at all. +# +# Example: to enable list and generic events, from the point of view of the +# event name, use: +# +# notify-keyspace-events Elg +# +# Example 2: to get the stream of the expired keys subscribing to channel +# name __keyevent@0__:expired use: +# +# notify-keyspace-events Ex +# +# By default all notifications are disabled because most users don't need +# this feature and the feature has some overhead. Note that if you don't +# specify at least one of K or E, no events will be delivered. +notify-keyspace-events "" + +############################### ADVANCED CONFIG ############################### + +# Hashes are encoded using a memory efficient data structure when they have a +# small number of entries, and the biggest entry does not exceed a given +# threshold. These thresholds can be configured using the following directives. +hash-max-ziplist-entries 512 +hash-max-ziplist-value 64 + +# Similarly to hashes, small lists are also encoded in a special way in order +# to save a lot of space. The special representation is only used when +# you are under the following limits: +list-max-ziplist-entries 512 +list-max-ziplist-value 64 + +# Sets have a special encoding in just one case: when a set is composed +# of just strings that happens to be integers in radix 10 in the range +# of 64 bit signed integers. +# The following configuration setting sets the limit in the size of the +# set in order to use this special memory saving encoding. +set-max-intset-entries 512 + +# Similarly to hashes and lists, sorted sets are also specially encoded in +# order to save a lot of space. This encoding is only used when the length and +# elements of a sorted set are below the following limits: +zset-max-ziplist-entries 128 +zset-max-ziplist-value 64 + +# Active rehashing uses 1 millisecond every 100 milliseconds of CPU time in +# order to help rehashing the main Redis hash table (the one mapping top-level +# keys to values). The hash table implementation Redis uses (see dict.c) +# performs a lazy rehashing: the more operation you run into an hash table +# that is rehashing, the more rehashing "steps" are performed, so if the +# server is idle the rehashing is never complete and some more memory is used +# by the hash table. +# +# The default is to use this millisecond 10 times every second in order to +# active rehashing the main dictionaries, freeing memory when possible. +# +# If unsure: +# use "activerehashing no" if you have hard latency requirements and it is +# not a good thing in your environment that Redis can reply form time to time +# to queries with 2 milliseconds delay. +# +# use "activerehashing yes" if you don't have such hard requirements but +# want to free memory asap when possible. +activerehashing yes + +# The client output buffer limits can be used to force disconnection of clients +# that are not reading data from the server fast enough for some reason (a +# common reason is that a Pub/Sub client can't consume messages as fast as the +# publisher can produce them). +# +# The limit can be set differently for the three different classes of clients: +# +# normal -> normal clients +# slave -> slave clients and MONITOR clients +# pubsub -> clients subcribed to at least one pubsub channel or pattern +# +# The syntax of every client-output-buffer-limit directive is the following: +# +# client-output-buffer-limit +# +# A client is immediately disconnected once the hard limit is reached, or if +# the soft limit is reached and remains reached for the specified number of +# seconds (continuously). +# So for instance if the hard limit is 32 megabytes and the soft limit is +# 16 megabytes / 10 seconds, the client will get disconnected immediately +# if the size of the output buffers reach 32 megabytes, but will also get +# disconnected if the client reaches 16 megabytes and continuously overcomes +# the limit for 10 seconds. +# +# By default normal clients are not limited because they don't receive data +# without asking (in a push way), but just after a request, so only +# asynchronous clients may create a scenario where data is requested faster +# than it can read. +# +# Instead there is a default limit for pubsub and slave clients, since +# subscribers and slaves receive data in a push fashion. +# +# Both the hard or the soft limit can be disabled by setting them to zero. +client-output-buffer-limit normal 0 0 0 +client-output-buffer-limit slave 256mb 64mb 60 +client-output-buffer-limit pubsub 32mb 8mb 60 + +# Redis calls an internal function to perform many background tasks, like +# closing connections of clients in timeot, purging expired keys that are +# never requested, and so forth. +# +# Not all tasks are performed with the same frequency, but Redis checks for +# tasks to perform accordingly to the specified "hz" value. +# +# By default "hz" is set to 10. Raising the value will use more CPU when +# Redis is idle, but at the same time will make Redis more responsive when +# there are many keys expiring at the same time, and timeouts may be +# handled with more precision. +# +# The range is between 1 and 500, however a value over 100 is usually not +# a good idea. Most users should use the default of 10 and raise this up to +# 100 only in environments where very low latency is required. +hz 10 + +# When a child rewrites the AOF file, if the following option is enabled +# the file will be fsync-ed every 32 MB of data generated. This is useful +# in order to commit the file to the disk more incrementally and avoid +# big latency spikes. +aof-rewrite-incremental-fsync yes + +################################## INCLUDES ################################### + +# Include one or more other config files here. This is useful if you +# have a standard template that goes to all Redis server but also need +# to customize a few per-server settings. Include files can include +# other files, so use this wisely. +# +# include /path/to/local.conf +# include /path/to/other.conf +include /etc/redis/conf.d/local.conf diff --git a/vagrant/reload-config.bat b/vagrant/reload-config.bat new file mode 100644 index 00000000..49909bd6 --- /dev/null +++ b/vagrant/reload-config.bat @@ -0,0 +1,2 @@ +cd ../ +vagrant ssh -c /vagrant/vagrant/copy-and-restart-configs.sh \ No newline at end of file diff --git a/vagrant/reload-config.vmware.bat b/vagrant/reload-config.vmware.bat new file mode 100644 index 00000000..584cb45c --- /dev/null +++ b/vagrant/reload-config.vmware.bat @@ -0,0 +1 @@ +elevator ../ vagrant ssh -c /vagrant/vagrant/copy-and-restart-configs.sh \ No newline at end of file