TD-314: [BACK]. [реализовать сервис для подписания документов в контейнере signer]

This commit is contained in:
cherednik 2024-08-30 20:09:11 +04:00
parent d09f3fdd8a
commit 9f3381a6a8
55 changed files with 8106 additions and 3 deletions

7
.env Normal file
View File

@ -0,0 +1,7 @@
PHP_PORT=9025
NGINX_PORT=85
NGINX_PORT_SSL=444
NGINX_SYMFONY_SERVER_NAME=dot-dot.local
COMPOSE_FILE=docker-compose.yml

8
.idea/.gitignore vendored Normal file
View File

@ -0,0 +1,8 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

18
.idea/codeception.xml Normal file
View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Codeception">
<option name="configurations">
<list>
<Configuration>
<option name="path" value="$PROJECT_DIR$/tests" />
</Configuration>
<Configuration>
<option name="path" value="$PROJECT_DIR$/backend/tests" />
</Configuration>
<Configuration>
<option name="path" value="$PROJECT_DIR$/backend/tests" />
</Configuration>
</list>
</option>
</component>
</project>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GitToolBoxBlameSettings">
<option name="version" value="2" />
</component>
</project>

8
.idea/modules.xml Normal file
View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/signer.iml" filepath="$PROJECT_DIR$/.idea/signer.iml" />
</modules>
</component>
</project>

113
.idea/php.xml Normal file
View File

@ -0,0 +1,113 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="MessDetectorOptionsConfiguration">
<option name="transferred" value="true" />
</component>
<component name="PHPCSFixerOptionsConfiguration">
<option name="transferred" value="true" />
</component>
<component name="PHPCodeSnifferOptionsConfiguration">
<option name="highlightLevel" value="WARNING" />
<option name="transferred" value="true" />
</component>
<component name="PhpIncludePathManager">
<include_path>
<path value="$PROJECT_DIR$/backend/vendor/symfony/service-contracts" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/dotenv" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/security-http" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/string" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/polyfill-intl-grapheme" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/twig-bridge" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/var-dumper" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/event-dispatcher-contracts" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/stopwatch" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/console" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/finder" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/polyfill-mbstring" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/ux-chartjs" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/var-exporter" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/http-kernel" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/framework-bundle" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/event-dispatcher" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/polyfill-php81" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/security-core" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/security-bundle" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/polyfill-php80" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/polyfill-intl-normalizer" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/polyfill-uuid" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/cache" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/process" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/twig-bundle" />
<path value="$PROJECT_DIR$/backend/vendor/doctrine/common" />
<path value="$PROJECT_DIR$/backend/vendor/doctrine/doctrine-migrations-bundle" />
<path value="$PROJECT_DIR$/backend/vendor/doctrine/inflector" />
<path value="$PROJECT_DIR$/backend/vendor/doctrine/annotations" />
<path value="$PROJECT_DIR$/backend/vendor/doctrine/event-manager" />
<path value="$PROJECT_DIR$/backend/vendor/doctrine/doctrine-bundle" />
<path value="$PROJECT_DIR$/backend/vendor/doctrine/sql-formatter" />
<path value="$PROJECT_DIR$/backend/vendor/doctrine/instantiator" />
<path value="$PROJECT_DIR$/backend/vendor/doctrine/orm" />
<path value="$PROJECT_DIR$/backend/vendor/doctrine/lexer" />
<path value="$PROJECT_DIR$/backend/vendor/doctrine/cache" />
<path value="$PROJECT_DIR$/backend/vendor/easycorp/easyadmin-bundle" />
<path value="$PROJECT_DIR$/backend/vendor/doctrine/persistence" />
<path value="$PROJECT_DIR$/backend/vendor/doctrine/dbal" />
<path value="$PROJECT_DIR$/backend/vendor/doctrine/deprecations" />
<path value="$PROJECT_DIR$/backend/vendor/doctrine/collections" />
<path value="$PROJECT_DIR$/backend/vendor/doctrine/migrations" />
<path value="$PROJECT_DIR$/backend/vendor/composer" />
<path value="$PROJECT_DIR$/backend/vendor/psr/cache" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/validator" />
<path value="$PROJECT_DIR$/backend/vendor/nikic/php-parser" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/stimulus-bundle" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/doctrine-bridge" />
<path value="$PROJECT_DIR$/backend/vendor/psr/log" />
<path value="$PROJECT_DIR$/backend/vendor/psr/event-dispatcher" />
<path value="$PROJECT_DIR$/backend/vendor/twig/twig" />
<path value="$PROJECT_DIR$/backend/vendor/psr/container" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/translation-contracts" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/filesystem" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/translation" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/asset" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/polyfill-intl-icu" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/property-access" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/yaml" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/password-hasher" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/dependency-injection" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/form" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/options-resolver" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/config" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/deprecation-contracts" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/intl" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/http-foundation" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/error-handler" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/maker-bundle" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/routing" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/property-info" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/security-csrf" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/runtime" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/uid" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/flex" />
<path value="$PROJECT_DIR$/backend/vendor/symfony/cache-contracts" />
<path value="$PROJECT_DIR$/backend/vendor/psr/http-message" />
<path value="$PROJECT_DIR$/backend/vendor/psr/http-factory" />
<path value="$PROJECT_DIR$/backend/vendor/guzzlehttp/psr7" />
<path value="$PROJECT_DIR$/backend/vendor/guzzlehttp/guzzle" />
<path value="$PROJECT_DIR$/backend/vendor/guzzlehttp/promises" />
<path value="$PROJECT_DIR$/backend/vendor/psr/http-client" />
<path value="$PROJECT_DIR$/backend/vendor/ralouphie/getallheaders" />
</include_path>
</component>
<component name="PhpProjectSharedConfiguration" php_language_level="8.3" />
<component name="PhpStanOptionsConfiguration">
<option name="transferred" value="true" />
</component>
<component name="PhpUnit">
<phpunit_settings>
<PhpUnitSettings custom_loader_path="$PROJECT_DIR$/backend/vendor/autoload.php" />
</phpunit_settings>
</component>
<component name="PsalmOptionsConfiguration">
<option name="transferred" value="true" />
</component>
</project>

16
.idea/phpspec.xml Normal file
View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="PHPSpec">
<suites>
<PhpSpecSuiteConfiguration>
<option name="myPath" value="$PROJECT_DIR$" />
</PhpSpecSuiteConfiguration>
<PhpSpecSuiteConfiguration>
<option name="myPath" value="$PROJECT_DIR$/backend" />
</PhpSpecSuiteConfiguration>
<PhpSpecSuiteConfiguration>
<option name="myPath" value="$PROJECT_DIR$/backend" />
</PhpSpecSuiteConfiguration>
</suites>
</component>
</project>

