alroyso 2 years ago
parent
commit
ae3cff212c

+ 164 - 0
SProxy/CManageNetWork.cpp

@@ -30,6 +30,7 @@ void CManageNetWork::init()
 	SNotifyCenter::getSingleton().addEvent(EVENTID(EventNodeList));
 	SNotifyCenter::getSingleton().addEvent(EVENTID(EventVerions));
 	SNotifyCenter::getSingleton().addEvent(EVENTID(EventSysconfig));
+	SNotifyCenter::getSingleton().addEvent(EVENTID(EventAUTH));
 
 
 	if (!m_base_curl)
@@ -115,6 +116,28 @@ void CManageNetWork::GetSysConfig()
 	m_Asyntask.AddTask(&CManageNetWork::ThreadFun_Sys_Config, this, (LPARAM)m_base_curl);
 }
 
+void CManageNetWork::Auth()
+{
+	if (!m_base_curl)
+	{
+		return;
+	}
+	m_Asyntask.AddTask(&CManageNetWork::ThreadFun_Auth, this, (LPARAM)m_base_curl);
+}
+
+void CManageNetWork::Reg(LPCSTR username, LPCSTR password)
+{
+	if (!m_base_curl)
+	{
+		return;
+	}
+	
+	this->m_username = username;
+	this->m_password = password;
+
+	m_Asyntask.AddTask(&CManageNetWork::ThreadFun_Reg, this, (LPARAM)m_base_curl);
+}
+
 void CManageNetWork::ThreadFun_login(LPARAM lParam)
 {
 	IBaseCurl* lpAsyncParam = reinterpret_cast<IBaseCurl*>(lParam);
@@ -338,6 +361,147 @@ void CManageNetWork::ThreadFun_Node_Config(LPARAM lParam)
 	pEvt->Release();
 }
 
