- ✅ Ticket 1.1: Estructura Clean Architecture en backend - ✅ Ticket 1.2: Schemas Zod compartidos - ✅ Ticket 1.3: Refactorización drugs.ts (1362 → 8 archivos modulares) - ✅ Ticket 1.4: Refactorización procedures.ts (3583 → 6 archivos modulares) - ✅ Ticket 1.5: Eliminación de duplicidades (~50 líneas) Cambios principales: - Creada estructura Clean Architecture en backend/src/ - Schemas Zod compartidos en backend/src/shared/schemas/ - Refactorización modular de drugs y procedures - Utilidades genéricas en src/utils/ (filter, validation) - Eliminados scripts obsoletos y documentación antigua - Corregidos errores: QueryClient, import test-error-handling - Build verificado y funcionando correctamente
93 lines
1.9 KiB
JavaScript
93 lines
1.9 KiB
JavaScript
/*
|
|
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
|
|
}
|
|
]
|
|
};
|
|
}
|
|
|
|
module.exports = accesslog;
|