public static string GenPattern( VgcApis.Models.Datas.Enums.LinkTypes linkType) { string pattern; switch (linkType) { case VgcApis.Models.Datas.Enums.LinkTypes.ss: pattern = GenLinkPrefix(linkType) + "://" + VgcApis.Models.Consts.Patterns.SsShareLinkContent; break; case VgcApis.Models.Datas.Enums.LinkTypes.vmess: case VgcApis.Models.Datas.Enums.LinkTypes.v2cfg: case VgcApis.Models.Datas.Enums.LinkTypes.v: pattern = GenLinkPrefix(linkType) + "://" + VgcApis.Models.Consts.Patterns.Base64NonStandard; break; case VgcApis.Models.Datas.Enums.LinkTypes.http: case VgcApis.Models.Datas.Enums.LinkTypes.https: pattern = VgcApis.Models.Consts.Patterns.HttpUrl; break; default: throw new NotSupportedException( $"Not supported link type {linkType.ToString()}:// ..."); } return(VgcApis.Models.Consts.Patterns.NonAlphabets + pattern); }
string EncodeAllServersIntoShareLinks( VgcApis.Models.Datas.Enums.LinkTypes linkType) { var serverList = servers.GetAllServersOrderByIndex(); StringBuilder result = new StringBuilder(""); foreach (var server in serverList) { if (!server.GetCoreStates().IsSelected()) { continue; } var configString = server.GetConfiger().GetConfig(); var shareLink = slinkMgr.EncodeConfigToShareLink( configString, linkType); if (!string.IsNullOrEmpty(shareLink)) { result .Append(shareLink) .Append(Environment.NewLine); } } return(result.ToString()); }
public FormQRCode() { servers = Services.Servers.Instance; slinkMgr = Services.ShareLinkMgr.Instance; servIndex = -1; linkType = VgcApis.Models.Datas.Enums.LinkTypes.vmess; InitializeComponent(); VgcApis.Misc.UI.AutoSetFormIcon(this); }
int LinkTypeToComboBoxSelectedIndex( VgcApis.Models.Datas.Enums.LinkTypes linkType) { switch (linkType) { case VgcApis.Models.Datas.Enums.LinkTypes.vmess: return(0); case VgcApis.Models.Datas.Enums.LinkTypes.v: return(1); default: return(-1); } }
/// <summary> /// http is equal to https /// </summary> /// <param name="text"></param> /// <param name="linkType"></param> /// <returns></returns> public static List <string> ExtractLinks( string text, VgcApis.Models.Datas.Enums.LinkTypes linkType) { var links = new List <string>(); try { string pattern = GenPattern(linkType); var matches = Regex.Matches("\n" + text, pattern, RegexOptions.IgnoreCase); foreach (Match match in matches) { links.Add(match.Value.Substring(1)); } } catch { } return(links); }
/// <summary> /// return null if fail! /// </summary> public string EncodeConfigToShareLink( string config, VgcApis.Models.Datas.Enums.LinkTypes linkType) { switch (linkType) { case VgcApis.Models.Datas.Enums.LinkTypes.v: return(codecs.Encode <ShareLinkComponents.VeeDecoder>(config)); case VgcApis.Models.Datas.Enums.LinkTypes.vmess: return(codecs.Encode <ShareLinkComponents.VmessDecoder>(config)); case VgcApis.Models.Datas.Enums.LinkTypes.v2cfg: return(codecs.Encode <ShareLinkComponents.V2cfgDecoder>(config)); default: return(null); } }
public string AddLinkPrefix(string linkBody, VgcApis.Models.Datas.Enums.LinkTypes type) => Misc.Utils.AddLinkPrefix(linkBody, type);
public void DetectLinkTypeTest(string link, VgcApis.Models.Datas.Enums.LinkTypes expect) { var linkType = DetectLinkType(link); Assert.AreEqual(expect, linkType); }
public static string AddLinkPrefix( string b64Content, VgcApis.Models.Datas.Enums.LinkTypes linkType) { return(GenLinkPrefix(linkType) + "://" + b64Content); }
static string GenLinkPrefix( VgcApis.Models.Datas.Enums.LinkTypes linkType) => $"{linkType.ToString()}";
public List <string> ExtractLinks( string text, VgcApis.Models.Datas.Enums.LinkTypes linkType) => Misc.Utils.ExtractLinks(text, linkType);
private void cboxLinkType_SelectedIndexChanged(object sender, EventArgs e) { linkType = ComboBoxSelectedIndexToLinkType(cboxLinkType.SelectedIndex); UpdateTboxLink(); }