mirror of
https://github.com/Ombi-app/Ombi.git
synced 2025-07-08 06:00:50 -07:00
More work on the settings
This commit is contained in:
parent
8c9bd41057
commit
a00d5b69f2
14 changed files with 152 additions and 39 deletions
|
@ -64,6 +64,9 @@
|
|||
<ItemGroup>
|
||||
<Compile Include="ISettingsService.cs" />
|
||||
<Compile Include="RequestService.cs" />
|
||||
<Compile Include="SettingModels\SonarrSettings.cs" />
|
||||
<Compile Include="SettingModels\SickRageSettings.cs" />
|
||||
<Compile Include="SettingModels\CouchPotatoSettings.cs" />
|
||||
<Compile Include="SettingModels\RequestPlexSettings.cs" />
|
||||
<Compile Include="SettingModels\Settings.cs" />
|
||||
<Compile Include="SettingsService.cs" />
|
||||
|
|
10
RequestPlex.Core/SettingModels/CouchPotatoSettings.cs
Normal file
10
RequestPlex.Core/SettingModels/CouchPotatoSettings.cs
Normal file
|
@ -0,0 +1,10 @@
|
|||
namespace RequestPlex.Core.SettingModels
|
||||
{
|
||||
public class CouchPotatoSettings : Settings
|
||||
{
|
||||
public string Ip { get; set; }
|
||||
public int Port { get; set; }
|
||||
public string ApiKey { get; set; }
|
||||
public bool Enabled { get; set; }
|
||||
}
|
||||
}
|
|
@ -31,5 +31,9 @@ namespace RequestPlex.Core.SettingModels
|
|||
public int Port { get; set; }
|
||||
public bool UserAuthentication { get; set; }
|
||||
public string PlexAuthToken { get; set; }
|
||||
public bool SearchForMovies { get; set; }
|
||||
public bool SearchForTvShows { get; set; }
|
||||
public bool RequireApprovial { get; set; }
|
||||
public int WeeklyRequestLimit { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
10
RequestPlex.Core/SettingModels/SickRageSettings.cs
Normal file
10
RequestPlex.Core/SettingModels/SickRageSettings.cs
Normal file
|
@ -0,0 +1,10 @@
|
|||
namespace RequestPlex.Core.SettingModels
|
||||
{
|
||||
public class SickRageSettings : Settings
|
||||
{
|
||||
public string Ip { get; set; }
|
||||
public int Port { get; set; }
|
||||
public string ApiKey { get; set; }
|
||||
public bool Enabled { get; set; }
|
||||
}
|
||||
}
|
10
RequestPlex.Core/SettingModels/SonarrSettings.cs
Normal file
10
RequestPlex.Core/SettingModels/SonarrSettings.cs
Normal file
|
@ -0,0 +1,10 @@
|
|||
namespace RequestPlex.Core.SettingModels
|
||||
{
|
||||
public class SonarrSettings : Settings
|
||||
{
|
||||
public string Ip { get; set; }
|
||||
public int Port { get; set; }
|
||||
public string ApiKey { get; set; }
|
||||
public bool Enabled { get; set; }
|
||||
}
|
||||
}
|
15
RequestPlex.Helpers/AssemblyHelper.cs
Normal file
15
RequestPlex.Helpers/AssemblyHelper.cs
Normal file
|
@ -0,0 +1,15 @@
|
|||
using System.Diagnostics;
|
||||
using System.Reflection;
|
||||
|
||||
namespace RequestPlex.Helpers
|
||||
{
|
||||
public class AssemblyHelper
|
||||
{
|
||||
public static string GetAssemblyVersion()
|
||||
{
|
||||
var assembly = Assembly.GetExecutingAssembly();
|
||||
var fvi = FileVersionInfo.GetVersionInfo(assembly.Location);
|
||||
return fvi.FileVersion;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -45,6 +45,7 @@
|
|||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="AssemblyHelper.cs" />
|
||||
<Compile Include="ICacheProvider.cs" />
|
||||
<Compile Include="MemoryCacheProvider.cs" />
|
||||
<Compile Include="ObjectCopier.cs" />
|
||||
|
|
|
@ -16,6 +16,10 @@ namespace RequestPlex.Store
|
|||
public DateTime ReleaseDate { get; set; }
|
||||
public RequestType Type { get; set; }
|
||||
public string Status { get; set; }
|
||||
public string RequestedStatus { get; set; }
|
||||
public string RequestedBy { get; set; }
|
||||
public DateTime RequestedDate { get; set; }
|
||||
|
||||
}
|
||||
|
||||
public enum RequestType
|
||||
|
|
|
@ -26,7 +26,12 @@ CREATE TABLE IF NOT EXISTS Requested
|
|||
Title varchar(50) NOT NULL,
|
||||
PosterPath varchar(50) NOT NULL,
|
||||
ReleaseDate varchar(50) NOT NULL,
|
||||
Status varchar(50) NOT NULL
|
||||
Status varchar(50) NOT NULL,
|
||||
RequestStatus varchar(50) NOT NULL,
|
||||
RequestedBy varchar(50) NOT NULL,
|
||||
RequestedDate varchar(50) NOT NULL,
|
||||
Available varchar(50) NOT NULL
|
||||
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS GlobalSettings
|
||||
|
|
|
@ -30,6 +30,7 @@ using System.Web.UI;
|
|||
using Nancy;
|
||||
using Nancy.Extensions;
|
||||
using Nancy.ModelBinding;
|
||||
using Nancy.Responses.Negotiation;
|
||||
using Nancy.Security;
|
||||
|
||||
using RequestPlex.Api;
|
||||
|
@ -60,19 +61,12 @@ namespace RequestPlex.UI.Modules
|
|||
}
|
||||
|
||||
|
||||
private Response Admin()
|
||||
private Negotiator Admin()
|
||||
{
|
||||
dynamic model = new ExpandoObject();
|
||||
model.Errored = Request.Query.error.HasValue;
|
||||
model.Port = null;
|
||||
|
||||
var settings = Service.GetSettings();
|
||||
if (settings != null)
|
||||
{
|
||||
model.Port = settings.Port;
|
||||
model.PlexAuthToken = settings.PlexAuthToken;
|
||||
}
|
||||
|
||||
model = settings;
|
||||
return View["/Admin/Settings", model];
|
||||
}
|
||||
|
||||
|
@ -112,7 +106,7 @@ namespace RequestPlex.UI.Modules
|
|||
Service.SaveSettings(newModel);
|
||||
}
|
||||
|
||||
return Context.GetRedirect("~/admin");
|
||||
return Response.AsJson(new {Result = true, AuthToken = model.user.authentication_token});
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,11 +1,9 @@
|
|||
using System;
|
||||
|
||||
using System.Diagnostics;
|
||||
using Microsoft.Owin.Hosting;
|
||||
|
||||
using Mono.Data.Sqlite;
|
||||
|
||||
using Nancy.Hosting.Self;
|
||||
|
||||
using RequestPlex.Core;
|
||||
using RequestPlex.Core.SettingModels;
|
||||
using RequestPlex.Helpers;
|
||||
|
@ -18,6 +16,8 @@ namespace RequestPlex.UI
|
|||
{
|
||||
static void Main(string[] args)
|
||||
{
|
||||
var assemblyVer = AssemblyHelper.GetAssemblyVersion();
|
||||
Console.WriteLine($"Version: {assemblyVer}");
|
||||
var uri = "http://localhost:3579/";
|
||||
var s = new Setup();
|
||||
s.SetupDb();
|
||||
|
@ -32,8 +32,8 @@ namespace RequestPlex.UI
|
|||
|
||||
using (WebApp.Start<Startup>(uri))
|
||||
{
|
||||
Console.WriteLine("Running on {0}", uri);
|
||||
Console.WriteLine("Press enter to exit");
|
||||
Console.WriteLine($"Request Plex is running on {uri}");
|
||||
Console.WriteLine("Press any key to exit");
|
||||
Console.ReadLine();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
{
|
||||
authToken = Model.PlexAuthToken;
|
||||
}
|
||||
|
||||
}
|
||||
<div class="col-sm-8">
|
||||
<form class="form-horizontal" method="POST" id="mainForm">
|
||||
|
@ -26,10 +27,52 @@
|
|||
<legend>Request Plex Settings</legend>
|
||||
<div class="form-group">
|
||||
<label for="portNumber" class="col-lg-2 control-label">Port</label>
|
||||
|
||||
<div class="col-lg-10">
|
||||
<input type="text" class="form-control" id="portNumber" name="Port" placeholder="Port Number" value="@port">
|
||||
</div>
|
||||
</div>
|
||||
<small class="col-lg-10 col-lg-offset-2">You will have to restart after changing the port.</small>
|
||||
<div class="form-group">
|
||||
<label for="SearchForMovies" class="col-lg-2 control-label">Search for Movies</label>
|
||||
<div class="col-lg-10 checkbox">
|
||||
<label>
|
||||
@if (Model.SearchForMovies)
|
||||
{
|
||||
<input type="checkbox" id="SearchForMovies" name="SearchForMovies" checked="checked">
|
||||
}
|
||||
else
|
||||
{
|
||||
<input type="checkbox" id="SearchForMovies" name="SearchForMovies" checked="checked">
|
||||
}
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="SearchForTvShows" class="col-lg-2 control-label">Search for TV Shows</label>
|
||||
<div class="col-lg-10 checkbox">
|
||||
<label>
|
||||
@if (Model.SearchForTvShows)
|
||||
{
|
||||
<input type="checkbox" id="SearchForTvShows" name="SearchForTvShows" checked="checked">
|
||||
}
|
||||
else
|
||||
{
|
||||
<input type="checkbox" id="SearchForTvShows" name="SearchForTvShows">
|
||||
}
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="WeeklyRequestLimit" class="col-lg-2 control-label">Weekly Request Limit</label>
|
||||
<div class="col-lg-10 checkbox">
|
||||
<label>
|
||||
<input type="number" id="WeeklyRequestLimit" name="WeeklyRequestLimit" value="@Model.WeeklyRequestLimit">
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="authToken" class="col-lg-2 control-label">Plex Authorization Token</label>
|
||||
|
@ -39,7 +82,7 @@
|
|||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="userpass" class="col-lg-2 control-label">Username and Password</label>
|
||||
<label for="username" class="col-lg-2 control-label">Username and Password</label>
|
||||
<div class="col-lg-4">
|
||||
<input type="text" class="form-control" id="username" name="Username" placeholder="Username">
|
||||
</div>
|
||||
|
@ -55,15 +98,30 @@
|
|||
|
||||
<div class="form-group">
|
||||
<label for="userAuth" class="col-lg-2 control-label">Enable User Authentication</label>
|
||||
<div class="col-lg-4">
|
||||
<input type="checkbox" class="form-control" id="userAuth" name="UserAuthentication">
|
||||
<div class="col-lg-4 checkbox">
|
||||
<label>
|
||||
@if (Model.UserAuthentication)
|
||||
{
|
||||
<input type="checkbox" id="userAuth" name="UserAuthentication" checked="checked">
|
||||
}
|
||||
else
|
||||
{
|
||||
<input type="checkbox" id="userAuth" name="UserAuthentication">
|
||||
}
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<small>Current users that are allowed to authenticate: </small>
|
||||
<select id="users" multiple="" class="form-control col-lg-10 col-lg-offset-2">
|
||||
</select>
|
||||
|
||||
<br />
|
||||
<br />
|
||||
<small class="col-lg-offset-2">Current users that are allowed to authenticate: </small>
|
||||
<br />
|
||||
<br />
|
||||
<div class="form-group">
|
||||
<select id="users" multiple="" class="col-lg-10 col-lg-offset-2"></select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<br />
|
||||
<br />
|
||||
<div class="col-lg-10 col-lg-offset-2">
|
||||
<button id="refreshUsers" class="btn btn-primary">Refresh Users</button>
|
||||
</div>
|
||||
|
@ -74,7 +132,6 @@
|
|||
<br />
|
||||
<br />
|
||||
<div>
|
||||
<small class="col-lg-10 col-lg-offset-2">Please note, you will have to restart after changing these settings.</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-lg-10 col-lg-offset-2">
|
||||
|
@ -87,19 +144,11 @@
|
|||
</div>
|
||||
|
||||
|
||||
@if (Model.Errored)
|
||||
{
|
||||
<div class="alert alert-dismissible alert-danger">
|
||||
<button type="button" class="close" data-dismiss="alert"><i class="fa fa-times"></i></button>
|
||||
Please enter in a correct port number
|
||||
</div>
|
||||
}
|
||||
|
||||
<script>
|
||||
$(function () {
|
||||
|
||||
if ($('#PlexAuthToken')) {
|
||||
loadUserList();
|
||||
loadUserList();
|
||||
}
|
||||
|
||||
$('#refreshUsers').click(function () {
|
||||
|
@ -107,6 +156,7 @@
|
|||
});
|
||||
|
||||
$('#requestToken').click(function (e) {
|
||||
e.preventDefault();
|
||||
var $form = $("#mainForm");
|
||||
$.ajax({
|
||||
type: $form.prop("method"),
|
||||
|
@ -115,11 +165,11 @@
|
|||
dataType: "json",
|
||||
success: function (response) {
|
||||
console.log(response);
|
||||
if (response.Result === true) {
|
||||
if (response.result === true) {
|
||||
generateNotify("Success!", "success");
|
||||
$('#authToken').val(response.authToken);
|
||||
} else {
|
||||
generateNotify(response.Message, "warning");
|
||||
generateNotify(response.message, "warning");
|
||||
}
|
||||
},
|
||||
error: function (e) {
|
||||
|
@ -137,9 +187,13 @@
|
|||
url: "admin/getusers",
|
||||
dataType: "json",
|
||||
success: function (response) {
|
||||
response.each(function (user) {
|
||||
$('#users').append("<option>" + user + "</option>");
|
||||
});
|
||||
if (response.length > 1) {
|
||||
response.each(function(user) {
|
||||
$('#users').append("<option>" + user + "</option>");
|
||||
});
|
||||
} else {
|
||||
$('#users').append("<option>No Users!</option>");
|
||||
}
|
||||
},
|
||||
error: function (e) {
|
||||
console.log(e);
|
||||
|
|
|
@ -49,9 +49,11 @@
|
|||
</div>
|
||||
<div class="col-sm-2 col-sm-push-3">
|
||||
<span class="label label-success">{{status}}</span>
|
||||
<br />
|
||||
<br />
|
||||
<form method="POST" action="/search/request/{{type}}" id="form{{id}}">
|
||||
<input name="{{type}}Id" type="text" value="{{id}}" hidden="hidden" />
|
||||
<button id="{{id}}" style="text-align: right" class="btn btn-primary requestMovie" type="submit"><i class="fa fa-plus"></i> TestBtn</button>
|
||||
<button id="{{id}}" style="text-align: right" class="btn btn-danger" type="submit"><i class="fa fa-plus"></i> Remove</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<div>
|
||||
<h2>Search</h2>
|
||||
<h4>Want to wacth something that is not currently on Plex?! No problem! Just search for it below and request it!</h4>
|
||||
<!-- Nav tabs -->
|
||||
<ul id="nav-tabs" class="nav nav-tabs" role="tablist">
|
||||
<li role="presentation" class="active"><a href="#MoviesTab" aria-controls="home" role="tab" data-toggle="tab">Movies</a></li>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue