From 5db61a02b5ccdb96184a5972e650edf316558b04 Mon Sep 17 00:00:00 2001 From: 123 <123@github.com> Date: Sat, 17 Dec 2022 10:41:46 +0800 Subject: [PATCH] hysterial model --- .../Models/Projects/HysteriaSettings.cs | 23 +++++++ .../Models/Projects/ProjectType.cs | 1 + ProxySuper.Core/Models/Record.cs | 5 ++ ProxySuper.Core/ProxySuper.Core.csproj | 3 + .../ViewModels/HysteriaEditorViewModel.cs | 63 +++++++++++++++++++ .../ViewModels/HysteriaInstallViewModel.cs | 25 ++++++++ 6 files changed, 120 insertions(+) create mode 100644 ProxySuper.Core/Models/Projects/HysteriaSettings.cs create mode 100644 ProxySuper.Core/ViewModels/HysteriaEditorViewModel.cs create mode 100644 ProxySuper.Core/ViewModels/HysteriaInstallViewModel.cs diff --git a/ProxySuper.Core/Models/Projects/HysteriaSettings.cs b/ProxySuper.Core/Models/Projects/HysteriaSettings.cs new file mode 100644 index 0000000..087884f --- /dev/null +++ b/ProxySuper.Core/Models/Projects/HysteriaSettings.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProxySuper.Core.Models.Projects +{ + public class HysteriaSettings + { + public string Domain { get; set; } = ""; + + public string Obfs { get; set; } = ""; + + public string Email { get; set; } = ""; + + public int Port { get; set; } = 36712; + + public int UpMbps { get; set; } = 300; + + public int DownMbps { get; set; } = 300; + } +} diff --git a/ProxySuper.Core/Models/Projects/ProjectType.cs b/ProxySuper.Core/Models/Projects/ProjectType.cs index 15b3e48..ec2a37d 100644 --- a/ProxySuper.Core/Models/Projects/ProjectType.cs +++ b/ProxySuper.Core/Models/Projects/ProjectType.cs @@ -8,5 +8,6 @@ Brook = 3, V2ray = 4, MTProtoGo = 5, + Hysteria = 6, } } diff --git a/ProxySuper.Core/Models/Record.cs b/ProxySuper.Core/Models/Record.cs index b48001e..54629f5 100644 --- a/ProxySuper.Core/Models/Record.cs +++ b/ProxySuper.Core/Models/Record.cs @@ -51,6 +51,9 @@ namespace ProxySuper.Core.Models [JsonProperty("mtProtoGoSettings")] public MTProtoGoSettings MTProtoGoSettings { get; set; } + [JsonProperty] + public HysteriaSettings HysteriaSettings { get; set; } + [JsonIgnore] public ProjectType Type @@ -67,6 +70,8 @@ namespace ProxySuper.Core.Models if (MTProtoGoSettings != null) return ProjectType.MTProtoGo; + if (HysteriaSettings != null) return ProjectType.Hysteria; + return ProjectType.Brook; } } diff --git a/ProxySuper.Core/ProxySuper.Core.csproj b/ProxySuper.Core/ProxySuper.Core.csproj index 091ab17..d181519 100644 --- a/ProxySuper.Core/ProxySuper.Core.csproj +++ b/ProxySuper.Core/ProxySuper.Core.csproj @@ -90,6 +90,7 @@ + @@ -122,6 +123,8 @@ + + diff --git a/ProxySuper.Core/ViewModels/HysteriaEditorViewModel.cs b/ProxySuper.Core/ViewModels/HysteriaEditorViewModel.cs new file mode 100644 index 0000000..7de577a --- /dev/null +++ b/ProxySuper.Core/ViewModels/HysteriaEditorViewModel.cs @@ -0,0 +1,63 @@ +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; +using System.Windows.Navigation; + +namespace ProxySuper.Core.ViewModels +{ + public class HysteriaEditorViewModel : MvxViewModel + { + public string Id { get; set; } + + public Host Host { get; set; } + + public HysteriaSettings Settings { get; set; } + + public IMvxNavigationService NavigationService { get; } + + public HysteriaEditorViewModel(IMvxNavigationService mvxNavigationService) + { + NavigationService = mvxNavigationService; + } + + public override void Prepare(Record parameter) + { + var record = Utils.DeepClone(parameter); + + Id = record.Id; + Host = record.Host; + Settings = record.HysteriaSettings; + } + + public void Save() + { + NavigationService.Close(this, new Record + { + Id = Id, + Host = Host, + HysteriaSettings = Settings, + }); + } + + public void SaveAndInstall() + { + var record = new Record + { + Id = Id, + Host = Host, + HysteriaSettings = Settings, + }; + + NavigationService.Close(this, record); + NavigationService.Navigate(record); + } + } +} diff --git a/ProxySuper.Core/ViewModels/HysteriaInstallViewModel.cs b/ProxySuper.Core/ViewModels/HysteriaInstallViewModel.cs new file mode 100644 index 0000000..ec0d49d --- /dev/null +++ b/ProxySuper.Core/ViewModels/HysteriaInstallViewModel.cs @@ -0,0 +1,25 @@ +using MvvmCross.ViewModels; +using ProxySuper.Core.Models; +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; + +namespace ProxySuper.Core.ViewModels +{ + public class HysteriaInstallViewModel : MvxViewModel + { + public Host Host { get; set; } + + public HysteriaSettings Settings { get; set; } + + public override void Prepare(Record parameter) + { + Host = parameter.Host; + Settings = parameter.HysteriaSettings; + } + } +}