更多的东西用config.json保存

This commit is contained in:
dmy@lab 2016-01-30 00:34:01 +08:00
parent 9a18b5323d
commit dee06848fb
3 changed files with 24 additions and 18 deletions

View File

@ -1,4 +1,10 @@
{
"cacheSize":4096,
"queueLength":10
"queueLength":10,
"auth":{
"startMark":"#2v!",
"endMark":"_=1z",
"XORKey":"fasdfasdf!3297!jfsl12*&!HHHFds",
"headerKey":"#2GD+.>dt`Qdp"
}
}

View File

@ -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())
}
}
}

View File

@ -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)}