
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];
}
}
Telegram を介した notice の送信に失敗しても、notice フックの処理は停止しません。代わりに、エラーケースと(必要に応じて)メッセージが正常に送信された場合の両方を処理する zeek フックが用意されています。
Notice::telegram_notice_succeeded: すべてが正常な場合Notice::telegram_notice_api_error: Telegram API 自体がエラーで応答した場合Notice::telegram_notice_network_error: Telegram API との通信中に問題が発生した場合これらのフックを使用した例については、btest ケース を参照してください。
btest ケースは Telegram API をモックし、成功時とさまざまなエラー条件をテストします。
テストを実行するには、testing ディレクトリに入り、make を実行してください。