#!/usr/bin/env python
# -*- mode: python -*-
# This script takes a list of .forward files and generates a list of colon
# delimited fields for import into a ldap directory. The fields represent
# the user and their email forwarding.
#
# A sample invokation..
#   cd /home
#   find -name ".foward" -maxdepth 2 | mkforwardlist | sort | less
# Then correct any invalid forward files if possible. After that stash the
# output in a file, remove the invalid lines and import it.
#
# It also understand .qmail type files

from __future__ import print_function

import re, time, getopt, os, sys, pwd, stat

SSHAuthSplit = re.compile('^(.* )?(\d+) (\d+) (\d+) ?(.+)$')

while (1):
   File = sys.stdin.readline().strip()
   if File == "":
      break

   # Attempt to determine the UID   
   try:
      User = pwd.getpwuid(os.stat(File)[stat.ST_UID])[0]
   except KeyError:
      print("Invalid0", File)
      continue

   # Read the first two non comment non empty lines
   Forward = open(File,"r")
   Lines = []
   while (1):
      Line = Forward.readline().strip()
      if Line == "":
         break
      if Line[0] == '#' or Line[0] == '\n':
         continue
      if SSHAuthSplit.match(Line) is None:
         print("Bad line", File)
      else:
         Lines.append(Line)

   for x in Lines:
      print(User + ":", x)
