优化TokenConfig,节省1k+内存
This commit is contained in:
parent
9597f9077d
commit
59de84ff65
|
@ -164,16 +164,17 @@ void AP0104::InitDHCP(Action onNetReady)
|
|||
|
||||
bool AP0104::QueryDNS(TokenConfig& tk)
|
||||
{
|
||||
if (tk.Server.Length() == 0) return false;
|
||||
auto svr = tk.Server();
|
||||
if (svr.Length() == 0) return false;
|
||||
|
||||
// 根据DNS获取云端IP地址
|
||||
auto ip = DNS::Query(*Host, tk.Server);
|
||||
auto ip = DNS::Query(*Host, svr);
|
||||
if (ip == IPAddress::Any())
|
||||
{
|
||||
debug_printf("DNS::Query %s 失败!\r\n", tk.Server.GetBuffer());
|
||||
debug_printf("DNS::Query %s 失败!\r\n", svr.GetBuffer());
|
||||
return false;
|
||||
}
|
||||
debug_printf("服务器地址 %s %s:%d \r\n", tk.Server.GetBuffer(), ip.ToString().GetBuffer(), tk.ServerPort);
|
||||
debug_printf("服务器地址 %s %s:%d \r\n", svr.GetBuffer(), ip.ToString().GetBuffer(), tk.ServerPort);
|
||||
|
||||
tk.ServerIP = ip.Value;
|
||||
tk.Save();
|
||||
|
|
|
@ -172,7 +172,7 @@ TokenClient* AP0801::CreateClient()
|
|||
auto socket = Host->CreateSocket(tk->Protocol);
|
||||
socket->Remote.Port = tk->ServerPort;
|
||||
socket->Remote.Address = IPAddress(tk->ServerIP);
|
||||
socket->Server = tk->Server;
|
||||
socket->Server = tk->Server();
|
||||
|
||||
// 创建连接服务器的控制器
|
||||
auto ctrl = new TokenController();
|
||||
|
|
|
@ -101,7 +101,7 @@ TokenClient* IOK0203::CreateClient()
|
|||
auto socket = Host->CreateSocket(tk->Protocol);
|
||||
socket->Remote.Port = tk->ServerPort;
|
||||
socket->Remote.Address = IPAddress(tk->ServerIP);
|
||||
socket->Server = tk->Server;
|
||||
socket->Server = tk->Server();
|
||||
|
||||
// 创建连接服务器的控制器
|
||||
auto ctrl = new TokenController();
|
||||
|
|
|
@ -131,16 +131,17 @@ void PA0903::InitDHCP(Action onNetReady)
|
|||
|
||||
bool PA0903::QueryDNS(TokenConfig& tk)
|
||||
{
|
||||
if(tk.Server.Length() == 0) return false;
|
||||
auto svr = tk.Server();
|
||||
if(svr.Length() == 0) return false;
|
||||
|
||||
// 根据DNS获取云端IP地址
|
||||
auto ip = DNS::Query(*Host, tk.Server);
|
||||
auto ip = DNS::Query(*Host, svr);
|
||||
if(ip == IPAddress::Any())
|
||||
{
|
||||
debug_printf("DNS::Query %s 失败!\r\n", tk.Server.GetBuffer());
|
||||
debug_printf("DNS::Query %s 失败!\r\n", svr.GetBuffer());
|
||||
return false;
|
||||
}
|
||||
debug_printf("服务器地址 %s %s:%d \r\n", tk.Server.GetBuffer(), ip.ToString().GetBuffer(), tk.ServerPort);
|
||||
debug_printf("服务器地址 %s %s:%d \r\n", svr.GetBuffer(), ip.ToString().GetBuffer(), tk.ServerPort);
|
||||
|
||||
tk.ServerIP = ip.Value;
|
||||
tk.Save();
|
||||
|
|
|
@ -190,7 +190,7 @@ void LoopTask(void* param)
|
|||
break;
|
||||
case 1:
|
||||
{
|
||||
if(!client->Cfg->User)
|
||||
if(!client->Cfg->User())
|
||||
client->Register();
|
||||
else
|
||||
client->Login();
|
||||
|
@ -300,7 +300,7 @@ bool TokenClient::OnLocalHello(TokenMessage& msg, Controller* ctrl)
|
|||
HelloMessage ext2(Hello);
|
||||
ext2.Reply = true;
|
||||
// 使用系统ID作为Name
|
||||
ext2.Name = Cfg->User;
|
||||
ext2.Name = Cfg->User();
|
||||
// 使用系统ID作为Key
|
||||
ext2.Key = ctrl2->Key;
|
||||
//ext2.Key = Sys.ID;
|
||||
|
@ -329,9 +329,9 @@ bool TokenClient::OnRedirect(HelloMessage& msg)
|
|||
|
||||
cfg->Show();
|
||||
|
||||
cfg->Server = msg.Server;
|
||||
cfg->Server() = msg.Server;
|
||||
cfg->ServerPort = msg.Port;
|
||||
cfg->VisitToken = msg.VisitToken;
|
||||
cfg->Token() = msg.VisitToken;
|
||||
|
||||
ChangeIPEndPoint(msg.Server, msg.Port);
|
||||
|
||||
|
@ -383,7 +383,7 @@ void TokenClient::Register()
|
|||
reg.User = Buffer(Sys.ID, 16).ToHex();
|
||||
|
||||
// 原始密码作为注册密码
|
||||
reg.Pass = Cfg->Pass;
|
||||
reg.Pass = Cfg->Pass();
|
||||
|
||||
auto now = Sys.Ms();
|
||||
reg.Salt = Buffer(&now, 8);
|
||||
|
@ -419,8 +419,8 @@ void TokenClient::OnRegister(TokenMessage& msg ,Controller* ctrl)
|
|||
|
||||
RegisterMessage reg;
|
||||
reg.ReadMessage(msg);
|
||||
cfg->User = reg.User;
|
||||
cfg->Pass = reg.Pass;
|
||||
cfg->User() = reg.User;
|
||||
cfg->Pass() = reg.Pass;
|
||||
|
||||
cfg->Show();
|
||||
cfg->Save();
|
||||
|
@ -441,14 +441,14 @@ void TokenClient::Login()
|
|||
LoginMessage login;
|
||||
|
||||
auto cfg = Cfg;
|
||||
login.User = cfg->User;
|
||||
login.User = cfg->User();
|
||||
//login.Pass = MD5::Hash(cfg->Pass);
|
||||
|
||||
// 原始密码对盐值进行加密,得到登录密码
|
||||
auto now = Sys.Ms();
|
||||
auto arr = Buffer(&now, 8);
|
||||
login.Salt = arr;
|
||||
RC4::Encrypt(arr, cfg->Pass);
|
||||
RC4::Encrypt(arr, cfg->Pass());
|
||||
login.Pass = arr.ToHex();
|
||||
|
||||
TokenMessage msg(2);
|
||||
|
|
|
@ -4,12 +4,7 @@
|
|||
|
||||
TokenConfig* TokenConfig::Current = nullptr;
|
||||
|
||||
TokenConfig::TokenConfig() : ConfigBase(),
|
||||
User(_User, sizeof(_User)),
|
||||
Pass(_Pass, sizeof(_Pass)),
|
||||
VisitToken(_VisitToken, sizeof(_VisitToken)),
|
||||
Server(_Server, sizeof(_Server)),
|
||||
Vendor(_Vendor, sizeof(_Vendor))
|
||||
TokenConfig::TokenConfig() : ConfigBase()
|
||||
{
|
||||
_Name = "TokenCf";
|
||||
_Start = &Length;
|
||||
|
@ -32,17 +27,6 @@ void TokenConfig::Init()
|
|||
Protocol = ProtocolType::Udp;
|
||||
}
|
||||
|
||||
void TokenConfig::Load()
|
||||
{
|
||||
ConfigBase::Load();
|
||||
|
||||
User = _User;
|
||||
Pass = _Pass;
|
||||
VisitToken = _VisitToken;
|
||||
Server = _Server;
|
||||
Vendor = _Vendor;
|
||||
}
|
||||
|
||||
void TokenConfig::Show() const
|
||||
{
|
||||
#if DEBUG
|
||||
|
@ -54,10 +38,10 @@ void TokenConfig::Show() const
|
|||
debug_printf("\t远程: ");
|
||||
IPEndPoint ep2(IPAddress(ServerIP), ServerPort);
|
||||
ep2.Show(true);
|
||||
debug_printf("\t服务: %s \r\n", Server.GetBuffer());
|
||||
debug_printf("\t厂商: %s \r\n", Vendor.GetBuffer());
|
||||
debug_printf("\t登录: %s \r\n", User.GetBuffer());
|
||||
debug_printf("\t密码: %s \r\n", Pass.GetBuffer());
|
||||
debug_printf("\t服务: %s \r\n", _Server);
|
||||
debug_printf("\t厂商: %s \r\n", _Vendor);
|
||||
debug_printf("\t登录: %s \r\n", _User);
|
||||
debug_printf("\t密码: %s \r\n", _Pass);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -73,16 +57,18 @@ TokenConfig* TokenConfig::Create(cstring vendor, ProtocolType protocol, ushort s
|
|||
if(tc.Protocol == 0x00)tc.Protocol = ProtocolType::Udp; // 默认 UDP 不允许 unknown
|
||||
|
||||
bool rs = tc.New;
|
||||
if(!tc.Vendor)
|
||||
auto vnd = tc.Vendor();
|
||||
if(!vnd)
|
||||
{
|
||||
tc.Vendor = vendor;
|
||||
vnd = vendor;
|
||||
|
||||
rs = false;
|
||||
}
|
||||
|
||||
if(!tc.Server)
|
||||
auto svr = tc.Server();
|
||||
if(!svr)
|
||||
{
|
||||
tc.Server = tc.Vendor;
|
||||
svr = vnd;
|
||||
tc.ServerPort = sport;
|
||||
tc.Port = port;
|
||||
|
||||
|
|
|
@ -26,7 +26,7 @@ public:
|
|||
ushort Port; // 本地端口
|
||||
uint ServerIP; // 服务器IP地址。服务器域名解析成功后覆盖
|
||||
ushort ServerPort; // 服务器端口
|
||||
char _VisitToken[16]; //访问服务器令牌
|
||||
char _Token[16]; //访问服务器令牌
|
||||
char _Server[32]; // 服务器域名。出厂为空,从厂商服务器覆盖,恢复出厂设置时清空
|
||||
char _Vendor[32]; // 厂商服务器域名。原始厂商服务器地址
|
||||
|
||||
|
@ -34,14 +34,13 @@ public:
|
|||
|
||||
TokenConfig();
|
||||
virtual void Init();
|
||||
virtual void Load();
|
||||
virtual void Show() const;
|
||||
|
||||
String User;
|
||||
String Pass;
|
||||
String VisitToken;
|
||||
String Server;
|
||||
String Vendor;
|
||||
String User() { return String(_User, sizeof(_User)); }
|
||||
String Pass() { return String(_Pass, sizeof(_Pass)); }
|
||||
String Token() { return String(_Token, sizeof(_Token)); }
|
||||
String Server() { return String(_Server, sizeof(_Server)); }
|
||||
String Vendor() { return String(_Vendor, sizeof(_Vendor)); }
|
||||
|
||||
static TokenConfig* Current;
|
||||
static TokenConfig* Create(cstring vendor, ProtocolType protocol, ushort sport, ushort port);
|
||||
|
|
Loading…
Reference in New Issue