Compare commits
4 Commits
v0.6.0
...
efa9abb289
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
efa9abb289 | ||
|
|
2747abfc04 | ||
|
|
66d460dbfc | ||
|
|
783645c30b |
19
README.md
19
README.md
@@ -22,6 +22,7 @@ If you have any questions or suggestions, create issue on [Github](https://githu
|
||||
- [x] Rule system
|
||||
- [x] Nginx and Sshd support
|
||||
- [x] Working with ufw/iptables/nftables/firewalld
|
||||
- [x] Prometheus metrics
|
||||
- [ ] Add support for most popular web-service
|
||||
- [ ] User regexp for custom services
|
||||
- [ ] TUI interface
|
||||
@@ -40,10 +41,10 @@ In release page you can find rpm, deb, apk packages, for amd or arm architecture
|
||||
### Debian/Ubuntu(.deb)
|
||||
```bash
|
||||
# Download the latest DEB package
|
||||
wget https://gitea.d3m0k1d.ru/d3m0k1d/BanForge/releases/download/v0.4.0/banforge_0.4.0_linux_amd64.deb
|
||||
wget https://gitea.d3m0k1d.ru/d3m0k1d/BanForge/releases/download/v0.6.0/banforge_0.6.0_linux_amd64.deb
|
||||
|
||||
# Install
|
||||
sudo dpkg -i banforge_0.4.0_linux_amd64.deb
|
||||
sudo dpkg -i banforge_0.6.0_linux_amd64.deb
|
||||
|
||||
# Verify installation
|
||||
sudo systemctl status banforge
|
||||
@@ -53,13 +54,13 @@ sudo systemctl status banforge
|
||||
```bash
|
||||
|
||||
# Download
|
||||
wget https://gitea.d3m0k1d.ru/d3m0k1d/BanForge/releases/download/v0.4.0/banforge_0.4.0_linux_amd64.rpm
|
||||
wget https://gitea.d3m0k1d.ru/d3m0k1d/BanForge/releases/download/v0.6.0/banforge_0.6.0_linux_amd64.rpm
|
||||
|
||||
# Install
|
||||
sudo rpm -i banforge_0.4.0_linux_amd64.rpm
|
||||
sudo rpm -i banforge_0.6.0_linux_amd64.rpm
|
||||
|
||||
# Or with dnf (CentOS 8+, AlmaLinux)
|
||||
sudo dnf install banforge_0.4.0_linux_amd64.rpm
|
||||
sudo dnf install banforge_0.6.0_linux_amd64.rpm
|
||||
|
||||
# Verify
|
||||
sudo systemctl status banforge
|
||||
@@ -69,10 +70,10 @@ sudo systemctl status banforge
|
||||
```bash
|
||||
|
||||
# Download
|
||||
wget https://gitea.d3m0k1d.ru/d3m0k1d/BanForge/releases/download/v0.4.0/banforge_0.4.0_linux_amd64.apk
|
||||
wget https://gitea.d3m0k1d.ru/d3m0k1d/BanForge/releases/download/v0.6.0/banforge_0.6.0_linux_amd64.apk
|
||||
|
||||
# Install
|
||||
sudo apk add --allow-untrusted banforge_0.4.0_linux_amd64.apk
|
||||
sudo apk add --allow-untrusted banforge_0.6.0_linux_amd64.apk
|
||||
|
||||
# Verify
|
||||
sudo rc-service banforge status
|
||||
@@ -82,10 +83,10 @@ sudo rc-service banforge status
|
||||
```bash
|
||||
|
||||
# Download
|
||||
wget https://gitea.d3m0k1d.ru/d3m0k1d/BanForge/releases/download/v0.4.0/banforge_0.4.0_linux_amd64.pkg.tar.zst
|
||||
wget https://gitea.d3m0k1d.ru/d3m0k1d/BanForge/releases/download/v0.6.0/banforge_0.6.0_linux_amd64.pkg.tar.zst
|
||||
|
||||
# Install
|
||||
sudo pacman -U banforge_0.4.0_linux_amd64.pkg.tar.zst
|
||||
sudo pacman -U banforge_0.6.0_linux_amd64.pkg.tar.zst
|
||||
|
||||
# Verify
|
||||
sudo systemctl status banforge
|
||||
|
||||
1
internal/actions/email.go
Normal file
1
internal/actions/email.go
Normal file
@@ -0,0 +1 @@
|
||||
package actions
|
||||
7
internal/actions/interface.go
Normal file
7
internal/actions/interface.go
Normal file
@@ -0,0 +1,7 @@
|
||||
package actions
|
||||
|
||||
type Action struct {
|
||||
Name string
|
||||
Type string
|
||||
Args []string
|
||||
}
|
||||
1
internal/actions/scripts.go
Normal file
1
internal/actions/scripts.go
Normal file
@@ -0,0 +1 @@
|
||||
package actions
|
||||
24
internal/actions/webhooks.go
Normal file
24
internal/actions/webhooks.go
Normal file
@@ -0,0 +1,24 @@
|
||||
package actions
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"net/http"
|
||||
"time"
|
||||
)
|
||||
|
||||
func SendWebhook(url string, data []byte) (int, error) {
|
||||
client := &http.Client{
|
||||
Timeout: 30 * time.Second,
|
||||
}
|
||||
req, err := http.NewRequest("POST", url, bytes.NewReader(data))
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
req.Header.Set("Content-Type", "application/json")
|
||||
// #nosec G704 validating by admin
|
||||
resp, err := client.Do(req)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
return resp.StatusCode, nil
|
||||
}
|
||||
@@ -31,9 +31,29 @@ type Rule struct {
|
||||
Method string `toml:"method"`
|
||||
MaxRetry int `toml:"max_retry"`
|
||||
BanTime string `toml:"ban_time"`
|
||||
Action []Action
|
||||
}
|
||||
|
||||
type Metrics struct {
|
||||
Enabled bool `toml:"enabled"`
|
||||
Port int `toml:"port"`
|
||||
}
|
||||
|
||||
// Actions
|
||||
type Action struct {
|
||||
Type string `toml:"type"`
|
||||
Enabled bool `toml:"enabled"`
|
||||
URL string `toml:"url"`
|
||||
Headers map[string]string `toml:"headers"`
|
||||
Body string `toml:"body"`
|
||||
Email string `toml:"email"`
|
||||
EmailSender string `toml:"email_sender"`
|
||||
EmailSubject string `toml:"email_subject"`
|
||||
SMTPHost string `toml:"smtp_host"`
|
||||
SMTPPort int `toml:"smtp_port"`
|
||||
SMTPUser string `toml:"smtp_user"`
|
||||
SMTPPassword string `toml:"smtp_password"`
|
||||
SMTPTLS bool `toml:"smtp_tls"`
|
||||
Interpretator string `toml:"interpretator"`
|
||||
Script string `toml:"script"`
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user