@@ -49,7 +49,7 @@ discard block |
||
| 49 | 49 | * @access protected |
| 50 | 50 | * @var array |
| 51 | 51 | */ |
| 52 | - protected $patterns = []; |
|
| 52 | + protected $patterns = [ ]; |
|
| 53 | 53 | |
| 54 | 54 | /** |
| 55 | 55 | * Constructor |
@@ -77,7 +77,7 @@ discard block |
||
| 77 | 77 | */ |
| 78 | 78 | public function addPattern(string $placeholder, string $pattern): void |
| 79 | 79 | { |
| 80 | - $this->patterns[$placeholder] = $pattern; |
|
| 80 | + $this->patterns[ $placeholder ] = $pattern; |
|
| 81 | 81 | } |
| 82 | 82 | |
| 83 | 83 | /** |
@@ -103,7 +103,7 @@ discard block |
||
| 103 | 103 | public function setFormat(string $format): void |
| 104 | 104 | { |
| 105 | 105 | // store log format update IP pattern |
| 106 | - $this->logFormat = $format ; |
|
| 106 | + $this->logFormat = $format; |
|
| 107 | 107 | $this->updateIpPatterns(); |
| 108 | 108 | |
| 109 | 109 | // strtr won't work for "complex" header patterns |
@@ -54,47 +54,47 @@ |
||
| 54 | 54 | $this->addFile('apache.log'); |
| 55 | 55 | $this->addFile('apache_access.log'); |
| 56 | 56 | |
| 57 | - $this->addFormat('apache_common', '%h %l %u %t \"%r\" %>s %O"'); |
|
| 58 | - $this->addFormat('apache_combined_vhost', '%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"'); |
|
| 59 | - $this->addFormat('apache_combined', '%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"'); |
|
| 57 | + $this->addFormat('apache_common', '%h %l %u %t \"%r\" %>s %O"'); |
|
| 58 | + $this->addFormat('apache_combined_vhost', '%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"'); |
|
| 59 | + $this->addFormat('apache_combined', '%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"'); |
|
| 60 | 60 | |
| 61 | - $this->addColumn('%%' , 'percent', '', '(?P<percent>\%)'); |
|
| 62 | - $this->addColumn('%t' , 'time', 'Date', '\[(?P<time>\d{2}/(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)/\d{4}:\d{2}:\d{2}:\d{2} (?:-|\+)\d{4})\]'); |
|
| 63 | - $this->addColumn('%v' , 'serverName', 'ServerName', '(?P<serverName>([a-zA-Z0-9]+)([a-z0-9.-]*))'); |
|
| 64 | - $this->addColumn('%V' , 'canonicalServerName', 'Canonical ServerName', '(?P<canonicalServerName>([a-zA-Z0-9]+)([a-z0-9.-]*))'); |
|
| 65 | - $this->addColumn('%p' , 'port', 'Port', '(?P<port>\d+)'); |
|
| 61 | + $this->addColumn('%%', 'percent', '', '(?P<percent>\%)'); |
|
| 62 | + $this->addColumn('%t', 'time', 'Date', '\[(?P<time>\d{2}/(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)/\d{4}:\d{2}:\d{2}:\d{2} (?:-|\+)\d{4})\]'); |
|
| 63 | + $this->addColumn('%v', 'serverName', 'ServerName', '(?P<serverName>([a-zA-Z0-9]+)([a-z0-9.-]*))'); |
|
| 64 | + $this->addColumn('%V', 'canonicalServerName', 'Canonical ServerName', '(?P<canonicalServerName>([a-zA-Z0-9]+)([a-z0-9.-]*))'); |
|
| 65 | + $this->addColumn('%p', 'port', 'Port', '(?P<port>\d+)'); |
|
| 66 | 66 | |
| 67 | 67 | // Client IP address of the request |
| 68 | - $this->addColumn('%a', 'remoteIp', 'IP', '(?P<remoteIp>{{PATTERN_IP_ALL}})'); |
|
| 68 | + $this->addColumn('%a', 'remoteIp', 'IP', '(?P<remoteIp>{{PATTERN_IP_ALL}})'); |
|
| 69 | 69 | |
| 70 | 70 | // Remote hostname |
| 71 | - $this->addColumn('%h' , 'host', 'Remote Host', '(?P<host>[a-zA-Z0-9\-\._:]+)'); |
|
| 71 | + $this->addColumn('%h', 'host', 'Remote Host', '(?P<host>[a-zA-Z0-9\-\._:]+)'); |
|
| 72 | 72 | |
| 73 | 73 | // Local IP-address |
| 74 | - $this->addColumn('%A', 'localIp', 'Local IP', '(?P<localIp>{{PATTERN_IP_ALL}})'); |
|
| 74 | + $this->addColumn('%A', 'localIp', 'Local IP', '(?P<localIp>{{PATTERN_IP_ALL}})'); |
|
| 75 | 75 | |
| 76 | 76 | // Remote user if the request was authenticated. May be bogus if return status (%s) is 401 (unauthorized). |
| 77 | - $this->addColumn('%u', 'user', 'User', '(?P<user>(?:-|[\w\-\.]+))'); |
|
| 78 | - |
|
| 79 | - $this->addColumn('%l', 'logname', 'Log Name', '(?P<logname>(?:-|[\w-]+))'); |
|
| 80 | - $this->addColumn('%m', 'requestMethod', 'Method', '(?P<requestMethod>OPTIONS|GET|HEAD|POST|PUT|DELETE|TRACE|CONNECT|PATCH|PROPFIND)'); |
|
| 81 | - $this->addColumn('%U', 'URL', 'URL', '(?P<URL>.+?)'); |
|
| 82 | - $this->addColumn('%H', 'requestProtocol', 'Protocol', '(?P<requestProtocol>HTTP/(1\.0|1\.1|2\.0))'); |
|
| 83 | - $this->addColumn('%r', 'request', 'Request', '(?P<request>(?:(?:[A-Z]+) .+? HTTP/(1\.0|1\.1|2\.0))|-|)'); |
|
| 84 | - $this->addColumn('%>s','statuts', 'Status', '(?P<status>\d{3}|-)'); |
|
| 85 | - $this->addColumn('%O', 'sentBytes', 'Size', '(?P<sentBytes>[0-9]+)'); |
|
| 77 | + $this->addColumn('%u', 'user', 'User', '(?P<user>(?:-|[\w\-\.]+))'); |
|
| 78 | + |
|
| 79 | + $this->addColumn('%l', 'logname', 'Log Name', '(?P<logname>(?:-|[\w-]+))'); |
|
| 80 | + $this->addColumn('%m', 'requestMethod', 'Method', '(?P<requestMethod>OPTIONS|GET|HEAD|POST|PUT|DELETE|TRACE|CONNECT|PATCH|PROPFIND)'); |
|
| 81 | + $this->addColumn('%U', 'URL', 'URL', '(?P<URL>.+?)'); |
|
| 82 | + $this->addColumn('%H', 'requestProtocol', 'Protocol', '(?P<requestProtocol>HTTP/(1\.0|1\.1|2\.0))'); |
|
| 83 | + $this->addColumn('%r', 'request', 'Request', '(?P<request>(?:(?:[A-Z]+) .+? HTTP/(1\.0|1\.1|2\.0))|-|)'); |
|
| 84 | + $this->addColumn('%>s', 'statuts', 'Status', '(?P<status>\d{3}|-)'); |
|
| 85 | + $this->addColumn('%O', 'sentBytes', 'Size', '(?P<sentBytes>[0-9]+)'); |
|
| 86 | 86 | |
| 87 | 87 | // Size of response in bytes, excluding HTTP headers. In CLF format, i.e. a '-' rather than a 0 when no bytes are sent. |
| 88 | - $this->addColumn('%b', 'responseBytes', 'Response Size', '(?P<responseBytes>(\d+|-))'); |
|
| 88 | + $this->addColumn('%b', 'responseBytes', 'Response Size', '(?P<responseBytes>(\d+|-))'); |
|
| 89 | 89 | |
| 90 | 90 | //The time taken to serve the request, in seconds. |
| 91 | - $this->addColumn('%T', 'requestTime', 'Request Time', '(?P<requestTime>(\d+\.?\d*))'); |
|
| 92 | - $this->addColumn('%D', 'timeServeRequest', 'Time Server Request', '(?P<timeServeRequest>[0-9]+)'); |
|
| 93 | - $this->addColumn('%I', 'receivedBytes', 'Received Bytes', '(?P<receivedBytes>[0-9]+)'); |
|
| 91 | + $this->addColumn('%T', 'requestTime', 'Request Time', '(?P<requestTime>(\d+\.?\d*))'); |
|
| 92 | + $this->addColumn('%D', 'timeServeRequest', 'Time Server Request', '(?P<timeServeRequest>[0-9]+)'); |
|
| 93 | + $this->addColumn('%I', 'receivedBytes', 'Received Bytes', '(?P<receivedBytes>[0-9]+)'); |
|
| 94 | 94 | |
| 95 | 95 | // common named columns (no pattern, use generic pattern bellow) |
| 96 | - $this->addColumn('%{Referer}i', 'headerReferer', 'Referer', ''); |
|
| 97 | - $this->addColumn('%{User-Agent}i', 'headerUserAgent', 'User Agent', ''); |
|
| 96 | + $this->addColumn('%{Referer}i', 'headerReferer', 'Referer', ''); |
|
| 97 | + $this->addColumn('%{User-Agent}i', 'headerUserAgent', 'User Agent', ''); |
|
| 98 | 98 | |
| 99 | 99 | // dymanic named columns |
| 100 | 100 | $this->addPattern('\%\{(?P<name>[a-zA-Z]+)(?P<name2>[-]?)(?P<name3>[a-zA-Z]+)\}i', '(?P<header\\1\\3>.*?)'); |
@@ -44,7 +44,7 @@ |
||
| 44 | 44 | $this->defaultFormat = '%t %s %p %l %m'; |
| 45 | 45 | $this->addPath("/var/log/"); |
| 46 | 46 | $this->addFile("fail2ban.log"); |
| 47 | - // '%d' => '(?P<date>[\d \-,:]+)', |
|
| 47 | + // '%d' => '(?P<date>[\d \-,:]+)', |
|
| 48 | 48 | $this->addColumn('%t', 'time', 'Date', '(?P<time>[\d \-:]+)(,\d+)'); |
| 49 | 49 | $this->addColumn('%s', 'service', 'Service', '(?P<service>[\w\d\. :]+(|\s+))'); |
| 50 | 50 | $this->addColumn('%p', 'pid', 'PID', '\[(?P<pid>\d+)\]:'); |
@@ -41,15 +41,15 @@ |
||
| 41 | 41 | $this->software = 'Fail2ban'; |
| 42 | 42 | $this->prettyName = 'Fail2ban'; |
| 43 | 43 | $this->addFormat('default', '%t %s %p %l %m'); |
| 44 | - $this->defaultFormat = '%t %s %p %l %m'; |
|
| 44 | + $this->defaultFormat = '%t %s %p %l %m'; |
|
| 45 | 45 | $this->addPath("/var/log/"); |
| 46 | 46 | $this->addFile("fail2ban.log"); |
| 47 | 47 | // '%d' => '(?P<date>[\d \-,:]+)', |
| 48 | - $this->addColumn('%t', 'time', 'Date', '(?P<time>[\d \-:]+)(,\d+)'); |
|
| 49 | - $this->addColumn('%s', 'service', 'Service', '(?P<service>[\w\d\. :]+(|\s+))'); |
|
| 50 | - $this->addColumn('%p', 'pid', 'PID', '\[(?P<pid>\d+)\]:'); |
|
| 51 | - $this->addColumn('%l', 'level', 'Level', '(?P<level>(Level \d+|DEBUG|INFO|NOTICE|WARNING|ERROR|CRITICAL)(|\s+))'); |
|
| 52 | - $this->addColumn('%m', 'message', 'Message', '(?P<message>.+)'); |
|
| 48 | + $this->addColumn('%t', 'time', 'Date', '(?P<time>[\d \-:]+)(,\d+)'); |
|
| 49 | + $this->addColumn('%s', 'service', 'Service', '(?P<service>[\w\d\. :]+(|\s+))'); |
|
| 50 | + $this->addColumn('%p', 'pid', 'PID', '\[(?P<pid>\d+)\]:'); |
|
| 51 | + $this->addColumn('%l', 'level', 'Level', '(?P<level>(Level \d+|DEBUG|INFO|NOTICE|WARNING|ERROR|CRITICAL)(|\s+))'); |
|
| 52 | + $this->addColumn('%m', 'message', 'Message', '(?P<message>.+)'); |
|
| 53 | 53 | |
| 54 | 54 | parent::__construct($format, $factory); |
| 55 | 55 | } |
@@ -40,16 +40,16 @@ |
||
| 40 | 40 | $this->prettyName = 'Syslog'; |
| 41 | 41 | |
| 42 | 42 | $this->addFormat('default', '%t %h %s %m'); |
| 43 | - $this->defaultFormat = '%t %h %s %m'; |
|
| 43 | + $this->defaultFormat = '%t %h %s %m'; |
|
| 44 | 44 | |
| 45 | 45 | $this->addPath("/var/log/"); |
| 46 | 46 | $this->addFile("syslog"); |
| 47 | 47 | //todo |
| 48 | 48 | |
| 49 | - $this->addColumn('%t', 'time', 'Date', '(?P<time>(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d{2} \d{2}:\d{2}:\d{2})'); |
|
| 50 | - $this->addColumn('%h', 'hostaname', 'Hostname', '(?P<hostname>.+?)'); |
|
| 51 | - $this->addColumn('%s', 'service', 'Service', '(?P<service>(\S+|\[\d+\])):'); |
|
| 52 | - $this->addColumn('%m', 'message', 'Message', '(?P<message>.+)'); |
|
| 49 | + $this->addColumn('%t', 'time', 'Date', '(?P<time>(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d{2} \d{2}:\d{2}:\d{2})'); |
|
| 50 | + $this->addColumn('%h', 'hostaname', 'Hostname', '(?P<hostname>.+?)'); |
|
| 51 | + $this->addColumn('%s', 'service', 'Service', '(?P<service>(\S+|\[\d+\])):'); |
|
| 52 | + $this->addColumn('%m', 'message', 'Message', '(?P<message>.+)'); |
|
| 53 | 53 | |
| 54 | 54 | parent::__construct($format, $factory); |
| 55 | 55 | } |
@@ -53,12 +53,12 @@ discard block |
||
| 53 | 53 | /** |
| 54 | 54 | * @var array |
| 55 | 55 | */ |
| 56 | - protected $knownFormats = []; |
|
| 56 | + protected $knownFormats = [ ]; |
|
| 57 | 57 | |
| 58 | 58 | /** |
| 59 | 59 | * @var array |
| 60 | 60 | */ |
| 61 | - protected $columns = []; |
|
| 61 | + protected $columns = [ ]; |
|
| 62 | 62 | |
| 63 | 63 | /** |
| 64 | 64 | * The log file names |
@@ -66,7 +66,7 @@ discard block |
||
| 66 | 66 | * @access protected |
| 67 | 67 | * @var array |
| 68 | 68 | */ |
| 69 | - protected $files = []; |
|
| 69 | + protected $files = [ ]; |
|
| 70 | 70 | |
| 71 | 71 | /** |
| 72 | 72 | * The log file paths |
@@ -74,7 +74,7 @@ discard block |
||
| 74 | 74 | * @access protected |
| 75 | 75 | * @var array |
| 76 | 76 | */ |
| 77 | - protected $paths = []; |
|
| 77 | + protected $paths = [ ]; |
|
| 78 | 78 | |
| 79 | 79 | /** |
| 80 | 80 | * Constructor |
@@ -125,7 +125,7 @@ discard block |
||
| 125 | 125 | */ |
| 126 | 126 | protected function addFormat(string $name, string $format): void |
| 127 | 127 | { |
| 128 | - $this->knownFormats[$name] = $format; |
|
| 128 | + $this->knownFormats[ $name ] = $format; |
|
| 129 | 129 | } |
| 130 | 130 | |
| 131 | 131 | /** |
@@ -150,7 +150,7 @@ discard block |
||
| 150 | 150 | */ |
| 151 | 151 | protected function addFile(string $fileName): void |
| 152 | 152 | { |
| 153 | - $this->files[] = $fileName; |
|
| 153 | + $this->files[ ] = $fileName; |
|
| 154 | 154 | } |
| 155 | 155 | |
| 156 | 156 | /** |
@@ -176,7 +176,7 @@ discard block |
||
| 176 | 176 | */ |
| 177 | 177 | protected function addPath(string $path): void |
| 178 | 178 | { |
| 179 | - $this->paths[] = $path; |
|
| 179 | + $this->paths[ ] = $path; |
|
| 180 | 180 | } |
| 181 | 181 | |
| 182 | 182 | /** |
@@ -205,7 +205,7 @@ discard block |
||
| 205 | 205 | */ |
| 206 | 206 | protected function addColumn(string $placeholder, string $propertyName, string $prettyName, string $pattern, bool $required = true): void |
| 207 | 207 | { |
| 208 | - $this->columns[] = [ |
|
| 208 | + $this->columns[ ] = [ |
|
| 209 | 209 | 'placeholder' => $placeholder, |
| 210 | 210 | 'propertyName' => $propertyName, |
| 211 | 211 | 'prettyName' => $prettyName, |
@@ -213,15 +213,15 @@ discard block |
||
| 213 | 213 | 'required' => $required, |
| 214 | 214 | ]; |
| 215 | 215 | |
| 216 | - if (!empty($pattern)){ |
|
| 216 | + if (!empty($pattern)) { |
|
| 217 | 217 | |
| 218 | 218 | // optional columns ? |
| 219 | 219 | // adjust pattern for nullable columns and add space after placeholder |
| 220 | 220 | // - $format = '%t %l %P %E: %a %M'; |
| 221 | 221 | // + $format = '%t %l (%P )?(%E: )?(%a )?%M'; |
| 222 | 222 | $this->addPattern( |
| 223 | - $required ? $placeholder : $placeholder . ' ' , |
|
| 224 | - $required ? $pattern : '(' . $pattern . ' )?' |
|
| 223 | + $required ? $placeholder : $placeholder.' ', |
|
| 224 | + $required ? $pattern : '('.$pattern.' )?' |
|
| 225 | 225 | ); |
| 226 | 226 | } |
| 227 | 227 | } |
@@ -235,10 +235,10 @@ discard block |
||
| 235 | 235 | */ |
| 236 | 236 | public function getColumns() |
| 237 | 237 | { |
| 238 | - $cols = []; |
|
| 239 | - foreach ($this->columns as $column){ |
|
| 240 | - if (strpos($this->getFormat(), $column['placeholder']) !== false){ |
|
| 241 | - $cols[] = $column; |
|
| 238 | + $cols = [ ]; |
|
| 239 | + foreach ($this->columns as $column) { |
|
| 240 | + if (strpos($this->getFormat(), $column[ 'placeholder' ]) !== false) { |
|
| 241 | + $cols[ ] = $column; |
|
| 242 | 242 | } |
| 243 | 243 | } |
| 244 | 244 | return $cols; |
@@ -69,22 +69,22 @@ |
||
| 69 | 69 | $this->addFile('error_log'); |
| 70 | 70 | $this->addFile("apache_error.log"); |
| 71 | 71 | |
| 72 | - $this->addColumn('%%' , 'percent', '', '(?P<percent>\%)'); |
|
| 73 | - $this->addColumn('%t' , 'time', 'Date', '\[(?P<time>(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun) (?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d{2} \d{2}:\d{2}:\d{2}(\.\d{6}|) \d{4})\]'); |
|
| 72 | + $this->addColumn('%%', 'percent', '', '(?P<percent>\%)'); |
|
| 73 | + $this->addColumn('%t', 'time', 'Date', '\[(?P<time>(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun) (?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d{2} \d{2}:\d{2}:\d{2}(\.\d{6}|) \d{4})\]'); |
|
| 74 | 74 | |
| 75 | 75 | // %a Client IP address and port of the request |
| 76 | - $this->addColumn('%a' , 'remoteIP', 'IP', '\[client (?P<remoteIp>{{PATTERN_IP_ALL}})(:[\d]+|)\]', false); |
|
| 76 | + $this->addColumn('%a', 'remoteIP', 'IP', '\[client (?P<remoteIp>{{PATTERN_IP_ALL}})(:[\d]+|)\]', false); |
|
| 77 | 77 | |
| 78 | - $this->addColumn('%A', 'localIP', 'Local IP', '(?P<localIp>{{PATTERN_IP_ALL}})', false); |
|
| 78 | + $this->addColumn('%A', 'localIP', 'Local IP', '(?P<localIp>{{PATTERN_IP_ALL}})', false); |
|
| 79 | 79 | |
| 80 | 80 | // %l Loglevel of the message |
| 81 | - $this->addColumn('%l', 'level', 'Level', '\[(?P<level>[\w:]+)\]'); |
|
| 81 | + $this->addColumn('%l', 'level', 'Level', '\[(?P<level>[\w:]+)\]'); |
|
| 82 | 82 | |
| 83 | 83 | // %P Process ID of current process (since apache 2.4?) |
| 84 | - $this->addColumn('%P', 'pid', 'PID', '\[pid (?P<pid>\d+)\]', false); |
|
| 84 | + $this->addColumn('%P', 'pid', 'PID', '\[pid (?P<pid>\d+)\]', false); |
|
| 85 | 85 | |
| 86 | 86 | // %E APR/OS error status code and string |
| 87 | - $this->addColumn('%E:' , 'errorCode', 'Error', '(?P<errorCode>[\w\d\s:]+):', false); |
|
| 87 | + $this->addColumn('%E:', 'errorCode', 'Error', '(?P<errorCode>[\w\d\s:]+):', false); |
|
| 88 | 88 | |
| 89 | 89 | // %M The actual log message |
| 90 | 90 | $this->addColumn('%M', 'message', 'Message', '(?P<message>.+?)'); |
@@ -44,7 +44,7 @@ |
||
| 44 | 44 | */ |
| 45 | 45 | public static function getParser(string $logType, string $format = null, LogEntryFactoryInterface $factory = null): ?SoftwareLogParser |
| 46 | 46 | { |
| 47 | - switch ($logType){ |
|
| 47 | + switch ($logType) { |
|
| 48 | 48 | |
| 49 | 49 | case self::TYPE_APACHE_ACCESS: |
| 50 | 50 | return new \Kristuff\Parselog\Software\ApacheAccessLogParser($format, $factory); |