alroyso 1 an în urmă
părinte
comite
039bd67a4a
8 a modificat fișierele cu 111 adăugiri și 25 ștergeri
  1. 79 19
      SProxy/CNetWork.cpp
  2. 3 2
      SProxy/CNetWork.h
  3. 24 1
      SProxy/Logger.cpp
  4. 1 0
      SProxy/Logger.h
  5. BIN
      SProxy/LoginDlg.cpp
  6. BIN
      SProxy/SProxy.cpp
  7. 2 1
      SProxy/comm.h
  8. 2 2
      SProxy/uires/xml/dlg_login.xml

+ 79 - 19
SProxy/CNetWork.cpp

@@ -5,7 +5,7 @@
 #include <fmt/format.h>
 #include "Logger.h"
 
-CNetWork::CNetWork() : m_http_ret(HTTPRET::http_f)
+CNetWork::CNetWork() : m_http_ret(HTTPRET::http_f) , isHttpsError(false), isHttpS(false)
 {
 	initSessionPool(100);
 }
@@ -229,7 +229,7 @@ SStringA CNetWork::GetLastErrorA()
 
 SStringW CNetWork::GetLastErrorW()
 {
-	return S_CA2W(m_error_msg.c_str(),CP_UTF8).GetBuffer(0);
+	return SStringW().Format(L"%s",S_CA2W(m_error_msg.c_str(),CP_UTF8)).GetBuffer(0);
 }
 
 std::string CNetWork::GetUrl(std::string path, std::vector<cpr::Parameter> parame,std::string token)
