utils

package
v0.0.0-...-5901162 Latest Latest
Warning

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

Go to latest
Published: Sep 17, 2025 License: MIT Imports: 43 Imported by: 0

Documentation

Index

Constants

View Source
const (
	StatusError   = 1 // 操作失败
	StatusSuccess = 0 // 操作成功
)

定义操作成功和失败的常量状态码

View Source
const (
	// WebSocket 升级器配置常量
	DefaultWSReadBufferSize   = 4096             // 读缓冲区大小(增加以提高性能)
	DefaultWSWriteBufferSize  = 4096             // 写缓冲区大小(增加以提高性能)
	DefaultWSHandshakeTimeout = 10 * time.Second // 握手超时时间
)

Variables

View Source
var UpGrader = websocket.Upgrader{
	ReadBufferSize:    DefaultWSReadBufferSize,
	WriteBufferSize:   DefaultWSWriteBufferSize,
	HandshakeTimeout:  DefaultWSHandshakeTimeout,
	EnableCompression: true,
	CheckOrigin: func(r *http.Request) bool {

		return true
	},
	Error: func(w http.ResponseWriter, r *http.Request, status int, reason error) {

		http.Error(w, "WebSocket upgrade failed", status)
	},
}

UpGrader 升级HTTP连接为WebSocket连接 包含更好的错误处理和性能配置

Functions

func ApiData

func ApiData(c *gin.Context, code int, data interface{}, message string)

ApiData 通用的返回函数,用于标准化API响应格式 参数: - c: gin 上下文 - code: 状态码 - data: 返回的数据 - message: 返回的消息

func AtomicWriteFile

func AtomicWriteFile(filePath string, data []byte) error

原子性写入文件

func BadRequest

func BadRequest(c *gin.Context, code int, data interface{}, message string)

BadRequest 参数错误的返回,使用HTTP 400状态码

func BadRequestError

func BadRequestError(c *gin.Context, message string)

BadRequestError 参数错误的失败返回

func BadRequestWithDetails

func BadRequestWithDetails(c *gin.Context, data interface{}, message string)

BadRequestWithDetails 带详细数据和消息的参数错误返回

func Base64Decrypt

func Base64Decrypt(encryptedPassword string) (string, error)

Base64Decrypt 用于解密加密后的密码

func Base64DecryptWithMagic

func Base64DecryptWithMagic(encryptedPassword string) (string, error)

Base64DecryptWithMagic 解密 与加密过程相反的步骤还原原始密码

func Base64Encrypt

func Base64Encrypt(password string) string

Base64Encrypt 用于加密明文密码

func Base64EncryptWithMagic

func Base64EncryptWithMagic(password string) string

Base64EncryptWithMagic 加密 通过先添加特定盐值、反转字符串再进行base64编码

func BuildMatchers

func BuildMatchers(alertEvent *model.MonitorAlertEvent, l *zap.Logger, useName int8) ([]*labels.Matcher, error)

func CalculateAlertHash

func CalculateAlertHash(pool *model.MonitorAlertManagerPool) string

func CalculatePromHash

func CalculatePromHash(pool *model.MonitorScrapePool) string

CalculateHash 计算哈希值(不修改入参数据)

func CheckAlertsIpExists

func CheckAlertsIpExists(req *model.MonitorAlertManagerPool, rules []*model.MonitorAlertManagerPool) bool

func CheckPoolIpExists

func CheckPoolIpExists(pools []*model.MonitorScrapePool, req *model.MonitorScrapePool) error

func CleanupFailedPool

func CleanupFailedPool(localYamlDir string, pool *model.MonitorScrapePool, instances int)

清理失败池子的临时文件

func CleanupOldIPs

func CleanupOldIPs(tempConfigMap map[string]string,
	updatedPools map[string]struct{}, validIPs map[string]struct{})

清理已更新池子的旧IP

func CloneMap

func CloneMap(original map[string]string) map[string]string

