From dee06848fbc59fc6665e468911c4ec5ef767971d Mon Sep 17 00:00:00 2001 From: "dmy@lab" Date: Sat, 30 Jan 2016 00:34:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E5=A4=9A=E7=9A=84=E4=B8=9C=E8=A5=BF?= =?UTF-8?q?=E7=94=A8config.json=E4=BF=9D=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config.json | 8 ++++++- stat/{tunnelstatus.go => tunnelstate.go} | 6 ----- tscipher/cipher.go | 28 ++++++++++++++---------- 3 files changed, 24 insertions(+), 18 deletions(-) rename stat/{tunnelstatus.go => tunnelstate.go} (89%) diff --git a/config.json b/config.json index 38255b9..3f2fb9f 100644 --- a/config.json +++ b/config.json @@ -1,4 +1,10 @@ { "cacheSize":4096, - "queueLength":10 + "queueLength":10, + "auth":{ + "startMark":"#2v!", + "endMark":"_=1z", + "XORKey":"fasdfasdf!3297!jfsl12*&!HHHFds", + "headerKey":"#2GD+.>dt`Qdp" + } } \ No newline at end of file diff --git a/stat/tunnelstatus.go b/stat/tunnelstate.go similarity index 89% rename from stat/tunnelstatus.go rename to stat/tunnelstate.go index 2d46a35..ac50d90 100644 --- a/stat/tunnelstatus.go +++ b/stat/tunnelstate.go @@ -4,7 +4,6 @@ import ( "container/list" "fmt" "github.com/TransX/log" - "github.com/TransX/model" "sync" ) @@ -60,14 +59,9 @@ func (this *TunnelStatusManager) chanListener() { select { case r := <-this.regChan: this.register(r) - m := r.(*model.Tunnel) - log.Debug("A tunnel registered id %s", m.GetID()) log.Debug(this.QueryStatString()) case ur := <-this.unregChan: - this.unregister(ur) - m := ur.(*model.Tunnel) - log.Debug("A tunnel unregistered id %s", m.GetID()) } } } diff --git a/tscipher/cipher.go b/tscipher/cipher.go index 2e7a1d9..4fc97ba 100644 --- a/tscipher/cipher.go +++ b/tscipher/cipher.go @@ -6,14 +6,15 @@ import ( "github.com/TransX/cache" "github.com/TransX/log" "github.com/TransX/utils" + "github.com/spf13/viper" "io" "net" "strconv" "strings" ) -var StartMark = []byte("#2v!") //should be constant -var EndMark = []byte("_=1z") //should be constant +// var StartMark = []byte("#2v!") //should be constant +// var EndMark = []byte("_=1z") //should be constant type LackDataError struct { e string @@ -75,7 +76,7 @@ func NewCipher(cipherName string) (cipher Cipher) { return NewAES() } if cipherName == "XOR" { - return NewXOR([]byte("fasdfasdf!3297!jfsl12*&!HHHFds")) + return NewXOR([]byte(viper.GetString("auth.XORKey"))) } return nil //TODO:临时这样处理 } @@ -83,10 +84,11 @@ func NewCipher(cipherName string) (cipher Cipher) { func WrapPackage(data []byte) []byte { //把要加密传输的数据打包成一定的格式,避免发送了100自己,只收到90字节的问题。 sizeOfData := len(data) binSize := utils.Int2binary(sizeOfData, 10) - header := append(append(StartMark, binSize...), EndMark...) + startMark := []byte(viper.GetString("auth.startMark")) + endMark := []byte(viper.GetString("auth.endMark")) + header := append(append(startMark, binSize...), endMark...) //加密 - key := []byte("#2GD+.>dt`Qdp") - key = key + key := []byte(viper.GetString("auth.headerKey")) cipheredHeader := make([]byte, len(header)) for i, v := range header { cipheredHeader[i] = v ^ key[i%len(key)] @@ -98,7 +100,7 @@ func UnwrapPackage(pacakge []byte) (data []byte, rest []byte, err error) { //前14个字节是header cipheredHeader := pacakge[:18] header := make([]byte, len(cipheredHeader)) - key := []byte("#2GD+.>dt`Qdp") + key := []byte(viper.GetString("auth.headerKey")) key = key for i, v := range cipheredHeader { header[i] = v ^ key[i%len(key)] @@ -107,7 +109,11 @@ func UnwrapPackage(pacakge []byte) (data []byte, rest []byte, err error) { end := header[14:] binSize := header[4:14] packageSize := 0 - if bytes.Compare(start, StartMark) == 0 && bytes.Compare(end, EndMark) == 0 { + startMarkStr := viper.GetString("auth.startMark") + endMarkStr := viper.GetString("auth.endMark") + startMark := []byte(startMarkStr) + endMark := []byte(endMarkStr) + if bytes.Compare(start, startMark) == 0 && bytes.Compare(end, endMark) == 0 { packageSize = utils.Binary2Int(binSize) if len(pacakge[18:]) < packageSize { packageSize = 0 @@ -123,9 +129,9 @@ func UnwrapPackage(pacakge []byte) (data []byte, rest []byte, err error) { packageSize = 0 data = nil rest = nil - if strings.Contains(string(pacakge), "#2v!") && strings.Contains(string(pacakge), "_=1z") { - a := strings.Index(string(pacakge), "#2v!") - b := strings.Index(string(pacakge), "_=1z") + if strings.Contains(string(pacakge), startMarkStr) && strings.Contains(string(pacakge), endMarkStr) { + a := strings.Index(string(pacakge), startMarkStr) + b := strings.Index(string(pacakge), endMarkStr) err = &NotPackageError{"NotPackageError(contains)" + "start:" + string(start) + " end:" + string(end) + "pacakge " + strconv.Itoa(len(pacakge)) + "start" + strconv.Itoa(a) + "end" + strconv.Itoa(b)} } else { err = &NotPackageError{fmt.Sprintf("NotPackageError start: %s end: %s whole %x", string(start), string(end), header)}