alroyso 2 ani în urmă
părinte
comite
edd9206156

+ 76 - 53
SProxy/CLashConfig.cpp

@@ -57,21 +57,24 @@ BOOL CLashConfig::MakeClash()
 
 	//CList_node::getSingletonPtr()->listnode;
 	YAML::Node proxies;
-	for each (auto node in CApp::getSingletonPtr()->GetServerList()->vectlistmode)
-	{
-		if (node.type == "shadowsocks") {
-			proxies.push_back(buildShadowsocks(&node));
-		}
-		else if (node.type == "trojan") {
-			proxies.push_back(buildtrojan(&node));
-		}
-		else if (node.type == "v2ray") {
-			proxies.push_back(buildv2ray(&node));
-		}
-	}
+	//for each (auto node in CApp::getSingletonPtr()->GetServerList()->vectlistmode)
+	//{
+	//	if (node.type == "shadowsocks") {
+	//		proxies.push_back(buildShadowsocks(&node));
+	//	}
+	//	else if (node.type == "trojan") {
+	//		proxies.push_back(buildtrojan(&node));
+	//	}
+	//	else if (node.type == "v2ray") {
+	//		proxies.push_back(buildv2ray(&node));
+	//	}
+	//}
 
 
 	root["proxies"] = proxies;
+
+	root["proxy-providers"] = buildProxyproviders();
+
 	root["proxy-groups"] = buildProxyGroups();
 
 	YAML::Node reject;
@@ -289,8 +292,8 @@ YAML::Node CLashConfig::buildtrojan(CServerListMode* node)
 	t_map["server"] = node->host;
 	t_map["port"] = std::to_string(node->port);
 	t_map["password"] = node->passwd;
-	if (!node->sni.empty()) {
-		t_map["sni"] = node->sni;
+	if (!node->serverName.empty()) {
+		t_map["serverName"] = node->serverName;
 	}
 	t_map["udp"] = true;
 
@@ -311,41 +314,41 @@ YAML::Node CLashConfig::buildv2ray(CServerListMode* node)
 	t_map["type"] = std::string("vmess");
 	t_map["server"] = node->host;
 	t_map["port"] = std::to_string(node->port);
-	t_map["uuid"] = node->uuid;
+	//t_map["uuid"] = node->uuid;
 	t_map["cipher"] = node->method;
-	t_map["alterId"] = node->v2_alter_id;
+	//t_map["alterId"] = node->v2_alter_id;
 	t_map["udp"] = node->udp;
 
-	if (node->v2_tls == "tls") {
-		t_map["tls"] = true;
-	}
-
-	if (node->v2_net == "tcp") {
-		t_map["skip-cert-verify"] = false;
-		t_map["network"] = node->v2_net;
-		if (!node->v2_sni.empty()) {
-			t_map["servername"] = node->v2_sni;
-		}
-		 
-	}
-	else if (node->v2_net == "ws") {
-		YAML::Node t_host;
-		t_map["skip-cert-verify"] = false;
-		/*
-			   max-early-data: 2048
-				early-data-header-name: Sec-WebSocket-Protocol
-		 *
-		 */
-		t_host["host"] = node->v2_host;
-		t_map["network"] = node->v2_net;
-		t_map["ws-opts"]["headers"] = t_host;
-		t_map["ws-opts"]["path"] = node->v2_path;
-		t_map["ws-opts"]["max-early-data"] = 2048;
-		t_map["ws-opts"]["early-data-header-name"] = "Sec-WebSocket-Protocol";
-
-		/*t_map["ws-path"] = node->v2_path;
-		t_map["ws-headers"] = t_host;*/
-	}
+	//if (node->v2_tls == "tls") {
+	//	t_map["tls"] = true;
+	//}
+
+	//if (node->v2_net == "tcp") {
+	//	t_map["skip-cert-verify"] = false;
+	//	t_map["network"] = node->v2_net;
+	//	if (!node->v2_sni.empty()) {
+	//		t_map["servername"] = node->v2_sni;
+	//	}
+	//	 
+	//}
+	//else if (node->v2_net == "ws") {
+	//	YAML::Node t_host;
+	//	t_map["skip-cert-verify"] = false;
+	//	/*
+	//		   max-early-data: 2048
+	//			early-data-header-name: Sec-WebSocket-Protocol
+	//	 *
+	//	 */
+	//	t_host["host"] = node->v2_host;
+	//	t_map["network"] = node->v2_net;
+	//	t_map["ws-opts"]["headers"] = t_host;
+	//	t_map["ws-opts"]["path"] = node->v2_path;
+	//	t_map["ws-opts"]["max-early-data"] = 2048;
+	//	t_map["ws-opts"]["early-data-header-name"] = "Sec-WebSocket-Protocol";
+
+	//	/*t_map["ws-path"] = node->v2_path;
+	//	t_map["ws-headers"] = t_host;*/
+	//}
 	return t_map;
 }
 