CloneMap 克隆一个字符串到字符串的映射

func CopyMap

func CopyMap[K comparable, V any](src map[K]V) map[K]V

深拷贝map

func DecryptBatch

func DecryptBatch(encryptedSecretKeys []string, encryptionKey []byte) ([]string, error)

DecryptBatch 批量解密

func DecryptSecretKey

func DecryptSecretKey(encryptedSecretKey string, encryptionKey []byte) (string, error)

DecryptSecretKey 使用指定密钥解密数据

func DeepCopyScrapeConfig

func DeepCopyScrapeConfig(sc *pc.ScrapeConfig) *pc.ScrapeConfig

DeepCopyScrapeConfig 深度拷贝 ScrapeConfig

func DeleteWithId

func DeleteWithId(l *zap.Logger, funcName string, timeout int, url string, paramsMap map[string]string, headerMap map[string]string) ([]byte, error)

func EncryptBatch

func EncryptBatch(secretKeys []string, encryptionKey []byte) ([]string, error)

EncryptBatch 批量加密

func EncryptSecretKey

func EncryptSecretKey(secretKey string, encryptionKey []byte) (string, error)

EncryptSecretKey 使用指定密钥加密数据

func Error

func Error(c *gin.Context)

Error 操作失败的返回

func ErrorWithDetails

func ErrorWithDetails(c *gin.Context, data interface{}, message string)

ErrorWithDetails 带详细数据和消息的操作失败返回

func ErrorWithMessage

func ErrorWithMessage(c *gin.Context, message string)

ErrorWithMessage 带消息的操作失败返回

func Forbidden

func Forbidden(c *gin.Context, data interface{}, message string)

Forbidden 无权限的返回,使用HTTP 403状态码

func ForbiddenError

func ForbiddenError(c *gin.Context, message string)

ForbiddenError 无权限的失败返回

func FormatMap

func FormatMap(m map[string]string) string

FormatMap 将 map[string]string 格式化为字符串,每个键值对占一行

func FromSliceTuMap

func FromSliceTuMap(kvs []string) map[string]string

func GenPromDuration

func GenPromDuration(seconds int) promModel.Duration

GenPromDuration 转换秒为Prometheus Duration

func GenerateKeyFromPassword

func GenerateKeyFromPassword(password string, salt []byte) ([]byte, error)

GenerateKeyFromPassword 从密码生成密钥(使用PBKDF2)

func GenerateRandomKey

func GenerateRandomKey() ([]byte, error)

GenerateRandomKey 生成随机密钥

func GenerateRandomSalt

func GenerateRandomSalt() ([]byte, error)

GenerateRandomSalt 生成随机盐值

func GetAge

func GetAge(creationTime time.Time) string

GetAge 计算资源创建时间到现在的时间差,返回易读格式

func GetClientIP

func GetClientIP(r *http.Request) string

GetClientIP 获取客户端真实IP地址

func GetCustomParamID

func GetCustomParamID(ctx *gin.Context, paramID string) (int, error)

GetCustomParamID 从查询参数中解析自定义字段的 ID,并进行类型转换

func GetLocalIPs

func GetLocalIPs() ([]string, error)

func GetParamCustomName

func GetParamCustomName(ctx *gin.Context, paramName string) (string, error)

GetParamCustomName 从查询参数中解析 Name,并进行类型转换

func GetParamID

func GetParamID(ctx *gin.Context) (int, error)

GetParamID 从查询参数中解析 ID,并进行类型转换

func GetQueryParam

func GetQueryParam[T any](ctx *gin.Context, key string) (T, error)

GetQueryParam 从查询参数中解析指定类型的值

func GetStringParam

func GetStringParam(ctx *gin.Context, key string) (string, error)

func HandleRequest

func HandleRequest(ctx *gin.Context, req interface{}, action func() (interface{}, error))

HandleRequest 用于统一处理请求绑定和响应

func InternalServerError

func InternalServerError(c *gin.Context, code int, data interface{}, message string)

