更多的东西用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, "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" "container/list"
"fmt" "fmt"
"github.com/TransX/log" "github.com/TransX/log"
"github.com/TransX/model"
"sync" "sync"
) )
@ -60,14 +59,9 @@ func (this *TunnelStatusManager) chanListener() {
select { select {
case r := <-this.regChan: case r := <-this.regChan:
this.register(r) this.register(r)
m := r.(*model.Tunnel)
log.Debug("A tunnel registered id %s", m.GetID())
log.Debug(this.QueryStatString()) log.Debug(this.QueryStatString())
case ur := <-this.unregChan: case ur := <-this.unregChan:
this.unregister(ur) 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/cache"
"github.com/TransX/log" "github.com/TransX/log"
"github.com/TransX/utils" "github.com/TransX/utils"
"github.com/spf13/viper"
"io" "io"
"net" "net"
"strconv" "strconv"
"strings" "strings"
) )
var StartMark = []byte("#2v!") //should be constant // var StartMark = []byte("#2v!") //should be constant
var EndMark = []byte("_=1z") //should be constant // var EndMark = []byte("_=1z") //should be constant
type LackDataError struct { type LackDataError struct {
e string e string
@ -75,7 +76,7 @@ func NewCipher(cipherName string) (cipher Cipher) {
return NewAES() return NewAES()
} }
if cipherName == "XOR" { if cipherName == "XOR" {
return NewXOR([]byte("fasdfasdf!3297!jfsl12*&!HHHFds")) return NewXOR([]byte(viper.GetString("auth.XORKey")))
} }
return nil //TODO:临时这样处理 return nil //TODO:临时这样处理
} }
@ -83,10 +84,11 @@ func NewCipher(cipherName string) (cipher Cipher) {
func WrapPackage(data []byte) []byte { //把要加密传输的数据打包成一定的格式避免发送了100自己只收到90字节的问题。 func WrapPackage(data []byte) []byte { //把要加密传输的数据打包成一定的格式避免发送了100自己只收到90字节的问题。
sizeOfData := len(data) sizeOfData := len(data)
binSize := utils.Int2binary(sizeOfData, 10) 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 := []byte(viper.GetString("auth.headerKey"))
key = key
cipheredHeader := make([]byte, len(header)) cipheredHeader := make([]byte, len(header))
for i, v := range header { for i, v := range header {
cipheredHeader[i] = v ^ key[i%len(key)] cipheredHeader[i] = v ^ key[i%len(key)]
@ -98,7 +100,7 @@ func UnwrapPackage(pacakge []byte) (data []byte, rest []byte, err error) {
//前14个字节是header //前14个字节是header
cipheredHeader := pacakge[:18] cipheredHeader := pacakge[:18]
header := make([]byte, len(cipheredHeader)) header := make([]byte, len(cipheredHeader))
key := []byte("#2GD+.>dt`Qdp") key := []byte(viper.GetString("auth.headerKey"))
key = key key = key
for i, v := range cipheredHeader { for i, v := range cipheredHeader {
header[i] = v ^ key[i%len(key)] header[i] = v ^ key[i%len(key)]
@ -107,7 +109,11 @@ func UnwrapPackage(pacakge []byte) (data []byte, rest []byte, err error) {
end := header[14:] end := header[14:]
binSize := header[4:14] binSize := header[4:14]
packageSize := 0 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) packageSize = utils.Binary2Int(binSize)
if len(pacakge[18:]) < packageSize { if len(pacakge[18:]) < packageSize {
packageSize = 0 packageSize = 0
@ -123,9 +129,9 @@ func UnwrapPackage(pacakge []byte) (data []byte, rest []byte, err error) {
packageSize = 0 packageSize = 0
data = nil data = nil
rest = nil rest = nil
if strings.Contains(string(pacakge), "#2v!") && strings.Contains(string(pacakge), "_=1z") { if strings.Contains(string(pacakge), startMarkStr) && strings.Contains(string(pacakge), endMarkStr) {
a := strings.Index(string(pacakge), "#2v!") a := strings.Index(string(pacakge), startMarkStr)
b := strings.Index(string(pacakge), "_=1z") 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)} err = &NotPackageError{"NotPackageError(contains)" + "start:" + string(start) + " end:" + string(end) + "pacakge " + strconv.Itoa(len(pacakge)) + "start" + strconv.Itoa(a) + "end" + strconv.Itoa(b)}
} else { } else {
err = &NotPackageError{fmt.Sprintf("NotPackageError start: %s end: %s whole %x", string(start), string(end), header)} err = &NotPackageError{fmt.Sprintf("NotPackageError start: %s end: %s whole %x", string(start), string(end), header)}