Exemplo n.º 1
0
class file1:
	def __init__(self):
		self.sql = SQLiteHandler('seFS')
		self.sql.connect()
		
	def ls(self):
		rows = self.sql.execute(''' select * from metadata ''')
		list = []
		for row in rows:
			list.append(row[1])
		return list

	def getutime(self, path):
		#Getter for utime
		rows = self.sql.execute('''select mtime, ctime, atime from metadata where abspath='%s' ''' %( path))
		for row in rows:
			tup = (row[0], row[1], row[2])
			return tup

	def utime(self, path, times):
		#Setter for utime
		mtime, ctime, atime = times
		self.sql.execute(''' update metadata  set mtime='%s', ctime='%s', atime='%s' where abspath='%s' ''' %(mtime, ctime, atime, path))
		self.sql.commit()
		return times

	def setinode(self,path,inode):
		#Setter for inode
		self.sql.execute(''' update metadata  set inode = '%d' where abspath='%s' ''' %(inode, path))
		self.sql.commit()
		return inode

	def set_id(self,path,gid,uid,mode,link):
		#Setter for uid, gid, mode and linkcount
		self.sql.execute(''' update metadata  set gid= '%d',uid= '%d',mode='%d',linkcount='%d' where abspath='%s' ''' %(gid, uid, mode,link, path))
		self.sql.commit()
		return True

	def setlinkcount(self,path,linkcnt):
		#Setter for linkcount
		self.sql.execute(''' update metadata  set linkcount = '%d' where abspath='%s' ''' %(linkcnt, path))
		self.sql.commit()
		return linkcnt

	def setmode(self,path,mode):
		#Setter for mode
		self.sql.execute(''' update metadata  set mode = '%d' where abspath='%s' ''' %(mode, path))
		self.sql.commit()
		return mode

	def getinode(self,path):
		"""
			Getter for inode
		"""
		rows = self.sql.execute(''' select inode from metadata where abspath='%s' ''' %( path))
		for row in rows:
			return row[0]

	def getlength(self,path):
		"""
			Calculates length of data
		"""
		rows = self.sql.execute(''' select length from metadata where abspath='%s' ''' %( path))
		for row in rows:
			return row[0]

	def getlinkcount(self,path):
		""" Getter for linkcount """
		rows = self.sql.execute(''' select linkcount from metadata where abspath='%s' ''' %( path))
		for row in rows:
			return row[0]
	def getmode(self,path):
		""" Getter for mode """
		rows = self.sql.execute(''' select mode from metadata where abspath='%s' ''' %( path))
		for row in rows:
			return row[0]

	def open(self, path):
		""" insert new record in database """

		self.sql.execute(''' insert into metadata (abspath) select '%s' where not exists (SELECT 1 FROM metadata WHERE abspath='%s') ''' %(path,path))
		self.sql.commit()
		return path
	
	def write(self, path, data):
		""" Implements write() call """
		length  = len(data)

		rows = self.sql.execute(''' select inode from metadata where abspath='%s' ''' %(path) )
		id = None
		for row in rows:
			id = row[0]

			self.sql.execute(''' update metadata set length= '%s',data= '%s' where abspath='%s' ''' %(length, data, path))
			self.sql.commit()
			return

	def set_writetime(self, path, times):

		self.sql.execute(''' update metadata  set mtime='%s', atime='%s' where abspath='%s' ''' %(times, times, path))
		self.sql.commit()
		return times
		
	def remove(self,abspath):
		"""
			Implements unlink() call
		"""
		self.sql.execute(''' delete from metadata where abspath='%s' ''' %(abspath))
		self.sql.commit()
		return
	
	def search(self, abspath):
		""" Search file in database record """
		rows = self.sql.execute(''' select inode from metadata where abspath='%s' ''' %(abspath))
		if rows.fetchall():
			return True
		return False

	def read(self, fh):
		"""
			Implements read() call
		"""
		id  = None
		rows = self.sql.execute(''' select inode from metadata where abspath='%s' ''' %(fh))
		for row in rows:
			id = row[0]

		if id is None:
			return None
		rows = self.sql.execute(''' select data from metadata where abspath='%s' ''' %(fh))
		for row in rows:
			return row[0]
		
		
	def __del__(self):
		"""
			Closes the databse connection
		"""
		self.sql.close()
