INTLMAuthenticationProvider: Removed ListUsers from the API

This commit is contained in:
Tal Aloni 2017-02-15 13:18:48 +02:00
parent c60ee93dd9
commit 457d978f70
2 changed files with 11 additions and 12 deletions

View file

@ -29,7 +29,5 @@ namespace SMBLibrary.Server
/// The password is correct but 'limitblankpassworduse' is set to 1 (logon over a network is disabled for accounts without a password). /// The password is correct but 'limitblankpassworduse' is set to 1 (logon over a network is disabled for accounts without a password).
/// </remarks> /// </remarks>
bool FallbackToGuest(string userName); bool FallbackToGuest(string userName);
List<string> ListUsers();
} }
} }

View file

@ -84,11 +84,10 @@ namespace SMBServer
} }
List<string> allUsers = provider.ListUsers();
ShareCollection shares; ShareCollection shares;
try try
{ {
shares = ReadShareSettings(allUsers); shares = ReadShareSettings();
} }
catch (Exception) catch (Exception)
{ {
@ -150,7 +149,7 @@ namespace SMBServer
return users; return users;
} }
private ShareCollection ReadShareSettings(List<string> allUsers) private ShareCollection ReadShareSettings()
{ {
ShareCollection shares = new ShareCollection(); ShareCollection shares = new ShareCollection();
XmlDocument document = GetSettingsXML(); XmlDocument document = GetSettingsXML();
@ -162,23 +161,25 @@ namespace SMBServer
string sharePath = shareNode.Attributes["Path"].Value; string sharePath = shareNode.Attributes["Path"].Value;
XmlNode readAccessNode = shareNode.SelectSingleNode("ReadAccess"); XmlNode readAccessNode = shareNode.SelectSingleNode("ReadAccess");
List<string> readAccess = ReadAccessList(readAccessNode, allUsers); List<string> readAccess = ReadAccessList(readAccessNode);
XmlNode writeAccessNode = shareNode.SelectSingleNode("WriteAccess"); XmlNode writeAccessNode = shareNode.SelectSingleNode("WriteAccess");
List<string> writeAccess = ReadAccessList(writeAccessNode, allUsers); List<string> writeAccess = ReadAccessList(writeAccessNode);
FileSystemShare share = new FileSystemShare(shareName, new DirectoryFileSystem(sharePath)); FileSystemShare share = new FileSystemShare(shareName, new DirectoryFileSystem(sharePath));
share.OnAccessRequest += delegate(object sender, AccessRequestArgs args) share.OnAccessRequest += delegate(object sender, AccessRequestArgs args)
{ {
bool hasReadAccess = Contains(readAccess, "Users") || Contains(readAccess, args.UserName);
bool hasWriteAccess = Contains(writeAccess, "Users") || Contains(writeAccess, args.UserName);
if (args.RequestedAccess == FileAccess.Read) if (args.RequestedAccess == FileAccess.Read)
{ {
args.Allow = Contains(readAccess, args.UserName); args.Allow = hasReadAccess;
} }
else if (args.RequestedAccess == FileAccess.Write) else if (args.RequestedAccess == FileAccess.Write)
{ {
args.Allow = Contains(writeAccess, args.UserName); args.Allow = hasWriteAccess;
} }
else // FileAccess.ReadWrite else // FileAccess.ReadWrite
{ {
args.Allow = Contains(readAccess, args.UserName) && Contains(writeAccess, args.UserName); args.Allow = hasReadAccess && hasWriteAccess;
} }
}; };
shares.Add(share); shares.Add(share);
@ -186,7 +187,7 @@ namespace SMBServer
return shares; return shares;
} }
private List<string> ReadAccessList(XmlNode node, List<string> allUsers) private List<string> ReadAccessList(XmlNode node)
{ {
List<string> result = new List<string>(); List<string> result = new List<string>();
if (node != null) if (node != null)
@ -194,7 +195,7 @@ namespace SMBServer
string accounts = node.Attributes["Accounts"].Value; string accounts = node.Attributes["Accounts"].Value;
if (accounts == "*") if (accounts == "*")
{ {
result.AddRange(allUsers); result.Add("Users");
} }
else else
{ {