mirror of
https://github.com/TalAloni/SMBLibrary.git
synced 2025-07-20 16:15:53 +02:00
OpenFileObject: Added FileAccess property
This commit is contained in:
parent
118ed760c0
commit
b978e0b8cc
6 changed files with 22 additions and 14 deletions
|
@ -16,14 +16,16 @@ namespace SMBLibrary.Server
|
||||||
private string m_shareName;
|
private string m_shareName;
|
||||||
private string m_path;
|
private string m_path;
|
||||||
private object m_handle;
|
private object m_handle;
|
||||||
|
private FileAccess m_fileAccess;
|
||||||
private DateTime m_openedDT;
|
private DateTime m_openedDT;
|
||||||
|
|
||||||
public OpenFileObject(uint treeID, string shareName, string path, object handle)
|
public OpenFileObject(uint treeID, string shareName, string path, object handle, FileAccess fileAccess)
|
||||||
{
|
{
|
||||||
m_treeID = treeID;
|
m_treeID = treeID;
|
||||||
m_shareName = shareName;
|
m_shareName = shareName;
|
||||||
m_path = path;
|
m_path = path;
|
||||||
m_handle = handle;
|
m_handle = handle;
|
||||||
|
m_fileAccess = fileAccess;
|
||||||
m_openedDT = DateTime.Now;
|
m_openedDT = DateTime.Now;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -63,6 +65,14 @@ namespace SMBLibrary.Server
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public FileAccess FileAccess
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return m_fileAccess;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public DateTime OpenedDT
|
public DateTime OpenedDT
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
|
|
@ -88,21 +88,16 @@ namespace SMBLibrary.Server
|
||||||
return m_connectedTrees.ContainsKey(treeID);
|
return m_connectedTrees.ContainsKey(treeID);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <param name="relativePath">Should include the path relative to the share</param>
|
/// <param name="relativePath">The path relative to the share</param>
|
||||||
/// <returns>FileID</returns>
|
/// <returns>FileID</returns>
|
||||||
public ushort? AddOpenFile(ushort treeID, string shareName, string relativePath)
|
public ushort? AddOpenFile(ushort treeID, string shareName, string relativePath, object handle, FileAccess fileAccess)
|
||||||
{
|
|
||||||
return AddOpenFile(treeID, shareName, relativePath, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
public ushort? AddOpenFile(ushort treeID, string shareName, string relativePath, object handle)
|
|
||||||
{
|
{
|
||||||
lock (m_connection)
|
lock (m_connection)
|
||||||
{
|
{
|
||||||
ushort? fileID = m_connection.AllocateFileID();
|
ushort? fileID = m_connection.AllocateFileID();
|
||||||
if (fileID.HasValue)
|
if (fileID.HasValue)
|
||||||
{
|
{
|
||||||
m_openFiles.Add(fileID.Value, new OpenFileObject(treeID, shareName, relativePath, handle));
|
m_openFiles.Add(fileID.Value, new OpenFileObject(treeID, shareName, relativePath, handle, fileAccess));
|
||||||
}
|
}
|
||||||
return fileID;
|
return fileID;
|
||||||
}
|
}
|
||||||
|
|
|
@ -130,7 +130,7 @@ namespace SMBLibrary.Server
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public FileID? AddOpenFile(uint treeID, string shareName, string relativePath, object handle)
|
public FileID? AddOpenFile(uint treeID, string shareName, string relativePath, object handle, FileAccess fileAccess)
|
||||||
{
|
{
|
||||||
lock (m_openFiles)
|
lock (m_openFiles)
|
||||||
{
|
{
|
||||||
|
@ -142,7 +142,7 @@ namespace SMBLibrary.Server
|
||||||
// [MS-SMB2] FileId.Persistent MUST be set to Open.DurableFileId.
|
// [MS-SMB2] FileId.Persistent MUST be set to Open.DurableFileId.
|
||||||
// Note: We don't support durable handles so we use volatileFileID.
|
// Note: We don't support durable handles so we use volatileFileID.
|
||||||
fileID.Persistent = volatileFileID.Value;
|
fileID.Persistent = volatileFileID.Value;
|
||||||
m_openFiles.Add(volatileFileID.Value, new OpenFileObject(treeID, shareName, relativePath, handle));
|
m_openFiles.Add(volatileFileID.Value, new OpenFileObject(treeID, shareName, relativePath, handle, fileAccess));
|
||||||
return fileID;
|
return fileID;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,7 +50,8 @@ namespace SMBLibrary.Server.SMB1
|
||||||
return new ErrorResponse(request.CommandName);
|
return new ErrorResponse(request.CommandName);
|
||||||
}
|
}
|
||||||
|
|
||||||
ushort? fileID = session.AddOpenFile(header.TID, share.Name, path, handle);
|
FileAccess fileAccess = NTFileStoreHelper.ToFileAccess(desiredAccess);
|
||||||
|
ushort? fileID = session.AddOpenFile(header.TID, share.Name, path, handle, fileAccess);
|
||||||
if (!fileID.HasValue)
|
if (!fileID.HasValue)
|
||||||
{
|
{
|
||||||
share.FileStore.CloseFile(handle);
|
share.FileStore.CloseFile(handle);
|
||||||
|
|
|
@ -63,7 +63,8 @@ namespace SMBLibrary.Server.SMB1
|
||||||
return new ErrorResponse(request.CommandName);
|
return new ErrorResponse(request.CommandName);
|
||||||
}
|
}
|
||||||
|
|
||||||
ushort? fileID = session.AddOpenFile(header.TID, share.Name, path, handle);
|
FileAccess fileAccess = ToFileAccess(request.AccessMode.AccessMode);
|
||||||
|
ushort? fileID = session.AddOpenFile(header.TID, share.Name, path, handle, fileAccess);
|
||||||
if (!fileID.HasValue)
|
if (!fileID.HasValue)
|
||||||
{
|
{
|
||||||
share.FileStore.CloseFile(handle);
|
share.FileStore.CloseFile(handle);
|
||||||
|
|
|
@ -44,7 +44,8 @@ namespace SMBLibrary.Server.SMB2
|
||||||
return new ErrorResponse(request.CommandName, createStatus);
|
return new ErrorResponse(request.CommandName, createStatus);
|
||||||
}
|
}
|
||||||
|
|
||||||
FileID? fileID = session.AddOpenFile(request.Header.TreeID, share.Name, path, handle);
|
FileAccess fileAccess = NTFileStoreHelper.ToFileAccess(desiredAccess);
|
||||||
|
FileID? fileID = session.AddOpenFile(request.Header.TreeID, share.Name, path, handle, fileAccess);
|
||||||
if (fileID == null)
|
if (fileID == null)
|
||||||
{
|
{
|
||||||
share.FileStore.CloseFile(handle);
|
share.FileStore.CloseFile(handle);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue