import os import datetime import psycopg2 import pdb def insert_tor_ip(tor_ip): insert_sql = 'INSERT INTO torexit_ips(created_at, ip) VALUES(%s,%s) ON CONFLICT DO NOTHING' conn = None try: conn = psycopg2.connect(database = spamcheck_db, user = spamcheck_db_user, password = "", host = "/var/run/postgresql", port = "5432") cur = conn.cursor() cur.execute(insert_sql, (now, tor_ip)) conn.commit() print(f'Tor IP {tor_ip} saved to database') cur.close() except (Exception, psycopg2.DatabaseError) as error: print(error) finally: if conn is not None: conn.close() def db_config(): # Load db configuration from config file config_filepath = "config/db_config.txt" spamcheck_db = get_parameter("spamcheck_db", config_filepath) spamcheck_db_user = get_parameter("spamcheck_db_user", config_filepath) return (spamcheck_db, spamcheck_db_user) def get_parameter( parameter, file_path ): # Check if secrets file exists if not os.path.isfile(file_path): print("File %s not found, exiting."%file_path) sys.exit(0) # Find parameter in file with open( file_path ) as f: for line in f: if line.startswith( parameter ): return line.replace(parameter + ":", "").strip() # Cannot find parameter, exit print(file_path + " Missing parameter %s "%parameter) sys.exit(0) if __name__ == '__main__': spamcheck_db, spamcheck_db_user = db_config() now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") filepath = 'torbulkexitlist' with open(filepath) as fp: line = fp.readline() cnt = 1 while line: #print("Line {}: {}".format(cnt, line.strip())) line = fp.readline().rstrip('\n') if line != '': insert_tor_ip(line) cnt += 1