Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions .env.sample
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,17 @@ RUST_BACKTRACE=full
# Defaults to https://stackdog.app/stackdog-mark.png, falling back to the
# GitHub raw copy if that host does not answer. Setting this skips the probe.
#STACKDOG_SLACK_ICON_URL=https://stackdog.app/stackdog-mark.png
# Discord: create an incoming webhook in your channel settings
# (Edit Channel > Integrations > Webhooks). Alerts arrive as plain messages
# under the webhook's own name and avatar; Discord allows 2000 characters,
# longer alerts are truncated to fit.
#STACKDOG_DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/.../...
# Telegram: create a bot with @BotFather, invite it to a channel or group, and
# set both values. Alerts only — action notifications (bans, quarantines) are
# not sent to Telegram. Telegram allows 4096 characters per message; longer
# alerts are truncated to fit.
#STACKDOG_TELEGRAM_BOT_TOKEN=123456789:AAF...
#STACKDOG_TELEGRAM_CHAT_ID=-1001234567890
# Generic webhook endpoint for alert notifications
#STACKDOG_WEBHOOK_URL=https://example.com/webhook
#STACKDOG_SMTP_HOST=smtp.example.com
Expand Down
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

### Added

- Discord webhook notifications (`STACKDOG_DISCORD_WEBHOOK_URL`), routed exactly
like Slack: Critical, High and Medium alerts arrive as plain messages under
the webhook's own name and avatar, truncated to Discord's 2000 character
limit. The ban and detection findings flow through unchanged.
- Telegram notifications (`STACKDOG_TELEGRAM_BOT_TOKEN` +
`STACKDOG_TELEGRAM_CHAT_ID`), routed like Slack and Discord for alerts only:
action notifications are deliberately not sent to Telegram. Messages are
plain text through the Bot API, truncated to Telegram's 4096 character limit.

## [0.3.0] - 2026-11-09

### Added
Expand Down
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
- **🐘 PHP Shell Detection** — Finds webshells in host and container web roots and bans the clients driving them
- **🧭 Detector Framework** — Rust-native detector registry for web attack heuristics and outbound exfiltration indicators
- **🤖 AI/ML Detection** — Candle-powered anomaly detection + OpenAI/Ollama log analysis
- **🚨 Alert System** — Multi-channel notifications (Slack, email, webhook)
- **🚨 Alert System** — Multi-channel notifications (Slack, Discord, Telegram, email, webhook)
- **🔒 Automated Response** — nftables/iptables firewall, container quarantine
- **📈 Threat Scoring** — Configurable scoring with time-decay
- **🎯 Signature Detection** — 10+ built-in threat signatures
Expand Down Expand Up @@ -502,6 +502,8 @@ manager.acknowledge_alert(&alert.id())?;
**Notification Channels:**
- Console (logging)
- Slack webhooks
- Discord webhooks
- Telegram bot (alerts only)
- Email (SMTP)
- Generic webhooks

Expand Down
Loading
Loading