From jh@ATHENA.MIT.EDU Thu Nov 30 18:24:33 1989
Date: Thu, 30 Nov 89 17:57:29 -0500
From: Joe Harrington <jh@ATHENA.MIT.EDU>
To: kkkken@ATHENA.MIT.EDU
In-Reply-To: kkkken@ATHENA.MIT.EDU's message of Thu, 30 Nov 89 16:33:23 -0500 <8911302133.AA06644@WILLIAM-GIBSON.MIT.EDU>
Subject: @sys
Cc: jh@ATHENA.MIT.EDU
Reply-To: jh@ATHENA.MIT.EDU

I assume it works that way for any afs directory (i.e. that @sys gives
you "vaxbin" "rtbin" or "decmipsbin")?

Back to appts, whether to use mail, write, zephyr, a combination of
them, or intelligence (write or zephyr if logged in, else mail) should
be user-specifiable both per-item (I want to get mail notification on
calendar-like items, but zephyr notice of when to leave) and a
per-session basis.  I suggest some internal variables (settable from
the dotfile, of course) for the per-session stuff, overrideable per-item:

mail-address:	where to send mail, default $USER without a machine
	name (so if someone off of athena uses it, it goes to the
	local host)
notify-method:	should be the name of a program to run, with options.
	default: zwrite -i appointment $USER
locate-method:	like above
	default: zlocate $USER >& /dev/null
mail-method:	like above
	default: /usr/ucb/mail -s "appointment" $mail-address
method-to-use:	either "mail" or "notify" or "intelligence"
	default: intelligence
	mail:	uses the mail-method
	notify:	uses the notify-method
	intelligence: if locate-method exits with status 0, use
		notify-method, else use mail-method

This is completely general, I think.  Don't forget to make the
defaults part of the system-wide .appts file (which the daemon reads
on startup...I'll get to that in a moment), so that they're changeable
without recompiling.

The appdaemon should be runnable in two modes: per-user and
system-wide.  This lets you have a campus-wide appts service which the
sipb could support (replacing the lost calendar service).  You
need to make a few changes to the appdaemon:

The daemon should look at an internet port (which you'll have to get
assigned by telecomm).  The port number should be a command-line
argument and settable from within.  This lets it act as a net-wide
server.  For details on how to do this, ask bjaspan or jtkohl or
wesommer.  Don't use zephyr, or it won't work for people outside of
MIT.  Or you could have an option to do it either way.

It should have a command line argument to read a system-wide default
file.  This is where you set the system default variables (which the
daemon then uses to send messages to anyone who hasn't set her own),
the internet port number, and any other command-line-type arguments
(basically, anything from the command line including the name of
another file to read should be specifiable from this file).

It must keep track of who sent it what.  This probably means putting
an extra field in whatever structure you use for keeping track of
data.  Also, you should put in kerberos authentication of the user
as a command line and file option, so that if it's desired by
whoever's running the daemon, people get authenticated before they can
put in requests (so people don't set it to send bogus messages to
other people).  You'll have to get a srvtab from telecomm.

Appts should listen to a different internet port (or zephyr instance,
but please at least have the internet port as an option) to get
replies to commands like ls.  Users should also be able to specify
mail or notify on commands like ls.

There are probably many other things to think of to make it a general
network service (which it should be).  Talk to bjaspan or jtkohl or
wesommer for more ideas.

--jh--