@@ -354,7 +357,7 @@ std::vector<YAML::Node> CLashConfig::buildv2rayHost(CServerListMode* node)
 	std::vector<YAML::Node> p;
 	if (node) {
 		YAML::Node t_map;
-		t_map["host"] = node->v2_host;
+		//t_map["host"] = node->v2_host;
 		p.push_back(t_map);
 	}
 	return p;
@@ -403,20 +406,40 @@ std::vector<YAML::Node> CLashConfig::buildProxyGroups()
 {
 	std::vector<YAML::Node> dns_arr;
 	std::vector<std::string> proxy;
-	YAML::Node proxies;
-	for each (auto node in CApp::getSingletonPtr()->GetServerList()->vectlistmode)
-	{
-		proxy.push_back(node.name.c_str());
-	}
+	//YAML::Node proxies;
+	//for each (auto node in CApp::getSingletonPtr()->GetServerList()->vectlistmode)
+	//{
+	//	proxy.push_back(node.name.c_str());
+	//}
+	proxy.push_back("foo");
 	YAML::Node li;
 	li["name"] = "Proxy";
 	li["type"] = "select";
-	li["proxies"] = proxy;
+	li["use"] = proxy;
 	dns_arr.push_back(li);
 
 	return dns_arr;
 }
 
+YAML::Node CLashConfig::buildProxyproviders()
+{
+	YAML::Node p;
+	YAML::Node healthCheck;
+	p["foo"]["type"] = "http";
+	p["foo"]["path"] = "./profiles/proxies/foo.yaml";
+	p["foo"]["url"] = CApp::getSingletonPtr()->GetUserinfo()->clash_config;
+	p["foo"]["interval"] = "3600";
+
+	healthCheck["enable"]	= true;
+	healthCheck["url"]		= "http://www.gstatic.com/generate_204";
+	healthCheck["interval"] = "3600";
+
+	p["foo"]["health-check"] = healthCheck;
+	 
+
+	return p;
+}
+
 std::vector<YAML::Node> CLashConfig::buildRules()
 {
 	std::vector<YAML::Node> p;

+ 1 - 0
SProxy/CLashConfig.h

@@ -40,6 +40,7 @@ private:
 	YAML::Node builTunConfig();
 	YAML::Node buildDnsConfig();
 	std::vector<YAML::Node> buildProxyGroups();
+	YAML::Node              buildProxyproviders();
 	std::vector<YAML::Node> buildRules();
 	std::vector<YAML::Node> buildruleproviders();
 private:

+ 36 - 6
SProxy/CManageNetWork.cpp

@@ -174,12 +174,16 @@ void CManageNetWork::ThreadFun_login(LPARAM lParam)
 	if (!data.empty())
 	{
 		if (!CApp::getSingletonPtr()->GetSysconfig()->Inti(data)) {
-
+			EventLogin* pEvt = new EventLogin(nullptr);
+			pEvt->status = code;
+			pEvt->msg = CApp::getSingletonPtr()->GetSysconfig()->GetLastErrorW();
+			SNotifyCenter::getSingleton().FireEventAsync(pEvt);
+			pEvt->Release();
+			return;
 		}
-		
 	}
 
-	data.empty();
+	data.clear();
 
 	httpstatus = m_base_curl->PostLogin(this->m_username, this->m_password, data);
 	if (httpstatus == HTTPRET::http_user_expired_at)
@@ -206,6 +210,32 @@ void CManageNetWork::ThreadFun_login(LPARAM lParam)
 		}
 	}
 
+	data.clear();
+	if (!msg.IsEmpty())
+	{
+		DataToFile();
+		EventLogin* pEvt = new EventLogin(nullptr);
+		pEvt->status = code;
+		pEvt->msg = msg;
+		SNotifyCenter::getSingleton().FireEventAsync(pEvt);
+		pEvt->Release();
+		return;
+	}
+	httpstatus = m_base_curl->GetMySub(data);
+	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();
 
