cmConst

cmConst

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using PdMagic.Windows;
namespace cmIISConfig
{
internal class CmConst
{
// System static file and folder names
public string WindowsProgramFiles => Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86);
public string WindowsProgramData => Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);
// CM static file and folder names
public string ApplicationName => "Crash Magic Online";
public string VersionsListUrl => "http://www.GovernmentTools.com/CrashMagicAppResources/versions/Versions.txt";
public string VersionsUrl => "http://www.GovernmentTools.com/CrashMagicAppResources/versions";
public string CompanyFolder => "PdMagic";
public string ApplicationFolderBaseName => "CrashMagicOnline";
public string DefaultInstanceName => "[Default]";
public string DllFileName => "CrashMagicOnline_ISAPI.dll";
// CM calculated file and folder names
public string FullInstanceName => FullInstanceNameP(InstanceName);  //CrashMagicOnline<InstanceName>
public string ProgramFiles => $@"{WindowsProgramFiles}\{CompanyFolder}\{FullInstanceName}";
public string IsapiFolder => $@"{ProgramFiles}\Bin\ISAPI";
public string ProgramData => $@"{WindowsProgramData}\{CompanyFolder}\{FullInstanceName}";
public string PubFolder => $@"{ProgramData}\Pub";
public string FilesFolder => $@"{PubFolder}\files";
public string CacheFolder => $@"{PubFolder}\Default\Cache\$";
public string DefaultInstallersFolder => $@"{WindowsProgramData}\{CompanyFolder}\Installers\CrashMagicOnline";
// CM calculated account names
public string InstanceUserName => NameWithInstanceP("cmUser", InstanceName);
public string InstanceUserGroupName => NameWithInstanceP("cmUserGroup", InstanceName);
// CM calculated IIS names
public string InstanceSiteName => NameWithInstanceP("CrashMagic", InstanceName);
public string InstanceAppName => NameWithInstanceP("/cm", InstanceName);
public string InstanceAppPoolName => NameWithInstanceP("cmISAPI32", InstanceName);
// Properties
public string InstanceName { get; set; }
public string InstallersFolder { get; set; }
// Variables
public List<VirtualFolder> VirtualFolders { get; } = new List<VirtualFolder>();
public List<MimeEntry> MimeEntries { get; } = new List<MimeEntry>();
public CmConst(string aInstanceName)
{
InstanceName = aInstanceName;
PopulateVirtualFolders();
PopulateMimeEntries();
InstallersFolder = DefaultInstallersFolder;
}
private void PopulateMimeEntries()
{
MimeEntries.Add(new MimeEntry(".svg", "image/svg+xml"));
MimeEntries.Add(new MimeEntry(".xap", "application/x-silverlight-app"));
MimeEntries.Add(new MimeEntry(".xaml", "application/xaml+xml"));
MimeEntries.Add(new MimeEntry(".pdxaml", "application/pdxaml+xml"));
}
private void PopulateVirtualFolders()
{
VirtualFolders.Add(new VirtualFolder("CMFiles", FilesFolder));
VirtualFolders.Add(new VirtualFolder("CMCache", CacheFolder));
}
public string NameWithInstanceP(string aName, string aInstanceName)
{
return aInstanceName == DefaultInstanceName ? aName : $"{aName}{aInstanceName}";
}
public string FullInstanceNameP(string aInstanceName)
{
return NameWithInstanceP( ApplicationFolderBaseName, aInstanceName);
}
public string ProgramFilesP(string aInstanceName)
{
return $@"{WindowsProgramFiles}\{CompanyFolder}\{FullInstanceNameP(aInstanceName)}";
}
public string IsapiFolderP(string aInstanceName)
{
return $@"{ProgramFilesP(aInstanceName)}\Bin\ISAPI";
}
public bool InstanceExistsP(string aInstanceName)
{
return Directory.Exists($@"{WindowsProgramFiles}\{CompanyFolder}\{FullInstanceNameP(aInstanceName)}") |
Directory.Exists($@"{WindowsProgramData}\{CompanyFolder}\{FullInstanceNameP(aInstanceName)}");
}
public bool ValidNewInstanceNameP(string aInstanceName)
{
if (aInstanceName == DefaultInstanceName)
{
aInstanceName = "";
}
if (InstanceExistsP(aInstanceName))
{
return false;
}
else
{
var r = new Regex(@"^[a-zA-Z0-9]+$");
return aInstanceName == string.Empty || r.IsMatch(aInstanceName);
}
}
}
}