[Oval-commits] r144 - in trunk/oval-server/src: dba dsa2oval/definition dsaSync

Pavel Vinogradov blaze-guest at alioth.debian.org
Fri Aug 17 16:43:00 UTC 2007


Author: blaze-guest
Date: 2007-08-17 16:43:00 +0000 (Fri, 17 Aug 2007)
New Revision: 144

Modified:
   trunk/oval-server/src/dba/dba.py
   trunk/oval-server/src/dsa2oval/definition/generator.py
   trunk/oval-server/src/dsaSync/directory.py
   trunk/oval-server/src/dsaSync/ftp.py
   trunk/oval-server/src/dsaSync/http.py
   trunk/oval-server/src/dsaSync/sync.py
Log:
Implement update of vulnerabilities table on sync dsa dir

Modified: trunk/oval-server/src/dba/dba.py
===================================================================
--- trunk/oval-server/src/dba/dba.py	2007-08-17 14:52:53 UTC (rev 143)
+++ trunk/oval-server/src/dba/dba.py	2007-08-17 16:43:00 UTC (rev 144)
@@ -1,5 +1,8 @@
 from pysqlite2 import dbapi2 as db
 
+class dbaNotInitialized(Exception):
+	pass
+
 class dba:
 	
 	__dbStruct = """		
@@ -36,6 +39,15 @@
 		self.__dbPath = dbpath
 		self.__conn = db.connect(self.__dbPath)
 		self.cursor = self.__conn.cursor()
+		#Chech if tables exists
+		try:
+			self.cursor.execute ("""SELECT name FROM sqlite_master 
+				WHERE type=\'table\'
+				ORDER BY name;""")
+			if not self.cursor.fetchall():
+				raise dbaNotInitialized ()
+		except dbaNotInitialized:
+			self.__initDB()
 		
 	def getCursor(self):
 		if self.__conn:
@@ -68,11 +80,9 @@
 								(agentName, '22'))
 						
 	def getDSAreport (self):
-		self.cursor.execute ('SELECT vulnDSA, vulnTimestamp from vulnerabilities;')
+		self.cursor.execute ('SELECT vulnDSA, vulnTimestamp, vulnLocation from vulnerabilities;')
 		return (self.cursor.fetchall())
 		
 if __name__ == "__main__":
 	sql = dba('/tmp/oval-server.db')
-	sql.updateDSA (111, '/tmp/111', '1')
-	#sql.updateDSA (112, '/tmp/111', '3')
 	print sql.getDSAreport()
\ No newline at end of file

Modified: trunk/oval-server/src/dsa2oval/definition/generator.py
===================================================================
--- trunk/oval-server/src/dsa2oval/definition/generator.py	2007-08-17 14:52:53 UTC (rev 143)
+++ trunk/oval-server/src/dsa2oval/definition/generator.py	2007-08-17 16:43:00 UTC (rev 144)
@@ -146,7 +146,6 @@
 	
 		Use state hash for optimization of resulted XML
 	"""
-	#TODO: Add arch state generation
 	if not testsHash["dpkgSte"].has_key(operation) or not testsHash["dpkgSte"][operation].has_key(value):
 		stateId = __getNewId ("state")
 
@@ -174,7 +173,6 @@
 	except KeyError:
 		pass
 
-	#TODO: Add arch state generation
 	if not testsHash["unameSte"].has_key(operation) or not testsHash["unameSte"][operation].has_key(value):
 		stateId = __getNewId ("state")
 
