1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- /*
- Language: Apache Access Log
- Author: Oleg Efimov <efimovov@gmail.com>
- Description: Apache/Nginx Access Logs
- Website: https://httpd.apache.org/docs/2.4/logs.html#accesslog
- Category: web, logs
- Audit: 2020
- */
- /** @type LanguageFn */
- function accesslog(hljs) {
- const regex = hljs.regex;
- // https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods
- const HTTP_VERBS = [
- "GET",
- "POST",
- "HEAD",
- "PUT",
- "DELETE",
- "CONNECT",
- "OPTIONS",
- "PATCH",
- "TRACE"
- ];
- return {
- name: 'Apache Access Log',
- contains: [
- // IP
- {
- className: 'number',
- begin: /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(:\d{1,5})?\b/,
- relevance: 5
- },
- // Other numbers
- {
- className: 'number',
- begin: /\b\d+\b/,
- relevance: 0
- },
- // Requests
- {
- className: 'string',
- begin: regex.concat(/"/, regex.either(...HTTP_VERBS)),
- end: /"/,
- keywords: HTTP_VERBS,
- illegal: /\n/,
- relevance: 5,
- contains: [
- {
- begin: /HTTP\/[12]\.\d'/,
- relevance: 5
- }
- ]
- },
- // Dates
- {
- className: 'string',
- // dates must have a certain length, this prevents matching
- // simple array accesses a[123] and [] and other common patterns
- // found in other languages
- begin: /\[\d[^\]\n]{8,}\]/,
- illegal: /\n/,
- relevance: 1
- },
- {
- className: 'string',
- begin: /\[/,
- end: /\]/,
- illegal: /\n/,
- relevance: 0
- },
- // User agent / relevance boost
- {
- className: 'string',
- begin: /"Mozilla\/\d\.\d \(/,
- end: /"/,
- illegal: /\n/,
- relevance: 3
- },
- // Strings
- {
- className: 'string',
- begin: /"/,
- end: /"/,
- illegal: /\n/,
- relevance: 0
- }
- ]
- };
- }
- export { accesslog as default };
|