Short:    AmiTCP on-line Amiga tracking system
Author:   jfriesne@ucsd.edu (Jeremy Friesner)
Uploader: jfriesne@ucsd.edu (Jeremy Friesner)
Version:  1.1
Type:     comm/net
Replaces: comm/tcp/AmiTrack1.0
Requires: Workbench 2.04+, AmiTCP3.0b+

----------------------------------------------------------------
		
			AMITRACK V1.1
                     
                      (Released 6/28/96)
                     
----------------------------------------------------------------


INTRODUCTION
------------
What is AmiTrack?  Hmm, good question.

I was talking to an AmiPhone user a few weeks ago, and
he was lamenting that it was hard to find another AmiPhone
user who was online to talk to.  We decided what was needed
was a way to find out who else is available, sort of an
"Active Amiga registry".

So that's what AmiTrack does.  AmiTrack is an AmiTCP program
that acts as the keeper of a list of Amigas that are currently
on-line.  It isn't limited to just AmiPhone users, either; you
can register your Amiga to advertise any message string you want.

This archive contains two executables: AmiTrack and AmiTrackServer.
AmiTrack is a client that you can use to notify the world of your
Amiga's presence on the internet, and AmiTrackServer is useful if
you wish to let people use your Amiga as a registry site.  Both
utilities must be launched from the CLI.


INSTALLATION
------------
There isn't any, really.  Just copy the files to wherever you
want to keep them.


AMITRACK 
--------
The AmiTrack program is designed to connect to an Amiga running
the AmiTrackServer program.  While connected, it periodically
does two things:  it sends "ping" packets to the AmiTrackServer
to let it know that you're still there, and it downloads the
list of currently registered Amigas on that server, for your
viewing pleasure.  When you quit AmiTrack, you will be removed
from the server's list of Amigas.

AmiTrack understands the following command line arguments:

#1: The Internet host name of the Amiga that is running AmiTrackServer,
    that you wish to register with.  
    
#2: The comment string you wish to have associated with your Amiga.
    Make sure to put this string in "quotes" if there are any spaces
    in it.  This defaults to no comment.
    
#3: The port number on the server which you wish to connect to.
    This defaults to port 18945 (which by some bizarre coincidence,
    is also the default port for AmiTrackServer to accept connections
    on)
    
So, a valid AmiTrack command could be:

AmiTrack

or,

AmiTrack isys.ml.org "This is my comment" 5217

or anything in between.


AMITRACK GUI
------------
AmiTrack's GUI is fairly straightforward.  It consists of several
string gadgets, two buttons, and a ListView.  The Server, Port, and
Comment string gadgets are self-explanatory (I hope!).  The ListView
shows the IP addresses and comment strings of everyone logged in
to the server you are connected to.  This list may be updated by
clicking on the "Refresh" button, and will also be updated automatically
every few minutes, as indicated by the associated string gadget.
The "Ping" button causes your client to send a packet to the 
AmiTrackServer, in effect saying "I'm here!".  If the AmiTrackServer
does not hear from your client for about five minutes straight, it
will assume that you are no longer available and remove you from
its list.  Hence, it is probably a bad idea AmiTrack's ping interval
to more than five minutes.

Automatic refreshes and pings can be disabled by setting their
interval gadget to zero.

AmiTrack can be iconified via the Project menu.  Double clicking
on its icon will bring back its GUI.  It will continue to ping
the AmiTrackServer while it is iconified.


AMITRACKSERVER
--------------
The AmiTrackServer executable is designed to accept AmiTrack
client connections from all over the Internet and dole out
information about who else has connected to it recently.  Most
people won't need this program, but it's there anyway for those
who would like to run their own server.  AmiTrackServer has no
GUI, rather it sends only output to the CLI.  It will display
its list of registered Amigas to the CLI at regular intervals,
and whenever the list is modified.  The list displays the IP
name of each Amiga, its comment string, and the number of seconds
that have elapsed since the last "ping" was heard from that
Amiga.

AmiTrackServer takes one optional command line argument, the
port number upon which it is to accept connections.  This number
defaults to 18945.

AmiTrackServer will quit if sent a CTRL-C signal, and will
refresh its CLI output of its list if send a CTRL-D.