10
.idea/phpunit.xml Normal file
View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="PHPUnit">
<option name="directories">
<list>
<option value="$PROJECT_DIR$/backend/tests" />
</list>
</option>
</component>
</project>

97
.idea/signer.iml Normal file
View File

@ -0,0 +1,97 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/backend/src" isTestSource="false" packagePrefix="App\" />
<sourceFolder url="file://$MODULE_DIR$/backend/tests" isTestSource="true" packagePrefix="App\Tests\" />
<sourceFolder url="file://$MODULE_DIR$/spec" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/tests" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/composer" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/doctrine/annotations" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/doctrine/cache" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/doctrine/collections" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/doctrine/common" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/doctrine/dbal" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/doctrine/deprecations" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/doctrine/doctrine-bundle" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/doctrine/doctrine-migrations-bundle" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/doctrine/event-manager" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/doctrine/inflector" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/doctrine/instantiator" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/doctrine/lexer" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/doctrine/migrations" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/doctrine/orm" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/doctrine/persistence" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/doctrine/sql-formatter" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/easycorp/easyadmin-bundle" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/nikic/php-parser" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/psr/cache" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/psr/container" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/psr/event-dispatcher" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/psr/log" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/asset" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/cache" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/cache-contracts" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/config" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/console" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/dependency-injection" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/deprecation-contracts" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/doctrine-bridge" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/dotenv" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/error-handler" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/event-dispatcher" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/event-dispatcher-contracts" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/filesystem" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/finder" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/flex" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/form" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/framework-bundle" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/http-foundation" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/http-kernel" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/intl" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/maker-bundle" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/options-resolver" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/password-hasher" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/polyfill-intl-grapheme" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/polyfill-intl-icu" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/polyfill-intl-normalizer" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/polyfill-mbstring" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/polyfill-php80" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/polyfill-php81" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/polyfill-uuid" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/process" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/property-access" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/property-info" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/routing" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/runtime" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/security-bundle" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/security-core" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/security-csrf" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/security-http" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/service-contracts" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/stimulus-bundle" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/stopwatch" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/string" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/translation" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/translation-contracts" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/twig-bridge" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/twig-bundle" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/uid" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/ux-chartjs" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/validator" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/var-dumper" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/var-exporter" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/symfony/yaml" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/twig/twig" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/guzzlehttp/guzzle" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/guzzlehttp/promises" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/guzzlehttp/psr7" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/psr/http-client" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/psr/http-factory" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/psr/http-message" />
<excludeFolder url="file://$MODULE_DIR$/backend/vendor/ralouphie/getallheaders" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

6
.idea/vcs.xml Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>

View File

@ -1,6 +1,31 @@
FROM ubuntu:22.04
RUN apt update && apt install -y wget libgtk-3-0 libpcsclite-dev pcscd
ARG DEBIAN_FRONTEND=noninteractive
RUN apt update && apt install -y wget libgtk-3-0 libpcsclite-dev pcscd curl software-properties-common git zip bash
RUN add-apt-repository ppa:ondrej/php
RUN apt update && apt install -y \
php-fpm \
php-curl \
php \
php-common \
php-cli \
php-xml \
gnupg \
g++ \
procps \
git \
unzip \
zlib1g-dev \
libzip-dev \
libfreetype6-dev \
libpng-dev \
libjpeg-dev \
libicu-dev \
libonig-dev \
libxslt1-dev \
acl \
&& echo 'alias sf="php bin/console"' >> ~/.bashrc \
RUN wget -q -O /etc/apt/trusted.gpg.d/lab50.gpg http://packages.lab50.net/lab50.gpg
RUN echo 'deb http://packages.lab50.net/okular jammy main non-free' > /etc/apt/sources.list.d/okulargost.list
COPY 3party/cprocsp/linux-amd64_deb.tgz /tmp/src/
@ -32,6 +57,17 @@ COPY license.key /license.key
RUN pdfcpro install-license /license.key
COPY Inter-Bold.ttf /usr/local/share/fonts/Inter-Bold.ttf
COPY entrypoint.sh /entrypoint.sh
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
ENTRYPOINT [ "/entrypoint.sh" ]
WORKDIR /application/
COPY ./backend .
ENV COMPOSER_ALLOW_SUPERUSER=1
RUN composer install
RUN service php8.3-fpm start
#COPY entrypoint.sh /entrypoint.sh
#
#ENTRYPOINT [ "/entrypoint.sh" ]
CMD ["php-fpm8.3", "-F"]
EXPOSE 9001

30
backend/.env Normal file
View File

@ -0,0 +1,30 @@
# In all environments, the following files are loaded if they exist,
# the latter taking precedence over the former:
#
# * .env contains default values for the environment variables needed by the app
# * .env.local uncommitted file with local overrides
# * .env.$APP_ENV committed environment-specific defaults
# * .env.$APP_ENV.local uncommitted environment-specific overrides
#
# Real environment variables win over .env files.
#
# DO NOT DEFINE PRODUCTION SECRETS IN THIS FILE NOR IN ANY OTHER COMMITTED FILES.
# https://symfony.com/doc/current/configuration/secrets.html
#
# Run "composer dump-env prod" to compile .env files for production use (requires symfony/flex >=1.2).
# https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration
###> symfony/framework-bundle ###
APP_ENV=dev
APP_SECRET=850da55654c68f779822ea80d2b66a94
###< symfony/framework-bundle ###
###> doctrine/doctrine-bundle ###
# Format described at https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url
# IMPORTANT: You MUST configure your server version, either here or in config/packages/doctrine.yaml
#
# DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db"
# DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=8.0.32&charset=utf8mb4"
# DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=10.11.2-MariaDB&charset=utf8mb4"
DATABASE_URL="postgresql://app:!ChangeMe!@127.0.0.1:5432/app?serverVersion=16&charset=utf8"
###< doctrine/doctrine-bundle ###

10
backend/.gitignore vendored Normal file
View File

@ -0,0 +1,10 @@
###> symfony/framework-bundle ###
/.env.local
/.env.local.php
/.env.*.local
/config/secrets/prod/prod.decrypt.private.php
/public/bundles/
/var/
/vendor/
###< symfony/framework-bundle ###

2
backend/assets/bootstrap.js vendored Normal file
View File

@ -0,0 +1,2 @@
// register any custom, 3rd party controllers here
// app.register('some_controller_name', SomeImportedController);

View File

@ -0,0 +1,4 @@
{
"controllers": [],
"entrypoints": []
}

View File

@ -0,0 +1,16 @@
import { Controller } from '@hotwired/stimulus';
/*
* This is an example Stimulus controller!
*
* Any element with a data-controller="hello" attribute will cause
* this controller to be executed. The name "hello" comes from the filename:
* hello_controller.js -> "hello"
*
* Delete this file or adapt it for your use!
*/
export default class extends Controller {
connect() {
this.element.textContent = 'Hello Stimulus! Edit me in assets/controllers/hello_controller.js';
}
}

21
backend/bin/console Executable file
View File

@ -0,0 +1,21 @@
#!/usr/bin/env php
<?php
use App\Kernel;
use Symfony\Bundle\FrameworkBundle\Console\Application;
if (!is_dir(dirname(__DIR__).'/vendor')) {
throw new LogicException('Dependencies are missing. Try running "composer install".');
}
if (!is_file(dirname(__DIR__).'/vendor/autoload_runtime.php')) {
throw new LogicException('Symfony Runtime is missing. Try running "composer require symfony/runtime".');
}
require_once dirname(__DIR__).'/vendor/autoload_runtime.php';
return function (array $context) {
$kernel = new Kernel($context['APP_ENV'], (bool) $context['APP_DEBUG']);
return new Application($kernel);
};

View File

@ -0,0 +1,7 @@
services:
###> doctrine/doctrine-bundle ###
database:
ports:
- "5432"
###< doctrine/doctrine-bundle ###

20
backend/compose.yaml Normal file
View File

@ -0,0 +1,20 @@
services:
###> doctrine/doctrine-bundle ###
database:
image: postgres:${POSTGRES_VERSION:-16}-alpine
environment:
POSTGRES_DB: ${POSTGRES_DB:-app}
# You should definitely change the password in production
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-!ChangeMe!}
POSTGRES_USER: ${POSTGRES_USER:-app}
volumes:
- database_data:/var/lib/postgresql/data:rw
# You may use a bind-mounted host directory instead, so that it is harder to accidentally remove the volume and lose all your data!
# - ./docker/db/data:/var/lib/postgresql/data:rw
###< doctrine/doctrine-bundle ###
volumes:
###> doctrine/doctrine-bundle ###
database_data:
###< doctrine/doctrine-bundle ###

77
backend/composer.json Executable file
View File

@ -0,0 +1,77 @@
{
"type": "project",
"license": "proprietary",
"require": {
"php": "^8.3",
"ext-ctype": "*",
"ext-iconv": "*",
"composer/package-versions-deprecated": "1.11.99.5",
"doctrine/annotations": "^2.0",
"doctrine/doctrine-bundle": "^2.8",
"doctrine/doctrine-migrations-bundle": "^3.2",
"doctrine/orm": "^2.14",
"easycorp/easyadmin-bundle": "^4.9",
"guzzlehttp/guzzle": "^7.9",
"symfony/console": "6.2.*",
"symfony/dotenv": "6.2.*",
"symfony/flex": "^2",
"symfony/framework-bundle": "6.2.*",
"symfony/runtime": "6.2.*",
"symfony/ux-chartjs": "*",
"symfony/yaml": "6.2.*"
},
"require-dev": {
"symfony/maker-bundle": "^1.50",
"symfony/twig-bundle": "6.2.*"
},
"config": {
"preferred-install": {
"*": "dist"
},
"sort-packages": true,
"allow-plugins": {
"symfony/flex": true,
"symfony/runtime": true
}
},
"autoload": {
"psr-4": {
"App\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"App\\Tests\\": "tests/"
}
},
"replace": {
"paragonie/random_compat": "2.*",
"symfony/polyfill-ctype": "*",
"symfony/polyfill-iconv": "*",
"symfony/polyfill-php72": "*",
"symfony/polyfill-php71": "*",
"symfony/polyfill-php70": "*",
"symfony/polyfill-php56": "*"
},
"scripts": {
"auto-scripts": {
"cache:clear": "symfony-cmd",
"assets:install %PUBLIC_DIR%": "symfony-cmd"
},
"post-install-cmd": [
"@auto-scripts"
],
"post-update-cmd": [
"@auto-scripts"
]
},
"conflict": {
"symfony/symfony": "*"
},
"extra": {
"symfony": {
"allow-contrib": false,
"require": "6.2.*"
}
}
}

6884
backend/composer.lock generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,13 @@
<?php
return [
Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true],
Doctrine\Bundle\DoctrineBundle\DoctrineBundle::class => ['all' => true],
Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle::class => ['all' => true],
Symfony\Bundle\TwigBundle\TwigBundle::class => ['all' => true],
Symfony\Bundle\SecurityBundle\SecurityBundle::class => ['all' => true],
EasyCorp\Bundle\EasyAdminBundle\EasyAdminBundle::class => ['all' => true],
Symfony\Bundle\MakerBundle\MakerBundle::class => ['dev' => true],
Symfony\UX\StimulusBundle\StimulusBundle::class => ['all' => true],
Symfony\UX\Chartjs\ChartjsBundle::class => ['all' => true],
];

View File

@ -0,0 +1,19 @@
framework:
cache:
# Unique name of your app: used to compute stable namespaces for cache keys.
#prefix_seed: your_vendor_name/app_name
# The "app" cache stores to the filesystem by default.
# The data in this cache should persist between deploys.
# Other options include:
# Redis
#app: cache.adapter.redis
#default_redis_provider: redis://localhost
# APCu (not recommended with heavy random-write workloads as memory fragmentation can cause perf issues)
#app: cache.adapter.apcu
# Namespaced pools use the above "app" backend by default
#pools:
#my.dedicated.cache: null

View File

@ -0,0 +1,50 @@
doctrine:
dbal:
url: '%env(resolve:DATABASE_URL)%'
# IMPORTANT: You MUST configure your server version,
# either here or in the DATABASE_URL env var (see .env file)
#server_version: '16'
profiling_collect_backtrace: '%kernel.debug%'
use_savepoints: true
orm:
auto_generate_proxy_classes: true
enable_lazy_ghost_objects: true
report_fields_where_declared: true
validate_xml_mapping: true
naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware
auto_mapping: true
mappings:
App:
type: attribute
is_bundle: false
dir: '%kernel.project_dir%/src/Entity'
prefix: 'App\Entity'
alias: App
when@test:
doctrine:
dbal:
# "TEST_TOKEN" is typically set by ParaTest
dbname_suffix: '_test%env(default::TEST_TOKEN)%'
when@prod:
doctrine:
orm:
auto_generate_proxy_classes: false
proxy_dir: '%kernel.build_dir%/doctrine/orm/Proxies'
query_cache_driver:
type: pool
pool: doctrine.system_cache_pool
result_cache_driver:
type: pool
pool: doctrine.result_cache_pool
framework:
cache:
pools:
doctrine.result_cache_pool:
adapter: cache.app
doctrine.system_cache_pool:
adapter: cache.system

View File

