utils

package
v1.1.1 Latest Latest
Warning

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

Go to latest
Published: May 11, 2026 License: Apache-2.0 Imports: 38 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrKeyNotSet = errors.New("加密秘钥未配置,请按照文档使用 BAIHU_SECRET_KEY 环境变量启动服务配置秘钥")
)

Functions

func BadRequest

func BadRequest(c *gin.Context, msg string)

func BoolPtr added in v1.0.46

func BoolPtr(b bool) *bool

BoolPtr returns a pointer to the bool value

func BuildMiseCommand added in v1.0.1

func BuildMiseCommand(command string, languages []map[string]string) string

BuildMiseCommand 构建多语言 mise 执行命令 (字符串形式)

func BuildMiseCommandArgs added in v1.0.1

func BuildMiseCommandArgs(cmdArgs []string, languages []map[string]string) []string

BuildMiseCommandArgs 构建多语言 mise 执行命令 (参数列表形式)

func BuildMiseCommandArgsSimple added in v1.0.1

func BuildMiseCommandArgsSimple(cmdArgs []string, language, version string) []string

BuildMiseCommandArgsSimple 构建单个语言的 mise 执行命令 (参数列表形式)

func BuildMiseCommandSimple added in v1.0.1

func BuildMiseCommandSimple(command string, language, version string) string

BuildMiseCommandSimple 构建单个语言的 mise 执行命令

func BuildRuntimeProcessEnv added in v1.0.38

func BuildRuntimeProcessEnv() []string

BuildRuntimeProcessEnv 构造 Baihu 内部可信子进程需要继承的运行时环境变量。 仅包含 Baihu 自己的路径/数据库配置,不包含用户任务环境变量。

func BuildShellEnvPrefix added in v1.0.38

func BuildShellEnvPrefix(envs []string) string

BuildShellEnvPrefix 将 KEY=VALUE 环境变量切片转换为 shell 前缀。

func CheckWSOrigin added in v1.0.48

func CheckWSOrigin(r *http.Request) bool

CheckWSOrigin 校验 WebSocket 的 Origin 来源是否安全。 默认仅允许同源请求,可通过环境变量 BH_ALLOWED_ORIGINS 配置额外的允许列表(逗号分隔)。

func CompressToBase64

func CompressToBase64(data string) (string, error)

CompressToBase64 compresses data using zlib and encodes to base64

func CopyFile added in v1.0.25

func CopyFile(src, dest string) error

CopyFile copies a single file from src to dest

func CopyPath added in v1.0.25

func CopyPath(src, dest string) error

CopyPath copies a file or directory from src to dest

func DecompressFromBase64 added in v0.0.23

func DecompressFromBase64(data string) (string, error)

DecompressFromBase64 decodes base64 and decompresses zlib data

func Decrypt added in v1.0.34

func Decrypt(ciphertext string) (string, error)

Decrypt decrypts a ciphertext string using AES-GCM Returns the original string if decryption fails or if it wasn't encrypted

func DerefBool added in v1.0.46

func DerefBool(b *bool, defaultVal bool) bool

DerefBool returns the value of the bool pointer or default if nil

func Encrypt added in v1.0.34

func Encrypt(plaintext string) (string, error)

Encrypt encrypts a plaintext string using AES-GCM

func Error

func Error(c *gin.Context, code int, msg string)

func ExtractTar

func ExtractTar(src, dest string) error

func ExtractTarGz

func ExtractTarGz(src, dest string) error

func ExtractZip

func ExtractZip(src, dest string) error

func Forbidden

func Forbidden(c *gin.Context, msg string)

func FreeMemory added in v1.0.22

func FreeMemory()

FreeMemory 显式触发内存回收,释放物理资源给 OS 仅建议在执行了超大批量任务或处理了大型文件后调用

func GenerateID added in v1.0.11

func GenerateID() string

GenerateID 生成一个新的 ID (使用 xid,20位字符)

func GenerateMachineID added in v0.0.23

func GenerateMachineID() string

GenerateMachineID 生成机器识别码

func GenerateToken

func GenerateToken(userID string, username string, version int, expireDays int, secret string) (string, error)

GenerateToken 生成 JWT token

func GetActualRepoDir added in v1.1.0

func GetActualRepoDir(targetPath, sourceURL, branch, sourceType string) string

GetActualRepoDir 返回仓库真实的物理目录

func GetGoroutineID added in v0.0.23

func GetGoroutineID() int64

GetGoroutineID 获取当前 Goroutine ID 注意:这只是为了调试和日志目的,不应该用于业务逻辑

func GetMiseNodePath added in v1.0.29

func GetMiseNodePath(version string) string

GetMiseNodePath 获取指定版本的 node 全局包路径,使用内存缓存避免重复获取

func GetRepoIdentifier added in v1.0.28

func GetRepoIdentifier(url string, branch string) string

GetRepoIdentifier 返回根据仓库URL和分支生成的作者_仓库名标识符

func GetShell

func GetShell() (shell string, args []string)

GetShell 返回当前操作系统的 shell 和参数

func GetShellCommand

func GetShellCommand(command string) (shell string, args []string)

GetShellCommand 返回执行命令的 shell 和参数

func GetSystemSecrets added in v1.0.50

func GetSystemSecrets() []string

GetSystemSecrets 返回当前运行时的所有系统级敏感机密(如数据库账号密码等)

func GetZlibWriter added in v1.0.22

func GetZlibWriter(w io.Writer) *zlib.Writer

GetZlibWriter 从对象池中获取 zlib 写入器

func InitRuntime added in v1.0.22

