def dump_log(self): query = '''INSERT INTO bley_log (logtime, ip, sender, recipient, action, check_dnswl, check_dnsbl, check_helo, check_dyn, check_db, check_spf, check_s_eq_r, check_postmaster, check_cache) VALUES(%(time)s, %(ip)s, %(from)s, %(to)s, %(action)s, %(DNSWL)s, %(DNSBL)s, %(HELO)s, %(DYN)s, %(DB)s, %(SPF)s, %(S_EQ_R)s, %(WHITELISTED)s, %(CACHE)s)''' if self.settings.dbtype == 'sqlite3': query = bleyhelpers.adapt_query_for_sqlite3(query) try: db = self.settings.database.connect(**self.settings.dbsettings) dbc = db.cursor() i = len(self.actionlog) while i: logline = self.actionlog.pop(0) dbc.execute(query, logline) i -= 1 db.commit() dbc.close() db.close() except self.settings.database.DatabaseError, e: logger.warn('SQL error: %s' % e)
def dump_log(self): query = '''INSERT INTO bley_log (logtime, ip, sender, recipient, action, check_dnswl, check_dnsbl, check_helo, check_dyn, check_db, check_spf, check_s_eq_r, check_postmaster, check_cache) VALUES(%(time)s, %(ip)s, %(from)s, %(to)s, %(action)s, %(DNSWL)s, %(DNSBL)s, %(HELO)s, %(DYN)s, %(DB)s, %(SPF)s, %(S_EQ_R)s, %(WHITELISTED)s, %(CACHE)s)''' if self.settings.dbtype == 'sqlite3': query = bleyhelpers.adapt_query_for_sqlite3(query) try: db = self.settings.database.connect(**self.settings.dbsettings) dbc = db.cursor() i = len(self.actionlog) while i: logline = self.actionlog.pop(0) dbc.execute(query, logline) i -= 1 db.commit() dbc.close() db.close() except self.settings.database.DatabaseError as e: logger.warn('SQL error: %s' % e) reactor.callLater(30 * 60, self.dump_log)
def safe_execute(self, query, params=None): if self.factory.settings.dbtype == 'sqlite3': query = bleyhelpers.adapt_query_for_sqlite3(query) try: self.dbc.execute(query, params) self.db.commit() except self.factory.settings.database.OperationalError: self.safe_reconnect() if self.db: self.dbc.execute(query, params) self.db.commit() else: logger.info('Could not reconnect to the database, exiting.') reactor.stop()