Skip to content
Snippets Groups Projects
Commit fca8d833 authored by Stuart Gathman's avatar Stuart Gathman
Browse files

Import and export csv for converting existing greylist database.

parent f28cab2d
Branches
Tags
No related merge requests found
......@@ -41,6 +41,15 @@ class Greylist(object):
self.dbp = shelve.open(dbname,'c',protocol=2)
self.lock = thread.allocate_lock()
def export_csv(self,fp):
"Export records to csv."
import csv
dbp = self.dbp
w = csv.writer(fp)
for key, r in dbp.iteritems():
ip,sender,recipient = key.split(':')
w.writerow([ip,sender,recipient,r.firstseen,r.lastseen,r.cnt,r.umis])
def clean(self,timeinc=0):
"Delete records past the retention limit."
now = time.time() + timeinc
......@@ -100,3 +109,10 @@ class Greylist(object):
def close(self):
self.dbp.close()
if __name__ == '__main__':
import sys
g = Greylist(sys.argv[1])
try:
g.export_csv(sys.stdout)
finally: g.close()
......@@ -25,6 +25,19 @@ class Greylist(object):
primary key (ip,sender,recipient))''')
except: pass
def import_csv(self,fp):
import csv
rdr = csv.reader(fp)
cur = self.conn.execute('begin immediate')
try:
for r in rdr:
cur.execute('''insert into
greylist(ip,sender,recipient,firstseen,lastseen,cnt,umis)
values(?,?,?,?,?,?,?)''', r)
self.conn.commit()
finally:
cur.close();
def clean(self,timeinc=0):
"Delete records past the retention limit."
now = time.time() + timeinc - self.greylist_retain
......@@ -84,3 +97,10 @@ class Greylist(object):
def close(self):
self.conn.close()
if __name__ == '__main__':
import sys
g = Greylist(sys.argv[1])
try:
g.import_csv(sys.stdin)
finally: g.close()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment