Various updates
This commit is contained in:
5
api/setup/middleware/04_db.php
Normal file
5
api/setup/middleware/04_db.php
Normal file
@ -0,0 +1,5 @@
|
||||
<?php
|
||||
$app->add($app->getContainer()->get(ProVM\Common\Middleware\Attachments::class));
|
||||
$app->add($app->getContainer()->get(ProVM\Common\Middleware\Messages::class));
|
||||
$app->add($app->getContainer()->get(ProVM\Common\Middleware\Mailboxes::class));
|
||||
$app->add($app->getContainer()->get(ProVM\Common\Middleware\Install::class));
|
@ -5,7 +5,7 @@ return [
|
||||
'host' => $_ENV['EMAIL_HOST'],
|
||||
'username' => $_ENV['EMAIL_USERNAME'],
|
||||
'password' => $_ENV['EMAIL_PASSWORD'],
|
||||
'folder' => $_ENV['EMAIL_FOLDER'],
|
||||
//'folder' => $_ENV['EMAIL_FOLDER'],
|
||||
];
|
||||
if (isset($_ENV['EMAIL_PORT'])) {
|
||||
$data['port'] = $_ENV['EMAIL_PORT'];
|
||||
@ -27,5 +27,6 @@ return [
|
||||
$arr['port'] = $_ENV['MYSQL_PORT'];
|
||||
}
|
||||
return (object) $arr;
|
||||
}
|
||||
},
|
||||
'max_update_days' => 7
|
||||
];
|
||||
|
33
api/setup/settings/04_db.php
Normal file
33
api/setup/settings/04_db.php
Normal file
@ -0,0 +1,33 @@
|
||||
<?php
|
||||
return [
|
||||
'model_list' => function() {
|
||||
function getClassesFromFolder(string $folder): array {
|
||||
$classes = [];
|
||||
$files = new FilesystemIterator($folder);
|
||||
foreach ($files as $file) {
|
||||
if ($file->isDir()) {
|
||||
$classes = array_merge($classes, getClassesFromFolder($file->getRealPath()));
|
||||
continue;
|
||||
}
|
||||
$classes []= ltrim(str_replace("\\\\", "\\", implode("\\", [
|
||||
'ProVM',
|
||||
'Emails',
|
||||
'Model',
|
||||
str_replace([implode(DIRECTORY_SEPARATOR, [
|
||||
dirname(__FILE__, 3),
|
||||
'src',
|
||||
'Model'
|
||||
]), '/'], ['', "\\"], $folder),
|
||||
$file->getBasename(".{$file->getExtension()}")
|
||||
])), "\\");
|
||||
}
|
||||
return $classes;
|
||||
}
|
||||
$folder = implode(DIRECTORY_SEPARATOR, [
|
||||
dirname(__FILE__, 3),
|
||||
'src',
|
||||
'Model'
|
||||
]);
|
||||
return getClassesFromFolder($folder);
|
||||
}
|
||||
];
|
@ -1,4 +1,5 @@
|
||||
<?php
|
||||
return [
|
||||
'log_file' => '/logs/php.log'
|
||||
];
|
||||
'log_file' => '/logs/php.log',
|
||||
'logstash_socket' => 'localhost:50000'
|
||||
];
|
||||
|
@ -5,13 +5,13 @@ return [
|
||||
Ddeboer\Imap\ServerInterface::class => function(ContainerInterface $container) {
|
||||
$emails = $container->get('emails');
|
||||
if (isset($emails->port)) {
|
||||
return new \Ddeboer\Imap\Server($emails->host, $emails->port);
|
||||
return new Ddeboer\Imap\Server($emails->host, $emails->port);
|
||||
}
|
||||
return new \Ddeboer\Imap\Server($emails->host);
|
||||
return new Ddeboer\Imap\Server($emails->host);
|
||||
},
|
||||
\Ddeboer\Imap\ConnectionInterface::class => function(ContainerInterface $container) {
|
||||
Ddeboer\Imap\ConnectionInterface::class => function(ContainerInterface $container) {
|
||||
$emails = $container->get('emails');
|
||||
$server = $container->get(\Ddeboer\Imap\ServerInterface::class);
|
||||
$server = $container->get(Ddeboer\Imap\ServerInterface::class);
|
||||
return $server->authenticate($emails->username, $emails->password);
|
||||
},
|
||||
PDO::class => function(ContainerInterface $container) {
|
||||
|
@ -18,5 +18,20 @@ return [
|
||||
$container->get('attachments_folder'),
|
||||
$container->get(Psr\Log\LoggerInterface::class)
|
||||
);
|
||||
},
|
||||
ProVM\Common\Service\Mailboxes::class => function(ContainerInterface $container) {
|
||||
return new ProVM\Common\Service\Mailboxes(
|
||||
$container->get(ProVM\Emails\Repository\Mailbox::class),
|
||||
$container->get(ProVM\Common\Service\Remote\Mailboxes::class),
|
||||
$container->get(ProVM\Emails\Repository\State\Mailbox::class),
|
||||
$container->get(Psr\Log\LoggerInterface::class),
|
||||
$container->get('max_update_days')
|
||||
);
|
||||
},
|
||||
ProVM\Common\Service\Install::class => function(ContainerInterface $container) {
|
||||
return new ProVM\Common\Service\Install(
|
||||
$container->get(ProVM\Common\Factory\Model::class),
|
||||
$container->get('model_list')
|
||||
);
|
||||
}
|
||||
];
|
||||
|
@ -2,16 +2,15 @@
|
||||
use Psr\Container\ContainerInterface;
|
||||
|
||||
return [
|
||||
\ProVM\Common\Factory\Model::class => function(ContainerInterface $container) {
|
||||
$factory = new \ProVM\Common\Factory\Model($container);
|
||||
$repositories = [
|
||||
'Mailbox' => \ProVM\Emails\Repository\Mailbox::class,
|
||||
'Message' => \ProVM\Emails\Repository\Message::class,
|
||||
'Attachment' => \ProVM\Emails\Repository\Attachment::class,
|
||||
"State\\Mailbox" => \ProVM\Emails\Repository\State\Mailbox::class,
|
||||
"State\\Message" => \ProVM\Emails\Repository\State\Message::class,
|
||||
"State\\Attachment" => \ProVM\Emails\Repository\State\Attachment::class
|
||||
];
|
||||
return $factory->setRepositories($repositories);
|
||||
ProVM\Common\Factory\Model::class => function(ContainerInterface $container) {
|
||||
$factory = new ProVM\Common\Factory\Model($container);
|
||||
return $factory->setRepositories([
|
||||
'Mailbox' => ProVM\Emails\Repository\Mailbox::class,
|
||||
'Message' => ProVM\Emails\Repository\Message::class,
|
||||
'Attachment' => ProVM\Emails\Repository\Attachment::class,
|
||||
"State\\Mailbox" => ProVM\Emails\Repository\State\Mailbox::class,
|
||||
"State\\Message" => ProVM\Emails\Repository\State\Message::class,
|
||||
"State\\Attachment" => ProVM\Emails\Repository\State\Attachment::class
|
||||
]);
|
||||
}
|
||||
];
|
||||
];
|
||||
|
@ -10,5 +10,5 @@ return [
|
||||
},
|
||||
ProVM\Common\Middleware\Logging::class => function(ContainerInterface $container) {
|
||||
return new ProVM\Common\Middleware\Logging($container->get('request_logger'));
|
||||
}
|
||||
},
|
||||
];
|
||||
|
@ -2,10 +2,10 @@
|
||||
use Psr\Container\ContainerInterface;
|
||||
|
||||
return [
|
||||
\ProVM\Common\Middleware\Auth::class => function(ContainerInterface $container) {
|
||||
return new \ProVM\Common\Middleware\Auth(
|
||||
$container->get(\Nyholm\Psr7\Factory\Psr17Factory::class),
|
||||
$container->get(\Psr\Log\LoggerInterface::class),
|
||||
ProVM\Common\Middleware\Auth::class => function(ContainerInterface $container) {
|
||||
return new ProVM\Common\Middleware\Auth(
|
||||
$container->get(Nyholm\Psr7\Factory\Psr17Factory::class),
|
||||
$container->get(Psr\Log\LoggerInterface::class),
|
||||
$container->get('api_key')
|
||||
);
|
||||
}
|
||||
|
@ -2,31 +2,61 @@
|
||||
use Psr\Container\ContainerInterface;
|
||||
|
||||
return [
|
||||
Monolog\Handler\DeduplicationHandler::class => function(ContainerInterface $container) {
|
||||
return new Monolog\Handler\DeduplicationHandler($container->get(Monolog\Handler\RotatingFileHandler::class));
|
||||
'log_processors' => function(ContainerInterface $container) {
|
||||
return [
|
||||
$container->get(Monolog\Processor\PsrLogMessageProcessor::class),
|
||||
$container->get(Monolog\Processor\IntrospectionProcessor::class),
|
||||
$container->get(Monolog\Processor\MemoryPeakUsageProcessor::class),
|
||||
];
|
||||
},
|
||||
Monolog\Handler\RotatingFileHandler::class => function(ContainerInterface $container) {
|
||||
$handler = new Monolog\Handler\RotatingFileHandler($container->get('log_file'));
|
||||
$handler->setFormatter($container->get(Monolog\Formatter\SyslogFormatter::class));
|
||||
return $handler;
|
||||
'request_log_handler' => function(ContainerInterface $container) {
|
||||
return (new Monolog\Handler\RotatingFileHandler(implode(DIRECTORY_SEPARATOR, [$container->get('logs_folder'), 'requests.log'])))
|
||||
->setFormatter(new Monolog\Formatter\LineFormatter(null, null, true));
|
||||
},
|
||||
'request_logger' => function(ContainerInterface $container) {
|
||||
$logger = new Monolog\Logger('request_logger');
|
||||
$handler = new Monolog\Handler\RotatingFileHandler(implode(DIRECTORY_SEPARATOR, [$container->get('logs_folder'), 'requests.log']));
|
||||
$handler->setFormatter($container->get(Monolog\Formatter\SyslogFormatter::class));
|
||||
$dedupHandler = new Monolog\Handler\DeduplicationHandler($handler, null, Monolog\Level::Info);
|
||||
$logger->pushHandler($dedupHandler);
|
||||
$logger->pushProcessor($container->get(Monolog\Processor\PsrLogMessageProcessor::class));
|
||||
$logger->pushProcessor($container->get(Monolog\Processor\IntrospectionProcessor::class));
|
||||
$logger->pushProcessor($container->get(Monolog\Processor\MemoryUsageProcessor::class));
|
||||
return $logger;
|
||||
return new Monolog\Logger(
|
||||
'request_logger',
|
||||
[$container->get('request_log_handler')],
|
||||
$container->get('log_processors')
|
||||
);
|
||||
},
|
||||
'file_log_handler' => function(ContainerInterface $container) {
|
||||
return new Monolog\Handler\FilterHandler(
|
||||
(new Monolog\Handler\RotatingFileHandler($container->get('log_file')))
|
||||
->setFormatter(new Monolog\Formatter\LineFormatter(null, null, true)),
|
||||
Monolog\Level::Error
|
||||
);
|
||||
},
|
||||
'debug_log_handler' => function(ContainerInterface $container) {
|
||||
return new Monolog\Handler\FilterHandler(
|
||||
(new Monolog\Handler\RotatingFileHandler(implode(DIRECTORY_SEPARATOR, [$container->get('logs_folder'), 'debug.log'])))
|
||||
->setFormatter(new Monolog\Formatter\LineFormatter(null, null, true)),
|
||||
Monolog\Level::Debug,
|
||||
Monolog\Level::Warning
|
||||
);
|
||||
},
|
||||
Psr\Log\LoggerInterface::class => function(ContainerInterface $container) {
|
||||
$logger = new Monolog\Logger('file_logger');
|
||||
$logger->pushHandler($container->get(Monolog\Handler\DeduplicationHandler::class));
|
||||
$logger->pushProcessor($container->get(Monolog\Processor\PsrLogMessageProcessor::class));
|
||||
$logger->pushProcessor($container->get(Monolog\Processor\IntrospectionProcessor::class));
|
||||
$logger->pushProcessor($container->get(Monolog\Processor\MemoryUsageProcessor::class));
|
||||
return $logger;
|
||||
return $container->get('elk_logger');
|
||||
},
|
||||
'file_logger' => function(ContainerInterface $container) {
|
||||
return new Monolog\Logger(
|
||||
'file',
|
||||
[
|
||||
$container->get('file_log_handler'),
|
||||
$container->get('debug_log_handler')
|
||||
],
|
||||
$container->get('log_processors')
|
||||
);
|
||||
},
|
||||
'elk_logger' => function(ContainerInterface $container) {
|
||||
return new Monolog\Logger('elk', [
|
||||
(new Monolog\Handler\SocketHandler($container->get('logstash_socket')))
|
||||
->setFormatter(new Monolog\Formatter\LogstashFormatter('emails', 'docker'))
|
||||
], [
|
||||
new Monolog\Processor\PsrLogMessageProcessor(),
|
||||
new Monolog\Processor\WebProcessor(),
|
||||
new Monolog\Processor\IntrospectionProcessor(),
|
||||
new Monolog\Processor\MemoryPeakUsageProcessor()
|
||||
]);
|
||||
}
|
||||
];
|
||||
|
Reference in New Issue
Block a user