mirror of
https://github.com/proxysu/ProxySU.git
synced 2024-11-21 20:56:08 +03:00
save install xray/trojan-go
This commit is contained in:
parent
5093082fc4
commit
4cd4509cb9
@ -619,8 +619,8 @@ namespace ProxySuper.Core.Services
|
||||
/// <param name="keyPath"></param>
|
||||
protected void InstallCert(string dirPath, string certName, string keyName)
|
||||
{
|
||||
string certPath = Path.Combine(dirPath, certName);
|
||||
string keyPath = Path.Combine(dirPath, keyName);
|
||||
string certPath = dirPath + "/" + certName;
|
||||
string keyPath = dirPath + "/" + keyName;
|
||||
|
||||
// 安装依赖
|
||||
RunCmd(GetInstallCmd("socat"));
|
||||
|
@ -37,8 +37,8 @@ namespace ProxySuper.Core.Services
|
||||
public static string BuildCaddyConfig(TrojanGoSettings parameters, bool useCustomWeb = false)
|
||||
{
|
||||
var caddyStr = File.ReadAllText(CaddyFilePath);
|
||||
caddyStr.Replace("##domain##", parameters.Domain);
|
||||
caddyStr.Replace("##port##", WebPort.ToString());
|
||||
caddyStr = caddyStr.Replace("##domain##", parameters.Domain);
|
||||
caddyStr = caddyStr.Replace("##port##", WebPort.ToString());
|
||||
|
||||
if (!useCustomWeb && !string.IsNullOrEmpty(parameters.MaskDomain))
|
||||
{
|
||||
|
@ -17,15 +17,58 @@ namespace ProxySuper.Core.Services
|
||||
{
|
||||
}
|
||||
|
||||
public void InstallCertToTrojanGo()
|
||||
{
|
||||
EnsureRootAuth();
|
||||
EnsureSystemEnv();
|
||||
InstallCert(
|
||||
dirPath: "/usr/local/etc/trojan-go",
|
||||
certName: "trojan-go.crt",
|
||||
keyName: "trojan-go.key");
|
||||
|
||||
RunCmd("systemctl restart trojan-go");
|
||||
WriteOutput("************ 安装证书完成 ************");
|
||||
}
|
||||
|
||||
public void UploadWeb(Stream stream)
|
||||
{
|
||||
EnsureRootAuth();
|
||||
EnsureSystemEnv();
|
||||
if (!FileExists("/usr/share/caddy"))
|
||||
{
|
||||
RunCmd("mkdir /usr/share/caddy");
|
||||
}
|
||||
RunCmd("rm -rf /usr/share/caddy/*");
|
||||
UploadFile(stream, "/usr/share/caddy/caddy.zip");
|
||||
RunCmd("unzip /usr/share/caddy/caddy.zip -d /usr/share/caddy");
|
||||
RunCmd("chmod -R 777 /usr/share/caddy");
|
||||
UploadCaddyFile(useCustomWeb: true);
|
||||
WriteOutput("************ 上传网站模板完成 ************");
|
||||
}
|
||||
|
||||
public void Uninstall()
|
||||
{
|
||||
RunCmd("systemctl stop trojan-go");
|
||||
RunCmd("systemctl stop caddy");
|
||||
|
||||
RunCmd("rm -rf /usr/local/bin/trojan-go");
|
||||
RunCmd("rm -rf /usr/local/etc/trojan-go");
|
||||
|
||||
RunCmd("acme.sh --uninstall");
|
||||
RunCmd("rm -r ~/.acme.sh");
|
||||
|
||||
WriteOutput("卸载Trojan-Go完成");
|
||||
}
|
||||
|
||||
public override void Install()
|
||||
{
|
||||
try
|
||||
{
|
||||
EnsureRootAuth();
|
||||
|
||||
if (FileExists("/usr/local/bin/xray"))
|
||||
if (FileExists("/usr/local/bin/trojan-go"))
|
||||
{
|
||||
var btnResult = MessageBox.Show("已经安装Xray,是否需要重装?", "提示", MessageBoxButton.YesNo);
|
||||
var btnResult = MessageBox.Show("已经安装Trojan-Go,是否需要重装?", "提示", MessageBoxButton.YesNo);
|
||||
if (btnResult == MessageBoxResult.No)
|
||||
{
|
||||
MessageBox.Show("安装终止", "提示");
|
||||
@ -89,7 +132,7 @@ namespace ProxySuper.Core.Services
|
||||
{
|
||||
WriteOutput("安装Trojan-Go");
|
||||
RunCmd(@"curl https://raw.githubusercontent.com/proxysu/shellscript/master/trojan-go.sh yes | bash");
|
||||
var success = FileExists("/usr/local/etc/trojan-go");
|
||||
var success = FileExists("/usr/local/bin/trojan-go");
|
||||
if (success == false)
|
||||
{
|
||||
throw new Exception("trojan-go 安装失败,请联系开发者!");
|
||||
@ -114,6 +157,11 @@ namespace ProxySuper.Core.Services
|
||||
RunCmd("mv /usr/local/etc/trojan-go/config.json config.json.old");
|
||||
}
|
||||
|
||||
UploadTrojanGoSettings();
|
||||
}
|
||||
|
||||
private void UploadTrojanGoSettings()
|
||||
{
|
||||
// 上传配置
|
||||
var settings = TrojanGoConfigBuilder.BuildTrojanGoConfig(Parameters);
|
||||
var stream = new MemoryStream(Encoding.UTF8.GetBytes(settings));
|
||||
|
@ -38,7 +38,7 @@ namespace ProxySuper.Core.ViewModels
|
||||
set
|
||||
{
|
||||
_connected = value;
|
||||
RaisePropertyChanged("HasConnected");
|
||||
RaisePropertyChanged("Connected");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -178,6 +178,120 @@
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<None Include="Templates\trojan-go\base.caddyfile">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Templates\trojan-go\trojan-go.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Templates\xray\base.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Templates\xray\caddy\base.caddyfile">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Templates\xray\client\00_log\00_log.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Templates\xray\client\01_api\01_api.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Templates\xray\client\02_dns\02_dns.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Templates\xray\client\03_routing\03_routing.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Templates\xray\client\04_policy\04_policy.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Templates\xray\client\05_inbounds\05_inbounds.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Templates\xray\client\06_outbounds\06_outbounds.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Templates\xray\client\06_outbounds\VLESS_HTTP2_TLS.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Templates\xray\client\06_outbounds\VLESS_TCP_TLS_WS.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Templates\xray\client\07_transport\07_transport.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Templates\xray\client\08_stats\08_stats.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Templates\xray\client\09_reverse\09_reverse.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Templates\xray\server\00_log\00_log.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Templates\xray\server\01_api\01_api.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Templates\xray\server\02_dns\02_dns.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Templates\xray\server\03_routing\03_routing.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Templates\xray\server\04_policy\04_policy.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Templates\xray\server\05_inbounds\05_inbounds.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Templates\xray\server\05_inbounds\Shadowsocks-AEAD.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Templates\xray\server\05_inbounds\Trojan_TCP.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Templates\xray\server\05_inbounds\Trojan_WS.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Templates\xray\server\05_inbounds\VLESS_gRPC.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Templates\xray\server\05_inbounds\VLESS_HTTP2.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Templates\xray\server\05_inbounds\VLESS_KCP.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Templates\xray\server\05_inbounds\VLESS_TCP_XTLS.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Templates\xray\server\05_inbounds\VLESS_WS.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Templates\xray\server\05_inbounds\VMESS_HTTP2.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Templates\xray\server\05_inbounds\VMESS_KCP.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Templates\xray\server\05_inbounds\VMESS_TCP.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Templates\xray\server\05_inbounds\VMESS_WS.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Templates\xray\server\06_outbounds\06_outbounds.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Templates\xray\server\07_transport\07_transport.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Templates\xray\server\08_stats\08_stats.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Templates\xray\server\09_reverse\09_reverse.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="App.config" />
|
||||
|
9
ProxySuper.WPF/Templates/trojan-go/base.caddyfile
Normal file
9
ProxySuper.WPF/Templates/trojan-go/base.caddyfile
Normal file
@ -0,0 +1,9 @@
|
||||
:##port## {
|
||||
root * /usr/share/caddy
|
||||
file_server
|
||||
##reverse_proxy##
|
||||
}
|
||||
|
||||
##domain##:80 {
|
||||
redir https://##domain##{uri}
|
||||
}
|
16
ProxySuper.WPF/Templates/trojan-go/trojan-go.json
Normal file
16
ProxySuper.WPF/Templates/trojan-go/trojan-go.json
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
"run_type": "server",
|
||||
"local_addr": "0.0.0.0",
|
||||
"local_port": 443,
|
||||
"remote_addr": "127.0.0.1",
|
||||
"remote_port": 80,
|
||||
"password": [
|
||||
""
|
||||
],
|
||||
"ssl": {
|
||||
"cert": "/usr/local/etc/trojan-go/trojan-go.crt",
|
||||
"key": "/usr/local/etc/trojan-go/trojan-go.key",
|
||||
"sni": ""
|
||||
}
|
||||
|
||||
}
|
12
ProxySuper.WPF/Templates/xray/base.json
Normal file
12
ProxySuper.WPF/Templates/xray/base.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"log": {},
|
||||
"api": {},
|
||||
"dns": {},
|
||||
"routing": {},
|
||||
"policy": {},
|
||||
"inbounds": [],
|
||||
"outbounds": [],
|
||||
"transport": {},
|
||||
"stats": {},
|
||||
"reverse": {}
|
||||
}
|
9
ProxySuper.WPF/Templates/xray/caddy/base.caddyfile
Normal file
9
ProxySuper.WPF/Templates/xray/caddy/base.caddyfile
Normal file
@ -0,0 +1,9 @@
|
||||
:##port## {
|
||||
root * /usr/share/caddy
|
||||
file_server
|
||||
##reverse_proxy##
|
||||
}
|
||||
|
||||
##domain##:80 {
|
||||
redir https://##domain##{uri}
|
||||
}
|
5
ProxySuper.WPF/Templates/xray/client/00_log/00_log.json
Normal file
5
ProxySuper.WPF/Templates/xray/client/00_log/00_log.json
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"log": {
|
||||
"loglevel": "warning"
|
||||
}
|
||||
}
|
3
ProxySuper.WPF/Templates/xray/client/01_api/01_api.json
Normal file
3
ProxySuper.WPF/Templates/xray/client/01_api/01_api.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"api": null
|
||||
}
|
3
ProxySuper.WPF/Templates/xray/client/02_dns/02_dns.json
Normal file
3
ProxySuper.WPF/Templates/xray/client/02_dns/02_dns.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"dns": {}
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
{
|
||||
"routing": {}
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
{
|
||||
"policy": {}
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
{
|
||||
"inbounds": [
|
||||
{
|
||||
"protocol": "http",
|
||||
"port": 1081
|
||||
},
|
||||
{
|
||||
"port": 1080,
|
||||
"protocol": "socks",
|
||||
"sniffing": {
|
||||
"enabled": true,
|
||||
"destOverride": [
|
||||
"http",
|
||||
"tls"
|
||||
]
|
||||
},
|
||||
"settings": {
|
||||
"udp": true,
|
||||
"auth": "noauth"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
{
|
||||
"outbounds": []
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
{
|
||||
"outbounds": [
|
||||
{
|
||||
"protocol": "vless",
|
||||
"settings": {
|
||||
"vnext": [
|
||||
{
|
||||
"address": "",
|
||||
"port": 443,
|
||||
"users": [
|
||||
{
|
||||
"id": "",
|
||||
"encryption": "none"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"streamSettings": {
|
||||
"network": "h2",
|
||||
"security": "tls",
|
||||
"httpSettings": {
|
||||
"host": [
|
||||
""
|
||||
],
|
||||
"path": null
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
{
|
||||
"outbounds": [
|
||||
{
|
||||
"protocol": "vless",
|
||||
"settings": {
|
||||
"vnext": [
|
||||
{
|
||||
"address": "",
|
||||
"port": 443,
|
||||
"users": [
|
||||
{
|
||||
"id": "",
|
||||
"encryption": "none",
|
||||
"level": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"streamSettings": {
|
||||
"network": "ws",
|
||||
"security": "tls",
|
||||
"tlsSettings": {
|
||||
"serverName": ""
|
||||
},
|
||||
"wsSettings": {
|
||||
"path": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
{
|
||||
"transport": {}
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
{
|
||||
"stats": null
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
{
|
||||
"reverse": {}
|
||||
}
|
6
ProxySuper.WPF/Templates/xray/server/00_log/00_log.json
Normal file
6
ProxySuper.WPF/Templates/xray/server/00_log/00_log.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"log": {
|
||||
"access": "none",
|
||||
"loglevel": "none"
|
||||
}
|
||||
}
|
3
ProxySuper.WPF/Templates/xray/server/01_api/01_api.json
Normal file
3
ProxySuper.WPF/Templates/xray/server/01_api/01_api.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"api": {}
|
||||
}
|
3
ProxySuper.WPF/Templates/xray/server/02_dns/02_dns.json
Normal file
3
ProxySuper.WPF/Templates/xray/server/02_dns/02_dns.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"dns": {}
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
{
|
||||
"routing": {
|
||||
"domainStrategy": "AsIs",
|
||||
"rules": [
|
||||
{
|
||||
"type": "field",
|
||||
"ip": [
|
||||
"geoip:private"
|
||||
],
|
||||
"outboundTag": "block"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
{
|
||||
"policy": {}
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
{
|
||||
"inbounds": []
|
||||
}
|
@ -0,0 +1,13 @@
|
||||
{
|
||||
"port": 12345,
|
||||
"protocol": "shadowsocks",
|
||||
"settings": {
|
||||
"clients": [
|
||||
{
|
||||
"password": "",
|
||||
"method": "aes-128-gcm"
|
||||
}
|
||||
],
|
||||
"network": "tcp,udp"
|
||||
}
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
{
|
||||
"port": 1310,
|
||||
"listen": "127.0.0.1",
|
||||
"protocol": "trojan",
|
||||
"settings": {
|
||||
"clients": [
|
||||
{
|
||||
"password": ""
|
||||
}
|
||||
],
|
||||
"fallbacks": [
|
||||
{
|
||||
"dest": 8080
|
||||
}
|
||||
]
|
||||
},
|
||||
"streamSettings": {
|
||||
"network": "tcp",
|
||||
"security": "none",
|
||||
"tcpSettings": {
|
||||
"acceptProxyProtocol": true
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
{
|
||||
"port": 1320,
|
||||
"listen": "127.0.0.1",
|
||||
"protocol": "trojan",
|
||||
"settings": {
|
||||
"clients": [
|
||||
{
|
||||
"password": ""
|
||||
}
|
||||
],
|
||||
"fallbacks": [
|
||||
{
|
||||
"dest": 80
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
"streamSettings": {
|
||||
"network": "ws",
|
||||
"security": "none",
|
||||
"wsSettings": {
|
||||
"acceptProxyProtocol": true,
|
||||
"path": "/trojanws"
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
{
|
||||
"port": 1234,
|
||||
"listen": "127.0.0.1",
|
||||
"protocol": "vmess",
|
||||
"settings": {
|
||||
"decryption": "none",
|
||||
"clients": [
|
||||
{
|
||||
"id": ""
|
||||
}
|
||||
]
|
||||
},
|
||||
"streamSettings": {
|
||||
"network": "h2",
|
||||
"httpSettings": {
|
||||
"path": ""
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
{
|
||||
"port": 3456,
|
||||
"protocol": "vless",
|
||||
"settings": {
|
||||
"clients": [
|
||||
{
|
||||
"id": ""
|
||||
}
|
||||
],
|
||||
"decryption": "none"
|
||||
},
|
||||
"streamSettings": {
|
||||
"network": "mkcp",
|
||||
"kcpSettings": {
|
||||
"uplinkCapacity": 100,
|
||||
"downlinkCapacity": 100,
|
||||
"congestion": true,
|
||||
"header": {
|
||||
"type": "none"
|
||||
},
|
||||
"seed": null
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
{
|
||||
"port": 443,
|
||||
"protocol": "vless",
|
||||
"settings": {
|
||||
"clients": [
|
||||
{
|
||||
"id": "",
|
||||
"flow": "xtls-rprx-direct"
|
||||
}
|
||||
],
|
||||
"decryption": "none",
|
||||
"fallbacks": []
|
||||
},
|
||||
"streamSettings": {
|
||||
"network": "tcp",
|
||||
"security": "xtls",
|
||||
"xtlsSettings": {
|
||||
"allowInsecure": false,
|
||||
"minVersion": "1.2",
|
||||
"alpn": [
|
||||
"http/1.1"
|
||||
],
|
||||
"certificates": [
|
||||
{
|
||||
"certificateFile": "/usr/local/etc/xray/ssl/xray_ssl.crt",
|
||||
"keyFile": "/usr/local/etc/xray/ssl/xray_ssl.key"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
{
|
||||
"port": 1234,
|
||||
"listen": "127.0.0.1",
|
||||
"protocol": "vless",
|
||||
"settings": {
|
||||
"clients": [
|
||||
{
|
||||
"id": ""
|
||||
}
|
||||
],
|
||||
"decryption": "none"
|
||||
},
|
||||
"streamSettings": {
|
||||
"network": "ws",
|
||||
"security": "none",
|
||||
"wsSettings": {
|
||||
"acceptProxyProtocol": true,
|
||||
"path": "/websocket"
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,25 @@
|
||||
{
|
||||
"port": 2002,
|
||||
"listen": "127.0.0.1",
|
||||
"protocol": "vless",
|
||||
"settings": {
|
||||
"clients": [
|
||||
{
|
||||
"id": ""
|
||||
}
|
||||
],
|
||||
"decryption": "none"
|
||||
},
|
||||
"streamSettings": {
|
||||
"network": "grpc",
|
||||
"grpcSettings": {
|
||||
"serviceName": "",
|
||||
"certificates": [
|
||||
{
|
||||
"certificateFile": "/usr/local/etc/xray/ssl/xray_ssl.crt",
|
||||
"keyFile": "/usr/local/etc/xray/ssl/xray_ssl.key"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
{
|
||||
"port": 1234,
|
||||
"listen": "127.0.0.1",
|
||||
"protocol": "vmess",
|
||||
"settings": {
|
||||
"clients": [
|
||||
{
|
||||
"id": ""
|
||||
}
|
||||
]
|
||||
},
|
||||
"streamSettings": {
|
||||
"network": "h2",
|
||||
"httpSettings": {
|
||||
"path": ""
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
{
|
||||
"port": 3456,
|
||||
"protocol": "vmess",
|
||||
"settings": {
|
||||
"clients": [
|
||||
{
|
||||
"id": ""
|
||||
}
|
||||
]
|
||||
},
|
||||
"streamSettings": {
|
||||
"network": "mkcp",
|
||||
"kcpSettings": {
|
||||
"uplinkCapacity": 100,
|
||||
"downlinkCapacity": 100,
|
||||
"congestion": true,
|
||||
"header": {
|
||||
"type": "none"
|
||||
},
|
||||
"seed": null
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
{
|
||||
"port": 443,
|
||||
"listen": "127.0.0.1",
|
||||
"protocol": "vmess",
|
||||
"settings": {
|
||||
"clients": [
|
||||
{
|
||||
"id": ""
|
||||
}
|
||||
]
|
||||
},
|
||||
"streamSettings": {
|
||||
"network": "tcp",
|
||||
"security": "none",
|
||||
"tcpSettings": {
|
||||
"acceptProxyProtocol": true,
|
||||
"header": {
|
||||
"type": "http",
|
||||
"request": {
|
||||
"path": [
|
||||
"/vmesstcp"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
{
|
||||
"port": 3456,
|
||||
"listen": "127.0.0.1",
|
||||
"protocol": "vmess",
|
||||
"settings": {
|
||||
"clients": [
|
||||
{
|
||||
"id": ""
|
||||
}
|
||||
]
|
||||
},
|
||||
"streamSettings": {
|
||||
"network": "ws",
|
||||
"security": "none",
|
||||
"wsSettings": {
|
||||
"acceptProxyProtocol": true,
|
||||
"path": "/vmessws"
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
{
|
||||
"outbounds": [
|
||||
{
|
||||
"protocol": "freedom",
|
||||
"tag": "direct"
|
||||
},
|
||||
{
|
||||
"protocol": "blackhole",
|
||||
"tag": "block"
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
{
|
||||
"transport": {}
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
{
|
||||
"stats": {}
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
{
|
||||
"reverse": {}
|
||||
}
|
@ -19,7 +19,7 @@ namespace ProxySuper.WPF.Views
|
||||
/// <summary>
|
||||
/// TrojanEditorView.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
[MvxWindowPresentation(Identifier = nameof(XrayEditorView), Modal = true)]
|
||||
[MvxWindowPresentation(Identifier = nameof(XrayEditorView), Modal = false)]
|
||||
public partial class TrojanGoEditorView : MvxWindow
|
||||
{
|
||||
public TrojanGoEditorView()
|
||||
|
@ -8,7 +8,7 @@
|
||||
mc:Ignorable="d"
|
||||
Icon="/Resources/ProxySU.ico"
|
||||
Title="TrojanGoInstallerView" Height="450" Width="800">
|
||||
<Grid>
|
||||
<StackPanel>
|
||||
<TextBox IsReadOnly="True"
|
||||
Block.LineHeight="18"
|
||||
Background="#000"
|
||||
@ -27,15 +27,13 @@
|
||||
<StackPanel Margin="10" Orientation="Horizontal">
|
||||
<Label Content="安装" />
|
||||
<Button Height="24" Padding="10,0" Margin="10,0,0,0" IsEnabled="{Binding Connected}" Click="Install">一键安装</Button>
|
||||
<Button Height="24" Padding="10,0" Margin="10,0,0,0" IsEnabled="{Binding Connected}" Click="UpdateSettings">更新配置</Button>
|
||||
<Button Height="24" Padding="10,0" Margin="10,0,0,0" IsEnabled="{Binding Connected}" Click="Uninstall">卸载代理</Button>
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Margin="10" Orientation="Horizontal">
|
||||
<Label Content="配置" />
|
||||
<Button Height="24" Padding="10,0" Margin="10,0,0,0" IsEnabled="{Binding Connected}" Click="InstallCert">重新申请证书</Button>
|
||||
<Button Height="24" Padding="10,0" Margin="10,0,0,0" IsEnabled="{Binding Connected}" Click="InstallCert">手动续签证书</Button>
|
||||
<Button Height="24" Padding="10,0" Margin="10,0,0,0" IsEnabled="{Binding Connected}" Click="UploadWeb">上传伪装网站</Button>
|
||||
<Button Height="24" Padding="10,0" Margin="10,0,0,0" IsEnabled="{Binding Connected}" Click="UploadCert">上传自有证书</Button>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</StackPanel>
|
||||
</views:MvxWindow>
|
||||
|
@ -1,4 +1,5 @@
|
||||
using MvvmCross.Platforms.Wpf.Presenters.Attributes;
|
||||
using Microsoft.Win32;
|
||||
using MvvmCross.Platforms.Wpf.Presenters.Attributes;
|
||||
using MvvmCross.Platforms.Wpf.Views;
|
||||
using ProxySuper.Core.Models.Hosts;
|
||||
using ProxySuper.Core.Services;
|
||||
@ -6,6 +7,7 @@ using ProxySuper.Core.ViewModels;
|
||||
using Renci.SshNet;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
@ -23,7 +25,7 @@ namespace ProxySuper.WPF.Views
|
||||
/// <summary>
|
||||
/// TrojanGoInstallerView.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
[MvxWindowPresentation(Identifier = nameof(TrojanGoInstallerView), Modal = true)]
|
||||
[MvxWindowPresentation(Identifier = nameof(TrojanGoInstallerView), Modal = false)]
|
||||
public partial class TrojanGoInstallerView : MvxWindow
|
||||
{
|
||||
public TrojanGoInstallerView()
|
||||
@ -120,17 +122,42 @@ namespace ProxySuper.WPF.Views
|
||||
};
|
||||
}
|
||||
|
||||
private void Install(object sender, RoutedEventArgs e) { }
|
||||
private void Install(object sender, RoutedEventArgs e)
|
||||
{
|
||||
Task.Factory.StartNew(Project.Install);
|
||||
}
|
||||
|
||||
private void UpdateSettings(object sender, RoutedEventArgs e) { }
|
||||
|
||||
private void Uninstall(object sender, RoutedEventArgs e) { }
|
||||
private void Uninstall(object sender, RoutedEventArgs e)
|
||||
{
|
||||
Task.Factory.StartNew(Project.Uninstall);
|
||||
}
|
||||
|
||||
private void UploadWeb(object sender, RoutedEventArgs e) { }
|
||||
private void InstallCert(object sender, RoutedEventArgs e)
|
||||
{
|
||||
Task.Factory.StartNew(Project.InstallCertToTrojanGo);
|
||||
}
|
||||
|
||||
private void UploadCert(object sender, RoutedEventArgs e) { }
|
||||
|
||||
private void InstallCert(object sender, RoutedEventArgs e) { }
|
||||
private void UploadWeb(object sender, RoutedEventArgs e)
|
||||
{
|
||||
var fileDialog = new OpenFileDialog();
|
||||
fileDialog.Filter = "压缩文件|*.zip";
|
||||
fileDialog.FileOk += DoUploadWeb;
|
||||
fileDialog.ShowDialog();
|
||||
}
|
||||
|
||||
private void DoUploadWeb(object sender, CancelEventArgs e)
|
||||
{
|
||||
Task.Factory.StartNew(() =>
|
||||
{
|
||||
var file = sender as OpenFileDialog;
|
||||
using (var stream = file.OpenFile())
|
||||
{
|
||||
Project.UploadWeb(stream);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -19,7 +19,7 @@ namespace ProxySuper.WPF.Views
|
||||
/// <summary>
|
||||
/// XrayEditorView.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
[MvxWindowPresentation(Identifier = nameof(XrayEditorView), Modal = true)]
|
||||
[MvxWindowPresentation(Identifier = nameof(XrayEditorView), Modal = false)]
|
||||
public partial class XrayEditorView : MvxWindow
|
||||
{
|
||||
public XrayEditorView()
|
||||
|
@ -6,6 +6,7 @@
|
||||
xmlns:views="clr-namespace:MvvmCross.Platforms.Wpf.Views;assembly=MvvmCross.Platforms.Wpf"
|
||||
xmlns:local="clr-namespace:ProxySuper.WPF.Views"
|
||||
mc:Ignorable="d"
|
||||
WindowStartupLocation="CenterScreen"
|
||||
Icon="/Resources/ProxySU.ico"
|
||||
Title="XrayInstallerView" Height="450" Width="800">
|
||||
<StackPanel>
|
||||
@ -34,7 +35,7 @@
|
||||
|
||||
<StackPanel Margin="10" Orientation="Horizontal">
|
||||
<Label Content="配置" />
|
||||
<Button Height="24" Padding="10,0" Margin="10,0,0,0" IsEnabled="{Binding Connected}" Click="InstallCert">重新申请证书</Button>
|
||||
<Button Height="24" Padding="10,0" Margin="10,0,0,0" IsEnabled="{Binding Connected}" Click="InstallCert">手动续签证书</Button>
|
||||
<Button Height="24" Padding="10,0" Margin="10,0,0,0" IsEnabled="{Binding Connected}" Click="UploadWeb">上传伪装网站</Button>
|
||||
<Button Height="24" Padding="10,0" Margin="10,0,0,0" IsEnabled="{Binding Connected}" Click="UploadCert">上传自有证书</Button>
|
||||
</StackPanel>
|
||||
|
@ -17,7 +17,7 @@ namespace ProxySuper.WPF.Views
|
||||
/// <summary>
|
||||
/// XrayInstallerView.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
[MvxWindowPresentation(Identifier = nameof(XrayInstallerView), Modal = true)]
|
||||
[MvxWindowPresentation(Identifier = nameof(XrayInstallerView), Modal = false)]
|
||||
public partial class XrayInstallerView : MvxWindow
|
||||
{
|
||||
public XrayInstallerView()
|
||||
|
Loading…
Reference in New Issue
Block a user