Exemplo n.º 2
0
class seFS:
    """
		Class representing seFS
	"""
    def __init__(self):
        """
			Connects to seFS database
		"""
        self.sql = SQLiteHandler('seFS')
        self.sql.connect()

    def ls(self):
        """
			Implements ls operation
		"""
        rows = self.sql.execute(''' select * from file ''')
        list = []
        for row in rows:
            list.append(row[1])
        return list

    def getutime(self, path):
        """
			Getter for utime
		"""
        rows = self.sql.execute(
            ''' select mtime, ctime, atime from file where abspath='%s' ''' %
            (path))
        for row in rows:
            tup = (row[0], row[1], row[2])
            return tup

    def utime(self, path, times):
        """
			Setter for utime
		"""
        print times
        mtime, ctime, atime = times
        print mtime, ctime, atime
        self.sql.execute(
            ''' update file  set mtime='%s', ctime='%s', atime='%s' where abspath='%s' '''
            % (mtime, ctime, atime, path))
        self.sql.commit()
        return times

    def setinode(self, path, inode):
        """
			Setter for inode
		"""
        print path, inode
        self.sql.execute(
            ''' update file  set inode = '%d' where abspath='%s' ''' %
            (inode, path))
        self.sql.commit()
        return inode

    def getinode(self, path):
        """
			Getter for inode
		"""
        rows = self.sql.execute(
            ''' select inode from file where abspath='%s' ''' % (path))
        for row in rows:
            return row[0]

    def getlength(self, path):
        """
			Calculates length of data
		"""
        rows = self.sql.execute(
            ''' select length from file where abspath='%s' ''' % (path))
        for row in rows:
            return row[0]

    def open(self, path):
        """
			Implements file open() call
		"""
        self.sql.execute(
            ''' insert into file (abspath) select '%s' where not exists (SELECT 1 FROM file WHERE abspath='%s') '''
            % (path, path))
        self.sql.commit()
        return path

    def write(self, fh, data):
        """
			Implements write() call
		"""
        length = len(data)
        shaObj = Crypto(string=data)
        sha1 = shaObj.sha1()
        comp = Compression(data)
        compressed = comp.compress()
        rows = self.sql.execute(
            ''' select id from fileinfo where sha='%s' ''' % (sha1))
        id = None
        for row in rows:
            id = row[0]
        if id is None:
            self.sql.execute(
                ''' insert into fileinfo (length, sha, compressed, data) values ('%s','%s','%s', '%s') '''
                % (length, sha1, compressed, data))
            self.sql.commit()
            row = self.sql.execute(
                ''' select id,length from fileinfo where sha='%s' ''' % (sha1))
            for rows in row:
                id = rows[0]
            print id, length
            self.sql.execute(
                ''' update file set id='%d', length='%d' where abspath='%s' '''
                % (id, length, fh))
            self.sql.commit()
            return
        else:
            self.sql.execute(
                ''' update file set id='%d', length='%d' where abspath='%s' '''
                % (id, length, fh))
            self.sql.commit()
            return

    def remove(self, abspath):
        """
			Implements unlink() call
		"""
        self.sql.execute(''' delete from file where abspath='%s' ''' %
                         (abspath))
        self.sql.commit()
        return

    def search(self, abspath):
        """
			Search for database record
		"""
        rows = self.sql.execute(''' select * from file where abspath='%s' ''' %
                                (abspath))
        if rows.fetchall():
            return True
        return False

    def read(self, fh):
        """
			Implements read() call
		"""
        id = None
        rows = self.sql.execute(
            ''' select id from file where abspath='%s' ''' % (fh))
        for row in rows:
            id = row[0]

        if id is None:
            return None
        rows = self.sql.execute(
            ''' select data from fileinfo where id='%d' ''' % id)
        for row in rows:
            return row[0]

    def __del__(self):
        """
			Closes the databse connection
		"""
        self.sql.close()