@@ -195,7 +193,7 @@
 	
 		Use state hash for optimization of resulted XML
 	"""
-	#TODO: Add arch state generation
+
 	if not testsHash["fileSte"].has_key(operation) or not testsHash["fileSte"][operation].has_key(value):
 		stateId = __getNewId ("state")
 

Modified: trunk/oval-server/src/dsaSync/directory.py
===================================================================
--- trunk/oval-server/src/dsaSync/directory.py	2007-08-17 14:52:53 UTC (rev 143)
+++ trunk/oval-server/src/dsaSync/directory.py	2007-08-17 16:43:00 UTC (rev 144)
@@ -1,11 +1,13 @@
 from sync import DsaSync
 from datetime import datetime
+from shutil import copyfile
 from stat import *
 import os
 
 class dirSync(DsaSync):
 	
 	result = []
+			
 	def cmpdir (self, directory):
 			
 		for file in os.listdir(directory):
@@ -21,8 +23,8 @@
 					self.result.append (path)
 	
 	def syncfile (self, dir, file):
-		from shutil import copyfile
-			
+		DsaSync.syncfile (self, dir, file)
+		
 		if dir:
 			path = self.dsaStorage + os.sep + dir
 			
@@ -42,7 +44,7 @@
 			
 	def sync(self):
 		self.cmpdir (self.dsaSource)
-		print self.result
+		
 		if self.result:
 			self.syncdirs ()
 		

Modified: trunk/oval-server/src/dsaSync/ftp.py
===================================================================
--- trunk/oval-server/src/dsaSync/ftp.py	2007-08-17 14:52:53 UTC (rev 143)
+++ trunk/oval-server/src/dsaSync/ftp.py	2007-08-17 16:43:00 UTC (rev 144)
@@ -89,6 +89,7 @@
 				self.curdir = os.path.split(self.curdir)[0]
 			
 	def syncfile (self, dir, file):
+		DsaSync.syncfile (self, dir, file)
 
 		if dir:
 			path = self.dsaStorage + os.sep + dir

Modified: trunk/oval-server/src/dsaSync/http.py
===================================================================
--- trunk/oval-server/src/dsaSync/http.py	2007-08-17 14:52:53 UTC (rev 143)
+++ trunk/oval-server/src/dsaSync/http.py	2007-08-17 16:43:00 UTC (rev 144)
@@ -96,6 +96,8 @@
 				self.curdir = os.path.split(self.curdir)[0]
 			
 	def syncfile (self, dir, file):
+		
+		DsaSync.syncfile(self, dir, file)
 
 		if dir:
 			path = self.dsaStorage + os.sep + dir
@@ -115,13 +117,7 @@
 			self.conn.request('GET', '%s' % (self.dsaSource+os.sep+file))
 			data = self.conn.getresponse().read()
 			self.__writer(data)
-				
-	def syncdirs (self):
-		for path in self.result:
-			file = path[len(self.dsaSource):]
-			(dir, file) = os.path.split(file)
-			self.syncfile (dir, file)
-			
+							
 	def sync(self):
 		logging.critical('Syncing %s with http://%s%s' % (self.dsaStorage, self.host, self.dsaSource))
 		self.curdir = self.dsaSource

Modified: trunk/oval-server/src/dsaSync/sync.py
===================================================================
--- trunk/oval-server/src/dsaSync/sync.py	2007-08-17 14:52:53 UTC (rev 143)
+++ trunk/oval-server/src/dsaSync/sync.py	2007-08-17 16:43:00 UTC (rev 144)
@@ -1,5 +1,6 @@
 from datetime import datetime
 from stat import *
+import re
 import os
  
 class DsaSync:
@@ -23,4 +24,23 @@
 					time = mtime
 		else:
 			os.mkdir(self.dsaStorage)
-		self.actual = time
\ No newline at end of file
+		self.actual = time
+	
+	def syncfile (self, dir, file):
+		from dba import dba
+		db = dba.dba ('/tmp/oval-server.db')
+		
+		if dir:
+			path = self.dsaStorage + os.sep + dir + os.sep + file
+		else:
+			path = self.dsaSource+os.sep+file
+		pattern = re.compile(r'dsa\-(\d{1,5})\.data')
+		result =  pattern.search (file)
+		if result:
+			db.updateDSA(int(result.groups()[0]), path, datetime.now().strftime('%Y-%m-%d %H:%M'))
+		
+	def syncdirs (self):
+		for path in self.result:
+			file = path[len(self.dsaSource):]
+			(dir, file) = os.path.split(file)
+			self.syncfile (dir, file)




More information about the Oval-commits mailing list