@@ -219,19 +249,19 @@ void CManageNetWork::ThreadFun_login(LPARAM lParam)
 void CManageNetWork::ThreadFun_Dowlon_Config(LPARAM lParam)
 {
 	IBaseCurl* lpAsyncParam = reinterpret_cast<IBaseCurl*>(lParam);
-	/*int code = 200;
+	int code = 200;
 	SStringW msg = L"";
 	std::string data;
 	if (!m_base_curl->Download(CApp::getSingletonPtr()->GetUserinfo()->clash_config)) {
 		code = 0;
 		msg = L"ÏÂÔØÎļþʧ°Ü";
-		 
+
 	}
 	EventDoWNload* pEvt = new EventDoWNload(nullptr);
 	pEvt->status = code;
 	pEvt->msg = msg;
 	SNotifyCenter::getSingleton().FireEventAsync(pEvt);
-	pEvt->Release();*/
+	pEvt->Release();
 }
 
 

+ 24 - 6
SProxy/CNetWork.cpp

@@ -19,6 +19,21 @@ int  CNetWork::GetHttpStatus() {
 	return m_http_status;
 }
 
+HTTPRET CNetWork::GetMySub(std::string& data)
+{
+	std::vector<cpr::Parameter> p;
+	p.push_back({ "token", CApp::getSingletonPtr()->GetLoginInfo()->token.c_str() });
+	p.push_back({ "auth_data", CApp::getSingletonPtr()->GetLoginInfo()->auth_data.c_str() });
+	std::string text = GetUrl("/api/v1/manager/getSubscribe", p, "");
+	if (text.empty()) {
+
+		return HTTPRET::http_f;
+	}
+	data = text.c_str();
+	return HTTPRET::http_yes;
+	return HTTPRET();
+}
+
 void CNetWork::SetUrlArray(std::vector<ServerListUrl> data) {
 	m_url_list = data;
 }