Exemplo n.º 3
0
class FileSystem:

	#------------------Constructor makes connection to the database----------------------

	def __init__(self):
		self.sql = SQLiteHandler('seFS')
		self.sql.connect()
		

	#-----------------This functions performs the same as ls operation-------------------------

	def ls(self):
		rows = self.sql.execute(''' select * from metadata ''')
		list = []
		for row in rows:
			list.append(row[1])
		return list


	#-------------This is a getter method for retrieving utime from the database----------------

	def getutime(self, path):
		#Getter for utime
		rows = self.sql.execute('''select mtime, ctime, atime from metadata where abspath='%s' ''' %( path))
		for row in rows:
			tup = (row[0], row[1], row[2])
			return tup


	#----------------This is a setter method for storing utime in the database-------------------

	def utime(self, path, times):
		#Setter for utime
		mtime, ctime, atime = times
		self.sql.execute(''' update metadata  set mtime='%s', ctime='%s', atime='%s' where abspath='%s' ''' %(mtime, ctime, atime, path))
		self.sql.commit()
		return times


	#----------------This is a setter method for storing inode in the database-------------------

	def setinode(self,path,inode):
		#Setter for inode
		self.sql.execute(''' update metadata  set inode = '%d' where abspath='%s' ''' %(inode, path))
		self.sql.commit()
		return inode


	#----------This is a setter method for storing uid, gid, mode and linkcount-------------------

	def set_id(self,path,gid,uid,mode,link):
		#Setter for uid, gid, mode and linkcount
		self.sql.execute(''' update metadata  set gid= '%d',uid= '%d',mode='%d',linkcount='%d' where abspath='%s' ''' %(gid, uid, mode,link, path))
		self.sql.commit()
		return True


	#-----------------------This is a setter method for storing linkcount--------------------------

	def setlinkcount(self,path,linkcnt):
		#Setter for linkcount
		self.sql.execute(''' update metadata  set linkcount = '%d' where abspath='%s' ''' %(linkcnt, path))
		self.sql.commit()
		return linkcnt


	#-------------------------This is a setter method for storing mode-----------------------------

	def setmode(self,path,mode):
		#Setter for mode
		self.sql.execute(''' update metadata  set mode = '%d' where abspath='%s' ''' %(mode, path))
		self.sql.commit()
		return mode


	#------------This is a getter method for retrieving the inode from the database-----------------

	def getinode(self,path):
		"""
			Getter for inode
		"""
		rows = self.sql.execute(''' select inode from metadata where abspath='%s' ''' %( path))
		for row in rows:
			return row[0]


	#----------This is a getter method for retrieving the length of data from the database---------------

	def getlength(self,path):
		"""
			Calculates length of data
		"""
		rows = self.sql.execute(''' select length from metadata where abspath='%s' ''' %( path))
		for row in rows:
			return row[0]


	#------------This is a getter method for retrieving the linkcount from the database-----------------

	def getlinkcount(self,path):
		""" Getter for linkcount """
		rows = self.sql.execute(''' select linkcount from metadata where abspath='%s' ''' %( path))
		for row in rows:
			return row[0]


	#------------This is a getter method for retrieving mode value from the database-------------------

	def getmode(self,path):
		""" Getter for mode """
		rows = self.sql.execute(''' select mode from metadata where abspath='%s' ''' %( path))
		for row in rows:
			return row[0]


	#---------------------------This method inserts new record in database-----------------------------

	def open(self, path):
		""" insert new record in database """

		self.sql.execute(''' insert into metadata (abspath) select '%s' where not exists (SELECT 1 FROM metadata WHERE abspath='%s') ''' %(path,path))
		self.sql.commit()
		return path
	

	#-------------------------------This method implements write() call-------------------------------

	def write(self, path, data):
		""" Implements write() call """
		length  = len(data)

		rows = self.sql.execute(''' select inode from metadata where abspath='%s' ''' %(path) )
		id = None
		for row in rows:
			id = row[0]

			self.sql.execute(''' update metadata set length= '%s',data= '%s' where abspath='%s' ''' %(length, data, path))
			self.sql.commit()
			return


	#----------------------This method sets mtime, atime for the file in the database-----------------

	def set_writetime(self, path, times):

		self.sql.execute(''' update metadata  set mtime='%s', atime='%s' where abspath='%s' ''' %(times, times, path))
		self.sql.commit()
		return times
	

	#--------------------------This method deletes the file from the directory-------------------------
	
	def remove(self,abspath):
		"""
			Implements unlink() call
		"""
		self.sql.execute(''' delete from metadata where abspath='%s' ''' %(abspath))
		self.sql.commit()
		return
	

	#-------------------Look for inode in the database for further processing---------------------------

	def search(self, abspath):
		""" Search file in database record """
		rows = self.sql.execute(''' select inode from metadata where abspath='%s' ''' %(abspath))
		if rows.fetchall():
			return True
		return False


	#--------------------Retrieve the data from its corresponding file based on its inode---------------

	def read(self, fh):
		"""
			Implements read() call
		"""
		id  = None
		rows = self.sql.execute(''' select inode from metadata where abspath='%s' ''' %(fh))
		for row in rows:
			id = row[0]

		if id is None:
			return None
		rows = self.sql.execute(''' select data from metadata where abspath='%s' ''' %(fh))
		for row in rows:
			return row[0]
		
		
	#-------------------------Now this method closes the database connection------------------------------

	def __del__(self):
		"""
			Closes the databse connection
		"""
		self.sql.close()
