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) def finalise(library): return def write_results(library, host, results): lock.acquire() for result in results: if (result.address[0], result.plugin_name) not in seen_hosts: seen_hosts.add((result.address[0], result.plugin_name)) cnx.query("DELETE FROM results WHERE address=" + q(result.address[0]) + " AND plugin_name=" + q(result.plugin_name)) 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)) values = [ result.address[0], result.plugin_name, tcp_ports, udp_ports, result.urgency_string(), 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