AcmeController.cs 1.0 KB

123456789101112131415161718192021222324252627282930313233
  1. using Microsoft.AspNetCore.Mvc;
  2. using Moonlight.App.Events;
  3. using Moonlight.App.Services;
  4. namespace Moonlight.App.Http.Controllers.WellKnown;
  5. [ApiController]
  6. [Route(".well-known/acme-challenge")]
  7. public class AcmeController : Controller
  8. {
  9. private readonly LetsEncryptService LetsEncryptService;
  10. private readonly EventSystem Event;
  11. public AcmeController(LetsEncryptService letsEncryptService, EventSystem eventSystem)
  12. {
  13. LetsEncryptService = letsEncryptService;
  14. Event = eventSystem;
  15. }
  16. [HttpGet("{token}")]
  17. public async Task<ActionResult> Get([FromRoute] string token)
  18. {
  19. if (string.IsNullOrEmpty(LetsEncryptService.HttpChallenge) || string.IsNullOrEmpty(LetsEncryptService.HttpChallengeToken))
  20. return Problem();
  21. if (string.IsNullOrEmpty(token) || LetsEncryptService.HttpChallengeToken != token)
  22. return Problem();
  23. await Event.Emit("letsEncrypt.challengeFetched");
  24. return Ok(LetsEncryptService.HttpChallenge);
  25. }
  26. }