1
0
mirror of https://github.com/proxysu/ProxySU.git synced 2024-11-22 21:26:09 +03:00
ProxySU/ProxySuper.Core/Models/Record.cs

130 lines
3.3 KiB
C#
Raw Normal View History

2021-07-08 13:37:32 +03:00
using MvvmCross.ViewModels;
2021-05-16 04:12:47 +03:00
using Newtonsoft.Json;
2021-05-14 14:07:19 +03:00
using ProxySuper.Core.Models.Hosts;
using ProxySuper.Core.Models.Projects;
2021-05-25 13:28:37 +03:00
using ProxySuper.Core.Services;
2021-08-23 10:59:34 +03:00
using System;
2021-05-14 14:07:19 +03:00
using System.Text;
namespace ProxySuper.Core.Models
{
2021-05-23 09:24:13 +03:00
[JsonObject]
2021-05-16 04:12:47 +03:00
public class Record : MvxViewModel
2021-05-14 14:07:19 +03:00
{
2021-05-25 13:28:37 +03:00
public Record()
{
_isChecked = false;
}
2021-05-23 09:24:13 +03:00
private Host _host;
2021-05-25 13:28:37 +03:00
private bool _isChecked;
2021-05-23 09:24:13 +03:00
2021-05-16 04:12:47 +03:00
[JsonProperty("id")]
public string Id { get; set; }
[JsonProperty("host")]
2021-05-23 09:24:13 +03:00
public Host Host
{
get { return _host; }
set
{
_host = value;
RaisePropertyChanged("Host");
}
}
2021-05-14 14:07:19 +03:00
2021-08-20 06:52:45 +03:00
[JsonProperty("v2raySettings")]
public V2raySettings V2raySettings { get; set; }
2021-05-14 14:07:19 +03:00
[JsonProperty("settings")]
2021-05-16 04:12:47 +03:00
public XraySettings XraySettings { get; set; }
[JsonProperty("trojanGoSettings")]
public TrojanGoSettings TrojanGoSettings { get; set; }
2021-05-14 14:07:19 +03:00
2021-09-02 13:56:01 +03:00
[JsonProperty("naiveProxySettings")]
2021-05-25 13:28:37 +03:00
public NaiveProxySettings NaiveProxySettings { get; set; }
2021-07-02 13:35:25 +03:00
[JsonProperty("brook")]
public BrookSettings BrookSettings { get; set; }
[JsonProperty("mtProtoGoSettings")]
public MTProtoGoSettings MTProtoGoSettings { get; set; }
2021-08-23 07:00:39 +03:00
2021-05-14 14:07:19 +03:00
2021-05-16 04:12:47 +03:00
[JsonIgnore]
public ProjectType Type
2021-05-14 14:07:19 +03:00
{
get
{
2021-05-16 04:12:47 +03:00
if (XraySettings != null) return ProjectType.Xray;
2021-05-25 13:28:37 +03:00
2021-08-20 06:52:45 +03:00
if (V2raySettings != null) return ProjectType.V2ray;
2021-05-25 13:28:37 +03:00
if (TrojanGoSettings != null) return ProjectType.TrojanGo;
2021-07-02 13:35:25 +03:00
if (NaiveProxySettings != null) return ProjectType.NaiveProxy;
if (MTProtoGoSettings != null) return ProjectType.MTProtoGo;
2021-08-23 10:59:34 +03:00
2021-07-02 13:35:25 +03:00
return ProjectType.Brook;
2021-05-25 13:28:37 +03:00
}
}
[JsonIgnore]
public bool IsChecked
{
get
{
return _isChecked;
}
set
{
_isChecked = value;
RaisePropertyChanged("IsChecked");
2021-05-16 04:12:47 +03:00
}
}
2021-08-23 10:59:34 +03:00
[JsonIgnore]
public Action OnSave { get; set; } = () => { };
2021-05-25 13:28:37 +03:00
public string GetShareLink()
{
2021-08-20 06:52:45 +03:00
if (Type == ProjectType.V2ray)
{
StringBuilder strBuilder = new StringBuilder();
2021-08-20 13:01:16 +03:00
V2raySettings.Types.ForEach(type =>
2021-08-20 06:52:45 +03:00
{
var link = ShareLink.Build(type, V2raySettings);
strBuilder.AppendLine(link);
});
return strBuilder.ToString();
}
2021-05-25 13:28:37 +03:00
if (Type == ProjectType.Xray)
{
StringBuilder strBuilder = new StringBuilder();
XraySettings.Types.ForEach(type =>
{
var link = ShareLink.Build(type, XraySettings);
strBuilder.AppendLine(link);
});
return strBuilder.ToString();
}
if (Type == ProjectType.TrojanGo)
{
return ShareLink.BuildTrojanGo(TrojanGoSettings);
}
if (Type == ProjectType.NaiveProxy)
{
return ShareLink.BuildNaiveProxy(NaiveProxySettings);
}
return string.Empty;
}
2021-05-26 11:22:18 +03:00
2021-05-14 14:07:19 +03:00
}
}