#!/usr/athena/bin/perl

sub main_menu {
system("clear");
print("Welcome To Interact Zephyr Subscription Service\n");
print "-" x 50;
print("\n");
print("1)  List subscriptions\n");
print("2)  Subscription sets\n");
print("3)  Reset and Add Subscriptions\n");
print("4)  Add Subscriptions\n");
print("5)  Znol\n");
print("0)  Exit\n");

print("\n\nzctl> ");
$input = <STDIN>;
}

sub ls_subs {
    system("clear");
    $ln=0;
    $retsubs = `zctl ret`;
    @zret = split(/\n/, $retsubs);
    foreach $_ (@zret) {
	@zs = split;
	if($zs[1] eq "login") {
	    @name = split(/\@/, $zs[3]);
	    $logins[$ln]=$name[0];
	    $ln++;
	}
	else
	{
	    print("$zs[1], $zs[3], $zs[5]\n");
	}
    }
    print("---\n");
    print("Logins for users:\n");
    foreach $lnum (1..$ln-1) {
	print("$logins[$lnum], ");
	$linecount++;
	if($linecount>=7) {
	    print"\n";
	    $linecount = 0;
	}
    }
    print("\n");
    print("---\n");
    print("Please Press Return to Continue\n");
$waste = <STDIN>;
}

sub subs_sets {
    system("clear");
    print("Subscription Sets\n");
    print("a)  OLC class, help instance, sipb instance, consult instance\n");
    print("b)  help instance, help.d instance\n");
    print("c)  white-magic instance\n");
    print("d)  Gentry class, sipb instance, lmf instance\n");
    print("e)  Discuss class, weather instance\n");
    print("f)  OLC class, Discuss class, Gentry class\n");
    print("g)  ***Everything***\n");
    print("\n\nPunt Sets\n");
    print("h)  help instance, white-magic instance\n");
    print("i)  white-magic instance, help.d instance\n");
    print("j)  weather instance, OLC class, Discuss Class\n");
    print("k)  login instance, logout instance\n");
    print("l)  simpsons instance, er-joke instance, boggle instance, hunt instance\n");

    print("\n\nzctl>  ");
    $_ = (<STDIN>);
    if(/a/){ push(addlist, 'olc \\* \\*', 'message help \\*', 
		  'message sipb \\*', 'message consult \\*'); }
    if(/b/){ push(addlist, 'message help \\*', 'message help.d \\*'); }
    if(/c/){ push(addlist, 'message white-magic \\*');}
    if(/d/){ push(addlist, 'gentry \\* \\*', 'message sipb \\*',
		  'message lmf \\*');}
    if(/e/){ push(addlist, 'discuss \\* \\*', 'message weather \*');}
    if(/f/){ push(addlist, 'discuss \\* \\*', 'gentry \\* \\*',
		  'olc \\* \\*');}
    if(/g/){ push(addlist, 'message \\* \\*');}
    if(/h/){ push(puntlist, 'message help \\*', 'message white-magic \\*');}
    if(/i/){ push(puntlist, 'message white-magic \\*', 'message help.d \\*');}
    if(/j/){ push(puntlist, 'message weather \\*', 'olc \\* \\*',
		  'discuss \\* \\*');}
    if(/k/){ push(puntlist, 'message login \\*', 'message logout \\*');}
    if(/l/){ push(puntlist, 'message simpsons \\*', 'message er-joke \\*',
		  'message boggle \\*', 'message hunt \\*');}
    foreach $item (@addlist)
    {
	system("zctl sub $item");
	print("Subscribing to $item\n");
    }
    foreach $item (@puntlist)
    {
	system("/afs/sipb/project/sipb/bin/zpunt $item");
    }
}
	     
    


sub dynamic_subs {
    system("clear");
    print("Add Subscriptions Menu\n\n");
    print("Class Message Instances\n");
    print("h)  help\n");
    print("w)  white-magic\n");
    print("d)  help.d\n");
    print("l)  lmf\n");
    print("r)  weather\n");
    print("s)  sipb\n");
    print("c)  consult\n");
    print("o)  other\n");
    print("-----------------\n");
    print("Other Classes\n");
    print("O)  Olc\n");
    print("D)  Discuss\n");
    print("M)  Mail Notify\n");
    print("\n\nzctl>  ");
    $subst = (<STDIN>);
    if($subst=~/h/) { system("zctl sub message help \\*"); 
		  print("Subscribing to message, help, *\n"); }
    if($subst=~/w/) { system("zctl sub message white-magic \\*"); 
		      print("Subscribing to message, white-magic, *\n");}
    if($subst=~/d/) { system("zctl sub message help.d \\*"); 
		      print("Subscribing to message, help.d, *\n");}
    if($subst=~/l/) { system("zctl sub message lmf \\*"); 
		      print("Subscribing to message, lmf, *\n");}
    if($subst=~/r/) { system("zctl sub message weather \\*"); 
		  print("Subscribing to message, weather, *\n");}
    if($subst=~/s/) { system("zctl sub message sipb \\*"); 
		      print("Subscribing to message, sipb, *\n");}
    if($subst=~/c/) { system("zctl sub message consult \\*"); 
		  print("Subscribing to message, consult, *\n");}
    if($subst=~/O/) { system("zctl sub olc \\* \\*"); }
    if($subst=~/D/) { system("zctl sub discuss \\* \\*"); }
    if($subst=~/M/) { system("zctl load ~/.mail.subs"); }
    if($subst=~/o/) { 
	while($con ne "n\n")
	{
	    print("Subscribe to: ");
	    $subto = (<STDIN>);
	    chop($subto);
	    system("zctl sub message $subto \\*");
	    print("Subscribing to    message, $subto, *\n");
	    print("Another? (y/n)  ");
	    $con = (<STDIN>);
	}
    }
}

# -----  Main program -----

while(TRUE)
{
    do main_menu();
    if($input==1)
    {
	do ls_subs();
    }
    if ($input==2)
    {
	do subs_sets();
    }
    if ($input==3)
    {
	print("\n\nPunting...\n");
	system("zctl cancel");
	do dynamic_subs();
    }
    if($input==4)
    {
	do dynamic_subs();
    }
    if($input==5)
    {
	system("clear");
	system("znol");
	print("Please Press Return to Continue\n");
	$waste = <STDIN>;
    }
    if($input==0)
    {
	exit(0);
    }
}
    
