public StringBuilder Execute(Dictionary<string, StringBuilder> values, IWorkspace theWorkspace)
{
Dev2Logger.Log.Debug("Start Security Read");
if(File.Exists(ServerSecurityService.FileName))
{
string encryptedData;
using(var inStream = new FileStream(ServerSecurityService.FileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
using(var reader = new StreamReader(inStream))
{
encryptedData = reader.ReadToEnd();
}
}
Dev2Logger.Log.Debug("Security Data Read");
try
{
var decryptData = SecurityEncryption.Decrypt(encryptedData);
Dev2Logger.Log.Debug(decryptData);
var currentSecuritySettingsTo = JsonConvert.DeserializeObject<SecuritySettingsTO>(decryptData);
var permissionGroup = currentSecuritySettingsTo.WindowsGroupPermissions;
// We need to change BuiltIn\Administrators to -> Warewolf Administrators ;)
if(permissionGroup.Count > 0)
{
var adminGrp = permissionGroup[0].WindowsGroup;
if(adminGrp == "BuiltIn\\Administrators")
{
permissionGroup[0].WindowsGroup = WindowsGroupPermission.BuiltInAdministratorsText;
decryptData = JsonConvert.SerializeObject(currentSecuritySettingsTo);
}
}
var hasGuestPermission = permissionGroup.Any(permission => permission.IsBuiltInGuests);
var hasAdminPermission = permissionGroup.Any(permission => permission.IsBuiltInAdministrators);
if(!hasAdminPermission)
{
permissionGroup.Add(WindowsGroupPermission.CreateAdministrators());
permissionGroup.Sort(QuickSortForPermissions);
decryptData = JsonConvert.SerializeObject(currentSecuritySettingsTo);
}
if(!hasGuestPermission)
{
permissionGroup.Add(WindowsGroupPermission.CreateGuests());
permissionGroup.Sort(QuickSortForPermissions);
decryptData = JsonConvert.SerializeObject(currentSecuritySettingsTo);
}
return new StringBuilder(decryptData);
}
catch(Exception e)
{
Dev2Logger.Log.Error("SecurityRead", e);
}
}
var serializer = new Dev2JsonSerializer();
var securitySettingsTo = new SecuritySettingsTO(DefaultPermissions) { CacheTimeout = _cacheTimeout };
return serializer.SerializeToBuilder(securitySettingsTo);
}