diff --git a/.gitignore b/.gitignore index 45dcdd0..603b2c2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,7 @@ bin/* !bin/.gitkeep config/env -composer.lock +composer.phar cache/* !cache/.gitkeep public/images/* diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..ac3870a --- /dev/null +++ b/Dockerfile @@ -0,0 +1,76 @@ +FROM alpine:3 + +LABEL maintainer="Varakh" + +# setup folder structure +RUN mkdir -p /var/www/data/snapshots && \ + mkdir -p /var/www/log && \ + touch /var/www/log/application.log && \ + mkdir -p /var/www/config + +# add upstream application +ADD src /var/www/src +ADD public /var/www/public +ADD composer.json /var/www/composer.json +ADD composer.lock /var/www/composer.lock +ADD data /var/www/data +ADD config /var/www/config +RUN mv /var/www/config/env.example /var/www/config/env + +# php.ini +ENV PHP_MEMORY_LIMIT 512M +ENV MAX_UPLOAD 1024M +ENV PHP_MAX_FILE_UPLOAD 200 +ENV PHP_MAX_POST 1024M + +# install dependencies +RUN apk add --update --no-cache \ + nginx \ + s6 \ + curl \ + git \ + composer \ + php7 \ + php7-fpm \ + php7-cli \ + php7-intl \ + php7-curl \ + php7-json \ + php7-dom \ + php7-simplexml \ + php7-pcntl \ + php7-posix \ + php7-mcrypt \ + php7-session \ + php7-gd \ + php7-phar \ + php7-fileinfo \ + php7-mbstring \ + php7-ctype \ + php7-ldap \ + php7-pecl-memcached \ + memcached \ + ca-certificates && \ + rm -rf /var/cache/apk/* && \ + apk add gnu-libiconv --update-cache --repository http://dl-cdn.alpinelinux.org/alpine/edge/community/ --allow-untrusted && \ + # set environments + sed -i "s|;*memory_limit =.*|memory_limit = ${PHP_MEMORY_LIMIT}|i" /etc/php7/php.ini && \ + sed -i "s|;*upload_max_filesize =.*|upload_max_filesize = ${MAX_UPLOAD}|i" /etc/php7/php.ini && \ + sed -i "s|;*max_file_uploads =.*|max_file_uploads = ${PHP_MAX_FILE_UPLOAD}|i" /etc/php7/php.ini && \ + sed -i "s|;*post_max_size =.*|post_max_size = ${PHP_MAX_POST}|i" /etc/php7/php.ini && \ + # prepare application + cd /var/www && composer install && \ + # clean up and permissions + rm -rf /var/cache/apk/* && \ + chown nobody:nginx -R /var/www + +# Add nginx config +ADD docker/nginx.conf /etc/nginx/nginx.conf + +EXPOSE 80 + +# add overlay +ADD docker/s6 /etc/s6/ + +# expose start +CMD exec s6-svscan /etc/s6/ diff --git a/README.md b/README.md index 59c3dcc..7326ae4 100755 --- a/README.md +++ b/README.md @@ -27,8 +27,8 @@ and include it in your TeamSpeak application. ###### I always get `no write permissions` or something similar when trying to save snapshots or when a log entry is created. This probably happens when you're in the docker setup. Ensure that host binds have permissions set up properly. -The user which is used in the docker container is `www-data` with id `82`. If, e.g. logs are host bound, then execute -`chown -R 82:82 host/path/to/log`. The same holds true for snapshots. +The user which is used in the docker container is `nobody` with id `82`. If, e.g. logs are host bound, then execute +`chown -R 65534:65534 host/path/to/log`. The same holds true for snapshots. ## Configuration @@ -106,7 +106,7 @@ services: network_mode: "host" web: container_name: teamspeak_web - image: teamspeak_web:latest + image: varakh/ts3web:latest volumes: - ./env:/var/www/html/application/config/env - ./snapshots:/var/www/html/application/data/snapshots @@ -262,7 +262,7 @@ If you're willing to contribute, here's some information. * if necessary, add GitHub access token to let composer pull dependencies within the image correctly: add `&& composer config --global --auth github-oauth.github.com \` before the `composer install` command, where `` can be retrieved from [GitHub settings](https://github.com/settings/tokens) - * execute `docker build -t varakh/ts3web:latest -t varakh/ts3web: -f docker/Dockerfile .` to build + * execute `sudo docker build --no-cache -t varakh/ts3web:latest .` to build * publish it * Tag the release git commit and create a new release in the VCS web interface diff --git a/composer.lock b/composer.lock new file mode 100644 index 0000000..2d25b27 --- /dev/null +++ b/composer.lock @@ -0,0 +1,2032 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "662470d2d1305384e645adeadeb12ad6", + "packages": [ + { + "name": "bryanjhv/slim-session", + "version": "3.6.2", + "source": { + "type": "git", + "url": "https://github.com/bryanjhv/slim-session.git", + "reference": "18728e61d12648aa7741cb269945966982be11af" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bryanjhv/slim-session/zipball/18728e61d12648aa7741cb269945966982be11af", + "reference": "18728e61d12648aa7741cb269945966982be11af", + "shasum": "" + }, + "require": { + "slim/slim": "^3.0" + }, + "require-dev": { + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bryan Horna", + "email": "bryanjhv@gmail.com", + "homepage": "https://bryanjhv.github.io", + "role": "developer" + } + ], + "description": "Session middleware and helper for Slim framework 3.", + "homepage": "https://github.com/bryanjhv/slim-session", + "keywords": [ + "helper", + "middleware", + "session", + "slim" + ], + "support": { + "issues": "https://github.com/bryanjhv/slim-session/issues", + "source": "https://github.com/bryanjhv/slim-session.git" + }, + "time": "2019-08-24T07:27:48+00:00" + }, + { + "name": "container-interop/container-interop", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/container-interop/container-interop.git", + "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/container-interop/container-interop/zipball/79cbf1341c22ec75643d841642dd5d6acd83bdb8", + "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8", + "shasum": "" + }, + "require": { + "psr/container": "^1.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Interop\\Container\\": "src/Interop/Container/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Promoting the interoperability of container objects (DIC, SL, etc.)", + "homepage": "https://github.com/container-interop/container-interop", + "support": { + "issues": "https://github.com/container-interop/container-interop/issues", + "source": "https://github.com/container-interop/container-interop/tree/master" + }, + "abandoned": "psr/container", + "time": "2017-02-14T19:40:03+00:00" + }, + { + "name": "ircmaxell/password-compat", + "version": "v1.0.4", + "source": { + "type": "git", + "url": "https://github.com/ircmaxell/password_compat.git", + "reference": "5c5cde8822a69545767f7c7f3058cb15ff84614c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ircmaxell/password_compat/zipball/5c5cde8822a69545767f7c7f3058cb15ff84614c", + "reference": "5c5cde8822a69545767f7c7f3058cb15ff84614c", + "shasum": "" + }, + "require-dev": { + "phpunit/phpunit": "4.*" + }, + "type": "library", + "autoload": { + "files": [ + "lib/password.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Anthony Ferrara", + "email": "ircmaxell@php.net", + "homepage": "http://blog.ircmaxell.com" + } + ], + "description": "A compatibility library for the proposed simplified password hashing algorithm: https://wiki.php.net/rfc/password_hash", + "homepage": "https://github.com/ircmaxell/password_compat", + "keywords": [ + "hashing", + "password" + ], + "support": { + "issues": "https://github.com/ircmaxell/password_compat/issues", + "source": "https://github.com/ircmaxell/password_compat/tree/v1.0" + }, + "time": "2014-11-20T16:49:30+00:00" + }, + { + "name": "jeremykendall/password-validator", + "version": "3.0.4", + "source": { + "type": "git", + "url": "https://github.com/jeremykendall/password-validator.git", + "reference": "d587cda384a4e272ae979c1271eb74559b02f401" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jeremykendall/password-validator/zipball/d587cda384a4e272ae979c1271eb74559b02f401", + "reference": "d587cda384a4e272ae979c1271eb74559b02f401", + "shasum": "" + }, + "require": { + "ircmaxell/password-compat": "1.*", + "php": ">=5.3.7", + "wp-cli/php-cli-tools": "0.10.*" + }, + "require-dev": { + "league/phpunit-coverage-listener": "~1.1", + "phpunit/phpunit": "4.*" + }, + "bin": [ + "bin/cost-check", + "bin/version-check" + ], + "type": "library", + "autoload": { + "psr-0": { + "JeremyKendall\\Password\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jeremy Kendall", + "homepage": "http://about.me/jeremykendall", + "role": "Developer" + } + ], + "description": "Password Validator validates password_hash generated passwords, rehashes passwords as necessary, and will upgrade legacy passwords.", + "homepage": "https://github.com/jeremykendall/password-validator", + "keywords": [ + "password", + "password validation", + "password validator", + "password_hash", + "passwords", + "security" + ], + "support": { + "issues": "https://github.com/jeremykendall/password-validator/issues", + "source": "https://github.com/jeremykendall/password-validator" + }, + "time": "2016-01-26T11:36:57+00:00" + }, + { + "name": "jeremykendall/slim-auth", + "version": "dev-slim-3.x", + "source": { + "type": "git", + "url": "https://github.com/jeremykendall/slim-auth.git", + "reference": "461f429588c4cf91a6a63482e36bac69b662f3c6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jeremykendall/slim-auth/zipball/461f429588c4cf91a6a63482e36bac69b662f3c6", + "reference": "461f429588c4cf91a6a63482e36bac69b662f3c6", + "shasum": "" + }, + "require": { + "jeremykendall/password-validator": "3.*", + "php": ">=5.5.0", + "zendframework/zend-authentication": "2.*", + "zendframework/zend-permissions-acl": "2.*", + "zendframework/zend-session": "2.*" + }, + "require-dev": { + "jeremykendall/debug-die": "0.0.1.*", + "phpunit/phpunit": "4.*", + "slim/slim": "^3.0" + }, + "suggest": { + "zendframework/zend-db": "For the Zend\\Authentication\\Adapter\\DbTable adapters." + }, + "type": "library", + "autoload": { + "psr-4": { + "JeremyKendall\\Slim\\Auth\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jeremy Kendall", + "homepage": "http://about.me/jeremykendall", + "role": "Developer" + } + ], + "description": "Authorization and authentication for the Slim Framework using ZF2 Authentication and Acl components", + "homepage": "https://github.com/jeremykendall/slim-auth", + "keywords": [ + "Authentication", + "Zend Framework", + "auth", + "authorization", + "slim", + "slim framework", + "zend", + "zf2" + ], + "support": { + "issues": "https://github.com/jeremykendall/slim-auth/issues", + "source": "https://github.com/jeremykendall/slim-auth" + }, + "time": "2016-01-23T15:17:28+00:00" + }, + { + "name": "monolog/monolog", + "version": "1.25.1", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "70e65a5470a42cfec1a7da00d30edb6e617e8dcf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/70e65a5470a42cfec1a7da00d30edb6e617e8dcf", + "reference": "70e65a5470a42cfec1a7da00d30edb6e617e8dcf", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "psr/log": "~1.0" + }, + "provide": { + "psr/log-implementation": "1.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^2.4.9 || ^3.0", + "doctrine/couchdb": "~1.0@dev", + "graylog2/gelf-php": "~1.0", + "jakub-onderka/php-parallel-lint": "0.9", + "php-amqplib/php-amqplib": "~2.4", + "php-console/php-console": "^3.1.3", + "phpunit/phpunit": "~4.5", + "phpunit/phpunit-mock-objects": "2.3.0", + "ruflin/elastica": ">=0.90 <3.0", + "sentry/sentry": "^0.13", + "swiftmailer/swiftmailer": "^5.3|^6.0" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-mongo": "Allow sending log messages to a MongoDB server", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "php-console/php-console": "Allow sending log messages to Google Chrome", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server", + "sentry/sentry": "Allow sending log messages to a Sentry server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "http://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "support": { + "issues": "https://github.com/Seldaek/monolog/issues", + "source": "https://github.com/Seldaek/monolog/tree/1.x" + }, + "time": "2019-09-06T13:49:17+00:00" + }, + { + "name": "nesbot/carbon", + "version": "2.26.0", + "source": { + "type": "git", + "url": "https://github.com/briannesbitt/Carbon.git", + "reference": "e01ecc0b71168febb52ae1fdc1cfcc95428e604e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/e01ecc0b71168febb52ae1fdc1cfcc95428e604e", + "reference": "e01ecc0b71168febb52ae1fdc1cfcc95428e604e", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": "^7.1.8 || ^8.0", + "symfony/translation": "^3.4 || ^4.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.14 || ^3.0", + "kylekatarnls/multi-tester": "^1.1", + "phpmd/phpmd": "dev-php-7.1-compatibility", + "phpstan/phpstan": "^0.11", + "phpunit/phpunit": "^7.5 || ^8.0", + "squizlabs/php_codesniffer": "^3.4" + }, + "bin": [ + "bin/carbon" + ], + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Carbon\\Laravel\\ServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Carbon\\": "src/Carbon/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brian Nesbitt", + "email": "brian@nesbot.com", + "homepage": "http://nesbot.com" + }, + { + "name": "kylekatarnls", + "homepage": "http://github.com/kylekatarnls" + } + ], + "description": "An API extension for DateTime that supports 281 different languages.", + "homepage": "http://carbon.nesbot.com", + "keywords": [ + "date", + "datetime", + "time" + ], + "support": { + "issues": "https://github.com/briannesbitt/Carbon/issues", + "source": "https://github.com/briannesbitt/Carbon" + }, + "time": "2019-10-21T21:32:25+00:00" + }, + { + "name": "nikic/fast-route", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/FastRoute.git", + "reference": "181d480e08d9476e61381e04a71b34dc0432e812" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/FastRoute/zipball/181d480e08d9476e61381e04a71b34dc0432e812", + "reference": "181d480e08d9476e61381e04a71b34dc0432e812", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35|~5.7" + }, + "type": "library", + "autoload": { + "psr-4": { + "FastRoute\\": "src/" + }, + "files": [ + "src/functions.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov", + "email": "nikic@php.net" + } + ], + "description": "Fast request router for PHP", + "keywords": [ + "router", + "routing" + ], + "support": { + "issues": "https://github.com/nikic/FastRoute/issues", + "source": "https://github.com/nikic/FastRoute/tree/master" + }, + "time": "2018-02-13T20:26:39+00:00" + }, + { + "name": "par0noid/ts3admin", + "version": "1.0.2.5", + "source": { + "type": "git", + "url": "https://github.com/par0noid/ts3admin.class.git", + "reference": "f852f31547e68330e3b244425378be3db08a14a7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/par0noid/ts3admin.class/zipball/f852f31547e68330e3b244425378be3db08a14a7", + "reference": "f852f31547e68330e3b244425378be3db08a14a7", + "shasum": "" + }, + "require": { + "php": ">=5.0.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "lib/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-3.0" + ], + "authors": [ + { + "name": "Stefan 'par0noid' Zehnpfennig", + "homepage": "https://github.com/par0noid", + "role": "Developer" + }, + { + "name": "GitHub Contributors", + "homepage": "https://github.com/par0noid/ts3admin.class/graphs/contributors", + "role": "Developer" + } + ], + "description": "The ts3admin.class is a powerful api for communication with Teamspeak 3 Servers from your website! Your creativity knows no bounds!", + "homepage": "https://github.com/par0noid/ts3admin.class", + "keywords": [ + "admin", + "teamspeak", + "teamspeak3", + "ts3", + "ts3admin" + ], + "support": { + "issues": "https://github.com/par0noid/ts3admin.class/issues", + "source": "https://github.com/par0noid/ts3admin.class/tree/master" + }, + "abandoned": true, + "time": "2018-08-30T05:50:49+00:00" + }, + { + "name": "pimple/pimple", + "version": "v3.3.1", + "source": { + "type": "git", + "url": "https://github.com/silexphp/Pimple.git", + "reference": "21e45061c3429b1e06233475cc0e1f6fc774d5b0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/silexphp/Pimple/zipball/21e45061c3429b1e06233475cc0e1f6fc774d5b0", + "reference": "21e45061c3429b1e06233475cc0e1f6fc774d5b0", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/container": "^1.0" + }, + "require-dev": { + "symfony/phpunit-bridge": "^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.3.x-dev" + } + }, + "autoload": { + "psr-0": { + "Pimple": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Pimple, a simple Dependency Injection Container", + "homepage": "https://pimple.symfony.com", + "keywords": [ + "container", + "dependency injection" + ], + "support": { + "source": "https://github.com/silexphp/Pimple/tree/v3.3.1" + }, + "time": "2020-11-24T20:35:42+00:00" + }, + { + "name": "planetteamspeak/ts3-php-framework", + "version": "1.1.33", + "source": { + "type": "git", + "url": "https://github.com/planetteamspeak/ts3phpframework.git", + "reference": "fb08150b1785bfd0c135f9a337d23be42344b46c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/planetteamspeak/ts3phpframework/zipball/fb08150b1785bfd0c135f9a337d23be42344b46c", + "reference": "fb08150b1785bfd0c135f9a337d23be42344b46c", + "shasum": "" + }, + "require": { + "php": ">=5.2.1" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.0.0", + "phpunit/phpunit": "^4.8.35 || ^5.4.3 || ^6.0 || ^7.0", + "react/socket": "^0.8.5", + "satooshi/php-coveralls": "^1.1 || ^2.0", + "symfony/yaml": "~2.1|~3.0|~4.0" + }, + "type": "library", + "autoload": { + "files": [ + "libraries/TeamSpeak3/TeamSpeak3.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-3.0" + ], + "authors": [ + { + "name": "Sven 'ScP' Paulsen", + "email": "scp@planetteamspeak.com" + } + ], + "description": "Modern use-at-will framework that provides individual components to manage TeamSpeak 3 Server instances", + "homepage": "https://www.planetteamspeak.com", + "keywords": [ + "api", + "filetransfer", + "interface", + "management", + "query", + "server", + "teamspeak", + "ts3" + ], + "support": { + "docs": "https://docs.planetteamspeak.com/ts3/php/framework", + "email": "info@planetteamspeak.com", + "issues": "https://github.com/planetteamspeak/ts3phpframework/issues", + "source": "https://github.com/planetteamspeak/ts3phpframework/tree/1.1.33" + }, + "time": "2018-08-03T11:46:37+00:00" + }, + { + "name": "psr/container", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/master" + }, + "time": "2017-02-14T16:28:37+00:00" + }, + { + "name": "psr/http-message", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-message/tree/master" + }, + "time": "2016-08-06T14:39:51+00:00" + }, + { + "name": "psr/log", + "version": "1.1.3", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", + "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "support": { + "source": "https://github.com/php-fig/log/tree/1.1.3" + }, + "time": "2020-03-23T09:12:05+00:00" + }, + { + "name": "slim/flash", + "version": "0.1.0", + "source": { + "type": "git", + "url": "https://github.com/slimphp/Slim-Flash.git", + "reference": "1995ed53b77b8eeb67adf032de93c319f76aa5cd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/slimphp/Slim-Flash/zipball/1995ed53b77b8eeb67adf032de93c319f76aa5cd", + "reference": "1995ed53b77b8eeb67adf032de93c319f76aa5cd", + "shasum": "" + }, + "require": { + "php": ">=5.5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Slim\\Flash\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Josh Lockhart", + "email": "hello@joshlockhart.com", + "homepage": "http://joshlockhart.com" + } + ], + "description": "Slim Framework Flash message service provider", + "homepage": "http://slimframework.com", + "keywords": [ + "flash", + "framework", + "message", + "provider", + "slim" + ], + "support": { + "issues": "https://github.com/slimphp/Slim-Flash/issues", + "source": "https://github.com/slimphp/Slim-Flash/tree/master" + }, + "time": "2015-08-16T22:49:06+00:00" + }, + { + "name": "slim/slim", + "version": "3.12.2", + "source": { + "type": "git", + "url": "https://github.com/slimphp/Slim.git", + "reference": "200c6143f15baa477601879b64ab2326847aac0b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/slimphp/Slim/zipball/200c6143f15baa477601879b64ab2326847aac0b", + "reference": "200c6143f15baa477601879b64ab2326847aac0b", + "shasum": "" + }, + "require": { + "container-interop/container-interop": "^1.2", + "ext-json": "*", + "ext-libxml": "*", + "ext-simplexml": "*", + "nikic/fast-route": "^1.0", + "php": ">=5.5.0", + "pimple/pimple": "^3.0", + "psr/container": "^1.0", + "psr/http-message": "^1.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0", + "squizlabs/php_codesniffer": "^2.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Slim\\": "Slim" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Josh Lockhart", + "email": "hello@joshlockhart.com", + "homepage": "https://joshlockhart.com" + }, + { + "name": "Andrew Smith", + "email": "a.smith@silentworks.co.uk", + "homepage": "http://silentworks.co.uk" + }, + { + "name": "Rob Allen", + "email": "rob@akrabat.com", + "homepage": "http://akrabat.com" + }, + { + "name": "Gabriel Manricks", + "email": "gmanricks@me.com", + "homepage": "http://gabrielmanricks.com" + } + ], + "description": "Slim is a PHP micro framework that helps you quickly write simple yet powerful web applications and APIs", + "homepage": "https://slimframework.com", + "keywords": [ + "api", + "framework", + "micro", + "router" + ], + "support": { + "issues": "https://github.com/slimphp/Slim/issues", + "source": "https://github.com/slimphp/Slim/tree/3.12.2" + }, + "time": "2019-08-20T18:46:05+00:00" + }, + { + "name": "slim/twig-view", + "version": "2.5.0", + "source": { + "type": "git", + "url": "https://github.com/slimphp/Twig-View.git", + "reference": "06ef39b58d60b11a9546893fd0b7fff2bd901798" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/slimphp/Twig-View/zipball/06ef39b58d60b11a9546893fd0b7fff2bd901798", + "reference": "06ef39b58d60b11a9546893fd0b7fff2bd901798", + "shasum": "" + }, + "require": { + "php": ">=5.5.0", + "psr/http-message": "^1.0", + "twig/twig": "^1.38|^2.7" + }, + "require-dev": { + "phpunit/phpunit": "^4.8|^5.7", + "slim/slim": "^3.10" + }, + "type": "library", + "autoload": { + "psr-4": { + "Slim\\Views\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Josh Lockhart", + "email": "hello@joshlockhart.com", + "homepage": "http://joshlockhart.com" + } + ], + "description": "Slim Framework 3 view helper built on top of the Twig 2 templating component", + "homepage": "http://slimframework.com", + "keywords": [ + "framework", + "slim", + "template", + "twig", + "view" + ], + "support": { + "issues": "https://github.com/slimphp/Twig-View/issues", + "source": "https://github.com/slimphp/Twig-View/tree/2.5.0" + }, + "time": "2019-04-06T16:34:38+00:00" + }, + { + "name": "symfony/filesystem", + "version": "v4.3.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "9abbb7ef96a51f4d7e69627bc6f63307994e4263" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/9abbb7ef96a51f4d7e69627bc6f63307994e4263", + "reference": "9abbb7ef96a51f4d7e69627bc6f63307994e4263", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/polyfill-ctype": "~1.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.3-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Filesystem Component", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/filesystem/tree/4.3" + }, + "time": "2019-08-20T14:07:54+00:00" + }, + { + "name": "symfony/finder", + "version": "v4.3.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "72a068f77e317ae77c0a0495236ad292cfb5ce6f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/72a068f77e317ae77c0a0495236ad292cfb5ce6f", + "reference": "72a068f77e317ae77c0a0495236ad292cfb5ce6f", + "shasum": "" + }, + "require": { + "php": "^7.1.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.3-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Finder Component", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/finder/tree/v4.3.6" + }, + "time": "2019-10-30T12:53:54+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.22.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "c6c942b1ac76c82448322025e084cadc56048b4e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/c6c942b1ac76c82448322025e084cadc56048b4e", + "reference": "c6c942b1ac76c82448322025e084cadc56048b4e", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.22-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.22.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-01-07T16:49:33+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.22.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "f377a3dd1fde44d37b9831d68dc8dea3ffd28e13" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/f377a3dd1fde44d37b9831d68dc8dea3ffd28e13", + "reference": "f377a3dd1fde44d37b9831d68dc8dea3ffd28e13", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.22-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.22.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-01-07T16:49:33+00:00" + }, + { + "name": "symfony/translation", + "version": "v3.4.33", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "2031c895bc97ac1787d418d90bd1ed7d299f2772" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/2031c895bc97ac1787d418d90bd1ed7d299f2772", + "reference": "2031c895bc97ac1787d418d90bd1ed7d299f2772", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/config": "<2.8", + "symfony/dependency-injection": "<3.4", + "symfony/yaml": "<3.4" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~2.8|~3.0|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/finder": "~2.8|~3.0|~4.0", + "symfony/http-kernel": "~3.4|~4.0", + "symfony/intl": "^2.8.18|^3.2.5|~4.0", + "symfony/var-dumper": "~3.4|~4.0", + "symfony/yaml": "~3.4|~4.0" + }, + "suggest": { + "psr/log-implementation": "To use logging capability in translator", + "symfony/config": "", + "symfony/yaml": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Translation Component", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/translation/tree/v3.4.33" + }, + "time": "2019-10-30T12:43:22+00:00" + }, + { + "name": "symfony/twig-bridge", + "version": "v3.4.33", + "source": { + "type": "git", + "url": "https://github.com/symfony/twig-bridge.git", + "reference": "a2fa4d04a4f22c8abf7d12188d89510e2e9bd1c1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/a2fa4d04a4f22c8abf7d12188d89510e2e9bd1c1", + "reference": "a2fa4d04a4f22c8abf7d12188d89510e2e9bd1c1", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8", + "twig/twig": "^1.41|^2.10" + }, + "conflict": { + "symfony/console": "<3.4", + "symfony/form": "<3.4.31|>=4.0,<4.3.4" + }, + "require-dev": { + "fig/link-util": "^1.0", + "symfony/asset": "~2.8|~3.0|~4.0", + "symfony/console": "~3.4|~4.0", + "symfony/dependency-injection": "~2.8|~3.0|~4.0", + "symfony/expression-language": "~2.8|~3.0|~4.0", + "symfony/finder": "~2.8|~3.0|~4.0", + "symfony/form": "^3.4.31|^4.3.4", + "symfony/http-foundation": "^3.3.11|~4.0", + "symfony/http-kernel": "~3.2|~4.0", + "symfony/polyfill-intl-icu": "~1.0", + "symfony/routing": "~2.8|~3.0|~4.0", + "symfony/security": "^2.8.31|^3.3.13|~4.0", + "symfony/security-acl": "~2.8|~3.0", + "symfony/stopwatch": "~2.8|~3.0|~4.0", + "symfony/templating": "~2.8|~3.0|~4.0", + "symfony/translation": "~2.8|~3.0|~4.0", + "symfony/var-dumper": "~2.8.10|~3.1.4|~3.2|~4.0", + "symfony/web-link": "~3.3|~4.0", + "symfony/workflow": "~3.3|~4.0", + "symfony/yaml": "~2.8|~3.0|~4.0" + }, + "suggest": { + "symfony/asset": "For using the AssetExtension", + "symfony/expression-language": "For using the ExpressionExtension", + "symfony/finder": "", + "symfony/form": "For using the FormExtension", + "symfony/http-kernel": "For using the HttpKernelExtension", + "symfony/routing": "For using the RoutingExtension", + "symfony/security": "For using the SecurityExtension", + "symfony/stopwatch": "For using the StopwatchExtension", + "symfony/templating": "For using the TwigEngine", + "symfony/translation": "For using the TranslationExtension", + "symfony/var-dumper": "For using the DumpExtension", + "symfony/web-link": "For using the WebLinkExtension", + "symfony/yaml": "For using the YamlExtension" + }, + "type": "symfony-bridge", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Bridge\\Twig\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Twig Bridge", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/twig-bridge/tree/v3.4.33" + }, + "time": "2019-10-24T15:33:53+00:00" + }, + { + "name": "symfony/yaml", + "version": "v4.3.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "324cf4b19c345465fad14f3602050519e09e361d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/324cf4b19c345465fad14f3602050519e09e361d", + "reference": "324cf4b19c345465fad14f3602050519e09e361d", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "symfony/console": "<3.4" + }, + "require-dev": { + "symfony/console": "~3.4|~4.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.3-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Yaml Component", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/yaml/tree/v4.3.6" + }, + "time": "2019-10-30T12:58:49+00:00" + }, + { + "name": "twig/twig", + "version": "v2.14.3", + "source": { + "type": "git", + "url": "https://github.com/twigphp/Twig.git", + "reference": "8bc568d460d88b25c00c046256ec14a787ea60d9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/8bc568d460d88b25c00c046256ec14a787ea60d9", + "reference": "8bc568d460d88b25c00c046256ec14a787ea60d9", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-mbstring": "^1.3" + }, + "require-dev": { + "psr/container": "^1.0", + "symfony/phpunit-bridge": "^4.4.9|^5.0.9" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.14-dev" + } + }, + "autoload": { + "psr-0": { + "Twig_": "lib/" + }, + "psr-4": { + "Twig\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + }, + { + "name": "Twig Team", + "role": "Contributors" + }, + { + "name": "Armin Ronacher", + "email": "armin.ronacher@active-4.com", + "role": "Project Founder" + } + ], + "description": "Twig, the flexible, fast, and secure template language for PHP", + "homepage": "https://twig.symfony.com", + "keywords": [ + "templating" + ], + "support": { + "issues": "https://github.com/twigphp/Twig/issues", + "source": "https://github.com/twigphp/Twig/tree/v2.14.3" + }, + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "type": "tidelift" + } + ], + "time": "2021-01-05T15:34:33+00:00" + }, + { + "name": "vlucas/phpdotenv", + "version": "v2.6.1", + "source": { + "type": "git", + "url": "https://github.com/vlucas/phpdotenv.git", + "reference": "2a7dcf7e3e02dc5e701004e51a6f304b713107d5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/2a7dcf7e3e02dc5e701004e51a6f304b713107d5", + "reference": "2a7dcf7e3e02dc5e701004e51a6f304b713107d5", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "symfony/polyfill-ctype": "^1.9" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Dotenv\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Vance Lucas", + "email": "vance@vancelucas.com", + "homepage": "http://www.vancelucas.com" + } + ], + "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", + "keywords": [ + "dotenv", + "env", + "environment" + ], + "support": { + "issues": "https://github.com/vlucas/phpdotenv/issues", + "source": "https://github.com/vlucas/phpdotenv/tree/2.6" + }, + "time": "2019-01-29T11:11:52+00:00" + }, + { + "name": "wixel/gump", + "version": "v1.5.7", + "source": { + "type": "git", + "url": "https://github.com/Wixel/GUMP.git", + "reference": "b32c92206fb7014a40179b8468ba8bab90b3f879" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Wixel/GUMP/zipball/b32c92206fb7014a40179b8468ba8bab90b3f879", + "reference": "b32c92206fb7014a40179b8468ba8bab90b3f879", + "shasum": "" + }, + "type": "library", + "autoload": { + "files": [ + "gump.class.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Sean Nieuwoudt", + "homepage": "https://wixelhq.com" + }, + { + "name": "Filis Futsarov", + "homepage": "https://filis.me" + } + ], + "description": "A fast, extensible & stand-alone PHP input validation class that allows you to validate any data", + "homepage": "https://wixelhq.com/", + "support": { + "issues": "https://github.com/Wixel/GUMP/issues", + "source": "https://github.com/Wixel/GUMP/tree/master" + }, + "time": "2018-06-02T23:09:34+00:00" + }, + { + "name": "wp-cli/php-cli-tools", + "version": "v0.10.5", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/php-cli-tools.git", + "reference": "037a010441a5c220cd1df26cdc9b20ad73408356" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/php-cli-tools/zipball/037a010441a5c220cd1df26cdc9b20ad73408356", + "reference": "037a010441a5c220cd1df26cdc9b20ad73408356", + "shasum": "" + }, + "require": { + "php": ">= 5.3.0" + }, + "type": "library", + "autoload": { + "psr-0": { + "cli": "lib/" + }, + "files": [ + "lib/cli/cli.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "James Logsdon", + "email": "jlogsdon@php.net", + "role": "Developer" + }, + { + "name": "Daniel Bachhuber", + "email": "daniel@handbuilt.co", + "role": "Maintainer" + } + ], + "description": "Console utilities for PHP", + "homepage": "http://github.com/wp-cli/php-cli-tools", + "keywords": [ + "cli", + "console" + ], + "support": { + "issues": "https://github.com/wp-cli/php-cli-tools/issues", + "source": "https://github.com/wp-cli/php-cli-tools/tree/v0.10.5" + }, + "time": "2015-08-10T12:46:19+00:00" + }, + { + "name": "zendframework/zend-authentication", + "version": "2.7.0", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-authentication.git", + "reference": "1f379f6384fca34b3bfe94d953abd65e9e7ee746" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-authentication/zipball/1f379f6384fca34b3bfe94d953abd65e9e7ee746", + "reference": "1f379f6384fca34b3bfe94d953abd65e9e7ee746", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0", + "zendframework/zend-stdlib": "^3.2.1" + }, + "require-dev": { + "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-crypt": "^2.6 || ^3.2.1", + "zendframework/zend-db": "^2.8.2", + "zendframework/zend-http": "^2.7", + "zendframework/zend-ldap": "^2.8", + "zendframework/zend-session": "^2.8", + "zendframework/zend-uri": "^2.5.2", + "zendframework/zend-validator": "^2.10.1" + }, + "suggest": { + "zendframework/zend-crypt": "Zend\\Crypt component", + "zendframework/zend-db": "Zend\\Db component", + "zendframework/zend-http": "Zend\\Http component", + "zendframework/zend-ldap": "Zend\\Ldap component", + "zendframework/zend-session": "Zend\\Session component", + "zendframework/zend-uri": "Zend\\Uri component", + "zendframework/zend-validator": "Zend\\Validator component" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7.x-dev", + "dev-develop": "2.8.x-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Authentication\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "provides an API for authentication and includes concrete authentication adapters for common use case scenarios", + "keywords": [ + "Authentication", + "ZendFramework", + "zf" + ], + "support": { + "docs": "https://docs.zendframework.com/zend-authentication/", + "forum": "https://discourse.zendframework.com/c/questions/components", + "issues": "https://github.com/zendframework/zend-authentication/issues", + "rss": "https://github.com/zendframework/zend-authentication/releases.atom", + "slack": "https://zendframework-slack.herokuapp.com", + "source": "https://github.com/zendframework/zend-authentication" + }, + "abandoned": "laminas/laminas-authentication", + "time": "2019-05-14T18:06:07+00:00" + }, + { + "name": "zendframework/zend-eventmanager", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-eventmanager.git", + "reference": "a5e2583a211f73604691586b8406ff7296a946dd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-eventmanager/zipball/a5e2583a211f73604691586b8406ff7296a946dd", + "reference": "a5e2583a211f73604691586b8406ff7296a946dd", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "athletic/athletic": "^0.1", + "container-interop/container-interop": "^1.1.0", + "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-stdlib": "^2.7.3 || ^3.0" + }, + "suggest": { + "container-interop/container-interop": "^1.1.0, to use the lazy listeners feature", + "zendframework/zend-stdlib": "^2.7.3 || ^3.0, to use the FilterChain feature" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2-dev", + "dev-develop": "3.3-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\EventManager\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Trigger and listen to events within a PHP application", + "homepage": "https://github.com/zendframework/zend-eventmanager", + "keywords": [ + "event", + "eventmanager", + "events", + "zf2" + ], + "support": { + "issues": "https://github.com/zendframework/zend-eventmanager/issues", + "source": "https://github.com/zendframework/zend-eventmanager/tree/master" + }, + "abandoned": "laminas/laminas-eventmanager", + "time": "2018-04-25T15:33:34+00:00" + }, + { + "name": "zendframework/zend-permissions-acl", + "version": "2.7.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-permissions-acl.git", + "reference": "1323e30a9357e6f6956f63d97faf7e8c8db1f4f8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-permissions-acl/zipball/1323e30a9357e6f6956f63d97faf7e8c8db1f4f8", + "reference": "1323e30a9357e6f6956f63d97faf7e8c8db1f4f8", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.5", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3" + }, + "suggest": { + "zendframework/zend-servicemanager": "To support Zend\\Permissions\\Acl\\Assertion\\AssertionManager plugin manager usage" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7.x-dev", + "dev-develop": "2.8.x-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Permissions\\Acl\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Provides a lightweight and flexible access control list (ACL) implementation for privileges management", + "keywords": [ + "ZendFramework", + "acl", + "zf" + ], + "support": { + "chat": "https://zendframework-slack.herokuapp.com", + "docs": "https://docs.zendframework.com/zend-permissions-acl/", + "forum": "https://discourse.zendframework.com/c/questions/components", + "issues": "https://github.com/zendframework/zend-permissions-acl/issues", + "rss": "https://github.com/zendframework/zend-permissions-acl/releases.atom", + "source": "https://github.com/zendframework/zend-permissions-acl" + }, + "abandoned": "laminas/laminas-permissions-acl", + "time": "2019-06-25T08:09:22+00:00" + }, + { + "name": "zendframework/zend-session", + "version": "2.9.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-session.git", + "reference": "c289c4d733ec23a389e25c7c451f4d062088511f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-session/zipball/c289c4d733ec23a389e25c7c451f4d062088511f", + "reference": "c289c4d733ec23a389e25c7c451f4d062088511f", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0", + "zendframework/zend-eventmanager": "^2.6.2 || ^3.0", + "zendframework/zend-stdlib": "^3.2.1" + }, + "require-dev": { + "container-interop/container-interop": "^1.1", + "mongodb/mongodb": "^1.0.1", + "php-mock/php-mock-phpunit": "^1.1.2 || ^2.0", + "phpunit/phpunit": "^5.7.27 || ^6.5.14 || ^7.5.16", + "zendframework/zend-cache": "^2.6.1", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-db": "^2.7", + "zendframework/zend-http": "^2.5.4", + "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3", + "zendframework/zend-validator": "^2.6" + }, + "suggest": { + "mongodb/mongodb": "If you want to use the MongoDB session save handler", + "zendframework/zend-cache": "Zend\\Cache component", + "zendframework/zend-db": "Zend\\Db component", + "zendframework/zend-http": "Zend\\Http component", + "zendframework/zend-servicemanager": "Zend\\ServiceManager component", + "zendframework/zend-validator": "Zend\\Validator component" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.9.x-dev", + "dev-develop": "2.10.x-dev" + }, + "zf": { + "component": "Zend\\Session", + "config-provider": "Zend\\Session\\ConfigProvider" + } + }, + "autoload": { + "psr-4": { + "Zend\\Session\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Object-oriented interface to PHP sessions and storage", + "keywords": [ + "ZendFramework", + "session", + "zf" + ], + "support": { + "chat": "https://zendframework-slack.herokuapp.com", + "docs": "https://docs.zendframework.com/zend-session/", + "forum": "https://discourse.zendframework.com/c/questions/components", + "issues": "https://github.com/zendframework/zend-session/issues", + "rss": "https://github.com/zendframework/zend-session/releases.atom", + "source": "https://github.com/zendframework/zend-session" + }, + "abandoned": "laminas/laminas-session", + "time": "2019-10-28T19:40:43+00:00" + }, + { + "name": "zendframework/zend-stdlib", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-stdlib.git", + "reference": "66536006722aff9e62d1b331025089b7ec71c065" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-stdlib/zipball/66536006722aff9e62d1b331025089b7ec71c065", + "reference": "66536006722aff9e62d1b331025089b7ec71c065", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpbench/phpbench": "^0.13", + "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2", + "zendframework/zend-coding-standard": "~1.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2.x-dev", + "dev-develop": "3.3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Stdlib\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "SPL extensions, array utilities, error handlers, and more", + "keywords": [ + "ZendFramework", + "stdlib", + "zf" + ], + "support": { + "docs": "https://docs.zendframework.com/zend-stdlib/", + "forum": "https://discourse.zendframework.com/c/questions/components", + "issues": "https://github.com/zendframework/zend-stdlib/issues", + "rss": "https://github.com/zendframework/zend-stdlib/releases.atom", + "slack": "https://zendframework-slack.herokuapp.com", + "source": "https://github.com/zendframework/zend-stdlib" + }, + "abandoned": "laminas/laminas-stdlib", + "time": "2018-08-28T21:34:05+00:00" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": { + "jeremykendall/slim-auth": 20 + }, + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": ">= 7.3" + }, + "platform-dev": [], + "plugin-api-version": "2.0.0" +} diff --git a/docker/Dockerfile b/docker/Dockerfile deleted file mode 100644 index 5bb46f8..0000000 --- a/docker/Dockerfile +++ /dev/null @@ -1,26 +0,0 @@ -FROM phpearth/php:7.4-nginx - -# install deps -RUN apk add --no-cache git \ - && apk add --no-cache composer - -# adjust nginx -COPY docker/default.conf /etc/nginx/conf.d/default.conf -COPY docker/nginx.conf /etc/nginx/nginx.conf -RUN sed -i "s|upload_max_filesize = 2M|upload_max_filesize = 1024M|g" /etc/php/7.4/php.ini \ - && sed -i "s|post_max_size = 8M|post_max_size = 1024M|g" /etc/php/7.4/php.ini \ - && sed -i "s|max_execution_time = 30|max_execution_time = 86400|g" /etc/php/7.4/php.ini - -# copy application and set permissions -COPY config/ /var/www/html/application/config/ -COPY data/ /var/www/html/application/data/ -COPY public/ /var/www/html/application/public/ -COPY src/ /var/www/html/application/src/ -COPY composer.json /var/www/html/application/composer.json -RUN mkdir -p /var/www/html/application/bin/ \ - && mkdir -p /var/www/html/application/cache/ \ - && chown -R www-data:www-data /var/www/html/application - -# initialize app -RUN cd /var/www/html/application/ \ - && composer install \ No newline at end of file diff --git a/docker/default.conf b/docker/default.conf deleted file mode 100644 index 4a3c772..0000000 --- a/docker/default.conf +++ /dev/null @@ -1,30 +0,0 @@ -# copied to /etc/nginx/conf.d/default.conf -server { - listen 80 default_server; - - root /var/www/html/application/public; - - index index.html index.htm index.php; - - server_name _; - - charset utf-8; - - location = /favicon.ico { log_not_found off; access_log off; } - location = /robots.txt { log_not_found off; access_log off; } - - location / { - try_files $uri $uri/ /index.php$is_args$args; - } - - location ~ \.php$ { - fastcgi_pass unix:/run/php/php-fpm.sock; - include fastcgi.conf; - } - - error_page 404 /index.php; - - location ~ /\.ht { - deny all; - } -} diff --git a/docker/nginx.conf b/docker/nginx.conf index a560d80..8052611 100644 --- a/docker/nginx.conf +++ b/docker/nginx.conf @@ -1,96 +1,41 @@ -# /etc/nginx/nginx.conf - -user nginx; - -# Set number of worker processes automatically based on number of CPU cores. -worker_processes auto; - -# Enables the use of JIT for regular expressions to speed-up their processing. -pcre_jit on; - -# Configures default error logger. -error_log /var/log/nginx/error.log warn; - -# Includes files with directives to load dynamic modules. -include /etc/nginx/modules/*.conf; - +daemon off; +pid /run/nginx.pid; +worker_processes 1; events { - # The maximum number of simultaneous connections that can be opened by - # a worker process. - worker_connections 1024; + worker_connections 1024; } http { - # Includes mapping of file name extensions to MIME types of responses - # and defines the default type. - include /etc/nginx/mime.types; - default_type application/octet-stream; + include mime.types; + default_type application/octet-stream; - # Name servers used to resolve names of upstream servers into addresses. - # It's also needed when using tcpsocket and udpsocket in Lua modules. - #resolver 208.67.222.222 208.67.220.220; + sendfile on; + keepalive_timeout 65; + gzip off; + client_max_body_size 0; - # Don't tell nginx version to clients. - server_tokens off; + server { + listen 80; + root /var/www/public; + index index.php index.html; - # Specifies the maximum accepted body size of a client request, as - # indicated by the request header Content-Length. If the stated content - # length is greater than this size, then the client receives the HTTP - # error code 413. Set to 0 to disable. - client_max_body_size 1024m; + rewrite_log on; - # Timeout for keep-alive connections. Server will close connections after - # this time. - keepalive_timeout 65; + location / { + try_files $uri $uri/ @ee; + } - # Sendfile copies data between one FD and other from within the kernel, - # which is more efficient than read() + write(). - sendfile on; + location @ee { + rewrite ^(.*) /index.php?$1 last; + } - # Don't buffer data-sends (disable Nagle algorithm). - # Good for sending frequent small bursts of data in real time. - tcp_nodelay on; - - # Causes nginx to attempt to send its HTTP response head in one packet, - # instead of using partial frames. - #tcp_nopush on; - - - # Path of the file with Diffie-Hellman parameters for EDH ciphers. - #ssl_dhparam /etc/ssl/nginx/dh2048.pem; - - # Specifies that our cipher suits should be preferred over client ciphers. - ssl_prefer_server_ciphers on; - - # Enables a shared SSL cache with size that can hold around 8000 sessions. - ssl_session_cache shared:SSL:2m; - - # Enable gzipping of responses. - gzip on; - - # Set the Vary HTTP header as defined in the RFC 2616. - gzip_vary on; - - # Enable checking the existence of precompressed files. - #gzip_static on; - - # Specifies the main log format. - log_format main '$remote_addr - $remote_user [$time_local] "$request" ' - '$status $body_bytes_sent "$http_referer" ' - '"$http_user_agent" "$http_x_forwarded_for"'; - - # Sets the path, format, and configuration for a buffered log write. - access_log /var/log/nginx/access.log main; - - proxy_buffering on; - proxy_buffer_size 128k; - proxy_buffers 4 256k; - proxy_busy_buffers_size 256k; - - fastcgi_buffers 8 16k; - fastcgi_buffer_size 32k; - - # Includes virtual hosts configs. - include /etc/nginx/conf.d/*.conf; -} \ No newline at end of file + location ~ \.php$ { + fastcgi_split_path_info ^(.+\.php)(/.+)$; + fastcgi_pass 127.0.0.1:9000; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_index index.php; + include fastcgi_params; + } + } +} diff --git a/docker/s6/nginx/run b/docker/s6/nginx/run new file mode 100755 index 0000000..14cd019 --- /dev/null +++ b/docker/s6/nginx/run @@ -0,0 +1,3 @@ +#!/bin/sh + +exec /usr/sbin/nginx diff --git a/docker/s6/php-fpm/run b/docker/s6/php-fpm/run new file mode 100755 index 0000000..93f71b9 --- /dev/null +++ b/docker/s6/php-fpm/run @@ -0,0 +1,3 @@ +#!/bin/sh + +exec /usr/sbin/php-fpm7 --nodaemonize