令牌客户端携带令牌跳转,未完成

This commit is contained in:
Stone 2016-08-01 09:55:14 +00:00
parent 5a7fd3441b
commit d0a8b62ed6
3 changed files with 14 additions and 4 deletions

View File

@ -10,6 +10,7 @@ public:
String User; // 登录名 String User; // 登录名
String Pass; // 登录密码 String Pass; // 登录密码
ByteArray Salt; // 加盐 ByteArray Salt; // 加盐
String VisitToken; // 访问令牌
uint Token; // 令牌 uint Token; // 令牌
ByteArray Key; // 登录时会发通讯密码 ByteArray Key; // 登录时会发通讯密码

View File

@ -59,10 +59,13 @@ void TokenClient::Open()
// 令牌广播使用素数,避免跟别的任务重叠 // 令牌广播使用素数,避免跟别的任务重叠
//if (cs.Count() > 0) _taskBroadcast = Sys.AddTask(BroadcastHelloTask, this, 7000, 37000, "令牌广播"); //if (cs.Count() > 0) _taskBroadcast = Sys.AddTask(BroadcastHelloTask, this, 7000, 37000, "令牌广播");
// 启动时记为最后一次活跃接收 auto cfg = Cfg;
LastActive = Sys.Ms(); VisitToken = cfg->Token();
Opened = true; // 启动时记为最后一次活跃接收
LastActive = Sys.Ms();
Opened = true;
} }
void TokenClient::Close() void TokenClient::Close()
@ -463,13 +466,15 @@ bool TokenClient::OnRedirect(HelloMessage& msg)
if (!(msg.ErrCode == 0xFE || msg.ErrCode == 0xFD)) return false; if (!(msg.ErrCode == 0xFE || msg.ErrCode == 0xFD)) return false;
VisitToken = msg.VisitToken;
// 0xFE永久改变厂商地址 // 0xFE永久改变厂商地址
if (msg.ErrCode == 0xFE) if (msg.ErrCode == 0xFE)
{ {
auto cfg = Cfg; auto cfg = Cfg;
cfg->Show(); cfg->Show();
cfg->Protocol = msg.Uri.Type; cfg->Protocol = msg.Uri.Type;
cfg->Server() = msg.Uri.Host; cfg->Server() = msg.Uri.Host;
cfg->ServerPort = msg.Uri.Port; cfg->ServerPort = msg.Uri.Port;
cfg->Token() = msg.VisitToken; cfg->Token() = msg.VisitToken;
@ -580,6 +585,8 @@ void TokenClient::Login()
RC4::Encrypt(arr, cfg->Pass()); RC4::Encrypt(arr, cfg->Pass());
login.Pass = arr.ToHex(); login.Pass = arr.ToHex();
login.VisitToken = VisitToken;
TokenMessage msg(2); TokenMessage msg(2);
login.WriteMessage(msg); login.WriteMessage(msg);
login.Show(true); login.Show(true);

View File

@ -25,6 +25,8 @@ public:
int Delay; // 心跳延迟。一条心跳指令从发出到收到所花费的时间 int Delay; // 心跳延迟。一条心跳指令从发出到收到所花费的时间
int MaxNotActive; // 最大不活跃时间ms超过该时间时重启系统。默认0 int MaxNotActive; // 最大不活跃时间ms超过该时间时重启系统。默认0
String VisitToken; // 访问令牌
TokenController* Master; // 主通道 TokenController* Master; // 主通道
List<TokenController*> Controls; // 从通道 List<TokenController*> Controls; // 从通道
IList Sessions; // 会话集合 IList Sessions; // 会话集合