Example #1
0
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()
Example #2
0
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)
Example #3
0
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()
Example #4
0
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)
Example #5
0
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