Below is the file 'plugins/postgresql.py' from this revision. You can also download the file.
import socket import threading import sys from pyPgSQL import libpq export = { "name" : "text_output", "version" : "0.1", "description" : "A simple output module that writes a text file", "type" : "output" } lock = threading.Lock() cnx = None seen_hosts = set() def q(s): if s == None: return "NULL" else: return libpq.PgQuoteString(s) def initialise(library): global cnx cnx = libpq.PQconnectdb(library.config.connect_str) cnx.query("DELETE FROM urgency") for urgency in library.urgency_to_string: cnx.query("INSERT INTO urgency (urgency,description) VALUES (%d,%s)" % (urgency, q(library.urgency_to_string[urgency]))) def finalise(library): return def write_results(library, host, plugins, results): lock.acquire() for result in results: # the first time we see a host, delete prior history for those plugins which ran in this scan if (result.address[0]) not in seen_hosts: seen_hosts.add(result.address[0]) for plugin in plugins: cnx.query("DELETE FROM results WHERE address=" + q(result.address[0]) + " AND plugin_name=" + q(plugin)) query = "INSERT INTO results (updated,address,plugin_name,tcp_ports,udp_ports,urgency,short_mesg,long_mesg,advice) VALUES (now()," udp_ports = result.udp_ports if udp_ports != None: udp_ports = ','.join(map(str, udp_ports)) tcp_ports = result.tcp_ports if tcp_ports != None: tcp_ports = ','.join(map(str, tcp_ports)) urgency = result.urgency if urgency != None: urgency = str(urgency) values = [ result.address[0], result.plugin_name, tcp_ports, udp_ports, urgency, result.short_mesg, result.long_mesg, result.advice ] values = map(q, values) query += ','.join(values) + ")" cnx.query(query) lock.release() def write_errors(library, host, errors): return