InternalServerError 服务器内部错误的返回,使用HTTP 500状态码

func InternalServerErrorWithDetails

func InternalServerErrorWithDetails(c *gin.Context, data interface{}, message string)

InternalServerErrorWithDetails 带详细数据和消息的服务器内部错误返回

func MapToStringSlice

func MapToStringSlice(inputMap map[string]string) ([]string, error)

MapToStringSlice 将 map 转换为 []string,要求偶数个元素,key和值依次排列

func NewBusinessError

func NewBusinessError(code error, message string) error

NewBusinessError 创建业务错误

func ParseExternalLabels

func ParseExternalLabels(labelsList []string) []string

ParseExternalLabels 解析外部标签

func ParseTags

func ParseTags(tags []string) (map[promModel.LabelName]promModel.LabelValue, error)

ParseTags 将 ECS 的 Tags 切片解析为 Prometheus 的标签映射

func ParseURL

func ParseURL(u string) (*pcc.URL, error)

ParseURL 解析字符串为URL,返回错误而非 panic

func Ping

func Ping(ipAddr string) bool

Ping 检查指定的 IP 地址是否可达

func PostWithJson

func PostWithJson(ctx context.Context, client *http.Client, l *zap.Logger, url string, jsonStr string, params map[string]string, headers map[string]string) ([]byte, error)

PostWithJson 发送带有JSON字符串的POST请求

func PostWithJsonString

func PostWithJsonString(l *zap.Logger, funcName string, timeout int, url string, jsonStr string, paramsMap map[string]string, headerMap map[string]string) ([]byte, error)

PostWithJsonString 发送带 JSON 数据的 POST 请求

func PromqlExprCheck

func PromqlExprCheck(expr string) (bool, error)

func SecureZeroMemory

func SecureZeroMemory(data []byte)

SecureZeroMemory 安全清零内存

func SendSilenceRequest

func SendSilenceRequest(ctx context.Context, l *zap.Logger, url string, data []byte) (string, error)

func SetUserInfoToContext

func SetUserInfoToContext(ctx context.Context, userInfo *UserInfo) context.Context

SetUserInfoToContext 将用户信息设置到context中

func SetUserInfoToGinContext

func SetUserInfoToGinContext(c *gin.Context, userInfo *UserInfo)

SetUserInfoToGinContext 将用户信息设置到gin.Context中

func StringSliceToMap

func StringSliceToMap(inputSlice []string) (map[string]string, error)

StringSliceToMap 将 []string 转换为 map[string]string,要求输入长度为偶数,奇数索引为 key,偶数索引为 value

func Success

func Success(c *gin.Context)

Success 操作成功的返回

func SuccessWithData

func SuccessWithData(c *gin.Context, data interface{})

SuccessWithData 带数据的操作成功返回

func SuccessWithDetails

func SuccessWithDetails(c *gin.Context, data interface{}, message string)

SuccessWithDetails 带详细数据和消息的操作成功返回

func SuccessWithMessage

func SuccessWithMessage(c *gin.Context, message string)

SuccessWithMessage 带消息的操作成功返回

func Unauthorized

func Unauthorized(c *gin.Context, code int, data interface{}, message string)

Unauthorized 未认证的返回,使用HTTP 401状态码

func UnauthorizedErrorWithDetails

func UnauthorizedErrorWithDetails(c *gin.Context, data interface{}, message string)

UnauthorizedErrorWithDetails 带详细数据和消息的未认证返回

func ValidateEncryptedData

func ValidateEncryptedData(encryptedData string) error

ValidateEncryptedData 验证加密数据格式

func ValidateUniqueResource

func ValidateUniqueResource[T any](ctx context.Context, getResourceFunc func(context.Context, interface{}) (T, error), newResource T, id interface{}) error

ValidateUniqueResource 验证是否存在相同的资源

Types

type ApiResponse