@ -0,0 +1,6 @@
doctrine_migrations:
migrations_paths:
# namespace is arbitrary but should be different from App\Migrations
# as migrations classes should NOT be autoloaded
'DoctrineMigrations': '%kernel.project_dir%/migrations'
enable_profiler: false

View File

@ -0,0 +1,25 @@
# see https://symfony.com/doc/current/reference/configuration/framework.html
framework:
secret: '%env(APP_SECRET)%'
#csrf_protection: true
http_method_override: false
handle_all_throwables: true
# Enables session support. Note that the session will ONLY be started if you read or write from it.
# Remove or comment this section to explicitly disable session support.
session:
handler_id: null
cookie_secure: auto
cookie_samesite: lax
storage_factory_id: session.storage.factory.native
#esi: true
#fragments: true
php_errors:
log: true
when@test:
framework:
test: true
session:
storage_factory_id: session.storage.factory.mock_file

View File

@ -0,0 +1,12 @@
framework:
router:
utf8: true
# Configure how to generate URLs in non-HTTP contexts, such as CLI commands.
# See https://symfony.com/doc/current/routing.html#generating-urls-in-commands
#default_uri: http://localhost
when@prod:
framework:
router:
strict_requirements: null

View File

@ -0,0 +1,39 @@
security:
# https://symfony.com/doc/current/security.html#registering-the-user-hashing-passwords
password_hashers:
Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface: 'auto'
# https://symfony.com/doc/current/security.html#loading-the-user-the-user-provider
providers:
users_in_memory: { memory: null }
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
lazy: true
provider: users_in_memory
# activate different ways to authenticate
# https://symfony.com/doc/current/security.html#the-firewall
# https://symfony.com/doc/current/security/impersonating_user.html
# switch_user: true
# Easy way to control access for large sections of your site
# Note: Only the *first* access control that matches will be used
access_control:
# - { path: ^/admin, roles: ROLE_ADMIN }
# - { path: ^/profile, roles: ROLE_USER }
when@test:
security:
password_hashers:
# By default, password hashers are resource intensive and take time. This is
# important to generate secure password hashes. In tests however, secure hashes
# are not important, waste resources and increase test times. The following
# reduces the work factor to the lowest possible values.
Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface:
algorithm: auto
cost: 4 # Lowest possible value for bcrypt
time_cost: 3 # Lowest possible value for argon
memory_cost: 10 # Lowest possible value for argon

View File

@ -0,0 +1,7 @@
framework:
default_locale: en
translator:
default_path: '%kernel.project_dir%/translations'
fallbacks:
- en
providers:

View File

@ -0,0 +1,6 @@
twig:
default_path: '%kernel.project_dir%/templates'
when@test:
twig:
strict_variables: true

View File

@ -0,0 +1,4 @@
framework:
uid:
default_uuid_version: 7
time_based_uuid_version: 7

View File

@ -0,0 +1,13 @@
framework:
validation:
email_validation_mode: html5
# Enables validator auto-mapping support.
# For instance, basic validation constraints will be inferred from Doctrine's metadata.
#auto_mapping:
# App\Entity\: []
when@test:
framework:
validation:
not_compromised_password: false

View File

@ -0,0 +1,5 @@
<?php
if (file_exists(dirname(__DIR__).'/var/cache/prod/App_KernelProdContainer.preload.php')) {
require dirname(__DIR__).'/var/cache/prod/App_KernelProdContainer.preload.php';
}

View File

@ -0,0 +1,5 @@
controllers:
resource:
path: ../src/Controller/
namespace: App\Controller
type: attribute

View File

@ -0,0 +1,4 @@
when@dev:
_errors:
resource: '@FrameworkBundle/Resources/config/routing/errors.xml'
prefix: /_error

View File

@ -0,0 +1,24 @@
# This file is the entry point to configure your own services.
# Files in the packages/ subdirectory configure your dependencies.
# Put parameters here that don't need to change on each machine where the app is deployed
# https://symfony.com/doc/current/best_practices.html#use-parameters-for-application-configuration
parameters:
services:
# default configuration for services in *this* file
_defaults:
autowire: true # Automatically injects dependencies in your services.
autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.
# makes classes in src/ available to be used as services
# this creates a service per class whose id is the fully-qualified class name
App\:
resource: '../src/'
exclude:
- '../src/DependencyInjection/'
- '../src/Entity/'
- '../src/Kernel.php'
# add more service definitions when explicit configuration is needed
# please note that last definitions always *replace* previous ones

0
backend/migrations/.gitignore vendored Normal file
View File

9
backend/public/index.php Executable file
View File

@ -0,0 +1,9 @@
<?php
use App\Kernel;
require_once dirname(__DIR__).'/vendor/autoload_runtime.php';
return function (array $context) {
return new Kernel($context['APP_ENV'], (bool) $context['APP_DEBUG']);
};

0
backend/src/Controller/.gitignore vendored Normal file
View File

View File

@ -0,0 +1,13 @@
<?php
declare(strict_types=1);
namespace App\Controller;
use GuzzleHttp\Client;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
class SignController extends AbstractController
{
}

0
backend/src/Entity/.gitignore vendored Normal file
View File

11
backend/src/Kernel.php Normal file
View File

@ -0,0 +1,11 @@
<?php
namespace App;
use Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait;
use Symfony\Component\HttpKernel\Kernel as BaseKernel;
class Kernel extends BaseKernel
{
use MicroKernelTrait;
}

0
backend/src/Repository/.gitignore vendored Normal file
View File

191
backend/symfony.lock Normal file
View File

