#!/usr/bin/perl

# $Id: mkctl,v 1.3 1997/11/23 23:47:22 crosser Exp $
#
# $Log: mkctl,v $
# Revision 1.3  1997/11/23 23:47:22  crosser
# add comment
#

# Make control files for fido7 gateway
# Copyright (c) 1997 Eugene G. Crosser

open(LALIAS,">Aliases.local");
open(RALIAS,">Aliases.remote");
open(AREAS,">Areas");
open(LGROUPS,">Newsgroups.local");
open(RGROUPS,">Newsgroups.remote");

while (<>) {
	next if (/^#/);
	chop;
	($tag,$aname,$moderator,$desc)=split(/:/);
	if ($desc) {
		$desc="Fidonet ".$aname." - ".$desc;
	} else {
		$desc="Fidonet ".$aname;
	}
	$uname="";
	foreach $el(split(/\./,$aname)) {
		next if ($el eq 'ALL');
		if ($el=~/^[0-9-]*$/) {
			if ($el=~/^50[0-9]{2}$/) {
				print "numeric: \"$el\" -> \"n$el\"\n";
				$el='n'.$el;
			} else {
				print "numeric: \"$el\" -> \"f$el\"\n";
				$el='f'.$el;
			}
		}
		if (length($el) > 14) {
			print "truncated: \"$el\" -> \"",
				substr($el,0,14),
				"\"\n";
			$el=substr($el,0,14);
		}
		$el=~ tr/[A-Z]/[a-z]/;
		$el=~ s/[^0-9a-z]/-/g unless (($tag eq 'u') || ($tag eq 'x'));
		$el=~ s/^-*//;
		$el=~ s/-*$//;
		$el=~ s/--*/-/g;
		$uname.=$el.'.';
	}
	chop($uname);

	#if (($tag ne 'u') && (($len=length($uname)-13) > 0)) {
	#	print "too long: \"$uname\" ($len)";
	#	for ($i=0;$i<$len;$i++) {
	#		$uname=~s/[aeiouy]//;
	#	}
	#	$len=length($uname);
	#	print " converted: \"$uname\" ($len)\n";
	#}

	if ($tag eq 'u') {
		$prefix="";
		$dist='world';
	} elsif ($tag eq 'x') {
		$prefix="fido7";
		$dist='world';
	} elsif ($tag eq '+') {
		$prefix="fido7";
		$dist='fido7';
	} elsif ($tag eq '!') {
		$prefix="fido7";
		$dist='fido7';
	} elsif ($tag eq '?') {
		$prefix="fido7";
		$dist='fido7pvt';
	} elsif ($tag eq 'i') {
		$prefix="fidonet";
		$dist='world';
	} elsif ($tag eq '-') {
		$prefix="fido7sys";
		$dist='fido7sys';
	}
	$lalias=$ralias="";
	if ($moderator ne '-') {
		if ($prefix eq 'fido7') {
			$desc.=" (Moderated)";
			if ($tag eq '!') {
				$lalias="|\"/usr/local/lib/fido7/bounce\"";
			} elsif ($moderator) {
				$lalias=$moderator;
			} else {
				$lalias="|\"/usr/local/lib/fido7/moderator\"";
			}
			$ralias=$prefix.'-'.$uname;
			$ralias=~s/\./-/g;
			$ralias.='@fido7.ru';
		}
	}
	#print "$tag aname=$aname, uname=$prefix.$uname desc=$desc\n";
	if ($tag ne 'x') {
		if ($prefix) {
			print AREAS "$aname\t\t$prefix.$uname\t\t$dist\n";
		} else {
			print AREAS "$aname\t\t$uname\t\t$dist\n";
		}
	}
	$mname=$uname;
	$mname=~s/\./-/g;

	$len=40-length($prefix.'.'.$uname);
	$tabs="";
	while ($len > 0) {$len-=8; $tabs.="\t";}
	$alen=39-length($prefix.'.'.$uname);
	$atabs="";
	while ($alen > 0) {$alen-=8; $atabs.="\t";}

	print LALIAS "$prefix-$mname:$atabs$lalias\n" if ($lalias);
	print RALIAS "$prefix-$mname:$atabs$ralias\n" if ($ralias);
	print LGROUPS "$prefix.$uname$tabs$desc\n" if ($prefix);
	print RGROUPS "$prefix.$uname$tabs$desc\n" if ($prefix eq 'fido7');
}