@@ -59,7 +74,9 @@ HTTPRET CNetWork::Auth(std::string& data){
 }
 HTTPRET CNetWork::GetServerNode(std::string& data) {
 	std::vector<cpr::Parameter> p;
-	std::string text = GetUrl("/api/client/v4/nodes",p,CApp::getSingletonPtr()->GetLoginInfo()->token);
+	p.push_back({ "token", CApp::getSingletonPtr()->GetLoginInfo()->token.c_str() });
+	p.push_back({ "auth_data", CApp::getSingletonPtr()->GetLoginInfo()->auth_data.c_str() });
+	std::string text = GetUrl("/api/v1/manager/server/fetch",p,"");
 	if (text.empty()) {
 
 		return HTTPRET::http_f;
@@ -131,7 +148,7 @@ HTTPRET CNetWork::PostLogin(LPCSTR username, LPCSTR password, std::string& data)
 	std::vector<cpr::Pair> p;
 	p.push_back({ "email",username });
 	p.push_back({ "password",password });
-	std::string text = PostUrl("/manage/auth/login/", p);
+	std::string text = PostUrl("/api/v1/manage/auth/login/", p);
 	if (text.empty()) {
 		if (m_http_status == 445)
 		{
@@ -499,8 +516,9 @@ bool  write_data(std::string /*data*/, intptr_t /*userdata*/)
 
 bool CNetWork::Download(std::string path)
 {
-	return false;
-	/*std::string configdir = std::filesystem::current_path().string() + "\\" + CLASHCONFIGDIR;
+	//return false;
+ 
+	std::string configdir = std::filesystem::current_path().string() + "\\" + S_CW2A(CLASH_ASSETS_DIR_NAME).GetBuffer(0);
 
 	std::filesystem::path p(configdir);
 
@@ -508,14 +526,14 @@ bool CNetWork::Download(std::string path)
 		std::filesystem::create_directory(p);
 	}
 
-	std::string configname = configdir + "\\" CLASHCONFIGNAME;
+	std::string configname = configdir + "\\" + CLASHCONFIGDIR;
 
 	std::ofstream ofs(configname);
 	cpr::Url url{ path };
 	cpr::Session session;
 	session.SetUrl(url);
 	cpr::Response response = session.Download(ofs);
-	return response.status_code == 200;*/
+	return response.status_code == 200;
 }
 
 

+ 3 - 0
SProxy/CNetWork.h

@@ -35,6 +35,9 @@ public:
 	HTTPRET Refresh(std::string& data);
 
 	int  GetHttpStatus();
+
+	HTTPRET GetMySub(std::string& data);
+
 	HTTPRET Version(std::string& data);
 private:
 	std::string GetUrl(std::string path, std::vector<cpr::Parameter> parame, std::string token = "");

+ 2 - 2
SProxy/CNodeAdapter.hpp

@@ -1,10 +1,10 @@
 #pragma once
-#include "../__INCLUDE/LvSTileViewAdapterHandle.hpp"
+#include "../__INCLUDE/LvAdapterHandle.hpp"
 
 class CNodeAdapter : public LvAdapterHandle
 {
 public:
-	CNodeAdapter(STileView* pOwner) : LvAdapterHandle(pOwner)
+	CNodeAdapter(SListView* pOwner) : LvAdapterHandle(pOwner)
 		, m_funBtnDel(&CNodeAdapter::OnEventDelBtn, this)
 		, m_callBackItemClick(nullptr)
 		, m_callBackBtnClick(nullptr)

+ 43 - 33
SProxy/CServerList.cpp

@@ -20,10 +20,9 @@ bool CServerList::Init(std::string data)
 	try
 	{
 		vectlistmode.clear();
-
 		nlohmann::json j = nlohmann::json::parse(data.begin(), data.end());
 
-		if (j["ret"].get<int>() == 1)
+		if (j["code"].get<int>() == 0)
 		{
 			
 			auto data = j["data"];
@@ -32,36 +31,47 @@ bool CServerList::Init(std::string data)
 				CServerListMode m_serverlist_mode;
 				m_serverlist_mode.type = data[i]["type"].get<std::string>();
 				m_serverlist_mode.id = data[i]["id"].get<int>();
+			
 				m_serverlist_mode.name = data[i]["name"].get<std::string>();
 				m_serverlist_mode.host = data[i]["host"].get<std::string>();
-				m_serverlist_mode.group = data[i]["group"].get<std::string>();
-				m_serverlist_mode.online_users = data[i]["online_users"].get<int>();
+				m_serverlist_mode.port = data[i]["port"].get<int>();
 
 				if (m_serverlist_mode.type == "shadowsocks")
 				{
-					m_serverlist_mode.method = data[i]["method"].get<std::string>();
-					m_serverlist_mode.passwd = data[i]["passwd"].get<std::string>();
+					if (!data[i]["method"].is_null())
+					{
+						m_serverlist_mode.method = data[i]["method"].get<std::string>();
+					}
 				}
-				else if (m_serverlist_mode.type == "v2ray")
+			
+				if (m_serverlist_mode.type == "v2ray")
 				{
-					m_serverlist_mode.method = data[i]["method"].get<std::string>();
-					m_serverlist_mode.uuid = data[i]["uuid"].get<std::string>();
-					m_serverlist_mode.v2_net = data[i]["v2_net"].get<std::string>();
-					m_serverlist_mode.v2_type = data[i]["v2_type"].get<std::string>();
-					m_serverlist_mode.v2_host = data[i]["v2_host"].get<std::string>();
-					m_serverlist_mode.v2_path = data[i]["v2_path"].get<std::string>();
-					m_serverlist_mode.v2_tls = data[i]["v2_tls"].get<std::string>();
-					m_serverlist_mode.v2_sni = data[i]["v2_sni"].get<std::string>();
+					if (!data[i]["tlsSettings"].is_null())
+					{
+						m_serverlist_mode.serverName = data[i]["tlsSettings"]["serverName"].get<std::string>();
+						m_serverlist_mode.allowInsecure = data[i]["tlsSettings"]["allowInsecure"].get<std::string>();
+					}
+
+					if (!data[i]["tls"].is_null())
+					{
+						m_serverlist_mode.tls = data[i]["tls"].get<int>();
+					}
+					
 				}
-				else if (m_serverlist_mode.type == "trojan") {
-					m_serverlist_mode.passwd = data[i]["passwd"].get<std::string>();
-					m_serverlist_mode.sni = data[i]["sni"].get<std::string>();
+				
+				if (m_serverlist_mode.type == "trojan") {
+					if (!data[i]["server_name"].is_null())
+					{
+						m_serverlist_mode.serverName = data[i]["server_name"].get<std::string>();
+						
+					}
+
+					if (!data[i]["allow_insecure"].is_null())
+					{
+						m_serverlist_mode.allowInsecure = std::to_string(data[i]["allow_insecure"].get<int>());
+					}
 				}
-				m_serverlist_mode.udp = data[i]["udp"].get<int>();
-				m_serverlist_mode.port = data[i]["port"].get<int>();
-
-				m_serverlist_mode.country_code = data[i]["country_code"].get<std::string>();
-
+				
 				vectlistmode.push_back(m_serverlist_mode);
 			}
 
@@ -69,15 +79,15 @@ bool CServerList::Init(std::string data)
 			return true;
 
 		}
-		if (j["ret"].get<int>() == 445 || j["ret"].get<int>() == 446)
+		if (j["code"].get<int>() == 445 || j["code"].get<int>() == 446)
 		{
 		 
-			this->m_error_msg = S_CA2W(j["msg"].get<std::string>().c_str(), CP_UTF8).GetBuffer(0);
+			this->m_error_msg = S_CA2W(j["message"].get<std::string>().c_str(), CP_UTF8).GetBuffer(0);
 			return false;
 		}
 		else
 		{
-			this->m_error_msg = S_CA2W(j["msg"].get<std::string>().c_str(), CP_UTF8).GetBuffer(0);
+			this->m_error_msg = S_CA2W(j["message"].get<std::string>().c_str(), CP_UTF8).GetBuffer(0);
 			return false;
 		}
 
@@ -90,15 +100,15 @@ bool CServerList::Init(std::string data)
 	}
 }
 
-bool GreaterSort(CServerListMode a, CServerListMode b)
-{
-	return a.online_users < b.online_users;
-}
+//bool GreaterSort(CServerListMode a, CServerListMode b)
+//{
+//	return a.online_users < b.online_users;
+//}
 
 void CServerList::MinimumSelectNode()
 {
 
-	if (vectlistmode.empty())
+	/*if (vectlistmode.empty())
 	{
 		return;
 	}
@@ -113,7 +123,7 @@ void CServerList::MinimumSelectNode()
 			{
 				node_name = itme.name;
 				break;
-			} 
+			}
 		}
-	}
+	}*/
 }

+ 1 - 1
SProxy/CServerListMode.cpp

@@ -1,6 +1,6 @@
 #include "stdafx.h"
 #include "CServerListMode.h"
-CServerListMode::CServerListMode() : online_users(0), port(0), id(0), udp(0), v2_alter_id(0)
+CServerListMode::CServerListMode() : port(0), id(0), udp(0),tls(0)
 {
 }
 

+ 21 - 19
SProxy/CServerListMode.h

@@ -1,7 +1,7 @@
 #pragma once
 #include "CBaseMode.h"
 
-
+ 
 class CServerListMode 
 {
 public:
@@ -10,13 +10,11 @@ public:
 
 
 public:
-	int online_users;
 	int id;
 
 	/*ss*/
 	std::string name;
 	std::string host;
-	std::string group;
 	std::string type;
 	std::string method;
 	std::string passwd;
@@ -24,20 +22,24 @@ public:
 
 	int udp;
 	int port;
-
-
-
-	/*v2ray*/
-	std::string uuid;
-	int v2_alter_id;
-	std::string v2_net;
-	std::string v2_type;
-	std::string v2_host;
-	std::string v2_path;
-	std::string v2_tls;
-	std::string v2_sni;
-
-	std::string sni;
-
-	std::string country_code;
+	std::string network;
+	
+	std::string serverName;
+	std::string allowInsecure;
+
+	std::string tags;
+	int tls;
+	///*v2ray*/
+	//std::string uuid;
+	//int v2_alter_id;
+	//std::string v2_net;
+	//std::string v2_type;
+	//std::string v2_host;
+	//std::string v2_path;
+	//std::string v2_tls;
+	//std::string v2_sni;
+
+	//std::string sni;
+
+	//std::string country_code;
 };

+ 10 - 0
SProxy/CUserInfo.cpp

@@ -24,6 +24,16 @@ bool CUserInfo::Init(std::string data)
 
 		if (j["code"].get<int>() == 0)
 		{
+			this->username = j["data"]["email"].get<std::string>();
+			this->expiretime = j["data"]["expiretime"].get<std::string>();
+			this->unusedTraffic = j["data"]["unusedTraffic"].get<std::string>();
+			this->uuid = j["data"]["uuid"].get<std::string>();
+			this->clash_config = j["data"]["subscribe_url"].get<std::string>();
+			this->enable = j["data"]["banned"].get<int>();
+			auto plan = j["data"]["plan"];
+			
+			this->planName = plan["name"].get<std::string>();
+
 			//this->affurl = j["data"]["affurl"].get<std::string>();
 			//this->swoftdownload = j["data"]["swoftdownload"].get<std::string>();
 			//this->clash_config = j["data"]["clash_config"].get<std::string>();

+ 4 - 11
SProxy/CUserInfo.h

@@ -19,18 +19,11 @@ public:
 	//user
 	std::string username;	//邮箱名
 	std::string expiretime; //到期时间
-	//std::string acctoken;
-	//std::string password;
 	std::string unusedTraffic; //用户流量
-	//std::string uuid;		   //uuid
-	//std::string level;		   //用户级别
-	//std::string access_token;
+	std::string uuid;		   //uuid
+	std::string planName;		   //套餐名称
+	std::string clash_config; //clash 配置
 	int enable;
-	//std::string affurl; //推荐地址
-	//std::string swoftdownload; //软件下载地址
-	//std::string clash_config; //配置地址
-	//std::string user_login_url; //用户URL
-	//int id;
-	//int port;
+ 
 };
 

+ 1 - 1
SProxy/ClashModel.h

@@ -125,7 +125,7 @@ struct ClashProviders
 {
 	std::map<ClashProvider::Name, ClashProvider> providers;
 
-	/*friend void from_json(const json& j, ClashProviders& value) {
+	/*friend void from_json(const nlohmann::json& j, ClashProviders& value) {
 		JSON_FROM(providers);
 	}*/
 };

+ 3 - 0
SProxy/IBaseCurl.h

@@ -51,6 +51,9 @@ public:
 
 	virtual HTTPRET Version(std::string& data) = 0;
 
+	// »ñÈ¡µÄÎÒ¶©ÔÄ
+	virtual HTTPRET GetMySub(std::string& data) = 0;
+
 	virtual SStringA  GetLastErrorA() = 0;
 	virtual SStringW  GetLastErrorW() = 0;
 	virtual int  GetHttpStatus() = 0;

BIN
SProxy/LoginDlg.cpp


BIN
SProxy/MainDlg.cpp


+ 3 - 1
SProxy/comm.h

@@ -2,6 +2,8 @@
 
 #define CLASHXW_APP_ID L"com.dsproxy.sproxy"
 
+
+
 constexpr auto DSPROXY_DATA_DIR = L"DSProxy";
 constexpr auto DSPROXY_DATA_DIR_PORTABLE = L"Data";
 constexpr auto DSPROXY_CONFIG_NAME = L"DSProxy.json";
@@ -11,7 +13,7 @@ constexpr auto CLASH_ASSETS_DIR_NAME = L"Assets";
 constexpr auto DSPROXY_CONFIG_INIT_ClASH_NAME = L"config_info.yaml";
 constexpr auto DSPROXY_CONFIG_ClASH_NAME = L"config.yaml";
 constexpr auto DSPROXY_CONFIG_TUN_ClASH_NAME = L"tun_config.yaml";
-
+constexpr auto CLASHCONFIGDIR = "wlt.yaml";
 
 constexpr auto DSPROXY_CONFIG_DIR_NAME = L"Config";
 constexpr auto DSPROXY_EXE_NAME = L"syscode.exe"; 

BIN
SProxy/res/resource.h


BIN
SProxy/res/soui_res.rc2


+ 1 - 1
SProxy/uires/xml/dlg_main.xml

@@ -1,4 +1,4 @@
-<SOUI name="loginwindow" title="@string/title" bigIcon="ICON_LOGO:32" smallIcon="ICON_LOGO:16"  width="414" height="736" margin="5,5,5,5"  resizable="0" wndType="appMain"
+<SOUI name="loginwindow" title="@string/title" bigIcon="ICON_LOGO:32" smallIcon="ICON_LOGO:16"  width="800" height="500" margin="5,5,5,5"  resizable="0" wndType="appMain"
 appWnd="1"
 >
   <root skin="skin_bguser" cache="1">

+ 47 - 39
SProxy/uires/xml/page_home.xml

@@ -2,55 +2,63 @@
     <include>
             <caption pos="0,0,-0,30" show="1" font="adding:0">
             <!-- <text pos="29,9">@string/title</text> -->
-              <imgbtn name="OnRefresh" skin="skin_imgress" pos="29,0" tip="刷新线路" animate="1"/>
+            <imgbtn name="OnRefresh" skin="skin_imgress" pos="29,0" tip="刷新线路" animate="1"/>
             <imgbtn name="btn_close" skin="_skin.sys.btn.close"    pos="-45,0" tip="close" animate="1"/>
             </caption>
         
             <window pos="5,[2,-5,-5">
-            <window size="-2,-2" layout="vbox" gravity="center" >
-                <window size="-2,-1" layout="vbox"   gravity="left"  extend="0,30,0,0">
-                    <text name="username" extend="35,0,0,0" colorText="#ffffff">用户名</text>
-                    <img skin="skin_line" extend="35,10,0,0"/>
-                    <text name="username_time" extend="35,10,0,0" colorText="#ffffff">到期时间</text>
-                    <img skin="skin_line" extend="35,10,0,0"/>
-                    <text name="username_liulaing" extend="35,10,0,0" colorText="#ffffff">用户流量</text>
-                    <img skin="skin_line" extend="35,10,0,0"/>
-                    <window size="-2,-1" layout="hbox"   gravity="center"  extend="0,10,0,0">
-                            <link name="username_jiaocheng" extend="35,0,0,0" colorText="#ffffff">使用教程</link>
-                            <link name="username_chongzhi" extend="35,0,0,0" colorText="#ffffff">充值续费</link>
-                            <link name="username_tuiguang" extend="35,0,0,0" colorText="#ffffff">推广地址</link>
-                            <link name="username_online_kf" extend="35,0,0,0" colorText="#ffffff">在线客服</link>
-                    </window>
-                     <img skin="skin_line" extend="35,10,0,0"/>
-                      <window size="-2,-1" layout="vbox"   gravity="left"  extend="0,10,0,0">
-                            <text name="httpproxy" extend="35,0,0,0" colorText="#ffffff">http代理地址</text>
-                            <text name="socksproxy" extend="35,5,0,0" colorText="#ffffff">socksProxy</text>
-                    </window>
-                    <img skin="skin_line" extend="35,10,0,0"/>
-                </window>
+                    <window size="-2,-2" layout="vbox" gravity="center">
+                        <window size="-2,-2" layout="hbox" gravity="center" >
+                            <window size="150,-2" layout="vbox"  colorBkgnd="#ffffff" extend="0,25,0,0" weight="0.3">
+                                    <text extend="15,20,0,0" colorText="#000000">用户名</text>
+                                    <text name="username" extend="15,10,0,0" colorText="#000000">admin333@qq.com</text>
+                                    <img skin="skin_line" size="150,1" extend="15,10,0,0"/>
+                                    <text extend="15,10,0,0" colorText="#000000">到期时间</text>
+                                    <text name="username_time" extend="15,10,0,0" colorText="#000000">2028-12-31 20:38:53</text>
+                                    <img skin="skin_line" size="150,1" extend="15,10,0,0"/>
+                                    <text extend="15,10,0,0" colorText="#000000">用户流量</text>
+                                    <text name="username_liulaing" extend="15,10,0,0" colorText="#000000">1.4k</text>
+                                    <img skin="skin_line" size="150,1" extend="15,10,0,0"/>
+                                    <text extend="15,10,0,0" colorText="#000000">http代理地址</text>
+                                    <text name="httpproxy" extend="15,10,0,0" colorText="#000000">127.0.0.1:1098</text>
+                                    <img skin="skin_line" size="150,1" extend="15,10,0,0"/>
+                                    <text extend="15,10,0,0" colorText="#000000">socksProxy</text>
+                                    <text name="socksproxy" extend="15,10,0,0" colorText="#000000">127.0.0.1:1098</text>
+                                    <img skin="skin_line" size="150,1" extend="15,10,0,0"/>
 
-                
-                <window size="-2,-1" layout="vbox"   gravity="center"  extend="0,20,0,0">
-                    <text name="text_touch" colorText="#ffffff88" font="adding:5,bold:1" extend="0,0,0,0" >消息</text>
-                    <imgbtn name="connect_touch"  skin="skin_btnswitchoff" extend="0,11,0,0" tip="Touch to connect" animate="1"/>
+                                    <link name="selectnode" extend="15,10,0,0" colorText="#000000">设置</link>
 
-                </window>
+                                    <link name="username_jiaocheng" extend="15,10,0,0" colorText="#000000">使用教程</link>
+                                    <link name="username_chongzhi" extend="15,10,0,0" colorText="#000000">充值续费</link>
+                                    <link name="username_tuiguang" extend="15,10,0,0" colorText="#000000">推广地址</link>
+                                    <link name="username_online_kf" extend="15,10,0,0" colorText="#000000">在线客服</link>
 
-                    <window name="selectnode" size="200,45" layout="hbox"  skin="skin_btnselection"  gravity="center" extend="0,10,0,0"> 
-                            <img skin="skin_default" extend="10,0,0,0"/>
-                            <text name="node_name" colorText="#D8D8D8"  extend="5,0,0,0" font="adding:5,bold:1">智能选线</text>
-                            <text name="node_delay" colorText="#D8D8D8" extend="15,0,0,0" ></text>
-                    </window>
+                                    <link name="app_version" colorText="#707070"  extend="15,10,0,0" >版本号:正在检测...</link> 
+                            </window>
+                            <window size="-1,-2" layout="vbox"  layout_gravity="right" colorBkgnd="#cccccc" extend="0,25,0,0" weight="2.5">
+                                    <text name="refresh_status" colorText="#000000" font="" extend="15,10,0,0">更新状态</text>
+                                    <text name="text_touch" colorText="#000000" font="" extend="15,10,0,0" >链接消息</text>
 
+                                 
 
-                <tabtypecontrol name="sysmode" size="400,45" gravity="center" extend="47,25,44,0"/>
-                <tabtypecontrol name="routemode" size="400,45" gravity="center" extend="47,5,44,0"/>
+                                    <window size="-2,0" weight="1.5" layout="hbox"  gravity="center" extend="15,10,0,0">
+                                            <listview name="nodeList" size="-2,-2" colorBkgnd="" wantTab="1" marginSize="0" sbSkin="skin.common.vscroll" >
+                                                 <template itemHeight="66" itemWidth="130" color="#D8D8D8" colorHover="#D8D8D844" colorSelected="#D8D8D844" trackMouseEvent="1">
+                                                    <window size="-2,-2" layout="vbox" colorBkgnd="" gravity="center" >
+                                                        <window size="-2,-2" layout="vbox" colorBkgnd="#ffffff" gravity="center" extend="10,10,10,10" >
+                                                            <text name="servername" pos="5,5" extend="0,10,0,0" colorText="#000000" > 0 ms</text>
+                                                            <text name="serverms" pos="5,5" extend="0,5,0,0" colorText="#000000" > 0 ms</text>
+                                                        </window>
+                                                    </window>
+                                                 </template>
+                                            </listview>
+                                    </window>
 
-                <window size="220,-1" layout="vbox" gravity="center" extend="0,15,0,0">     
-                    <link name="app_version" colorText="#707070"  extend="5,0,0,0" >版本号:正在检测...</link> 
-                </window>
-                
-            </window>
+                            </window>
+                        </window>
+                    </window>
 
             </window>
+
+            
     </include>

+ 6 - 5
SProxy/uires/xml/page_node.xml

@@ -12,10 +12,11 @@
     </caption>
     <window pos="5,[2,-5,-5">
          <window size="-2,-2" layout="vbox" gravity="center"  extend="0,0,0,0">
-
-               <window name="nodeclass" size="-2,25" layout="hbox"  skin=""  gravity="center" extend="0,0,0,0"> 
+              <tabtypecontrol name="sysmode" size="400,45" gravity="center" extend="0,0,0,0"/>
+              <tabtypecontrol name="routemode" size="400,45" gravity="center" extend="0,0,0,0"/>
+               <!-- <window name="nodeclass" size="-2,25" layout="hbox"  skin=""  gravity="center" extend="0,0,0,0"> 
                      <text name="refresh_status" colorText="#ffffff88" font="adding:5,bold:1" >更新状态</text>
-               </window>
+               </window> -->
 
                  <!-- <window name="nodeclass" size="-2,51" layout="hbox"  skin=""  gravity="center" extend="0,0,0,0"> 
                           <radio2 size="0,-1" name="" colorTextPush="#D8D8D8" colorText="#D8D8D844" font="adding:12,bold:1" checked="1" skin="skin_tyteselection" align="center" weight="1" extend="0,0,0,0" >US</radio2>
@@ -29,7 +30,7 @@
 
                
             
-                <window size="-2,0" weight="1.5" layout="hbox"  gravity="center" extend="0,10,0,0">
+                <!-- <window size="-2,0" weight="1.5" layout="hbox"  gravity="center" extend="0,10,0,0">
                     <tileview name="nodeList" size="-2,-2" colorBkgnd="" wantTab="1" marginSize="0" sbSkin="skin.common.vscroll" >
                       <template itemHeight="66" itemWidth="130" color="#D8D8D8" colorHover="#D8D8D844" colorSelected="#D8D8D844" trackMouseEvent="1">
                         <window size="-2,-2" layout="vbox" colorBkgnd="" gravity="center" >
@@ -45,7 +46,7 @@
 
          
 
-                </window>
+                </window> -->
 
                 <!-- <window size="-2,0" weight="0.2" layout="vbox"  gravity="center" extend="0,0,0,0">
                     <imgbtn name="start_Acc" skin="skin_btnborder"  colorText="#A79BB8" font="adding:12,bold:1"  extend="0,0,0,0">开始加速</imgbtn>