@ -0,0 +1,191 @@
{
"doctrine/annotations": {
"version": "2.0",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "main",
"version": "1.10",
"ref": "64d8583af5ea57b7afa4aba4b159907f3a148b05"
}
},
"doctrine/doctrine-bundle": {
"version": "2.12",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "main",
"version": "2.10",
"ref": "c170ded8fc587d6bd670550c43dafcf093762245"
},
"files": [
"config/packages/doctrine.yaml",
"src/Entity/.gitignore",
"src/Repository/.gitignore"
]
},
"doctrine/doctrine-migrations-bundle": {
"version": "3.3",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "main",
"version": "3.1",
"ref": "1d01ec03c6ecbd67c3375c5478c9a423ae5d6a33"
},
"files": [
"config/packages/doctrine_migrations.yaml",
"migrations/.gitignore"
]
},
"easycorp/easyadmin-bundle": {
"version": "4.11",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "main",
"version": "3.0",
"ref": "b131e6cbfe1b898a508987851963fff485986285"
}
},
"symfony/console": {
"version": "6.2",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "main",
"version": "5.3",
"ref": "1781ff40d8a17d87cf53f8d4cf0c8346ed2bb461"
},
"files": [
"bin/console"
]
},
"symfony/flex": {
"version": "2.4",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "main",
"version": "1.0",
"ref": "146251ae39e06a95be0fe3d13c807bcf3938b172"
},
"files": [
".env"
]
},
"symfony/framework-bundle": {
"version": "6.2",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "main",
"version": "6.2",
"ref": "af47254c5e4cd543e6af3e4508298ffebbdaddd3"
},
"files": [
"config/packages/cache.yaml",
"config/packages/framework.yaml",
"config/preload.php",
"config/routes/framework.yaml",
"config/services.yaml",
"public/index.php",
"src/Controller/.gitignore",
"src/Kernel.php"
]
},
"symfony/maker-bundle": {
"version": "1.50",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "main",
"version": "1.0",
"ref": "fadbfe33303a76e25cb63401050439aa9b1a9c7f"
}
},
"symfony/routing": {
"version": "6.2",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "main",
"version": "6.2",
"ref": "e0a11b4ccb8c9e70b574ff5ad3dfdcd41dec5aa6"
},
"files": [
"config/packages/routing.yaml",
"config/routes.yaml"
]
},
"symfony/security-bundle": {
"version": "6.2",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "main",
"version": "6.0",
"ref": "8a5b112826f7d3d5b07027f93786ae11a1c7de48"
},
"files": [
"config/packages/security.yaml"
]
},
"symfony/stimulus-bundle": {
"version": "2.19",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "main",
"version": "2.13",
"ref": "6acd9ff4f7fd5626d2962109bd4ebab351d43c43"
},
"files": [
"assets/bootstrap.js",
"assets/controllers.json",
"assets/controllers/hello_controller.js"
]
},
"symfony/translation": {
"version": "6.2",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "main",
"version": "5.3",
"ref": "e28e27f53663cc34f0be2837aba18e3a1bef8e7b"
},
"files": [
"config/packages/translation.yaml",
"translations/.gitignore"
]
},
"symfony/twig-bundle": {
"version": "6.2",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "main",
"version": "5.4",
"ref": "bb2178c57eee79e6be0b297aa96fc0c0def81387"
},
"files": [
"config/packages/twig.yaml",
"templates/base.html.twig"
]
},
"symfony/uid": {
"version": "6.2",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "main",
"version": "6.2",
"ref": "d294ad4add3e15d7eb1bae0221588ca89b38e558"
},
"files": [
"config/packages/uid.yaml"
]
},
"symfony/ux-chartjs": {
"version": "v2.19.3"
},
"symfony/validator": {
"version": "6.2",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "main",
"version": "5.3",
"ref": "c32cfd98f714894c4f128bb99aa2530c1227603c"
},
"files": [
"config/packages/validator.yaml"
]
}
}

View File

