
Zeek Notice Telegram (edición ZeekJS)
Este paquete reimplementa zeek-notice-telegram en TypeScript (ZeekJS) para sortear la falta de fiabilidad de ActiveHTTP.
Toma prestado tanto el paquete de Yacin mencionado anteriormente como la reimplementación ZeekJS de la inspiración original de ese paquete (zeek-notice-slack), que ahora es zeekjs-notice-slack.
Se puede regenerar scripts/telegram.js a partir del código fuente TypeScript ejecutando npm install && npm run build.
El uso básico es idéntico al de zeek-notice-telegram. En resumen, se podría usar así:
@load base/frameworks/notice
export {
redef enum Notice::Type += {
Notice::SSHLoginSuccessful,
};
// NOTE: you must define these!
redef Notice::telegram_token = "xxx";
redef Notice::telegram_chat_id = "yyy";
}
event ssh_auth_successful(c: connection, auth_method_none: bool)
{
NOTICE([$note=Notice::SSHLoginSuccessful, $conn=c, $msg="Login detected"]);
}
hook Notice::policy(n: Notice::Info)
{
if ( n$note == Notice::SSHLoginSuccessful )
{
add n$actions[Notice::ACTION_TELEGRAM];
}
}
El fallo al enviar una notificación por Telegram no detiene el procesamiento de los hooks de notice. En su lugar, se proporcionan hooks de Zeek para manejar tanto los casos de error como (si se desea) el caso en que los mensajes se envían correctamente:
Notice::telegram_notice_succeeded cuando todo va bien;Notice::telegram_notice_api_error cuando la propia API de Telegram responde con un error;Notice::telegram_notice_network_error cuando algo sale mal al comunicarse con la API de Telegram.Consulte el caso btest para ver un ejemplo del uso de estos hooks.
Un caso de prueba de btest simula la API de Telegram y cubre tanto el éxito como diferentes condiciones de error.
Para ejecutar las pruebas, entra en el directorio testing y ejecuta make.