  			 Wardialer for Unix 
                         ------------------
                                Shok

	Serial programming for U. Well Unix is known for its special
device files. The modem is just a special file you can open(), read(), and
write() to...for that reason this program can be used on all unix systems.
The functions are all primitive or POSIX. The only thing different that
you would really need/want to change, would be the:

#define MODEMPORT "/dev/modem"

and make a softlink from your modem serial file to "/dev/modem"
(known as a COM in MSDOS/Windows), because most unix operating systems have
their own modem serial file. For example /dev/ttyS? which is COM1, would be
/dev/ttym? in IRIX. 

See teh README for more details.

	Now once this program opens the modem (via serial/special file) 
for reading/writing, it will write() to it, and send it standard modem 
instructions like +++ATH, ATZ etc....this comes before any dialing to get 
the modem ready....I used two functions for error checking: One to check
for "OK" (checkok()), and the other to make sure we wrote all the bytes
we were expecting to (check_for_error(), pardon the name :)
that all is well. You send the modem "\r" to finish a command.

	If you look through the code...you'll see I seperated their jobs 
into functions. Such as open_port(), init_modem(), dial_number(),
hangup(), etc.I used ScanMin++ to increase the number for sequential
scanning...it compared itself to ScanMax to make sure it wasn't done etc.
It read()'s from the modem, and checks for "CONNECT", if it is found, a
few variables are set, and it is logged. That's about all there is to say.
I commented a lot of the source, so I suggest you look through it, you
shouldn't have any problem understanding it.

   That's about all there really is to say about the technical stuff about
it. I included comments all over the source...so you would want to look at 
that. I used ANSI color codes to make it look more user friendly I suppose.
I will add a gui sometime in the future.

	When it connects, it looks for the string "CONNECT" returned from
the modem serial file. You won't get this message from faxes as you will
only get this message when the connection is complete, so this will only
return *** CONNECT *** if it was a modem. It will both output to the
screen and logfile *** CONNECT *** to 1-xxx-xxx-xxxx. You can use local or
long distance, although international numbers haven't been added at this
time (not hard to do just didn't care to add an extra scanf and an extra
CountryCode variable ;) 

About ShokDial
--------------

	This supports random scanning (pseudorandom to be honest, heh) and
sequential (the range you specified and up) scanning. You can give it a
range too but that still does under sequential scanning. To use random
scanning use 'shokdial -r', otherwise it will by default use sequential
scanning. For the other options type 'shokdial -h'. You want to keep track
of the version because I'd almsot guarntee this program is going to
continue changing. I need to add some ncurses GUI effects (heh) and a
function to resume scanning for those of you who are too lazy to even look
at the (by default) wardialer.log and get the last number it dialed
(assuming you used sequential scanning) and entering that as the Scan
number to begin on! 

	It will output to wardialer.log if no config file is specified, 
but you can specify the logfile with -L, or change:
#define LOGFILE "wardial.log", to change the default. If you define BEEP
in the Makefile, it will beep when it connects to a carrier. That's about
all I really have to say about it. I don't actually use war dialers
(really), so I haven't actually tested this (sorry if there are any
problems but there shouldn't be). If you do however find a problem, please
let me know! I will fix it and send out a patched version. You can get all
of them from http://www.w00w00.org. Enjoy ;)

	If the -d (daemon mode) option is given, it will run in the
background, so you could go about doing other things. It will still log to
the screen with -d however, it is just writing to /dev/tty.

	The -c (config file) option causes ShokDial to read from a
configuration file. This can have any format and will not be checked to
allow you to use multiple formats and various strings use as
"5551234,,,,1,#" for pagers.

	The -S (stdin) option causes ShokDial to read numbers from stdin
until it receives a "." on an empty line. 
	
	The -s and -l options work together. Use -s to specify you wish to
send a string to the carrier, and the -l specifies that you want to read
the response from the server. These will also be logged to the log file.

  	 	        Shok, shok@dataforce.net

http://www.w00w00.org
