120 lines
4.2 KiB
C#
120 lines
4.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Reflection;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
using Microsoft.Web.Administration;
|
|
|
|
using C4IT.Logging;
|
|
|
|
using Microsoft.Win32;
|
|
|
|
using static C4IT.Logging.cLogManager;
|
|
|
|
namespace C4IT_DataHistoryProvider_Base
|
|
{
|
|
public static class IisConfigHelper
|
|
{
|
|
public static cIssConfiguration CheckIISConfiguration()
|
|
{
|
|
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
|
try
|
|
{
|
|
var _res = new cIssConfiguration();
|
|
CheckIISComponents(_res);
|
|
CheckIISConfiuration(_res);
|
|
|
|
return _res;
|
|
}
|
|
catch (Exception E)
|
|
{
|
|
LogException(E);
|
|
}
|
|
finally
|
|
{
|
|
if (CM != null) LogMethodEnd(CM);
|
|
}
|
|
|
|
|
|
return null;
|
|
}
|
|
|
|
private static void CheckIISComponents(cIssConfiguration _issConfig)
|
|
{
|
|
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
|
try
|
|
{
|
|
var _regBase = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64);
|
|
var _regKey = _regBase.OpenSubKey("SOFTWARE\\Microsoft\\InetStp\\Components", false);
|
|
if (_regKey != null)
|
|
{
|
|
var _regVal1 = _regKey.GetValue("WindowsAuthentication")?.ToString();
|
|
var _regVal2 = _regKey.GetValue("WindowsAuthenticationBinaries")?.ToString();
|
|
_issConfig.IsIssWindowsAuthenticationInstalled = _regVal1 == "1" && _regVal2 == "1";
|
|
|
|
var _regVal3 = _regKey.GetValue("WebSockets")?.ToString();
|
|
_issConfig.IsWebSocketInstalled = _regVal3 == "1";
|
|
}
|
|
}
|
|
catch (Exception E)
|
|
{
|
|
LogException(E);
|
|
}
|
|
finally
|
|
{
|
|
if (CM != null) LogMethodEnd(CM);
|
|
}
|
|
}
|
|
|
|
private static void CheckIISConfiuration(cIssConfiguration _issConfig)
|
|
{
|
|
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
|
try
|
|
{
|
|
var _serverManager = new ServerManager();
|
|
|
|
var _siteCollections = _serverManager.Sites;
|
|
foreach (var _site in _siteCollections)
|
|
{
|
|
var _applications = _site.Applications;
|
|
foreach (var _application in _applications)
|
|
{
|
|
if (_application.Path.ToLowerInvariant() != "/f4sdcockpit")
|
|
continue;
|
|
|
|
var _appConfig = _application.GetWebConfiguration();
|
|
var _cfgWindowsAuthentication = _appConfig.GetSection("system.webServer/security/authentication/windowsAuthentication");
|
|
if (_cfgWindowsAuthentication != null)
|
|
{
|
|
var _attr = _cfgWindowsAuthentication.Attributes.FirstOrDefault(v => v.Name == "enabled");
|
|
if (_attr != null)
|
|
{
|
|
if (_attr.Value is bool _valWindowsAuthentication)
|
|
_issConfig.IsIssWindowsAuthenticationEnabled |= _valWindowsAuthentication;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch (Exception E)
|
|
{
|
|
LogException(E);
|
|
}
|
|
finally
|
|
{
|
|
if (CM != null) LogMethodEnd(CM);
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
public class cIssConfiguration
|
|
{
|
|
public bool IsIssWindowsAuthenticationInstalled = false;
|
|
public bool IsWebSocketInstalled = false;
|
|
public bool IsIssWindowsAuthenticationEnabled = false;
|
|
}
|
|
}
|