MCPcopy Create free account
hub / github.com/PierreGode/Ragnar / _deleteFiles_SMB2__del

Method _deleteFiles_SMB2__del

pager_lib/smb/base.py:1256–1326  ·  view source on GitHub ↗
(self, service_name, tid, path, callback, errback, timeout = 30)

Source from the content-addressed store, hash-verified

1254 self._listPath_SMB2(service_name, path, listCB, errback, search = search, pattern = pattern, timeout = timeout)
1255
1256 def _deleteFiles_SMB2__del(self, service_name, tid, path, callback, errback, timeout = 30):
1257 messages_history = [ ]
1258
1259 def sendCreate(tid):
1260 create_context_data = binascii.unhexlify(b"""
1261 28 00 00 00 10 00 04 00 00 00 18 00 10 00 00 00
1262 44 48 6e 51 00 00 00 00 00 00 00 00 00 00 00 00
1263 00 00 00 00 00 00 00 00 18 00 00 00 10 00 04 00
1264 00 00 18 00 00 00 00 00 4d 78 41 63 00 00 00 00
1265 00 00 00 00 10 00 04 00 00 00 18 00 00 00 00 00
1266 51 46 69 64 00 00 00 00
1267 """.replace(b' ', b'').replace(b'\n', b''))
1268 m = SMB2Message(SMB2CreateRequest(path,
1269 file_attributes = 0,
1270 access_mask = DELETE | FILE_READ_ATTRIBUTES,
1271 share_access = FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
1272 oplock = SMB2_OPLOCK_LEVEL_NONE,
1273 impersonation = SEC_IMPERSONATE,
1274 create_options = FILE_NON_DIRECTORY_FILE,
1275 create_disp = FILE_OPEN,
1276 create_context_data = create_context_data))
1277 m.tid = tid
1278 self._sendSMBMessage(m)
1279 self.pending_requests[m.mid] = _PendingRequest(m.mid, int(time.time()) + timeout, createCB, errback, tid = tid)
1280 self._pushToArray(messages_history, m)
1281
1282 def createCB(open_message, **kwargs):
1283 open_message.tid = kwargs['tid']
1284 self._pushToArray(messages_history, open_message)
1285 if open_message.status == 0:
1286 sendDelete(open_message.tid, open_message.payload.fid)
1287 elif open_message.status == 0xc0000034: # STATUS_OBJECT_NAME_NOT_FOUND
1288 callback(path)
1289 elif open_message.status == 0xC00000BA: # [MS-ERREF]: STATUS_FILE_IS_A_DIRECTORY
1290 errback(OperationFailure('Failed to delete %s on %s: Cannot delete a folder. Please use deleteDirectory() method or append "/*" to your path if you wish to delete all files in the folder.' % ( path, service_name ), messages_history))
1291 else:
1292 errback(OperationFailure('Failed to delete %s on %s: Unable to open file' % ( path, service_name ), messages_history))
1293
1294 def sendDelete(tid, fid):
1295 m = SMB2Message(SMB2SetInfoRequest(fid,
1296 additional_info = 0,
1297 info_type = SMB2_INFO_FILE,
1298 file_info_class = 0x0d, # SMB2_FILE_DISPOSITION_INFO
1299 data = b'\x01'))
1300 # [MS-SMB2]: 2.2.39, [MS-FSCC]: 2.4.11
1301 m.tid = tid
1302 self._sendSMBMessage(m)
1303 self.pending_requests[m.mid] = _PendingRequest(m.mid, int(time.time()) + timeout, deleteCB, errback, tid = tid, fid = fid)
1304 self._pushToArray(messages_history, m)
1305
1306 def deleteCB(delete_message, **kwargs):
1307 self._pushToArray(messages_history, delete_message)
1308 if delete_message.status == 0:
1309 closeFid(kwargs['tid'], kwargs['fid'], status = 0)
1310 else:
1311 closeFid(kwargs['tid'], kwargs['fid'], status = delete_message.status)
1312
1313 def closeFid(tid, fid, status = None):

Callers 1

deleteCBMethod · 0.95

Calls

no outgoing calls

Tested by

no test coverage detected