@ -0,0 +1,19 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>{% block title %}Welcome!{% endblock %}</title>
<link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 128 128%22><text y=%221.2em%22 font-size=%2296%22>⚫️</text></svg>">
{# Run `composer require symfony/webpack-encore-bundle` to start using Symfony UX #}
{% block stylesheets %}
{{ encore_entry_link_tags('app') }}
{% endblock %}
{% block javascripts %}
{{ encore_entry_script_tags('app') }}
{% endblock %}
</head>
<body>
{% block body %}{% endblock %}
</body>
</html>

0
backend/translations/.gitignore vendored Normal file
View File

36
docker-compose.yml Normal file
View File

@ -0,0 +1,36 @@
services:
php:
build:
dockerfile: Dockerfile
ports:
- ${PHP_PORT}:9001
env_file:
- .env
networks:
- network_default
volumes:
- ./backend/:/application
nginx:
build:
context: ./docker/nginx
ports:
- ${NGINX_PORT}:80
depends_on:
- php
environment:
- NGINX_ENVSUBST_OUTPUT_DIR=/etc/nginx/conf.d
- NGINX_ENVSUBST_TEMPLATE_DIR=/etc/nginx/templates
- NGINX_ENVSUBST_TEMPLATE_SUFFIX=.template
env_file:
- .env
networks:
- network_default
volumes:
- ./logs/nginx:/var/log/nginx:cached
- ./backend/public:/application/public
networks:
network_default:
driver: bridge

13
docker/nginx/Dockerfile Normal file
View File

@ -0,0 +1,13 @@
FROM nginx:1.19.6
RUN mkdir -p /etc/nginx/templates \
mkdir -p /tmp/nginx
COPY nginx.conf /etc/nginx/
COPY templates/* /etc/nginx/templates/
CMD ["nginx"]
EXPOSE 80
EXPOSE 443
EXPOSE 8080

View File

@ -0,0 +1,14 @@
{
"name": "vendor_name/nginx",
"description": "description",
"minimum-stability": "stable",
"license": "proprietary",
"authors": [
{
"name": "dev",
"email": "email@example.com"
}
],
"require": {
}
}

View File

@ -0,0 +1,6 @@
server {
server_name _;
listen *:80;
root /application/public;
}

37
docker/nginx/nginx.conf Normal file
View File

@ -0,0 +1,37 @@
user www-data;
worker_processes 4;
pid /run/nginx.pid;
events {
worker_connections 2048;
multi_accept on;
use epoll;
}
http {
server_tokens off;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 15;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log off;
error_log off;
gzip on;
gzip_disable "msie6";
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
open_file_cache max=100;
client_body_temp_path /tmp 1 2;
client_body_buffer_size 256k;
client_body_in_file_only off;
client_max_body_size 30M;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
}
daemon off;

View File

@ -0,0 +1,35 @@
server {
server_name ${APP_HOST} localhost nginx;
root /application/public;
location / {
try_files $uri /index.php$is_args$args;
}
location ~ ^/index\.php(/|$) {
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' $http_origin;
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, DELETE';
add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,X-Expeditor-Domain,Authorization';
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain charset=UTF-8';
add_header 'Content-Length' 0;
return 204;
}
add_header 'Access-Control-Allow-Origin' $http_origin;
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, DELETE';
add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,X-Expeditor-Domain,Authorization';
fastcgi_pass php:9001;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
error_log /var/log/nginx/dot_dot_error.log;
access_log /var/log/nginx/dot_dot_access.log;
}

View File

@ -0,0 +1,44 @@
172.18.0.1 - - [30/Aug/2024:10:23:51 +0000] "GET / HTTP/1.1" 403 118 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:129.0) Gecko/20100101 Firefox/129.0"
172.18.0.1 - - [30/Aug/2024:10:23:51 +0000] "GET /favicon.ico HTTP/1.1" 404 118 "http://dot-dot.local/" "Mozilla/5.0 (X11; Linux x86_64; rv:129.0) Gecko/20100101 Firefox/129.0"
172.18.0.1 - - [30/Aug/2024:10:23:54 +0000] "GET / HTTP/1.1" 403 118 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:129.0) Gecko/20100101 Firefox/129.0"
172.18.0.1 - - [30/Aug/2024:10:23:59 +0000] "GET / HTTP/1.1" 403 118 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:129.0) Gecko/20100101 Firefox/129.0"
172.18.0.1 - - [30/Aug/2024:10:23:59 +0000] "GET /favicon.ico HTTP/1.1" 404 118 "http://localhost/" "Mozilla/5.0 (X11; Linux x86_64; rv:129.0) Gecko/20100101 Firefox/129.0"
172.18.0.1 - - [30/Aug/2024:14:40:18 +0000] "GET / HTTP/1.1" 403 118 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:129.0) Gecko/20100101 Firefox/129.0"
172.18.0.1 - - [30/Aug/2024:14:40:19 +0000] "GET /favicon.ico HTTP/1.1" 404 118 "http://localhost:85/" "Mozilla/5.0 (X11; Linux x86_64; rv:129.0) Gecko/20100101 Firefox/129.0"
172.18.0.1 - - [30/Aug/2024:14:40:20 +0000] "GET / HTTP/1.1" 403 118 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:129.0) Gecko/20100101 Firefox/129.0"
172.18.0.1 - - [30/Aug/2024:14:40:21 +0000] "GET / HTTP/1.1" 403 118 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:129.0) Gecko/20100101 Firefox/129.0"
172.18.0.1 - - [30/Aug/2024:14:40:21 +0000] "GET / HTTP/1.1" 403 118 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:129.0) Gecko/20100101 Firefox/129.0"
172.18.0.1 - - [30/Aug/2024:14:40:22 +0000] "GET / HTTP/1.1" 403 118 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:129.0) Gecko/20100101 Firefox/129.0"
172.18.0.1 - - [30/Aug/2024:14:40:22 +0000] "GET / HTTP/1.1" 403 118 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:129.0) Gecko/20100101 Firefox/129.0"
172.18.0.1 - - [30/Aug/2024:14:40:22 +0000] "GET / HTTP/1.1" 403 118 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:129.0) Gecko/20100101 Firefox/129.0"
172.18.0.1 - - [30/Aug/2024:14:42:30 +0000] "GET / HTTP/1.1" 403 118 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:129.0) Gecko/20100101 Firefox/129.0"
172.18.0.1 - - [30/Aug/2024:14:42:31 +0000] "GET / HTTP/1.1" 403 118 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:129.0) Gecko/20100101 Firefox/129.0"
172.18.0.1 - - [30/Aug/2024:14:42:31 +0000] "GET /favicon.ico HTTP/1.1" 404 118 "http://localhost:85/" "Mozilla/5.0 (X11; Linux x86_64; rv:129.0) Gecko/20100101 Firefox/129.0"
172.18.0.1 - - [30/Aug/2024:14:42:32 +0000] "GET / HTTP/1.1" 403 118 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:129.0) Gecko/20100101 Firefox/129.0"
172.18.0.1 - - [30/Aug/2024:14:42:32 +0000] "GET /favicon.ico HTTP/1.1" 404 118 "http://localhost:85/" "Mozilla/5.0 (X11; Linux x86_64; rv:129.0) Gecko/20100101 Firefox/129.0"
172.18.0.1 - - [30/Aug/2024:14:42:32 +0000] "GET / HTTP/1.1" 403 118 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:129.0) Gecko/20100101 Firefox/129.0"
172.18.0.1 - - [30/Aug/2024:14:42:32 +0000] "GET /favicon.ico HTTP/1.1" 404 118 "http://localhost:85/" "Mozilla/5.0 (X11; Linux x86_64; rv:129.0) Gecko/20100101 Firefox/129.0"
172.18.0.1 - - [30/Aug/2024:14:42:32 +0000] "GET / HTTP/1.1" 403 118 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:129.0) Gecko/20100101 Firefox/129.0"
172.18.0.1 - - [30/Aug/2024:14:42:32 +0000] "GET /favicon.ico HTTP/1.1" 404 118 "http://localhost:85/" "Mozilla/5.0 (X11; Linux x86_64; rv:129.0) Gecko/20100101 Firefox/129.0"
172.18.0.1 - - [30/Aug/2024:14:42:33 +0000] "GET / HTTP/1.1" 403 118 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:129.0) Gecko/20100101 Firefox/129.0"
172.18.0.1 - - [30/Aug/2024:14:42:33 +0000] "GET /favicon.ico HTTP/1.1" 404 118 "http://localhost:85/" "Mozilla/5.0 (X11; Linux x86_64; rv:129.0) Gecko/20100101 Firefox/129.0"
172.18.0.1 - - [30/Aug/2024:14:42:33 +0000] "GET / HTTP/1.1" 403 118 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:129.0) Gecko/20100101 Firefox/129.0"
172.18.0.1 - - [30/Aug/2024:14:42:33 +0000] "GET /favicon.ico HTTP/1.1" 404 118 "http://localhost:85/" "Mozilla/5.0 (X11; Linux x86_64; rv:129.0) Gecko/20100101 Firefox/129.0"
172.18.0.1 - - [30/Aug/2024:14:42:33 +0000] "GET / HTTP/1.1" 403 118 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:129.0) Gecko/20100101 Firefox/129.0"
172.18.0.1 - - [30/Aug/2024:14:42:33 +0000] "GET /favicon.ico HTTP/1.1" 404 118 "http://localhost:85/" "Mozilla/5.0 (X11; Linux x86_64; rv:129.0) Gecko/20100101 Firefox/129.0"
172.18.0.1 - - [30/Aug/2024:14:42:33 +0000] "GET / HTTP/1.1" 403 118 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:129.0) Gecko/20100101 Firefox/129.0"
172.18.0.1 - - [30/Aug/2024:14:42:33 +0000] "GET /favicon.ico HTTP/1.1" 404 118 "http://localhost:85/" "Mozilla/5.0 (X11; Linux x86_64; rv:129.0) Gecko/20100101 Firefox/129.0"
172.18.0.1 - - [30/Aug/2024:14:42:36 +0000] "GET / HTTP/1.1" 403 118 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:129.0) Gecko/20100101 Firefox/129.0"
172.18.0.1 - - [30/Aug/2024:14:42:36 +0000] "GET /favicon.ico HTTP/1.1" 404 118 "http://localhost:85/" "Mozilla/5.0 (X11; Linux x86_64; rv:129.0) Gecko/20100101 Firefox/129.0"
172.18.0.1 - - [30/Aug/2024:14:45:33 +0000] "GET / HTTP/1.1" 502 150 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:129.0) Gecko/20100101 Firefox/129.0"
172.18.0.1 - - [30/Aug/2024:14:45:33 +0000] "GET /favicon.ico HTTP/1.1" 502 150 "http://localhost:85/" "Mozilla/5.0 (X11; Linux x86_64; rv:129.0) Gecko/20100101 Firefox/129.0"
172.18.0.1 - - [30/Aug/2024:14:45:34 +0000] "GET / HTTP/1.1" 502 150 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:129.0) Gecko/20100101 Firefox/129.0"
172.18.0.1 - - [30/Aug/2024:14:45:34 +0000] "GET /favicon.ico HTTP/1.1" 502 150 "http://localhost:85/" "Mozilla/5.0 (X11; Linux x86_64; rv:129.0) Gecko/20100101 Firefox/129.0"
172.18.0.1 - - [30/Aug/2024:14:45:35 +0000] "GET / HTTP/1.1" 502 150 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:129.0) Gecko/20100101 Firefox/129.0"
172.18.0.1 - - [30/Aug/2024:14:45:35 +0000] "GET /favicon.ico HTTP/1.1" 502 150 "http://localhost:85/" "Mozilla/5.0 (X11; Linux x86_64; rv:129.0) Gecko/20100101 Firefox/129.0"
172.18.0.1 - - [30/Aug/2024:14:45:36 +0000] "GET / HTTP/1.1" 502 150 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:129.0) Gecko/20100101 Firefox/129.0"
172.18.0.1 - - [30/Aug/2024:14:45:36 +0000] "GET /favicon.ico HTTP/1.1" 502 150 "http://localhost:85/" "Mozilla/5.0 (X11; Linux x86_64; rv:129.0) Gecko/20100101 Firefox/129.0"
172.18.0.1 - - [30/Aug/2024:14:45:36 +0000] "GET / HTTP/1.1" 502 150 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:129.0) Gecko/20100101 Firefox/129.0"
172.18.0.1 - - [30/Aug/2024:14:45:37 +0000] "GET /favicon.ico HTTP/1.1" 502 150 "http://localhost:85/" "Mozilla/5.0 (X11; Linux x86_64; rv:129.0) Gecko/20100101 Firefox/129.0"
172.18.0.1 - - [30/Aug/2024:14:45:37 +0000] "GET / HTTP/1.1" 502 150 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:129.0) Gecko/20100101 Firefox/129.0"
172.18.0.1 - - [30/Aug/2024:14:45:37 +0000] "GET /favicon.ico HTTP/1.1" 502 150 "http://localhost:85/" "Mozilla/5.0 (X11; Linux x86_64; rv:129.0) Gecko/20100101 Firefox/129.0"

View File

@ -0,0 +1,44 @@
2024/08/30 10:23:51 [error] 33#33: *1 directory index of "/application/public/" is forbidden, client: 172.18.0.1, server: ${app_host}, request: "GET / HTTP/1.1", host: "dot-dot.local"
2024/08/30 10:23:51 [error] 33#33: *1 open() "/application/public/favicon.ico" failed (2: No such file or directory), client: 172.18.0.1, server: ${app_host}, request: "GET /favicon.ico HTTP/1.1", host: "dot-dot.local", referrer: "http://dot-dot.local/"
2024/08/30 10:23:54 [error] 33#33: *2 directory index of "/application/public/" is forbidden, client: 172.18.0.1, server: ${app_host}, request: "GET / HTTP/1.1", host: "dot-dot.local"
2024/08/30 10:23:59 [error] 33#33: *3 directory index of "/application/public/" is forbidden, client: 172.18.0.1, server: ${app_host}, request: "GET / HTTP/1.1", host: "localhost"
2024/08/30 10:23:59 [error] 33#33: *3 open() "/application/public/favicon.ico" failed (2: No such file or directory), client: 172.18.0.1, server: ${app_host}, request: "GET /favicon.ico HTTP/1.1", host: "localhost", referrer: "http://localhost/"
2024/08/30 14:40:18 [error] 34#34: *1 directory index of "/application/public/" is forbidden, client: 172.18.0.1, server: ${app_host}, request: "GET / HTTP/1.1", host: "localhost:85"
2024/08/30 14:40:19 [error] 34#34: *1 open() "/application/public/favicon.ico" failed (2: No such file or directory), client: 172.18.0.1, server: ${app_host}, request: "GET /favicon.ico HTTP/1.1", host: "localhost:85", referrer: "http://localhost:85/"
2024/08/30 14:40:20 [error] 34#34: *1 directory index of "/application/public/" is forbidden, client: 172.18.0.1, server: ${app_host}, request: "GET / HTTP/1.1", host: "localhost:85"
2024/08/30 14:40:21 [error] 34#34: *1 directory index of "/application/public/" is forbidden, client: 172.18.0.1, server: ${app_host}, request: "GET / HTTP/1.1", host: "localhost:85"
2024/08/30 14:40:21 [error] 34#34: *1 directory index of "/application/public/" is forbidden, client: 172.18.0.1, server: ${app_host}, request: "GET / HTTP/1.1", host: "localhost:85"
2024/08/30 14:40:22 [error] 34#34: *1 directory index of "/application/public/" is forbidden, client: 172.18.0.1, server: ${app_host}, request: "GET / HTTP/1.1", host: "localhost:85"
2024/08/30 14:40:22 [error] 34#34: *1 directory index of "/application/public/" is forbidden, client: 172.18.0.1, server: ${app_host}, request: "GET / HTTP/1.1", host: "localhost:85"
2024/08/30 14:40:22 [error] 34#34: *1 directory index of "/application/public/" is forbidden, client: 172.18.0.1, server: ${app_host}, request: "GET / HTTP/1.1", host: "localhost:85"
2024/08/30 14:42:30 [error] 34#34: *2 directory index of "/application/public/" is forbidden, client: 172.18.0.1, server: ${app_host}, request: "GET / HTTP/1.1", host: "localhost:85"
2024/08/30 14:42:31 [error] 34#34: *3 directory index of "/application/public/" is forbidden, client: 172.18.0.1, server: ${app_host}, request: "GET / HTTP/1.1", host: "localhost:85"
2024/08/30 14:42:31 [error] 34#34: *3 open() "/application/public/favicon.ico" failed (2: No such file or directory), client: 172.18.0.1, server: ${app_host}, request: "GET /favicon.ico HTTP/1.1", host: "localhost:85", referrer: "http://localhost:85/"
2024/08/30 14:42:32 [error] 34#34: *4 directory index of "/application/public/" is forbidden, client: 172.18.0.1, server: ${app_host}, request: "GET / HTTP/1.1", host: "localhost:85"
2024/08/30 14:42:32 [error] 34#34: *4 open() "/application/public/favicon.ico" failed (2: No such file or directory), client: 172.18.0.1, server: ${app_host}, request: "GET /favicon.ico HTTP/1.1", host: "localhost:85", referrer: "http://localhost:85/"
2024/08/30 14:42:32 [error] 34#34: *5 directory index of "/application/public/" is forbidden, client: 172.18.0.1, server: ${app_host}, request: "GET / HTTP/1.1", host: "localhost:85"
2024/08/30 14:42:32 [error] 34#34: *5 open() "/application/public/favicon.ico" failed (2: No such file or directory), client: 172.18.0.1, server: ${app_host}, request: "GET /favicon.ico HTTP/1.1", host: "localhost:85", referrer: "http://localhost:85/"
2024/08/30 14:42:32 [error] 34#34: *6 directory index of "/application/public/" is forbidden, client: 172.18.0.1, server: ${app_host}, request: "GET / HTTP/1.1", host: "localhost:85"
2024/08/30 14:42:32 [error] 34#34: *6 open() "/application/public/favicon.ico" failed (2: No such file or directory), client: 172.18.0.1, server: ${app_host}, request: "GET /favicon.ico HTTP/1.1", host: "localhost:85", referrer: "http://localhost:85/"
2024/08/30 14:42:33 [error] 34#34: *7 directory index of "/application/public/" is forbidden, client: 172.18.0.1, server: ${app_host}, request: "GET / HTTP/1.1", host: "localhost:85"
2024/08/30 14:42:33 [error] 34#34: *7 open() "/application/public/favicon.ico" failed (2: No such file or directory), client: 172.18.0.1, server: ${app_host}, request: "GET /favicon.ico HTTP/1.1", host: "localhost:85", referrer: "http://localhost:85/"
2024/08/30 14:42:33 [error] 34#34: *8 directory index of "/application/public/" is forbidden, client: 172.18.0.1, server: ${app_host}, request: "GET / HTTP/1.1", host: "localhost:85"
2024/08/30 14:42:33 [error] 34#34: *8 open() "/application/public/favicon.ico" failed (2: No such file or directory), client: 172.18.0.1, server: ${app_host}, request: "GET /favicon.ico HTTP/1.1", host: "localhost:85", referrer: "http://localhost:85/"
2024/08/30 14:42:33 [error] 34#34: *9 directory index of "/application/public/" is forbidden, client: 172.18.0.1, server: ${app_host}, request: "GET / HTTP/1.1", host: "localhost:85"
2024/08/30 14:42:33 [error] 34#34: *9 open() "/application/public/favicon.ico" failed (2: No such file or directory), client: 172.18.0.1, server: ${app_host}, request: "GET /favicon.ico HTTP/1.1", host: "localhost:85", referrer: "http://localhost:85/"
2024/08/30 14:42:33 [error] 34#34: *10 directory index of "/application/public/" is forbidden, client: 172.18.0.1, server: ${app_host}, request: "GET / HTTP/1.1", host: "localhost:85"
2024/08/30 14:42:33 [error] 34#34: *10 open() "/application/public/favicon.ico" failed (2: No such file or directory), client: 172.18.0.1, server: ${app_host}, request: "GET /favicon.ico HTTP/1.1", host: "localhost:85", referrer: "http://localhost:85/"
2024/08/30 14:42:36 [error] 34#34: *11 directory index of "/application/public/" is forbidden, client: 172.18.0.1, server: ${app_host}, request: "GET / HTTP/1.1", host: "localhost:85"
2024/08/30 14:42:36 [error] 34#34: *11 open() "/application/public/favicon.ico" failed (2: No such file or directory), client: 172.18.0.1, server: ${app_host}, request: "GET /favicon.ico HTTP/1.1", host: "localhost:85", referrer: "http://localhost:85/"
2024/08/30 14:45:33 [error] 34#34: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.18.0.1, server: ${app_host}, request: "GET / HTTP/1.1", upstream: "fastcgi://172.18.0.2:9001", host: "localhost:85"
2024/08/30 14:45:33 [error] 34#34: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.18.0.1, server: ${app_host}, request: "GET /favicon.ico HTTP/1.1", upstream: "fastcgi://172.18.0.2:9001", host: "localhost:85", referrer: "http://localhost:85/"
2024/08/30 14:45:34 [error] 34#34: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.18.0.1, server: ${app_host}, request: "GET / HTTP/1.1", upstream: "fastcgi://172.18.0.2:9001", host: "localhost:85"
2024/08/30 14:45:34 [error] 34#34: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.18.0.1, server: ${app_host}, request: "GET /favicon.ico HTTP/1.1", upstream: "fastcgi://172.18.0.2:9001", host: "localhost:85", referrer: "http://localhost:85/"
2024/08/30 14:45:35 [error] 34#34: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.18.0.1, server: ${app_host}, request: "GET / HTTP/1.1", upstream: "fastcgi://172.18.0.2:9001", host: "localhost:85"
2024/08/30 14:45:35 [error] 34#34: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.18.0.1, server: ${app_host}, request: "GET /favicon.ico HTTP/1.1", upstream: "fastcgi://172.18.0.2:9001", host: "localhost:85", referrer: "http://localhost:85/"
2024/08/30 14:45:36 [error] 34#34: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.18.0.1, server: ${app_host}, request: "GET / HTTP/1.1", upstream: "fastcgi://172.18.0.2:9001", host: "localhost:85"
2024/08/30 14:45:36 [error] 34#34: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.18.0.1, server: ${app_host}, request: "GET /favicon.ico HTTP/1.1", upstream: "fastcgi://172.18.0.2:9001", host: "localhost:85", referrer: "http://localhost:85/"
2024/08/30 14:45:36 [error] 34#34: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.18.0.1, server: ${app_host}, request: "GET / HTTP/1.1", upstream: "fastcgi://172.18.0.2:9001", host: "localhost:85"
2024/08/30 14:45:37 [error] 34#34: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.18.0.1, server: ${app_host}, request: "GET /favicon.ico HTTP/1.1", upstream: "fastcgi://172.18.0.2:9001", host: "localhost:85", referrer: "http://localhost:85/"
2024/08/30 14:45:37 [error] 34#34: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.18.0.1, server: ${app_host}, request: "GET / HTTP/1.1", upstream: "fastcgi://172.18.0.2:9001", host: "localhost:85"
2024/08/30 14:45:37 [error] 34#34: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.18.0.1, server: ${app_host}, request: "GET /favicon.ico HTTP/1.1", upstream: "fastcgi://172.18.0.2:9001", host: "localhost:85", referrer: "http://localhost:85/"

3
logs/nginx/error.log Normal file
View File

@ -0,0 +1,3 @@
2024/08/30 10:20:27 [emerg] 1#1: unknown "nuxt_port" variable
2024/08/30 10:21:29 [emerg] 1#1: unknown "nuxt_port" variable
2024/08/30 10:21:45 [emerg] 1#1: unknown "nuxt_port" variable