@@ -261,7 +261,7 @@ std::string CNetWork::GetUrl(std::string path, std::vector<cpr::Parameter> param
 
 	std::string res_test = "";
 	//auto session = GetSession();
-	int count = 3;
+	int count = 1;
 	/*int serverurlid = 0;*/
 	do
 	{
@@ -269,13 +269,27 @@ std::string CNetWork::GetUrl(std::string path, std::vector<cpr::Parameter> param
 		{
 			break;
 		}
+		std::string https = "https://";
+		std::string http = "http://";
 
-		auto s = fmt::format("{0}{1}", m_url, path.c_str());
-		
+
+		std::string s = "";
+		if (isHttpS)
+		{
+			s = fmt::format("{0}{1}{2}", https, m_url, path.c_str());
+		}
+		else {
+			s = fmt::format("{0}{1}{2}", http, m_url, path.c_str());
+		}
+		//auto s = fmt::format("{0}{1}", m_url, path.c_str());
+		Logger::getSingletonPtr()->DEBUG("当前访问的url:  " + s);
 		if (parame.empty())
 		{
 			m_session.SetHeader(hander);
-			m_session.SetOption(cpr::Ssl(cpr::ssl::TLSv1_1{}, cpr::ssl::TLSv1_2{}, cpr::ssl::TLSv1_3{}));
+			if (isHttpS)
+			{
+				m_session.SetOption(cpr::Ssl(cpr::ssl::TLSv1_1{}, cpr::ssl::TLSv1_2{}, cpr::ssl::TLSv1_3{}));
+			}
 			m_session.SetTimeout(cpr::Timeout{TIMEOUTE});
 			m_session.SetUrl(s.c_str());
 			//session->SetDebugCallback()
@@ -284,7 +298,10 @@ std::string CNetWork::GetUrl(std::string path, std::vector<cpr::Parameter> param
 		}
 		else {
 			m_session.SetHeader(hander);
-			m_session.SetOption(cpr::Ssl(cpr::ssl::TLSv1_1{}, cpr::ssl::TLSv1_2{}, cpr::ssl::TLSv1_3{}));
+			if (isHttpS)
+			{
+				m_session.SetOption(cpr::Ssl(cpr::ssl::TLSv1_1{}, cpr::ssl::TLSv1_2{}, cpr::ssl::TLSv1_3{}));
+			}
 			m_session.SetTimeout(cpr::Timeout{ TIMEOUTE });
 			m_session.SetUrl(s.c_str());
 			m_session.SetParameters(ps);
@@ -326,8 +343,20 @@ std::string CNetWork::GetUrl(std::string path, std::vector<cpr::Parameter> param
 
 std::string CNetWork::PostUrl(std::string path, std::vector<cpr::Pair> parame, std::string token)
 {
-	auto s = fmt::format("{0}{1}", m_url, path.c_str());
+	/*auto s = fmt::format("{0}{1}", m_url, path.c_str());*/
+	std::string https = "https://";
+	std::string http = "http://";
 
+
+	std::string s = "";
+	if (isHttpS)
+	{
+		s = fmt::format("{0}{1}{2}", https, m_url, path.c_str());
+	}
+	else {
+		s = fmt::format("{0}{1}{2}", http, m_url, path.c_str());
+	}
+	Logger::getSingletonPtr()->DEBUG("当前访问的url:  " + s);
 	cpr::Header hander;
 
 	if (!token.empty())
@@ -351,7 +380,7 @@ std::string CNetWork::PostUrl(std::string path, std::vector<cpr::Pair> parame, s
  */
 
 
-	int count = 3;
+	int count = 1;
 	do
 	{
 		if (count <= 0)
@@ -363,14 +392,21 @@ std::string CNetWork::PostUrl(std::string path, std::vector<cpr::Pair> parame, s
 		{
 			//r = cpr::Get(cpr::Url{ s.c_str() }, hander, cpr::VerifySsl{false}, cpr::Timeout{ 60 * 1000 });
 			m_session.SetHeader(hander);
-			m_session.SetOption(cpr::Ssl(cpr::ssl::TLSv1_1{}, cpr::ssl::TLSv1_2{}, cpr::ssl::TLSv1_3{}));
+			if (isHttpS)
+			{
+				m_session.SetOption(cpr::Ssl(cpr::ssl::TLSv1_1{}, cpr::ssl::TLSv1_2{}, cpr::ssl::TLSv1_3{}));
+			}
 			m_session.SetTimeout(cpr::Timeout{ TIMEOUTE });
 			m_session.SetUrl(s.c_str());
 			r = m_session.Get();
 		}
 		else {
 			m_session.SetHeader(hander);
-			m_session.SetOption(cpr::Ssl(cpr::ssl::TLSv1_1{}, cpr::ssl::TLSv1_2{}, cpr::ssl::TLSv1_3{}));
+			if (isHttpS)
+			{
+				m_session.SetOption(cpr::Ssl(cpr::ssl::TLSv1_1{}, cpr::ssl::TLSv1_2{}, cpr::ssl::TLSv1_3{}));
+			}
+
 			m_session.SetTimeout(cpr::Timeout{ TIMEOUTE });
 			m_session.SetUrl(s.c_str());
 			m_session.SetPayload(cpr::Payload{ parame.begin(),parame.end() });
@@ -431,10 +467,26 @@ void CNetWork::AutoToggleNode() {
 	//切换节点,
 	for each (ServerListUrl  itme in m_url_list)
 	{
+		isHttpS = itme.isHttps;
+		Logger::getSingletonPtr()->DEBUG("当前访问的域名" + itme.url);
+		std::string https = "https://";
+		std::string http = "http://";
+		std::string s = "";
+		if (itme.isHttps)
+		{
+			s = fmt::format("{0}{1}{2}",https, itme.url, "/api/client/v3/version");
+		}
+		else {
+			s = fmt::format("{0}{1}{2}", http, itme.url, "/api/client/v3/version");
+		}
+
+		Logger::getSingletonPtr()->DEBUG("当前访问的url:  " + s);
 		cpr::Session m_session;
-		auto s = fmt::format("{0}{1}", itme.url, "/api/client/v3/version");
 		m_session.SetHeader(hander);
-		m_session.SetOption(cpr::Ssl(cpr::ssl::TLSv1_1{},cpr::ssl::TLSv1_2{}, cpr::ssl::TLSv1_3{}));
+		if (itme.isHttps)
+		{
+			m_session.SetOption(cpr::Ssl(cpr::ssl::TLSv1_1{}, cpr::ssl::TLSv1_2{}, cpr::ssl::TLSv1_3{}));
+		}
 		m_session.SetTimeout(cpr::Timeout{ TIMEOUTE });
 		m_session.SetUrl(s.c_str());
 		m_session.SetParameters(ps);
@@ -447,7 +499,7 @@ void CNetWork::AutoToggleNode() {
 			if (m_url != itme.url)
 			{
 				m_url = itme.url;
-				Logger::getSingletonPtr()->INFO(S_CW2A(itme.name).GetBuffer(0));
+				Logger::getSingletonPtr()->DEBUG(S_CW2A(itme.name).GetBuffer(0));
 			}
 			break;
 		}
@@ -526,24 +578,32 @@ std::string CNetWork::UpdateError(cpr::ErrorCode code, std::string msg)
 {
 	if (code == cpr::ErrorCode::HOST_RESOLUTION_FAILURE)
 	{
-		m_error_msg = "解析域名失败";
+		m_error_msg = "host resolution";
+		//m_error_msg = S_CA2A("解析域名失败", CP_UTF8).GetBuffer(0);
 	}
 	else if (code == cpr::ErrorCode::OPERATION_TIMEDOUT)
 	{
-		m_error_msg = "请求数据超时,请重新请求";
+		m_error_msg = "url timeout";
+		//m_error_msg = S_CA2A("请求数据超时,请重新请求", CP_UTF8).GetBuffer(0);
 	}
 	else if (code == cpr::ErrorCode::CONNECTION_FAILURE) {
-		m_error_msg = "发送服务器失败";
+		m_error_msg = "connection url falure";
+		//m_error_msg = S_CA2A("发送服务器失败", CP_UTF8).GetBuffer(0);
 	}
 	else if (code == cpr::ErrorCode::INVALID_URL_FORMAT) {
-		m_error_msg = "未知URL错误";
+		m_error_msg = "url host invalid";
+		//m_error_msg = S_CA2A("未知URL错误", CP_UTF8).GetBuffer(0);
 
 	} else if (code == cpr::ErrorCode::SSL_CONNECT_ERROR)
 	{
-		m_error_msg = "SSL连接错误";
+		isHttpsError = true;
+		Logger::getSingletonPtr()->DEBUG("ssl error :  " + msg);
+		m_error_msg = "ssl error ";
+		//m_error_msg = S_CA2A("SSL连接错误", CP_UTF8).GetBuffer(0);
 	}
 	else {
 		m_error_msg = msg;
+		//m_error_msg = S_CA2A(msg.c_str(), CP_UTF8).GetBuffer(0);;
 	}
 
 	return m_error_msg;

+ 3 - 2
SProxy/CNetWork.h

@@ -4,7 +4,7 @@
 #include <cpr/cpr.h>
 #include "comm.h"
 
-#define TIMEOUTE 10 * 1000
+#define TIMEOUTE 15 * 1000
 
 class CNetWork : public IBaseCurl
 {
@@ -60,7 +60,8 @@ private:
 	std::unordered_map<std::string, std::string> keymap;
 	cpr::Session m_session;
 	std::string m_error_msg;
-
+	bool isHttpsError;
+	bool isHttpS;
 	HTTPRET m_http_ret;
 
 	int m_http_status;

+ 24 - 1
SProxy/Logger.cpp

@@ -1,6 +1,6 @@
 #include "stdafx.h"
 #include "Logger.h"
- 
+
 Logger* SSingleton<Logger>::ms_Singleton = NULL;
 
 Logger::Logger() {
@@ -10,6 +10,19 @@ Logger::Logger() {
 	cout << "[SProxy] " << __FILE__ << " " << currTime() << " : " << "=== Start logging ===" << endl;
 }
 
+void log_debug_message(const char* format, ...) {
+	char logMessage[256];
+	va_list args;
+	va_start(args, format);
+	vsnprintf(logMessage, sizeof(logMessage), format, args);
+	va_end(args);
+
+	HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE);
+	SetConsoleTextAttribute(console, FOREGROUND_GREEN); // 设置文本颜色为绿色
+	OutputDebugStringA(logMessage);
+	SetConsoleTextAttribute(console, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE); // 恢复文本颜色为默认值
+}
+
 void Logger::Init(log_target target, log_level level, string path)
 {
 	this->target = target;
@@ -48,11 +61,21 @@ void Logger::output(string text, log_level act_level) {
 	}
 	if (this->target != terminal)
 		outfile << output_content;
+
+
+#ifdef _DEBUG
+	log_debug_message(output_content.c_str());
+#endif // _DEBUG
+	
 }
 
 
 void Logger::DEBUG(string text) {
+#ifdef _DEBUG
 	this->output(text, debug);
+#endif // _DEBUG
+
+	
 }
 
 void Logger::INFO(string text) {

+ 1 - 0
SProxy/Logger.h

@@ -8,6 +8,7 @@
 # include <time.h>
 # include <stdio.h>
 # include <stdlib.h>
+#include <windows.h>
 
 using std::cout;
 using std::string;

BIN
SProxy/LoginDlg.cpp


BIN
SProxy/SProxy.cpp


+ 2 - 1
SProxy/comm.h

@@ -21,11 +21,12 @@ constexpr auto CONNECT_NODE_MSG = L"
 constexpr auto SUEECS_NODE_MSG = L"»ñÈ¡½Úµã³É¹¦.."; 
 
 
-constexpr auto VERSION = L"1.2.4";
+constexpr auto VERSION = L"1.2.7";
 
 
 struct ServerListUrl {
 	int        id;
 	SStringW  name;
 	std::string url;
+	bool	  isHttps;
 };

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

@@ -26,7 +26,7 @@ appWnd="1"
 
                 <img skin="skin_password"/>
 
-                <edit name="edit_password" size="247,35" extend="20,0,0,0" colorText="#ffffff"  cueText="密码"/>
+                <edit name="edit_password" size="247,35" extend="20,0,0,0" colorText="#ffffff" password="1" cueText="密码"/>
 
             </window>
 
@@ -47,7 +47,7 @@ appWnd="1"
 
             <text colorText="#ffffff88" font="adding:5,bold:1" extend="10,25,0,0" >登录服务器选择</text>
 
-            <tabtypecontrol name="nodeclass" size="400,45" gravity="center" extend="47,25,44,0"/>
+            <!-- <tabtypecontrol name="nodeclass" size="400,45" gravity="center" extend="47,25,44,0"/> -->
                            <!-- <window size="-2,-1" layout="hbox"   gravity="center"  extend="47,19,44,0">
                                   <radio2 size="0,-1" name="url_txt" colorTextPush="#D8D8D8" colorText="#D8D8D844" font="adding:12,bold:1" checked="1" skin="skin_tyteselection" align="center" weight="1" extend="0,0,0,0" >首选</radio2>
                                   <radio2 size="0,-1" name="url_txt1" colorTextPush="#D8D8D8" colorText="#D8D8D844" font="adding:12,bold:1" checked="1" skin="skin_tyteselection" align="center" weight="1" extend="0,0,0,0" >备用1</radio2>