Files
EonaCat.LogStack/EonaCat.LogStack.Status/Pages/Admin/Certificates.cshtml.cs
EonaCat 977374ce02 Added EonaCat.LogStack.Status
Updated EonaCat.LogStack.LogClient to support EonaCat.LogStack.Status
2026-03-12 21:15:33 +01:00

91 lines
2.9 KiB
C#

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.EntityFrameworkCore;
using EonaCat.LogStack.Status.Data;
using EonaCat.LogStack.Status.Models;
using EonaCat.LogStack.Status.Services;
namespace EonaCat.LogStack.Status.Pages.Admin;
public class CertificatesModel : PageModel
{
// This file is part of the EonaCat project(s) which is released under the Apache License.
// See the LICENSE file or go to https://EonaCat.com/License for full license details.
private readonly DatabaseContext _db;
private readonly MonitoringService _monSvc;
public CertificatesModel(DatabaseContext db, MonitoringService monSvc) { _db = db; _monSvc = monSvc; }
public List<CertificateEntry> Certificates { get; set; } = new();
[BindProperty] public CertificateEntry EditCert { get; set; } = new();
public string? Message { get; set; }
public async Task<IActionResult> OnGetAsync(string? msg)
{
if (HttpContext.Session.GetString("IsAdmin") != "true")
{
return RedirectToPage("/Admin/Login");
}
Certificates = await _db.Certificates.OrderBy(c => c.ExpiresAt).ToListAsync();
Message = msg;
return Page();
}
public async Task<IActionResult> OnPostSaveAsync()
{
if (HttpContext.Session.GetString("IsAdmin") != "true")
{
return RedirectToPage("/Admin/Login");
}
if (EditCert.Id == 0)
{
_db.Certificates.Add(EditCert);
}
else
{
var e = await _db.Certificates.FindAsync(EditCert.Id);
if (e != null)
{
e.Name = EditCert.Name;
e.Domain = EditCert.Domain;
e.Port = EditCert.Port;
e.IsPublic = EditCert.IsPublic;
e.AlertOnExpiry = EditCert.AlertOnExpiry;
e.AlertDaysBeforeExpiry = EditCert.AlertDaysBeforeExpiry;
}
}
await _db.SaveChangesAsync();
return RedirectToPage(new { msg = "Certificate saved." });
}
public async Task<IActionResult> OnPostDeleteAsync(int id)
{
if (HttpContext.Session.GetString("IsAdmin") != "true")
{
return RedirectToPage("/Admin/Login");
}
var c = await _db.Certificates.FindAsync(id);
if (c != null) { _db.Certificates.Remove(c); await _db.SaveChangesAsync(); }
return RedirectToPage(new { msg = "Certificate deleted." });
}
public async Task<IActionResult> OnPostCheckNowAsync(int id)
{
if (HttpContext.Session.GetString("IsAdmin") != "true")
{
return RedirectToPage("/Admin/Login");
}
var c = await _db.Certificates.FindAsync(id);
if (c != null)
{
await _monSvc.CheckCertificateAsync(c);
}
return RedirectToPage(new { msg = "Certificate checked." });
}
}