
Zeek Notice Telegram (edição ZeekJS)
Este pacote reimplementa o zeek-notice-telegram em TypeScript (ZeekJS) para contornar a falta de confiabilidade do ActiveHTTP.
Ele aproveita tanto o pacote do Yacin acima quanto a reimplementação ZeekJS da inspiração original daquele pacote (zeek-notice-slack) que agora é zeekjs-notice-slack.
A regeneração de scripts/telegram.js a partir do código-fonte TypeScript pode ser feita executando npm install && npm run build.
O uso básico é idêntico ao zeek-notice-telegram. Para recapitular, pode-se usá-lo assim:
@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];
}
}
A falha ao enviar uma notificação via telegram não interrompe o processamento do hook de notificação. Em vez disso, hooks do zeek são fornecidos para lidar tanto com casos de erro quanto (se desejado) com o envio bem-sucedido de mensagens:
Notice::telegram_notice_succeeded quando tudo está OK;Notice::telegram_notice_api_error quando a própria API do Telegram responde com um erro;Notice::telegram_notice_network_error quando algo dá errado ao comunicar com a API do telegram.Veja o caso btest para um exemplo usando esses hooks.
Um caso de btest simula a API do Telegram e exercita o sucesso e diferentes condições de erro.
Para executar os testes, entre no diretório testing e execute make.