#!/usr/local/bin/perl
#
#	Building FTP support system using *:i files.
#
#	@ arl // 1992
#

$VERSION	=	'0.1';
$NEWPOSTFIX	=	':i';
chop( $PWD = `pwd` );
$ADMINDIR	=	$PWD . "/YLLAPITO";
$MIRRORDIR	=	$ADMINDIR . "/peili";
$MIRRORFILE	=	$MIRRORDIR . "/testi";
# data file contains hosts:ids:passwords
$DATAFILE	=	$MIRRORDIR . "/datafile";

if ( ! -d $ADMINDIR )
{
	die "no ADMINDIR: $ADMINDIR";
}

@filelist = `find . -name "*$NEWPOSTFIX" -print`;
#	Grep out unwanted files.
@filelist = grep(!/PEOPLE\/arl/,@filelist);

@datainfo = ();
open( DATAFILE, "<" . $DATAFILE );
while ( <DATAFILE> )
{
	chop;
	push( @datainfo, $_ );
}
close( DATAFILE );

open( MIRRORFILE, ">" . $MIRRORFILE );
print MIRRORFILE "#\n";
print MIRRORFILE "#\tMirror file automatically generated by\n";
print MIRRORFILE "#\t~arl/bin/build_ftp_tree.pl Version $VERSION\n";
print MIRRORFILE "#\n";
print MIRRORFILE "#\t@ arl // 1992\n";
print MIRRORFILE "#\n\n";
print MIRRORFILE "package=defaults\n";
print MIRRORFILE "\tremote_password=linux-adm@nic.funet.fi\n";
print MIRRORFILE "\tget_newer=yes\n";
print MIRRORFILE "\tget_size_change=yes\n";
print MIRRORFILE "\n";

foreach (@filelist)
{
	chop;
	s/.\///;

#	open it.
	$filename = $_;
	open( HANDLEFILE, "<" . $_ ) || die "can't open $_";

	print MIRRORFILE "package=$_\n";
	while (<HANDLEFILE>)
	{
		chop;
		if ( /^MIRROR-FROM:/ )
		{
			s/^MIRROR-FROM://;
#			s/^\t*|^ *//;
			s/^[\t ]*//;
			($site,$remotedir) = split(/[:]/);
			print MIRRORFILE "\tsite=", $site, "\n";
			print MIRRORFILE "\tremote_dir=", $remotedir, "\n";
			($localdir,$dummy) = split(/:/,$filename,2);
			print MIRRORFILE "\tlocal_dir=", $PWD,
				"/", $localdir, "\n";
			print MIRRORFILE "\tmail_to=linux-adm\n";
#
#	Fix this kludge as cleaner later
#
			print "X";
			foreach (@datainfo)
			{
				($dsite,$duser,$dpass) = split(/:/);
				if ( $site eq $dsite )
				{
					print MIRRORFILE "\tremote_user=",
						$duser, "\n";
					print MIRRORFILE "\tremote_password=",
						$dpass, "\n";
					last;
				}
			}
#
#	Should be configurable!!!
#
			print MIRRORFILE "\tuser=arl\n";
		}
		elsif ( /^COMMENT:/ )
		{
			s/^COMMENT://;
			s/^\t*|^ *//;
			print MIRRORFILE "\tcomment=", $_, "\n";
		}
		elsif ( /^EXCLUDE:/ )
		{
			s/^EXCLUDE://;
			s/^\t*|^ *//;
			print MIRRORFILE "\texclude_patt=", $_, "\n";
		}
	}

	print MIRRORFILE "\n";

	close( HANDLEFILE );
}

close( MIRRORFILE );

print "\n";

# EOF
