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); }
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); }
public IList <RayPortUser> GetRayPortsUsers() { var repo = new RayConfigRepository(); return(repo.GetRayPorts().SelectMany(r => r.Settings?.Clients ?? new List <RayPortUser>()).ToList()); }