
Zeek Notice Telegram (ZeekJS 에디션)
이 패키지는 zeek-notice-telegram을 TypeScript(ZeekJS)로 재구현하여 ActiveHTTP의 불안정성을 우회합니다.
위의 Yacin 패키지와 그 패키지의 원래 영감이었던 zeek-notice-slack의 ZeekJS 재구현(현재는 zeekjs-notice-slack)을 모두 차용했습니다.
TypeScript 소스에서 scripts/telegram.js를 다시 생성하려면 npm install && npm run build를 실행하면 됩니다.
기본 사용법은 zeek-notice-telegram과 동일합니다. 요약하자면, 다음과 같이 사용할 수 있습니다:
@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];
}
}
텔레그램을 통해 notice를 보내지 못해도 notice hook 처리는 중단되지 않습니다. 대신 오류 사례와 (원하는 경우) 메시지가 성공적으로 전송된 경우를 모두 처리하도록 zeek hook이 제공됩니다:
Notice::telegram_notice_succeeded 모든 것이 정상일 때;Notice::telegram_notice_api_error 텔레그램 API 자체가 오류로 응답할 때;Notice::telegram_notice_network_error 텔레그램 API와 통신 중 문제가 발생할 때.이러한 hook을 사용하는 예는 btest 케이스를 참조하세요.
btest 케이스는 Telegram API를 모킹하고 성공 및 다양한 오류 조건을 테스트합니다.
테스트를 실행하려면 testing 디렉터리로 이동하여 make를 실행하세요.