Exemplo n.º 1
0
        public async Task QueueItemAsync(RequestedModel request, string id, RequestType type, FaultType faultType, string description = null)
        {
            //Ensure there is not a duplicate queued item
            var existingItem = await RequestQueue.CustomAsync(async connection =>
            {
                connection.Open();
                var result = await connection.QueryAsync <RequestQueue>("select * from RequestFaultQueue where PrimaryIdentifier = @ProviderId", new { ProviderId = id });

                return(result);
            });

            if (existingItem.FirstOrDefault() != null)
            {
                // It's already in the queue
                return;
            }

            var queue = new RequestQueue
            {
                Type              = type,
                Content           = ByteConverterHelper.ReturnBytes(request),
                PrimaryIdentifier = id,
                FaultType         = faultType,
                Message           = description ?? string.Empty
            };
            await RequestQueue.InsertAsync(queue);
        }
Exemplo n.º 2
0
        public void QueueItem(RequestedModel request, string id, RequestType type, FaultType faultType)
        {
            //Ensure there is not a duplicate queued item
            var existingItem = RequestQueue.Custom(
                connection =>
            {
                connection.Open();
                var result = connection.Query <RequestQueue>("select * from RequestQueue where PrimaryIdentifier = @ProviderId", new { ProviderId = id });

                return(result);
            }).FirstOrDefault();

            if (existingItem != null)
            {
                // It's already in the queue
                return;
            }

            var queue = new RequestQueue
            {
                Type              = type,
                Content           = ByteConverterHelper.ReturnBytes(request),
                PrimaryIdentifier = id,
                FaultType         = faultType
            };

            RequestQueue.Insert(queue);
        }
        /// <summary>
        /// Attempts to set a registry value for the key provided using the specified
        /// name, data and kind. If the registry value does not exist it will be created
        /// </summary>
        /// <param name="key">The key of which the value is to be set for.</param>
        /// <param name="name">The name of the value.</param>
        /// <param name="data">The data of the value</param>
        /// <param name="kind">The value kind of the value</param>
        /// <returns>Returns a boolean value if the action succeeded or failed.</returns>
        public static bool SetValueSafe(this RegistryKey key, string name, object data, RegistryValueKind kind)
        {
            try
            {
                // handle type conversion
                if (kind != RegistryValueKind.Binary && data.GetType() == typeof(byte[]))
                {
                    switch (kind)
                    {
                    case RegistryValueKind.String:
                    case RegistryValueKind.ExpandString:
                        data = ByteConverterHelper.ToString((byte[])data);
                        break;

                    case RegistryValueKind.DWord:
                        data = ByteConverterHelper.ToUInt32((byte[])data);
                        break;

                    case RegistryValueKind.QWord:
                        data = ByteConverterHelper.ToUInt64((byte[])data);
                        break;

                    case RegistryValueKind.MultiString:
                        data = ByteConverterHelper.ToStringArray((byte[])data);
                        break;
                    }
                }
                key.SetValue(name, data, kind);
                return(true);
            }
            catch
            {
                return(false);
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// Gets the username this could be the alias! We should always use this method when getting the username
        /// </summary>
        /// <param name="username">The username.</param>
        /// <param name="session"></param>
        /// <returns>
        ///   <c>null</c> if we cannot find a user
        /// </returns>
        public string GetUsername(string username, ISession session)
        {
            var plexUser = PlexUsers.GetUserByUsername(username);

            if (plexUser != null)
            {
                return(!string.IsNullOrEmpty(plexUser.UserAlias) ? plexUser.UserAlias : plexUser.Username);
            }

            var dbUser = UserRepository.GetUserByUsername(username);

            if (dbUser != null)
            {
                var userProps = ByteConverterHelper.ReturnObject <UserProperties>(dbUser.UserProperties);
                return(!string.IsNullOrEmpty(userProps.UserAlias) ? userProps.UserAlias : dbUser.UserName);
            }

            // could be a local user
            var hasSessionKey = session[SessionKeys.UsernameKey] != null;

            if (hasSessionKey)
            {
                return((string)session[SessionKeys.UsernameKey]);
            }

            return(string.Empty);
        }
Exemplo n.º 5
0
        public PlexContent GetTvShow(PlexContent[] plexShows, string title, string year, string providerId = null,
                                     int[] seasons = null)
        {
            var advanced = !string.IsNullOrEmpty(providerId);

            foreach (var show in plexShows)
            {
                if (advanced)
                {
                    if (show.ProviderId == providerId && seasons != null)
                    {
                        var showSeasons = ByteConverterHelper.ReturnObject <int[]>(show.Seasons);
                        if (seasons.Any(season => showSeasons.Contains(season)))
                        {
                            return(show);
                        }
                        return(null);
                    }
                    if (!string.IsNullOrEmpty(show.ProviderId) &&
                        show.ProviderId.Equals(providerId, StringComparison.InvariantCultureIgnoreCase))
                    {
                        return(show);
                    }
                }
                if (show.Title.Equals(title, StringComparison.CurrentCultureIgnoreCase) &&
                    show.ReleaseYear.Equals(year, StringComparison.CurrentCultureIgnoreCase))
                {
                    return(show);
                }
            }
            return(null);
        }
Exemplo n.º 6
0
        public RequestedModel CheckRequest(string musicId)
        {
            var blobs = Repo.GetAll();
            var blob  = blobs.FirstOrDefault(x => x.MusicId == musicId);

            return(blob != null?ByteConverterHelper.ReturnObject <RequestedModel>(blob.Content) : null);
        }
Exemplo n.º 7
0
        private UserManagementUsersViewModel MapLocalUser(UsersModel user, DateTime lastLoggedIn)
        {
            var features    = (Features)user.Features;
            var permissions = (Permissions)user.Permissions;

            var userProps = ByteConverterHelper.ReturnObject <UserProperties>(user.UserProperties);

            var m = new UserManagementUsersViewModel
            {
                Id = user.UserGuid,
                PermissionsFormattedString = permissions == 0 ? "None" : permissions.ToString(),
                FeaturesFormattedString    = features.ToString(),
                Username     = user.UserName,
                Type         = UserType.LocalUser,
                EmailAddress = userProps.EmailAddress,
                Alias        = userProps.UserAlias,
                LastLoggedIn = lastLoggedIn,
            };


            m.Permissions.AddRange(GetPermissions(permissions));
            m.Features.AddRange(GetFeatures(features));

            return(m);
        }
 private void okButton_Click(object sender, EventArgs e)
 {
     _value.Data       = ByteConverterHelper.GetBytes(valueDataTxtBox.Text.Split(new[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries));
     this.Tag          = _value;
     this.DialogResult = DialogResult.OK;
     this.Close();
 }
Exemplo n.º 9
0
        public static string RegistryValueToString(RegValueData value)
        {
            switch (value.Kind)
            {
            case RegistryValueKind.Binary:
                return(value.Data.Length > 0 ? BitConverter.ToString(value.Data).Replace("-", " ").ToLower() : "(zero-length binary value)");

            case RegistryValueKind.MultiString:
                return(string.Join(" ", ByteConverterHelper.ToStringArray(value.Data)));

            case RegistryValueKind.DWord:
                var dword = ByteConverterHelper.ToUInt32(value.Data);
                return($"0x{dword:x8} ({dword})");    // show hexadecimal and decimal

            case RegistryValueKind.QWord:
                var qword = ByteConverterHelper.ToUInt64(value.Data);
                return($"0x{qword:x8} ({qword})");    // show hexadecimal and decimal

            case RegistryValueKind.String:
            case RegistryValueKind.ExpandString:
                return(ByteConverterHelper.ToString(value.Data));

            default:
                return(string.Empty);
            }
        }
Exemplo n.º 10
0
        public IEnumerable <UserHelperModel> GetUsers()
        {
            var model = new List <UserHelperModel>();

            var localUsers = LocalUserRepository.GetAll();
            var plexUsers  = PlexUserRepository.GetAll();

            foreach (var user in localUsers)
            {
                var props = ByteConverterHelper.ReturnObject <UserProperties>(user.UserProperties);
                model.Add(new UserHelperModel
                {
                    Type         = UserType.LocalUser,
                    Username     = user.UserName,
                    UserAlias    = props.UserAlias,
                    EmailAddress = props.EmailAddress,
                    Permissions  = (Permissions)user.Permissions
                });
            }

            model.AddRange(plexUsers.Select(user => new UserHelperModel
            {
                Type         = UserType.LocalUser,
                Username     = user.Username,
                UserAlias    = user.UserAlias,
                EmailAddress = user.EmailAddress,
                Permissions  = (Permissions)user.Permissions
            }));

            return(model);
        }
Exemplo n.º 11
0
 private void okButton_Click(object sender, EventArgs e)
 {
     _value.Data       = ByteConverterHelper.GetBytes(valueDataTxtBox.Text);
     this.Tag          = _value;
     this.DialogResult = DialogResult.OK;
     this.Close();
 }
Exemplo n.º 12
0
        public bool UpdateRequest(RequestedModel model)
        {
            var entity = new RequestBlobs {
                Type = model.Type, Content = ByteConverterHelper.ReturnBytes(model), ProviderId = model.ProviderId, Id = model.Id
            };

            return(Repo.Update(entity));
        }
Exemplo n.º 13
0
        public async Task <RequestedModel> CheckRequestAsync(int providerId)
        {
            var blobs = await Repo.GetAllAsync().ConfigureAwait(false);

            var blob = blobs.FirstOrDefault(x => x.ProviderId == providerId);

            return(blob != null?ByteConverterHelper.ReturnObject <RequestedModel>(blob.Content) : null);
        }
Exemplo n.º 14
0
        public async Task <bool> BatchDeleteAsync(IEnumerable <RequestedModel> model)
        {
            var entities = model.Select(m => new RequestBlobs {
                Type = m.Type, Content = ByteConverterHelper.ReturnBytes(m), ProviderId = m.ProviderId, Id = m.Id
            }).ToList();

            return(await Repo.DeleteAllAsync(entities).ConfigureAwait(false));
        }
Exemplo n.º 15
0
        public async Task <bool> UpdateRequestAsync(RequestedModel model)
        {
            var entity = new RequestBlobs {
                Type = model.Type, Content = ByteConverterHelper.ReturnBytes(model), ProviderId = model.ProviderId, Id = model.Id
            };

            return(await Repo.UpdateAsync(entity).ConfigureAwait(false));
        }
Exemplo n.º 16
0
        public async Task DeleteIssueAsync(IssuesModel model)
        {
            var entity = new IssueBlobs {
                Type = model.Type, Content = ByteConverterHelper.ReturnBytes(model), RequestId = model.RequestId, Id = model.Id
            };

            await Repo.DeleteAsync(entity).ConfigureAwait(false);
        }
Exemplo n.º 17
0
        public bool BatchUpdate(List <RequestedModel> model)
        {
            var entities = model.Select(m => new RequestBlobs {
                Type = m.Type, Content = ByteConverterHelper.ReturnBytes(m), ProviderId = m.ProviderId, Id = m.Id
            }).ToList();

            return(Repo.UpdateAll(entities));
        }
Exemplo n.º 18
0
        public RegValueEditStringForm(RegValueData value)
        {
            _value = value;

            InitializeComponent();

            this.valueNameTxtBox.Text = RegValueHelper.GetName(value.Name);
            this.valueDataTxtBox.Text = ByteConverterHelper.ToString(value.Data);
        }
        public RegValueEditMultiStringForm(RegValueData value)
        {
            _value = value;

            InitializeComponent();

            this.valueNameTxtBox.Text = value.Name;
            this.valueDataTxtBox.Text = string.Join("\r\n", ByteConverterHelper.ToStringArray(value.Data));
        }
Exemplo n.º 20
0
        /// <summary>
        /// Gets the Issues, if there is no issue in the DB we return a <c>new <see cref="IssuesModel"/></c>.
        /// </summary>
        /// <param name="id">The identifier.</param>
        /// <returns></returns>
        public async Task <IssuesModel> GetAsync(int id)
        {
            var blob = await Repo.GetAsync(id);

            if (blob == null)
            {
                return(new IssuesModel());
            }
            var model = ByteConverterHelper.ReturnObject <IssuesModel>(blob.Content);

            return(model);
        }
        public RequestedModel CheckRequest(int providerId)
        {
            var blobs = Repo.GetAll();
            var blob  = blobs.FirstOrDefault(x => x.ProviderId == providerId); if (blob == null)
            {
                return(null);
            }
            var model = ByteConverterHelper.ReturnObject <RequestedModel>(blob.Content);

            model.Id = blob.Id;
            return(model);
        }
Exemplo n.º 22
0
        public async Task <RequestedModel> GetAsync(int id)
        {
            var blob = await Repo.GetAsync(id).ConfigureAwait(false);

            if (blob == null)
            {
                return(new RequestedModel());
            }
            var model = ByteConverterHelper.ReturnObject <RequestedModel>(blob.Content);

            return(model);
        }
Exemplo n.º 23
0
        public UserHelperModel GetUser(string username)
        {
            var localUsers = LocalUserRepository.GetUserByUsername(username);

            if (localUsers != null)
            {
                var props = ByteConverterHelper.ReturnObject <UserProperties>(localUsers.UserProperties);
                return(new UserHelperModel
                {
                    Type = UserType.LocalUser,
                    Username = localUsers.UserName,
                    UserAlias = props.UserAlias,
                    EmailAddress = props.EmailAddress,
                    Permissions = (Permissions)localUsers.Permissions,
                    UserId = localUsers.UserGuid,
                    Features = (Features)localUsers.Features
                });
            }

            var plexUsers = PlexUserRepository.GetUserByUsername(username);

            if (plexUsers != null)
            {
                return(new UserHelperModel
                {
                    Type = UserType.PlexUser,
                    Username = plexUsers.Username,
                    UserAlias = plexUsers.UserAlias,
                    EmailAddress = plexUsers.EmailAddress,
                    Permissions = (Permissions)plexUsers.Permissions,
                    UserId = plexUsers.PlexUserId,

                    Features = (Features)plexUsers.Features
                });
            }

            var embyUsers = EmbyUserRepository.GetUserByUsername(username);

            if (embyUsers != null)
            {
                return(new UserHelperModel
                {
                    Type = UserType.EmbyUser,
                    Username = embyUsers.Username,
                    UserAlias = embyUsers.UserAlias,
                    EmailAddress = embyUsers.EmailAddress,
                    Permissions = (Permissions)embyUsers.Permissions,
                    UserId = embyUsers.EmbyUserId,
                    Features = (Features)embyUsers.Features
                });
            }
            return(null);
        }
Exemplo n.º 24
0
        public RequestedModel Get(int id)
        {
            var blob = Repo.Get(id);

            if (blob == null)
            {
                return(new RequestedModel());
            }
            var model = ByteConverterHelper.ReturnObject <RequestedModel>(blob.Content);

            return(model);
        }
Exemplo n.º 25
0
        private void ProcessMissingInformation(List <RequestQueue> requests)
        {
            if (!requests.Any())
            {
                return;
            }

            var sonarrSettings   = SonarrSettings.GetSettings();
            var sickrageSettings = SickrageSettings.GetSettings();

            var tv = requests.Where(x => x.Type == RequestType.TvShow);

            // TV
            var tvApi = new TvMazeApi();

            foreach (var t in tv)
            {
                var providerId = int.Parse(t.PrimaryIdentifier);
                var showInfo   = tvApi.ShowLookup(providerId);

                if (showInfo.externals?.thetvdb != null)
                {
                    // We now have the info
                    var tvModel = ByteConverterHelper.ReturnObject <RequestedModel>(t.Content);
                    tvModel.ProviderId = showInfo.externals.thetvdb.Value;
                    var result = ProcessTvShow(tvModel, sonarrSettings, sickrageSettings);

                    if (!result)
                    {
                        // we now have the info but couldn't add it, so add it back into the queue but with a different fault
                        t.Content   = ByteConverterHelper.ReturnBytes(tvModel);
                        t.FaultType = FaultType.RequestFault;
                        t.LastRetry = DateTime.UtcNow;
                        Repo.Update(t);
                    }
                    else
                    {
                        // Make sure it's been requested
                        var existingRequests = RequestService.GetAll();
                        var thisItem         = existingRequests.Any(x => x.Title.Equals(tvModel.Title));
                        if (!thisItem)
                        {
                            tvModel.Approved = true;
                            RequestService.AddRequest(tvModel);
                        }

                        // Successful, remove from the fault queue
                        Repo.Delete(t);
                    }
                }
            }
        }
        public RequestedModel Get(int id)
        {
            var blob = Repo.Get(id);

            if (blob == null)
            {
                return(new RequestedModel());
            }
            var model = ByteConverterHelper.ReturnObject <RequestedModel>(blob.Content);

            model.Id = blob.Id; // They should always be the same, but for somereason a user didn't have it in the db https://github.com/tidusjar/Ombi/issues/862#issuecomment-269743847
            return(model);
        }
Exemplo n.º 27
0
        public IEnumerable <UserHelperModel> GetUsersWithPermission(Permissions permission)
        {
            var model = new List <UserHelperModel>();

            var localUsers = LocalUserRepository.GetAll().ToList();
            var plexUsers  = PlexUserRepository.GetAll().ToList();
            var embyUsers  = EmbyUserRepository.GetAll().ToList();

            var filteredLocal = localUsers.Where(x => ((Permissions)x.Permissions).HasFlag(permission));
            var filteredPlex  = plexUsers.Where(x => ((Permissions)x.Permissions).HasFlag(permission));
            var filteredEmby  = embyUsers.Where(x => ((Permissions)x.Permissions).HasFlag(permission));


            foreach (var user in filteredLocal)
            {
                var props = ByteConverterHelper.ReturnObject <UserProperties>(user.UserProperties);
                model.Add(new UserHelperModel
                {
                    Type         = UserType.LocalUser,
                    Username     = user.UserName,
                    UserAlias    = props.UserAlias,
                    EmailAddress = props.EmailAddress,
                    Permissions  = (Permissions)user.Permissions,
                    Features     = (Features)user.Features
                });
            }

            model.AddRange(filteredPlex.Select(user => new UserHelperModel
            {
                Type         = UserType.PlexUser,
                Username     = user.Username,
                UserAlias    = user.UserAlias,
                EmailAddress = user.EmailAddress,
                Permissions  = (Permissions)user.Permissions,
                Features     = (Features)user.Features
            }));

            model.AddRange(filteredEmby.Select(user => new UserHelperModel
            {
                Type         = UserType.EmbyUser,
                Username     = user.Username,
                UserAlias    = user.UserAlias,
                EmailAddress = user.EmailAddress,
                Permissions  = (Permissions)user.Permissions,
                Features     = (Features)user.Features
            }));


            return(model);
        }
        public async Task <RequestedModel> CheckRequestAsync(string musicId)
        {
            var blobs = await Repo.GetAllAsync().ConfigureAwait(false);

            var blob = blobs.FirstOrDefault(x => x.MusicId == musicId);

            if (blob == null)
            {
                return(null);
            }
            var model = ByteConverterHelper.ReturnObject <RequestedModel>(blob.Content);

            model.Id = blob.Id;
            return(model);
        }
Exemplo n.º 29
0
        public IUserIdentity GetUserFromIdentifier(Guid identifier, NancyContext context)
        {
            var user = Repo.Get(identifier.ToString());

            if (user == null)
            {
                return(null);
            }

            return(new UserIdentity
            {
                UserName = user.UserName,
                Claims = ByteConverterHelper.ReturnObject <string[]>(user.Claims)
            });
        }
        private Response UpdateUser()
        {
            var body = Request.Body.AsString();

            if (string.IsNullOrEmpty(body))
            {
                return(Response.AsJson(new JsonResponseModel {
                    Result = false, Message = "Could not save user, invalid JSON body"
                }));
            }

            var model = JsonConvert.DeserializeObject <UserManagementUpdateModel>(body);

            if (string.IsNullOrWhiteSpace(model.Id))
            {
                return(Response.AsJson(new JsonResponseModel
                {
                    Result = true,
                    Message = "Couldn't find the user"
                }));
            }

            var claims = new List <string>();

            foreach (var c in model.Claims)
            {
                if (c.Selected)
                {
                    claims.Add(c.Name);
                }
            }

            var userFound = UserMapper.GetUser(new Guid(model.Id));

            userFound.Claims = ByteConverterHelper.ReturnBytes(claims.ToArray());
            var currentProps = ByteConverterHelper.ReturnObject <UserProperties>(userFound.UserProperties);

            currentProps.UserAlias    = model.Alias;
            currentProps.EmailAddress = model.EmailAddress;

            userFound.UserProperties = ByteConverterHelper.ReturnBytes(currentProps);

            var user    = UserMapper.EditUser(userFound);
            var dbUser  = UserLoginsRepo.GetAll().FirstOrDefault(x => x.UserId == user.UserGuid);
            var retUser = MapLocalUser(user, dbUser?.LastLoggedIn ?? DateTime.MinValue);

            return(Response.AsJson(retUser));
        }