Documentation
¶
Overview ¶
server/controller/config.go
server/controller/ip_group.go
server/controller/rule.go
Index ¶
- func BSONToJSON(bsonData bson.Raw) (json.RawMessage, error)
- func ConvertToResponse(rule *pkgmodel.MicroRule) (*dto.MicroRuleResponse, error)
- type AuthController
- type AuthControllerImpl
- func (c *AuthControllerImpl) CreateUser(ctx *gin.Context)
- func (c *AuthControllerImpl) DeleteUser(ctx *gin.Context)
- func (c *AuthControllerImpl) GetUserInfo(ctx *gin.Context)
- func (c *AuthControllerImpl) GetUsers(ctx *gin.Context)
- func (c *AuthControllerImpl) Login(ctx *gin.Context)
- func (c *AuthControllerImpl) ResetPassword(ctx *gin.Context)
- func (c *AuthControllerImpl) UpdateUser(ctx *gin.Context)
- type BlockedIPController
- type BlockedIPControllerImpl
- type CertificateController
- type CertificateControllerImpl
- func (c *CertificateControllerImpl) CreateCertificate(ctx *gin.Context)
- func (c *CertificateControllerImpl) DeleteCertificate(ctx *gin.Context)
- func (c *CertificateControllerImpl) GetCertificateByID(ctx *gin.Context)
- func (c *CertificateControllerImpl) GetCertificates(ctx *gin.Context)
- func (c *CertificateControllerImpl) UpdateCertificate(ctx *gin.Context)
- type ConfigController
- type ConfigControllerImpl
- type IPGroupController
- type IPGroupControllerImpl
- func (c *IPGroupControllerImpl) AddIPToBlacklist(ctx *gin.Context)
- func (c *IPGroupControllerImpl) CreateIPGroup(ctx *gin.Context)
- func (c *IPGroupControllerImpl) DeleteIPGroup(ctx *gin.Context)
- func (c *IPGroupControllerImpl) GetIPGroupByID(ctx *gin.Context)
- func (c *IPGroupControllerImpl) GetIPGroups(ctx *gin.Context)
- func (c *IPGroupControllerImpl) UpdateIPGroup(ctx *gin.Context)
- type MicroRuleController
- type MicroRuleControllerImpl
- func (c *MicroRuleControllerImpl) CreateMicroRule(ctx *gin.Context)
- func (c *MicroRuleControllerImpl) DeleteMicroRule(ctx *gin.Context)
- func (c *MicroRuleControllerImpl) GetMicroRuleByID(ctx *gin.Context)
- func (c *MicroRuleControllerImpl) GetMicroRules(ctx *gin.Context)
- func (c *MicroRuleControllerImpl) UpdateMicroRule(ctx *gin.Context)
- type RunnerController
- type RunnerControllerImpl
- type SiteController
- type SiteControllerImpl
- type StatsController
- type StatsControllerImpl
- func (c *StatsControllerImpl) GetCombinedTimeSeriesData(ctx *gin.Context)
- func (c *StatsControllerImpl) GetOverviewStats(ctx *gin.Context)
- func (c *StatsControllerImpl) GetRealtimeQPS(ctx *gin.Context)
- func (c *StatsControllerImpl) GetStats(ctx *gin.Context)
- func (c *StatsControllerImpl) GetTimeSeriesData(ctx *gin.Context)
- func (c *StatsControllerImpl) GetTrafficTimeSeriesData(ctx *gin.Context)
- type WAFLogController
- type WAFLogControllerImpl
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func BSONToJSON ¶
func BSONToJSON(bsonData bson.Raw) (json.RawMessage, error)
BSONToJSON 将BSON数据转换为JSON
func ConvertToResponse ¶
func ConvertToResponse(rule *pkgmodel.MicroRule) (*dto.MicroRuleResponse, error)
ConvertToResponse 将模型转换为DTO响应对象
Types ¶
type AuthController ¶
type AuthController interface {
Login(ctx *gin.Context)
ResetPassword(ctx *gin.Context)
CreateUser(ctx *gin.Context)
GetUsers(ctx *gin.Context)
GetUserInfo(ctx *gin.Context)
DeleteUser(ctx *gin.Context)
UpdateUser(ctx *gin.Context)
}
AuthController 认证控制器
func NewAuthController ¶
func NewAuthController(authService service.AuthService) AuthController
NewAuthController 创建认证控制器
type AuthControllerImpl ¶
type AuthControllerImpl struct {
// contains filtered or unexported fields
}
func (*AuthControllerImpl) CreateUser ¶
func (c *AuthControllerImpl) CreateUser(ctx *gin.Context)
CreateUser 创建用户
@Summary 创建新用户
@Description 管理员创建新用户
@Tags 用户管理
@Accept json
@Produce json
@Param request body dto.UserCreateRequest true "用户创建信息"
@Security BearerAuth
@Success 200 {object} dto.ResetPasswordResponseData "用户创建成功"
@Failure 400 {object} model.ErrResponse "请求参数错误"
@Failure 401 {object} model.ErrResponseDontShowError "未授权访问"
@Failure 403 {object} model.ErrResponseDontShowError "禁止访问"
@Failure 409 {object} model.ErrResponseDontShowError "用户名已存在"
@Failure 500 {object} model.ErrResponseDontShowError "服务器内部错误"
@Router /users [post]
func (*AuthControllerImpl) DeleteUser ¶
func (c *AuthControllerImpl) DeleteUser(ctx *gin.Context)
DeleteUser 删除用户
@Summary 删除用户
@Description 管理员删除指定用户
@Tags 用户管理
@Produce json
@Param id path string true "用户ID"
@Security BearerAuth
@Success 200 {object} model.APIResponse "用户删除成功"
@Failure 401 {object} model.APIResponse "未授权访问"
@Failure 403 {object} model.APIResponse "禁止访问"
@Failure 404 {object} model.APIResponse "用户不存在"
@Failure 500 {object} model.APIResponse "服务器内部错误"
@Router /users/{id} [delete]
func (*AuthControllerImpl) GetUserInfo ¶
func (c *AuthControllerImpl) GetUserInfo(ctx *gin.Context)
GetUserInfo 获取用户信息
@Summary 获取当前用户信息
@Description 获取当前登录用户的详细信息
@Tags 认证
@Produce json
@Security BearerAuth
@Success 200 {object} model.SuccessResponse{data=dto.GetUserInfoResponseData} "获取用户信息成功"
@Failure 401 {object} model.ErrResponseDontShowError "未授权访问"
@Router /auth/me [get]
func (*AuthControllerImpl) GetUsers ¶
func (c *AuthControllerImpl) GetUsers(ctx *gin.Context)
GetUsers 获取所有用户
@Summary 获取所有用户
@Description 获取系统中所有用户的列表
@Tags 用户管理
@Produce json
@Security BearerAuth
@Success 200 {object} model.SuccessResponse{data=[]model.User} "获取用户列表成功"
@Failure 401 {object} model.ErrResponseDontShowError "未授权访问"
@Failure 403 {object} model.ErrResponseDontShowError "禁止访问"
@Failure 500 {object} model.ErrResponseDontShowError "服务器内部错误"
@Router /users [get]
func (*AuthControllerImpl) Login ¶
func (c *AuthControllerImpl) Login(ctx *gin.Context)
Login 用户登录
@Summary 用户登录
@Description 用户登录并获取JWT令牌
@Tags 认证
@Accept json
@Produce json
@Param request body dto.UserLoginRequest true "登录信息"
@Success 200 {object} model.SuccessResponse{data=dto.LoginResponseData} "登录成功"
@Failure 400 {object} model.ErrResponse "请求参数错误"
@Failure 401 {object} model.ErrResponseDontShowError "用户名或密码错误"
@Failure 500 {object} model.ErrResponseDontShowError "服务器内部错误"
@Router /auth/login [post]
func (*AuthControllerImpl) ResetPassword ¶
func (c *AuthControllerImpl) ResetPassword(ctx *gin.Context)
ResetPassword 重置密码
@Summary 重置密码
@Description 用户重置自己的密码
@Tags 认证
@Accept json
@Produce json
@Param request body dto.UserPasswordResetRequest true "密码重置信息"
@Security BearerAuth
@Success 200 {object} model.SuccessResponseNoData "密码重置成功"
@Failure 400 {object} model.ErrResponseDontShowError "请求参数错误或原密码错误"
@Failure 401 {object} model.ErrResponseDontShowError "未授权访问"
@Failure 500 {object} model.ErrResponseDontShowError "服务器内部错误"
@Router /auth/reset-password [post]
func (*AuthControllerImpl) UpdateUser ¶
func (c *AuthControllerImpl) UpdateUser(ctx *gin.Context)
UpdateUser 更新用户
@Summary 更新用户信息
@Description 管理员更新指定用户的信息
@Tags 用户管理
@Accept json
@Produce json
@Param id path string true "用户ID"
@Param request body dto.UserUpdateRequest true "用户更新信息"
@Security BearerAuth
@Success 200 {object} model.APIResponse "用户更新成功"
@Failure 400 {object} model.APIResponse "请求参数错误"
@Failure 401 {object} model.APIResponse "未授权访问"
@Failure 403 {object} model.APIResponse "禁止访问"
@Failure 404 {object} model.APIResponse "用户不存在"
@Failure 500 {object} model.APIResponse "服务器内部错误"
@Router /users/{id} [put]
type BlockedIPController ¶
type BlockedIPController interface {
GetBlockedIPs(ctx *gin.Context)
GetBlockedIPStats(ctx *gin.Context)
CleanupExpiredBlockedIPs(ctx *gin.Context)
}
BlockedIPController 封禁IP控制器接口
func NewBlockedIPController ¶
func NewBlockedIPController(blockedIPService service.BlockedIPService) BlockedIPController
NewBlockedIPController 创建封禁IP控制器
type BlockedIPControllerImpl ¶
type BlockedIPControllerImpl struct {
// contains filtered or unexported fields
}
BlockedIPControllerImpl 封禁IP控制器实现
func (*BlockedIPControllerImpl) CleanupExpiredBlockedIPs ¶
func (c *BlockedIPControllerImpl) CleanupExpiredBlockedIPs(ctx *gin.Context)
CleanupExpiredBlockedIPs 清理过期的封禁IP记录
@Summary 清理过期的封禁IP记录
@Description 删除已过期的封禁IP记录,释放存储空间
@Tags 封禁IP管理
@Produce json
@Security BearerAuth
@Success 200 {object} model.SuccessResponse{data=dto.BlockedIPCleanupResponse} "清理完成"
@Failure 401 {object} model.ErrResponseDontShowError "未授权访问"
@Failure 403 {object} model.ErrResponseDontShowError "禁止访问"
@Failure 500 {object} model.ErrResponseDontShowError "服务器内部错误"
@Router /api/v1/blocked-ips/cleanup [delete]
func (*BlockedIPControllerImpl) GetBlockedIPStats ¶
func (c *BlockedIPControllerImpl) GetBlockedIPStats(ctx *gin.Context)
GetBlockedIPStats 获取封禁IP统计信息
@Summary 获取封禁IP统计信息
@Description 获取封禁IP的统计信息,包括总数、生效数、过期数、按原因统计和按小时统计
@Tags 封禁IP管理
@Produce json
@Security BearerAuth
@Success 200 {object} model.SuccessResponse{data=dto.BlockedIPStatsResponse} "获取统计信息成功"
@Failure 401 {object} model.ErrResponseDontShowError "未授权访问"
@Failure 403 {object} model.ErrResponseDontShowError "禁止访问"
@Failure 500 {object} model.ErrResponseDontShowError "服务器内部错误"
@Router /api/v1/blocked-ips/stats [get]
func (*BlockedIPControllerImpl) GetBlockedIPs ¶
func (c *BlockedIPControllerImpl) GetBlockedIPs(ctx *gin.Context)
GetBlockedIPs 获取封禁IP列表
@Summary 获取封禁IP列表
@Description 获取被封禁的IP地址列表,支持分页、过滤和排序
@Tags 封禁IP管理
@Produce json
@Param page query int false "页码,从1开始" default(1) minimum(1)
@Param size query int false "每页数量,最大100" default(10) minimum(1) maximum(100)
@Param ip query string false "IP地址过滤,支持模糊匹配" example(192.168.1.1)
@Param reason query string false "封禁原因过滤" example(high_frequency_attack)
@Param status query string false "状态过滤:active-生效中,expired-已过期,all-全部" default(all) Enums(active, expired, all)
@Param sortBy query string false "排序字段" default(blocked_at) Enums(blocked_at, blocked_until, ip)
@Param sortDir query string false "排序方向:asc-升序,desc-降序" default(desc) Enums(asc, desc)
@Security BearerAuth
@Success 200 {object} model.SuccessResponse{data=dto.BlockedIPListResponse} "获取封禁IP列表成功"
@Failure 400 {object} model.ErrResponse "请求参数错误"
@Failure 401 {object} model.ErrResponseDontShowError "未授权访问"
@Failure 403 {object} model.ErrResponseDontShowError "禁止访问"
@Failure 500 {object} model.ErrResponseDontShowError "服务器内部错误"
@Router /api/v1/blocked-ips [get]
type CertificateController ¶
type CertificateController interface {
CreateCertificate(ctx *gin.Context)
GetCertificates(ctx *gin.Context)
GetCertificateByID(ctx *gin.Context)
UpdateCertificate(ctx *gin.Context)
DeleteCertificate(ctx *gin.Context)
}
CertificateController 证书控制器接口
func NewCertificateController ¶
func NewCertificateController(certService service.CertificateService) CertificateController
NewCertificateController 创建证书控制器
type CertificateControllerImpl ¶
type CertificateControllerImpl struct {
// contains filtered or unexported fields
}
CertificateControllerImpl 证书控制器实现
func (*CertificateControllerImpl) CreateCertificate ¶
func (c *CertificateControllerImpl) CreateCertificate(ctx *gin.Context)
CreateCertificate 创建证书
@Summary 创建新证书
@Description 创建一个新的SSL/TLS证书
@Tags 证书管理
@Accept json
@Produce json
@Param certificate body dto.CertificateCreateRequest true "证书信息"
@Security BearerAuth
@Success 200 {object} model.SuccessResponse{data=model.CertificateStore} "证书创建成功"
@Failure 400 {object} model.ErrResponse "请求参数错误"
@Failure 401 {object} model.ErrResponseDontShowError "未授权访问"
@Failure 403 {object} model.ErrResponseDontShowError "禁止访问"
@Failure 409 {object} model.ErrResponseDontShowError "证书名称已存在"
@Failure 500 {object} model.ErrResponseDontShowError "服务器内部错误"
@Router /api/v1/certificates [post]
func (*CertificateControllerImpl) DeleteCertificate ¶
func (c *CertificateControllerImpl) DeleteCertificate(ctx *gin.Context)
DeleteCertificate 删除证书
@Summary 删除证书
@Description 删除指定的SSL/TLS证书
@Tags 证书管理
@Produce json
@Param id path string true "证书ID"
@Security BearerAuth
@Success 200 {object} model.SuccessResponseNoData "证书删除成功"
@Failure 401 {object} model.ErrResponseDontShowError "未授权访问"
@Failure 403 {object} model.ErrResponseDontShowError "禁止访问"
@Failure 404 {object} model.ErrResponseDontShowError "证书不存在"
@Failure 500 {object} model.ErrResponseDontShowError "服务器内部错误"
@Router /api/v1/certificates/{id} [delete]
func (*CertificateControllerImpl) GetCertificateByID ¶
func (c *CertificateControllerImpl) GetCertificateByID(ctx *gin.Context)
GetCertificateByID 获取单个证书
@Summary 获取单个证书
@Description 根据ID获取证书详情
@Tags 证书管理
@Produce json
@Param id path string true "证书ID"
@Security BearerAuth
@Success 200 {object} model.SuccessResponse{data=model.CertificateStore} "获取证书详情成功"
@Failure 401 {object} model.ErrResponseDontShowError "未授权访问"
@Failure 404 {object} model.ErrResponseDontShowError "证书不存在"
@Failure 500 {object} model.ErrResponseDontShowError "服务器内部错误"
@Router /api/v1/certificates/{id} [get]
func (*CertificateControllerImpl) GetCertificates ¶
func (c *CertificateControllerImpl) GetCertificates(ctx *gin.Context)
GetCertificates 获取证书列表
@Summary 获取证书列表
@Description 获取所有SSL/TLS证书列表,支持分页
@Tags 证书管理
@Produce json
@Param page query int false "页码" default(1)
@Param size query int false "每页数量" default(10)
@Security BearerAuth
@Success 200 {object} model.SuccessResponse{data=dto.CertificateListResponse} "获取证书列表成功"
@Failure 401 {object} model.ErrResponseDontShowError "未授权访问"
@Failure 500 {object} model.ErrResponseDontShowError "服务器内部错误"
@Router /api/v1/certificates [get]
func (*CertificateControllerImpl) UpdateCertificate ¶
func (c *CertificateControllerImpl) UpdateCertificate(ctx *gin.Context)
UpdateCertificate 更新证书
@Summary 更新证书
@Description 更新指定证书的信息
@Tags 证书管理
@Accept json
@Produce json
@Param id path string true "证书ID"
@Param certificate body dto.CertificateUpdateRequest true "证书更新信息"
@Security BearerAuth
@Success 200 {object} model.SuccessResponse{data=model.CertificateStore} "证书更新成功"
@Failure 400 {object} model.ErrResponse "请求参数错误"
@Failure 401 {object} model.ErrResponseDontShowError "未授权访问"
@Failure 403 {object} model.ErrResponseDontShowError "禁止访问"
@Failure 404 {object} model.ErrResponseDontShowError "证书不存在"
@Failure 409 {object} model.ErrResponseDontShowError "证书名称已存在"
@Failure 500 {object} model.ErrResponseDontShowError "服务器内部错误"
@Router /api/v1/certificates/{id} [put]
type ConfigController ¶
ConfigController 配置控制器接口
func NewConfigController ¶
func NewConfigController(configService service.ConfigService) ConfigController
NewConfigController 创建配置控制器
type ConfigControllerImpl ¶
type ConfigControllerImpl struct {
// contains filtered or unexported fields
}
ConfigControllerImpl 配置控制器实现
func (*ConfigControllerImpl) GetConfig ¶
func (c *ConfigControllerImpl) GetConfig(ctx *gin.Context)
GetConfig 获取配置
@Summary 获取系统配置
@Description 获取当前系统配置信息
@Tags 配置管理
@Produce json
@Security BearerAuth
@Success 200 {object} model.SuccessResponse{data=dto.ConfigResponse} "获取配置成功"
@Failure 401 {object} model.ErrResponseDontShowError "未授权访问"
@Failure 403 {object} model.ErrResponseDontShowError "禁止访问"
@Failure 404 {object} model.ErrResponseDontShowError "配置不存在"
@Failure 500 {object} model.ErrResponseDontShowError "服务器内部错误"
@Router /api/v1/config [get]
func (*ConfigControllerImpl) PatchConfig ¶
func (c *ConfigControllerImpl) PatchConfig(ctx *gin.Context)
PatchConfig 补丁更新配置
@Summary 更新系统配置
@Description 使用补丁方式更新系统配置
@Tags 配置管理
@Accept json
@Produce json
@Param config body dto.ConfigPatchRequest true "配置更新信息"
@Security BearerAuth
@Success 200 {object} model.SuccessResponse{data=dto.ConfigResponse} "配置更新成功"
@Failure 400 {object} model.ErrResponse "请求参数错误"
@Failure 401 {object} model.ErrResponseDontShowError "未授权访问"
@Failure 403 {object} model.ErrResponseDontShowError "禁止访问"
@Failure 404 {object} model.ErrResponseDontShowError "配置不存在"
@Failure 500 {object} model.ErrResponseDontShowError "服务器内部错误"
@Router /api/v1/config [patch]
type IPGroupController ¶
type IPGroupController interface {
CreateIPGroup(ctx *gin.Context)
GetIPGroups(ctx *gin.Context)
GetIPGroupByID(ctx *gin.Context)
UpdateIPGroup(ctx *gin.Context)
DeleteIPGroup(ctx *gin.Context)
AddIPToBlacklist(ctx *gin.Context)
}
IPGroupController IP组控制器接口
func NewIPGroupController ¶
func NewIPGroupController(ipGroupService service.IPGroupService) IPGroupController
NewIPGroupController 创建IP组控制器
type IPGroupControllerImpl ¶
type IPGroupControllerImpl struct {
// contains filtered or unexported fields
}
IPGroupControllerImpl IP组控制器实现
func (*IPGroupControllerImpl) AddIPToBlacklist ¶
func (c *IPGroupControllerImpl) AddIPToBlacklist(ctx *gin.Context)
AddIPToBlacklist 添加IP到系统默认黑名单
@Summary 添加IP到黑名单
@Description 将指定的IP地址或CIDR添加到系统默认黑名单组中
@Tags IP组管理
@Accept json
@Produce json
@Param request body dto.AddIPToBlacklistRequest true "IP地址或CIDR"
@Security BearerAuth
@Success 200 {object} model.SuccessResponseNoData "IP添加成功"
@Failure 400 {object} model.ErrResponse "请求参数错误"
@Failure 401 {object} model.ErrResponseDontShowError "未授权访问"
@Failure 404 {object} model.ErrResponseDontShowError "系统默认黑名单不存在"
@Failure 500 {object} model.ErrResponseDontShowError "服务器内部错误"
@Router /api/v1/ip-groups/blacklist/add [post]
func (*IPGroupControllerImpl) CreateIPGroup ¶
func (c *IPGroupControllerImpl) CreateIPGroup(ctx *gin.Context)
CreateIPGroup 创建IP组
@Summary 创建IP组
@Description 创建一个新的IP地址组,用于后续IP规则匹配
@Tags IP组管理
@Accept json
@Produce json
@Param ipGroup body dto.IPGroupCreateRequest true "IP组信息"
@Security BearerAuth
@Success 200 {object} model.SuccessResponse{data=model.IPGroup} "IP组创建成功"
@Failure 400 {object} model.ErrResponse "请求参数错误"
@Failure 401 {object} model.ErrResponseDontShowError "未授权访问"
@Failure 403 {object} model.ErrResponseDontShowError "禁止访问"
@Failure 409 {object} model.ErrResponseDontShowError "IP组名称已存在"
@Failure 500 {object} model.ErrResponseDontShowError "服务器内部错误"
@Router /api/v1/ip-groups [post]
func (*IPGroupControllerImpl) DeleteIPGroup ¶
func (c *IPGroupControllerImpl) DeleteIPGroup(ctx *gin.Context)
DeleteIPGroup 删除IP组
@Summary 删除IP组
@Description 删除指定的IP组,系统默认IP组不允许删除
@Tags IP组管理
@Produce json
@Param id path string true "IP组ID"
@Security BearerAuth
@Success 200 {object} model.SuccessResponseNoData "IP组删除成功"
@Failure 400 {object} model.ErrResponse "无效的ID格式"
@Failure 401 {object} model.ErrResponseDontShowError "未授权访问"
@Failure 403 {object} model.ErrResponseDontShowError "禁止删除系统默认IP组"
@Failure 404 {object} model.ErrResponseDontShowError "IP组不存在"
@Failure 500 {object} model.ErrResponseDontShowError "服务器内部错误"
@Router /api/v1/ip-groups/{id} [delete]
func (*IPGroupControllerImpl) GetIPGroupByID ¶
func (c *IPGroupControllerImpl) GetIPGroupByID(ctx *gin.Context)
GetIPGroupByID 获取单个IP组
@Summary 获取单个IP组
@Description 根据ID获取IP组详情
@Tags IP组管理
@Produce json
@Param id path string true "IP组ID"
@Security BearerAuth
@Success 200 {object} model.SuccessResponse{data=model.IPGroup} "获取IP组详情成功"
@Failure 400 {object} model.ErrResponse "无效的ID格式"
@Failure 401 {object} model.ErrResponseDontShowError "未授权访问"
@Failure 404 {object} model.ErrResponseDontShowError "IP组不存在"
@Failure 500 {object} model.ErrResponseDontShowError "服务器内部错误"
@Router /api/v1/ip-groups/{id} [get]
func (*IPGroupControllerImpl) GetIPGroups ¶
func (c *IPGroupControllerImpl) GetIPGroups(ctx *gin.Context)
GetIPGroups 获取IP组列表
@Summary 获取IP组列表
@Description 获取所有IP组列表,支持分页
@Tags IP组管理
@Produce json
@Param page query int false "页码" default(1)
@Param size query int false "每页数量" default(10)
@Security BearerAuth
@Success 200 {object} model.SuccessResponse{data=dto.IPGroupListResponse} "获取IP组列表成功"
@Failure 401 {object} model.ErrResponseDontShowError "未授权访问"
@Failure 500 {object} model.ErrResponseDontShowError "服务器内部错误"
@Router /api/v1/ip-groups [get]
func (*IPGroupControllerImpl) UpdateIPGroup ¶
func (c *IPGroupControllerImpl) UpdateIPGroup(ctx *gin.Context)
UpdateIPGroup 更新IP组
@Summary 更新IP组
@Description 更新指定IP组的信息
@Tags IP组管理
@Accept json
@Produce json
@Param id path string true "IP组ID"
@Param ipGroup body dto.IPGroupUpdateRequest true "IP组更新信息"
@Security BearerAuth
@Success 200 {object} model.SuccessResponse{data=model.IPGroup} "IP组更新成功"
@Failure 400 {object} model.ErrResponse "请求参数错误"
@Failure 401 {object} model.ErrResponseDontShowError "未授权访问"
@Failure 403 {object} model.ErrResponseDontShowError "禁止操作系统默认IP组"
@Failure 404 {object} model.ErrResponseDontShowError "IP组不存在"
@Failure 409 {object} model.ErrResponseDontShowError "IP组名称已存在"
@Failure 500 {object} model.ErrResponseDontShowError "服务器内部错误"
@Router /api/v1/ip-groups/{id} [put]
type MicroRuleController ¶
type MicroRuleController interface {
CreateMicroRule(ctx *gin.Context)
GetMicroRules(ctx *gin.Context)
GetMicroRuleByID(ctx *gin.Context)
UpdateMicroRule(ctx *gin.Context)
DeleteMicroRule(ctx *gin.Context)
}
MicroRuleController 微规则控制器接口
func NewMicroRuleController ¶
func NewMicroRuleController(ruleService service.MicroRuleService) MicroRuleController
NewMicroRuleController 创建微规则控制器
type MicroRuleControllerImpl ¶
type MicroRuleControllerImpl struct {
// contains filtered or unexported fields
}
MicroRuleControllerImpl 微规则控制器实现
func (*MicroRuleControllerImpl) CreateMicroRule ¶
func (c *MicroRuleControllerImpl) CreateMicroRule(ctx *gin.Context)
CreateMicroRule 创建微规则
@Summary 创建微规则
@Description 创建一个新的WAF微规则,用于匹配和过滤请求
@Tags 规则管理
@Accept json
@Produce json
@Param rule body dto.MicroRuleCreateRequest true "微规则信息"
@Security BearerAuth
@Success 200 {object} model.SuccessResponse{data=dto.MicroRuleResponse} "微规则创建成功"
@Failure 400 {object} model.ErrResponse "请求参数错误"
@Failure 401 {object} model.ErrResponseDontShowError "未授权访问"
@Failure 403 {object} model.ErrResponseDontShowError "禁止访问"
@Failure 409 {object} model.ErrResponseDontShowError "微规则名称已存在"
@Failure 500 {object} model.ErrResponseDontShowError "服务器内部错误"
@Router /api/v1/micro-rules [post]
func (*MicroRuleControllerImpl) DeleteMicroRule ¶
func (c *MicroRuleControllerImpl) DeleteMicroRule(ctx *gin.Context)
DeleteMicroRule 删除微规则
@Summary 删除微规则
@Description 删除指定的微规则,系统默认规则不允许删除
@Tags 规则管理
@Produce json
@Param id path string true "微规则ID"
@Security BearerAuth
@Success 200 {object} model.SuccessResponseNoData "微规则删除成功"
@Failure 400 {object} model.ErrResponse "无效的ID格式"
@Failure 401 {object} model.ErrResponseDontShowError "未授权访问"
@Failure 403 {object} model.ErrResponseDontShowError "禁止删除系统默认规则"
@Failure 404 {object} model.ErrResponseDontShowError "微规则不存在"
@Failure 500 {object} model.ErrResponseDontShowError "服务器内部错误"
@Router /api/v1/micro-rules/{id} [delete]
func (*MicroRuleControllerImpl) GetMicroRuleByID ¶
func (c *MicroRuleControllerImpl) GetMicroRuleByID(ctx *gin.Context)
GetMicroRuleByID 获取单个微规则
@Summary 获取单个微规则
@Description 根据ID获取微规则详情
@Tags 规则管理
@Produce json
@Param id path string true "微规则ID"
@Security BearerAuth
@Success 200 {object} model.SuccessResponse{data=dto.MicroRuleResponse} "获取微规则详情成功"
@Failure 400 {object} model.ErrResponse "无效的ID格式"
@Failure 401 {object} model.ErrResponseDontShowError "未授权访问"
@Failure 404 {object} model.ErrResponseDontShowError "微规则不存在"
@Failure 500 {object} model.ErrResponseDontShowError "服务器内部错误"
@Router /api/v1/micro-rules/{id} [get]
func (*MicroRuleControllerImpl) GetMicroRules ¶
func (c *MicroRuleControllerImpl) GetMicroRules(ctx *gin.Context)
GetMicroRules 获取微规则列表
@Summary 获取微规则列表
@Description 获取所有WAF微规则列表,支持分页
@Tags 规则管理
@Produce json
@Param page query int false "页码" default(1)
@Param size query int false "每页数量" default(10)
@Security BearerAuth
@Success 200 {object} model.SuccessResponse{data=dto.MicroRuleListResponse} "获取微规则列表成功"
@Failure 401 {object} model.ErrResponseDontShowError "未授权访问"
@Failure 500 {object} model.ErrResponseDontShowError "服务器内部错误"
@Router /api/v1/micro-rules [get]
func (*MicroRuleControllerImpl) UpdateMicroRule ¶
func (c *MicroRuleControllerImpl) UpdateMicroRule(ctx *gin.Context)
UpdateMicroRule 更新微规则
@Summary 更新微规则
@Description 更新指定微规则的信息,系统默认规则不允许修改
@Tags 规则管理
@Accept json
@Produce json
@Param id path string true "微规则ID"
@Param rule body dto.MicroRuleUpdateRequest true "微规则更新信息"
@Security BearerAuth
@Success 200 {object} model.SuccessResponse{data=dto.MicroRuleResponse} "微规则更新成功"
@Failure 400 {object} model.ErrResponse "请求参数错误"
@Failure 401 {object} model.ErrResponseDontShowError "未授权访问"
@Failure 403 {object} model.ErrResponseDontShowError "禁止修改系统默认规则"
@Failure 404 {object} model.ErrResponseDontShowError "微规则不存在"
@Failure 409 {object} model.ErrResponseDontShowError "微规则名称已存在"
@Failure 500 {object} model.ErrResponseDontShowError "服务器内部错误"
@Router /api/v1/micro-rules/{id} [put]
type RunnerController ¶
RunnerController 运行器控制器接口
func NewRunnerController ¶
func NewRunnerController(runnerService service.RunnerService) RunnerController
NewRunnerController 创建运行器控制器
type RunnerControllerImpl ¶
type RunnerControllerImpl struct {
// contains filtered or unexported fields
}
RunnerControllerImpl 运行器控制器实现
func (*RunnerControllerImpl) Control ¶
func (c *RunnerControllerImpl) Control(ctx *gin.Context)
Control 控制运行器
@Summary 控制后台运行器
@Description 执行启动、停止、重启、强制停止或热重载操作
@Tags 运行器管理
@Accept json
@Produce json
@Param request body dto.RunnerControlRequest true "运行器控制请求"
@Security BearerAuth
@Success 200 {object} model.SuccessResponse{data=dto.RunnerControlResponse} "操作成功"
@Failure 400 {object} model.ErrResponse "请求参数错误"
@Failure 500 {object} model.ErrResponseDontShowError "服务器内部错误"
@Router /api/runner/control [post]
func (*RunnerControllerImpl) GetStatus ¶
func (c *RunnerControllerImpl) GetStatus(ctx *gin.Context)
GetStatus 获取运行器状态
@Summary 获取后台运行器状态
@Description 获取WAF后台运行器的运行状态
@Tags 运行器管理
@Produce json
@Security BearerAuth
@Success 200 {object} model.SuccessResponse{data=dto.RunnerStatusResponse} "获取运行器状态成功"
@Failure 500 {object} model.ErrResponseDontShowError "服务器内部错误"
@Router /api/runner/status [get]
type SiteController ¶
type SiteController interface {
CreateSite(ctx *gin.Context)
GetSites(ctx *gin.Context)
GetSiteByID(ctx *gin.Context)
UpdateSite(ctx *gin.Context)
DeleteSite(ctx *gin.Context)
}
SiteController 站点控制器接口
func NewSiteController ¶
func NewSiteController(siteService service.SiteService) SiteController
NewSiteController 创建站点控制器
type SiteControllerImpl ¶
type SiteControllerImpl struct {
// contains filtered or unexported fields
}
SiteControllerImpl 站点控制器实现
func (*SiteControllerImpl) CreateSite ¶
func (c *SiteControllerImpl) CreateSite(ctx *gin.Context)
CreateSite 创建站点
@Summary 创建新站点
@Description 创建一个新的站点配置
@Tags 站点管理
@Accept json
@Produce json
@Param site body dto.CreateSiteRequest true "站点信息"
@Security BearerAuth
@Success 200 {object} model.SuccessResponse{data=dto.SiteResponse} "站点创建成功"
@Failure 400 {object} model.ErrResponse "请求参数错误"
@Failure 401 {object} model.ErrResponseDontShowError "未授权访问"
@Failure 403 {object} model.ErrResponseDontShowError "禁止访问"
@Failure 409 {object} model.ErrResponseDontShowError "域名和端口组合已存在"
@Failure 500 {object} model.ErrResponseDontShowError "服务器内部错误"
@Router /api/v1/site [post]
func (*SiteControllerImpl) DeleteSite ¶
func (c *SiteControllerImpl) DeleteSite(ctx *gin.Context)
DeleteSite 删除站点
@Summary 删除站点
@Description 删除指定的站点配置
@Tags 站点管理
@Produce json
@Param id path string true "站点ID"
@Security BearerAuth
@Success 200 {object} model.SuccessResponseNoData "站点删除成功"
@Failure 401 {object} model.ErrResponseDontShowError "未授权访问"
@Failure 403 {object} model.ErrResponseDontShowError "禁止访问"
@Failure 404 {object} model.ErrResponseDontShowError "站点不存在"
@Failure 500 {object} model.ErrResponseDontShowError "服务器内部错误"
@Router /api/v1/site/{id} [delete]
func (*SiteControllerImpl) GetSiteByID ¶
func (c *SiteControllerImpl) GetSiteByID(ctx *gin.Context)
GetSiteByID 获取单个站点
@Summary 获取单个站点
@Description 根据ID获取站点详情
@Tags 站点管理
@Produce json
@Param id path string true "站点ID"
@Security BearerAuth
@Success 200 {object} model.SuccessResponse{data=dto.SiteResponse} "获取站点详情成功"
@Failure 401 {object} model.ErrResponseDontShowError "未授权访问"
@Failure 404 {object} model.ErrResponseDontShowError "站点不存在"
@Failure 500 {object} model.ErrResponseDontShowError "服务器内部错误"
@Router /api/v1/site/{id} [get]
func (*SiteControllerImpl) GetSites ¶
func (c *SiteControllerImpl) GetSites(ctx *gin.Context)
GetSites 获取站点列表
@Summary 获取站点列表
@Description 获取所有站点配置列表
@Tags 站点管理
@Produce json
@Param page query int false "页码" default(1)
@Param size query int false "每页数量" default(10)
@Security BearerAuth
@Success 200 {object} model.SuccessResponse{data=dto.SiteListResponse} "获取站点列表成功"
@Failure 401 {object} model.ErrResponseDontShowError "未授权访问"
@Failure 500 {object} model.ErrResponseDontShowError "服务器内部错误"
@Router /api/v1/site [get]
func (*SiteControllerImpl) UpdateSite ¶
func (c *SiteControllerImpl) UpdateSite(ctx *gin.Context)
UpdateSite 更新站点
@Summary 更新站点
@Description 更新指定站点的配置
@Tags 站点管理
@Accept json
@Produce json
@Param id path string true "站点ID"
@Param site body dto.UpdateSiteRequest true "站点更新信息"
@Security BearerAuth
@Success 200 {object} model.SuccessResponse{data=dto.SiteResponse} "站点更新成功"
@Failure 400 {object} model.ErrResponse "请求参数错误"
@Failure 401 {object} model.ErrResponseDontShowError "未授权访问"
@Failure 403 {object} model.ErrResponseDontShowError "禁止访问"
@Failure 404 {object} model.ErrResponseDontShowError "站点不存在"
@Failure 409 {object} model.ErrResponseDontShowError "域名和端口组合已被其他站点使用"
@Failure 500 {object} model.ErrResponseDontShowError "服务器内部错误"
@Router /api/v1/site/{id} [put]
type StatsController ¶
type StatsController interface {
GetStats(ctx *gin.Context)
GetOverviewStats(ctx *gin.Context)
GetRealtimeQPS(ctx *gin.Context)
GetTimeSeriesData(ctx *gin.Context)
GetCombinedTimeSeriesData(ctx *gin.Context)
GetTrafficTimeSeriesData(ctx *gin.Context)
}
func NewStatsController ¶
func NewStatsController(runnerService service.RunnerService, statsService service.StatsService) StatsController
type StatsControllerImpl ¶
type StatsControllerImpl struct {
// contains filtered or unexported fields
}
func (*StatsControllerImpl) GetCombinedTimeSeriesData ¶
func (c *StatsControllerImpl) GetCombinedTimeSeriesData(ctx *gin.Context)
GetCombinedTimeSeriesData 获取组合时间序列数据
@Summary 获取组合时间序列数据
@Description 同时获取请求数和拦截数的时间序列数据,用于图表展示
@Tags 统计信息
@Produce json
@Param timeRange query string true "时间范围:24h(24小时)、7d(7天)、30d(30天)" Enums(24h, 7d, 30d) default(24h)
@Security BearerAuth
@Success 200 {object} model.SuccessResponse{data=dto.CombinedTimeSeriesResponse} "获取组合时间序列数据成功"
@Failure 400 {object} model.ErrResponse "请求参数错误"
@Failure 401 {object} model.ErrResponseDontShowError "未授权访问"
@Failure 500 {object} model.ErrResponseDontShowError "服务器内部错误"
@Router /api/v1/stats/combined-time-series [get]
func (*StatsControllerImpl) GetOverviewStats ¶
func (c *StatsControllerImpl) GetOverviewStats(ctx *gin.Context)
GetOverviewStats 获取统计概览数据
@Summary 获取统计概览数据
@Description 获取指定时间范围内的统计概览数据,包括请求数、流量、错误率等
@Tags 统计信息
@Produce json
@Param timeRange query string true "时间范围:24h(24小时)、7d(7天)、30d(30天)" Enums(24h, 7d, 30d) default(24h)
@Security BearerAuth
@Success 200 {object} model.SuccessResponse{data=dto.OverviewStats} "获取统计概览成功"
@Failure 400 {object} model.ErrResponse "请求参数错误"
@Failure 401 {object} model.ErrResponseDontShowError "未授权访问"
@Failure 500 {object} model.ErrResponseDontShowError "服务器内部错误"
@Router /api/v1/stats/overview [get]
func (*StatsControllerImpl) GetRealtimeQPS ¶
func (c *StatsControllerImpl) GetRealtimeQPS(ctx *gin.Context)
GetRealtimeQPS 获取实时QPS数据
@Summary 获取实时QPS数据
@Description 获取最近的实时QPS数据点
@Tags 统计信息
@Produce json
@Param limit query int false "返回的数据点数量,默认30个点,最大60个点" default(30) minimum(1) maximum(60)
@Security BearerAuth
@Success 200 {object} model.SuccessResponse{data=dto.RealtimeQPSResponse} "获取实时QPS数据成功"
@Failure 400 {object} model.ErrResponse "请求参数错误"
@Failure 401 {object} model.ErrResponseDontShowError "未授权访问"
@Failure 500 {object} model.ErrResponseDontShowError "服务器内部错误"
@Router /api/v1/stats/realtime-qps [get]
func (*StatsControllerImpl) GetStats ¶
func (c *StatsControllerImpl) GetStats(ctx *gin.Context)
GetStats 获取原始统计数据
@Summary 获取HAProxy原始统计数据
@Description 获取HAProxy原始的统计信息
@Tags 统计信息
@Produce json
@Security BearerAuth
@Success 200 {object} model.SuccessResponse "获取统计数据成功"
@Failure 401 {object} model.ErrResponseDontShowError "未授权访问"
@Failure 500 {object} model.ErrResponseDontShowError "服务器内部错误"
@Router /stats [get]
func (*StatsControllerImpl) GetTimeSeriesData ¶
func (c *StatsControllerImpl) GetTimeSeriesData(ctx *gin.Context)
GetTimeSeriesData 获取时间序列数据
@Summary 获取时间序列数据
@Description 获取指定时间范围和指标类型的时间序列数据,用于图表展示
@Tags 统计信息
@Produce json
@Param timeRange query string true "时间范围:24h(24小时)、7d(7天)、30d(30天)" Enums(24h, 7d, 30d) default(24h)
@Param metric query string true "指标类型:requests(请求数)、blocks(拦截数)" Enums(requests, blocks) default(requests)
@Security BearerAuth
@Success 200 {object} model.SuccessResponse{data=dto.TimeSeriesResponse} "获取时间序列数据成功"
@Failure 400 {object} model.ErrResponse "请求参数错误"
@Failure 401 {object} model.ErrResponseDontShowError "未授权访问"
@Failure 500 {object} model.ErrResponseDontShowError "服务器内部错误"
@Router /api/v1/stats/time-series [get]
func (*StatsControllerImpl) GetTrafficTimeSeriesData ¶
func (c *StatsControllerImpl) GetTrafficTimeSeriesData(ctx *gin.Context)
GetTrafficTimeSeriesData 获取流量时间序列数据
@Summary 获取流量时间序列数据
@Description 获取指定时间范围的入站和出站流量时间序列数据,用于图表展示
@Tags 统计信息
@Produce json
@Param timeRange query string true "时间范围:24h(24小时)、7d(7天)、30d(30天)" Enums(24h, 7d, 30d) default(24h)
@Security BearerAuth
@Success 200 {object} model.SuccessResponse{data=dto.TrafficTimeSeriesResponse} "获取流量时间序列数据成功"
@Failure 400 {object} model.ErrResponse "请求参数错误"
@Failure 401 {object} model.ErrResponseDontShowError "未授权访问"
@Failure 500 {object} model.ErrResponseDontShowError "服务器内部错误"
@Router /api/v1/stats/traffic-time-series [get]
type WAFLogController ¶
type WAFLogController interface {
GetAttackEvents(ctx *gin.Context)
GetAttackLogs(ctx *gin.Context)
}
func NewWAFLogController ¶
func NewWAFLogController(wafLogService service.WAFLogService) WAFLogController
NewWAFLogController 创建新的WAF日志控制器实例
type WAFLogControllerImpl ¶
type WAFLogControllerImpl struct {
// contains filtered or unexported fields
}
func (*WAFLogControllerImpl) GetAttackEvents ¶
func (c *WAFLogControllerImpl) GetAttackEvents(ctx *gin.Context)
GetAttackEvents godoc
@Summary 获取聚合攻击事件
@Description 按来源IP、目标端口和域名聚合的攻击事件统计,支持多维度筛选和分页
@Tags WAF安全日志
@Accept json
@Produce json
@Param srcIp query string false "来源IP地址,攻击者地址"
@Param dstIp query string false "目标IP地址,被攻击的服务器地址"
@Param domain query string false "域名,被攻击的站点域名"
@Param srcPort query integer false "来源端口号,发起攻击的端口"
@Param dstPort query integer false "目标端口号,被攻击的服务端口"
@Param startTime query string false "查询起始时间 (ISO8601格式,如: 2024-03-17T00:00:00Z)"
@Param endTime query string false "查询结束时间 (ISO8601格式,如: 2024-03-18T23:59:59Z)"
@Param page query integer false "当前页码,从1开始计数 (默认: 1)"
@Param pageSize query integer false "每页记录数,最大100条 (默认: 10)"
@Success 200 {object} model.SuccessResponse{data=dto.AttackEventResponse} "成功"
@Failure 400 {object} model.ErrResponse "请求参数错误"
@Failure 500 {object} model.ErrResponseDontShowError "服务器内部错误"
@Router /api/v1/waf/logs/events [get]
func (*WAFLogControllerImpl) GetAttackLogs ¶
func (c *WAFLogControllerImpl) GetAttackLogs(ctx *gin.Context)
GetAttackLogs godoc
@Summary 获取详细攻击日志
@Description 查询详细的WAF攻击日志记录,提供多条件筛选和分页功能,支持按规则ID、IP、域名、端口和时间范围过滤
@Tags WAF安全日志
@Accept json
@Produce json
@Param ruleId query integer false "规则ID,触发攻击检测的WAF规则标识"
@Param srcIp query string false "来源IP地址,攻击者地址"
@Param dstIp query string false "目标IP地址,被攻击的服务器地址"
@Param domain query string false "域名,被攻击的站点域名"
@Param srcPort query integer false "来源端口号,发起攻击的端口"
@Param dstPort query integer false "目标端口号,被攻击的服务端口"
@Param requestId query string false "请求ID,唯一标识HTTP请求的ID"
@Param startTime query string false "查询起始时间 (ISO8601格式,如: 2024-03-17T00:00:00Z)"
@Param endTime query string false "查询结束时间 (ISO8601格式,如: 2024-03-18T23:59:59Z)"
@Param page query integer false "当前页码,从1开始计数 (默认: 1)"
@Param pageSize query integer false "每页记录数,最大100条 (默认: 10)"
@Success 200 {object} model.SuccessResponse{data=dto.AttackLogResponse} "成功"
@Failure 400 {object} model.ErrResponse "请求参数错误"
@Failure 500 {object} model.ErrResponseDontShowError "服务器内部错误"
@Router /api/v1/waf/logs [get]