diff --git a/default.aproj b/default.aproj index 9662a19..6cdd4aa 100644 --- a/default.aproj +++ b/default.aproj @@ -1,13 +1,13 @@  - + - + - + diff --git a/forms/main/outbound.aardio b/forms/main/outbound.aardio index f283054..c638b19 100644 --- a/forms/main/outbound.aardio +++ b/forms/main/outbound.aardio @@ -11,22 +11,22 @@ btnGenGuid={cls="plus";text="生成";left=914;top=259;right=986;bottom=284;align btnImportSharedLink={cls="plus";text="导入";left=912;top=471;right=984;bottom=496;align="left";clip=1;db=1;dr=1;font=LOGFONT(h=-13);iconStyle={align="left";font=LOGFONT(h=-13;name='FontAwesome');padding={left=12}};iconText='\uF0C1';notify=1;textPadding={left=30};z=21}; btnInsertField={cls="plus";text="插入更多配置字段";left=10;top=0;right=191;bottom=24;align="left";dl=1;dt=1;font=LOGFONT(h=-13);iconStyle={align="left";font=LOGFONT(h=-13;name='FontAwesome');padding={left=12}};iconText='\uF196 ';notify=1;textPadding={left=30};z=18}; btnSaveOutbound={cls="plus";text="保 存";left=826;top=410;right=929;bottom=446;align="left";bgcolor=11580047;db=1;disabled=1;dr=1;font=LOGFONT(h=-13);iconStyle={align="left";font=LOGFONT(h=-13;name='FontAwesome');padding={left=22}};iconText='\uF0C7';notify=1;textPadding={left=40};z=16}; -btnUpdateCore={cls="plus";text="下载 / 更新 NaÏveProxy Core";left=637;top=61;right=979;bottom=89;align="left";color=3947580;dl=1;dt=1;font=LOGFONT(h=-13);iconStyle={align="left";font=LOGFONT(h=-17;name='FontAwesome');padding={left=18}};iconText='\uF0AB';notify=1;textPadding={left=50};z=23}; +btnUpdateCore={cls="plus";text="下载 / 更新 NaÏveProxy Core";left=637;top=61;right=979;bottom=89;align="left";color=3947580;dr=1;dt=1;font=LOGFONT(h=-13);iconStyle={align="left";font=LOGFONT(h=-17;name='FontAwesome');padding={left=18}};iconText='\uF0AB';notify=1;textPadding={left=50};z=23}; cmbNetwork={cls="combobox";left=656;top=97;right=814;bottom=123;dr=1;dt=1;edge=1;items={"tcp";"kcp";"ws";"h2";"quic"};mode="dropdown";z=13}; -cmbProtocol={cls="combobox";left=656;top=28;right=814;bottom=54;dr=1;dt=1;edge=1;items={"vmess";"vless";"trojan";"trojan-go";"ssr";"shadowsocks";"naive";"socks"};mode="dropdown";z=12}; +cmbProtocol={cls="combobox";left=656;top=28;right=814;bottom=54;dr=1;dt=1;edge=1;items={"vmess";"vless";"trojan";"trojan-go";"ssr";"shadowsocks";"naive";"socks";"https";"http"};mode="dropdown";z=12}; cmbSecurity={cls="combobox";left=656;top=140;right=814;bottom=166;dr=1;dt=1;edge=1;items={"auto";"none";"chacha20-poly1305";"aes-128-gcm"};mode="dropdown";z=15}; editAddress={cls="plus";left=656;top=183;right=878;bottom=207;align="left";bgcolor=16777215;border={bottom=1;color=-8355712};dr=1;dt=1;editable="edit";font=LOGFONT(h=-16);textPadding={bottom=1};z=2}; -editId={cls="plus";left=656;top=263;right=986;bottom=287;align="left";bgcolor=16777215;border={bottom=1;color=-8355712};clip=1;dr=1;dt=1;editable="edit";font=LOGFONT(h=-16);textPadding={right=75;bottom=1};z=20}; +editId={cls="plus";left=656;top=263;right=986;bottom=287;align="left";bgcolor=16777215;border={bottom=1;color=-8355712};clip=1;dr=1;dt=1;editable="edit";font=LOGFONT(h=-16);notify=1;textPadding={right=75;bottom=1};z=20}; editOutbound={cls="edit";left=15;top=25;right=472;bottom=462;db=1;dl=1;dr=1;dt=1;edge=1;font=LOGFONT(h=-13);hscroll=1;multiline=1;vscroll=1;z=14}; -editPort={cls="plus";left=656;top=224;right=745;bottom=248;align="left";bgcolor=16777215;border={bottom=1;color=-8355712};dr=1;dt=1;editable="edit";font=LOGFONT(h=-16);textPadding={bottom=1};z=4}; +editPort={cls="plus";left=656;top=224;right=745;bottom=248;align="left";bgcolor=16777215;border={bottom=1;color=-8355712};dr=1;dt=1;editable="edit";font=LOGFONT(h=-16);num=1;textPadding={bottom=1};z=4}; editPs={cls="plus";left=656;top=306;right=878;bottom=330;align="left";bgcolor=16777215;border={bottom=1;color=-8355712};dr=1;dt=1;editable="edit";font=LOGFONT(h=-16);textPadding={bottom=1};z=7}; editSharedLink={cls="plus";left=13;top=475;right=986;bottom=499;align="left";bgcolor=16777215;border={bottom=1;color=-8355712};clip=1;db=1;dl=1;dr=1;font=LOGFONT(h=-16);notify=1;textPadding={right=150;bottom=1};z=22}; +lbId={cls="static";text="登录用户( id ):";left=492;top=262;right=641;bottom=288;align="right";bgcolor=16777215;dr=1;dt=1;font=LOGFONT(h=-16);transparent=1;z=6}; lbSecurity={cls="static";text="加密方式( security ):";left=473;top=136;right=641;bottom=162;align="right";bgcolor=16777215;dl=1;dr=1;dt=1;font=LOGFONT(h=-16);transparent=1;z=10}; qrPicture={cls="plus";left=510;top=358;right=606;bottom=454;bgcolor=16777215;db=1;dr=1;notify=1;repeat="scale";z=24}; static={cls="static";text="服务器( address ):";left=481;top=178;right=641;bottom=204;align="right";bgcolor=16777215;dl=1;dr=1;dt=1;font=LOGFONT(h=-16);transparent=1;z=3}; static10={cls="static";text="代理协议( protocol ):";left=473;top=26;right=641;bottom=52;align="right";bgcolor=16777215;dl=1;dr=1;dt=1;font=LOGFONT(h=-16);transparent=1;z=11}; -static2={cls="static";text="端口( port ):";left=498;top=220;right=641;bottom=246;align="right";bgcolor=16777215;dr=1;dt=1;font=LOGFONT(h=-16);transparent=1;z=5}; -static3={cls="static";text="密码( id ):";left=498;top=262;right=641;bottom=288;align="right";bgcolor=16777215;dr=1;dt=1;font=LOGFONT(h=-16);transparent=1;z=6}; +static2={cls="static";text="服务端口( port ):";left=498;top=220;right=641;bottom=246;align="right";bgcolor=16777215;dr=1;dt=1;font=LOGFONT(h=-16);transparent=1;z=5}; static4={cls="static";text="备注( ps ):";left=498;top=304;right=641;bottom=330;align="right";bgcolor=16777215;dr=1;dt=1;font=LOGFONT(h=-16);transparent=1;z=8}; static5={cls="static";text="传输协议( network ):";left=473;top=94;right=641;bottom=126;align="right";bgcolor=16777215;dl=1;dr=1;dt=1;font=LOGFONT(h=-16);transparent=1;z=9} ) @@ -43,7 +43,7 @@ winform.addOutboundField = function(k,v){ winform.updateSharedLink(); } -winform.cmbProtocol.onListChange = function(){ +winform.cmbProtocol.onProtocolChange = function(){ var sel = winform.cmbProtocol.selText; if(sel=="vmess"){ winform.cmbSecurity.items = { @@ -58,6 +58,7 @@ winform.cmbProtocol.onListChange = function(){ winform.cmbNetwork.selIndex = 1; winform.outboundConfig.network = "tcp"; winform.btnUpdateCore.text = '下载 / 更新支持组件: xray Core'; + winform.editId.setCueBannerText("请输入 GUID"); } elseif(sel=="shadowsocks"){ winform.cmbSecurity.items = { @@ -71,6 +72,7 @@ winform.cmbProtocol.onListChange = function(){ winform.cmbNetwork.selIndex = 1; winform.outboundConfig.network = "tcp"; winform.btnUpdateCore.text = '下载 / 更新支持组件: xray Core'; + winform.editId.setCueBannerText("请输入密码"); } elseif(sel=="ssr"){ winform.cmbNetwork.items = { @@ -86,6 +88,7 @@ winform.cmbProtocol.onListChange = function(){ winform.cmbSecurity.selIndex = 1; winform.outboundConfig.security = "none"; winform.btnUpdateCore.text = '下载 / 更新支持组件: SSR Core'; + winform.editId.setCueBannerText("请输入密码"); } elseif(sel=="vless"){ winform.cmbSecurity.items = { @@ -99,7 +102,8 @@ winform.cmbProtocol.onListChange = function(){ } winform.cmbNetwork.selIndex = 1; winform.outboundConfig.network = "tcp"; - winform.btnUpdateCore.text = '下载 / 更新支持组件: Xray Core'; + winform.btnUpdateCore.text = '下载 / 更新支持组件: v2ray Core'; + winform.editId.setCueBannerText("请输入 GUID"); } elseif(sel=="naive"){ winform.cmbNetwork.items = { @@ -110,11 +114,9 @@ winform.cmbProtocol.onListChange = function(){ winform.cmbSecurity.items = {} winform.outboundConfig.security = null; - - if(!string.indexOf(winform.editId.text:"",":")){ - winform.editId.text = "username:password"; - } + winform.btnUpdateCore.text = '下载 / 更新支持组件: NaïveProxy Core'; + winform.editId.setCueBannerText("请输入 用户名:密码"); } elseif(sel=="socks"){ winform.cmbSecurity.items = { } @@ -122,11 +124,19 @@ winform.cmbProtocol.onListChange = function(){ winform.cmbNetwork.items = {"tcp";} winform.cmbNetwork.selIndex = 1; - winform.outboundConfig.network = "tcp"; - if(!string.indexOf(winform.editId.text:"",":")){ - winform.editId.text = "username:password"; - } + winform.outboundConfig.network = "tcp"; winform.btnUpdateCore.text = '下载 / 更新支持组件: xray Core'; + winform.editId.setCueBannerText("请输入 用户名:密码"); + } + elseif(sel=="http" || sel=="https"){ + winform.cmbSecurity.items = { } + winform.outboundConfig.security = null; + + winform.cmbNetwork.items = {"tcp";} + winform.cmbNetwork.selIndex = 1; + winform.outboundConfig.network = "tcp"; + winform.btnUpdateCore.text = '下载 / 更新支持组件: xray Core'; + winform.editId.setCueBannerText("请输入 用户名:密码"); } else { winform.cmbSecurity.items = { } @@ -136,10 +146,15 @@ winform.cmbProtocol.onListChange = function(){ winform.cmbNetwork.selIndex = 1; winform.outboundConfig.network = "tcp"; winform.btnUpdateCore.text = '下载 / 更新支持组件: xray Core'; + winform.editId.setCueBannerText("请输入密码"); } +} + +winform.cmbProtocol.onListChange = function(){ + winform.cmbProtocol.onProtocolChange(); table.define(winform.outboundConfig); - winform.outboundConfig.protocol = sel; + winform.outboundConfig.protocol = winform.cmbProtocol.selText;; winform.editOutbound.text = web.json.stringify(winform.outboundConfig,true,false); winform.updateSharedLink(); } @@ -158,8 +173,12 @@ winform.cmbSecurity.onListChange = function(){ winform.updateSharedLink(); } -winform.editId.editBox.onChange = function(){ - winform.outboundConfig.id = owner.text; +winform.editId.editBox.onChange = function(){ + if( winform.outboundConfig.id == winform.editId.text ){ + return; + } + + winform.outboundConfig.id = winform.editId.text; winform.editOutbound.text = web.json.stringify(winform.outboundConfig,true,false); winform.updateSharedLink(); } @@ -285,7 +304,7 @@ var insertFieldMenu = { }; { "SSR混淆插件:obfs"; function(id){ - winform.addOutboundField("obfs","plain"); + winform.addOutboundField("obfs",""); } }; { "SSR混淆参数:obfsParam"; @@ -369,19 +388,7 @@ var onEditChange = win.debounce( winform.cmbNetwork.selText = data.network; winform.cmbProtocol.selText = data.protocol; - - if(data.protocol=="vmess"){ - winform.cmbSecurity.items = { "auto";"none";"chacha20-poly1305";"aes-128-gcm" } - } - elseif(data.protocol=="shadowsocks"){ - winform.cmbSecurity.items = { "aes-256-gcm";"aes-128-gcm";"aes-256-cfb";"aes-128-cfb";"chacha20";"chacha20-ietf";"chacha20-poly1305";"chacha20-ietf-poly1305";} - } - elseif(data.protocol=="vless"){ - winform.cmbSecurity.items = { "none"; } - } - else { - winform.cmbSecurity.items = { } - } + winform.cmbProtocol.onProtocolChange(); winform.cmbSecurity.selText = data.security; winform.cmbNetwork.onListChange = cmbNetworkChange; @@ -405,8 +412,11 @@ winform.btnSaveOutbound.oncommand = function(id,event){ return winform.editPort.editBox.showErrorTip("配置错误","端口不能为空") } - if(!#winform.editId.text && (winform.outboundConfig.protocol!="socks") ){ - return winform.editId.editBox.showErrorTip("配置错误","当前代理协议密码不能为空") + if( !#winform.editId.text ){ + var protocol = winform.outboundConfig.protocol; + if((protocol!="socks") && (protocol!="http") && (protocol!="https")){ + return winform.editId.editBox.showErrorTip("配置错误","当前代理协议密码不能为空") + } } table.assign(winform.origOutboundConfig,winform.outboundConfig); @@ -427,8 +437,11 @@ winform.btnAddOutbound.oncommand = function(id,event){ return winform.editPort.editBox.showErrorTip("配置错误","端口不能为空") } - if(!#winform.editId.text && (winform.outboundConfig.protocol!="socks") ){ - return winform.editId.editBox.showErrorTip("配置错误","当前代理协议密码不能为空") + if(!#winform.editId.text ){ + var protocol = winform.outboundConfig.protocol + if( (protocol!="socks") && (protocol!="http") && (protocol!="https") ){ + return winform.editId.editBox.showErrorTip("配置错误","当前代理协议密码不能为空") + } } table.push(config.proxy.outbounds,winform.outboundConfig); @@ -440,8 +453,17 @@ winform.btnAddOutbound.oncommand = function(id,event){ import win.guid; winform.btnGenGuid.oncommand = function(id,event){ - var guid = win.guid.create(); - winform.editId.text = string.lower( tostring(guid) ); + var sel = winform.cmbProtocol.selText; + if(sel=="socks" || sel=="http" || sel=="https" || sel=="naive" ){ + winform.editId.text = "user:" + string.random(16); + } + elseif(sel=="shadowsocks" || sel=="ssr" ){ + winform.editId.text = string.random(22,"/@0123456abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"); + } + else { + var guid = win.guid.create(); + winform.editId.text = string.lower( tostring(guid) ); + } } winform.btnGenGuid.skin(style.link) @@ -544,16 +566,16 @@ winform.btnUpdateCore.oncommand = function(id,event){ } } elseif(sel=="vless"){ - import xray.core.xray; - var versionTag = xray.core.xray.updateCore(); + import xray.core.v2ray; + var versionTag = xray.core.v2ray.updateCore(); if( versionTag ){ publish("uiCommand.restartxrayCore"); winform.btnUpdateCore.disabledText = null; - winform.msgOk("已下载最新 XRay Core 版本:" + versionTag+ '\nxray 内核已切换为:XRay Core',1500) + winform.msgOk("已下载最新 v2ray Core 版本:" + versionTag+ '\nxray 内核已切换为:v2ray Core',1500) } else { winform.btnUpdateCore.disabledText = null; - winform.msgErr("XRay Core 下载失败!"); + winform.msgErr("v2ray Core 下载失败!"); } } elseif(sel=="naive"){ diff --git a/lib/xray/core/_.aardio b/lib/xray/core/_.aardio index d855404..52d3e29 100644 --- a/lib/xray/core/_.aardio +++ b/lib/xray/core/_.aardio @@ -264,8 +264,8 @@ getPath = function(hwnd){ ..publish("uiCommand.print","下载后请解压到以下目录内:"); ..publish("uiCommand.print",..io.appData("/WinXray/core/")); - import process; - process.execute(..io._exepath,"/github","runas"); + //import process; + //process.execute(..io._exepath,"/github","runas"); } } diff --git a/lib/xray/core/configJson.aardio b/lib/xray/core/configJson.aardio index 96a0eba..1db9010 100644 --- a/lib/xray/core/configJson.aardio +++ b/lib/xray/core/configJson.aardio @@ -5,26 +5,52 @@ import inet.url; import crypt; namespace xray.core.configJson; - + write = function(jsonPath,outbound,sockPort,httpPort){ - if(!outbound){ return; } + if(!outbound){ return; } if(type(outbound.port)!=type.number){ outbound.port = tonumber(outbound.port); } - var current = ..table.clone(..config.core.default); - var inbounds = current.inbounds; - if(! (..table.isArray(inbounds) && inbounds[1] ) ){ - return null,"错误的入站SOCKS代理服务器配置" + var currentCore = ..table.clone(..config.core.default); + if(! ..table.isArray(currentCore.outbounds) ){ + return null,"错误的出站代理服务器配置" } - inbounds[1].pacPort = null; - inbounds[1].port = sockPort; - if(inbounds[2]){ inbounds[2].port = httpPort; } + var inboundsInCore = currentCore.inbounds; + if(! ..table.isArray(inboundsInCore) ){ + return null,"错误的入站代理服务器配置" + } - - if(sockPort<0){ - ..table.shift(inbounds); + var proxyOutboundInCore; + for(k,ob in currentCore.outbounds){ + if(ob.tag == "proxy"){ + proxyOutboundInCore = ob; + } + } + + if( type(proxyOutboundInCore) !="table" ){ + return null,"未找到默认出站代理服务器配置节点" + } + + var socksInbounds,httpInbounds; + for(k,ib in currentCore.inbounds){ + if(ib.tag == "proxy"){ + socksInbounds = ib; + socksInbounds.port = sockPort; + } + elseif(ib.tag == "http_proxy"){ + httpInbounds = ib; + httpInbounds.port = httpPort; + } + } + + if( type(socksInbounds) !="table" ){ + return null,"未找到默认 SOCKS 入站代理服务器配置节点" + } + + if( type(httpInbounds) !="table" ){ + return null,"未找到默认 HTTP 入站代理服务器配置节点" } if(#outbound.tls && !outbound.sni){ @@ -159,11 +185,11 @@ write = function(jsonPath,outbound,sockPort,httpPort){ } } - ..table.assign(current.outbounds[1],ob); + ..table.assign(proxyOutboundInCore,ob); } elseif(outbound.protocol=="vmess"){ if(!#outbound.security) outbound.security = "auto"; - + var ob = { mux = (outbound.concurrency !== null) ? { concurrency=outbound.concurrency; @@ -276,7 +302,7 @@ write = function(jsonPath,outbound,sockPort,httpPort){ } } - ..table.assign(current.outbounds[1],ob); + ..table.assign(proxyOutboundInCore,ob); } elseif(outbound.protocol=="trojan" || outbound.protocol=="trojan-go"){ outbound.tls = #outbound.tls ? outbound.tls : "tls"; @@ -327,7 +353,7 @@ write = function(jsonPath,outbound,sockPort,httpPort){ ob.streamSettings.wsSettings.headers.Host = outbound.host; } } - ..table.assign(current.outbounds[1],ob); + ..table.assign(proxyOutboundInCore,ob); } elseif(outbound.protocol=="shadowsocks"){ var ob = { @@ -357,7 +383,7 @@ write = function(jsonPath,outbound,sockPort,httpPort){ tag="proxy" }; - ..table.assign(current.outbounds[1],ob); + ..table.assign(proxyOutboundInCore,ob); } elseif(outbound.protocol=="socks"){ @@ -383,7 +409,7 @@ write = function(jsonPath,outbound,sockPort,httpPort){ }; tag="proxy" }; - + if(#outbound.id){ var user,password = ..string.match(outbound.id,"([^\:]+)\:(.+)"); if(user && password){ @@ -401,7 +427,7 @@ write = function(jsonPath,outbound,sockPort,httpPort){ } } - ..table.assign(current.outbounds[1],ob); + ..table.assign(proxyOutboundInCore,ob); } elseif(outbound.protocol=="https" || outbound.protocol=="http"){ @@ -423,7 +449,7 @@ write = function(jsonPath,outbound,sockPort,httpPort){ }; tag="proxy" }; - + if(#outbound.id){ var user,password = ..string.match(outbound.id,"([^\:]+)\:(.+)"); if(user && password){ @@ -439,11 +465,11 @@ write = function(jsonPath,outbound,sockPort,httpPort){ } } - ..table.assign(current.outbounds[1],ob); + ..table.assign(proxyOutboundInCore,ob); } - ..string.save(jsonPath,..web.json.stringify(current) ); + ..string.save(jsonPath,..web.json.stringify(currentCore) ); return jsonPath; } - \ No newline at end of file + \ No newline at end of file diff --git a/lib/xray/core/ssrJson.aardio b/lib/xray/core/ssrJson.aardio index 0ee2ec7..e09ab88 100644 --- a/lib/xray/core/ssrJson.aardio +++ b/lib/xray/core/ssrJson.aardio @@ -20,7 +20,7 @@ write = function(jsonPath,outbound,ssrSocksPort){ idle_timeout = 300; method = outbound.security; obfs = outbound.obfs : "plain"; - obfs_param = outbound.obfsParam:""; + obfs_param = outbound.obfsParam: ""; over_tls_settings = { enable = outbound.tls == "tls"; path = outbound.path: "/abcd1234/"; diff --git a/main.aardio b/main.aardio index b19f6a7..2ec65e8 100644 --- a/main.aardio +++ b/main.aardio @@ -162,7 +162,7 @@ import win.ui; mainForm = win.form(text="WinXray";right=1019;bottom=679;bgcolor=15793151;border="none") mainForm.add( Promote={cls="plus";text="推荐";left=0;top=300;right=85;bottom=380;bkBottom=3;bkLeft=7;bkRight=8;bkTop=2;border={color=-65536};color=16777215;dl=1;dt=1;font=LOGFONT(h=-13);iconStyle={font=LOGFONT(h=-37;name='FontAwesome');padding={bottom=20}};iconText='\uF233';notify=1;textPadding={bottom=10};valign="bottom";x=0.5;y=0.2;z=9}; -caption={cls="bkplus";text="WinXray 3.0";left=67;top=9;right=727;bottom=27;align="left";color=6052956;dl=1;dt=1;font=LOGFONT(h=-14);z=7}; +caption={cls="bkplus";text="WinXray 3.1";left=67;top=9;right=727;bottom=27;align="left";color=6052956;dl=1;dt=1;font=LOGFONT(h=-14);z=7}; custom={cls="custom";left=83;top=40;right=1022;bottom=679;bgcolor=16777215;db=1;dl=1;dr=1;dt=1;z=4}; logo={cls="bkplus";text='\uF1D9';left=35;top=7;right=64;bottom=32;color=3054125;dl=1;dt=1;font=LOGFONT(h=-18;name='FontAwesome');z=6}; navBar={cls="bkplus";left=0;top=37;right=83;bottom=681;bgcolor=3442175;db=1;dl=1;dt=1;z=1}; diff --git a/release/WinXray.7z b/release/WinXray.7z index c9c842a..59e4365 100644 Binary files a/release/WinXray.7z and b/release/WinXray.7z differ diff --git a/release/WinXray32.7z b/release/WinXray32.7z index c99a43c..aaefa3a 100644 Binary files a/release/WinXray32.7z and b/release/WinXray32.7z differ diff --git a/release/update/checksum.lzma b/release/update/checksum.lzma index 05a9c7d..f02997a 100644 Binary files a/release/update/checksum.lzma and b/release/update/checksum.lzma differ diff --git a/release/update/files/WinXray.exe.lzma b/release/update/files/WinXray.exe.lzma index 593765d..e60ab41 100644 Binary files a/release/update/files/WinXray.exe.lzma and b/release/update/files/WinXray.exe.lzma differ diff --git a/release/update/version.txt b/release/update/version.txt index 461d8ff..e25b4cb 100644 --- a/release/update/version.txt +++ b/release/update/version.txt @@ -1,8 +1,8 @@ { - "description":"修复完善UWP模式!更新到了Xray内核到1.3.1版本!提高了LOGO分辨率!", + "description":"修复右键新增/编辑代理服务器切换协议报错的问题以及优化代码!", "format":".lzma", "main":"\\WinXray.exe", "updater":"\\WinXray.exe", "url":"https://raw.githubusercontent.com/TheMRLL/winxray/main/release/update/", - "version":"3.0" + "version":"3.1" } \ No newline at end of file diff --git a/winXray/WinXray.exe b/winXray/WinXray.exe index 1150ffe..d0e7158 100644 Binary files a/winXray/WinXray.exe and b/winXray/WinXray.exe differ