更多的东西用config.json保存
This commit is contained in:
parent
9a18b5323d
commit
dee06848fb
|
|
@ -1,4 +1,10 @@
|
|||
{
|
||||
"cacheSize":4096,
|
||||
"queueLength":10
|
||||
"queueLength":10,
|
||||
"auth":{
|
||||
"startMark":"#2v!",
|
||||
"endMark":"_=1z",
|
||||
"XORKey":"fasdfasdf!3297!jfsl12*&!HHHFds",
|
||||
"headerKey":"#2GD+.>dt`Qdp"
|
||||
}
|
||||
}
|
||||
|
|
@ -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())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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)}
|
||||
|
|
|
|||
Loading…
Reference in New Issue