[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