mirror of
https://github.com/proxysu/ProxySU.git
synced 2024-11-21 20:56:08 +03:00
MTProxy-Go
This commit is contained in:
parent
eab70cc48c
commit
7b7251279f
34
ProxySuper.Core/Models/Projects/MTProxyGoSettings.cs
Normal file
34
ProxySuper.Core/Models/Projects/MTProxyGoSettings.cs
Normal file
@ -0,0 +1,34 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace ProxySuper.Core.Models.Projects
|
||||
{
|
||||
public class MTProxyGoSettings : IProjectSettings
|
||||
{
|
||||
public MTProxyGoSettings()
|
||||
{
|
||||
Port = 443;
|
||||
|
||||
Domain = string.Empty;
|
||||
|
||||
Cleartext = "bing.com";
|
||||
|
||||
SecretText = string.Empty;
|
||||
}
|
||||
|
||||
public int Port { get; set; }
|
||||
|
||||
public string Domain { get; set; }
|
||||
|
||||
public List<int> FreePorts => new List<int> { Port };
|
||||
|
||||
public string Email => "";
|
||||
|
||||
public string Cleartext { get; set; }
|
||||
|
||||
public string SecretText { get; set; }
|
||||
}
|
||||
}
|
@ -47,6 +47,9 @@ namespace ProxySuper.Core.Models
|
||||
[JsonProperty("brook")]
|
||||
public BrookSettings BrookSettings { get; set; }
|
||||
|
||||
[JsonProperty("mtProxyGoSettings")]
|
||||
public MTProxyGoSettings MTProxyGoSettings { get; set; }
|
||||
|
||||
|
||||
[JsonIgnore]
|
||||
public ProjectType Type
|
||||
|
@ -75,6 +75,7 @@
|
||||
<Compile Include="Models\Projects\BrookType.cs" />
|
||||
<Compile Include="Models\Projects\IProjectSettings.cs" />
|
||||
<Compile Include="Models\Hosts\LocalProxy.cs" />
|
||||
<Compile Include="Models\Projects\MTProxyGoSettings.cs" />
|
||||
<Compile Include="Models\Projects\NaiveProxySettings.cs" />
|
||||
<Compile Include="Models\Projects\ProjectType.cs" />
|
||||
<Compile Include="Models\Projects\TrojanGoSettings.cs" />
|
||||
@ -89,6 +90,7 @@
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Helpers\Utils.cs" />
|
||||
<Compile Include="Services\BrookService.cs" />
|
||||
<Compile Include="Services\MTProxyGoService.cs" />
|
||||
<Compile Include="Services\NaiveProxyService.cs" />
|
||||
<Compile Include="Services\ServiceBase.cs" />
|
||||
<Compile Include="Services\ShareLink.cs" />
|
||||
@ -103,6 +105,8 @@
|
||||
<Compile Include="ViewModels\BrookInstallViewModel.cs" />
|
||||
<Compile Include="ViewModels\EnableRootViewModel.cs" />
|
||||
<Compile Include="ViewModels\HomeViewModel.cs" />
|
||||
<Compile Include="ViewModels\MTProxyGoEditorViewModel.cs" />
|
||||
<Compile Include="ViewModels\MTProxyGoInstallViewModel.cs" />
|
||||
<Compile Include="ViewModels\NaiveProxyConfigViewModel.cs" />
|
||||
<Compile Include="ViewModels\NaiveProxyEditorViewModel.cs" />
|
||||
<Compile Include="ViewModels\NaiveProxyInstallViewModel.cs" />
|
||||
|
143
ProxySuper.Core/Services/MTProxyGoService.cs
Normal file
143
ProxySuper.Core/Services/MTProxyGoService.cs
Normal file
@ -0,0 +1,143 @@
|
||||
using ProxySuper.Core.Models.Hosts;
|
||||
using ProxySuper.Core.Models.Projects;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
|
||||
namespace ProxySuper.Core.Services
|
||||
{
|
||||
public class MTProxyGoService : ServiceBase<MTProxyGoSettings>
|
||||
{
|
||||
public MTProxyGoService(Host host, MTProxyGoSettings settings) : base(host, settings)
|
||||
{
|
||||
}
|
||||
|
||||
public void Install()
|
||||
{
|
||||
Task.Factory.StartNew(() =>
|
||||
{
|
||||
try
|
||||
{
|
||||
Progress.Step = "1. 检测系统环境";
|
||||
Progress.Percentage = 0;
|
||||
|
||||
EnsureRootUser();
|
||||
EnsureSystemEnv();
|
||||
Progress.Percentage = 15;
|
||||
|
||||
Progress.Step = "2. 安装必要的系统工具";
|
||||
InstallSystemTools();
|
||||
Progress.Percentage = 25;
|
||||
|
||||
Progress.Step = "3. 配置防火墙";
|
||||
ConfigFirewalld();
|
||||
Progress.Percentage = 35;
|
||||
|
||||
Progress.Step = "4. 安装docker";
|
||||
InstallDocker();
|
||||
Progress.Percentage = 50;
|
||||
|
||||
Progress.Step = "5. 生成密钥";
|
||||
Settings.SecretText = RunCmd($"docker run nineseconds/mtg generate-secret {Settings.Cleartext}");
|
||||
Progress.Percentage = 65;
|
||||
|
||||
Progress.Step = "6. 生成配置文件";
|
||||
Progress.Desc = "创建配置";
|
||||
RunCmd("touch /etc/mtg.toml");
|
||||
|
||||
Progress.Desc = "写入配置内容";
|
||||
RunCmd($"echo secret=\"{Settings.SecretText}\" > /etc/mtg.toml");
|
||||
RunCmd($"echo bind-to=\"0.0.0.0:{Settings.Port}\" >> /etc/mtg.toml");
|
||||
Progress.Percentage = 80;
|
||||
|
||||
Progress.Step = "7. 启动MTProxy服务";
|
||||
RunCmd($"docker run -d -v /etc/mtg.toml:/config.toml --name=mtg --restart=always -p {Settings.Port + ":" + Settings.Port} nineseconds/mtg");
|
||||
Progress.Desc = "设置自启动MTProxy服务";
|
||||
|
||||
Progress.Step = "安装完成";
|
||||
Progress.Percentage = 100;
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void Uninstall()
|
||||
{
|
||||
Task.Factory.StartNew(() =>
|
||||
{
|
||||
try
|
||||
{
|
||||
Progress.Percentage = 0;
|
||||
Progress.Step = "卸载MTProxy";
|
||||
|
||||
Progress.Desc = "检测系统环境";
|
||||
EnsureRootUser();
|
||||
Progress.Percentage = 30;
|
||||
|
||||
Progress.Desc = "删除docker容器";
|
||||
var cid = RunCmd("docker ps -q --filter name=mtg");
|
||||
RunCmd($"docker stop {cid}");
|
||||
RunCmd($"docker rm {cid}");
|
||||
Progress.Percentage = 100;
|
||||
Progress.Desc = "卸载完成";
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void UpdateSettings()
|
||||
{
|
||||
Task.Factory.StartNew(() =>
|
||||
{
|
||||
try
|
||||
{
|
||||
Progress.Percentage = 0;
|
||||
Progress.Step = "卸载MTProxy";
|
||||
|
||||
|
||||
Progress.Desc = "停止MTProxy服务";
|
||||
var cid = RunCmd("docker ps -q --filter name=mtg");
|
||||
RunCmd($"docker stop {cid}");
|
||||
Progress.Percentage = 50;
|
||||
|
||||
Progress.Desc = "修改配置文件";
|
||||
RunCmd($"echo secret=\"{Settings.SecretText}\" > /etc/mtg.toml");
|
||||
RunCmd($"echo bind-to=\"0.0.0.0:{Settings.Port}\" >> /etc/mtg.toml");
|
||||
Progress.Percentage = 80;
|
||||
|
||||
Progress.Desc = "重启MTProxy服务";
|
||||
RunCmd($"docker restart {cid}");
|
||||
|
||||
Progress.Percentage = 100;
|
||||
Progress.Desc = "更新配置成功";
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void InstallDocker()
|
||||
{
|
||||
Progress.Desc = "执行docker安装脚本";
|
||||
RunCmd("yes | curl https://get.docker.com | sh");
|
||||
|
||||
if (!FileExists("/usr/bin/docker"))
|
||||
{
|
||||
Progress.Desc = "docker安装失败";
|
||||
throw new Exception("docker安装失败");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -100,6 +100,8 @@ namespace ProxySuper.Core.ViewModels
|
||||
|
||||
public IMvxCommand AddNaiveProxyCommand => new MvxAsyncCommand(AddNaiveProxyRecord);
|
||||
|
||||
public IMvxCommand AddMTProxyGoCommand => new MvxAsyncCommand(AddMTProxyGoRecord);
|
||||
|
||||
public IMvxCommand AddBrookCommand => new MvxAsyncCommand(AddBrookRecord);
|
||||
|
||||
public IMvxCommand RemoveCommand => new MvxAsyncCommand<string>(DeleteRecord);
|
||||
@ -153,6 +155,21 @@ namespace ProxySuper.Core.ViewModels
|
||||
SaveToJson();
|
||||
}
|
||||
|
||||
public async Task AddMTProxyGoRecord()
|
||||
{
|
||||
Record record = new Record();
|
||||
record.Id = Utils.GetTickID();
|
||||
record.Host = new Host();
|
||||
record.MTProxyGoSettings = new MTProxyGoSettings();
|
||||
|
||||
var result = await _navigationService.Navigate<MTProxyGoEditorViewModel, Record, Record>(record);
|
||||
if (result == null) return;
|
||||
|
||||
Records.Add(result);
|
||||
|
||||
SaveToJson();
|
||||
}
|
||||
|
||||
public async Task AddNaiveProxyRecord()
|
||||
{
|
||||
Record record = new Record();
|
||||
|
66
ProxySuper.Core/ViewModels/MTProxyGoEditorViewModel.cs
Normal file
66
ProxySuper.Core/ViewModels/MTProxyGoEditorViewModel.cs
Normal file
@ -0,0 +1,66 @@
|
||||
using MvvmCross.Commands;
|
||||
using MvvmCross.Navigation;
|
||||
using MvvmCross.ViewModels;
|
||||
using ProxySuper.Core.Models;
|
||||
using ProxySuper.Core.Models.Hosts;
|
||||
using ProxySuper.Core.Models.Projects;
|
||||
using ProxySuper.Core.Services;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace ProxySuper.Core.ViewModels
|
||||
{
|
||||
public class MTProxyGoEditorViewModel : MvxViewModel<Record, Record>
|
||||
{
|
||||
public MTProxyGoEditorViewModel(IMvxNavigationService navigationService)
|
||||
{
|
||||
NavigationService = navigationService;
|
||||
}
|
||||
|
||||
public IMvxNavigationService NavigationService { get; }
|
||||
|
||||
public IMvxCommand SaveCommand => new MvxCommand(Save);
|
||||
|
||||
public IMvxCommand SaveAndInstallCommand => new MvxCommand(SaveAndInstall);
|
||||
|
||||
public string Id { get; set; }
|
||||
|
||||
public Host Host { get; set; }
|
||||
|
||||
public MTProxyGoSettings Settings { get; set; }
|
||||
|
||||
public override void Prepare(Record parameter)
|
||||
{
|
||||
var record = Utils.DeepClone(parameter);
|
||||
|
||||
Id = record.Id;
|
||||
Host = record.Host;
|
||||
Settings = record.MTProxyGoSettings;
|
||||
}
|
||||
|
||||
private void Save()
|
||||
{
|
||||
NavigationService.Close(this, new Record
|
||||
{
|
||||
Id = this.Id,
|
||||
Host = this.Host,
|
||||
MTProxyGoSettings = Settings,
|
||||
});
|
||||
}
|
||||
|
||||
private void SaveAndInstall()
|
||||
{
|
||||
var record = new Record
|
||||
{
|
||||
Id = this.Id,
|
||||
Host = this.Host,
|
||||
MTProxyGoSettings = Settings,
|
||||
};
|
||||
NavigationService.Close(this, record);
|
||||
NavigationService.Navigate<MTProxyGoInstallViewModel, Record>(record);
|
||||
}
|
||||
}
|
||||
}
|
79
ProxySuper.Core/ViewModels/MTProxyGoInstallViewModel.cs
Normal file
79
ProxySuper.Core/ViewModels/MTProxyGoInstallViewModel.cs
Normal file
@ -0,0 +1,79 @@
|
||||
using MvvmCross.Commands;
|
||||
using MvvmCross.ViewModels;
|
||||
using ProxySuper.Core.Models;
|
||||
using ProxySuper.Core.Models.Hosts;
|
||||
using ProxySuper.Core.Models.Projects;
|
||||
using ProxySuper.Core.Services;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace ProxySuper.Core.ViewModels
|
||||
{
|
||||
public class MTProxyGoInstallViewModel : MvxViewModel<Record>
|
||||
{
|
||||
Host _host;
|
||||
|
||||
MTProxyGoSettings _settings;
|
||||
|
||||
MTProxyGoService _mtproxyService;
|
||||
|
||||
public override void Prepare(Record parameter)
|
||||
{
|
||||
_host = parameter.Host;
|
||||
_settings = parameter.MTProxyGoSettings;
|
||||
}
|
||||
|
||||
public override Task Initialize()
|
||||
{
|
||||
_mtproxyService = new MTProxyGoService(_host, _settings);
|
||||
_mtproxyService.Progress.StepUpdate = () => RaisePropertyChanged("Progress");
|
||||
_mtproxyService.Progress.LogsUpdate = () => RaisePropertyChanged("Logs");
|
||||
_mtproxyService.Connect();
|
||||
return base.Initialize();
|
||||
}
|
||||
|
||||
public override void ViewDestroy(bool viewFinishing = true)
|
||||
{
|
||||
_mtproxyService.Disconnect();
|
||||
this.SaveInstallLog();
|
||||
base.ViewDestroy(viewFinishing);
|
||||
}
|
||||
|
||||
public ProjectProgress Progress
|
||||
{
|
||||
get => _mtproxyService.Progress;
|
||||
}
|
||||
|
||||
public string Logs
|
||||
{
|
||||
get => _mtproxyService.Progress.Logs;
|
||||
}
|
||||
|
||||
|
||||
#region Command
|
||||
|
||||
public IMvxCommand InstallCommand => new MvxCommand(_mtproxyService.Install);
|
||||
|
||||
public IMvxCommand UpdateSettingsCommand => new MvxCommand(_mtproxyService.UpdateSettings);
|
||||
|
||||
public IMvxCommand UninstallCommand => new MvxCommand(_mtproxyService.Uninstall);
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
private void SaveInstallLog()
|
||||
{
|
||||
if (!Directory.Exists("Logs"))
|
||||
{
|
||||
Directory.CreateDirectory("Logs");
|
||||
}
|
||||
|
||||
var fileName = System.IO.Path.Combine("Logs", DateTime.Now.ToString("yyyy-MM-dd hh-mm") + ".mtproxy-go.txt");
|
||||
File.WriteAllText(fileName, Logs);
|
||||
}
|
||||
}
|
||||
}
|
@ -81,7 +81,7 @@ namespace ProxySuper.Core.ViewModels
|
||||
Directory.CreateDirectory("Logs");
|
||||
}
|
||||
|
||||
var fileName = Path.Combine("Logs", DateTime.Now.ToString("yyyy-MM-dd hh-mm") + ".xary.txt");
|
||||
var fileName = Path.Combine("Logs", DateTime.Now.ToString("yyyy-MM-dd hh-mm") + ".v2ray.txt");
|
||||
File.WriteAllText(fileName, Logs);
|
||||
}
|
||||
}
|
||||
|
@ -135,6 +135,12 @@
|
||||
<Compile Include="Views\HomeView.xaml.cs">
|
||||
<DependentUpon>HomeView.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Views\MTProxyGo\MTProxyGoEditorView.xaml.cs">
|
||||
<DependentUpon>MTProxyGoEditorView.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Views\MTProxyGo\MTProxyInstallView.xaml.cs">
|
||||
<DependentUpon>MTProxyInstallView.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Views\NaiveProxy\NaiveProxyConfigView.xaml.cs">
|
||||
<DependentUpon>NaiveProxyConfigView.xaml</DependentUpon>
|
||||
</Compile>
|
||||
@ -278,6 +284,14 @@
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Page>
|
||||
<Page Include="Views\MTProxyGo\MTProxyGoEditorView.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="Views\MTProxyGo\MTProxyInstallView.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="Views\NaiveProxy\NaiveProxyConfigView.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
|
@ -1,7 +1,7 @@
|
||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib">
|
||||
|
||||
|
||||
<!--common-->
|
||||
<sys:String x:Key="Random">Random</sys:String>
|
||||
<sys:String x:Key="Save">Save</sys:String>
|
||||
@ -65,7 +65,7 @@
|
||||
<sys:String x:Key="ProxyTypeHttp">Http</sys:String>
|
||||
<sys:String x:Key="ProxyTypeSocks5">Socks5</sys:String>
|
||||
|
||||
|
||||
|
||||
<!--Xray-->
|
||||
<sys:String x:Key="VlessXtlsDesc" xml:space="preserve">VLESS over TCP With XTLS
Preferred</sys:String>
|
||||
<sys:String x:Key="VlessTcpDesc" xml:space="preserve">VLESS over TCP with TLS
XTLS is Preferred</sys:String>
|
||||
@ -100,7 +100,7 @@
|
||||
<sys:String x:Key="TrojanPort">Trojan Port</sys:String>
|
||||
<sys:String x:Key="XrayPort">xray Port</sys:String>
|
||||
<sys:String x:Key="XrayPortDefault">default port is 443</sys:String>
|
||||
|
||||
|
||||
<!--xray installer-->
|
||||
<sys:String x:Key="XrayInstallerInstall">Install</sys:String>
|
||||
<sys:String x:Key="XrayInstallerUpdateSettings">UpdateSettings</sys:String>
|
||||
@ -119,11 +119,17 @@
|
||||
<sys:String x:Key="TrojanGoMaskDomain">GuiseHost</sys:String>
|
||||
<sys:String x:Key="TrojanGoWebSocketPath">WS Path</sys:String>
|
||||
<sys:String x:Key="TrojanGoWebSocketDomain">WS Domain</sys:String>
|
||||
|
||||
|
||||
<!--Naive Proxy-->
|
||||
<sys:String x:Key="NaiveProxyDomain">Address</sys:String>
|
||||
<sys:String x:Key="NaiveProxyPort">Port</sys:String>
|
||||
<sys:String x:Key="NaiveProxyUserName">UserName</sys:String>
|
||||
<sys:String x:Key="NaiveProxyPassword">Password</sys:String>
|
||||
<sys:String x:Key="NaiveProxyMaskDomain">GuiseHost</sys:String>
|
||||
|
||||
<!--MTProxy Go-->
|
||||
<sys:String x:Key="MTProxyDomain">Address</sys:String>
|
||||
<sys:String x:Key="MTProxyPort">Port</sys:String>
|
||||
<sys:String x:Key="MTProxyCleartext">Cleantext</sys:String>
|
||||
<sys:String x:Key="MTProxySecretText">Secret</sys:String>
|
||||
</ResourceDictionary>
|
@ -126,4 +126,10 @@
|
||||
<sys:String x:Key="NaiveProxyUserName">用戶名</sys:String>
|
||||
<sys:String x:Key="NaiveProxyPassword">密碼</sys:String>
|
||||
<sys:String x:Key="NaiveProxyMaskDomain">偽裝網站</sys:String>
|
||||
|
||||
<!--MTProxy Go-->
|
||||
<sys:String x:Key="MTProxyDomain">域名/IP</sys:String>
|
||||
<sys:String x:Key="MTProxyPort">端口</sys:String>
|
||||
<sys:String x:Key="MTProxyCleartext">加密前字符</sys:String>
|
||||
<sys:String x:Key="MTProxySecretText">密鑰</sys:String>
|
||||
</ResourceDictionary>
|
@ -127,4 +127,10 @@
|
||||
<sys:String x:Key="NaiveProxyUserName">用户名</sys:String>
|
||||
<sys:String x:Key="NaiveProxyPassword">密码</sys:String>
|
||||
<sys:String x:Key="NaiveProxyMaskDomain">伪装网站</sys:String>
|
||||
|
||||
<!--MTProxy Go-->
|
||||
<sys:String x:Key="MTProxyDomain">域名/IP</sys:String>
|
||||
<sys:String x:Key="MTProxyPort">端口</sys:String>
|
||||
<sys:String x:Key="MTProxyCleartext">加密前字符</sys:String>
|
||||
<sys:String x:Key="MTProxySecretText">密钥</sys:String>
|
||||
</ResourceDictionary>
|
@ -17,6 +17,7 @@
|
||||
<MenuItem Header="{DynamicResource MainMenuAddHost}" Padding="10,3">
|
||||
<MenuItem Padding="0,5" Header="Xray" Command="{Binding AddXrayCommand}"></MenuItem>
|
||||
<MenuItem Padding="0,5" Header="V2ray" Command="{Binding AddV2rayCommand}"></MenuItem>
|
||||
<MenuItem Padding="0,5" Header="MTProxy-Go" Command="{Binding AddMTProxyGoCommand}"></MenuItem>
|
||||
<MenuItem Padding="0,5" Header="Trojan-Go" Command="{Binding AddTrojanGoCommand}"></MenuItem>
|
||||
<MenuItem Padding="0,5" Header="NaiveProxy" Command="{Binding AddNaiveProxyCommand}"></MenuItem>
|
||||
<MenuItem Padding="0,5" Header="Brook" Command="{Binding AddBrookCommand}"></MenuItem>
|
||||
|
72
ProxySuper.WPF/Views/MTProxyGo/MTProxyGoEditorView.xaml
Normal file
72
ProxySuper.WPF/Views/MTProxyGo/MTProxyGoEditorView.xaml
Normal file
@ -0,0 +1,72 @@
|
||||
<views:MvxWindow x:Class="ProxySuper.WPF.Views.MTProxyGo.MTProxyGoEditorView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:ProxySuper.WPF.Views.MTProxyGo"
|
||||
xmlns:views="clr-namespace:MvvmCross.Platforms.Wpf.Views;assembly=MvvmCross.Platforms.Wpf"
|
||||
xmlns:ctrl="clr-namespace:ProxySuper.WPF.Controls"
|
||||
mc:Ignorable="d"
|
||||
BorderThickness="0,1,0,0"
|
||||
BorderBrush="#eee"
|
||||
Icon="/Resources/ProxySU.ico"
|
||||
WindowStartupLocation="CenterScreen"
|
||||
Title="MTProxy-Go编辑配置" Height="600" Width="1000">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="310" />
|
||||
<ColumnDefinition Width="1" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<StackPanel Grid.Column="0" Margin="10">
|
||||
<ctrl:HostControl />
|
||||
</StackPanel>
|
||||
<StackPanel Grid.Column="1" Background="#EEE"></StackPanel>
|
||||
|
||||
<StackPanel Grid.Column="2">
|
||||
<Grid Margin="10">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="36" />
|
||||
<RowDefinition Height="36" />
|
||||
<RowDefinition Height="36" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="120" />
|
||||
<ColumnDefinition Width="200" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Label Content="{DynamicResource MTProxyDomain}" Grid.Row="0" Grid.Column="0" />
|
||||
<TextBox Text="{Binding Settings.Domain}" Grid.Row="0" Grid.Column="1" />
|
||||
|
||||
<Label Content="{DynamicResource MTProxyPort}" Grid.Row="1" Grid.Column="0" />
|
||||
<TextBox Text="{Binding Settings.Port}" Grid.Row="1" Grid.Column="1" />
|
||||
|
||||
<Label Content="{DynamicResource MTProxyCleartext}" Grid.Row="2" Grid.Column="0" />
|
||||
<TextBox Text="{Binding Settings.Cleartext}" Grid.Row="2" Grid.Column="1" />
|
||||
</Grid>
|
||||
|
||||
|
||||
<Border Grid.Row="1"
|
||||
BorderBrush="#eee"
|
||||
BorderThickness="0,1,0,0">
|
||||
<StackPanel Orientation="Horizontal"
|
||||
Margin="0,20,0,0"
|
||||
HorizontalAlignment="Right">
|
||||
<Button Content="{DynamicResource Save}"
|
||||
Command="{Binding SaveCommand}"
|
||||
HorizontalAlignment="Right"
|
||||
VerticalAlignment="Center"
|
||||
Padding="10,5" />
|
||||
|
||||
<Button Content="{DynamicResource SaveAndInstall}"
|
||||
Command="{Binding SaveAndInstallCommand}"
|
||||
HorizontalAlignment="Right"
|
||||
VerticalAlignment="Center"
|
||||
Padding="10,5"
|
||||
Margin="20,0,40,0" />
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</views:MvxWindow>
|
28
ProxySuper.WPF/Views/MTProxyGo/MTProxyGoEditorView.xaml.cs
Normal file
28
ProxySuper.WPF/Views/MTProxyGo/MTProxyGoEditorView.xaml.cs
Normal file
@ -0,0 +1,28 @@
|
||||
using MvvmCross.Platforms.Wpf.Views;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace ProxySuper.WPF.Views.MTProxyGo
|
||||
{
|
||||
/// <summary>
|
||||
/// MTProxyGoEditorView.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
public partial class MTProxyGoEditorView : MvxWindow
|
||||
{
|
||||
public MTProxyGoEditorView()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
34
ProxySuper.WPF/Views/MTProxyGo/MTProxyInstallView.xaml
Normal file
34
ProxySuper.WPF/Views/MTProxyGo/MTProxyInstallView.xaml
Normal file
@ -0,0 +1,34 @@
|
||||
<views:MvxWindow x:Class="ProxySuper.WPF.Views.MTProxyGo.MTProxyInstallView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:ProxySuper.WPF.Views.MTProxyGo"
|
||||
xmlns:ctrl="clr-namespace:ProxySuper.WPF.Controls"
|
||||
xmlns:views="clr-namespace:MvvmCross.Platforms.Wpf.Views;assembly=MvvmCross.Platforms.Wpf"
|
||||
mc:Ignorable="d"
|
||||
WindowStartupLocation="CenterScreen"
|
||||
Title="MTProxy-Go安装" Height="600" Width="1000">
|
||||
<StackPanel>
|
||||
<ctrl:ProgressControl />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="20,0,0,0">
|
||||
<Label Content="{DynamicResource Install}" FontWeight="Bold" FontSize="14" />
|
||||
|
||||
<Button Content="{DynamicResource XrayInstallerInstall}"
|
||||
Command="{Binding Path=InstallCommand}"
|
||||
Padding="10,3"
|
||||
Margin="10,0,0,0" />
|
||||
|
||||
<Button Content="{DynamicResource XrayInstallerUpdateSettings}"
|
||||
Command="{Binding Path=UpdateSettingsCommand}"
|
||||
Padding="10,3"
|
||||
Margin="10,0,0,0" />
|
||||
|
||||
<Button Content="{DynamicResource XrayInstallerUninstall}"
|
||||
Command="{Binding Path=UninstallCommand}"
|
||||
Padding="10,3"
|
||||
Margin="10,0,0,0" />
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
</views:MvxWindow>
|
28
ProxySuper.WPF/Views/MTProxyGo/MTProxyInstallView.xaml.cs
Normal file
28
ProxySuper.WPF/Views/MTProxyGo/MTProxyInstallView.xaml.cs
Normal file
@ -0,0 +1,28 @@
|
||||
using MvvmCross.Platforms.Wpf.Views;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace ProxySuper.WPF.Views.MTProxyGo
|
||||
{
|
||||
/// <summary>
|
||||
/// MTProxyInstallView.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
public partial class MTProxyInstallView : MvxWindow
|
||||
{
|
||||
public MTProxyInstallView()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
@ -8,7 +8,7 @@
|
||||
mc:Ignorable="d"
|
||||
Icon="/Resources/ProxySU.ico"
|
||||
WindowStartupLocation="CenterScreen"
|
||||
Title="TrojanGoConfigView" Height="450" Width="800">
|
||||
Title="Trojan-Go节点配置" Height="450" Width="800">
|
||||
<Grid Margin="10">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="140" />
|
||||
|
@ -3,15 +3,15 @@
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:views="clr-namespace:MvvmCross.Platforms.Wpf.Views;assembly=MvvmCross.Platforms.Wpf"
|
||||
xmlns:local="clr-namespace:ProxySuper.WPF.Views"
|
||||
xmlns:views="clr-namespace:MvvmCross.Platforms.Wpf.Views;assembly=MvvmCross.Platforms.Wpf"
|
||||
xmlns:ctrl="clr-namespace:ProxySuper.WPF.Controls"
|
||||
mc:Ignorable="d"
|
||||
BorderThickness="0,1,0,0"
|
||||
BorderBrush="#eee"
|
||||
Icon="/Resources/ProxySU.ico"
|
||||
WindowStartupLocation="CenterScreen"
|
||||
Title="Trojan-Go" Height="600" Width="1000">
|
||||
Title="Trojan-Go编辑配置" Height="600" Width="1000">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="310" />
|
||||
|
@ -8,7 +8,7 @@
|
||||
xmlns:views="clr-namespace:MvvmCross.Platforms.Wpf.Views;assembly=MvvmCross.Platforms.Wpf"
|
||||
mc:Ignorable="d"
|
||||
WindowStartupLocation="CenterScreen"
|
||||
Title="V2ray安装" Height="600" Width="1000">
|
||||
Title="Trojan-Go安装" Height="600" Width="1000">
|
||||
<StackPanel>
|
||||
<ctrl:ProgressControl />
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user