#! /usr/bin/perl -w
# Set up an example to allow a user to quickly get started with TMDA
# Note the "disable" and "enable" features.
# Usage: tmda-setup [ <HOME_DIR> ] [ enable | disable ]

  $HOME_DIR = "$ENV{\"HOME\"}";
  $TMDA_DIR = "$HOME_DIR/.tmda";
  $EXAMPLE_DIR = -d "example" ? "example" : "/usr/lib/tmda-email/example";

  while ( $ARGV[0] )
  {
    if ( $ARGV[0] eq "disable" )
    {
      $disable = 1;
      shift;
    }
    
    if ( $ARGV[0] eq "enable" )
    {
      $enable = 1;
      shift;
    }

    if ( $ARGV[0] )
    {
      $HOME_DIR = $ARGV[0];
      $TMDA_DIR = "$HOME_DIR/.tmda";
      shift;
    }
  }

  if ( $disable and $enable )
  {
    die "Can't both enable and disable at the same time.";
  }

  if ( $disable )
  {
    rename "$HOME_DIR/.qmail", "$HOME_DIR/.qmail.bak";
    rename "$HOME_DIR/.qmail-default", "$HOME_DIR/.qmail-default.bak";
    exit 0;
  }

  if ( $enable )
  {
    rename "$HOME_DIR/.qmail.bak", "$HOME_DIR/.qmail";
    rename "$HOME_DIR/.qmail-default.bak", "$HOME_DIR/.qmail-default";
    exit 0;
  }

  if ( ! -d $TMDA_DIR )
  {
    # Create directories.
    mkdir $TMDA_DIR;
    mkdir "$TMDA_DIR/filters";
    mkdir "$TMDA_DIR/lists";
    mkdir "$HOME_DIR/Maildir";
    mkdir "$HOME_DIR/Maildir/.Pending";

    # Create crypt_key file.
    open ( CRYPT_FILE, ">$TMDA_DIR/crypt_key" ) || die "Can't create $TMDA_DIR/crypt_key.\n";
    chmod 0600, "$TMDA_DIR/crypt_key";
    open ( KEYGEN, "/usr/bin/tmda-keygen|" ) || die "Can't start keygen.\n";
    while ( <KEYGEN> )
    {
      chomp;
      /^([a-z0-9]+$)/ && print CRYPT_FILE "$_\n";
    }
    close( KEYGEN );
    close( CRYPT_FILE );

    # Create initial config file
    system "cp $EXAMPLE_DIR/.tmda/config $TMDA_DIR/config";

    # Create initial files in filters directory.
    system "cp -r $EXAMPLE_DIR/.tmda/filters/* $TMDA_DIR/filters";

    # Create initial files in lists directory.
    system "cp -r $EXAMPLE_DIR/.tmda/lists/* $TMDA_DIR/lists";

    if ( -x "/usr/bin/qmail/sendmail" )
    {
      # Create initial .qmail files.
      system "cp -r $EXAMPLE_DIR/.qmail $HOME_DIR/.qmail";
      system "ln -s $HOME_DIR/.qmail $HOME_DIR/.qmail-default";
    }
    else
    {
      # Create initial .forward file.
      system "cp -r $EXAMPLE_DIR/.forward $HOME_DIR/.forward";
    }
  }
  else
  {
    print "Setup already done; See $TMDA_DIR directory.\n";
  }

  exit 0;
