Logging improvement

This commit is contained in:
Tal Aloni 2017-09-03 18:06:28 +03:00
parent a390bb1a0c
commit 73b27366c5
17 changed files with 32 additions and 29 deletions

View file

@ -19,7 +19,7 @@ namespace SMBLibrary.Server.SMB1
OpenFileObject openFile = session.GetOpenFileObject(request.FID); OpenFileObject openFile = session.GetOpenFileObject(request.FID);
if (openFile == null) if (openFile == null)
{ {
state.LogToServer(Severity.Verbose, "Close failed. Invalid FID."); state.LogToServer(Severity.Verbose, "Close failed. Invalid FID. (UID: {0}, TID: {1}, FID: {2})", header.UID, header.TID, request.FID);
header.Status = NTStatus.STATUS_SMB_BAD_FID; header.Status = NTStatus.STATUS_SMB_BAD_FID;
return new ErrorResponse(request.CommandName); return new ErrorResponse(request.CommandName);
} }
@ -27,11 +27,11 @@ namespace SMBLibrary.Server.SMB1
header.Status = share.FileStore.CloseFile(openFile.Handle); header.Status = share.FileStore.CloseFile(openFile.Handle);
if (header.Status != NTStatus.STATUS_SUCCESS) if (header.Status != NTStatus.STATUS_SUCCESS)
{ {
state.LogToServer(Severity.Information, "Close: Closing '{0}{1}' failed. NTStatus: {2}.", share.Name, openFile.Path, header.Status); state.LogToServer(Severity.Information, "Close: Closing '{0}{1}' failed. NTStatus: {2}. (UID: {3}, TID: {4}, FID: {5})", share.Name, openFile.Path, header.Status, header.UID, header.TID, request.FID);
return new ErrorResponse(request.CommandName); return new ErrorResponse(request.CommandName);
} }
state.LogToServer(Severity.Information, "Close: Closed '{0}{1}'.", share.Name, openFile.Path); state.LogToServer(Severity.Information, "Close: Closed '{0}{1}'. (UID: {2}, TID: {3}, FID: {4})", share.Name, openFile.Path, header.UID, header.TID, request.FID);
session.RemoveOpenFile(request.FID); session.RemoveOpenFile(request.FID);
return new CloseResponse(); return new CloseResponse();
} }

View file

@ -206,7 +206,7 @@ namespace SMBLibrary.Server.SMB1
OpenFileObject openFile = session.GetOpenFileObject(request.FID); OpenFileObject openFile = session.GetOpenFileObject(request.FID);
if (openFile == null) if (openFile == null)
{ {
state.LogToServer(Severity.Verbose, "Set Information 2 failed. Invalid FID."); state.LogToServer(Severity.Verbose, "Set Information 2 failed. Invalid FID. (UID: {0}, TID: {1}, FID: {2})", header.UID, header.TID, request.FID);
header.Status = NTStatus.STATUS_SMB_BAD_FID; header.Status = NTStatus.STATUS_SMB_BAD_FID;
return new ErrorResponse(request.CommandName); return new ErrorResponse(request.CommandName);
} }

View file

@ -19,7 +19,7 @@ namespace SMBLibrary.Server.SMB1
OpenFileObject openFile = session.GetOpenFileObject(request.FID); OpenFileObject openFile = session.GetOpenFileObject(request.FID);
if (openFile == null) if (openFile == null)
{ {
state.LogToServer(Severity.Verbose, "Locking failed. Invalid FID."); state.LogToServer(Severity.Verbose, "Locking failed. Invalid FID. (UID: {0}, TID: {1}, FID: {2})", header.UID, header.TID, request.FID);
header.Status = NTStatus.STATUS_INVALID_HANDLE; header.Status = NTStatus.STATUS_INVALID_HANDLE;
return new ErrorResponse(request.CommandName); return new ErrorResponse(request.CommandName);
} }

View file

