IE's Finger  V0.98
by Imagination's End
(C)1995 Imagination's End
The End Productions
Spotware

[Introduction]

ALMOSTFREEWARE -- If you like this program you have to send me
email saying you like it in order to continue using it.
Otherwise may my wrath forever haunt your computer.  Also send
me suggestions and comments.  See end of file for my address.
This ALMOSTFREEWARE state may disappear with Version 1.

I hope you remembered to download all the DLLs this requires
(those are the Borland 4.02 DLLs, probably bor402.zip)

I changed the Write file back to a TXT file because MS got
rid of Write in Windows95 and I refuse to use Word Pad and create
DOC or RTF files at this time.

[Contents]

[Manual Usage]
[Batch]
[INI Settings]
[DNS Lookup]
[Finger Daemon]
[Planned Improvements / Additions]
[Known Bugs & Limitations]
[History]
[Credits]


[Manual Usage]

Type the sitename, or user@site in the edit box beside the
go button then press enter or press the go button.  A little
while later the information will be retrieved.  While doing
the finger request a little status box will appear at the
bottom portion of the screen.  The Box can be in one of four
states:

Resolving Hostname           (Eye Icon)
Connecting to Host           (Finger connecting to hand Icon)
Receiving Information        (Blood Transfusion Icon)
Unknown state... be worried or reduce the number of connections.

To cancel a request just click on the status box.

[Batch]

To use a batch request type all the line that you would normally
type into the edit box into a standard text file.  One address
per line. Choose the batch option, select the batch file and select
the output file.

If possible use IP addresses in your batch file instead of site
names because it will greatly increase performance.

[INI settings]
Not all the INI settings are listed here.  If they aren't listed
it basically means you aren't meant to change it manually. In the
32-bit version these entries reside in the Registry for the current
user.

File: IEFINGER.INI
Section: [SETUP]
	TIMEOUT=n         n specifies the seconds to wait for a connection
	TOTALTIMEOUT=n    n specifies the total time to wait to receive data
	MAXSOCKS=n        n specifies the maximum number of connections to
							have.  Multiples of 3 look nice.
	DELAY=n           n specifies number of seconds to guarantee delay
							between socket destruction and creation
	NOBUFDELAY=n      n seconds to wait upon No Buffer Space error
	STAGGER=n         n Time ticks (currently 250ms) to stagger requests by
	VIEWER=program    program is the name of hte external viewer to use
	DAEMON=1/0        1 = Load Finger Daemon
							0 = Don't load finger daemon
	AUTORESP=1/0      1 = Do automatic Finger responses
							2 = Don't do autoresponses
Section: [Finger Daemon]
Section: [DNS Lookup]

[DNS Lookup]
This looks up names associated with the specified range of IPs.  This
is here becuase I lost a bet.  But the bet never stated anything about
documentation, so...

[Finger Daemon]
The finger daemon is quite simple right now.  It responds to requests
on the finger port by sending back files.

default.fng  The default file to send back (when no name is specified)
badreq.fng   The file that is sent back when the user isn't found.
username.fng The file sent back when a particular username is fingered.

Tag Expansion

The .fng files should be a standard text file, NL or CRLF to finish
line.  A CRLF combo will be sent back if requested wtih CRLF or a NL
sent back if requested with NL.

Tags will be filled in as follows:

1. Format Specifiers

%[*,&][[-,+,|]x]token

The field will be as wide as specified by x.
+  Indicates right align padding with 0's
-  Indicates left align padding with spaces
|  Indicates centering aligning padding with spaces
The default alignment is right aligning
*  converts the field to uppercase letters
&  converts the field to lowercase letters

2. Token Expansion

	Miscellaneous
%%    Literal %
%e    Request to Daemon (quite often the same as %r)
%h    Hostname
%i    IP of request
%k    Task manager
%l    colon  :
%n    Computer Name (32-Bit)
%q    quotes "
%r    Requested user
%s    Shell program
%u    Current User name (32-Bit)
%v    IE's Finger Version x.xx?
%x    Turn off tag expansion (only effective tag is %X)
%X    Turn on tag expansion
%z    Expands to nothing

	Current Date & Time
%d?   Current Day #
%dw      Week day
%dm      Month day
%dy      Year day
%m    Current Month #
%y    Current Year #
%D?   Current Day Name
%Ds      Current Day Name (short)
%Dl      Current Day Name (long)
%M?   Current Month Name
%Ms      Current Month Name (short)
%Ml      Current Month Name (long)
%c?   Tags to express current time
%cs      Second Portion
%cm      Minute Portion
%ch      Hour Portion
%cd      Daylights savings (DST or STD)
%acd? Current Day #
%acdw    Week day
%acdm    Month day
%acdy    Year day
%acm  Current Month #
%acy  Current Year #
%acD? Current Day Name
%acDs    Current Day Name (short)
%acDl    Current Day Name (long)
%acM? Current Month Name
%acMs    Current Month Name (short)
%acMl    Current Month Name (long)
%acc? Tags to express current time
%accs    Second Portion
%accm    Minute Portion
%acch    Hour Portion
%accd    Daylights savings (DST or STD)

	Windows Date & Time
%t?   Tags to express time since windows started
%tu      Millisecond portion
%ts      Second Portion
%tm      Minute Portion
%th      Hour Portion
%td      Day Portion
%aw?  Windows Started at:
%awd?    Day #
%awdw       Week day
%awdm       Month day
%awdy       Year day
%awm     Month #
%awy     Year #
%awD?    Day Name
%awDs       Day Name (short)
%awDl       Day Name (long)
%awM?    Month Name
%awMs       Month Name (short)
%awMl       Month Name (long)
%awc?    Tags to express time
%awcs       Second Portion
%awcm       Minute Portion
%awch       Hour Portion

	Finger Date & Time