type ApiResponse struct {
	Code    int         `json:"code"`    // 状态码,表示业务逻辑的状态,而非HTTP状态码
	Data    interface{} `json:"data"`    // 响应数据
	Message string      `json:"message"` // 反馈信息
}

ApiResponse 通用的API响应结构体

type BusinessError

type BusinessError struct {
	Code    error
	Message string
}

BusinessError 业务错误结构体

func (*BusinessError) Error

func (e *BusinessError) Error() string

type Handler

type Handler interface {
	SetLoginToken(ctx *gin.Context, uid int, username string, accountType int8) (string, string, error)
	SetJWTToken(ctx *gin.Context, uid int, username string, ssid string, accountType int8) (string, error)
	ExtractToken(ctx *gin.Context) string
	CheckSession(ctx *gin.Context, ssid string) error
	ClearToken(ctx *gin.Context) error
	// contains filtered or unexported methods
}

func NewJWTHandler

func NewJWTHandler(c redis.Cmdable) Handler

type K8sBatchRequest

type K8sBatchRequest struct {
	Cluster string           `json:"cluster"`
	Items   []K8sRequestItem `json:"items"`
}

type K8sObjectRequest

type K8sObjectRequest struct {
	Cluster   string `json:"cluster"`
	Namespace string `json:"namespace"`
	Name      string `json:"name"`
}

type K8sRequestItem

type K8sRequestItem struct {
	Namespace string `json:"namespace"`
	Name      string `json:"name"`
}

type KeyValuePair

type KeyValuePair struct {
	Key   string `json:"key"`
	Value string `json:"value"`
}

type LabelOption

type LabelOption struct {
	Label    string         `json:"label"`
	Value    string         `json:"value"`
	Children []*LabelOption `json:"children"`
}

LabelOption 通用返回结构体,用于前后端交互的数据格式

type OperationData

type OperationData struct {
	Success bool   `json:"success"`
	Error   string `json:"error"`
}

type RefreshClaims

type RefreshClaims struct {
	jwt.RegisteredClaims
	Uid         int
	Username    string
	Ssid        string
	AccountType int8
}

type SelectOption

type SelectOption struct {
	Label string `json:"label"`
	Value string `json:"value"`
}

type SelectOptionInt

type SelectOptionInt struct {
	Label string `json:"label"`
	Value int    `json:"value"`
}

type SilenceResponse

type SilenceResponse struct {
	Status string `json:"status"`
	Data   struct {
		SilenceID string `json:"silence_id"`
	} `json:"data"`
}

type UserClaims

type UserClaims struct {
	jwt.RegisteredClaims
	Uid         int
	Username    string
	Ssid        string
	UserAgent   string
	ContentType string
	AccountType int8
}

type UserInfo

type UserInfo struct {
	UserID    int    `json:"userId"`
	Username  string `json:"username"`
	IP        string `json:"ip"`
	UserAgent string `json:"userAgent"`
}

UserInfo 用户信息结构体

func GetUserInfoFromContext

func GetUserInfoFromContext(ctx context.Context) *UserInfo

GetUserInfoFromContext 从context.Context中获取用户信息

func GetUserInfoFromGinContext

func GetUserInfoFromGinContext(c *gin.Context) *UserInfo

GetUserInfoFromGinContext 从gin.Context中获取用户信息

func GetUserInfoFromHTTPRequest

func GetUserInfoFromHTTPRequest(r *http.Request) *UserInfo

GetUserInfoFromHTTPRequest 从http.Request中获取用户信息

func (*UserInfo) Clone

func (u *UserInfo) Clone() *UserInfo

Clone 创建用户信息的副本

func (*UserInfo) IsEmpty

func (u *UserInfo) IsEmpty() bool

IsEmpty 检查用户信息是否为空

func (*UserInfo) IsValid

func (u *UserInfo) IsValid() bool

IsValid 检查用户信息是否有效

func (*UserInfo) String

func (u *UserInfo) String() string

String 返回用户信息的字符串表示

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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