UNPKG

@vinothnb/smb2

Version:
57 lines (51 loc) 1.78 kB
var SMB2Message = require('../tools/smb2-message'); var message = require('../tools/message'); var constants = require('../structures/constants'); var desiredAccess = constants.DELETE | constants.FILE_APPEND_DATA | constants.FILE_DELETE_CHILD | constants.FILE_READ_ATTRIBUTES | constants.FILE_READ_DATA | constants.FILE_READ_EA | constants.FILE_WRITE_ATTRIBUTES | constants.FILE_WRITE_DATA | constants.FILE_WRITE_EA | constants.READ_CONTROL | constants.SYNCHRONIZE | constants.WRITE_DAC; module.exports = message({ generate: function(connection, params) { var buffer = Buffer.from(params.path, 'ucs2'); var createDisposition = params.createDisposition; var shareAccess = params.shareAccess; /* See: https://msdn.microsoft.com/en-us/library/cc246502.aspx 6 values for CreateDisposition. */ if (!(createDisposition >= 0 && createDisposition <= 5)) { createDisposition = constants.FILE_OVERWRITE_IF; } /* See: https://msdn.microsoft.com/en-us/library/cc246502.aspx 7 possible values for ShareAccess. */ if (!(shareAccess >= 0 && shareAccess <= 7)) { shareAccess = constants.FILE_SHARE_NONE; } return new SMB2Message({ headers: { Command: 'CREATE', SessionId: connection.SessionId, TreeId: connection.TreeId, ProcessId: connection.ProcessId, }, request: { Buffer: buffer, DesiredAccess: desiredAccess, FileAttributes: 0x00000080, ShareAccess: shareAccess, CreateDisposition: createDisposition, CreateOptions: 0x00000044, NameOffset: 0x0078, CreateContextsOffset: 0x007a + buffer.length, }, }); }, });