%f?   Tags to express time since finger daemon started
%fu      Millisecond portion
%fs      Second Portion
%fm      Minute Portion
%fh      Hour Portion
%fd      Day Portion
%af?  IE's Finger Started at:
%afd?    Day #
%afdw       Week day
%afdm       Month day
%afdy       Year day
%afm     Month #
%afy     Year #
%afD?    Day Name
%afDs       Day Name (short)
%afDl       Day Name (long)
%afM?    Month Name
%afMs       Month Name (short)
%afMl       Month Name (long)
%afc?    Tags to express time
%afcs       Second Portion
%afcm       Minute Portion
%afch       Hour Portion

	Windows Information
%w    Windows information
%wv      Windows version x.xx
%wi      Screensaver timeout
%wt      How many WM_TIMER messages have been sent to IE's Finger

	Escape Sequences
\     Does not interpret the next line-break
\\    Literal \
\a    Audio Bell
\e    Escape Character
\f    Formfeed
\i..!	Include another file (ex. \ihenry.fng!)
\n    Untranslated LF
\r    Untranslated CR
\t    Tab
\u..! Include another file but don't translate.
\xxx  A decimal character specification, requires 3 digits

3. Conditional Expansion

%?condition:true:false:       (Simple version)
%?condition:"true"false"      (Allows embedded conditions)

If condition is true formats whatever is declared as true,
otherwise evaluates to false. The true and false fields may
be empty.

Conditions:
	CRLF           Has it been requested in CRLF mode? (RFC for Finger
						states this as the correct mode)
	FINGDAYS       Has the daemon been running for a day yet?
	FINGHOURS      Has the daemon been running for an hour yet?
	WINDAYS        Has Windows been running for a day yet?
	RANDxxx        Random result with xxx% success.
	SCREENSAVERACTIVE   Is the screensaver active?
	VERBOSE        Is verbose mode on?

[Planned Improvements / Additions]
32-Bit version is being worked on.  I'm just working out some bugs
right now.  It should be out shortly.  Unlike a lot of other win32
programs this one actually uses the registry to allow different
setups for different users.  I'm also trying to incorporate specific
win32 extensions to it.

Fixing of bugs.

Expanded and more versatile Finger Daemon.

[Known Bugs & Limitations]

Doesn't Auto Respond.
PROBLEM: This will usually occur if you are doing a batch request
and you connect to yourself.  What happens is that there is not
enough requests left that a new one can be started, so it simply
discards it.

The connection just stops while receiving data.
PROBLEM: Unknown, I am unable to reproduce this problem.

The maximum number of questions is just over 100.
This varies from system to system.  The only reason there is this
limit is because of the way Windows decides to handle messages.
But 100 should be sufficient.  In the 32-bit version this is not
a limit -- however I don't have a winsock that can handle it, and
by this point the lower requests will start finishing before you
can send off a hundred or so, unless your computer is REALLY fast.

CANNOT OPEN FILE -- FIXED
It should no longer happen.  If it does, well, it just shouldn't.  Almost everything is done in memory and if this error does occur your system is going to crash soon anyways...

NO BUFFER SPACE AVAILABLE -- FIXED (Well, sort of...)
This is quite a common error that results from too many connections in
too little of a time frame.  You options to rid yourself of this problem
are:
	1. Increase the number of IP buffers in your Winsock implementation*
	2. Reduce the maximum number of connections. (DEFAULT: 6)
	3. Increase the delay between requests. (DEFAULT: 0)
	4. Reduce the length of the batch files.

*TRUMPET USERS:  Go into the trumpwsk.ini file and increase the ip-buffers
entry.  I don't know how much memory it uses, but I have mine set to 512,
which is overkill.
*Windows 95 USERS:  If you are using the standard TCP/IP Protocol then
it looks like you are out of luck... as far I can tell you can't change
the number of IP buffers, and the number is quite low...


[History]
	19950318 Original program creation from Ver0.0 to Ver0.7
	V0.5     Original program
	V0.6     Added ability to use IP addresses
	V0.7     Changed status bar and made combo box for entries
	19950324
	V0.8     Changed code to allow simultaneous finger request
				Made a configure dialog box
				Improved output display of batch requests
	19950325
	V0.81    More control over request timing
				View batch results (Internal/External)
	19950328
	V0.82    Dynamic allocation, allows around 100 simultaneous connections
				New status window.
	19950401
	V2.65    Unlimited finger requests
				Automatic chat with users, finger daemon greatly enhanced,
				automatic fingering of those who finger you, DNS lookup --
				both ARP and DNS, nameserver friendly.
				Improved Interface: Full speech control
				Have a good April Fool's day...
	V0.90    Batch DNS lookup
				Basic Finger Daemon
	19950408
	V0.95    Cosmetic Improvements
				Finger Daemon tag expansion
	V0.951   Bug fixes [Daemon tag \\, Iconic Save Pos]
				Additional tags for Daemon
	V0.96    Internal changes -- No more out of file errors
				Changed everything to streams
	V0.97    Conditional tag expansion and more tags
	19950506
	V0.98    Various things, like adding this history line :)
				Automatic Daemon Response

[Credits]

Presented By:
Spotware

Production:
The End Productions

Designer/Programmer/Director/Producer:
Imagination's End
stlauren@cadvision.com

Testing:
Clinton Work
