Advertisement
Guest User

Untitled

a guest
Jun 1st, 2016
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.14 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. #
  3. # Dependencies
  4. # apt-get install libmysqlclient-dev python python-dev python-mysqldb
  5. #
  6. # Example
  7. # python gld.py --help
  8. #
  9.  
  10. import argparse
  11. import MySQLdb
  12. from datetime import datetime
  13.  
  14. # greylist treshold
  15. N = 5
  16. # default comment
  17. DEFAULT_COMMENT = 'auto-whitelist %s' % datetime.utcnow().isoformat(' ')
  18.  
  19. def main(host, port, user, password, database):
  20. """
  21. :param host: {str} database hostname
  22. :param port: {int} database port
  23. :param user: {str} database user name
  24. :param password: {str} database password
  25. :param database: {str} database name
  26. """
  27. # connecting to database
  28. db = MySQLdb.connect(host=host,
  29. port=port,
  30. user=user,
  31. passwd=password,
  32. db=database)
  33. c = db.cursor()
  34.  
  35. # selecting all IPs from greylist what has N bigger then N
  36. c.execute('SELECT ip FROM greylist WHERE n >= %d' % N)
  37. ips = [ip for ip, in c.fetchall()]
  38.  
  39. if len(ips) > 0:
  40. # find out which IPs has not bee added to whitelist yet
  41. ins = ','.join(['%s'] * len(ips))
  42. c.execute('SELECT mail FROM whitelist WHERE mail IN (%s)' % ins,
  43. tuple(ips))
  44. ips_to_insert = list(set(ips) - set([ip for ip, in c.fetchall()]))
  45.  
  46. if len(ips_to_insert) > 0:
  47. # insert missing IPs to whitelist database
  48. c.executemany('INSERT INTO whitelist (mail, comment) VALUES (%s, %s)',
  49. [(ip, DEFAULT_COMMENT) for ip in ips_to_insert])
  50.  
  51. # close connections
  52. c.close()
  53. db.close()
  54.  
  55.  
  56. if __name__ == "__main__":
  57. parser = argparse.ArgumentParser()
  58. parser.add_argument('--host', dest='host', help='Database hostname')
  59. parser.add_argument('--port', dest='port', default=3306,
  60. help='Database port')
  61. parser.add_argument('--user', dest='user', help='Database user name')
  62. parser.add_argument('--password', dest='password', help='Database password')
  63. parser.add_argument('--database', dest='database', help='Database name')
  64.  
  65. main(**vars(parser.parse_args()))
  66.  
  67. print "Done - %s" % datetime.utcnow().isoformat(' ')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement