2010-09-23 05:19:47 +02:00
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
2011-05-14 09:49:57 +02:00
|
|
|
|
using System.IO;
|
2010-09-23 05:19:47 +02:00
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Web.Mvc;
|
2011-01-29 07:10:22 +01:00
|
|
|
|
using NLog;
|
2011-03-03 09:50:33 +01:00
|
|
|
|
using NzbDrone.Core.Helpers;
|
2011-02-11 02:22:29 +01:00
|
|
|
|
using NzbDrone.Core.Model;
|
2011-05-13 06:46:26 +02:00
|
|
|
|
using NzbDrone.Core.Model.Notification;
|
2011-02-05 07:07:25 +01:00
|
|
|
|
using NzbDrone.Core.Providers;
|
2011-04-04 05:50:12 +02:00
|
|
|
|
using NzbDrone.Core.Providers.Core;
|
2011-07-28 09:21:49 +02:00
|
|
|
|
using NzbDrone.Core.Providers.ExternalNotification;
|
2011-04-19 02:12:06 +02:00
|
|
|
|
using NzbDrone.Core.Providers.Indexer;
|
2011-03-09 08:40:48 +01:00
|
|
|
|
using NzbDrone.Core.Repository;
|
2011-02-05 07:07:25 +01:00
|
|
|
|
using NzbDrone.Core.Repository.Quality;
|
2010-09-24 07:21:45 +02:00
|
|
|
|
using NzbDrone.Web.Models;
|
2010-09-23 05:19:47 +02:00
|
|
|
|
|
|
|
|
|
namespace NzbDrone.Web.Controllers
|
|
|
|
|
{
|
2010-10-08 05:35:04 +02:00
|
|
|
|
[HandleError]
|
2010-09-23 05:19:47 +02:00
|
|
|
|
public class SettingsController : Controller
|
|
|
|
|
{
|
2011-04-10 04:44:01 +02:00
|
|
|
|
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
|
|
|
|
private readonly ConfigProvider _configProvider;
|
|
|
|
|
private readonly IndexerProvider _indexerProvider;
|
|
|
|
|
private readonly QualityProvider _qualityProvider;
|
2011-04-25 09:42:29 +02:00
|
|
|
|
private readonly AutoConfigureProvider _autoConfigureProvider;
|
2011-05-29 06:07:11 +02:00
|
|
|
|
private readonly SeriesProvider _seriesProvider;
|
2011-07-28 09:21:49 +02:00
|
|
|
|
private readonly ExternalNotificationProvider _externalNotificationProvider;
|
2011-09-16 06:42:30 +02:00
|
|
|
|
private readonly QualityTypeProvider _qualityTypeProvider;
|
2011-09-23 02:18:41 +02:00
|
|
|
|
private readonly RootDirProvider _rootDirProvider;
|
2011-10-01 09:04:06 +02:00
|
|
|
|
private readonly ConfigFileProvider _configFileProvider;
|
2010-09-24 07:21:45 +02:00
|
|
|
|
|
2011-04-10 03:34:36 +02:00
|
|
|
|
public SettingsController(ConfigProvider configProvider, IndexerProvider indexerProvider,
|
2011-08-08 23:50:48 +02:00
|
|
|
|
QualityProvider qualityProvider, AutoConfigureProvider autoConfigureProvider,
|
2011-09-16 06:42:30 +02:00
|
|
|
|
SeriesProvider seriesProvider, ExternalNotificationProvider externalNotificationProvider,
|
2011-10-01 09:04:06 +02:00
|
|
|
|
QualityTypeProvider qualityTypeProvider, RootDirProvider rootDirProvider,
|
|
|
|
|
ConfigFileProvider configFileProvider)
|
2010-09-24 07:21:45 +02:00
|
|
|
|
{
|
2011-07-28 09:21:49 +02:00
|
|
|
|
_externalNotificationProvider = externalNotificationProvider;
|
2011-09-16 06:42:30 +02:00
|
|
|
|
_qualityTypeProvider = qualityTypeProvider;
|
2011-09-23 02:18:41 +02:00
|
|
|
|
_rootDirProvider = rootDirProvider;
|
2011-10-01 09:04:06 +02:00
|
|
|
|
_configFileProvider = configFileProvider;
|
2010-09-28 06:25:41 +02:00
|
|
|
|
_configProvider = configProvider;
|
2011-01-29 07:10:22 +01:00
|
|
|
|
_indexerProvider = indexerProvider;
|
2011-02-03 03:49:52 +01:00
|
|
|
|
_qualityProvider = qualityProvider;
|
2011-04-25 09:42:29 +02:00
|
|
|
|
_autoConfigureProvider = autoConfigureProvider;
|
2011-05-29 06:07:11 +02:00
|
|
|
|
_seriesProvider = seriesProvider;
|
2010-09-24 07:21:45 +02:00
|
|
|
|
}
|
2010-09-23 05:19:47 +02:00
|
|
|
|
|
2011-05-16 08:27:02 +02:00
|
|
|
|
public ActionResult Test()
|
|
|
|
|
{
|
|
|
|
|
return View();
|
|
|
|
|
}
|
|
|
|
|
|
2011-09-09 05:26:48 +02:00
|
|
|
|
public JsonResult TestResults(string q)
|
2011-05-16 08:27:02 +02:00
|
|
|
|
{
|
2011-09-09 05:26:48 +02:00
|
|
|
|
var results = new List<TvDbSearchResultModel>();
|
|
|
|
|
results.Add(new TvDbSearchResultModel { Id = 1, Title = "30 Rock", FirstAired = DateTime.Today.ToShortDateString() });
|
|
|
|
|
results.Add(new TvDbSearchResultModel { Id = 2, Title = "The Office", FirstAired = DateTime.Today.AddDays(-1).ToShortDateString() });
|
|
|
|
|
|
|
|
|
|
return Json(results, JsonRequestBehavior.AllowGet );
|
2011-05-16 08:27:02 +02:00
|
|
|
|
}
|
|
|
|
|
|
2011-07-01 22:33:03 +02:00
|
|
|
|
public ActionResult Index()
|
2010-09-23 05:19:47 +02:00
|
|
|
|
{
|
2011-07-01 22:33:03 +02:00
|
|
|
|
return RedirectToAction("Indexers");
|
2011-01-29 07:10:22 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public ActionResult Indexers()
|
|
|
|
|
{
|
2011-07-01 22:33:03 +02:00
|
|
|
|
return View(new IndexerSettingsModel
|
2011-08-08 23:50:48 +02:00
|
|
|
|
{
|
|
|
|
|
NzbMatrixUsername = _configProvider.NzbMatrixUsername,
|
|
|
|
|
NzbMatrixApiKey = _configProvider.NzbMatrixApiKey,
|
2011-04-19 02:12:06 +02:00
|
|
|
|
|
2011-08-08 23:50:48 +02:00
|
|
|
|
NzbsrusUId = _configProvider.NzbsrusUId,
|
|
|
|
|
NzbsrusHash = _configProvider.NzbsrusHash,
|
2011-04-19 02:12:06 +02:00
|
|
|
|
|
2011-08-08 23:50:48 +02:00
|
|
|
|
NzbsOrgHash = _configProvider.NzbsOrgHash,
|
|
|
|
|
NzbsOrgUId = _configProvider.NzbsOrgUId,
|
2011-04-19 02:12:06 +02:00
|
|
|
|
|
2011-08-08 23:50:48 +02:00
|
|
|
|
NewzbinUsername = _configProvider.NewzbinUsername,
|
|
|
|
|
NewzbinPassword = _configProvider.NewzbinPassword,
|
2011-04-19 02:12:06 +02:00
|
|
|
|
|
2011-08-08 23:50:48 +02:00
|
|
|
|
NzbsOrgEnabled = _indexerProvider.GetSettings(typeof(NzbsOrg)).Enable,
|
|
|
|
|
NzbMatrixEnabled = _indexerProvider.GetSettings(typeof(NzbMatrix)).Enable,
|
|
|
|
|
NzbsRUsEnabled = _indexerProvider.GetSettings(typeof(NzbsRUs)).Enable,
|
|
|
|
|
NewzbinEnabled = _indexerProvider.GetSettings(typeof(Newzbin)).Enable
|
|
|
|
|
});
|
2011-01-29 07:10:22 +01:00
|
|
|
|
}
|
|
|
|
|
|
2011-05-18 05:39:26 +02:00
|
|
|
|
public ActionResult Sabnzbd()
|
2011-01-29 07:10:22 +01:00
|
|
|
|
{
|
2011-08-26 19:45:59 +02:00
|
|
|
|
var tvCategory = _configProvider.SabTvCategory;
|
|
|
|
|
var tvCategorySelectList = new SelectList(new[] { tvCategory });
|
2011-06-09 03:45:06 +02:00
|
|
|
|
|
2011-05-18 05:39:26 +02:00
|
|
|
|
var model = new SabnzbdSettingsModel
|
2011-02-11 02:22:29 +01:00
|
|
|
|
{
|
2011-04-25 21:02:29 +02:00
|
|
|
|
SabHost = _configProvider.SabHost,
|
2011-08-08 23:50:48 +02:00
|
|
|
|
SabPort = _configProvider.SabPort,
|
2011-04-25 21:02:29 +02:00
|
|
|
|
SabApiKey = _configProvider.SabApiKey,
|
|
|
|
|
SabUsername = _configProvider.SabUsername,
|
|
|
|
|
SabPassword = _configProvider.SabPassword,
|
|
|
|
|
SabTvCategory = _configProvider.SabTvCategory,
|
2011-05-16 09:32:01 +02:00
|
|
|
|
SabTvPriority = _configProvider.SabTvPriority,
|
2011-08-26 19:45:59 +02:00
|
|
|
|
SabDropDirectory = _configProvider.SabDropDirectory,
|
|
|
|
|
SabTvCategorySelectList = tvCategorySelectList
|
2011-02-11 02:22:29 +01:00
|
|
|
|
};
|
|
|
|
|
|
2011-06-30 07:22:34 +02:00
|
|
|
|
return View(model);
|
2011-01-29 07:10:22 +01:00
|
|
|
|
}
|
|
|
|
|
|
2011-02-03 03:49:52 +01:00
|
|
|
|
public ActionResult Quality()
|
|
|
|
|
{
|
2011-02-05 07:07:25 +01:00
|
|
|
|
var qualityTypes = new List<QualityTypes>();
|
2011-02-03 03:49:52 +01:00
|
|
|
|
|
2011-04-19 02:12:06 +02:00
|
|
|
|
foreach (QualityTypes qual in Enum.GetValues(typeof(QualityTypes)))
|
2011-02-05 07:07:25 +01:00
|
|
|
|
{
|
|
|
|
|
qualityTypes.Add(qual);
|
|
|
|
|
}
|
|
|
|
|
|
2011-02-06 03:52:49 +01:00
|
|
|
|
ViewData["Qualities"] = qualityTypes;
|
|
|
|
|
|
2011-07-08 07:41:08 +02:00
|
|
|
|
var profiles = _qualityProvider.All().ToList();
|
2011-07-01 11:10:42 +02:00
|
|
|
|
|
|
|
|
|
foreach (var qualityProfile in profiles)
|
|
|
|
|
{
|
|
|
|
|
qualityProfile.AllowedString = string.Join(",", qualityProfile.Allowed);
|
|
|
|
|
}
|
|
|
|
|
|
2011-05-18 05:39:26 +02:00
|
|
|
|
var defaultQualityQualityProfileId = Convert.ToInt32(_configProvider.DefaultQualityProfile);
|
2011-05-29 10:59:25 +02:00
|
|
|
|
var qualityProfileSelectList = new SelectList(profiles, "QualityProfileId", "Name");
|
2011-09-16 06:42:30 +02:00
|
|
|
|
var qualityTypesFromDb = _qualityTypeProvider.All();
|
2011-02-05 07:07:25 +01:00
|
|
|
|
|
|
|
|
|
var model = new QualityModel
|
2011-04-10 04:44:01 +02:00
|
|
|
|
{
|
|
|
|
|
Profiles = profiles,
|
|
|
|
|
DefaultQualityProfileId = defaultQualityQualityProfileId,
|
2011-09-16 06:42:30 +02:00
|
|
|
|
QualityProfileSelectList = qualityProfileSelectList,
|
|
|
|
|
SdtvMaxSize = qualityTypesFromDb.Single(q => q.QualityTypeId == 1).MaxSize,
|
|
|
|
|
DvdMaxSize = qualityTypesFromDb.Single(q => q.QualityTypeId == 2).MaxSize,
|
|
|
|
|
HdtvMaxSize = qualityTypesFromDb.Single(q => q.QualityTypeId == 4).MaxSize,
|
|
|
|
|
WebdlMaxSize = qualityTypesFromDb.Single(q => q.QualityTypeId == 5).MaxSize,
|
|
|
|
|
Bluray720pMaxSize = qualityTypesFromDb.Single(q => q.QualityTypeId == 6).MaxSize,
|
|
|
|
|
Bluray1080pMaxSize = qualityTypesFromDb.Single(q => q.QualityTypeId == 7).MaxSize
|
2011-04-10 04:44:01 +02:00
|
|
|
|
};
|
2011-02-03 03:49:52 +01:00
|
|
|
|
|
2011-06-30 07:22:34 +02:00
|
|
|
|
return View(model);
|
2011-02-03 03:49:52 +01:00
|
|
|
|
}
|
|
|
|
|
|
2011-03-07 08:32:36 +01:00
|
|
|
|
public ActionResult Notifications()
|
|
|
|
|
{
|
|
|
|
|
var model = new NotificationSettingsModel
|
2011-04-10 04:44:01 +02:00
|
|
|
|
{
|
2011-07-28 09:21:49 +02:00
|
|
|
|
XbmcEnabled = _externalNotificationProvider.GetSettings(typeof(Xbmc)).Enable,
|
2011-07-09 20:19:33 +02:00
|
|
|
|
XbmcNotifyOnGrab = _configProvider.XbmcNotifyOnGrab,
|
|
|
|
|
XbmcNotifyOnDownload = _configProvider.XbmcNotifyOnDownload,
|
|
|
|
|
XbmcUpdateLibrary = _configProvider.XbmcUpdateLibrary,
|
|
|
|
|
XbmcCleanLibrary = _configProvider.XbmcCleanLibrary,
|
|
|
|
|
XbmcHosts = _configProvider.XbmcHosts,
|
|
|
|
|
XbmcUsername = _configProvider.XbmcUsername,
|
2011-10-27 07:46:54 +02:00
|
|
|
|
XbmcPassword = _configProvider.XbmcPassword,
|
|
|
|
|
SmtpEnabled = _externalNotificationProvider.GetSettings(typeof(Smtp)).Enable,
|
|
|
|
|
SmtpNotifyOnGrab = _configProvider.SmtpNotifyOnGrab,
|
|
|
|
|
SmtpNotifyOnDownload = _configProvider.SmtpNotifyOnGrab,
|
|
|
|
|
SmtpServer = _configProvider.SmtpServer,
|
|
|
|
|
SmtpPort = _configProvider.SmtpPort,
|
|
|
|
|
SmtpUseSsl = _configProvider.SmtpUseSsl,
|
|
|
|
|
SmtpUsername = _configProvider.SmtpUsername,
|
|
|
|
|
SmtpPassword = _configProvider.SmtpPassword,
|
|
|
|
|
SmtpFromAddress = _configProvider.SmtpFromAddress,
|
|
|
|
|
SmtpToAddresses = _configProvider.SmtpToAddresses
|
2011-04-10 04:44:01 +02:00
|
|
|
|
};
|
2011-03-07 08:32:36 +01:00
|
|
|
|
|
2011-07-01 22:33:03 +02:00
|
|
|
|
return View(model);
|
2011-03-07 08:32:36 +01:00
|
|
|
|
}
|
|
|
|
|
|
2011-02-26 05:07:22 +01:00
|
|
|
|
public ActionResult EpisodeSorting()
|
|
|
|
|
{
|
|
|
|
|
var model = new EpisodeSortingModel();
|
|
|
|
|
|
2011-07-08 05:36:02 +02:00
|
|
|
|
model.SeriesName = _configProvider.SortingIncludeSeriesName;
|
2011-07-08 05:57:44 +02:00
|
|
|
|
model.EpisodeName = _configProvider.SortingIncludeEpisodeTitle;
|
2011-07-08 05:36:02 +02:00
|
|
|
|
model.ReplaceSpaces = _configProvider.SortingReplaceSpaces;
|
|
|
|
|
model.AppendQuality = _configProvider.SortingAppendQuality;
|
2011-04-01 08:36:34 +02:00
|
|
|
|
model.SeasonFolders = _configProvider.UseSeasonFolder;
|
2011-07-08 05:36:02 +02:00
|
|
|
|
model.SeasonFolderFormat = _configProvider.SortingSeasonFolderFormat;
|
|
|
|
|
model.SeparatorStyle = _configProvider.SortingSeparatorStyle;
|
|
|
|
|
model.NumberStyle = _configProvider.SortingNumberStyle;
|
|
|
|
|
model.MultiEpisodeStyle = _configProvider.SortingMultiEpisodeStyle;
|
2011-02-26 05:07:22 +01:00
|
|
|
|
|
|
|
|
|
model.SeparatorStyles = new SelectList(EpisodeSortingHelper.GetSeparatorStyles(), "Id", "Name");
|
|
|
|
|
model.NumberStyles = new SelectList(EpisodeSortingHelper.GetNumberStyles(), "Id", "Name");
|
|
|
|
|
model.MultiEpisodeStyles = new SelectList(EpisodeSortingHelper.GetMultiEpisodeStyles(), "Id", "Name");
|
|
|
|
|
|
2011-07-01 22:33:03 +02:00
|
|
|
|
return View(model);
|
2011-02-26 05:07:22 +01:00
|
|
|
|
}
|
|
|
|
|
|
2011-10-01 09:04:06 +02:00
|
|
|
|
public ActionResult System()
|
|
|
|
|
{
|
2011-10-08 01:24:28 +02:00
|
|
|
|
var selectedAuthenticationType = _configFileProvider.AuthenticationType;
|
|
|
|
|
var authenticationTypes = new List<AuthenticationType>();
|
|
|
|
|
|
|
|
|
|
foreach (AuthenticationType authenticationType in Enum.GetValues(typeof(AuthenticationType)))
|
|
|
|
|
{
|
|
|
|
|
authenticationTypes.Add(authenticationType);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var authTypeSelectList = new SelectList(authenticationTypes, selectedAuthenticationType);
|
|
|
|
|
|
2011-10-01 09:04:06 +02:00
|
|
|
|
var model = new SystemSettingsModel();
|
|
|
|
|
model.Port = _configFileProvider.Port;
|
|
|
|
|
model.LaunchBrowser = _configFileProvider.LaunchBrowser;
|
2011-10-08 01:24:28 +02:00
|
|
|
|
model.AuthenticationType = selectedAuthenticationType;
|
|
|
|
|
model.AuthTypeSelectList = authTypeSelectList;
|
2011-10-01 09:04:06 +02:00
|
|
|
|
|
|
|
|
|
return View(model);
|
|
|
|
|
}
|
|
|
|
|
|
2011-05-29 06:07:11 +02:00
|
|
|
|
public ViewResult AddProfile()
|
2011-02-05 19:27:14 +01:00
|
|
|
|
{
|
2011-02-06 08:13:17 +01:00
|
|
|
|
var qualityTypes = new List<QualityTypes>();
|
|
|
|
|
|
2011-04-19 02:12:06 +02:00
|
|
|
|
foreach (QualityTypes qual in Enum.GetValues(typeof(QualityTypes)))
|
2011-02-06 08:13:17 +01:00
|
|
|
|
{
|
|
|
|
|
qualityTypes.Add(qual);
|
|
|
|
|
}
|
|
|
|
|
|
2011-05-30 00:44:05 +02:00
|
|
|
|
ViewData["Qualities"] = qualityTypes;
|
2011-02-06 08:13:17 +01:00
|
|
|
|
|
2011-04-22 02:30:19 +02:00
|
|
|
|
var qualityProfile = new QualityProfile
|
|
|
|
|
{
|
|
|
|
|
Name = "New Profile",
|
2011-04-22 19:09:06 +02:00
|
|
|
|
Allowed = new List<QualityTypes> { QualityTypes.Unknown },
|
2011-07-01 11:10:42 +02:00
|
|
|
|
Cutoff = QualityTypes.Unknown
|
2011-04-22 02:30:19 +02:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var id = _qualityProvider.Add(qualityProfile);
|
|
|
|
|
qualityProfile.QualityProfileId = id;
|
2011-07-01 11:10:42 +02:00
|
|
|
|
qualityProfile.AllowedString = "Unknown";
|
2011-04-22 02:30:19 +02:00
|
|
|
|
|
|
|
|
|
ViewData["ProfileId"] = id;
|
|
|
|
|
|
2011-05-29 06:07:11 +02:00
|
|
|
|
return View("QualityProfileItem", qualityProfile);
|
2011-04-22 02:30:19 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public ActionResult GetQualityProfileView(QualityProfile profile)
|
|
|
|
|
{
|
|
|
|
|
var qualityTypes = new List<QualityTypes>();
|
|
|
|
|
|
|
|
|
|
foreach (QualityTypes qual in Enum.GetValues(typeof(QualityTypes)))
|
|
|
|
|
{
|
|
|
|
|
qualityTypes.Add(qual);
|
|
|
|
|
}
|
2011-05-29 10:59:25 +02:00
|
|
|
|
|
2011-04-22 02:30:19 +02:00
|
|
|
|
ViewData["Qualities"] = qualityTypes;
|
|
|
|
|
ViewData["ProfileId"] = profile.QualityProfileId;
|
|
|
|
|
|
2011-05-29 06:07:11 +02:00
|
|
|
|
return PartialView("QualityProfileItem", profile);
|
2011-02-05 19:27:14 +01:00
|
|
|
|
}
|
|
|
|
|
|
2011-01-29 07:10:22 +01:00
|
|
|
|
public ActionResult SubMenu()
|
|
|
|
|
{
|
|
|
|
|
return PartialView();
|
|
|
|
|
}
|
|
|
|
|
|
2011-02-12 07:10:38 +01:00
|
|
|
|
public QualityModel GetUpdatedProfileList()
|
|
|
|
|
{
|
2011-07-08 07:41:08 +02:00
|
|
|
|
var profiles = _qualityProvider.All().ToList();
|
2011-04-10 04:44:01 +02:00
|
|
|
|
var defaultQualityQualityProfileId =
|
2011-06-17 04:27:10 +02:00
|
|
|
|
Convert.ToInt32(_configProvider.GetValue("DefaultQualityProfile", profiles[0].QualityProfileId));
|
2011-02-17 18:45:02 +01:00
|
|
|
|
var selectList = new SelectList(profiles, "QualityProfileId", "Name");
|
2011-02-16 05:44:19 +01:00
|
|
|
|
|
2011-05-29 10:59:25 +02:00
|
|
|
|
return new QualityModel { DefaultQualityProfileId = defaultQualityQualityProfileId, QualityProfileSelectList = selectList };
|
2011-02-12 07:10:38 +01:00
|
|
|
|
}
|
|
|
|
|
|
2011-04-22 02:30:19 +02:00
|
|
|
|
public JsonResult DeleteQualityProfile(int profileId)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
2011-05-29 06:07:11 +02:00
|
|
|
|
if (_seriesProvider.GetAllSeries().Where(s => s.QualityProfileId == profileId).Count() != 0)
|
|
|
|
|
return new JsonResult { Data = "Unable to delete Profile, it is still in use." };
|
|
|
|
|
|
2011-04-22 02:30:19 +02:00
|
|
|
|
_qualityProvider.Delete(profileId);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
catch (Exception)
|
|
|
|
|
{
|
|
|
|
|
return new JsonResult { Data = "failed" };
|
|
|
|
|
}
|
2011-04-22 19:09:06 +02:00
|
|
|
|
|
2011-04-22 02:30:19 +02:00
|
|
|
|
return new JsonResult { Data = "ok" };
|
|
|
|
|
}
|
|
|
|
|
|
2011-05-11 08:46:26 +02:00
|
|
|
|
public JsonResult AutoConfigureSab()
|
2011-04-25 09:42:29 +02:00
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
2011-05-11 08:46:26 +02:00
|
|
|
|
var info = _autoConfigureProvider.AutoConfigureSab();
|
|
|
|
|
return Json(info, JsonRequestBehavior.AllowGet);
|
2011-04-25 09:42:29 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
catch (Exception)
|
|
|
|
|
{
|
|
|
|
|
return new JsonResult { Data = "failed" };
|
|
|
|
|
}
|
|
|
|
|
}
|
2011-08-08 23:50:48 +02:00
|
|
|
|
|
2010-09-24 07:21:45 +02:00
|
|
|
|
[HttpPost]
|
2011-08-08 23:50:48 +02:00
|
|
|
|
public JsonResult SaveIndexers(IndexerSettingsModel data)
|
2010-09-24 07:21:45 +02:00
|
|
|
|
{
|
2011-02-15 02:20:17 +01:00
|
|
|
|
if (ModelState.IsValid)
|
2010-09-24 07:21:45 +02:00
|
|
|
|
{
|
2011-05-20 06:21:18 +02:00
|
|
|
|
var nzbsOrgSettings = _indexerProvider.GetSettings(typeof(NzbsOrg));
|
2011-04-20 01:46:21 +02:00
|
|
|
|
nzbsOrgSettings.Enable = data.NzbsOrgEnabled;
|
|
|
|
|
_indexerProvider.SaveSettings(nzbsOrgSettings);
|
2011-01-29 07:10:22 +01:00
|
|
|
|
|
2011-05-20 06:21:18 +02:00
|
|
|
|
var nzbMatrixSettings = _indexerProvider.GetSettings(typeof(NzbMatrix));
|
2011-04-20 01:46:21 +02:00
|
|
|
|
nzbMatrixSettings.Enable = data.NzbMatrixEnabled;
|
|
|
|
|
_indexerProvider.SaveSettings(nzbMatrixSettings);
|
|
|
|
|
|
2011-05-20 06:21:18 +02:00
|
|
|
|
var nzbsRUsSettings = _indexerProvider.GetSettings(typeof(NzbsRUs));
|
2011-04-20 01:46:21 +02:00
|
|
|
|
nzbsRUsSettings.Enable = data.NzbsRUsEnabled;
|
|
|
|
|
_indexerProvider.SaveSettings(nzbsRUsSettings);
|
|
|
|
|
|
2011-05-20 06:21:18 +02:00
|
|
|
|
var newzbinSettings = _indexerProvider.GetSettings(typeof(Newzbin));
|
2011-04-20 01:46:21 +02:00
|
|
|
|
newzbinSettings.Enable = data.NewzbinEnabled;
|
|
|
|
|
_indexerProvider.SaveSettings(newzbinSettings);
|
2011-01-31 02:30:59 +01:00
|
|
|
|
|
2011-04-19 02:12:06 +02:00
|
|
|
|
_configProvider.NzbsOrgUId = data.NzbsOrgUId;
|
2011-04-22 19:09:06 +02:00
|
|
|
|
_configProvider.NzbsOrgHash = data.NzbsOrgHash;
|
2011-04-19 02:12:06 +02:00
|
|
|
|
|
2011-04-20 01:46:21 +02:00
|
|
|
|
_configProvider.NzbMatrixUsername = data.NzbMatrixUsername;
|
|
|
|
|
_configProvider.NzbMatrixApiKey = data.NzbMatrixApiKey;
|
|
|
|
|
|
|
|
|
|
_configProvider.NzbsrusUId = data.NzbsrusUId;
|
2011-04-22 19:09:06 +02:00
|
|
|
|
_configProvider.NzbsrusHash = data.NzbsrusHash;
|
2011-04-20 01:46:21 +02:00
|
|
|
|
|
|
|
|
|
_configProvider.NewzbinUsername = data.NewzbinUsername;
|
|
|
|
|
_configProvider.NewzbinPassword = data.NewzbinPassword;
|
2011-04-19 02:12:06 +02:00
|
|
|
|
|
2011-08-08 23:50:48 +02:00
|
|
|
|
return GetSuccessResult();
|
2011-01-29 07:10:22 +01:00
|
|
|
|
}
|
|
|
|
|
|
2011-08-08 23:50:48 +02:00
|
|
|
|
return GetInvalidModelResult();
|
2010-09-23 05:19:47 +02:00
|
|
|
|
}
|
|
|
|
|
|
2011-01-29 07:10:22 +01:00
|
|
|
|
[HttpPost]
|
2011-08-08 23:50:48 +02:00
|
|
|
|
public JsonResult SaveSabnzbd(SabnzbdSettingsModel data)
|
2011-01-29 07:10:22 +01:00
|
|
|
|
{
|
2011-02-11 02:22:29 +01:00
|
|
|
|
if (ModelState.IsValid)
|
2011-01-29 07:10:22 +01:00
|
|
|
|
{
|
2011-09-23 02:18:41 +02:00
|
|
|
|
//Check to see if the TV Directory matches any RootDirs (Ignoring Case), if it does, return an error to the user
|
|
|
|
|
//This prevents a user from finding a way to delete their entire TV Library
|
|
|
|
|
var rootDirs = _rootDirProvider.GetAll();
|
|
|
|
|
if (rootDirs.Any(r => r.Path.Equals(data.SabDropDirectory, StringComparison.InvariantCultureIgnoreCase)))
|
|
|
|
|
Json(new NotificationResult { Title = "Failed", Text = "Invalid TV Directory", NotificationType = NotificationType.Error });
|
|
|
|
|
|
2011-03-31 03:42:27 +02:00
|
|
|
|
_configProvider.SabHost = data.SabHost;
|
2011-05-16 09:32:01 +02:00
|
|
|
|
_configProvider.SabPort = data.SabPort;
|
2011-03-31 03:42:27 +02:00
|
|
|
|
_configProvider.SabApiKey = data.SabApiKey;
|
|
|
|
|
_configProvider.SabPassword = data.SabPassword;
|
|
|
|
|
_configProvider.SabTvCategory = data.SabTvCategory;
|
|
|
|
|
_configProvider.SabUsername = data.SabUsername;
|
2011-05-16 09:32:01 +02:00
|
|
|
|
_configProvider.SabTvPriority = data.SabTvPriority;
|
2011-06-07 09:08:37 +02:00
|
|
|
|
_configProvider.SabDropDirectory = data.SabDropDirectory;
|
2011-01-29 07:10:22 +01:00
|
|
|
|
|
2011-08-08 23:50:48 +02:00
|
|
|
|
|
|
|
|
|
return GetSuccessResult();
|
2011-02-11 02:22:29 +01:00
|
|
|
|
}
|
|
|
|
|
|
2011-08-08 23:50:48 +02:00
|
|
|
|
return
|
|
|
|
|
Json(new NotificationResult() { Title = "Failed", Text = "Invalid request data.", NotificationType = NotificationType.Error });
|
2011-01-29 07:10:22 +01:00
|
|
|
|
}
|
|
|
|
|
|
2011-02-04 03:58:02 +01:00
|
|
|
|
[HttpPost]
|
2011-08-22 03:00:12 +02:00
|
|
|
|
public JsonResult SaveQuality(QualityModel data)
|
2011-02-04 03:58:02 +01:00
|
|
|
|
{
|
2011-02-15 02:20:17 +01:00
|
|
|
|
if (ModelState.IsValid)
|
2011-02-04 03:58:02 +01:00
|
|
|
|
{
|
2011-05-18 05:39:26 +02:00
|
|
|
|
_configProvider.DefaultQualityProfile = data.DefaultQualityProfileId;
|
2011-02-15 02:20:17 +01:00
|
|
|
|
|
|
|
|
|
//Saves only the Default Quality, skips User Profiles since none exist
|
2011-05-29 06:07:11 +02:00
|
|
|
|
if (data.Profiles == null)
|
2011-08-08 23:50:48 +02:00
|
|
|
|
return GetSuccessResult();
|
2011-02-15 02:20:17 +01:00
|
|
|
|
|
2011-05-29 06:07:11 +02:00
|
|
|
|
foreach (var profile in data.Profiles)
|
2011-02-15 02:20:17 +01:00
|
|
|
|
{
|
2011-05-29 06:07:11 +02:00
|
|
|
|
Logger.Debug(String.Format("Updating Profile: {0}", profile));
|
2011-02-06 08:13:17 +01:00
|
|
|
|
|
2011-02-15 02:20:17 +01:00
|
|
|
|
profile.Allowed = new List<QualityTypes>();
|
2011-05-29 10:59:25 +02:00
|
|
|
|
|
2011-05-29 23:25:00 +02:00
|
|
|
|
//Remove the extra comma from the end
|
|
|
|
|
profile.AllowedString = profile.AllowedString.Trim(',');
|
2011-05-29 10:59:25 +02:00
|
|
|
|
|
2011-02-15 02:20:17 +01:00
|
|
|
|
foreach (var quality in profile.AllowedString.Split(','))
|
2011-02-15 01:45:31 +01:00
|
|
|
|
{
|
2011-04-19 02:12:06 +02:00
|
|
|
|
var qType = (QualityTypes)Enum.Parse(typeof(QualityTypes), quality);
|
2011-02-15 02:20:17 +01:00
|
|
|
|
profile.Allowed.Add(qType);
|
|
|
|
|
}
|
2011-02-15 01:45:31 +01:00
|
|
|
|
|
2011-02-15 02:20:17 +01:00
|
|
|
|
//If the Cutoff value selected is not in the allowed list then use the last allowed value, this should be validated on submit
|
|
|
|
|
if (!profile.Allowed.Contains(profile.Cutoff))
|
2011-08-22 03:00:12 +02:00
|
|
|
|
return GetInvalidModelResult();
|
2011-02-15 02:20:17 +01:00
|
|
|
|
//profile.Cutoff = profile.Allowed.Last();
|
2011-02-06 08:13:17 +01:00
|
|
|
|
|
2011-04-22 19:09:06 +02:00
|
|
|
|
_qualityProvider.Update(profile);
|
2011-02-06 08:13:17 +01:00
|
|
|
|
}
|
2011-08-05 06:38:18 +02:00
|
|
|
|
|
2011-09-16 06:42:30 +02:00
|
|
|
|
var qualityTypesFromDb = _qualityTypeProvider.All();
|
|
|
|
|
|
|
|
|
|
qualityTypesFromDb.Single(q => q.QualityTypeId == 1).MaxSize = data.SdtvMaxSize;
|
|
|
|
|
qualityTypesFromDb.Single(q => q.QualityTypeId == 2).MaxSize = data.DvdMaxSize;
|
|
|
|
|
qualityTypesFromDb.Single(q => q.QualityTypeId == 4).MaxSize = data.HdtvMaxSize;
|
|
|
|
|
qualityTypesFromDb.Single(q => q.QualityTypeId == 5).MaxSize = data.WebdlMaxSize;
|
|
|
|
|
qualityTypesFromDb.Single(q => q.QualityTypeId == 6).MaxSize = data.Bluray720pMaxSize;
|
|
|
|
|
qualityTypesFromDb.Single(q => q.QualityTypeId == 7).MaxSize = data.Bluray1080pMaxSize;
|
|
|
|
|
|
|
|
|
|
_qualityTypeProvider.UpdateAll(qualityTypesFromDb);
|
|
|
|
|
|
2011-08-08 23:50:48 +02:00
|
|
|
|
return GetSuccessResult();
|
2011-02-04 03:58:02 +01:00
|
|
|
|
}
|
2011-02-05 07:07:25 +01:00
|
|
|
|
|
2011-08-08 23:50:48 +02:00
|
|
|
|
return GetInvalidModelResult();
|
2011-02-11 02:22:29 +01:00
|
|
|
|
}
|
2011-02-26 05:07:22 +01:00
|
|
|
|
|
2011-03-07 08:32:36 +01:00
|
|
|
|
[HttpPost]
|
2011-08-22 03:00:12 +02:00
|
|
|
|
public JsonResult SaveNotifications(NotificationSettingsModel data)
|
2011-03-07 08:32:36 +01:00
|
|
|
|
{
|
|
|
|
|
if (ModelState.IsValid)
|
|
|
|
|
{
|
2011-07-28 09:21:49 +02:00
|
|
|
|
//XBMC Enabled
|
|
|
|
|
var xbmcSettings = _externalNotificationProvider.GetSettings(typeof(Xbmc));
|
|
|
|
|
xbmcSettings.Enable = data.XbmcEnabled;
|
|
|
|
|
_externalNotificationProvider.SaveSettings(xbmcSettings);
|
|
|
|
|
|
2011-07-09 20:19:33 +02:00
|
|
|
|
_configProvider.XbmcNotifyOnGrab = data.XbmcNotifyOnGrab;
|
|
|
|
|
_configProvider.XbmcNotifyOnDownload = data.XbmcNotifyOnDownload;
|
|
|
|
|
_configProvider.XbmcUpdateLibrary = data.XbmcUpdateLibrary;
|
|
|
|
|
_configProvider.XbmcCleanLibrary = data.XbmcCleanLibrary;
|
|
|
|
|
_configProvider.XbmcHosts = data.XbmcHosts;
|
|
|
|
|
_configProvider.XbmcUsername = data.XbmcUsername;
|
|
|
|
|
_configProvider.XbmcPassword = data.XbmcPassword;
|
2011-03-07 08:32:36 +01:00
|
|
|
|
|
2011-10-27 07:46:54 +02:00
|
|
|
|
//SMTP
|
|
|
|
|
var smtpSettings = _externalNotificationProvider.GetSettings(typeof (Smtp));
|
|
|
|
|
smtpSettings.Enable = data.SmtpEnabled;
|
|
|
|
|
_externalNotificationProvider.SaveSettings(smtpSettings);
|
|
|
|
|
|
|
|
|
|
_configProvider.SmtpNotifyOnGrab = data.SmtpNotifyOnGrab;
|
|
|
|
|
_configProvider.SmtpNotifyOnGrab = data.SmtpNotifyOnDownload;
|
|
|
|
|
_configProvider.SmtpServer = data.SmtpServer;
|
|
|
|
|
_configProvider.SmtpPort = data.SmtpPort;
|
|
|
|
|
_configProvider.SmtpUseSsl = data.SmtpUseSsl;
|
|
|
|
|
_configProvider.SmtpUsername = data.SmtpUsername;
|
|
|
|
|
_configProvider.SmtpPassword = data.SmtpPassword;
|
|
|
|
|
_configProvider.SmtpFromAddress = data.SmtpFromAddress;
|
|
|
|
|
_configProvider.SmtpToAddresses = data.SmtpToAddresses;
|
|
|
|
|
|
2011-08-08 23:50:48 +02:00
|
|
|
|
return GetSuccessResult();
|
2011-03-07 08:32:36 +01:00
|
|
|
|
}
|
|
|
|
|
|
2011-08-08 23:50:48 +02:00
|
|
|
|
return GetInvalidModelResult();
|
2011-03-07 08:32:36 +01:00
|
|
|
|
}
|
|
|
|
|
|
2011-02-26 05:07:22 +01:00
|
|
|
|
[HttpPost]
|
2011-08-22 03:00:12 +02:00
|
|
|
|
public JsonResult SaveEpisodeSorting(EpisodeSortingModel data)
|
2011-02-26 05:07:22 +01:00
|
|
|
|
{
|
|
|
|
|
if (ModelState.IsValid)
|
|
|
|
|
{
|
2011-07-08 05:36:02 +02:00
|
|
|
|
_configProvider.SortingIncludeSeriesName = data.SeriesName;
|
2011-07-08 05:57:44 +02:00
|
|
|
|
_configProvider.SortingIncludeEpisodeTitle = data.EpisodeName;
|
2011-07-08 05:36:02 +02:00
|
|
|
|
_configProvider.SortingReplaceSpaces = data.ReplaceSpaces;
|
|
|
|
|
_configProvider.SortingAppendQuality = data.AppendQuality;
|
2011-05-19 01:10:25 +02:00
|
|
|
|
_configProvider.UseSeasonFolder = data.SeasonFolders;
|
2011-07-08 05:36:02 +02:00
|
|
|
|
_configProvider.SortingSeasonFolderFormat = data.SeasonFolderFormat;
|
|
|
|
|
_configProvider.SortingSeparatorStyle = data.SeparatorStyle;
|
|
|
|
|
_configProvider.SortingNumberStyle = data.NumberStyle;
|
|
|
|
|
_configProvider.SortingMultiEpisodeStyle = data.MultiEpisodeStyle;
|
2011-02-26 05:07:22 +01:00
|
|
|
|
|
2011-08-08 23:50:48 +02:00
|
|
|
|
return GetSuccessResult();
|
2011-02-26 05:07:22 +01:00
|
|
|
|
}
|
|
|
|
|
|
2011-08-08 23:50:48 +02:00
|
|
|
|
return GetInvalidModelResult();
|
|
|
|
|
}
|
|
|
|
|
|
2011-10-01 09:04:06 +02:00
|
|
|
|
[HttpPost]
|
|
|
|
|
public JsonResult SaveSystem(SystemSettingsModel data)
|
|
|
|
|
{
|
|
|
|
|
if (ModelState.IsValid)
|
|
|
|
|
{
|
|
|
|
|
_configFileProvider.Port = data.Port;
|
|
|
|
|
_configFileProvider.LaunchBrowser = data.LaunchBrowser;
|
2011-10-08 01:24:28 +02:00
|
|
|
|
_configFileProvider.AuthenticationType = data.AuthenticationType;
|
2011-10-01 09:04:06 +02:00
|
|
|
|
|
|
|
|
|
return GetSuccessResult();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return GetInvalidModelResult();
|
|
|
|
|
}
|
|
|
|
|
|
2011-08-08 23:50:48 +02:00
|
|
|
|
private JsonResult GetSuccessResult()
|
|
|
|
|
{
|
|
|
|
|
return Json(new NotificationResult() { Title = "Settings Saved" });
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private JsonResult GetInvalidModelResult()
|
|
|
|
|
{
|
|
|
|
|
return Json(new NotificationResult() { Title = "Unable to save setting", Text = "Invalid post data", NotificationType = NotificationType.Error });
|
2011-02-26 05:07:22 +01:00
|
|
|
|
}
|
2010-09-23 05:19:47 +02:00
|
|
|
|
}
|
2011-04-10 04:44:01 +02:00
|
|
|
|
}
|