regular update
This commit is contained in:
		
							parent
							
								
									d9e5206ba9
								
							
						
					
					
						commit
						7df7c90d14
					
				@ -8,6 +8,8 @@ import (
 | 
			
		||||
	"os"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// Unzip 读取位于src的zip文件,并解压到dst文件夹中
 | 
			
		||||
// shell传入当前解压的文件名称
 | 
			
		||||
func Unzip(src, dst string, shell func(string)) error {
 | 
			
		||||
	if !IsFile(src) {
 | 
			
		||||
		return errors.New(src + " Not Exists")
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										158
									
								
								crypto.go
									
									
									
									
									
								
							
							
						
						
									
										158
									
								
								crypto.go
									
									
									
									
									
								
							@ -29,6 +29,7 @@ import (
 | 
			
		||||
	"time"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// StarCrypto 存储了单个校验方法的非编码元数据
 | 
			
		||||
type StarCrypto struct {
 | 
			
		||||
	Sha1   []byte
 | 
			
		||||
	Sha224 []byte
 | 
			
		||||
@ -39,74 +40,58 @@ type StarCrypto struct {
 | 
			
		||||
	Md5    []byte
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
输出格式化后的Base64字符串
 | 
			
		||||
*/
 | 
			
		||||
func (this StarCrypto) Base64Encode(bstr []byte) string {
 | 
			
		||||
// Base64Encode 输出格式化后的Base64字符串
 | 
			
		||||
func (starcpto StarCrypto) Base64Encode(bstr []byte) string {
 | 
			
		||||
	return base64.StdEncoding.EncodeToString(bstr)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
输出解密前的Base64数据
 | 
			
		||||
*/
 | 
			
		||||
func (this StarCrypto) Base64Decode(str string) ([]byte, error) {
 | 
			
		||||
// Base64Decode 输出解密前的Base64数据
 | 
			
		||||
func (starcpto StarCrypto) Base64Decode(str string) ([]byte, error) {
 | 
			
		||||
	return base64.StdEncoding.DecodeString(str)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
输出MD5校验值
 | 
			
		||||
*/
 | 
			
		||||
func (this *StarCrypto) MD5(bstr []byte) string {
 | 
			
		||||
// MD5 输出MD5校验值
 | 
			
		||||
func (starcpto *StarCrypto) MD5(bstr []byte) string {
 | 
			
		||||
	md5sum := md5.New()
 | 
			
		||||
	md5sum.Write(bstr)
 | 
			
		||||
	this.Md5 = md5sum.Sum(nil)
 | 
			
		||||
	return hex.EncodeToString(this.Md5)
 | 
			
		||||
	starcpto.Md5 = md5sum.Sum(nil)
 | 
			
		||||
	return hex.EncodeToString(starcpto.Md5)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
输出CRC32校验值
 | 
			
		||||
*/
 | 
			
		||||
func (this *StarCrypto) CRC32(bstr []byte) string {
 | 
			
		||||
// CRC32 输出CRC32校验值
 | 
			
		||||
func (starcpto *StarCrypto) CRC32(bstr []byte) string {
 | 
			
		||||
	crcsum := crc32.NewIEEE()
 | 
			
		||||
	crcsum.Write(bstr)
 | 
			
		||||
	this.Crc32 = crcsum.Sum(nil)
 | 
			
		||||
	return hex.EncodeToString(this.Crc32)
 | 
			
		||||
	starcpto.Crc32 = crcsum.Sum(nil)
 | 
			
		||||
	return hex.EncodeToString(starcpto.Crc32)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
输出SHA512校验值
 | 
			
		||||
*/
 | 
			
		||||
func (this *StarCrypto) SHA512(bstr []byte) string {
 | 
			
		||||
// SHA512 输出SHA512校验值
 | 
			
		||||
func (starcpto *StarCrypto) SHA512(bstr []byte) string {
 | 
			
		||||
	shasum := sha512.New()
 | 
			
		||||
	shasum.Write(bstr)
 | 
			
		||||
	this.Sha512 = shasum.Sum(nil)
 | 
			
		||||
	return hex.EncodeToString(this.Sha512)
 | 
			
		||||
	starcpto.Sha512 = shasum.Sum(nil)
 | 
			
		||||
	return hex.EncodeToString(starcpto.Sha512)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
输出SHA256校验值
 | 
			
		||||
*/
 | 
			
		||||
func (this *StarCrypto) SHA256(bstr []byte) string {
 | 
			
		||||
// SHA256 输出SHA256校验值
 | 
			
		||||
func (starcpto *StarCrypto) SHA256(bstr []byte) string {
 | 
			
		||||
	shasum := sha256.New()
 | 
			
		||||
	shasum.Write(bstr)
 | 
			
		||||
	this.Sha256 = shasum.Sum(nil)
 | 
			
		||||
	return hex.EncodeToString(this.Sha256)
 | 
			
		||||
	starcpto.Sha256 = shasum.Sum(nil)
 | 
			
		||||
	return hex.EncodeToString(starcpto.Sha256)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
输出SHA1校验值
 | 
			
		||||
*/
 | 
			
		||||
func (this *StarCrypto) SHA1(bstr []byte) string {
 | 
			
		||||
// SHA1 输出SHA1校验值
 | 
			
		||||
func (starcpto *StarCrypto) SHA1(bstr []byte) string {
 | 
			
		||||
	shasum := sha1.New()
 | 
			
		||||
	shasum.Write(bstr)
 | 
			
		||||
	this.Sha1 = shasum.Sum(nil)
 | 
			
		||||
	return hex.EncodeToString(this.Sha1)
 | 
			
		||||
	starcpto.Sha1 = shasum.Sum(nil)
 | 
			
		||||
	return hex.EncodeToString(starcpto.Sha1)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
多校验方法校验函数
 | 
			
		||||
*/
 | 
			
		||||
func (this StarCrypto) SumAll(data []byte, method []string) (map[string]string, error) {
 | 
			
		||||
// SumAll 可以对同一数据进行多种校验
 | 
			
		||||
func (starcpto StarCrypto) SumAll(data []byte, method []string) (map[string]string, error) {
 | 
			
		||||
	result := make(map[string]string)
 | 
			
		||||
	methods := make(map[string]hash.Hash)
 | 
			
		||||
	var iscrc bool
 | 
			
		||||
@ -154,17 +139,15 @@ func (this StarCrypto) SumAll(data []byte, method []string) (map[string]string,
 | 
			
		||||
	return result, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
输出文件内容校验值,method为单个校验方法,小写
 | 
			
		||||
例:FileSum("./test.txt","md5",shell(pect float64){fmt.Sprintf("已完成 %f\r",pect)})
 | 
			
		||||
*/
 | 
			
		||||
func (this StarCrypto) FileSum(filepath, method string, shell func(float64)) (string, error) {
 | 
			
		||||
// FileSum 输出文件内容校验值,method为单个校验方法,小写
 | 
			
		||||
//例:FileSum("./test.txt","md5",shell(pect float64){fmt.Sprintf("已完成 %f\r",pect)})
 | 
			
		||||
func (starcpto StarCrypto) FileSum(filepath, method string, shell func(float64)) (string, error) {
 | 
			
		||||
	var sum hash.Hash
 | 
			
		||||
	var sum32 hash.Hash32
 | 
			
		||||
	var issum32 bool
 | 
			
		||||
	var result string
 | 
			
		||||
	if !Exists(filepath) {
 | 
			
		||||
		return "", errors.New("File Not Exists!")
 | 
			
		||||
		return "", errors.New("file not exists")
 | 
			
		||||
	}
 | 
			
		||||
	fp, err := os.Open(filepath)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
@ -229,10 +212,8 @@ func (this StarCrypto) FileSum(filepath, method string, shell func(float64)) (st
 | 
			
		||||
	return result, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
多校验方法校验文件函数
 | 
			
		||||
*/
 | 
			
		||||
func (this StarCrypto) FileSumAll(filepath string, method []string, shell func(float64)) (map[string]string, error) {
 | 
			
		||||
// FileSumAll 可以对同一文件进行多种校验
 | 
			
		||||
func (starcpto StarCrypto) FileSumAll(filepath string, method []string, shell func(float64)) (map[string]string, error) {
 | 
			
		||||
	result := make(map[string]string)
 | 
			
		||||
	methods := make(map[string]hash.Hash)
 | 
			
		||||
	var iscrc bool
 | 
			
		||||
@ -241,7 +222,7 @@ func (this StarCrypto) FileSumAll(filepath string, method []string, shell func(f
 | 
			
		||||
		method = []string{"sha512", "sha256", "sha384", "sha224", "sha1", "crc32", "md5"}
 | 
			
		||||
	}
 | 
			
		||||
	if !Exists(filepath) {
 | 
			
		||||
		return result, errors.New("File Not Exists!")
 | 
			
		||||
		return result, errors.New("file not exists")
 | 
			
		||||
	}
 | 
			
		||||
	fp, err := os.Open(filepath)
 | 
			
		||||
	defer fp.Close()
 | 
			
		||||
@ -305,12 +286,13 @@ func (this StarCrypto) FileSumAll(filepath string, method []string, shell func(f
 | 
			
		||||
	return result, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (this StarCrypto) Attach(src, dst, output string) error {
 | 
			
		||||
// Attach 合并src与dst文件并输出到output中
 | 
			
		||||
func (starcpto StarCrypto) Attach(src, dst, output string) error {
 | 
			
		||||
	if !Exists(src) {
 | 
			
		||||
		return errors.New("Source File Not Exists!")
 | 
			
		||||
		return errors.New("source file not exists")
 | 
			
		||||
	}
 | 
			
		||||
	if !Exists(dst) {
 | 
			
		||||
		return errors.New("Dest File Not Exists!")
 | 
			
		||||
		return errors.New("dst file not exists")
 | 
			
		||||
	}
 | 
			
		||||
	fpsrc, err := os.Open(src)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
@ -344,9 +326,10 @@ func (this StarCrypto) Attach(src, dst, output string) error {
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (this StarCrypto) Detach(src string, bytenum int, dst1, dst2 string) error {
 | 
			
		||||
// Detach 按bytenum字节大小分割src文件到dst1与dst2两个新文件中去
 | 
			
		||||
func (starcpto StarCrypto) Detach(src string, bytenum int, dst1, dst2 string) error {
 | 
			
		||||
	if !Exists(src) {
 | 
			
		||||
		return errors.New("Source File Not Exists!")
 | 
			
		||||
		return errors.New("source file not exists")
 | 
			
		||||
	}
 | 
			
		||||
	fpsrc, err := os.Open(src)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
@ -395,9 +378,10 @@ func (this StarCrypto) Detach(src string, bytenum int, dst1, dst2 string) error
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (this StarCrypto) Base64EncodeFile(src, dst string, shell func(float64)) error {
 | 
			
		||||
// Base64EncodeFile 用base64方法编码src文件到dst文件中去,shell传入当前进度
 | 
			
		||||
func (starcpto StarCrypto) Base64EncodeFile(src, dst string, shell func(float64)) error {
 | 
			
		||||
	if !Exists(src) {
 | 
			
		||||
		return errors.New("Source File Not Exists!")
 | 
			
		||||
		return errors.New("source file not exists")
 | 
			
		||||
	}
 | 
			
		||||
	fpsrc, err := os.Open(src)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
@ -429,9 +413,10 @@ func (this StarCrypto) Base64EncodeFile(src, dst string, shell func(float64)) er
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (this StarCrypto) Base64DecodeFile(src, dst string, shell func(float64)) error {
 | 
			
		||||
// Base64DecodeFile 用base64方法解码src文件到dst文件中去,shell传入当前进度
 | 
			
		||||
func (starcpto StarCrypto) Base64DecodeFile(src, dst string, shell func(float64)) error {
 | 
			
		||||
	if !Exists(src) {
 | 
			
		||||
		return errors.New("Source File Not Exists!")
 | 
			
		||||
		return errors.New("source file not exists")
 | 
			
		||||
	}
 | 
			
		||||
	fpsrc, err := os.Open(src)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
@ -464,13 +449,12 @@ func (this StarCrypto) Base64DecodeFile(src, dst string, shell func(float64)) er
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
如果bynum=true 则把文件分割成num份
 | 
			
		||||
如果bynum=false 则把文件按num字节分成多份
 | 
			
		||||
*/
 | 
			
		||||
func (this StarCrypto) SplitFile(src, dst string, num int, bynum bool, shell func(float64)) error {
 | 
			
		||||
// SplitFile 把src文件按要求分割到dst中去,dst应传入带*号字符串
 | 
			
		||||
// 如果bynum=true 则把文件分割成num份
 | 
			
		||||
// 如果bynum=false 则把文件按num字节分成多份
 | 
			
		||||
func (starcpto StarCrypto) SplitFile(src, dst string, num int, bynum bool, shell func(float64)) error {
 | 
			
		||||
	if !Exists(src) {
 | 
			
		||||
		return errors.New("Source File Not Exists!")
 | 
			
		||||
		return errors.New("source file not exists")
 | 
			
		||||
	}
 | 
			
		||||
	fpsrc, err := os.Open(src)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
@ -481,7 +465,7 @@ func (this StarCrypto) SplitFile(src, dst string, num int, bynum bool, shell fun
 | 
			
		||||
	filebig := float64(stat.Size())
 | 
			
		||||
	if bynum {
 | 
			
		||||
		if int(filebig) < num {
 | 
			
		||||
			return errors.New("File is too small to split")
 | 
			
		||||
			return errors.New("file is too small to split")
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	balance := int(filebig/float64(num)) + 1
 | 
			
		||||
@ -526,7 +510,8 @@ func (this StarCrypto) SplitFile(src, dst string, num int, bynum bool, shell fun
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (this StarCrypto) MergeFile(src, dst string, shell func(float64)) error {
 | 
			
		||||
// MergeFile 合并src文件到dst文件中去,src文件应传入带*号字符串
 | 
			
		||||
func (starcpto StarCrypto) MergeFile(src, dst string, shell func(float64)) error {
 | 
			
		||||
	tmp := strings.Replace(src, "*", "0", -1)
 | 
			
		||||
	dir, err := ioutil.ReadDir(filepath.Dir(tmp))
 | 
			
		||||
	if err != nil {
 | 
			
		||||
@ -536,7 +521,7 @@ func (this StarCrypto) MergeFile(src, dst string, shell func(float64)) error {
 | 
			
		||||
	tmp = strings.Replace(base, "*", "(\\d+)", -1)
 | 
			
		||||
	reg := regexp.MustCompile(tmp)
 | 
			
		||||
	count := 0
 | 
			
		||||
	var filebig float64 = 0
 | 
			
		||||
	var filebig float64
 | 
			
		||||
	for _, v := range dir {
 | 
			
		||||
		if reg.MatchString(v.Name()) {
 | 
			
		||||
			count++
 | 
			
		||||
@ -572,10 +557,11 @@ func (this StarCrypto) MergeFile(src, dst string, shell func(float64)) error {
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (this StarCrypto) RSAEncrypt(data, public []byte) ([]byte, error) {
 | 
			
		||||
// RSAEncrypt RSA公钥加密
 | 
			
		||||
func (starcpto StarCrypto) RSAEncrypt(data, public []byte) ([]byte, error) {
 | 
			
		||||
	blk, _ := pem.Decode(public)
 | 
			
		||||
	if blk == nil {
 | 
			
		||||
		return []byte{}, errors.New("public key error!")
 | 
			
		||||
		return []byte{}, errors.New("public key error")
 | 
			
		||||
	}
 | 
			
		||||
	pubkey, err := x509.ParsePKIXPublicKey(blk.Bytes)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
@ -584,7 +570,8 @@ func (this StarCrypto) RSAEncrypt(data, public []byte) ([]byte, error) {
 | 
			
		||||
	return rsa.EncryptPKCS1v15(rand.Reader, pubkey.(*rsa.PublicKey), data)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (this StarCrypto) RSADecrypt(data, private []byte, password string) ([]byte, error) {
 | 
			
		||||
// RSADecrypt RSA私钥解密
 | 
			
		||||
func (starcpto StarCrypto) RSADecrypt(data, private []byte, password string) ([]byte, error) {
 | 
			
		||||
	var prikey *rsa.PrivateKey
 | 
			
		||||
	var err error
 | 
			
		||||
	var bytes []byte
 | 
			
		||||
@ -612,7 +599,8 @@ func (this StarCrypto) RSADecrypt(data, private []byte, password string) ([]byte
 | 
			
		||||
	return rsa.DecryptPKCS1v15(rand.Reader, prikey, data)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (this StarCrypto) RSASign(hashdata, private []byte, password string, hashtype crypto.Hash) ([]byte, error) {
 | 
			
		||||
// RSASign RSA私钥签名加密
 | 
			
		||||
func (starcpto StarCrypto) RSASign(hashdata, private []byte, password string, hashtype crypto.Hash) ([]byte, error) {
 | 
			
		||||
	var prikey *rsa.PrivateKey
 | 
			
		||||
	var err error
 | 
			
		||||
	var bytes []byte
 | 
			
		||||
@ -640,7 +628,8 @@ func (this StarCrypto) RSASign(hashdata, private []byte, password string, hashty
 | 
			
		||||
	return rsa.SignPKCS1v15(rand.Reader, prikey, hashtype, hashdata)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (this StarCrypto) RSAVerify(data, hashdata, public []byte, hashtype crypto.Hash) error {
 | 
			
		||||
// RSAVerify RSA公钥签名验证
 | 
			
		||||
func (starcpto StarCrypto) RSAVerify(data, hashdata, public []byte, hashtype crypto.Hash) error {
 | 
			
		||||
	blk, _ := pem.Decode(public)
 | 
			
		||||
	if blk == nil {
 | 
			
		||||
		return errors.New("public key error!")
 | 
			
		||||
@ -652,7 +641,8 @@ func (this StarCrypto) RSAVerify(data, hashdata, public []byte, hashtype crypto.
 | 
			
		||||
	return rsa.VerifyPKCS1v15(pubkey.(*rsa.PublicKey), hashtype, hashdata, data)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (this StarCrypto) VicqueEncodeV1(srcdata []byte, key string) []byte {
 | 
			
		||||
// VicqueEncodeV1 Best!
 | 
			
		||||
func (starcpto StarCrypto) VicqueEncodeV1(srcdata []byte, key string) []byte {
 | 
			
		||||
	var keys []int
 | 
			
		||||
	var saku, piku uint8
 | 
			
		||||
	data := make([]byte, len(srcdata))
 | 
			
		||||
@ -699,7 +689,8 @@ func (this StarCrypto) VicqueEncodeV1(srcdata []byte, key string) []byte {
 | 
			
		||||
	return data
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (this StarCrypto) VicqueDecodeV1(srcdata []byte, key string) []byte {
 | 
			
		||||
// VicqueDecodeV1 Best!
 | 
			
		||||
func (starcpto StarCrypto) VicqueDecodeV1(srcdata []byte, key string) []byte {
 | 
			
		||||
	var keys []int
 | 
			
		||||
	var saku, piku int
 | 
			
		||||
	data := make([]byte, len(srcdata))
 | 
			
		||||
@ -746,7 +737,8 @@ func (this StarCrypto) VicqueDecodeV1(srcdata []byte, key string) []byte {
 | 
			
		||||
	return data[:lens]
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (this StarCrypto) VicqueEncodeV1File(src, dst, pwd string, shell func(float64)) error {
 | 
			
		||||
// VicqueEncodeV1File best
 | 
			
		||||
func (starcpto StarCrypto) VicqueEncodeV1File(src, dst, pwd string, shell func(float64)) error {
 | 
			
		||||
	fpsrc, err := os.Open(src)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
@ -772,13 +764,14 @@ func (this StarCrypto) VicqueEncodeV1File(src, dst, pwd string, shell func(float
 | 
			
		||||
		}
 | 
			
		||||
		sum += n
 | 
			
		||||
		go shell(float64(sum) / filebig * 100)
 | 
			
		||||
		data := this.VicqueEncodeV1(buf[0:n], pwd)
 | 
			
		||||
		data := starcpto.VicqueEncodeV1(buf[0:n], pwd)
 | 
			
		||||
		fpdst.Write(data)
 | 
			
		||||
	}
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (this StarCrypto) VicqueDecodeV1File(src, dst, pwd string, shell func(float64)) error {
 | 
			
		||||
// VicqueDecodeV1File best
 | 
			
		||||
func (starcpto StarCrypto) VicqueDecodeV1File(src, dst, pwd string, shell func(float64)) error {
 | 
			
		||||
	fpsrc, err := os.Open(src)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
@ -804,12 +797,13 @@ func (this StarCrypto) VicqueDecodeV1File(src, dst, pwd string, shell func(float
 | 
			
		||||
		}
 | 
			
		||||
		sum += n
 | 
			
		||||
		go shell(float64(sum) / filebig * 100)
 | 
			
		||||
		data := this.VicqueDecodeV1(buf[0:n], pwd)
 | 
			
		||||
		data := starcpto.VicqueDecodeV1(buf[0:n], pwd)
 | 
			
		||||
		fpdst.Write(data)
 | 
			
		||||
	}
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// FillWithRandom 随机写filesize大小的文件,每次buf大小为bufcap,随机bufnum个字符
 | 
			
		||||
func FillWithRandom(filepath string, filesize int, bufcap int, bufnum int, shell func(float64)) error {
 | 
			
		||||
	var buf [][]byte
 | 
			
		||||
	var buftmp []byte
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										243
									
								
								database.go
									
									
									
									
									
								
							
							
						
						
									
										243
									
								
								database.go
									
									
									
									
									
								
							@ -46,25 +46,76 @@ func (this *StarResultCol) MustBytes() [][]byte {
 | 
			
		||||
 | 
			
		||||
func (this *StarResultCol) MustBool() []bool {
 | 
			
		||||
	var res []bool
 | 
			
		||||
	var tmp bool
 | 
			
		||||
	for _, v := range this.Result {
 | 
			
		||||
		res = append(res, v.(bool))
 | 
			
		||||
		switch vtype := v.(type) {
 | 
			
		||||
		case nil:
 | 
			
		||||
			tmp = false
 | 
			
		||||
		case bool:
 | 
			
		||||
			tmp = vtype
 | 
			
		||||
		case float64, float32:
 | 
			
		||||
			if vtype.(float64) > 0 {
 | 
			
		||||
				tmp = true
 | 
			
		||||
			} else {
 | 
			
		||||
				tmp = false
 | 
			
		||||
			}
 | 
			
		||||
		case int, int32, int64:
 | 
			
		||||
			if vtype.(int) > 0 {
 | 
			
		||||
				tmp = true
 | 
			
		||||
			} else {
 | 
			
		||||
				tmp = false
 | 
			
		||||
			}
 | 
			
		||||
		case string:
 | 
			
		||||
			tmp, _ = strconv.ParseBool(vtype)
 | 
			
		||||
		default:
 | 
			
		||||
			tmp, _ = strconv.ParseBool(string(vtype.([]byte)))
 | 
			
		||||
		}
 | 
			
		||||
		res = append(res, tmp)
 | 
			
		||||
	}
 | 
			
		||||
	return res
 | 
			
		||||
}
 | 
			
		||||
func (this *StarResultCol) MustFloat32() []float32 {
 | 
			
		||||
	var res []float32
 | 
			
		||||
	var tmp float32
 | 
			
		||||
	for _, v := range this.Result {
 | 
			
		||||
		res = append(res, v.(float32))
 | 
			
		||||
		switch vtype := v.(type) {
 | 
			
		||||
		case nil:
 | 
			
		||||
			tmp = 0
 | 
			
		||||
		case float64, float32:
 | 
			
		||||
			tmp = float32(vtype.(float64))
 | 
			
		||||
		case string:
 | 
			
		||||
			tmps, _ := strconv.ParseFloat(vtype, 32)
 | 
			
		||||
			tmp = float32(tmps)
 | 
			
		||||
		case int, int32, int64:
 | 
			
		||||
			tmp = float32(vtype.(int64))
 | 
			
		||||
		default:
 | 
			
		||||
			tmp = v.(float32)
 | 
			
		||||
		}
 | 
			
		||||
		res = append(res, tmp)
 | 
			
		||||
	}
 | 
			
		||||
	return res
 | 
			
		||||
}
 | 
			
		||||
func (this *StarResultCol) MustFloat64() []float64 {
 | 
			
		||||
	var res []float64
 | 
			
		||||
	var tmp float64
 | 
			
		||||
	for _, v := range this.Result {
 | 
			
		||||
		res = append(res, v.(float64))
 | 
			
		||||
		switch vtype := v.(type) {
 | 
			
		||||
		case nil:
 | 
			
		||||
			tmp = 0
 | 
			
		||||
		case float64, float32:
 | 
			
		||||
			tmp = vtype.(float64)
 | 
			
		||||
		case string:
 | 
			
		||||
			tmp, _ = strconv.ParseFloat(vtype, 64)
 | 
			
		||||
		case int, int32, int64:
 | 
			
		||||
			tmp = float64(vtype.(int64))
 | 
			
		||||
		default:
 | 
			
		||||
			tmp = v.(float64)
 | 
			
		||||
		}
 | 
			
		||||
		res = append(res, tmp)
 | 
			
		||||
	}
 | 
			
		||||
	return res
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (this *StarResultCol) MustString() []string {
 | 
			
		||||
	var res []string
 | 
			
		||||
	var tmp string
 | 
			
		||||
@ -74,8 +125,20 @@ func (this *StarResultCol) MustString() []string {
 | 
			
		||||
			tmp = ""
 | 
			
		||||
		case string:
 | 
			
		||||
			tmp = vtype
 | 
			
		||||
		case int64:
 | 
			
		||||
			tmp = strconv.FormatInt(vtype, 10)
 | 
			
		||||
		case int32:
 | 
			
		||||
			tmp = strconv.Itoa(int(vtype))
 | 
			
		||||
		case bool:
 | 
			
		||||
			tmp = strconv.FormatBool(vtype)
 | 
			
		||||
		case float64:
 | 
			
		||||
			tmp = strconv.FormatFloat(vtype, 'f', 10, 64)
 | 
			
		||||
		case float32:
 | 
			
		||||
			tmp = strconv.FormatFloat(float64(vtype), 'f', 10, 32)
 | 
			
		||||
		case int:
 | 
			
		||||
			tmp = strconv.Itoa(vtype)
 | 
			
		||||
		default:
 | 
			
		||||
			tmp = v.(string)
 | 
			
		||||
			tmp = string(vtype.([]byte))
 | 
			
		||||
		}
 | 
			
		||||
		res = append(res, tmp)
 | 
			
		||||
	}
 | 
			
		||||
@ -84,40 +147,109 @@ func (this *StarResultCol) MustString() []string {
 | 
			
		||||
 | 
			
		||||
func (this *StarResultCol) MustInt32() []int32 {
 | 
			
		||||
	var res []int32
 | 
			
		||||
	var tmp int32
 | 
			
		||||
	for _, v := range this.Result {
 | 
			
		||||
		res = append(res, v.(int32))
 | 
			
		||||
		switch vtype := v.(type) {
 | 
			
		||||
		case nil:
 | 
			
		||||
			tmp = 0
 | 
			
		||||
		case float64, float32:
 | 
			
		||||
			tmp = int32(vtype.(float64))
 | 
			
		||||
		case string:
 | 
			
		||||
			tmps, _ := strconv.ParseInt(vtype, 10, 32)
 | 
			
		||||
			tmp = int32(tmps)
 | 
			
		||||
		case int, int32, int64:
 | 
			
		||||
			tmp = int32(vtype.(int64))
 | 
			
		||||
		default:
 | 
			
		||||
			tmp = v.(int32)
 | 
			
		||||
		}
 | 
			
		||||
		res = append(res, tmp)
 | 
			
		||||
	}
 | 
			
		||||
	return res
 | 
			
		||||
}
 | 
			
		||||
func (this *StarResultCol) MustInt64() []int64 {
 | 
			
		||||
	var res []int64
 | 
			
		||||
	var tmp int64
 | 
			
		||||
	for _, v := range this.Result {
 | 
			
		||||
		res = append(res, v.(int64))
 | 
			
		||||
		switch vtype := v.(type) {
 | 
			
		||||
		case nil:
 | 
			
		||||
			tmp = 0
 | 
			
		||||
		case float64, float32:
 | 
			
		||||
			tmp = int64(vtype.(float64))
 | 
			
		||||
		case string:
 | 
			
		||||
			tmp, _ = strconv.ParseInt(vtype, 10, 64)
 | 
			
		||||
		case int, int32, int64:
 | 
			
		||||
			tmp = (vtype.(int64))
 | 
			
		||||
		default:
 | 
			
		||||
			tmp = v.(int64)
 | 
			
		||||
		}
 | 
			
		||||
		res = append(res, tmp)
 | 
			
		||||
	}
 | 
			
		||||
	return res
 | 
			
		||||
}
 | 
			
		||||
func (this *StarResultCol) MustInt() []int {
 | 
			
		||||
	var res []int
 | 
			
		||||
	var tmp int
 | 
			
		||||
	for _, v := range this.Result {
 | 
			
		||||
		res = append(res, v.(int))
 | 
			
		||||
		switch vtype := v.(type) {
 | 
			
		||||
		case nil:
 | 
			
		||||
			tmp = 0
 | 
			
		||||
		case float64, float32:
 | 
			
		||||
			tmp = int(vtype.(float64))
 | 
			
		||||
		case string:
 | 
			
		||||
			tmps, _ := strconv.ParseInt(vtype, 10, 64)
 | 
			
		||||
			tmp = int(tmps)
 | 
			
		||||
		case int, int32, int64:
 | 
			
		||||
			tmp = int(vtype.(int64))
 | 
			
		||||
		default:
 | 
			
		||||
			tmp = int(v.(int64))
 | 
			
		||||
		}
 | 
			
		||||
		res = append(res, tmp)
 | 
			
		||||
	}
 | 
			
		||||
	return res
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (this *StarResult) MustInt64(name string) int64 {
 | 
			
		||||
	var res int64
 | 
			
		||||
	num, ok := this.columnref[name]
 | 
			
		||||
	if !ok {
 | 
			
		||||
		return 0
 | 
			
		||||
	}
 | 
			
		||||
	res := this.Result[num].(int64)
 | 
			
		||||
	tmp := this.Result[num]
 | 
			
		||||
	switch vtype := tmp.(type) {
 | 
			
		||||
	case nil:
 | 
			
		||||
		res = 0
 | 
			
		||||
	case float64, float32:
 | 
			
		||||
		res = int64(vtype.(float64))
 | 
			
		||||
	case string:
 | 
			
		||||
		res, _ = strconv.ParseInt(vtype, 10, 64)
 | 
			
		||||
	case int, int32, int64:
 | 
			
		||||
		res = (vtype.(int64))
 | 
			
		||||
	default:
 | 
			
		||||
		res, _ = strconv.ParseInt(string(tmp.([]byte)), 10, 64)
 | 
			
		||||
	}
 | 
			
		||||
	return res
 | 
			
		||||
}
 | 
			
		||||
func (this *StarResult) MustInt32(name string) int32 {
 | 
			
		||||
	var res int32
 | 
			
		||||
	num, ok := this.columnref[name]
 | 
			
		||||
	if !ok {
 | 
			
		||||
		return 0
 | 
			
		||||
	}
 | 
			
		||||
	res := this.Result[num].(int32)
 | 
			
		||||
	tmp := this.Result[num]
 | 
			
		||||
	switch vtype := tmp.(type) {
 | 
			
		||||
	case nil:
 | 
			
		||||
		res = 0
 | 
			
		||||
	case float64, float32:
 | 
			
		||||
		res = int32(vtype.(float64))
 | 
			
		||||
	case string:
 | 
			
		||||
		ress, _ := strconv.ParseInt(vtype, 10, 32)
 | 
			
		||||
		res = int32(ress)
 | 
			
		||||
	case int, int32, int64:
 | 
			
		||||
		res = int32(vtype.(int64))
 | 
			
		||||
	default:
 | 
			
		||||
		ress, _ := strconv.ParseInt(string(tmp.([]byte)), 10, 32)
 | 
			
		||||
		res = int32(ress)
 | 
			
		||||
	}
 | 
			
		||||
	return res
 | 
			
		||||
}
 | 
			
		||||
func (this *StarResult) MustString(name string) string {
 | 
			
		||||
@ -131,40 +263,123 @@ func (this *StarResult) MustString(name string) string {
 | 
			
		||||
		res = ""
 | 
			
		||||
	case string:
 | 
			
		||||
		res = vtype
 | 
			
		||||
	case int64:
 | 
			
		||||
		res = strconv.FormatInt(vtype, 10)
 | 
			
		||||
	case int32:
 | 
			
		||||
		res = strconv.Itoa(int(vtype))
 | 
			
		||||
	case bool:
 | 
			
		||||
		res = strconv.FormatBool(vtype)
 | 
			
		||||
	case float64:
 | 
			
		||||
		res = strconv.FormatFloat(vtype, 'f', 10, 64)
 | 
			
		||||
	case float32:
 | 
			
		||||
		res = strconv.FormatFloat(float64(vtype), 'f', 10, 32)
 | 
			
		||||
	case int:
 | 
			
		||||
		res = strconv.Itoa(vtype)
 | 
			
		||||
	default:
 | 
			
		||||
		res = string(vtype.([]byte))
 | 
			
		||||
	}
 | 
			
		||||
	return res
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (this *StarResult) MustFloat64(name string) float64 {
 | 
			
		||||
	var res float64
 | 
			
		||||
	num, ok := this.columnref[name]
 | 
			
		||||
	if !ok {
 | 
			
		||||
		return 0
 | 
			
		||||
	}
 | 
			
		||||
	res := this.Result[num].(float64)
 | 
			
		||||
	switch vtype := this.Result[num].(type) {
 | 
			
		||||
	case nil:
 | 
			
		||||
		res = 0
 | 
			
		||||
	case string:
 | 
			
		||||
		res, _ = strconv.ParseFloat(vtype, 64)
 | 
			
		||||
	case float64:
 | 
			
		||||
		res = vtype
 | 
			
		||||
	case int, int64, int32, float32:
 | 
			
		||||
		res = vtype.(float64)
 | 
			
		||||
	default:
 | 
			
		||||
		res, _ = strconv.ParseFloat(string(vtype.([]byte)), 64)
 | 
			
		||||
	}
 | 
			
		||||
	return res
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (this *StarResult) MustFloat32(name string) float32 {
 | 
			
		||||
	var res float32
 | 
			
		||||
	num, ok := this.columnref[name]
 | 
			
		||||
	if !ok {
 | 
			
		||||
		return 0
 | 
			
		||||
	}
 | 
			
		||||
	res := this.Result[num].(float32)
 | 
			
		||||
	switch vtype := this.Result[num].(type) {
 | 
			
		||||
	case nil:
 | 
			
		||||
		res = 0
 | 
			
		||||
	case string:
 | 
			
		||||
		tmp, _ := strconv.ParseFloat(vtype, 32)
 | 
			
		||||
		res = float32(tmp)
 | 
			
		||||
	case float64:
 | 
			
		||||
		res = float32(vtype)
 | 
			
		||||
	case float32:
 | 
			
		||||
		res = vtype
 | 
			
		||||
	case int, int64, int32:
 | 
			
		||||
		res = vtype.(float32)
 | 
			
		||||
	default:
 | 
			
		||||
		tmp, _ := strconv.ParseFloat(string(vtype.([]byte)), 32)
 | 
			
		||||
		res = float32(tmp)
 | 
			
		||||
	}
 | 
			
		||||
	return res
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (this *StarResult) MustInt(name string) int {
 | 
			
		||||
	var res int
 | 
			
		||||
	num, ok := this.columnref[name]
 | 
			
		||||
	if !ok {
 | 
			
		||||
		return 0
 | 
			
		||||
	}
 | 
			
		||||
	res := this.Result[num].(int)
 | 
			
		||||
	tmp := this.Result[num]
 | 
			
		||||
	switch vtype := tmp.(type) {
 | 
			
		||||
	case nil:
 | 
			
		||||
		res = 0
 | 
			
		||||
	case float64, float32:
 | 
			
		||||
		res = int(vtype.(float64))
 | 
			
		||||
	case string:
 | 
			
		||||
		ress, _ := strconv.ParseInt(vtype, 10, 64)
 | 
			
		||||
		res = int(ress)
 | 
			
		||||
	case int, int32, int64:
 | 
			
		||||
		res = int(vtype.(int64))
 | 
			
		||||
	default:
 | 
			
		||||
		ress, _ := strconv.ParseInt(string(tmp.([]byte)), 10, 64)
 | 
			
		||||
		res = int(ress)
 | 
			
		||||
	}
 | 
			
		||||
	return res
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (this *StarResult) MustBool(name string) bool {
 | 
			
		||||
	var res bool
 | 
			
		||||
	num, ok := this.columnref[name]
 | 
			
		||||
	if !ok {
 | 
			
		||||
		return false
 | 
			
		||||
	}
 | 
			
		||||
	res := this.Result[num].(bool)
 | 
			
		||||
	tmp := this.Result[num]
 | 
			
		||||
	switch vtype := tmp.(type) {
 | 
			
		||||
	case nil:
 | 
			
		||||
		res = false
 | 
			
		||||
	case bool:
 | 
			
		||||
		res = vtype
 | 
			
		||||
	case float64, float32:
 | 
			
		||||
		if vtype.(float64) > 0 {
 | 
			
		||||
			res = true
 | 
			
		||||
		} else {
 | 
			
		||||
			res = false
 | 
			
		||||
		}
 | 
			
		||||
	case int, int32, int64:
 | 
			
		||||
		if vtype.(int) > 0 {
 | 
			
		||||
			res = true
 | 
			
		||||
		} else {
 | 
			
		||||
			res = false
 | 
			
		||||
		}
 | 
			
		||||
	case string:
 | 
			
		||||
		res, _ = strconv.ParseBool(vtype)
 | 
			
		||||
	default:
 | 
			
		||||
		res, _ = strconv.ParseBool(string(vtype.([]byte)))
 | 
			
		||||
	}
 | 
			
		||||
	return res
 | 
			
		||||
}
 | 
			
		||||
func (this *StarResult) MustBytes(name string) []byte {
 | 
			
		||||
@ -212,7 +427,7 @@ func (this *StarRows) Close() error {
 | 
			
		||||
func (this *StarRows) parserows() {
 | 
			
		||||
	this.result = [][]interface{}{}
 | 
			
		||||
	this.columnref = make(map[string]int)
 | 
			
		||||
	this.StringResult = []map[string]string{make(map[string]string)}
 | 
			
		||||
	this.StringResult = []map[string]string{}
 | 
			
		||||
	this.Columns, _ = this.Rows.Columns()
 | 
			
		||||
	types, _ := this.Rows.ColumnTypes()
 | 
			
		||||
	for _, v := range types {
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										26
									
								
								http.go
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								http.go
									
									
									
									
									
								
							@ -116,6 +116,32 @@ func (this *StarCurl) CurlWithFile(url string, postdata map[string]string, formn
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (this *StarCurl) CurlWithFileByBytes(url string, postdata map[string]string, formname, fname string, data []byte, savepath string, tofile bool) (result []byte, err error) {
 | 
			
		||||
	buf := &bytes.Buffer{}
 | 
			
		||||
	bufwriter := multipart.NewWriter(buf)
 | 
			
		||||
	if postdata != nil {
 | 
			
		||||
		for k, v := range postdata {
 | 
			
		||||
			bufwriter.WriteField(k, v)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	fpdst, err := bufwriter.CreateFormFile(formname, fname)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	fpdst.Write(data)
 | 
			
		||||
	this.PostBuffer = buf
 | 
			
		||||
	this.ReqHeader.Set("Content-Type", "multipart/form-data;boundary="+bufwriter.Boundary())
 | 
			
		||||
	bufwriter.Close()
 | 
			
		||||
	if tofile {
 | 
			
		||||
		err = this.CurlDataToFile(url, []byte{}, "POST", savepath, func(float64) {})
 | 
			
		||||
		this.ResetReqHeader()
 | 
			
		||||
	} else {
 | 
			
		||||
		result, err = this.Curl(url, []byte{}, "POST")
 | 
			
		||||
	}
 | 
			
		||||
	this.ResetReqHeader()
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (this *StarCurl) CurlWithFileByMemory(url string, postdata map[string]string, formname, fpath, savepath string, tofile bool, shell func(float64)) (result []byte, err error) {
 | 
			
		||||
	buf := &bytes.Buffer{}
 | 
			
		||||
	bufwriter := multipart.NewWriter(buf)
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										11
									
								
								net.go
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								net.go
									
									
									
									
									
								
							@ -5,6 +5,9 @@ import (
 | 
			
		||||
	"errors"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
SecretKey 通信加密Key,不应当被修改
 | 
			
		||||
*/
 | 
			
		||||
const SecretKey string = "1996victorique1127B612BTXL"
 | 
			
		||||
 | 
			
		||||
var header []byte = []byte{11, 27, 19, 96}
 | 
			
		||||
@ -59,10 +62,10 @@ type MsgUsed struct {
 | 
			
		||||
	ID    uint16
 | 
			
		||||
	Msg   string
 | 
			
		||||
	Crc32 string
 | 
			
		||||
	Ip    string
 | 
			
		||||
	Conn  interface{}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (this *StarQueue) ParseMessage(msg []byte, ip string) int {
 | 
			
		||||
func (this *StarQueue) ParseMessage(msg []byte, conn interface{}) int {
 | 
			
		||||
	var buffer bytes.Buffer
 | 
			
		||||
	buffer.Write(this.UnFinMsg)
 | 
			
		||||
	buffer.Write(msg)
 | 
			
		||||
@ -99,7 +102,7 @@ func (this *StarQueue) ParseMessage(msg []byte, ip string) int {
 | 
			
		||||
			if this.Encode {
 | 
			
		||||
				strmsg = Crypto.VicqueDecodeV1(strmsg, SecretKey)
 | 
			
		||||
			}
 | 
			
		||||
			msgs := MsgUsed{uint16(uint(id[0])<<8 + uint(id[1])), string(strmsg), string(crc), ip}
 | 
			
		||||
			msgs := MsgUsed{uint16(uint(id[0])<<8 + uint(id[1])), string(strmsg), string(crc), conn}
 | 
			
		||||
			this.LastID = int(msgs.ID)
 | 
			
		||||
			this.MsgPool = append(this.MsgPool, msgs)
 | 
			
		||||
		}
 | 
			
		||||
@ -107,7 +110,7 @@ func (this *StarQueue) ParseMessage(msg []byte, ip string) int {
 | 
			
		||||
			return -2
 | 
			
		||||
		}
 | 
			
		||||
		msg = msg[length+6:]
 | 
			
		||||
		return this.ParseMessage(msg, ip)
 | 
			
		||||
		return this.ParseMessage(msg, conn)
 | 
			
		||||
	}
 | 
			
		||||
	return -2
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -37,7 +37,7 @@ func NewCircleByteBuffer(len int) *CircleByteBuffer {
 | 
			
		||||
	return e
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//Exits返回指定文件夹/文件是否存在
 | 
			
		||||
// Exists 返回指定文件夹/文件是否存在
 | 
			
		||||
func Exists(filepath string) bool {
 | 
			
		||||
	_, err := os.Stat(filepath)
 | 
			
		||||
	if err != nil && os.IsNotExist(err) {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user