Exemplo n.º 4
0
class file1:
    def __init__(self):
        self.sql = SQLiteHandler('seFS')
        self.sql.connect()

    def ls(self):
        rows = self.sql.execute(''' select * from metadata ''')
        list = []
        for row in rows:
            list.append(row[1])
        return list

    def getutime(self, path):
        #Getter for utime
        rows = self.sql.execute(
            '''select mtime, ctime, atime from metadata where abspath='%s' '''
            % (path))
        for row in rows:
            tup = (row[0], row[1], row[2])
            return tup

    def utime(self, path, times):
        #Setter for utime
        mtime, ctime, atime = times
        self.sql.execute(
            ''' update metadata  set mtime='%s', ctime='%s', atime='%s' where abspath='%s' '''
            % (mtime, ctime, atime, path))
        self.sql.commit()
        return times

    def setinode(self, path, inode):
        #Setter for inode
        self.sql.execute(
            ''' update metadata  set inode = '%d' where abspath='%s' ''' %
            (inode, path))
        self.sql.commit()
        return inode

    def set_id(self, path, gid, uid, mode, link):
        #Setter for uid, gid, mode and linkcount
        self.sql.execute(
            ''' update metadata  set gid= '%d',uid= '%d',mode='%d',linkcount='%d' where abspath='%s' '''
            % (gid, uid, mode, link, path))
        self.sql.commit()
        return True

    def setlinkcount(self, path, linkcnt):
        #Setter for linkcount
        self.sql.execute(
            ''' update metadata  set linkcount = '%d' where abspath='%s' ''' %
            (linkcnt, path))
        self.sql.commit()
        return linkcnt

    def setmode(self, path, mode):
        #Setter for mode
        self.sql.execute(
            ''' update metadata  set mode = '%d' where abspath='%s' ''' %
            (mode, path))
        self.sql.commit()
        return mode

    def getinode(self, path):
        """
			Getter for inode
		"""
        rows = self.sql.execute(
            ''' select inode from metadata where abspath='%s' ''' % (path))
        for row in rows:
            return row[0]

    def getlength(self, path):
        """
			Calculates length of data
		"""
        rows = self.sql.execute(
            ''' select length from metadata where abspath='%s' ''' % (path))
        for row in rows:
            return row[0]

    def getlinkcount(self, path):
        """ Getter for linkcount """
        rows = self.sql.execute(
            ''' select linkcount from metadata where abspath='%s' ''' % (path))
        for row in rows:
            return row[0]

    def getmode(self, path):
        """ Getter for mode """
        rows = self.sql.execute(
            ''' select mode from metadata where abspath='%s' ''' % (path))
        for row in rows:
            return row[0]

    def open(self, path):
        """ insert new record in database """

        self.sql.execute(
            ''' insert into metadata (abspath) select '%s' where not exists (SELECT 1 FROM metadata WHERE abspath='%s') '''
            % (path, path))
        self.sql.commit()
        return path

    def write(self, path, data):
        """ Implements write() call """
        length = len(data)

        rows = self.sql.execute(
            ''' select inode from metadata where abspath='%s' ''' % (path))
        id = None
        for row in rows:
            id = row[0]

            self.sql.execute(
                ''' update metadata set length= '%s',data= '%s' where abspath='%s' '''
                % (length, data, path))
            self.sql.commit()
            return

    def set_writetime(self, path, times):

        self.sql.execute(
            ''' update metadata  set mtime='%s', atime='%s' where abspath='%s' '''
            % (times, times, path))
        self.sql.commit()
        return times

    def remove(self, abspath):
        """
			Implements unlink() call
		"""
        self.sql.execute(''' delete from metadata where abspath='%s' ''' %
                         (abspath))
        self.sql.commit()
        return

    def search(self, abspath):
        """ Search file in database record """
        rows = self.sql.execute(
            ''' select inode from metadata where abspath='%s' ''' % (abspath))
        if rows.fetchall():
            return True
        return False

    def read(self, fh):
        """
			Implements read() call
		"""
        id = None
        rows = self.sql.execute(
            ''' select inode from metadata where abspath='%s' ''' % (fh))
        for row in rows:
            id = row[0]

        if id is None:
            return None
        rows = self.sql.execute(
            ''' select data from metadata where abspath='%s' ''' % (fh))
        for row in rows:
            return row[0]

    def __del__(self):
        """
			Closes the databse connection
		"""
        self.sql.close()