func InitRuntime()

InitRuntime 设置运行时内存和性能优化参数

func InitSecretKey added in v1.0.34

func InitSecretKey()

InitSecretKey initialized the master secret key from the environment and unsets it

func InjectNodePath added in v1.0.29

func InjectNodePath(envs *[]string, languages []map[string]string)

InjectNodePath 检查语言环境中是否有 node,如果有则自动获取并注入 NODE_PATH 到环境变量切片中

func IsInDocker added in v1.0.49

func IsInDocker() bool

IsInDocker 判断程序是否运行在 Docker 容器中

func IsNumeric added in v1.0.11

func IsNumeric(s string) bool

IsNumeric 检查字符串是否全为数字

func IsSecretKeySet added in v1.0.34

func IsSecretKeySet() bool

IsSecretKeySet returns true if the master secret key is configured

func ListMiseInstalledVersions added in v1.0.45

func ListMiseInstalledVersions(language string) ([]string, error)

ListMiseInstalledVersions 获取指定语言已安装的所有版本列表

func MaskSecrets added in v1.0.34

func MaskSecrets(text string, secrets []string) string

MaskSecrets 将文本中的所有敏感机密值替换为脱敏字符串 "********"

func MaskString added in v1.0.49

func MaskString(s string) string

MaskString 对字符串进行脱敏处理,保留首尾,中间用星号遮掩

func NewShellCmd

func NewShellCmd() *exec.Cmd

NewShellCmd 创建一个交互式 shell 命令

func NewShellCommandCmd

func NewShellCommandCmd(command string) *exec.Cmd

NewShellCommandCmd 创建一个执行指定命令的 shell 命令

func NotFound

func NotFound(c *gin.Context, msg string)

func PaginatedResponse

func PaginatedResponse(c *gin.Context, data interface{}, total int64, p Pagination)

PaginatedResponse 分页响应

func ParseInt

func ParseInt(s string) (int, error)

ParseInt 解析字符串为整数

func ParseToken

func ParseToken(tokenString string, secret string) (string, string, int, error)

ParseToken 解析 JWT token

func PutZlibWriter added in v1.0.22

func PutZlibWriter(zw *zlib.Writer)

PutZlibWriter 将 zlib 写入器还回对象池

func QuotePath added in v1.0.34

func QuotePath(path string) string

QuotePath 转义并包裹路径,防止 Shell 注入

func RandomString added in v0.0.23

func RandomString(n int) string

RandomString 生成指定长度的随机字符串

func ResolveAbsScriptsDir added in v1.0.38

func ResolveAbsScriptsDir() string

ResolveAbsScriptsDir 解析 Baihu 运行时脚本目录的绝对路径。

func ServerError

func ServerError(c *gin.Context, msg string)

func ShellEnvAssignment added in v1.0.38

func ShellEnvAssignment(key, value string) string

ShellEnvAssignment 生成 shell 可安全使用的 KEY='VALUE' 赋值片段。

func Success

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

func SuccessMsg

func SuccessMsg(c *gin.Context, msg string)

func ToInt added in v1.0.18

func ToInt(s string, defaultVal int) int

ToInt 解析字符串为整数,如果解析失败则返回默认值

func ToUTF8 added in v0.0.23

func ToUTF8(data []byte) string

ToUTF8 converts potentially non-UTF8 data (like GBK on Windows) to UTF-8

func TooManyRequests added in v0.0.23

func TooManyRequests(c *gin.Context, msg string)

func TrimLog added in v1.0.49

func TrimLog(content string, limit int) string

TrimLog 裁剪日志,保留末尾指定大小

func Unauthorized

func Unauthorized(c *gin.Context, msg string)

Types

type Claims

type Claims struct {
	UserID       string `json:"user_id"`
	Username     string `json:"username"`
	TokenVersion int    `json:"version"`
	jwt.RegisteredClaims
}

type Pagination

type Pagination struct {
	Page     int
	PageSize int
}

Pagination 分页参数

func ParsePagination

func ParsePagination(c *gin.Context) Pagination

ParsePagination 从请求中解析分页参数

func (Pagination) Offset

func (p Pagination) Offset() int

Offset 计算偏移量

type PaginationData added in v1.0.13

type PaginationData struct {
	Data     interface{} `json:"data"`
	Total    int64       `json:"total"`
	Page     int         `json:"page"`
	PageSize int         `json:"page_size"`
}

PaginationData 分页数据

type Response

type Response struct {
	Code int         `json:"code"`
	Msg  string      `json:"msg"`
	Data interface{} `json:"data,omitempty"`
}

type TailBuffer added in v1.0.49

type TailBuffer struct {
	// contains filtered or unexported fields
}

TailBuffer 是一个只保留最后 N 字节数据的缓冲区

func NewTailBuffer added in v1.0.49

func NewTailBuffer(limit int) *TailBuffer

NewTailBuffer 创建一个限制大小为 limit 的尾部缓冲区

func (*TailBuffer) Bytes added in v1.0.49

func (b *TailBuffer) Bytes() []byte

Bytes 返回缓冲区内的所有数据

func (*TailBuffer) Len added in v1.0.49

func (b *TailBuffer) Len() int

Len 返回当前存储的数据长度

func (*TailBuffer) String added in v1.0.49

func (b *TailBuffer) String() string

String 返回缓冲区内的字符串表示

func (*TailBuffer) Write added in v1.0.49

func (b *TailBuffer) Write(p []byte) (n int, err error)

Write 实现 io.Writer 接口

Jump to

Keyboard shortcuts

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