goutils

package module
v1.0.32 Latest Latest
Warning

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

Go to latest
Published: Mar 22, 2022 License: MIT Imports: 57 Imported by: 0

README

Go Utils

Utils for Go dev.

Usage

生成自签名 CA 证书

生成证书

func main(){
    ip := []byte("127.0.0.1")
    alternateDNS := []string{"localhost"}
    GenerateSelfSignedCertKey("/root", 2048, "192.168.0.1", []net.IP{net.ParseIP(string(ip))}, alternateDNS)
}

查看证书

openssl x509 -in ca.crt -noout -text
WriteCounter 使用

See https://golangcode.com/download-a-file-with-progress/

package main

import (
    "fmt"
    "io"
    "net/http"
    "os"
    "strings"

    "github.com/designinlife/goutils"
)

func main() {
    fileUrl := "https://upload.wikimedia.org/wikipedia/commons/d/d6/Wp-w4-big.jpg"
    err := DownloadFile("avatar.jpg", fileUrl)
    if err != nil {
        panic(err)
    }
}

// DownloadFile will download a url to a local file. It's efficient because it will
// write as it downloads and not load the whole file into memory. We pass an io.TeeReader
// into Copy() to report progress on the download.
func DownloadFile(filepath string, url string) error {
    // Create the file, but give it a tmp file extension, this means we won't overwrite a
    // file until it's downloaded, but we'll remove the tmp extension once downloaded.
    out, err := os.Create(filepath + ".tmp")
    if err != nil {
        return err
    }

    // Get the data
    resp, err := http.Get(url)
    if err != nil {
        out.Close()
        return err
    }
    defer resp.Body.Close()

    // Create our progress reporter and pass it to be used alongside our writer
    counter := &WriteCounter{}
    if _, err = io.Copy(out, io.TeeReader(resp.Body, counter)); err != nil {
        out.Close()
        return err
    }

    // The progress use the same line so print a new line once it's finished downloading
    fmt.Print("\n")

    // Close the file without defer so it can happen before Rename()
    out.Close()

    if err = os.Rename(filepath+".tmp", filepath); err != nil {
        return err
    }
    return nil
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func APHash added in v1.0.22

func APHash(str []byte) uint32

func APHash64 added in v1.0.22

func APHash64(str []byte) uint64

func BKDRHash added in v1.0.22

func BKDRHash(str []byte) uint32

func BKDRHash64 added in v1.0.22

func BKDRHash64(str []byte) uint64

func Base58Decoding added in v1.0.22

func Base58Decoding(str string) string

Base58Decoding Base58解码。

func Base58Encoding added in v1.0.22

func Base58Encoding(str string) string

Base58Encoding Base58编码。

func Base64Decoding added in v1.0.22

func Base64Decoding(str string) string

Base64Decoding Base64解码。

func Base64Encoding added in v1.0.22

func Base64Encoding(str string) string

Base64Encoding Base64编码。

func CheckSum added in v1.0.1

func CheckSum(filename string, algorithm HashAlgorithm, capital bool) (string, error)

CheckSum 计算文件哈希校验码。

func CopyFile added in v1.0.8

func CopyFile(src, dst string) (int64, error)

CopyFile 拷贝文件。

func DJBHash added in v1.0.22

func DJBHash(str []byte) uint32

func DJBHash64 added in v1.0.22

func DJBHash64(str []byte) uint64

func Decode added in v1.0.24

func Decode(s string) (string, error)

Decode converts the alpha id to big integer

func DecodeInt added in v1.0.24

func DecodeInt(s string) (*big.Int, error)

DecodeInt converts the alpha id to a bit.Int

func ELFHash added in v1.0.22

func ELFHash(str []byte) uint32

func ELFHash64 added in v1.0.22

func ELFHash64(str []byte) uint64

func Encode added in v1.0.24

func Encode(s string) (string, error)

Encode converts the big integer to alpha id (an alphanumeric id with mixed cases)

func EncodeInt added in v1.0.24

func EncodeInt(i *big.Int) (string, error)

EncodeInt encodes a big.Int integer

func FromEnvironment added in v1.0.4

func FromEnvironment() proxy.Dialer

func FromURL added in v1.0.4

func FromURL(u *url.URL, forward proxy.Dialer) (proxy.Dialer, error)

func Gb18030ToUtf8 added in v1.0.13

func Gb18030ToUtf8(s []byte) ([]byte, error)

Gb18030ToUtf8 GB18030 vs UTF-8 编码转换。

func GbkToUtf8 added in v1.0.13

func GbkToUtf8(s []byte) ([]byte, error)

GbkToUtf8 GBK vs UTF-8 编码转换。

func GenerateSelfSignedCertKey added in v1.0.8

func GenerateSelfSignedCertKey(outdir string, keySize int, expire time.Duration, host string, alternateIPs []net.IP, alternateDNS []string) error

GenerateSelfSignedCertKey 生成自签名证书。

func GetLocalIPAddr added in v1.0.8

func GetLocalIPAddr() (string, error)

GetLocalIPAddr 读取本机 IP 地址。

func GetUserPrivileges added in v1.0.21

func GetUserPrivileges(db *sql.DB, user string, host string) ([]string, error)

func Gzip added in v1.0.13

func Gzip(source, target string) error

func HMAC added in v1.0.1

func HMAC(str, key string, algorithm HashAlgorithm, capital bool) string

func HMD5 added in v1.0.1

func HMD5(s, key string) string

func HSHA1 added in v1.0.1

func HSHA1(s, key string) string

func HSHA2 added in v1.0.1

func HSHA2(s, key string) string

func HSHA256 added in v1.0.1

func HSHA256(s, key string) string

func HSHA3 added in v1.0.1

func HSHA3(s, key string) string

func HSHA512 added in v1.0.1

func HSHA512(s, key string) string

func Hash added in v1.0.1

func Hash(s string, algorithm HashAlgorithm, capital bool) string

func InSlice added in v1.0.1

func InSlice(s []string, str string) bool

InSlice 检查字符串是否在列表中?

func InSlicePrefix added in v1.0.1

func InSlicePrefix(s []string, prefix string) bool

InSlicePrefix 检查字符串前缀是否在列表中?

func IsDir

func IsDir(dirname string) bool

IsDir 检查是否文件夹?

func IsFile

func IsFile(filename string) bool

IsFile 检查是否文件?

func IsInteger added in v1.0.13

func IsInteger(s string) bool

IsInteger 检查字符串是否匹配整数模式?

func IsRegularEmailAddress added in v1.0.8

func IsRegularEmailAddress(s string) bool

IsRegularEmailAddress 检查字符串是否匹配电子邮件地址模式?

func IsRegularIPv4Address added in v1.0.13

func IsRegularIPv4Address(s string) bool

IsRegularIPv4Address 检查字符串是否匹配 IPv4 模式?

func IsRegularIPv4AndPort added in v1.0.8

func IsRegularIPv4AndPort(s string) bool

IsRegularIPv4AndPort 检查字符串是否匹配 IP:Port 模式?

func IsRegularPhoneNumber added in v1.0.8

func IsRegularPhoneNumber(s string) bool

IsRegularPhoneNumber 检查字符串是否匹配电话号码模式?

func IsTrue added in v1.0.28

func IsTrue(v string) bool

func JSHash added in v1.0.22

func JSHash(str []byte) uint32

func JSHash64 added in v1.0.22

func JSHash64(str []byte) uint64

func MD5 added in v1.0.1

func MD5(s string) string

func NewMySQLConn added in v1.0.15

func NewMySQLConn(host string, port int, username, passwd, database, charset string) (*sql.DB, error)

NewMySQLConn 打开 MySQL 连接。

func PJWHash added in v1.0.22

func PJWHash(str []byte) uint32

func PJWHash64 added in v1.0.22

func PJWHash64(str []byte) uint64

func PathNormalized added in v1.0.13

func PathNormalized(s string) string

PathNormalized 移除路径中多余的 /\ 分隔字符。

func RSHash added in v1.0.22

func RSHash(str []byte) uint32

func RSHash64 added in v1.0.22

func RSHash64(str []byte) uint64

func RemoveAllSafe added in v1.0.3

func RemoveAllSafe(s string) error

RemoveAllSafe 移除任意文件或目录。(当传入的参数是系统保护路径时会报错!)

func RemoveContents added in v1.0.1

func RemoveContents(dir string) error

RemoveContents 移除目录下的所有文件及子目录。(不包含目录自身)

func RemoveGlob added in v1.0.1

func RemoveGlob(path string) (err error)

RemoveGlob 按模式匹配规则移除内容。

func RemovePathSeparatorPrefix added in v1.0.8

func RemovePathSeparatorPrefix(s string) string

RemovePathSeparatorPrefix 移除开头的 /,\ 字符。

func RemovePathSeparatorSuffix added in v1.0.8

func RemovePathSeparatorSuffix(s string) string

RemovePathSeparatorSuffix 移除尾部的 /,\ 字符。

func ReverseByteArr added in v1.0.22

func ReverseByteArr(bytes []byte) []byte

func SDBMHash added in v1.0.22

func SDBMHash(str []byte) uint32

func SDBMHash64 added in v1.0.22

func SDBMHash64(str []byte) uint64

func SHA1 added in v1.0.1

func SHA1(s string) string

func SHA2 added in v1.0.1

func SHA2(s string) string

func SHA256 added in v1.0.1

func SHA256(s string) string

func SHA3 added in v1.0.1

func SHA3(s string) string

func SHA512 added in v1.0.1

func SHA512(s string) string

func SearchFile added in v1.0.23

func SearchFile(name string, dirs []string) (string, error)

SearchFile 在若干目录中搜索 name 文件。

func Substitute

func Substitute(source string, replacements map[string]string) string

Substitute 替换字符串。

func Tar added in v1.0.13

func Tar(sourceDir, targetDir string) error

func TarGzip added in v1.0.13

func TarGzip(source, target string) error

func UnGzip added in v1.0.13

func UnGzip(source, target string) error

func UnixPathNormalized added in v1.0.13

func UnixPathNormalized(s string) string

UnixPathNormalized 转换路径分隔符为 Unix 样式。

func Untar added in v1.0.13

func Untar(tarball, target string) error

func UntarGzip added in v1.0.13

func UntarGzip(source, target string) error

func Unzip added in v1.0.13

func Unzip(zipFile string, destDir string) error

Unzip 解压文件。

func Utf8ToGb18030 added in v1.0.13

func Utf8ToGb18030(s []byte) ([]byte, error)

Utf8ToGb18030 UTF-8 vs GB18030 编码转换。

func Utf8ToGbk added in v1.0.13

func Utf8ToGbk(s []byte) ([]byte, error)

Utf8ToGbk UTF-8 vs GBK 编码转换。

func VerifySum added in v1.0.3

func VerifySum(filename, checksum string, algorithm HashAlgorithm) bool

VerifySum 校验文件哈希值。

func WindowsPathNormalized added in v1.0.14

func WindowsPathNormalized(s string) string

WindowsPathNormalized 转换路径分隔符为 Windows 样式。

func Zip added in v1.0.13

func Zip(srcFile string, destZip string, containSelf bool) error

Zip 压缩目录。

Types

type BotMessage added in v1.0.28

type BotMessage interface {
	Body() ([]byte, error)
}

type BotSender added in v1.0.28

type BotSender interface {
	Send(v BotMessage) error
}

type DbColumnSchema added in v1.0.14

type DbColumnSchema struct {
	TableCatalog           string         `db:"TABLE_CATALOG"`
	TableSchema            string         `db:"TABLE_SCHEMA"`
	TableName              string         `db:"TABLE_NAME"`
	ColumnName             string         `db:"COLUMN_NAME"`
	OrdinalPosition        uint64         `db:"ORDINAL_POSITION"`
	ColumnDefault          sql.NullString `db:"COLUMN_DEFAULT"`
	IsNullable             string         `db:"IS_NULLABLE"`
	DataType               string         `db:"DATA_TYPE"`
	CharacterMaximumLength sql.NullInt64  `db:"CHARACTER_MAXIMUM_LENGTH"`
	CharacterOctetLength   sql.NullInt64  `db:"CHARACTER_OCTET_LENGTH"`
	NumericPrecision       sql.NullInt64  `db:"NUMERIC_PRECISION"`
	NumericScale           sql.NullInt64  `db:"NUMERIC_SCALE"`
	DatetimePrecision      sql.NullInt64  `db:"DATETIME_PRECISION"`
	CharacterSetName       sql.NullString `db:"CHARACTER_SET_NAME"`
	CollationName          sql.NullString `db:"COLLATION_NAME"`
	ColumnType             string         `db:"COLUMN_TYPE"`
	ColumnKey              string         `db:"COLUMN_KEY"`
	Extra                  string         `db:"EXTRA"`
	Privileges             string         `db:"PRIVILEGES"`
	ColumnComment          string         `db:"COLUMN_COMMENT"`
	GenerationExpression   string         `db:"GENERATION_EXPRESSION"`
}

func GetColumnSchemas added in v1.0.14

func GetColumnSchemas(db *sql.DB, database, tableName string) ([]*DbColumnSchema, error)

type DbSchema added in v1.0.15

type DbSchema struct {
	CatalogName             string         `db:"CATALOG_NAME"`
	SchemaName              string         `db:"SCHEMA_NAME"`
	DefaultCharacterSetName string         `db:"DEFAULT_CHARACTER_SET_NAME"`
	DefaultCollationName    string         `db:"DEFAULT_COLLATION_NAME"`
	SqlPath                 sql.NullString `db:"SQL_PATH"`
}

func GetDatabaseSchemas added in v1.0.15

func GetDatabaseSchemas(db *sql.DB, database string) ([]*DbSchema, error)

type DbTableSchema added in v1.0.14

type DbTableSchema struct {
	TableCatalog   string         `db:"TABLE_CATALOG"`
	TableSchema    string         `db:"TABLE_SCHEMA"`
	TableName      string         `db:"TABLE_NAME"`
	TableType      string         `db:"TABLE_TYPE"`
	Engine         sql.NullString `db:"ENGINE"`
	Version        sql.NullInt64  `db:"VERSION"`
	RowFormat      sql.NullString `db:"ROW_FORMAT"`
	TableRows      sql.NullInt64  `db:"TABLE_ROWS"`
	AvgRowLength   sql.NullInt64  `db:"AVG_ROW_LENGTH"`
	DataLength     sql.NullInt64  `db:"DATA_LENGTH"`
	MaxDataLength  sql.NullInt64  `db:"MAX_DATA_LENGTH"`
	IndexLength    sql.NullInt64  `db:"INDEX_LENGTH"`
	DataFree       sql.NullInt64  `db:"DATA_FREE"`
	AutoIncrement  sql.NullInt64  `db:"AUTO_INCREMENT"`
	CreateTime     sql.NullString `db:"CREATE_TIME"`
	UpdateTime     sql.NullString `db:"UPDATE_TIME"`
	CheckTime      sql.NullString `db:"CHECK_TIME"`
	TableCollation sql.NullString `db:"TABLE_COLLATION"`
	Checksum       sql.NullInt64  `db:"CHECKSUM"`
	CreateOptions  sql.NullString `db:"CREATE_OPTIONS"`
	TableComment   string         `db:"TABLE_COMMENT"`
}

func GetTableSchema added in v1.0.14

func GetTableSchema(db *sql.DB, database, tableName string) (*DbTableSchema, error)

func GetTableSchemas added in v1.0.14

func GetTableSchemas(db *sql.DB, database string) ([]*DbTableSchema, error)

type DbUser added in v1.0.21

type DbUser struct {
	User   string `db:"user"`
	Host   string `db:"host"`
	Grants []string
}

func GetUsers added in v1.0.21

func GetUsers(db *sql.DB, grantsRequired bool) ([]*DbUser, error)

type DingtalkActionCardMessage added in v1.0.28

type DingtalkActionCardMessage struct {
	Msgtype    string `json:"msgtype"`
	ActionCard struct {
		Title          string                            `json:"title"`
		Text           string                            `json:"text"`
		BtnOrientation string                            `json:"btnOrientation,omitempty"`
		Btns           []DingtalkActionCardMessageButton `json:"btns,omitempty"`
	} `json:"actionCard"`
}

func NewDingtalkActionCardMessage added in v1.0.28

func NewDingtalkActionCardMessage(title, content string) *DingtalkActionCardMessage

func (*DingtalkActionCardMessage) AddButton added in v1.0.28

func (s *DingtalkActionCardMessage) AddButton(title, actionUrl string)

func (*DingtalkActionCardMessage) Body added in v1.0.28

func (s *DingtalkActionCardMessage) Body() ([]byte, error)

type DingtalkActionCardMessageButton added in v1.0.28

type DingtalkActionCardMessageButton struct {
	Title     string `json:"title"`
	ActionURL string `json:"actionURL"`
}

type DingtalkActionCardSingleMessage added in v1.0.29

type DingtalkActionCardSingleMessage struct {
	ActionCard struct {
		Title          string `json:"title"`
		Text           string `json:"text"`
		BtnOrientation string `json:"btnOrientation"`
		SingleTitle    string `json:"singleTitle"`
		SingleURL      string `json:"singleURL"`
	} `json:"actionCard"`
	Msgtype string `json:"msgtype"`
}

func NewDingtalkActionCardSingleMessage added in v1.0.29

func NewDingtalkActionCardSingleMessage(title, content, singleTitle, singleURL string) *DingtalkActionCardSingleMessage

func (*DingtalkActionCardSingleMessage) Body added in v1.0.29

type DingtalkBotSender added in v1.0.28

type DingtalkBotSender struct {
	AccessToken string
	SecretKey   string
}

func (*DingtalkBotSender) Send added in v1.0.28

func (s *DingtalkBotSender) Send(v BotMessage) error

type DingtalkFeedCardMessage added in v1.0.28

type DingtalkFeedCardMessage struct {
	Msgtype  string `json:"msgtype"`
	FeedCard struct {
		Links []DingtalkFeedCardMessageLink `json:"links"`
	} `json:"feedCard"`
}

func NewDingtalkFeedCardMessage added in v1.0.28

func NewDingtalkFeedCardMessage() *DingtalkFeedCardMessage
func (s *DingtalkFeedCardMessage) AddLink(title, messageURL, picURL string)

func (*DingtalkFeedCardMessage) Body added in v1.0.28

func (s *DingtalkFeedCardMessage) Body() ([]byte, error)
type DingtalkFeedCardMessageLink struct {
	Title      string `json:"title"`
	MessageURL string `json:"messageURL"`
	PicURL     string `json:"picURL"`
}

type DingtalkLinkMessage added in v1.0.28

type DingtalkLinkMessage struct {
	Msgtype string `json:"msgtype"`
	Link    struct {
		Text       string `json:"text"`
		Title      string `json:"title"`
		PicURL     string `json:"picUrl,omitempty"`
		MessageURL string `json:"messageUrl"`
	} `json:"link"`
}

func NewDingtalkLinkMessage added in v1.0.28

func NewDingtalkLinkMessage(title, content, messageUrl, picUrl string) *DingtalkLinkMessage

func (*DingtalkLinkMessage) Body added in v1.0.28

func (s *DingtalkLinkMessage) Body() ([]byte, error)

type DingtalkMarkdownMessage added in v1.0.28

type DingtalkMarkdownMessage struct {
	Msgtype  string `json:"msgtype"`
	Markdown struct {
		Title string `json:"title"`
		Text  string `json:"text"`
	} `json:"markdown"`
	At struct {
		AtMobiles []string `json:"atMobiles,omitempty"`
		AtUserIds []string `json:"atUserIds,omitempty"`
		IsAtAll   bool     `json:"isAtAll,omitempty"`
	} `json:"at,omitempty"`
}

func NewDingtalkMarkdownMessage added in v1.0.28

func NewDingtalkMarkdownMessage(title, content string, atAll bool) *DingtalkMarkdownMessage

func (*DingtalkMarkdownMessage) AtMobiles added in v1.0.28

func (s *DingtalkMarkdownMessage) AtMobiles(mobiles ...string)

func (*DingtalkMarkdownMessage) AtUserIds added in v1.0.28

func (s *DingtalkMarkdownMessage) AtUserIds(userIds ...string)

func (*DingtalkMarkdownMessage) Body added in v1.0.28

func (s *DingtalkMarkdownMessage) Body() ([]byte, error)

type DingtalkTextMessage added in v1.0.28

type DingtalkTextMessage struct {
	At struct {
		AtMobiles []string `json:"atMobiles,omitempty"`
		AtUserIds []string `json:"atUserIds,omitempty"`
		IsAtAll   bool     `json:"isAtAll,omitempty"`
	} `json:"at,omitempty"`
	Text struct {
		Content string `json:"content"`
	} `json:"text"`
	Msgtype string `json:"msgtype"`
}

func NewDingtalkTextMessage added in v1.0.28

func NewDingtalkTextMessage(title, content string, atAll bool) *DingtalkTextMessage

func (*DingtalkTextMessage) AtMobiles added in v1.0.28

func (s *DingtalkTextMessage) AtMobiles(mobiles ...string)

func (*DingtalkTextMessage) AtUserIds added in v1.0.28

func (s *DingtalkTextMessage) AtUserIds(userIds ...string)

func (*DingtalkTextMessage) Body added in v1.0.28

func (s *DingtalkTextMessage) Body() ([]byte, error)

type FeishuBotSender added in v1.0.28

type FeishuBotSender struct {
	AccessToken       string
	SecretKey         string
	TenantAccessToken string // 租户访问凭证, 用于上传图片
}

func (*FeishuBotSender) Send added in v1.0.28

func (s *FeishuBotSender) Send(v BotMessage) error

func (*FeishuBotSender) UploadImage added in v1.0.29

func (s *FeishuBotSender) UploadImage(filename string) (string, error)

type FeishuCardMessage added in v1.0.28

type FeishuCardMessage struct {
	Card struct {
		Config struct {
			WideScreenMode bool `json:"wide_screen_mode"`
			EnableForward  bool `json:"enable_forward"`
		} `json:"config"`
		Elements []feishuCardMessageElement `json:"elements"`
		Header   struct {
			Title struct {
				Content string `json:"content"`
				Tag     string `json:"tag"`
			} `json:"title"`
		} `json:"header"`
	} `json:"card"`
	// contains filtered or unexported fields
}

func NewFeishuCardMessage added in v1.0.28

func NewFeishuCardMessage(title string) *FeishuCardMessage

func (*FeishuCardMessage) AddButton added in v1.0.28

func (s *FeishuCardMessage) AddButton(label, href string)

func (*FeishuCardMessage) AddLineContent added in v1.0.28

func (s *FeishuCardMessage) AddLineContent(v string)

func (*FeishuCardMessage) AddSplitLine added in v1.0.28

func (s *FeishuCardMessage) AddSplitLine()

func (*FeishuCardMessage) Body added in v1.0.28

func (s *FeishuCardMessage) Body() ([]byte, error)

func (*FeishuCardMessage) String added in v1.0.28

func (s *FeishuCardMessage) String() string

type FeishuRichMessage added in v1.0.28

type FeishuRichMessage struct {
	Content struct {
		Post struct {
			ZhCn struct {
				Title   string                       `json:"title"`
				Content [][]feishuRichMessageContent `json:"content"`
			} `json:"zh_cn"`
		} `json:"post"`
	} `json:"content"`
	ContentPosition int `json:"-"`
	// contains filtered or unexported fields
}

func NewFeishuRichMessage added in v1.0.28

func NewFeishuRichMessage(title string) *FeishuRichMessage

func (*FeishuRichMessage) AddAt added in v1.0.28

func (s *FeishuRichMessage) AddAt(userId string)

func (*FeishuRichMessage) AddHref added in v1.0.28

func (s *FeishuRichMessage) AddHref(label, href string)

func (*FeishuRichMessage) AddText added in v1.0.28

func (s *FeishuRichMessage) AddText(v string)

func (*FeishuRichMessage) Body added in v1.0.28

func (s *FeishuRichMessage) Body() ([]byte, error)

func (*FeishuRichMessage) NewContent added in v1.0.28

func (s *FeishuRichMessage) NewContent()

func (*FeishuRichMessage) String added in v1.0.28

func (s *FeishuRichMessage) String() string

type FeishuTextMessage added in v1.0.28

type FeishuTextMessage struct {
	Content struct {
		Text string `json:"text"`
	} `json:"content"`
	// contains filtered or unexported fields
}

func NewFeishuTextMessage added in v1.0.28

func NewFeishuTextMessage(content string) *FeishuTextMessage

NewFeishuTextMessage 创建飞书文本消息。

func (*FeishuTextMessage) Body added in v1.0.28

func (s *FeishuTextMessage) Body() ([]byte, error)

func (*FeishuTextMessage) String added in v1.0.28

func (s *FeishuTextMessage) String() string

type Formatter

type Formatter struct {
	// FieldsOrder - default: fields sorted alphabetically
	FieldsOrder []string

	// TimestampFormat - default: time.StampMilli = "Jan _2 15:04:05.000"
	TimestampFormat string

	HideTime bool

	HideLevel bool

	// HideKeys - show [fieldValue] instead of [fieldKey:fieldValue]
	HideKeys bool

	// NoColors - disable colors
	NoColors bool

	// NoFieldsColors - apply colors only to the level, default is level + fields
	NoFieldsColors bool

	// NoFieldsSpace - no space between fields
	NoFieldsSpace bool

	// ShowFullLevel - show a full level [WARNING] instead of [WARN]
	ShowFullLevel bool

	// NoUppercaseLevel - no upper case for level value
	NoUppercaseLevel bool

	// TrimMessages - trim whitespaces on messages
	TrimMessages bool

	// CallerFirst - print caller info first
	CallerFirst bool

	// CustomCallerFormatter - set custom formatter for caller info
	CustomCallerFormatter func(*runtime.Frame) string
}

Formatter - logrus formatter, implements logrus.Formatter

func (*Formatter) Format

func (f *Formatter) Format(entry *logrus.Entry) ([]byte, error)

Format an log entry

type HashAlgorithm added in v1.0.1

type HashAlgorithm string
const (
	Md5    HashAlgorithm = "md5"
	Sha1   HashAlgorithm = "sha1"
	Sha224 HashAlgorithm = "sha224"
	Sha256 HashAlgorithm = "sha256"
	Sha384 HashAlgorithm = "sha384"
	Sha512 HashAlgorithm = "sha512"
)

type HttpClient added in v1.0.11

type HttpClient struct {
	ProgressBar ProgressBar
	Transport   *http.Transport
}

func NewHttpClient added in v1.0.11

func NewHttpClient(opts ...HttpClientOption) *HttpClient

func (*HttpClient) Delete added in v1.0.11

func (h *HttpClient) Delete(uri string, r *HttpRequest) (*HttpResponse, error)

func (*HttpClient) Get added in v1.0.11

func (h *HttpClient) Get(uri string, r *HttpRequest) (*HttpResponse, error)

func (*HttpClient) Head added in v1.0.11

func (h *HttpClient) Head(uri string, r *HttpRequest) (*HttpResponse, error)

func (*HttpClient) Options added in v1.0.11

func (h *HttpClient) Options(uri string, r *HttpRequest) (*HttpResponse, error)

func (*HttpClient) Patch added in v1.0.11

func (h *HttpClient) Patch(uri string, r *HttpRequest) (*HttpResponse, error)

func (*HttpClient) Post added in v1.0.11

func (h *HttpClient) Post(uri string, r *HttpRequest) (*HttpResponse, error)

func (*HttpClient) Put added in v1.0.11

func (h *HttpClient) Put(uri string, r *HttpRequest) (*HttpResponse, error)

func (*HttpClient) Request added in v1.0.11

func (h *HttpClient) Request(method, uri string, r *HttpRequest) (*HttpResponse, error)

type HttpClientOption added in v1.0.12

type HttpClientOption func(*HttpClient)

func HttpClientOptionWithProgressBar added in v1.0.12

func HttpClientOptionWithProgressBar(w ProgressBar) HttpClientOption

func HttpClientOptionWithTransport added in v1.0.30

func HttpClientOptionWithTransport(tr *http.Transport) HttpClientOption

type HttpRequest added in v1.0.11

type HttpRequest struct {
	// 超时 (默认值: 60s)
	Timeout time.Duration
	// 查询参数
	Query interface{}
	// 请求头信息
	Headers map[string]interface{}
	// Cookie 信息
	Cookies interface{}
	// CookieJar 对象
	CookieJar http.CookieJar
	// POST 表单参数
	FormParams map[string]interface{}
	// Text 数据参数
	Text string
	// JSON 数据参数
	JSON interface{}
	// XML 数据参数
	XML interface{}
	// 代理服务器地址
	Proxy string
	// 是否服务器响应非 200 状态时,返回 error?
	AllowNon200Response bool
	// 下载到本地文件
	ToFile string
	// 是否显示进度条?
	ProgressBar bool
	// HTTP Basic 认证用户名
	Username string
	// HTTP Basic 认证密码
	Password string
}

type HttpResponse added in v1.0.11

type HttpResponse struct {
	StatusCode    int
	RequestURI    string
	Header        http.Header
	ContentType   string
	ContentLength int64
	Body          []byte
}

func (HttpResponse) String added in v1.0.11

func (h HttpResponse) String() string

func (HttpResponse) ToFile added in v1.0.11

func (h HttpResponse) ToFile(filename string) error

func (HttpResponse) ToJson added in v1.0.11

func (h HttpResponse) ToJson(v interface{}) error

func (HttpResponse) ToString added in v1.0.11

func (h HttpResponse) ToString() string

func (HttpResponse) ToXml added in v1.0.11

func (h HttpResponse) ToXml(v interface{}) error

func (HttpResponse) ToYaml added in v1.0.12

func (h HttpResponse) ToYaml(v interface{}) error

type ProcessOption added in v1.0.31

type ProcessOption func(*SubProcess)

func ProcessOptionWithTimeout added in v1.0.31

func ProcessOptionWithTimeout(timeout time.Duration) ProcessOption

func ProcessOptionWithWriter added in v1.0.31

func ProcessOptionWithWriter(w io.Writer) ProcessOption

type ProcessOutLineHandle added in v1.0.17

type ProcessOutLineHandle func(line string)

type ProgressBar added in v1.0.12

type ProgressBar interface {
	io.Writer
	io.Closer
	SetTotalBytes(uint64)
}

type SSHClient

type SSHClient struct {
	// RSA 私钥证书路径或全文内容
	PrivateKey string
	// 主机 Domain/IP 地址
	Host string
	// SSH 端口
	Port int
	// SSH 登录用户名
	User string
	// SSH 登录密码
	Password string
	// 静默方式: 不输出 Stdout 信息
	Quiet bool
	// 是否已连接?
	Connected bool
	// SSH 客户端实例
	Client *ssh.Client
	// 代理服务器地址 (支持 http,https,socks5,socks5h, 例如: http://127.0.0.1:3128, socks5://127.0.0.1:1080)
	Proxy string
	// 超时时间 (默认不超时)
	Timeout time.Duration
	// 开启 TTY 终端模式
	TTY bool
	// 缓冲区大小 (默认: 8192 bytes)
	ChunkSize uint16
	// SSH 隧道
	Tunnel *SSHTunnel
}

SSHClient SSH 客户端

func NewSSHClient

func NewSSHClient(host string, port int, user string, privateKey string, quiet bool, opts ...SSHClientOption) *SSHClient

func (*SSHClient) Close

func (s *SSHClient) Close() error

func (*SSHClient) Connect

func (s *SSHClient) Connect() error

func (*SSHClient) Download

func (s *SSHClient) Download(src, dst string) error

func (*SSHClient) Run

func (s *SSHClient) Run(command string) (int, error)

func (*SSHClient) RunWithWriter added in v1.0.6

func (s *SSHClient) RunWithWriter(command string, w io.Writer) (int, error)

func (*SSHClient) Upload

func (s *SSHClient) Upload(src, dst string) error

type SSHClientOption added in v1.0.4

type SSHClientOption func(*SSHClient)

func SSHOptionWithChunkSize added in v1.0.7

func SSHOptionWithChunkSize(chunkSize uint16) SSHClientOption

func SSHOptionWithPassword added in v1.0.32

func SSHOptionWithPassword(password string) SSHClientOption

func SSHOptionWithProxy added in v1.0.4

func SSHOptionWithProxy(proxyUrl string) SSHClientOption

SSHOptionWithProxy 支持 http/https/socks5/socks5h 代理协议。

func SSHOptionWithTimeout added in v1.0.4

func SSHOptionWithTimeout(timeout time.Duration) SSHClientOption

func SSHOptionWithTunnel added in v1.0.19

func SSHOptionWithTunnel(tunnel *SSHTunnel) SSHClientOption

type SSHTunnel added in v1.0.19

type SSHTunnel struct {
	// 本地
	Local *SSHTunnelEndpoint
	// 隧道主机
	Server *SSHTunnelEndpoint
	// 目标主机
	Remote *SSHTunnelEndpoint
	// SSH 客户端配置
	Config *ssh.ClientConfig
	// contains filtered or unexported fields
}

func (*SSHTunnel) Start added in v1.0.19

func (tunnel *SSHTunnel) Start(opened chan bool) error

func (*SSHTunnel) Stop added in v1.0.19

func (tunnel *SSHTunnel) Stop() error

type SSHTunnelEndpoint added in v1.0.19

type SSHTunnelEndpoint struct {
	Host string
	Port int
}

func (*SSHTunnelEndpoint) String added in v1.0.19

func (endpoint *SSHTunnelEndpoint) String() string

type SubProcess

type SubProcess struct {
	Option *SubProcessOption
	// contains filtered or unexported fields
}

func NewSubProcess

func NewSubProcess() *SubProcess

func NewSubProcessWithOptions added in v1.0.31

func NewSubProcessWithOptions(opt ...ProcessOption) *SubProcess

func (*SubProcess) Run

func (s *SubProcess) Run(command string, args ...string) (int, error)

Run 执行系统命令。

func (*SubProcess) ShellExec added in v1.0.31

func (s *SubProcess) ShellExec(arg ...string) (int, error)

type SubProcessOption

type SubProcessOption struct {
	Debug      bool
	Quiet      bool
	Timeout    time.Duration
	HandleFunc ProcessOutLineHandle
	Shell      bool
	Env        []string
	Writer     io.Writer
}

func DefaultSubProcessOption added in v1.0.31

func DefaultSubProcessOption() *SubProcessOption

type WxWorkBotSender added in v1.0.28

type WxWorkBotSender struct {
	AccessToken string
}

func (*WxWorkBotSender) Send added in v1.0.28

func (s *WxWorkBotSender) Send(v BotMessage) error

func (*WxWorkBotSender) UploadMedia added in v1.0.29

func (s *WxWorkBotSender) UploadMedia(filename string) (string, error)

type WxWorkFileMessage added in v1.0.28

type WxWorkFileMessage struct {
	Msgtype string `json:"msgtype"`
	File    struct {
		MediaID string `json:"media_id"`
	} `json:"file"`
}

func NewWxWorkFileMessage added in v1.0.28

func NewWxWorkFileMessage(mediaId string) *WxWorkFileMessage

func (*WxWorkFileMessage) Body added in v1.0.28

func (s *WxWorkFileMessage) Body() ([]byte, error)

type WxWorkImageMessage added in v1.0.28

type WxWorkImageMessage struct {
	Msgtype string `json:"msgtype"`
	Image   struct {
		Base64 string `json:"base64"`
		Md5    string `json:"md5"`
	} `json:"image"`
}

func NewWxWorkImageMessage added in v1.0.28

func NewWxWorkImageMessage(filePath string) (*WxWorkImageMessage, error)

func (*WxWorkImageMessage) Body added in v1.0.28

func (s *WxWorkImageMessage) Body() ([]byte, error)

type WxWorkMarkdownMessage added in v1.0.28

type WxWorkMarkdownMessage struct {
	Msgtype  string `json:"msgtype"`
	Markdown struct {
		Content string `json:"content"`
	} `json:"markdown"`
}

func NewWxWorkMarkdownMessage added in v1.0.28

func NewWxWorkMarkdownMessage(content string) *WxWorkMarkdownMessage

func (*WxWorkMarkdownMessage) Body added in v1.0.28

func (s *WxWorkMarkdownMessage) Body() ([]byte, error)

type WxWorkNewsMessage added in v1.0.28

type WxWorkNewsMessage struct {
	Msgtype string `json:"msgtype"`
	News    struct {
		Articles []wxWorkNewsMessageArticle `json:"articles"`
	} `json:"news"`
}

func NewWxWorkNewsMessage added in v1.0.28

func NewWxWorkNewsMessage() *WxWorkNewsMessage

func (*WxWorkNewsMessage) AddArticle added in v1.0.28

func (s *WxWorkNewsMessage) AddArticle(title, description, url, picurl string)

func (*WxWorkNewsMessage) Body added in v1.0.28

func (s *WxWorkNewsMessage) Body() ([]byte, error)

type WxWorkNewsNoticeMessage added in v1.0.29

type WxWorkNewsNoticeMessage struct {
	Msgtype      string `json:"msgtype"`
	TemplateCard struct {
		CardType string `json:"card_type"`
		Source   struct {
			IconURL   string `json:"icon_url,omitempty"`
			Desc      string `json:"desc,omitempty"`
			DescColor int    `json:"desc_color,omitempty"`
		} `json:"source,omitempty"`
		MainTitle struct {
			Title string `json:"title"`
			Desc  string `json:"desc,omitempty"`
		} `json:"main_title"`
		CardImage struct {
			URL         string  `json:"url"`
			AspectRatio float64 `json:"aspect_ratio,omitempty"`
		} `json:"card_image"`
		ImageTextArea struct {
			Type     int    `json:"type,omitempty"`
			URL      string `json:"url,omitempty"`
			Title    string `json:"title,omitempty"`
			Desc     string `json:"desc,omitempty"`
			ImageURL string `json:"image_url"`
		} `json:"image_text_area,omitempty"`
		QuoteArea struct {
			Type      int    `json:"type,omitempty"`
			URL       string `json:"url,omitempty"`
			Appid     string `json:"appid,omitempty"`
			Pagepath  string `json:"pagepath,omitempty"`
			Title     string `json:"title,omitempty"`
			QuoteText string `json:"quote_text,omitempty"`
		} `json:"quote_area,omitempty"`
		VerticalContentList []struct {
			Title string `json:"title"`
			Desc  string `json:"desc,omitempty"`
		} `json:"vertical_content_list,omitempty"`
		HorizontalContentList []struct {
			Keyname string `json:"keyname"`
			Value   string `json:"value,omitempty"`
			Type    int    `json:"type,omitempty"`
			URL     string `json:"url,omitempty"`
			MediaID string `json:"media_id,omitempty"`
		} `json:"horizontal_content_list,omitempty"`
		JumpList []struct {
			Type     int    `json:"type,omitempty"`
			URL      string `json:"url,omitempty"`
			Title    string `json:"title"`
			Appid    string `json:"appid,omitempty"`
			Pagepath string `json:"pagepath,omitempty"`
		} `json:"jump_list,omitempty"`
		CardAction struct {
			Type     int    `json:"type"`
			URL      string `json:"url,omitempty"`
			Appid    string `json:"appid,omitempty"`
			Pagepath string `json:"pagepath,omitempty"`
		} `json:"card_action"`
	} `json:"template_card"`
}

func NewWxWorkNewsNoticeMessage added in v1.0.29

func NewWxWorkNewsNoticeMessage() *WxWorkNewsNoticeMessage

func (*WxWorkNewsNoticeMessage) Body added in v1.0.29

func (s *WxWorkNewsNoticeMessage) Body() ([]byte, error)

type WxWorkTextMessage added in v1.0.28

type WxWorkTextMessage struct {
	Msgtype string `json:"msgtype"`
	Text    struct {
		Content             string   `json:"content"`
		MentionedList       []string `json:"mentioned_list"`
		MentionedMobileList []string `json:"mentioned_mobile_list"`
	} `json:"text"`
}

func NewWxWorkTextMessage added in v1.0.28

func NewWxWorkTextMessage(content string) *WxWorkTextMessage

func (*WxWorkTextMessage) AtAll added in v1.0.28

func (s *WxWorkTextMessage) AtAll()

func (*WxWorkTextMessage) AtMobiles added in v1.0.28

func (s *WxWorkTextMessage) AtMobiles(mobiles ...string)

func (*WxWorkTextMessage) AtUserIds added in v1.0.28

func (s *WxWorkTextMessage) AtUserIds(userIds ...string)

func (*WxWorkTextMessage) Body added in v1.0.28

func (s *WxWorkTextMessage) Body() ([]byte, error)

type WxWorkTextNoticeMessage added in v1.0.29

type WxWorkTextNoticeMessage struct {
	Msgtype      string `json:"msgtype"`
	TemplateCard struct {
		CardType string `json:"card_type"`
		Source   struct {
			IconURL   string `json:"icon_url,omitempty"`
			Desc      string `json:"desc,omitempty"`
			DescColor int    `json:"desc_color,omitempty"`
		} `json:"source,omitempty"`
		MainTitle struct {
			Title string `json:"title,omitempty"`
			Desc  string `json:"desc,omitempty"`
		} `json:"main_title"`
		EmphasisContent struct {
			Title string `json:"title,omitempty"`
			Desc  string `json:"desc,omitempty"`
		} `json:"emphasis_content,omitempty"`
		QuoteArea struct {
			Type      int    `json:"type,omitempty"`
			URL       string `json:"url,omitempty"`
			Appid     string `json:"appid,omitempty"`
			Pagepath  string `json:"pagepath,omitempty"`
			Title     string `json:"title,omitempty"`
			QuoteText string `json:"quote_text,omitempty"`
		} `json:"quote_area,omitempty"`
		SubTitleText          string `json:"sub_title_text,omitempty"`
		HorizontalContentList []struct {
			Keyname string `json:"keyname"`
			Value   string `json:"value,omitempty"`
			Type    int    `json:"type,omitempty"`
			URL     string `json:"url,omitempty"`
			MediaID string `json:"media_id,omitempty"`
		} `json:"horizontal_content_list,omitempty"`
		JumpList []struct {
			Type     int    `json:"type,omitempty"`
			URL      string `json:"url,omitempty"`
			Title    string `json:"title"`
			Appid    string `json:"appid,omitempty"`
			Pagepath string `json:"pagepath,omitempty"`
		} `json:"jump_list,omitempty"`
		CardAction struct {
			Type     int    `json:"type"`
			URL      string `json:"url,omitempty"`
			Appid    string `json:"appid,omitempty"`
			Pagepath string `json:"pagepath,omitempty"`
		} `json:"card_action"`
	} `json:"template_card"`
}

func NewWxWorkTextNoticeMessage added in v1.0.29

func NewWxWorkTextNoticeMessage() *WxWorkTextNoticeMessage

func (*WxWorkTextNoticeMessage) Body added in v1.0.29

func (s *WxWorkTextNoticeMessage) Body() ([]byte, error)

Jump to

Keyboard shortcuts

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