Example #1
0
        public void RefreshServerListView()
        {
            lvServers.Items.Clear();

            var servers = setting.GetAllServers();

            if (servers.Count <= 0)
            {
                Debug.WriteLine("FormMain: servers is empty!");
                return;
            }

            int     count = 0;
            int     actServ = setting.GetSelectedServerIndex();
            string  s, proxy;
            JObject o;

            foreach (var b64cfgStr in servers)
            {
                try
                {
                    s = Lib.Utils.Base64Decode(b64cfgStr);
                    o = JObject.Parse(s);
                }
                catch { continue; }

                string ip, port, type, tls, path, streamType, alias;
                proxy = Lib.Utils.GetStrFromJToken(o, "outbound.protocol");
                if (proxy.Equals("shadowsocks"))
                {
                    ip   = Lib.Utils.GetStrFromJToken(o, "outbound.settings.servers.0.address");
                    port = Lib.Utils.GetStrFromJToken(o, "outbound.settings.servers.0.port");
                }
                else
                {
                    ip   = Lib.Utils.GetStrFromJToken(o, "outbound.settings.vnext.0.address");
                    port = Lib.Utils.GetStrFromJToken(o, "outbound.settings.vnext.0.port");
                }

                streamType = Lib.Utils.GetStrFromJToken(o, "outbound.streamSettings.network");
                type       = Lib.Utils.GetStrFromJToken(o, "outbound.streamSettings.kcpSettings.header.type");
                path       = Lib.Utils.GetStrFromJToken(o, "outbound.streamSettings.wsSettings.path");
                tls        = Lib.Utils.GetStrFromJToken(o, "outbound.streamSettings.security");
                alias      = Lib.Utils.GetStrFromJToken(o, "v2raygcon.alias");

                lvServers.Items.Add(new ListViewItem(new string[] {
                    (count + 1).ToString(),  //no.
                    alias,                   //alias
                    proxy,                   // proxy
                    ip,                      // ip
                    port,                    // port
                    count == actServ?"√":"", //active
                    path,                    // Url
                    streamType,              //protocol
                    tls,                     //encryption
                    type                     // disguise
                }));
                count++;
            }
        }