CrowdSec Bouncer Traefik 插件使用教程
1. 项目目录结构及介绍
CrowdSec Bouncer Traefik 插件的目录结构如下:
crowdsec-bouncer-traefik-plugin/
├── cmd/
│ └── main.go
├── config/
│ └── config.yaml
├── pkg/
│ ├── handler/
│ │ └── handler.go
│ ├── middleware/
│ │ └── middleware.go
│ └── utils/
│ └── utils.go
├── go.mod
├── go.sum
├── README.md
└── LICENSE
目录结构介绍
- cmd/: 包含项目的启动文件
main.go
,负责初始化和启动插件。 - config/: 包含项目的配置文件
config.yaml
,用于配置插件的各种参数。 - pkg/: 包含项目的核心代码,分为以下几个子目录:
- handler/: 处理请求和响应的逻辑。
- middleware/: 定义了 Traefik 中间件的实现。
- utils/: 包含一些通用的工具函数。
- go.mod 和 go.sum: Go 模块文件,用于管理项目的依赖。
- README.md: 项目的说明文档。
- LICENSE: 项目的开源许可证。
2. 项目的启动文件介绍
项目的启动文件位于 cmd/main.go
,主要负责初始化和启动插件。以下是 main.go
的主要内容:
package main
import (
"log"
"os"
"os/signal"
"syscall"
"github.com/maxlerebourg/crowdsec-bouncer-traefik-plugin/pkg/handler"
"github.com/maxlerebourg/crowdsec-bouncer-traefik-plugin/pkg/middleware"
)
func main() {
// 初始化配置
config := loadConfig()
// 初始化处理程序
handler := handler.NewHandler(config)
// 初始化中间件
middleware := middleware.NewMiddleware(handler)
// 启动服务
go middleware.Start()
// 等待信号
sigChan := make(chan os.Signal, 1)
signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
<-sigChan
// 优雅关闭
middleware.Stop()
}
启动文件功能介绍
- 初始化配置: 从
config.yaml
文件中加载配置。 - 初始化处理程序: 创建处理请求和响应的逻辑实例。
- 初始化中间件: 创建 Traefik 中间件实例。
- 启动服务: 启动中间件服务。
- 等待信号: 等待系统信号(如
SIGINT
或SIGTERM
)以优雅关闭服务。
3. 项目的配置文件介绍
项目的配置文件位于 config/config.yaml
,用于配置插件的各种参数。以下是一个示例配置文件的内容:
crowdsec:
api_url: "http://localhost:8080"
api_key: "your_api_key_here"
log_level: "info"
traefik:
middleware_name: "crowdsec-bouncer"
enabled: true
配置文件参数介绍
-
crowdsec:
- api_url: CrowdSec API 的 URL,用于与 CrowdSec 服务通信。
- api_key: 访问 CrowdSec API 所需的 API 密钥。
- log_level: 日志级别,可选值为
debug
,info
,warn
,error
。
-
traefik:
- middleware_name: 中间件的名称,用于在 Traefik 中引用。
- enabled: 是否启用该中间件,可选值为
true
或false
。
通过以上配置,可以灵活地调整插件的行为,以适应不同的使用场景。