GIT: perform LF normalization
This commit is contained in:
@@ -1,111 +1,111 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Data.SqlClient;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using System.Web.Mvc;
|
||||
|
||||
namespace Disco.Web.Models.InitialConfig
|
||||
{
|
||||
public class DatabaseModel
|
||||
{
|
||||
public DatabaseModel()
|
||||
{
|
||||
// Set Defaults
|
||||
this.Server = "(local)";
|
||||
this.DatabaseName = "Disco";
|
||||
this.AuthMethod = "SSPI";
|
||||
}
|
||||
|
||||
public static DatabaseModel FromConnectionString(string ConnectionString)
|
||||
{
|
||||
var result = new DatabaseModel();
|
||||
|
||||
try
|
||||
{
|
||||
var csb = new SqlConnectionStringBuilder(ConnectionString);
|
||||
|
||||
if (!string.IsNullOrEmpty(csb.DataSource))
|
||||
result.Server = csb.DataSource;
|
||||
if (!string.IsNullOrEmpty(csb.InitialCatalog))
|
||||
result.DatabaseName = csb.InitialCatalog;
|
||||
if (csb.IntegratedSecurity)
|
||||
{
|
||||
result.AuthMethod = "SSPI";
|
||||
}
|
||||
else
|
||||
{
|
||||
result.AuthMethod = "SQL";
|
||||
result.Auth_SQL_Username = csb.UserID;
|
||||
result.Auth_SQL_Password = csb.Password;
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
// Ignore Parsing errors
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public SqlConnectionStringBuilder ToConnectionString()
|
||||
{
|
||||
var csb = new SqlConnectionStringBuilder()
|
||||
{
|
||||
DataSource = this.Server,
|
||||
InitialCatalog = this.DatabaseName,
|
||||
IntegratedSecurity = (this.AuthMethod.Equals("SSPI", StringComparison.InvariantCultureIgnoreCase)),
|
||||
UserID = (this.AuthMethod.Equals("SQL", StringComparison.InvariantCultureIgnoreCase)) ? this.Auth_SQL_Username : string.Empty,
|
||||
Password = (this.AuthMethod.Equals("SQL", StringComparison.InvariantCultureIgnoreCase)) ? this.Auth_SQL_Password : string.Empty,
|
||||
ApplicationName = "Disco WebApp",
|
||||
MultipleActiveResultSets = true,
|
||||
Pooling = true
|
||||
};
|
||||
|
||||
return csb;
|
||||
}
|
||||
|
||||
[Required(ErrorMessage = "The Server name is required")]
|
||||
public string Server { get; set; }
|
||||
[Required(ErrorMessage = "The Database name is required")]
|
||||
public string DatabaseName { get; set; }
|
||||
[Required(ErrorMessage = "The Authentication Method is required")]
|
||||
public string AuthMethod { get; set; }
|
||||
|
||||
[CustomValidation(typeof(DatabaseModel), "SqlAuthRequired", ErrorMessage = "When using SQL Authentication a Username is required")]
|
||||
public string Auth_SQL_Username { get; set; }
|
||||
[DataType(DataType.Password), CustomValidation(typeof(DatabaseModel), "SqlAuthRequired", ErrorMessage="When using SQL Authentication a Password is required")]
|
||||
public string Auth_SQL_Password { get; set; }
|
||||
|
||||
public List<SelectListItem> AuthMethods
|
||||
{
|
||||
get
|
||||
{
|
||||
return new List<SelectListItem>(){
|
||||
new SelectListItem(){
|
||||
Value="SSPI", Text="Integrated Authentication", Selected=true
|
||||
},
|
||||
new SelectListItem(){
|
||||
Value="SQL", Text="SQL Authentication", Selected=false
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public static ValidationResult SqlAuthRequired(object value, ValidationContext validationContext)
|
||||
{
|
||||
var instance = validationContext.ObjectInstance as DatabaseModel;
|
||||
|
||||
if (instance != null && instance.AuthMethod != null && instance.AuthMethod.Equals("SQL", StringComparison.InvariantCultureIgnoreCase))
|
||||
{
|
||||
var stringValue = value as string;
|
||||
if (string.IsNullOrWhiteSpace(stringValue))
|
||||
return null; // Invalid
|
||||
}
|
||||
|
||||
return ValidationResult.Success;
|
||||
}
|
||||
|
||||
}
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Data.SqlClient;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using System.Web.Mvc;
|
||||
|
||||
namespace Disco.Web.Models.InitialConfig
|
||||
{
|
||||
public class DatabaseModel
|
||||
{
|
||||
public DatabaseModel()
|
||||
{
|
||||
// Set Defaults
|
||||
this.Server = "(local)";
|
||||
this.DatabaseName = "Disco";
|
||||
this.AuthMethod = "SSPI";
|
||||
}
|
||||
|
||||
public static DatabaseModel FromConnectionString(string ConnectionString)
|
||||
{
|
||||
var result = new DatabaseModel();
|
||||
|
||||
try
|
||||
{
|
||||
var csb = new SqlConnectionStringBuilder(ConnectionString);
|
||||
|
||||
if (!string.IsNullOrEmpty(csb.DataSource))
|
||||
result.Server = csb.DataSource;
|
||||
if (!string.IsNullOrEmpty(csb.InitialCatalog))
|
||||
result.DatabaseName = csb.InitialCatalog;
|
||||
if (csb.IntegratedSecurity)
|
||||
{
|
||||
result.AuthMethod = "SSPI";
|
||||
}
|
||||
else
|
||||
{
|
||||
result.AuthMethod = "SQL";
|
||||
result.Auth_SQL_Username = csb.UserID;
|
||||
result.Auth_SQL_Password = csb.Password;
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
// Ignore Parsing errors
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public SqlConnectionStringBuilder ToConnectionString()
|
||||
{
|
||||
var csb = new SqlConnectionStringBuilder()
|
||||
{
|
||||
DataSource = this.Server,
|
||||
InitialCatalog = this.DatabaseName,
|
||||
IntegratedSecurity = (this.AuthMethod.Equals("SSPI", StringComparison.InvariantCultureIgnoreCase)),
|
||||
UserID = (this.AuthMethod.Equals("SQL", StringComparison.InvariantCultureIgnoreCase)) ? this.Auth_SQL_Username : string.Empty,
|
||||
Password = (this.AuthMethod.Equals("SQL", StringComparison.InvariantCultureIgnoreCase)) ? this.Auth_SQL_Password : string.Empty,
|
||||
ApplicationName = "Disco WebApp",
|
||||
MultipleActiveResultSets = true,
|
||||
Pooling = true
|
||||
};
|
||||
|
||||
return csb;
|
||||
}
|
||||
|
||||
[Required(ErrorMessage = "The Server name is required")]
|
||||
public string Server { get; set; }
|
||||
[Required(ErrorMessage = "The Database name is required")]
|
||||
public string DatabaseName { get; set; }
|
||||
[Required(ErrorMessage = "The Authentication Method is required")]
|
||||
public string AuthMethod { get; set; }
|
||||
|
||||
[CustomValidation(typeof(DatabaseModel), "SqlAuthRequired", ErrorMessage = "When using SQL Authentication a Username is required")]
|
||||
public string Auth_SQL_Username { get; set; }
|
||||
[DataType(DataType.Password), CustomValidation(typeof(DatabaseModel), "SqlAuthRequired", ErrorMessage="When using SQL Authentication a Password is required")]
|
||||
public string Auth_SQL_Password { get; set; }
|
||||
|
||||
public List<SelectListItem> AuthMethods
|
||||
{
|
||||
get
|
||||
{
|
||||
return new List<SelectListItem>(){
|
||||
new SelectListItem(){
|
||||
Value="SSPI", Text="Integrated Authentication", Selected=true
|
||||
},
|
||||
new SelectListItem(){
|
||||
Value="SQL", Text="SQL Authentication", Selected=false
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public static ValidationResult SqlAuthRequired(object value, ValidationContext validationContext)
|
||||
{
|
||||
var instance = validationContext.ObjectInstance as DatabaseModel;
|
||||
|
||||
if (instance != null && instance.AuthMethod != null && instance.AuthMethod.Equals("SQL", StringComparison.InvariantCultureIgnoreCase))
|
||||
{
|
||||
var stringValue = value as string;
|
||||
if (string.IsNullOrWhiteSpace(stringValue))
|
||||
return null; // Invalid
|
||||
}
|
||||
|
||||
return ValidationResult.Success;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,181 +1,181 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Security;
|
||||
using System.Security.Permissions;
|
||||
using System.Security.Principal;
|
||||
using System.Web;
|
||||
|
||||
namespace Disco.Web.Models.InitialConfig
|
||||
{
|
||||
public class FileStoreModel
|
||||
{
|
||||
public FileStoreModel()
|
||||
{
|
||||
DirectoryModel = FileStoreModel.FileStoreDirectoryModel.DirectoryRoots();
|
||||
}
|
||||
|
||||
[Required(), CustomValidation(typeof(FileStoreModel), "DirectoryPermissionRequired")]
|
||||
public string FileStoreLocation { get; set; }
|
||||
|
||||
public FileStoreDirectoryModel DirectoryModel { get; set; }
|
||||
|
||||
public void ExpandDirectoryModel()
|
||||
{
|
||||
if (!string.IsNullOrWhiteSpace(FileStoreLocation))
|
||||
{
|
||||
var branches = this.FileStoreLocation.ToUpper().Split(Path.DirectorySeparatorChar);
|
||||
var branchesCase = this.FileStoreLocation.Split(Path.DirectorySeparatorChar);
|
||||
FileStoreDirectoryModel branchModel;
|
||||
FileStoreDirectoryModel branchParent = this.DirectoryModel;
|
||||
for (int i = 0; i < branches.Length; i++)
|
||||
{
|
||||
var branch = branches[i];
|
||||
if (branchParent.SubDirectories.TryGetValue(branch, out branchModel))
|
||||
{
|
||||
branchModel.ExpandSubDirectories();
|
||||
}
|
||||
else
|
||||
{
|
||||
// New
|
||||
branchModel = FileStoreDirectoryModel.FromNew(branchesCase[i], Path.Combine(branchParent.Path, branchesCase[i]));
|
||||
branchParent.SubDirectories.Add(branchModel.Name.ToUpper(), branchModel);
|
||||
}
|
||||
|
||||
branchParent = branchModel;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static ValidationResult DirectoryPermissionRequired(object value, ValidationContext validationContext)
|
||||
{
|
||||
var instance = validationContext.ObjectInstance as FileStoreModel;
|
||||
|
||||
if (instance != null && !string.IsNullOrEmpty(instance.FileStoreLocation))
|
||||
{
|
||||
var stringValue = value as string;
|
||||
|
||||
DirectoryInfo info = new DirectoryInfo(stringValue);
|
||||
|
||||
if (!info.Exists)
|
||||
{
|
||||
// Try and Create
|
||||
try
|
||||
{
|
||||
info.Create();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return new ValidationResult(string.Format("Unable to Create Directory '{0}'; [{1}] {2}", info.FullName, ex.GetType().Name, ex.Message));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return ValidationResult.Success;
|
||||
}
|
||||
|
||||
|
||||
public class FileStoreDirectoryModel
|
||||
{
|
||||
public string Name { get; set; }
|
||||
public string Path { get; set; }
|
||||
public bool IsNew { get; set; }
|
||||
public bool Selectable { get; set; }
|
||||
public Dictionary<string, FileStoreDirectoryModel> SubDirectories { get; set; }
|
||||
|
||||
internal static FileStoreDirectoryModel FromInfo(DirectoryInfo info)
|
||||
{
|
||||
return new FileStoreDirectoryModel()
|
||||
{
|
||||
Name = info.Name,
|
||||
Path = info.FullName,
|
||||
IsNew = false,
|
||||
Selectable = (info.Root.Name != info.Name)
|
||||
};
|
||||
}
|
||||
internal static FileStoreDirectoryModel FromNew(string Name, string FullPath)
|
||||
{
|
||||
return new FileStoreDirectoryModel()
|
||||
{
|
||||
Name = Name,
|
||||
Path = FullPath,
|
||||
IsNew = true,
|
||||
Selectable = true,
|
||||
SubDirectories = new Dictionary<string, FileStoreDirectoryModel>()
|
||||
};
|
||||
}
|
||||
internal static FileStoreDirectoryModel FromInfo(DriveInfo info)
|
||||
{
|
||||
return new FileStoreDirectoryModel()
|
||||
{
|
||||
Name = info.Name.Substring(0, 2),
|
||||
Path = info.RootDirectory.Name,
|
||||
IsNew = false,
|
||||
Selectable = false
|
||||
};
|
||||
}
|
||||
internal static FileStoreDirectoryModel FromPath(string DirectoryPath, bool ExpandSubDirectories)
|
||||
{
|
||||
DirectoryInfo info = new DirectoryInfo(DirectoryPath);
|
||||
|
||||
if (info.Exists)
|
||||
{
|
||||
var fsd = FromInfo(info);
|
||||
|
||||
if (ExpandSubDirectories)
|
||||
fsd.ExpandSubDirectories();
|
||||
|
||||
return fsd;
|
||||
}
|
||||
else
|
||||
return null;
|
||||
}
|
||||
|
||||
internal static FileStoreDirectoryModel DirectoryRoots()
|
||||
{
|
||||
var root = new FileStoreDirectoryModel()
|
||||
{
|
||||
Name = "ROOT",
|
||||
Path = null,
|
||||
IsNew = false,
|
||||
Selectable = false,
|
||||
SubDirectories = new Dictionary<string, FileStoreDirectoryModel>()
|
||||
};
|
||||
|
||||
foreach (var driveInfo in DriveInfo.GetDrives())
|
||||
{
|
||||
if (driveInfo.DriveType == DriveType.Fixed)
|
||||
root.SubDirectories.Add(driveInfo.Name.Substring(0, 2).ToUpper(), FileStoreDirectoryModel.FromInfo(driveInfo));
|
||||
}
|
||||
|
||||
return root;
|
||||
}
|
||||
|
||||
internal void ExpandSubDirectories()
|
||||
{
|
||||
if (this.SubDirectories == null)
|
||||
{
|
||||
this.SubDirectories = new Dictionary<string, FileStoreDirectoryModel>();
|
||||
if (!this.IsNew)
|
||||
{
|
||||
var dirInfo = new DirectoryInfo(Path);
|
||||
if (dirInfo.Exists)
|
||||
{
|
||||
foreach (var subDir in dirInfo.EnumerateDirectories())
|
||||
{
|
||||
this.SubDirectories.Add(subDir.Name.ToUpper(), FileStoreDirectoryModel.FromInfo(subDir));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.IsNew = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Security;
|
||||
using System.Security.Permissions;
|
||||
using System.Security.Principal;
|
||||
using System.Web;
|
||||
|
||||
namespace Disco.Web.Models.InitialConfig
|
||||
{
|
||||
public class FileStoreModel
|
||||
{
|
||||
public FileStoreModel()
|
||||
{
|
||||
DirectoryModel = FileStoreModel.FileStoreDirectoryModel.DirectoryRoots();
|
||||
}
|
||||
|
||||
[Required(), CustomValidation(typeof(FileStoreModel), "DirectoryPermissionRequired")]
|
||||
public string FileStoreLocation { get; set; }
|
||||
|
||||
public FileStoreDirectoryModel DirectoryModel { get; set; }
|
||||
|
||||
public void ExpandDirectoryModel()
|
||||
{
|
||||
if (!string.IsNullOrWhiteSpace(FileStoreLocation))
|
||||
{
|
||||
var branches = this.FileStoreLocation.ToUpper().Split(Path.DirectorySeparatorChar);
|
||||
var branchesCase = this.FileStoreLocation.Split(Path.DirectorySeparatorChar);
|
||||
FileStoreDirectoryModel branchModel;
|
||||
FileStoreDirectoryModel branchParent = this.DirectoryModel;
|
||||
for (int i = 0; i < branches.Length; i++)
|
||||
{
|
||||
var branch = branches[i];
|
||||
if (branchParent.SubDirectories.TryGetValue(branch, out branchModel))
|
||||
{
|
||||
branchModel.ExpandSubDirectories();
|
||||
}
|
||||
else
|
||||
{
|
||||
// New
|
||||
branchModel = FileStoreDirectoryModel.FromNew(branchesCase[i], Path.Combine(branchParent.Path, branchesCase[i]));
|
||||
branchParent.SubDirectories.Add(branchModel.Name.ToUpper(), branchModel);
|
||||
}
|
||||
|
||||
branchParent = branchModel;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static ValidationResult DirectoryPermissionRequired(object value, ValidationContext validationContext)
|
||||
{
|
||||
var instance = validationContext.ObjectInstance as FileStoreModel;
|
||||
|
||||
if (instance != null && !string.IsNullOrEmpty(instance.FileStoreLocation))
|
||||
{
|
||||
var stringValue = value as string;
|
||||
|
||||
DirectoryInfo info = new DirectoryInfo(stringValue);
|
||||
|
||||
if (!info.Exists)
|
||||
{
|
||||
// Try and Create
|
||||
try
|
||||
{
|
||||
info.Create();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return new ValidationResult(string.Format("Unable to Create Directory '{0}'; [{1}] {2}", info.FullName, ex.GetType().Name, ex.Message));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return ValidationResult.Success;
|
||||
}
|
||||
|
||||
|
||||
public class FileStoreDirectoryModel
|
||||
{
|
||||
public string Name { get; set; }
|
||||
public string Path { get; set; }
|
||||
public bool IsNew { get; set; }
|
||||
public bool Selectable { get; set; }
|
||||
public Dictionary<string, FileStoreDirectoryModel> SubDirectories { get; set; }
|
||||
|
||||
internal static FileStoreDirectoryModel FromInfo(DirectoryInfo info)
|
||||
{
|
||||
return new FileStoreDirectoryModel()
|
||||
{
|
||||
Name = info.Name,
|
||||
Path = info.FullName,
|
||||
IsNew = false,
|
||||
Selectable = (info.Root.Name != info.Name)
|
||||
};
|
||||
}
|
||||
internal static FileStoreDirectoryModel FromNew(string Name, string FullPath)
|
||||
{
|
||||
return new FileStoreDirectoryModel()
|
||||
{
|
||||
Name = Name,
|
||||
Path = FullPath,
|
||||
IsNew = true,
|
||||
Selectable = true,
|
||||
SubDirectories = new Dictionary<string, FileStoreDirectoryModel>()
|
||||
};
|
||||
}
|
||||
internal static FileStoreDirectoryModel FromInfo(DriveInfo info)
|
||||
{
|
||||
return new FileStoreDirectoryModel()
|
||||
{
|
||||
Name = info.Name.Substring(0, 2),
|
||||
Path = info.RootDirectory.Name,
|
||||
IsNew = false,
|
||||
Selectable = false
|
||||
};
|
||||
}
|
||||
internal static FileStoreDirectoryModel FromPath(string DirectoryPath, bool ExpandSubDirectories)
|
||||
{
|
||||
DirectoryInfo info = new DirectoryInfo(DirectoryPath);
|
||||
|
||||
if (info.Exists)
|
||||
{
|
||||
var fsd = FromInfo(info);
|
||||
|
||||
if (ExpandSubDirectories)
|
||||
fsd.ExpandSubDirectories();
|
||||
|
||||
return fsd;
|
||||
}
|
||||
else
|
||||
return null;
|
||||
}
|
||||
|
||||
internal static FileStoreDirectoryModel DirectoryRoots()
|
||||
{
|
||||
var root = new FileStoreDirectoryModel()
|
||||
{
|
||||
Name = "ROOT",
|
||||
Path = null,
|
||||
IsNew = false,
|
||||
Selectable = false,
|
||||
SubDirectories = new Dictionary<string, FileStoreDirectoryModel>()
|
||||
};
|
||||
|
||||
foreach (var driveInfo in DriveInfo.GetDrives())
|
||||
{
|
||||
if (driveInfo.DriveType == DriveType.Fixed)
|
||||
root.SubDirectories.Add(driveInfo.Name.Substring(0, 2).ToUpper(), FileStoreDirectoryModel.FromInfo(driveInfo));
|
||||
}
|
||||
|
||||
return root;
|
||||
}
|
||||
|
||||
internal void ExpandSubDirectories()
|
||||
{
|
||||
if (this.SubDirectories == null)
|
||||
{
|
||||
this.SubDirectories = new Dictionary<string, FileStoreDirectoryModel>();
|
||||
if (!this.IsNew)
|
||||
{
|
||||
var dirInfo = new DirectoryInfo(Path);
|
||||
if (dirInfo.Exists)
|
||||
{
|
||||
foreach (var subDir in dirInfo.EnumerateDirectories())
|
||||
{
|
||||
this.SubDirectories.Add(subDir.Name.ToUpper(), FileStoreDirectoryModel.FromInfo(subDir));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.IsNew = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user