示例#1
0
        public static void UpdateUser(string uuid, RayPortUser rayPortUser)
        {
            RayConfigRepository repo = new RayConfigRepository();
            var rayPort = repo.GetRayPorts()
                          .FirstOrDefault(
                o => o.Settings
                .Clients
                ?.Contains(rayPortUser, RayPortUserEqualityComparer.Default) ?? false);
            var rayPortUsers = rayPort.Settings.Clients;
            int index        = rayPortUsers.IndexOf(
                rayPortUsers.FirstOrDefault(r => r.Uuid == uuid));
            int port = rayPort.Port;

            JObject rayConfigObj = repo.GetRayConfigJObject();

            JArray clientsObj = rayConfigObj.SelectToken($"inbounds[?(@port == {port})].settings.clients") as JArray;

            if (!(rayConfigObj
                  .SelectToken($"inbounds[?(@port == {port})].settings.clients[?(@id == '{uuid}')]") is JObject clientObjToUpdate))
            {
                return;
            }

            clientsObj.Remove(clientObjToUpdate);
            clientsObj.Insert(index, JObject.FromObject(rayPortUser, RayConfigJsonSetting.JsonSerializer));

            WriteJsonToFile(rayConfigObj);
        }
示例#2
0
        public static RayPort GetRayPort(RayPortUser rayPortUser)
        {
            var     repo     = new RayConfigRepository();
            var     rayPorts = repo.GetRayPorts();
            RayPort rayPort  = null;

            foreach (var r in rayPorts)
            {
                if (r.Settings?.Clients?.Any(obj => obj.Uuid == rayPortUser.Uuid) ?? false)
                {
                    rayPort = r;
                    break;
                }
            }
            return(rayPort);
        }
示例#3
0
        public IList <RayPortUser> GetRayPortsUsers()
        {
            var repo = new RayConfigRepository();

            return(repo.GetRayPorts().SelectMany(r => r.Settings?.Clients ?? new List <RayPortUser>()).ToList());
        }