Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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());
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
            }
        }
Ejemplo n.º 5
0
        /// <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);
        }
Ejemplo n.º 6
0
        /// <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);
            }
        }
Ejemplo n.º 7
0
 public string AddLinkPrefix(string linkBody, VgcApis.Models.Datas.Enums.LinkTypes type) =>
 Misc.Utils.AddLinkPrefix(linkBody, type);
Ejemplo n.º 8
0
        public void DetectLinkTypeTest(string link, VgcApis.Models.Datas.Enums.LinkTypes expect)
        {
            var linkType = DetectLinkType(link);

            Assert.AreEqual(expect, linkType);
        }
Ejemplo n.º 9
0
 public static string AddLinkPrefix(
     string b64Content,
     VgcApis.Models.Datas.Enums.LinkTypes linkType)
 {
     return(GenLinkPrefix(linkType) + "://" + b64Content);
 }
Ejemplo n.º 10
0
 static string GenLinkPrefix(
     VgcApis.Models.Datas.Enums.LinkTypes linkType) =>
 $"{linkType.ToString()}";
Ejemplo n.º 11
0
 public List <string> ExtractLinks(
     string text,
     VgcApis.Models.Datas.Enums.LinkTypes linkType) =>
 Misc.Utils.ExtractLinks(text, linkType);
Ejemplo n.º 12
0
 private void cboxLinkType_SelectedIndexChanged(object sender, EventArgs e)
 {
     linkType = ComboBoxSelectedIndexToLinkType(cboxLinkType.SelectedIndex);
     UpdateTboxLink();
 }