def load_metadata_worker(db, task_queue): for task in iter(task_queue.get, 'STOP'): conn = sqlite3.connect(db, timeout=60) cur = conn.cursor() fullpath = task[0] fileext = task[1] nfileext = task[2] filetype = task[3] nfiletype = task[4] mode = task[5] uid = task[6] gid = task[7] req_perm = AuditdReqPerm(None, cur) rsrc = AuditdResource( None, cur, path=fullpath, rid=None ) if rsrc.rid != None: tyid = AuditdType( None, cur, fullpath if 'directory' in filetype.lower() \ else os.path.dirname(fullpath), filetype ).get_tyid() rsrc.update( tyid, fileext, uid, gid, mode ) req_perm.compute(rsrc) #rsrc.compute_actors( shadow=False ) cur.close() conn.close()
def load_metadata(conn, configs): mdfile = configs['metadatafile'] print 'Using metadata from \"%s\"...' % mdfile print 'Begin loading metadata for %s...' % configs['hostname'] print '='*80 tic = time.time() create_index_for_principal(conn) create_index_for_resource(conn) create_index_for_operation(conn) with open(mdfile, 'r+b') as f: map = mmap.mmap(f.fileno(), 0) line = map.readline() while line: m = line.split('|') fullpath = m[0] fileext = m[1] nfileext = int(m[2]) # unused filetype = m[3] nfiletype = int(m[4]) # unused mode = ctypes.c_int32(int(m[5])).value uid = ctypes.c_int32(int(m[6])).value gid = ctypes.c_int32(int(m[7])).value # Skip entries for which we don't have info. if mode == -1 or uid == -1 or mode == -1: line = map.readline() continue cur = conn.cursor() cur.execute('BEGIN TRANSACTION') #cur.close() req_perm = AuditdReqPerm(None, cur) rsrc = AuditdResource( None, cur, path=fullpath, rid=None ) if rsrc.rid != None: tyid = AuditdType( None, cur, fullpath if 'directory' in filetype.lower() \ else os.path.dirname(fullpath), filetype ).get_tyid() rsrc.update( tyid, fileext, uid, gid, mode ) req_perm.compute(rsrc) #rsrc.compute_actors( shadow=False ) #cur = conn.cursor() #cur.execute('END TRANSACTION') cur.close() conn.commit() line = map.readline() map.close() toc = time.time() print '='*80 elapsed = toc - tic print 'Done loading metadata for %s. Took %f seconds.' \ % (configs['hostname'], elapsed)
def load_metadata_worker(db, task_queue): for task in iter(task_queue.get, 'STOP'): conn = sqlite3.connect(db, timeout=60) cur = conn.cursor() fullpath = task[0] fileext = task[1] nfileext = task[2] filetype = task[3] nfiletype = task[4] mode = task[5] uid = task[6] gid = task[7] req_perm = AuditdReqPerm(None, cur) rsrc = AuditdResource(None, cur, path=fullpath, rid=None) if rsrc.rid != None: tyid = AuditdType( None, cur, fullpath if 'directory' in filetype.lower() \ else os.path.dirname(fullpath), filetype ).get_tyid() rsrc.update(tyid, fileext, uid, gid, mode) req_perm.compute(rsrc) #rsrc.compute_actors( shadow=False ) cur.close() conn.close()
def load_metadata(conn, configs): mdfile = configs['metadatafile'] print 'Using metadata from \"%s\"...' % mdfile print 'Begin loading metadata for %s...' % configs['hostname'] print '=' * 80 tic = time.time() create_index_for_principal(conn) create_index_for_resource(conn) create_index_for_operation(conn) with open(mdfile, 'r+b') as f: map = mmap.mmap(f.fileno(), 0) line = map.readline() while line: m = line.split('|') fullpath = m[0] fileext = m[1] nfileext = int(m[2]) # unused filetype = m[3] nfiletype = int(m[4]) # unused mode = ctypes.c_int32(int(m[5])).value uid = ctypes.c_int32(int(m[6])).value gid = ctypes.c_int32(int(m[7])).value # Skip entries for which we don't have info. if mode == -1 or uid == -1 or mode == -1: line = map.readline() continue cur = conn.cursor() cur.execute('BEGIN TRANSACTION') #cur.close() req_perm = AuditdReqPerm(None, cur) rsrc = AuditdResource(None, cur, path=fullpath, rid=None) if rsrc.rid != None: tyid = AuditdType( None, cur, fullpath if 'directory' in filetype.lower() \ else os.path.dirname(fullpath), filetype ).get_tyid() rsrc.update(tyid, fileext, uid, gid, mode) req_perm.compute(rsrc) #rsrc.compute_actors( shadow=False ) #cur = conn.cursor() #cur.execute('END TRANSACTION') cur.close() conn.commit() line = map.readline() map.close() toc = time.time() print '=' * 80 elapsed = toc - tic print 'Done loading metadata for %s. Took %f seconds.' \ % (configs['hostname'], elapsed)
def get_valid_rsrcs(conn, cur): rsrcs = [] sql = 'SELECT `rid`, `path`, `uid`, `gid`, `mode` FROM `Resource`' if conn != None: cur = conn.cursor() cur.execute(sql) row = cur.fetchone() while row: rid = row[0] path = row[1] uid = row[2] gid = row[3] mode = row[4] if rid != None and path != None \ and uid != None and gid != None and mode != None: rsrc = AuditdResource(conn, cur, rid, path, uid, gid, mode) rsrcs.append(rsrc) row = cur.fetchone() if conn != None: cur.close() return rsrcs