TECHNICAL
---------
AmiTrack tries to be as reliable and efficient as possible.
The AmiTrack server keeps a linked list of the currently
registered Amiga hostnames and their comment strings, as
well as a timestamp of last time those Amigas were heard from.
If an AmiTrack client has not sent a packet to the server
for a specified amount of time (currently five minutes),
it is liable to be removed from the registered list.  This
way, even if the client crashed and didn't send a disconnect
packet, its entry won't hang around forever.  To retrieve
the list of clients, AmiTrack opens a TCP connection to
the AmiTrack server, which immediately spits out a list of
IP numbers, names, and comment strings, and then closes the
connection.

AmiTrack is written in DICE C, but there shouldn't be anything
too compiler-dependant in it.


MANIFEST
--------
The following files should be in the AmiTrack archive:

********************


AUTHOR
------
This program was written by Jeremy Friesner, using DICE C.
My email address is jfriesne@ucsd.edu.


ACKNOWLEDGEMENTS
----------------
Thanks to Oliver Hotz for providing a full-time AmiTrack server site.
Thanks to AndyS and Gallant on #amiga for helping me debug & test.


DISTRIBUTION
------------
AmiTrack is fully in the public domain.  Do whatever you want with it.


BUGS
----
- Comments with leading spaces can mess up the client's field alignment.
  
- Sometimes after you exit the server, it can't be run again
  for a minute or so afterwards (it will error out, saying the
  TCP port is in use).  This usually happens if GetTrackList has
  been run on this server recently.  I think this is a "feature" 
  of BSD-based TCP software, though, as I've seen the same 
  thing happen on UNIX machines running other software.

- There ought to be a mechanism to ensure that you can't set the
  ping interval to be greater than the server's timeout interval.
  

TODO
----
- Make a UNIX version of the server, and perhaps the client
  as well.
  
- Add a way to automatically launch your favorite net program
  with a given hostname from the list as an argument.
  
- Add a "NO GUI" option for completely invisible background use.

- Make AmiTrack runnable from the Workbench.


OTHER STUFF
-----------
Some other programs I wrote:  (try them, they're cool! ;))

GadMget - Loads in an Aminet RECENT or INDEX file and lets you choose
          files to download via a pair of ListViews.  Features keyword
          searching and sorting by name, size, age, directory, and 
          description.  When you're done, it outputs the ftp commands
          that are needed to download the selected files.  The output
          formatting is extremely flexible, allowing generation of 
          many formats:  ftp, ncftp, ftp-by-mail, shell scripts, etc.
          Comes with an ARexx script to completely automate downloading 
          with ncFTP.  (util/misc/GadMget2.05.lha,93K)
  
AmiSlate - A paint program that works with AmiTCP to allow two people
           to cooperatively paint on the same drawing from different
           computers.  Features an extensive ARexx port which allows
           the construction of new features and games.  Comes with
           ARexx scripts for chess, tic-tac-toe, backgammon, and others.
           (comm/tcp/AmiSlate1.4.lha,115K)

AmiPhone - An Internet voice-chat program, similar to IPhone and
	   VoiceChat and Nevot and all that, only Amiga-specific.
	   Features aflexible buffering mechanism for slow connections,
	   an ARexx port, IFF 8SVX transmission and playback, internal
	   multitasking, and support for a variety of digitizers.
	   (comm/net/AmiPhone1.91.lha,142K)


HISTORY
-------
1.1 : (Public Release 6/28/96)
    - Separated the AmiTrack server and client into two separate
      programs, and integrated GetTrackList into the client.
    - Added a nice GUI to the client program.
    - The AmiTrack protocol has changed slightly--v1.1 is not quite
      compatible with v1.0.  Sorry!  :(
      
1.0 : (Public Release 6/7/96)
    - Initial release.  Works well for me, but untested in "real life".


============================= Archive contents =============================

Original  Packed Ratio    Date     Time    Name
-------- ------- ----- --------- --------  -------------
   20308   11080 45.4% 05-Jul-96 17:42:08 +AmiTrack
    8737    3833 56.1% 05-Jul-96 17:42:08 +AmiTrack.readme
   11856    7248 38.8% 05-Jul-96 17:42:08 +AmiTrackServer
   33682    9578 71.5% 05-Jul-96 17:42:06 +AmiTrack.c
    5938    2121 64.2% 05-Jul-96 17:42:06 +amitrackserver.c
   13974    4512 67.7% 05-Jul-96 17:42:06 +AmiTrackShared.c
    4098    1552 62.1% 05-Jul-96 17:42:06 +amitrackshared.h
    1155     310 73.1% 05-Jul-96 17:42:08 +dmakefile
-------- ------- ----- --------- --------
   99748   40234 59.6% 07-Jul-96 10:42:56   8 files
