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; }
|
|
|
|
|
|
2021-08-24 05:36:41 +03:00
|
|
|
|
[JsonProperty("mtProtoGoSettings")]
|
|
|
|
|
public MTProtoGoSettings MTProtoGoSettings { get; set; }
|
2021-08-23 07:00:39 +03:00
|
|
|
|
|
2022-12-17 05:41:46 +03:00
|
|
|
|
[JsonProperty]
|
|
|
|
|
public HysteriaSettings HysteriaSettings { get; set; }
|
|
|
|
|
|
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;
|
|
|
|
|
|
2021-08-24 05:36:41 +03:00
|
|
|
|
if (MTProtoGoSettings != null) return ProjectType.MTProtoGo;
|
2021-08-23 10:59:34 +03:00
|
|
|
|
|
2022-12-17 05:41:46 +03:00
|
|
|
|
if (HysteriaSettings != null) return ProjectType.Hysteria;
|
|
|
|
|
|
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
|
|
|
|
}
|
|
|
|
|
}
|