alroyso před 1 rokem
rodič
revize
a09e13be30

+ 49 - 1
SProxy/CLashConfig.cpp

@@ -66,7 +66,14 @@ BOOL CLashConfig::MakeClash()
 			proxies.push_back(buildtrojan(&node));
 		}
 		else if (node.type == "v2ray") {
-			proxies.push_back(buildv2ray(&node));
+			if (node.vless == 1)
+			{
+				proxies.push_back(buildVless(&node));
+			}
+			else {
+				proxies.push_back(buildv2ray(&node));
+			}
+			
 		}
 	}
 
@@ -298,6 +305,47 @@ YAML::Node CLashConfig::buildtrojan(CServerListMode* node)
     return YAML::Node();
 }
 
+/*
+  type: vless
+  server: server
+  port: 443
+  uuid: uuid
+  network: tcp
+  tls: true
+  udp: true
+  flow: xtls-rprx-vision
+  servername: speed.cloudflare.com # REALITY servername
+  reality-opts:
+	public-key: xxx
+	short-id: xxx # optional
+  client-fingerprint: chrome # cannot be empty
+*/
+YAML::Node CLashConfig::buildVless(CServerListMode* node)
+{
+	YAML::Node t_map;
+	if (!node)
+	{
+		return t_map;
+	}
+
+	std::vector<YAML::Node> p;
+	t_map["name"] = node->name;
+	t_map["type"] = std::string("vless");
+	t_map["server"] = node->host;
+	t_map["port"] = std::to_string(node->port);
+	t_map["uuid"] = node->uuid;
+	//t_map["cipher"] = node->method;
+	t_map["alterId"] = node->v2_alter_id;
+	t_map["udp"] = node->udp;
+	t_map["tls"] = true;
+	t_map["flow"] = "xtls-rprx-vision";
+	t_map["servername"] = node->v2_sni;
+	t_map["reality-opts"]["public-key"] = node->public_key;
+	t_map["client-fingerprint"] = "chrome";
+	return t_map;
+}
+
+
 YAML::Node CLashConfig::buildv2ray(CServerListMode* node)
 {
 	YAML::Node t_map;

+ 1 - 0
SProxy/CLashConfig.h

@@ -34,6 +34,7 @@ public:
 private:
 	YAML::Node buildShadowsocks(CServerListMode* node);
 	YAML::Node buildtrojan(CServerListMode* node);
+	YAML::Node buildVless(CServerListMode* node);
 	YAML::Node buildv2ray(CServerListMode* node);
 	std::vector<YAML::Node> buildv2rayHost(CServerListMode* node);
 

+ 1 - 0
SProxy/CNetWork.cpp

@@ -59,6 +59,7 @@ HTTPRET CNetWork::Auth(std::string& data){
 }
 HTTPRET CNetWork::GetServerNode(std::string& data) {
 	std::vector<cpr::Parameter> p;
+	p.push_back({ "vless","1" });
 	std::string text = GetUrl("/api/client/v4/nodes",p,CApp::getSingletonPtr()->GetUserinfo()->access_token);
 	if (text.empty()) {
 

+ 11 - 0
SProxy/CServerList.cpp

@@ -52,6 +52,16 @@ bool CServerList::Init(std::string data)
 					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]["vless"].is_null())
+					{
+						m_serverlist_mode.vless = data[i]["vless"].get<int>();
+					}
+					
+					if (!data[i]["vless_pulkey"].is_null())
+					{
+						m_serverlist_mode.public_key = data[i]["vless_pulkey"].get<std::string>();
+					}
+					
 				}
 				else if (m_serverlist_mode.type == "trojan") {
 					m_serverlist_mode.passwd = data[i]["passwd"].get<std::string>();
@@ -62,6 +72,7 @@ bool CServerList::Init(std::string data)
 
 				m_serverlist_mode.country_code = data[i]["country_code"].get<std::string>();
 
+			
 				vectlistmode.push_back(m_serverlist_mode);
 			}
 

+ 3 - 0
SProxy/CServerListMode.h

@@ -39,5 +39,8 @@ public:
 
 	std::string sni;
 
+	int vless;
+	std::string public_key;
+
 	std::string country_code;
 };

+ 1 - 1
SProxy/comm.h

@@ -21,7 +21,7 @@ constexpr auto CONNECT_NODE_MSG = L"
 constexpr auto SUEECS_NODE_MSG = L"»ñÈ¡½Úµã³É¹¦.."; 
 
 
-constexpr auto VERSION = L"1.2.9";
+constexpr auto VERSION = L"1.3.0";
 
 
 struct ServerListUrl {

binární
打包/SVProxy/x64/Assets/syscode.exe