controller

package
v0.0.0-...-32b359f Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 2, 2025 License: MIT Imports: 17 Imported by: 0

Documentation

Overview

server/controller/config.go

server/controller/ip_group.go

server/controller/rule.go

Index

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

type ConfigController interface {
	GetConfig(ctx *gin.Context)
	PatchConfig(ctx *gin.Context)
}

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

type RunnerController interface {
	GetStatus(ctx *gin.Context)
	Control(ctx *gin.Context)
}

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]

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL