mirror of
https://github.com/TalAloni/SMBLibrary.git
synced 2025-07-22 17:25:54 +02:00
INTLMAuthenticationProvider: Removed ListUsers from the API
This commit is contained in:
parent
c60ee93dd9
commit
457d978f70
2 changed files with 11 additions and 12 deletions
|
@ -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();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue