Rename to match convention in the tools directory
authorAymeric Augustin <aymeric.augustin@m4x.org>
Sun, 5 Oct 2008 09:09:51 +0000 (11:09 +0200)
committerFlorent Bruneau <florent.bruneau@polytechnique.org>
Sun, 5 Oct 2008 09:52:38 +0000 (11:52 +0200)
tools/postgrey2postlicyd [new file with mode: 0755]
tools/postgrey_to_postlicyd.py [deleted file]

diff --git a/tools/postgrey2postlicyd b/tools/postgrey2postlicyd
new file mode 100755 (executable)
index 0000000..2c50b74
--- /dev/null
@@ -0,0 +1,112 @@
+#!/usr/bin/env python
+##############################################################################
+#          pfixtools: a collection of postfix related tools                  #
+#          ~~~~~~~~~                                                         #
+#  ________________________________________________________________________  #
+#                                                                            #
+#  Redistribution and use in source and binary forms, with or without        #
+#  modification, are permitted provided that the following conditions        #
+#  are met:                                                                  #
+#                                                                            #
+#  1. Redistributions of source code must retain the above copyright         #
+#     notice, this list of conditions and the following disclaimer.          #
+#  2. Redistributions in binary form must reproduce the above copyright      #
+#     notice, this list of conditions and the following disclaimer in the    #
+#     documentation and/or other materials provided with the distribution.   #
+#  3. The names of its contributors may not be used to endorse or promote    #
+#     products derived from this software without specific prior written     #
+#     permission.                                                            #
+#                                                                            #
+#  THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND   #
+#  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE     #
+#  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR        #
+#  PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS    #
+#  BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR    #
+#  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF      #
+#  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS  #
+#  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN   #
+#  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)   #
+#  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF    #
+#  THE POSSIBILITY OF SUCH DAMAGE.                                           #
+##############################################################################
+
+# Copyright (c) 2008 Aymeric Augustin
+
+
+# Convert the postgrey_whitelist_clients file to a format
+# suitable for use with the postlicyd Postfix policy daemon
+
+
+import os, re, sys
+
+def process(infile, outfile):
+
+    # Write headers
+    file.write("# Do not edit, file autogenerated by %s\n" % sys.argv[0])
+    if len(sys.argv) > 1 and sys.argv[1] != '-':
+        file.write("# This file has been generated from %s\n" % sys.argv[1])
+
+    re_domain_name = re.compile(r'[a-z0-9.\-]+\.[a-z]+')
+    re_ip_address = re.compile(r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}')
+
+    # Store each entry to avoid duplicates
+    entries = []
+
+    for line in infile:
+        # Comments: keep them
+        if line == '\n' or line[0] == '#':
+            outfile.write(line)
+        # IP addresses: keep as is
+        elif re_ip_address.match(line):
+            outfile.write(line)
+        # Regexps: extract final constant part
+        elif line[0] == '/':
+            line = line.rstrip(r'$/').replace(r'\.', r'.')
+            host = re_domain_name.findall(line)[-1]
+            result = host + '\n'
+            if result not in entries:
+                entries.append(result)
+                outfile.write(result)
+        # Domain names: prepend a dot if the domain name contains only one dot
+        elif re_domain_name.match(line):
+            if line.count('.') < 2:
+                result = '.' + line
+            else:
+                result = line
+            if result not in entries:
+                entries.append(result)
+                outfile.write(result)
+        # Unrecognized: report on stderr and comment in output
+        else:
+            outfile.write('# IGNORED: ' + line)
+            sys.stderr.write("Couldn't process line: %s" % line)
+
+
+if __name__ == '__main__':
+
+    # Check number of arguments
+    if len(sys.argv) > 3:
+        print "Usage: %s [input] [output]" % sys.argv[0]
+        print "If input/output is omitted or -, stdin/stdout is used."
+        sys.exit(1)
+
+    # Parse first argument
+    if len(sys.argv) > 1 and sys.argv[1] != '-':
+        infile = open(sys.argv[1], 'r')
+    else:
+        infile = sys.stdin
+
+    # Parse second argument
+    if len(sys.argv) > 2 and sys.argv[2] != '-':
+        if sys.argv[1] == sys.argv[2]:
+            print "Source file and destination file are identical, aborting"
+            sys.exit(1)
+        if os.path.exists(sys.argv[2]):
+            print "Destination file %s already exists, aborting" % sys.argv[2]
+            sys.exit(1)
+        outfile = open(sys.argv[2], 'w')
+    else:
+        outfile = sys.stdout
+
+    # Do the processing
+    process(infile, outfile)
diff --git a/tools/postgrey_to_postlicyd.py b/tools/postgrey_to_postlicyd.py
deleted file mode 100644 (file)
index 53a5930..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-#!/usr/bin/env python
-# encoding: utf-8
-
-# Convert the postgrey_whitelist_clients file to a format
-# suitable for use with the postlicyd Postfix policy daemon
-
-# Copyright © 2008 Aymeric Augustin
-# Released under the GPL
-
-import os, re, sys
-
-
-def process(infile, outfile):
-
-    re_domain_name = re.compile(r'[a-z0-9.\-]+\.[a-z]+')
-    re_ip_address = re.compile(r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}')
-
-    outfile.write('# Automatically converted for use by postlicyd\n\n')
-
-    # Store each entry to avoid duplicates
-    entries = []
-
-    for line in infile:
-        # Comments: keep them
-        if line == '\n' or line[0] == '#':
-            outfile.write(line)
-        # IP addresses: keep as is
-        elif re_ip_address.match(line):
-            outfile.write(line)
-        # Regexps: extract final constant part
-        elif line[0] == '/':
-            line = line.rstrip(r'$/').replace(r'\.', r'.')
-            host = re_domain_name.findall(line)[-1]
-            result = host + '\n'
-            if result not in entries:
-                entries.append(result)
-                outfile.write(result)
-        # Domain names: prepend a dot if the domain name contains only one dot
-        elif re_domain_name.match(line):
-            if line.count('.') < 2:
-                result = '.' + line
-            else:
-                result = line
-            if result not in entries:
-                entries.append(result)
-                outfile.write(result)
-        # Unrecognized: report on stderr and comment in output
-        else:
-            outfile.write('# IGNORED: ' + line)
-            sys.stderr.write("Couldn't process line: %s" % line)
-
-
-if __name__ == '__main__':
-
-    # Check number of arguments
-    if len(sys.argv) > 3:
-        print "Usage: %s [input] [output]" % sys.argv[0]
-        print "If input/output is omitted or -, stdin/stdout is used."
-        sys.exit(1)
-
-    # Parse first argument
-    if len(sys.argv) > 1 and sys.argv[1] != '-':
-        infile = open(sys.argv[1], 'r')
-    else:
-        infile = sys.stdin
-
-    # Parse second argument
-    if len(sys.argv) > 2 and sys.argv[2] != '-':
-        if sys.argv[1] == sys.argv[2]:
-            print "Source file and destination file are identical, aborting"
-            sys.exit(1)
-        if os.path.exists(sys.argv[2]):
-            print "Destination file %s already exists, aborting" % sys.argv[2]
-            sys.exit(1)
-        outfile = open(sys.argv[2], 'w')
-    else:
-        outfile = sys.stdout
-
-    # Do the processing
-    process(infile, outfile)