Exemplo n.º 5
0
class seFS:
	"""
		Class representing seFS
	"""
	def __init__(self):
		"""
			Connects to seFS database
		"""
		self.sql = SQLiteHandler('seFS')
		self.sql.connect()
		
	def ls(self):
		"""
			Implements ls operation
		"""
		rows = self.sql.execute(''' select * from file ''')
		list = []
		for row in rows:
			list.append(row[1])
		return list

	def getutime(self, path):
		"""
			Getter for utime
		"""
		rows = self.sql.execute(''' select mtime, ctime, atime from file where abspath='%s' ''' %( path))
		for row in rows:
			tup = (row[0], row[1], row[2])
			return tup

	def utime(self, path, times):
		"""
			Setter for utime
		"""
		print times
		mtime, ctime, atime = times
		print mtime, ctime, atime
		self.sql.execute(''' update file  set mtime='%s', ctime='%s', atime='%s' where abspath='%s' ''' %(mtime, ctime, atime, path))
		self.sql.commit()
		return times

	def setinode(self,path,inode):
		"""
			Setter for inode
		"""
		print path,inode
		self.sql.execute(''' update file  set inode = '%d' where abspath='%s' ''' %(inode, path))
		self.sql.commit()
		return inode

	def getinode(self,path):
		"""
			Getter for inode
		"""
		rows = self.sql.execute(''' select inode from file where abspath='%s' ''' %( path))
		for row in rows:
			return row[0]

	def getlength(self,path):
		"""
			Calculates length of data
		"""
		rows = self.sql.execute(''' select length from file where abspath='%s' ''' %( path))
		for row in rows:
			return row[0]

	def open(self, path):
		"""
			Implements file open() call
		"""
		self.sql.execute(''' insert into file (abspath) select '%s' where not exists (SELECT 1 FROM file WHERE abspath='%s') ''' %(path,path))
		self.sql.commit()
		return path
	
	def write(self, fh, data):
		"""
			Implements write() call
		"""
		length  = len(data)
		shaObj = Crypto(string = data)
		sha1 = shaObj.sha1()
		comp = Compression(data)
		compressed = comp.compress()
		rows = self.sql.execute(''' select id from fileinfo where sha='%s' ''' %(sha1) )
		id = None
		for row in rows:
			id = row[0]
		if id is None:
			self.sql.execute(''' insert into fileinfo (length, sha, compressed, data) values ('%s','%s','%s', '%s') ''' %(length, sha1, compressed, data))
			self.sql.commit()
			row = self.sql.execute(''' select id,length from fileinfo where sha='%s' ''' %(sha1))
			for rows in row:
				id = rows[0]
			print id,length
			self.sql.execute(''' update file set id='%d', length='%d' where abspath='%s' ''' %(id,length,fh))
			self.sql.commit()
			return
		else:
			self.sql.execute(''' update file set id='%d', length='%d' where abspath='%s' ''' %(id,length,fh))
			self.sql.commit()
			return
		
	def remove(self,abspath):
		"""
			Implements unlink() call
		"""
		self.sql.execute(''' delete from file where abspath='%s' ''' %(abspath))
		self.sql.commit()
		return
	
	def search(self, abspath):
		"""
			Search for database record
		"""
		rows = self.sql.execute(''' select * from file where abspath='%s' ''' %(abspath))
		if rows.fetchall():
			return True
		return False

	def read(self, fh):
		"""
			Implements read() call
		"""
		id  = None
		rows = self.sql.execute(''' select id from file where abspath='%s' ''' %(fh))
		for row in rows:
			id = row[0]

		if id is None:
			return None
		rows = self.sql.execute(''' select data from fileinfo where id='%d' ''' %id)
		for row in rows:
			return row[0]
		
		
	def __del__(self):
		"""
			Closes the databse connection
		"""
		self.sql.close()