Lines
8.57%
3 / 35
Methods
16.66%
1 / 6
Classes
0.00%
0 / 1
| Name | Lines | Methods | CRAP | ||||
|---|---|---|---|---|---|---|---|
| getNow | 100.00% | 3 / 3 | 100.00% | 1 / 1 | 2 | ||
| initializeLogger | 0.00% | 0 / 11 | 0.00% | 0 / 1 | 132 | ||
| initializeRequestLimits | 0.00% | 0 / 2 | 0.00% | 0 / 1 | 12 | ||
| getLoggerConfig | 0.00% | 0 / 12 | 0.00% | 0 / 1 | 2 | ||
| getRequestLimits | 0.00% | 0 / 4 | 0.00% | 0 / 1 | 2 | ||
| initialize | 0.00% | 0 / 3 | 0.00% | 0 / 1 | 2 | ||
| 36 | class Application extends \BO\Slim\Application | |
| 37 | { | |
| 38 | use CacheInitializationTrait; | |
| 39 | ||
| 40 | const string IDENTIFIER = 'zms'; | |
| 41 | ||
| 42 | const string MODULE_NAME = 'zmsbackend'; | |
| 43 | ||
| 44 | public static ?CacheInterface $cache = null; | |
| 45 | public static string $CACHE_DIR; | |
| 46 | public static int $SOURCE_CACHE_TTL; | |
| 47 | ||
| 48 | public static int $LOGGER_MAX_REQUESTS; | |
| 49 | public static int $LOGGER_MAX_ERROR_REQUESTS; | |
| 50 | public static int $LOGGER_RESPONSE_LENGTH; | |
| 51 | public static int $LOGGER_STACK_LINES; | |
| 52 | public static int $LOGGER_MESSAGE_SIZE; | |
| 53 | public static int $LOGGER_CACHE_TTL; | |
| 54 | public static int $LOGGER_MAX_RETRIES; | |
| 55 | public static int $LOGGER_BACKOFF_MIN; | |
| 56 | public static int $LOGGER_BACKOFF_MAX; | |
| 57 | public static int $LOGGER_LOCK_TIMEOUT; | |
| 58 | ||
| 59 | public static int $MAX_STRING_LENGTH; | |
| 60 | public static int $MAX_RECURSION_DEPTH; | |
| 61 | ||
| 62 | const bool DEBUG = false; | |
| 63 | const TWIG_CACHE = ZMS_BACKEND_TWIG_CACHE; | |
| 64 | const SESSION_DURATION = ZMSBACKEND_SESSION_DURATION; | |
| 65 | ||
| 66 | const bool DB_ENABLE_WSREPSYNCWAIT = false; | |
| 67 | const bool RIGHTSCHECK_ENABLED = true; | |
| 68 | ||
| 69 | const string DB_DSN_READONLY = 'mysql:dbname=zmsbo;host=127.0.0.1'; | |
| 70 | const string DB_DSN_READWRITE = 'mysql:dbname=zmsbo;host=127.0.0.1'; | |
| 71 | const string DB_STARTINFO = 'startinfo'; | |
| 72 | const string DB_USERNAME = 'server'; | |
| 73 | const string DB_PASSWORD = 'internet'; | |
| 74 | const bool DB_IS_GALERA = true; | |
| 75 | const string SECURE_TOKEN = ZMS_CONFIG_SECURE_TOKEN; | |
| 76 | ||
| 77 | public static $locale = 'de'; | |
| 78 | public static array $supportedLanguages = [ | |
| 79 | 'de' => [ | |
| 80 | 'name' => 'Deutsch', | |
| 81 | 'locale' => 'de_DE.utf-8', | |
| 82 | 'default' => true, | |
| 83 | ], | |
| 84 | ]; | |
| 85 | ||
| 86 | public static $data = '/data'; | |
| 87 | public static ?\DateTimeInterface $now = null; | |
| 88 | ||
| 89 | /** | |
| 90 | * @psalm-api | |
| 91 | */ | |
| 92 | public static function getNow(): \DateTimeInterface | |
| 93 | { | |
| 94 | if (self::$now instanceof \DateTimeInterface) { | |
| 95 | return self::$now; | |
| 96 | } | |
| 97 | return new \DateTimeImmutable(); | |
| 98 | } | |
| 99 | ||
| 100 | /** | |
| 101 | * @SuppressWarnings(PHPMD.NPathComplexity) | |
| 102 | */ | |
| 103 | private static function initializeLogger(): void | |
| 104 | { | |
| 105 | self::$LOGGER_MAX_REQUESTS = (int) (getenv('ZMS_BACKEND_LOGGER_MAX_REQUESTS') ?: 1000); | |
| 106 | self::$LOGGER_MAX_ERROR_REQUESTS = (int) (getenv('ZMS_BACKEND_LOGGER_MAX_ERROR_REQUESTS') ?: 0); | |
| 107 | self::$LOGGER_RESPONSE_LENGTH = (int) (getenv('ZMS_BACKEND_LOGGER_RESPONSE_LENGTH') ?: 1048576); | |
| 108 | self::$LOGGER_STACK_LINES = (int) (getenv('ZMS_BACKEND_LOGGER_STACK_LINES') ?: 20); | |
| 109 | self::$LOGGER_MESSAGE_SIZE = (int) (getenv('ZMS_BACKEND_LOGGER_MESSAGE_SIZE') ?: 8192); | |
| 110 | self::$LOGGER_CACHE_TTL = (int) (getenv('ZMS_BACKEND_LOGGER_CACHE_TTL') ?: 60); | |
| 111 | self::$LOGGER_MAX_RETRIES = (int) (getenv('ZMS_BACKEND_LOGGER_MAX_RETRIES') ?: 3); | |
| 112 | self::$LOGGER_BACKOFF_MIN = (int) (getenv('ZMS_BACKEND_LOGGER_BACKOFF_MIN') ?: 100); | |
| 113 | self::$LOGGER_BACKOFF_MAX = (int) (getenv('ZMS_BACKEND_LOGGER_BACKOFF_MAX') ?: 1000); | |
| 114 | self::$LOGGER_LOCK_TIMEOUT = (int) (getenv('ZMS_BACKEND_LOGGER_LOCK_TIMEOUT') ?: 5); | |
| 115 | LoggerService::configure(self::getLoggerConfig()); | |
| 116 | } | |
| 117 | ||
| 118 | private static function initializeRequestLimits(): void | |
| 119 | { | |
| 120 | self::$MAX_STRING_LENGTH = (int) (getenv('MAX_STRING_LENGTH') ?: 32768); | |
| 121 | self::$MAX_RECURSION_DEPTH = (int) (getenv('MAX_RECURSION_DEPTH') ?: 10); | |
| 122 | } | |
| 123 | ||
| 124 | public static function getLoggerConfig(): array | |
| 125 | { | |
| 126 | return [ | |
| 127 | 'maxRequests' => self::$LOGGER_MAX_REQUESTS, | |
| 128 | 'maxErrorRequests' => self::$LOGGER_MAX_ERROR_REQUESTS, | |
| 129 | 'responseLength' => self::$LOGGER_RESPONSE_LENGTH, | |
| 130 | 'stackLines' => self::$LOGGER_STACK_LINES, | |
| 131 | 'messageSize' => self::$LOGGER_MESSAGE_SIZE, | |
| 132 | 'cacheTtl' => self::$LOGGER_CACHE_TTL, | |
| 133 | 'maxRetries' => self::$LOGGER_MAX_RETRIES, | |
| 134 | 'backoffMin' => self::$LOGGER_BACKOFF_MIN, | |
| 135 | 'backoffMax' => self::$LOGGER_BACKOFF_MAX, | |
| 136 | 'lockTimeout' => self::$LOGGER_LOCK_TIMEOUT, | |
| 137 | ]; | |
| 138 | } | |
| 139 | ||
| 140 | /** @psalm-api */ | |
| 141 | public static function getRequestLimits(): array | |
| 142 | { | |
| 143 | return [ | |
| 144 | 'maxStringLength' => self::$MAX_STRING_LENGTH, | |
| 145 | 'maxRecursionDepth' => self::$MAX_RECURSION_DEPTH, | |
| 146 | ]; | |
| 147 | } | |
| 148 | ||
| 149 | public static function initialize(): void | |
| 150 | { | |
| 151 | self::initializeLogger(); | |
| 152 | self::initializeCache(__DIR__ . '/cache'); | |
| 153 | self::initializeRequestLimits(); | |
| 154 | } | |
| 155 | } |