@ -2,6 +2,7 @@
using System.IO ;
using System.Linq ;
using System.Runtime.InteropServices ;
using System.Security.AccessControl ;
using NLog ;
using NzbDrone.Common.EnsureThat ;
using NzbDrone.Common.EnvironmentInfo ;
@ -33,6 +34,7 @@ namespace NzbDrone.Common
void FolderSetLastWriteTimeUtc ( string path , DateTime dateTime ) ;
bool IsFileLocked ( FileInfo file ) ;
string GetPathRoot ( string path ) ;
void SetPermissions ( string filename , string account , FileSystemRights Rights , AccessControlType ControlType ) ;
}
public class DiskProvider : IDiskProvider
@ -83,7 +85,6 @@ namespace NzbDrone.Common
return new FileInfo ( path ) . LastWriteTimeUtc ;
}
public virtual void EnsureFolder ( string path )
{
if ( ! FolderExists ( path ) )
@ -366,5 +367,19 @@ namespace NzbDrone.Common
return Path . GetPathRoot ( path ) ;
}
public void SetPermissions ( string filename , string account , FileSystemRights rights , AccessControlType controlType )
{
var directoryInfo = new DirectoryInfo ( filename ) ;
var directorySecurity = directoryInfo . GetAccessControl ( ) ;
var accessRule = new FileSystemAccessRule ( account , rights ,
InheritanceFlags . ContainerInherit | InheritanceFlags . ObjectInherit ,
PropagationFlags . None , controlType ) ;
directorySecurity . AddAccessRule ( accessRule ) ;
directoryInfo . SetAccessControl ( directorySecurity ) ;
}
}
}