+void CManageNetWork::ThreadFun_Auth(LPARAM lParam)
+{
+	IBaseCurl* lpAsyncParam = reinterpret_cast<IBaseCurl*>(lParam);
+	int code = 200;
+	SStringW msg = L"";
+	std::string data;
+	int count = 0;
+	do 
+	{
+		HTTPRET http_status = m_base_curl->Auth(data);
+		if (http_status == HTTPRET::http_f) {
+			code = 0;
+			msg = m_base_curl->GetLastErrorW();
+			break;
+		}
+		auto status = CApp::getSingletonPtr()->GetUserinfo()->authInit(data);
+		if (status != -1) {
+			code = status;
+			msg = CApp::getSingletonPtr()->GetUserinfo()->GetLastErrorW();
+			break;
+		}
+
+
+		/*else if (http_status == HTTPRET::http_user_expired_at) {
+
+		}
+		else if (http_status == HTTPRET::http_user_transfer_enable)
+		{
+			code = 0;
+			msg = m_base_curl->GetLastErrorW();
+			break;
+		}*/
+
+		//重新鉴权
+		if (m_base_curl->GetHttpStatus() == 401)
+		{
+			if (count >= 3)
+			{
+				code = m_base_curl->GetHttpStatus();
+				msg = L"鉴权失败,需要重新登录";
+				break;
+			}
+			http_status = m_base_curl->PostLogin(this->m_username, this->m_password, data);
+			if (http_status == HTTPRET::http_f) {
+				code = m_base_curl->GetHttpStatus();
+				msg = m_base_curl->GetLastErrorW();
+				count++;
+			}
+			else {
+				if (!CApp::getSingletonPtr()->GetUserinfo()->Init(data))
+				{
+					code = -1;
+					msg = CApp::getSingletonPtr()->GetServerList()->GetLastErrorW();
+				}
+
+				continue;
+			}
+
+		}
+		else {
+			code == 200;
+			break;
+		}
+
+	} while (m_base_curl);
+	
+	EventAUTH* pEvt = new EventAUTH(nullptr);
+	pEvt->status = code;
+	pEvt->msg = msg;
+	SNotifyCenter::getSingleton().FireEventAsync(pEvt);
+	pEvt->Release();
+}
+
+void CManageNetWork::ThreadFun_Reg(LPARAM lParam)
+{
+	IBaseCurl* lpAsyncParam = reinterpret_cast<IBaseCurl*>(lParam);
+	int code = 200;
+	SStringW msg = L"";
+	std::string data;
+
+	HTTPRET httpstatus = m_base_curl->GetSysConfigFromUser(this->m_username, this->m_password, data);
+	if (httpstatus == HTTPRET::http_user_expired_at)
+	{
+		code = -2;
+		msg = m_base_curl->GetLastErrorW();
+
+	}
+	else if (httpstatus == HTTPRET::http_user_transfer_enable) {
+		code = -3;
+		msg = m_base_curl->GetLastErrorW();
+	}
+	else if (httpstatus == HTTPRET::http_f) {
+		code = 0;
+		msg = m_base_curl->GetLastErrorW();
+	}
+
+	if (!data.empty())
+	{
+		if (!CApp::getSingletonPtr()->GetSysconfig()->Inti(data)) {
+
+		}
+
+	}
+
+	data.empty();
+
+	httpstatus = m_base_curl->PostReg(this->m_username, this->m_password, data);
+	if (httpstatus == HTTPRET::http_user_expired_at)
+	{
+		code = -2;
+		msg = m_base_curl->GetLastErrorW();
+
+	}
+	else if (httpstatus == HTTPRET::http_user_transfer_enable) {
+		code = -3;
+		msg = m_base_curl->GetLastErrorW();
+	}
+	else if (httpstatus == HTTPRET::http_f) {
+		code = 0;
+		msg = m_base_curl->GetLastErrorW();
+	}
+
+	if (!data.empty())
+	{
+		if (!CApp::getSingletonPtr()->GetUserinfo()->Init(data))
+		{
+			code = -1;
+			msg = CApp::getSingletonPtr()->GetUserinfo()->GetLastErrorW();
+		}
+	}
+
+
+	DataToFile();
+
+	EventLogin* pEvt = new EventLogin(nullptr);
+	pEvt->status = code;
+	pEvt->msg = msg;
+	SNotifyCenter::getSingleton().FireEventAsync(pEvt);
+	pEvt->Release();
+}
+
 void CManageNetWork::LoadFileToData() {
 
 	try

+ 6 - 0
SProxy/CManageNetWork.h

@@ -29,12 +29,18 @@ public:
 
 	void GetSysConfig();
 
+	void Auth();
+
+	void Reg(LPCSTR username, LPCSTR password);
+
 private:
 	void ThreadFun_login(LPARAM lParam);
 	void ThreadFun_Dowlon_Config(LPARAM lParam);
 	void ThreadFun_Version_Config(LPARAM lParam);
 	void ThreadFun_Sys_Config(LPARAM lParam);
 	void ThreadFun_Node_Config(LPARAM lParam);
+	void ThreadFun_Auth(LPARAM lParam);
+	void ThreadFun_Reg(LPARAM lParam);
 	void LoadFileToData();
 
 	void DataToFile();

+ 32 - 1
SProxy/CNetWork.cpp

@@ -44,7 +44,13 @@ HTTPRET CNetWork::Refresh(std::string& data) {
 }
 
 
-HTTPRET CNetWork::Auth(std::string& data) {
+HTTPRET CNetWork::Auth(std::string& data){
+	std::vector<cpr::Parameter> p;
+	std::string text = GetUrl("/api/client/v3/authUser",p,CApp::getSingletonPtr()->GetUserinfo()->access_token);
+	if (text.empty()) {
+		return HTTPRET::http_f;
+	}
+	data = text.c_str();
 	return HTTPRET::http_yes;
 }
 HTTPRET CNetWork::GetServerNode(std::string& data) {
@@ -86,6 +92,31 @@ HTTPRET CNetWork::GetSysConfig(std::string& data)
 	return HTTPRET::http_yes;
 }
 
+HTTPRET CNetWork::PostReg(LPCSTR username, LPCSTR password, std::string& data) {
+	std::vector<cpr::Pair> p;
+	p.push_back({ "username",""});
+	p.push_back({ "email",username });
+	p.push_back({ "password",password });
+	std::string text = PostUrl("/api/client/v2/register", p);
+	if (text.empty()) {
+		if (m_http_status == 445)
+		{
+			return HTTPRET::http_user_expired_at;
+		}
+		else if (m_http_status == 446)
+		{
+			return HTTPRET::http_user_transfer_enable;
+		}
+		else {
+			return HTTPRET::http_f;
+		}
+
+	}
+
+	data = text.c_str();
+
+	return HTTPRET::http_yes;
+}
 
 HTTPRET CNetWork::PostLogin(LPCSTR username, LPCSTR password, std::string& data)
 {

+ 3 - 1
SProxy/CNetWork.h

@@ -14,7 +14,9 @@ public:
 
 	HTTPRET GetServerNode(std::string& data);
 
-	HTTPRET PostLogin(LPCSTR username, LPCSTR password, std::string& data);	 
+	HTTPRET PostLogin(LPCSTR username, LPCSTR password, std::string& data);
+	HTTPRET PostReg(LPCSTR username, LPCSTR password, std::string& data);
+
 	HTTPRET GetSysConfigFromUser(LPCSTR username, LPCSTR password, std::string& data);
 
 	HTTPRET GetSysConfig(std::string& data);

+ 34 - 0
SProxy/CUserInfo.cpp

@@ -61,5 +61,39 @@ bool CUserInfo::Init(std::string data)
     return false;
 }
 
+int CUserInfo::authInit(std::string data)
+{
+	if (data.empty())
+	{
+		return -1;
+	}
+
+	try
+	{
+		nlohmann::json j = nlohmann::json::parse(data.begin(), data.end());
+
+		if (j["ret"].get<int>() == 1)
+		{
+			 
+			return 200;
+
+		}
+		else
+		{
+			this->m_error_msg = S_CA2W(j["msg"].get<std::string>().c_str(), CP_UTF8).GetBuffer(0);
+
+			return j["ret"].get<int>();
+		}
+
+
+	}
+	catch (...)
+	{
+		this->m_error_msg = L"½âÎöÊý¾Ý´íÎó";
+		return -1;
+	}
+	return -1;
+}
+
  
 

+ 1 - 1
SProxy/CUserInfo.h

@@ -13,7 +13,7 @@ public:
 
 	bool Init(std::string data);
 
-
+	int authInit(std::string data);
 
 public:
 	//user

+ 6 - 1
SProxy/IBaseCurl.h

@@ -8,7 +8,8 @@ enum struct  HTTPRET
 	http_start,
 	http_end,
 	http_user_expired_at,
-	http_user_transfer_enable
+	http_user_transfer_enable,
+	http_user_enable
 
 };
 
@@ -27,6 +28,10 @@ public:
 	//登录xia'zai
 	virtual HTTPRET PostLogin(LPCSTR username, LPCSTR password, std::string& data) = 0;
 
+	//注册
+	virtual HTTPRET PostReg(LPCSTR username, LPCSTR password, std::string& data) = 0;
+
+
 	//獲取系統配置
 	virtual HTTPRET GetSysConfig(std::string& data) = 0;
 	//根据用户名和密码获取配置

BIN
SProxy/LoginDlg.cpp


BIN
SProxy/LoginDlg.h


BIN
SProxy/MainDlg.cpp


BIN
SProxy/MainDlg.h


+ 7 - 3
SProxy/SProxy.vcxproj

@@ -28,7 +28,7 @@
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v141_xp</PlatformToolset>
+    <PlatformToolset>v142</PlatformToolset>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
@@ -40,13 +40,13 @@
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v143</PlatformToolset>
+    <PlatformToolset>v142</PlatformToolset>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v143</PlatformToolset>
+    <PlatformToolset>v142</PlatformToolset>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
@@ -98,6 +98,9 @@
   <PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
     <VcpkgUseStatic>true</VcpkgUseStatic>
   </PropertyGroup>
+  <PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <VcpkgUseStatic>true</VcpkgUseStatic>
+  </PropertyGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
     <ClCompile>
       <PrecompiledHeader>Use</PrecompiledHeader>
@@ -110,6 +113,7 @@
       <BrowseInformation>true</BrowseInformation>
       <Optimization>Disabled</Optimization>
       <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <LanguageStandard>stdcpp17</LanguageStandard>
     </ClCompile>
     <Link>
       <GenerateDebugInformation>true</GenerateDebugInformation>

+ 1 - 1
SProxy/comm.h

@@ -21,4 +21,4 @@ constexpr auto CONNECT_NODE_MSG = L"
 constexpr auto SUEECS_NODE_MSG = L"»ñÈ¡½Úµã³É¹¦.."; 
 
 
-constexpr auto VERSION = L"1.1.8";
+constexpr auto VERSION = L"1.1.9";

+ 19 - 0
SProxy/event.h

@@ -140,4 +140,23 @@ public:
 
 	ConnectState status;
 	SStringW	 msg;
+};
+
+
+#define EVT_AUTH (SOUI::EVT_EXTERNAL_BEGIN + 1008)
+
+class EventAUTH : public TplEventArgs<EventAUTH>
+{
+	SOUI_CLASS_NAME(EventAUTH, L"on_event_auth")
+public:
+	EventAUTH(SOUI::SWindow* pSender) : TplEventArgs<EventAUTH>(pSender)
+	{
+
+	}
+	enum {
+		EventID = EVT_AUTH
+	};
+
+	int		 status;
+	SStringW msg;
 };

+ 1 - 1
SProxy/uires/uidef/init.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <UIDEF>
-  <font face="宋体" size="15"/>
+  <font face="宋体" size="12"/>
 
   <string src="values:string" />
   <skin src="values:skin"/>

+ 2 - 2
SProxy/uires/xml/dlg_login.xml

@@ -38,9 +38,9 @@ appWnd="1"
 
             <window size="-2,35" layout="hbox"   gravity="center"  extend="0,10,44,0">
 
-                  <link href="https://user.viptwo.xy" name="reglink"   colorText="#A79BB8" font="adding:12,bold:1"  extend="130,0,0,0">注册</link>
+                  <link name="reglink"   colorText="#A79BB8" font="adding:12,bold:0"  extend="50,0,0,0">注册新用户</link>
 
-                  <link href="https:/user.viptwo.xyz" name="resetlink"  colorText="#A79BB8" font="adding:12,bold:1"  extend="10,0,0,0">忘记密码</link>
+                  <link href="https:/user.viptwo.xyz" name="resetlink"  colorText="#A79BB8" font="adding:12,bold:0"   extend="80,0,0,0">忘记密码</link>
 
             </window>