func connect() { if *pipeNum <= 0 { *pipeNum = 1 } clientInfo := common.ClientSetting{Version: common.Version, Delay: *delayTime, Mode: *clientMode, PipeNum: *pipeNum, AccessKey: *accessKey, ClientKey: *clientKey, AesKey: ""} if *bEncrypt { clientInfo.AesKey = string([]byte(fmt.Sprintf("asd4%d%d", int32(time.Now().Unix()), (rand.Intn(100000) + 100)))[:16]) log.Println("debug aeskey", clientInfo.AesKey) key, _ := aes.NewCipher([]byte(clientInfo.AesKey)) aesKey = &key } if *bLoadSettingFromFile { var setting fileSetting err := loadSettings(&setting) if err == nil { clientInfo.AccessKey = setting.Key } else { log.Println("load setting fail", err.Error()) } } else { if clientInfo.AccessKey != "" { var setting = fileSetting{Key: clientInfo.AccessKey} err := saveSettings(setting) if err != nil { log.Println("save setting error", err.Error()) } else { println("save setting ok, nexttime please use -f to replace -key") } } } if clientType == 0 { markName = *serveName clientInfo.ClientType = "reg" } else if clientType == 1 { markName = *linkName clientInfo.ClientType = "link" } else { println("no clienttype!") } clientInfo.Name = markName clientInfoStr, err := json.Marshal(clientInfo) if err != nil { println("encode args error") } log.Println("init client", string(clientInfoStr)) common.Write(remoteConn, "0", "init", string(clientInfoStr)) }