Exemple #1
0
        JToken SsLink2Outbound(string ssLink)
        {
            Model.Data.Shadowsocks ss = Lib.Utils.SsLink2Ss(ssLink);
            if (ss == null)
            {
                return(null);
            }

            VgcApis.Libs.Utils.TryParseIPAddr(ss.addr, out string ip, out int port);
            var outbSs = cache.tpl.LoadTemplate("outbSs");
            var node   = outbSs["settings"]["servers"][0];

            node["address"]  = ip;
            node["port"]     = port;
            node["method"]   = ss.method;
            node["password"] = ss.pass;

            return(outbSs);
        }
Exemple #2
0
        public static Model.Data.Shadowsocks SsLink2Ss(string ssLink)
        {
            string b64 = GetLinkBody(ssLink);

            try
            {
                var ss        = new Model.Data.Shadowsocks();
                var plainText = Base64Decode(b64);
                var parts     = plainText.Split('@');
                var mp        = parts[0].Split(':');
                if (parts[1].Length > 0 && mp[0].Length > 0 && mp[1].Length > 0)
                {
                    ss.method = mp[0];
                    ss.pass   = mp[1];
                    ss.addr   = parts[1];
                }
                return(ss);
            }
            catch { }
            return(null);
        }
Exemple #3
0
        public static JObject SSLink2Config(string ssLink)
        {
            Model.Data.Shadowsocks ss = SSLink2SS(ssLink);
            if (ss == null)
            {
                return(null);
            }

            TryParseIPAddr(ss.addr, out string ip, out int port);

            var config = cache.tpl.LoadTemplate("tplImportSS");

            var setting = config["outbound"]["settings"]["servers"][0];

            setting["address"]  = ip;
            setting["port"]     = port;
            setting["method"]   = ss.method;
            setting["password"] = ss.pass;

            return(config.DeepClone() as JObject);
        }
Exemple #4
0
        public static string SSLink2ConfigString(string ssLink)
        {
            Model.Data.Shadowsocks ss = SSLink2SS(ssLink);
            if (ss == null)
            {
                return(string.Empty);
            }

            TryParseIPAddr(ss.addr, out string ip, out int port);
            var tpl    = JObject.Parse(resData("config_tpl"));
            var config = tpl["tplImportSS"];

            var setting = config["outbound"]["settings"]["servers"][0];

            setting["address"]  = ip;
            setting["port"]     = port;
            setting["method"]   = ss.method;
            setting["password"] = ss.pass;

            return(config.ToString());
        }