63 lines
2.3 KiB
C#
63 lines
2.3 KiB
C#
using DotNetNuke.Web.Api;
|
|
using System.IO;
|
|
using System.Net.Http;
|
|
using System.Net;
|
|
using System.Web.Http;
|
|
|
|
namespace Bring2mind.DnnConnect2025Demo.SysMonitor
|
|
{
|
|
public class SysController : DnnApiController, IServiceRouteMapper
|
|
{
|
|
private const string apiKey = "SysMonitor";
|
|
private readonly DotNetNuke.Abstractions.Application.IApplicationStatusInfo applicationStatusInfo;
|
|
private readonly DotNetNuke.Abstractions.Application.IApplicationInfo applicationInfo;
|
|
|
|
public SysController(DotNetNuke.Abstractions.Application.IApplicationStatusInfo applicationStatusInfo, DotNetNuke.Abstractions.Application.IApplicationInfo applicationInfo)
|
|
{
|
|
this.applicationStatusInfo = applicationStatusInfo;
|
|
this.applicationInfo = applicationInfo;
|
|
}
|
|
|
|
public void RegisterRoutes(IMapRoute mapRouteManager)
|
|
{
|
|
mapRouteManager.MapHttpRoute(
|
|
"Bring2mind/SysMonitor",
|
|
"Bring2mindSysMonitorMap1",
|
|
"Sys/{action}",
|
|
new { Controller = "Sys" },
|
|
null, new[] { "Bring2mind.DnnConnect2025Demo.SysMonitor" });
|
|
}
|
|
|
|
[HttpGet]
|
|
[ApiTokenAuthorize(apiKey, "", DotNetNuke.Web.Api.Auth.ApiTokens.Models.ApiTokenScope.Host)]
|
|
public HttpResponseMessage WebConfigMd5()
|
|
{
|
|
return Request.CreateResponse(HttpStatusCode.OK, SysMethods.GetWebConfigMd5(Path.Combine(applicationStatusInfo.ApplicationMapPath, "web.config")));
|
|
}
|
|
|
|
[HttpGet]
|
|
[ApiTokenAuthorize(apiKey, "", DotNetNuke.Web.Api.Auth.ApiTokens.Models.ApiTokenScope.Host)]
|
|
public HttpResponseMessage Version()
|
|
{
|
|
return Request.CreateResponse(HttpStatusCode.OK, applicationInfo.Version.ToString());
|
|
}
|
|
|
|
[HttpGet]
|
|
[ApiTokenAuthorize(apiKey, "", DotNetNuke.Web.Api.Auth.ApiTokens.Models.ApiTokenScope.Host)]
|
|
public HttpResponseMessage CanAccessParent()
|
|
{
|
|
var appDir = new DirectoryInfo(applicationStatusInfo.ApplicationMapPath);
|
|
var parentDir = appDir.Parent;
|
|
|
|
return Request.CreateResponse(HttpStatusCode.OK, SysMethods.IsDirectoryWritable(parentDir.FullName));
|
|
}
|
|
|
|
[HttpGet]
|
|
[ApiTokenAuthorize(apiKey, "", DotNetNuke.Web.Api.Auth.ApiTokens.Models.ApiTokenScope.Host)]
|
|
public HttpResponseMessage CanAccessWindows()
|
|
{
|
|
return Request.CreateResponse(HttpStatusCode.OK, SysMethods.IsDirectoryWritable(@"C:\Windows"));
|
|
}
|
|
}
|
|
}
|