StartupWizardService.cs 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. using System.Linq;
  2. using System.Threading.Tasks;
  3. using MediaBrowser.Controller.Configuration;
  4. using MediaBrowser.Controller.Library;
  5. using MediaBrowser.Controller.Net;
  6. using MediaBrowser.Model.Services;
  7. using Microsoft.Extensions.Logging;
  8. namespace MediaBrowser.Api
  9. {
  10. [Route("/Startup/Complete", "POST", Summary = "Reports that the startup wizard has been completed", IsHidden = true)]
  11. public class ReportStartupWizardComplete : IReturnVoid
  12. {
  13. }
  14. [Route("/Startup/Configuration", "GET", Summary = "Gets initial server configuration", IsHidden = true)]
  15. public class GetStartupConfiguration : IReturn<StartupConfiguration>
  16. {
  17. }
  18. [Route("/Startup/Configuration", "POST", Summary = "Updates initial server configuration", IsHidden = true)]
  19. public class UpdateStartupConfiguration : StartupConfiguration, IReturnVoid
  20. {
  21. }
  22. [Route("/Startup/RemoteAccess", "POST", Summary = "Updates initial server configuration", IsHidden = true)]
  23. public class UpdateRemoteAccessConfiguration : IReturnVoid
  24. {
  25. public bool EnableRemoteAccess { get; set; }
  26. public bool EnableAutomaticPortMapping { get; set; }
  27. }
  28. [Route("/Startup/User", "GET", Summary = "Gets initial user info", IsHidden = true)]
  29. public class GetStartupUser : IReturn<StartupUser>
  30. {
  31. }
  32. [Route("/Startup/User", "POST", Summary = "Updates initial user info", IsHidden = true)]
  33. public class UpdateStartupUser : StartupUser
  34. {
  35. }
  36. [Authenticated(AllowBeforeStartupWizard = true, Roles = "Admin")]
  37. public class StartupWizardService : BaseApiService
  38. {
  39. private readonly IUserManager _userManager;
  40. public StartupWizardService(
  41. ILogger<StartupWizardService> logger,
  42. IServerConfigurationManager serverConfigurationManager,
  43. IHttpResultFactory httpResultFactory,
  44. IUserManager userManager)
  45. : base(logger, serverConfigurationManager, httpResultFactory)
  46. {
  47. _userManager = userManager;
  48. }
  49. public void Post(ReportStartupWizardComplete request)
  50. {
  51. ServerConfigurationManager.Configuration.IsStartupWizardCompleted = true;
  52. ServerConfigurationManager.SetOptimalValues();
  53. ServerConfigurationManager.SaveConfiguration();
  54. }
  55. public object Get(GetStartupConfiguration request)
  56. {
  57. var result = new StartupConfiguration
  58. {
  59. UICulture = ServerConfigurationManager.Configuration.UICulture,
  60. MetadataCountryCode = ServerConfigurationManager.Configuration.MetadataCountryCode,
  61. PreferredMetadataLanguage = ServerConfigurationManager.Configuration.PreferredMetadataLanguage
  62. };
  63. return result;
  64. }
  65. public void Post(UpdateStartupConfiguration request)
  66. {
  67. ServerConfigurationManager.Configuration.UICulture = request.UICulture;
  68. ServerConfigurationManager.Configuration.MetadataCountryCode = request.MetadataCountryCode;
  69. ServerConfigurationManager.Configuration.PreferredMetadataLanguage = request.PreferredMetadataLanguage;
  70. ServerConfigurationManager.SaveConfiguration();
  71. }
  72. public void Post(UpdateRemoteAccessConfiguration request)
  73. {
  74. ServerConfigurationManager.Configuration.EnableRemoteAccess = request.EnableRemoteAccess;
  75. ServerConfigurationManager.Configuration.EnableUPnP = request.EnableAutomaticPortMapping;
  76. ServerConfigurationManager.SaveConfiguration();
  77. }
  78. public object Get(GetStartupUser request)
  79. {
  80. var user = _userManager.Users.First();
  81. return new StartupUser
  82. {
  83. Name = user.Name,
  84. Password = user.Password
  85. };
  86. }
  87. public async Task Post(UpdateStartupUser request)
  88. {
  89. var user = _userManager.Users.First();
  90. user.Name = request.Name;
  91. _userManager.UpdateUser(user);
  92. if (!string.IsNullOrEmpty(request.Password))
  93. {
  94. await _userManager.ChangePassword(user, request.Password).ConfigureAwait(false);
  95. }
  96. }
  97. }
  98. public class StartupConfiguration
  99. {
  100. public string UICulture { get; set; }
  101. public string MetadataCountryCode { get; set; }
  102. public string PreferredMetadataLanguage { get; set; }
  103. }
  104. public class StartupUser
  105. {
  106. public string Name { get; set; }
  107. public string Password { get; set; }
  108. }
  109. }