@ -50,15 +50,16 @@ namespace SMBLibrary.Server.SMB1
return new ErrorResponse(request.CommandName); return new ErrorResponse(request.CommandName);
} }
state.LogToServer(Severity.Verbose, "Create: Opened '{0}{1}'.", share.Name, path);
ushort? fileID = session.AddOpenFile(header.TID, share.Name, path, handle); ushort? fileID = session.AddOpenFile(header.TID, share.Name, path, handle);
if (!fileID.HasValue) if (!fileID.HasValue)
{ {
share.FileStore.CloseFile(handle); share.FileStore.CloseFile(handle);
state.LogToServer(Severity.Verbose, "Create: Opening '{0}{1}' failed. Too many open files.", share.Name, path);
header.Status = NTStatus.STATUS_TOO_MANY_OPENED_FILES; header.Status = NTStatus.STATUS_TOO_MANY_OPENED_FILES;
return new ErrorResponse(request.CommandName); return new ErrorResponse(request.CommandName);
} }
state.LogToServer(Severity.Verbose, "Create: Opened '{0}{1}'. (UID: {2}, TID: {3}, FID: {4})", share.Name, path, header.UID, header.TID, fileID.Value);
if (share is NamedPipeShare) if (share is NamedPipeShare)
{ {
if (isExtended) if (isExtended)

View file

@ -144,7 +144,7 @@ namespace SMBLibrary.Server.SMB1
OpenFileObject openFile = session.GetOpenFileObject(subcommand.FID); OpenFileObject openFile = session.GetOpenFileObject(subcommand.FID);
if (openFile == null) if (openFile == null)
{ {
state.LogToServer(Severity.Verbose, "IOCTL failed. CTL Code: {0}. Invalid FID.", ctlCode); state.LogToServer(Severity.Verbose, "IOCTL failed. CTL Code: {0}. Invalid FID. (UID: {1}, TID: {2}, FID: {3})", ctlCode, header.UID, header.TID, subcommand.FID);
header.Status = NTStatus.STATUS_INVALID_HANDLE; header.Status = NTStatus.STATUS_INVALID_HANDLE;
return null; return null;
} }

View file

@ -63,15 +63,16 @@ namespace SMBLibrary.Server.SMB1
return new ErrorResponse(request.CommandName); return new ErrorResponse(request.CommandName);
} }
state.LogToServer(Severity.Verbose, "OpenAndX: Opened '{0}{1}'.", share.Name, path);
ushort? fileID = session.AddOpenFile(header.TID, share.Name, path, handle); ushort? fileID = session.AddOpenFile(header.TID, share.Name, path, handle);
if (!fileID.HasValue) if (!fileID.HasValue)
{ {
share.FileStore.CloseFile(handle); share.FileStore.CloseFile(handle);
state.LogToServer(Severity.Verbose, "Create: Opening '{0}{1}' failed. Too many open files.", share.Name, path);
header.Status = NTStatus.STATUS_TOO_MANY_OPENED_FILES; header.Status = NTStatus.STATUS_TOO_MANY_OPENED_FILES;
return new ErrorResponse(request.CommandName); return new ErrorResponse(request.CommandName);
} }
state.LogToServer(Severity.Verbose, "OpenAndX: Opened '{0}{1}'. (UID: {2}, TID: {3}, FID: {4})", share.Name, path, header.UID, header.TID, fileID.Value);
OpenResult openResult = ToOpenResult(fileStatus); OpenResult openResult = ToOpenResult(fileStatus);
if (share is NamedPipeShare) if (share is NamedPipeShare)
{ {

View file

@ -23,7 +23,7 @@ namespace SMBLibrary.Server.SMB1
OpenFileObject openFile = session.GetOpenFileObject(request.FID); OpenFileObject openFile = session.GetOpenFileObject(request.FID);
if (openFile == null) if (openFile == null)
{ {
state.LogToServer(Severity.Verbose, "Read failed. Invalid FID."); state.LogToServer(Severity.Verbose, "Read failed. Invalid FID. (UID: {0}, TID: {1}, FID: {2})", header.UID, header.TID, request.FID);
header.Status = NTStatus.STATUS_INVALID_HANDLE; header.Status = NTStatus.STATUS_INVALID_HANDLE;
return new ErrorResponse(request.CommandName); return new ErrorResponse(request.CommandName);
} }
@ -58,7 +58,7 @@ namespace SMBLibrary.Server.SMB1
OpenFileObject openFile = session.GetOpenFileObject(request.FID); OpenFileObject openFile = session.GetOpenFileObject(request.FID);
if (openFile == null) if (openFile == null)
{ {
state.LogToServer(Severity.Verbose, "Read failed. Invalid FID."); state.LogToServer(Severity.Verbose, "Read failed. Invalid FID. (UID: {0}, TID: {1}, FID: {2})", header.UID, header.TID, request.FID);
header.Status = NTStatus.STATUS_INVALID_HANDLE; header.Status = NTStatus.STATUS_INVALID_HANDLE;
return new ErrorResponse(request.CommandName); return new ErrorResponse(request.CommandName);
} }
@ -109,7 +109,7 @@ namespace SMBLibrary.Server.SMB1
OpenFileObject openFile = session.GetOpenFileObject(request.FID); OpenFileObject openFile = session.GetOpenFileObject(request.FID);
if (openFile == null) if (openFile == null)
{ {
state.LogToServer(Severity.Verbose, "Write failed. Invalid FID."); state.LogToServer(Severity.Verbose, "Write failed. Invalid FID. (UID: {0}, TID: {1}, FID: {2})", header.UID, header.TID, request.FID);
header.Status = NTStatus.STATUS_INVALID_HANDLE; header.Status = NTStatus.STATUS_INVALID_HANDLE;
return new ErrorResponse(request.CommandName); return new ErrorResponse(request.CommandName);
} }
@ -142,7 +142,7 @@ namespace SMBLibrary.Server.SMB1
OpenFileObject openFile = session.GetOpenFileObject(request.FID); OpenFileObject openFile = session.GetOpenFileObject(request.FID);
if (openFile == null) if (openFile == null)
{ {
state.LogToServer(Severity.Verbose, "Write failed. Invalid FID."); state.LogToServer(Severity.Verbose, "Write failed. Invalid FID. (UID: {0}, TID: {1}, FID: {2})", header.UID, header.TID, request.FID);
header.Status = NTStatus.STATUS_INVALID_HANDLE; header.Status = NTStatus.STATUS_INVALID_HANDLE;
return new ErrorResponse(request.CommandName); return new ErrorResponse(request.CommandName);
} }
@ -188,7 +188,7 @@ namespace SMBLibrary.Server.SMB1
OpenFileObject openFile = session.GetOpenFileObject(request.FID); OpenFileObject openFile = session.GetOpenFileObject(request.FID);
if (openFile == null) if (openFile == null)
{ {
state.LogToServer(Severity.Verbose, "Flush failed. Invalid FID."); state.LogToServer(Severity.Verbose, "Flush failed. Invalid FID. (UID: {0}, TID: {1}, FID: {2})", header.UID, header.TID, request.FID);
header.Status = NTStatus.STATUS_INVALID_HANDLE; header.Status = NTStatus.STATUS_INVALID_HANDLE;
return new ErrorResponse(request.CommandName); return new ErrorResponse(request.CommandName);
} }

View file

@ -198,7 +198,7 @@ namespace SMBLibrary.Server.SMB1
OpenFileObject openFile = session.GetOpenFileObject(subcommand.FID); OpenFileObject openFile = session.GetOpenFileObject(subcommand.FID);
if (openFile == null) if (openFile == null)
{ {
state.LogToServer(Severity.Verbose, "QueryFileInformation failed. Invalid FID."); state.LogToServer(Severity.Verbose, "QueryFileInformation failed. Invalid FID. (UID: {0}, TID: {1}, FID: {2})", header.UID, header.TID, subcommand.FID);
header.Status = NTStatus.STATUS_INVALID_HANDLE; header.Status = NTStatus.STATUS_INVALID_HANDLE;
return null; return null;
} }
@ -233,7 +233,7 @@ namespace SMBLibrary.Server.SMB1
OpenFileObject openFile = session.GetOpenFileObject(subcommand.FID); OpenFileObject openFile = session.GetOpenFileObject(subcommand.FID);
if (openFile == null) if (openFile == null)
{ {
state.LogToServer(Severity.Verbose, "SetFileInformation failed. Invalid FID."); state.LogToServer(Severity.Verbose, "SetFileInformation failed. Invalid FID. (UID: {0}, TID: {1}, FID: {2})", header.UID, header.TID, subcommand.FID);
header.Status = NTStatus.STATUS_INVALID_HANDLE; header.Status = NTStatus.STATUS_INVALID_HANDLE;
return null; return null;
} }

View file

@ -22,7 +22,7 @@ namespace SMBLibrary.Server.SMB1
OpenFileObject openFile = session.GetOpenFileObject(subcommand.FID); OpenFileObject openFile = session.GetOpenFileObject(subcommand.FID);
if (openFile == null) if (openFile == null)
{ {
state.LogToServer(Severity.Verbose, "TransactNamedPipe failed. Invalid FID."); state.LogToServer(Severity.Verbose, "TransactNamedPipe failed. Invalid FID. (UID: {0}, TID: {1}, FID: {2})", header.UID, header.TID, subcommand.FID);
header.Status = NTStatus.STATUS_INVALID_HANDLE; header.Status = NTStatus.STATUS_INVALID_HANDLE;
return null; return null;
} }

View file

@ -20,18 +20,18 @@ namespace SMBLibrary.Server.SMB2
OpenFileObject openFile = session.GetOpenFileObject(request.FileId); OpenFileObject openFile = session.GetOpenFileObject(request.FileId);
if (openFile == null) if (openFile == null)
{ {
state.LogToServer(Severity.Verbose, "Close failed. Invalid FileId."); state.LogToServer(Severity.Verbose, "Close failed. Invalid FileId. (SessionID: {0}, TreeID: {1}, FileId: {2})", request.Header.SessionID, request.Header.TreeID, request.FileId.Volatile);
return new ErrorResponse(request.CommandName, NTStatus.STATUS_FILE_CLOSED); return new ErrorResponse(request.CommandName, NTStatus.STATUS_FILE_CLOSED);
} }
NTStatus closeStatus = share.FileStore.CloseFile(openFile.Handle); NTStatus closeStatus = share.FileStore.CloseFile(openFile.Handle);
if (closeStatus != NTStatus.STATUS_SUCCESS) if (closeStatus != NTStatus.STATUS_SUCCESS)
{ {
state.LogToServer(Severity.Information, "Close: Closing '{0}{1}' failed. NTStatus: {2}.", share.Name, openFile.Path, closeStatus); state.LogToServer(Severity.Information, "Close: Closing '{0}{1}' failed. NTStatus: {2}. (SessionID: {3}, TreeID: {4}, FileId: {5})", share.Name, openFile.Path, closeStatus, request.Header.SessionID, request.Header.TreeID, request.FileId.Volatile);
return new ErrorResponse(request.CommandName, closeStatus); return new ErrorResponse(request.CommandName, closeStatus);
} }
state.LogToServer(Severity.Information, "Close: Closed '{0}{1}'.", share.Name, openFile.Path); state.LogToServer(Severity.Information, "Close: Closed '{0}{1}'. (SessionID: {2}, TreeID: {3}, FileId: {4})", share.Name, openFile.Path, request.Header.SessionID, request.Header.TreeID, request.FileId.Volatile);
session.RemoveOpenFile(request.FileId); session.RemoveOpenFile(request.FileId);
CloseResponse response = new CloseResponse(); CloseResponse response = new CloseResponse();
if (request.PostQueryAttributes) if (request.PostQueryAttributes)

View file

@ -44,14 +44,15 @@ namespace SMBLibrary.Server.SMB2
return new ErrorResponse(request.CommandName, createStatus); return new ErrorResponse(request.CommandName, createStatus);
} }
state.LogToServer(Severity.Verbose, "Create: Opened '{0}{1}'.", share.Name, path);
FileID? fileID = session.AddOpenFile(request.Header.TreeID, share.Name, path, handle); FileID? fileID = session.AddOpenFile(request.Header.TreeID, share.Name, path, handle);
if (fileID == null) if (fileID == null)
{ {
share.FileStore.CloseFile(handle); share.FileStore.CloseFile(handle);
state.LogToServer(Severity.Verbose, "Create: Opening '{0}{1}' failed. Too many open files.", share.Name, path);
return new ErrorResponse(request.CommandName, NTStatus.STATUS_TOO_MANY_OPENED_FILES); return new ErrorResponse(request.CommandName, NTStatus.STATUS_TOO_MANY_OPENED_FILES);
} }
state.LogToServer(Severity.Verbose, "Create: Opened '{0}{1}'. (SessionID: {2}, TreeID: {3}, FileId: {4})", share.Name, path, request.Header.SessionID, request.Header.TreeID, fileID.Value.Volatile);
if (share is NamedPipeShare) if (share is NamedPipeShare)
{ {
return CreateResponseForNamedPipe(fileID.Value, FileStatus.FILE_OPENED); return CreateResponseForNamedPipe(fileID.Value, FileStatus.FILE_OPENED);

View file

@ -42,7 +42,7 @@ namespace SMBLibrary.Server.SMB2
// FSCTL_VALIDATE_NEGOTIATE_INFO requests MUST have FileId set to 0xFFFFFFFFFFFFFFFF. // FSCTL_VALIDATE_NEGOTIATE_INFO requests MUST have FileId set to 0xFFFFFFFFFFFFFFFF.
if (request.FileId.Persistent != 0xFFFFFFFFFFFFFFFF || request.FileId.Volatile != 0xFFFFFFFFFFFFFFFF) if (request.FileId.Persistent != 0xFFFFFFFFFFFFFFFF || request.FileId.Volatile != 0xFFFFFFFFFFFFFFFF)
{ {
state.LogToServer(Severity.Verbose, "IOCTL failed. CTL Code: {0}. Invalid FileId.", ctlCode); state.LogToServer(Severity.Verbose, "IOCTL failed. CTL Code: {0}. FileId MUST be 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", ctlCode);
return new ErrorResponse(request.CommandName, NTStatus.STATUS_INVALID_PARAMETER); return new ErrorResponse(request.CommandName, NTStatus.STATUS_INVALID_PARAMETER);
} }
handle = null; handle = null;
@ -52,7 +52,7 @@ namespace SMBLibrary.Server.SMB2
OpenFileObject openFile = session.GetOpenFileObject(request.FileId); OpenFileObject openFile = session.GetOpenFileObject(request.FileId);
if (openFile == null) if (openFile == null)
{ {
state.LogToServer(Severity.Verbose, "IOCTL failed. CTL Code: {0}. Invalid FileId.", ctlCode); state.LogToServer(Severity.Verbose, "IOCTL failed. CTL Code: {0}. Invalid FileId. (SessionID: {1}, TreeID: {2}, FileId: {3})", ctlCode, request.Header.SessionID, request.Header.TreeID, request.FileId.Volatile);
return new ErrorResponse(request.CommandName, NTStatus.STATUS_FILE_CLOSED); return new ErrorResponse(request.CommandName, NTStatus.STATUS_FILE_CLOSED);
} }
handle = openFile.Handle; handle = openFile.Handle;

View file

@ -20,7 +20,7 @@ namespace SMBLibrary.Server.SMB2
OpenFileObject openFile = session.GetOpenFileObject(request.FileId); OpenFileObject openFile = session.GetOpenFileObject(request.FileId);
if (openFile == null) if (openFile == null)
{ {
state.LogToServer(Severity.Verbose, "Lock failed. Invalid FileId."); state.LogToServer(Severity.Verbose, "Lock failed. Invalid FileId. (SessionID: {0}, TreeID: {1}, FileId: {2})", request.Header.SessionID, request.Header.TreeID, request.FileId.Volatile);
return new ErrorResponse(request.CommandName, NTStatus.STATUS_FILE_CLOSED); return new ErrorResponse(request.CommandName, NTStatus.STATUS_FILE_CLOSED);
} }

View file

@ -20,7 +20,7 @@ namespace SMBLibrary.Server.SMB2
OpenFileObject openFile = session.GetOpenFileObject(request.FileId); OpenFileObject openFile = session.GetOpenFileObject(request.FileId);
if (openFile == null) if (openFile == null)
{ {
state.LogToServer(Severity.Verbose, "Query Directory failed. Invalid FileId."); state.LogToServer(Severity.Verbose, "Query Directory failed. Invalid FileId. (SessionID: {0}, TreeID: {1}, FileId: {2})", request.Header.SessionID, request.Header.TreeID, request.FileId.Volatile);
return new ErrorResponse(request.CommandName, NTStatus.STATUS_FILE_CLOSED); return new ErrorResponse(request.CommandName, NTStatus.STATUS_FILE_CLOSED);
} }

View file

@ -22,7 +22,7 @@ namespace SMBLibrary.Server.SMB2
OpenFileObject openFile = session.GetOpenFileObject(request.FileId); OpenFileObject openFile = session.GetOpenFileObject(request.FileId);
if (openFile == null) if (openFile == null)
{ {
state.LogToServer(Severity.Verbose, "GetFileInformation failed. Invalid FileId."); state.LogToServer(Severity.Verbose, "GetFileInformation failed. Invalid FileId. (SessionID: {0}, TreeID: {1}, FileId: {2})", request.Header.SessionID, request.Header.TreeID, request.FileId.Volatile);
return new ErrorResponse(request.CommandName, NTStatus.STATUS_FILE_CLOSED); return new ErrorResponse(request.CommandName, NTStatus.STATUS_FILE_CLOSED);
} }

View file

@ -20,7 +20,7 @@ namespace SMBLibrary.Server.SMB2
OpenFileObject openFile = session.GetOpenFileObject(request.FileId); OpenFileObject openFile = session.GetOpenFileObject(request.FileId);
if (openFile == null) if (openFile == null)
{ {
state.LogToServer(Severity.Verbose, "Read failed. Invalid FileId."); state.LogToServer(Severity.Verbose, "Read failed. Invalid FileId. (SessionID: {0}, TreeID: {1}, FileId: {2})", request.Header.SessionID, request.Header.TreeID, request.FileId.Volatile);
return new ErrorResponse(request.CommandName, NTStatus.STATUS_FILE_CLOSED); return new ErrorResponse(request.CommandName, NTStatus.STATUS_FILE_CLOSED);
} }
@ -51,7 +51,7 @@ namespace SMBLibrary.Server.SMB2
OpenFileObject openFile = session.GetOpenFileObject(request.FileId); OpenFileObject openFile = session.GetOpenFileObject(request.FileId);
if (openFile == null) if (openFile == null)
{ {
state.LogToServer(Severity.Verbose, "Write failed. Invalid FileId."); state.LogToServer(Severity.Verbose, "Write failed. Invalid FileId. (SessionID: {0}, TreeID: {1}, FileId: {2})", request.Header.SessionID, request.Header.TreeID, request.FileId.Volatile);
return new ErrorResponse(request.CommandName, NTStatus.STATUS_FILE_CLOSED); return new ErrorResponse(request.CommandName, NTStatus.STATUS_FILE_CLOSED);
} }
@ -82,7 +82,7 @@ namespace SMBLibrary.Server.SMB2
OpenFileObject openFile = session.GetOpenFileObject(request.FileId); OpenFileObject openFile = session.GetOpenFileObject(request.FileId);
if (openFile == null) if (openFile == null)
{ {
state.LogToServer(Severity.Verbose, "Flush failed. Invalid FileId."); state.LogToServer(Severity.Verbose, "Flush failed. Invalid FileId. (SessionID: {0}, TreeID: {1}, FileId: {2})", request.Header.SessionID, request.Header.TreeID, request.FileId.Volatile);
return new ErrorResponse(request.CommandName, NTStatus.STATUS_FILE_CLOSED); return new ErrorResponse(request.CommandName, NTStatus.STATUS_FILE_CLOSED);
} }
NTStatus status = share.FileStore.FlushFileBuffers(openFile.Handle); NTStatus status = share.FileStore.FlushFileBuffers(openFile.Handle);

View file

@ -22,7 +22,7 @@ namespace SMBLibrary.Server.SMB2
OpenFileObject openFile = session.GetOpenFileObject(request.FileId); OpenFileObject openFile = session.GetOpenFileObject(request.FileId);
if (openFile == null) if (openFile == null)
{ {
state.LogToServer(Severity.Verbose, "SetFileInformation failed. Invalid FileId."); state.LogToServer(Severity.Verbose, "SetFileInformation failed. Invalid FileId. (SessionID: {0}, TreeID: {1}, FileId: {2})", request.Header.SessionID, request.Header.TreeID, request.FileId.Volatile);
return new ErrorResponse(request.CommandName, NTStatus.STATUS_FILE_CLOSED); return new ErrorResponse(request.CommandName, NTStatus.STATUS_FILE_CLOSED);
} }