Author: dylan
Date: 2004-08-09 00:48:32 -0400 (Mon, 09 Aug 2004)
New Revision: 344
Added:
trunk/docs/manual/chap/commands/
trunk/docs/manual/chap/commands/client.tex
Modified:
trunk/docs/manual/Makefile
trunk/docs/manual/chap/commands.tex
trunk/docs/manual/config.m4
trunk/docs/manual/haver.tex
Log:
Split the commands chapter, the client
section is over 200 lines.
Modified: trunk/docs/manual/Makefile
===================================================================
--- trunk/docs/manual/Makefile 2004-08-08 22:49:49 UTC (rev 343)
+++ trunk/docs/manual/Makefile 2004-08-09 04:48:32 UTC (rev 344)
@@ -1,17 +1,21 @@
+# Comment to produce non-DRAFT.
DRAFT=1
+VERSION=0.5
-
clean=-name '*.aux' \
-or -name '*.log' \
-or -name '*.bbl' \
-or -name '*.blg' \
-or -name '*.toc' \
+ -or -name '*.out' \
-or -name 'config.tex'
base=haver
tex=$(wildcard chap/*.tex) $(filter-out haver.tex,$(wildcard *.tex)) haver.bib
config.m4
+ARGS += -D VERSION=$(VERSION)
+
ifdef DRAFT
ARGS += -f DRAFT
endif
@@ -24,10 +28,8 @@
@echo "Probably you want to run make pdf or make dvi or make html"
-dvi: $(base).dvi
-
-pdf: $(base).pdf
-
+dvi: $(base).dvi
+pdf: $(base).pdf
html: $(base)/$(base).html
Added: trunk/docs/manual/chap/commands/client.tex
===================================================================
--- trunk/docs/manual/chap/commands/client.tex 2004-08-08 22:49:49 UTC (rev
343)
+++ trunk/docs/manual/chap/commands/client.tex 2004-08-09 04:48:32 UTC (rev
344)
@@ -0,0 +1,248 @@
+\section{Client Commands}
+\label{commands.client}
+
+This section describes the commands that clients may send to the server.
+
+Each command may result in the server sending one or more commands to the
client,
+though the protocol is asynchronous and this may not be relied on.
+In the listings below the possible results of each command is explained under
+the ``\Res'' entry. Keep in mind this may not exhaustive.
+
+In addition to the listed results, nearly every client command may result in
+the server sending the \scmd{FAIL} command. An ``\Err'' listing
+shows the possible (not exhaustive) error types that may result.
+See Section~\ref{commands.server} for details on \scmd{FAIL}.
+Section~\ref{commands.errors} describes errors in more detail.
+
+\begin{commands}
+ \begin{cmddef}{HAVER}{\param{client}}
+ \citem{\Desc}
+ This command may only be sent once during
+ the liftetime the connection.
+
+ A client will send this command when it
+ first connects to the server. The argument
\param{client}
+ should be the name and version num\-ber of the user
agent.
+
+ \citem{\Res}
+ The server will send \scmd{HAVER} and \scmd{WANT}.
+
+ \citem{\Err} None.
+ \end{cmddef}
+
+ \begin{cmddef}{IDENT}{\param{id} \opt{ns}}
+ \citem{\Desc}
+ A client may only send this when it the server
+ requests it with \scmd{WANT}.
+
+ Login as \param{id} in namespace \param{ns},
+ where \param{ns} is optional and defaults to ``user''.
+
+ \citem{\Res}
+ \scmd{ACCEPT} will be sent if \param{id} requires
+ no authorization. If authorization is required,
+ the server will request (\scmd{WANT}) \cmd{AUTH}.
+
+ \citem{\Err}
+ \begin{errors}
+ \eitem{unsupported.ns}{ns}
+ \eitem{reserved}{id}
+ \eitem{used}{id}
+ \end{errors}
+ \end{cmddef}
+
+ \begin{cmddef}{AUTH}{\param{method}}
+ \citem{\Desc}
+ A client may only send this when it the server
+ requests it with \scmd{WANT}.
+
+ Ask the server to use the ``\param{method}''
+ method of authorization.
+
+ \citem{\Res}
+ The server will \scmd{WANT} \cmd{AUTH:\param{method}}
+ where \param{method} is replaced by the actual method
requested.
+
+ \citem{\Err}
+ \begin{errors}
+ \eitem{badmethod}{method}
+ \end{errors}
+ \end{cmddef}
+
+ \begin{cmddef}{AUTH:PASS}{\param{password}}
+ \citem{\Desc}
+ A client may only send this when it the server
+ requests it with \scmd{WANT}.
+
+ This is the authorization command for password-based
authentication.
+ The password, \param{password} will be the SHA-1 sum of
+ the user's password, their id, and the hostname of the
server.
+
+ \citem{\Res}
+ \scmd{ACCEPT}.
+
+ \citem{\Err}
+ \begin{errors}
+ \eitem{nomatch}{~}
+ \end{errors}
+ \end{cmddef}
+
+ \newpage
+ \begin{cmddef}{MSG}{\param{where} \param{type} \params{msg}}
+ \citem{\Desc}
+ This command may only be used by user clients.
+
+ Send a public message \params{msg}\ of type \param{type}
+ to the channel \param{where}.
+
+ \citem{\Res}
+ The server will send \scmd{MSG} to every user in
\param{where}.
+
+ \citem{\Err}
+ \begin{errors}
+ \eitem{syntax.cid}{where}
+ \eitem{unknown.cid}{where}
+ \end{errors}
+ \end{cmddef}
+
+ \begin{cmddef}{PMSG}{\param{to} \param{type} \params{msg}}
+ \citem{\Desc}
+ This command may only be used by user clients.
+
+ Send a private message \params{msg}\ of type
\param{type}
+ to the user \param{to}.
+
+ \citem{\Res}
+ The user \param{to} will recieve \scmd{PMSG},
+ the sender recieves nothing (Unless there is an error).
+
+ \citem{\Err}
+ \begin{errors}
+ \eitem{syntax.uid}{to}
+ \eitem{unknown.uid}{to}
+ \end{errors}
+ \end{cmddef}
+
+ \begin{cmddef}{JOIN}{\param{where}}
+ \citem{\Desc}
+ This command may only be used by user clients.
+
+ Attempt to join \param{where}.
+
+ \citem{\Res}
+ Upon successful entry, the server will send
+ \scmd{JOIN} to each user in the channel, including the
joiner.
+
+ \comment{There should be some support for passworded
channels,
+ and channels that maintain a wait-list.}
+
+ \citem{\Err}
+ \begin{errors}
+ \eitem{syntax.cid}{where}
+ \eitem{unknown.cid}{where}
+ \eitem{joined}{where}
+ \end{errors}
+ \comment{Further errors will be added for when people
are banned, etc.}
+ \end{cmddef}
+
+ \begin{cmddef}{PART}{\param{where}}
+ \citem{\Desc}
+ This command may only be used by user clients.
+
+ Attempt to leave \param{where}.
+
+ \citem{\Res}
+ The server will send \scmd{PART}
+ to every user in the channel \emph{before} the user
+ actually leaves the channel. Thus the parter will get
his
+ own part message.
+
+ \citem{\Err}
+ \begin{errors}
+ \eitem{syntax.cid}{where}
+ \eitem{unknown.cid}{where}
+ \eitem{timetravel}{where}
+ \end{errors}
+ \end{cmddef}
+
+ \begin{cmddef}{BYE}{\opt{reason}}
+ \citem{\Desc}
+ Part every channel and disconnect from the server.
+
+ \citem{\Res}
+ The server will send \scmd{BYE}
+ and disconnect shortly after that.
+
+ The server will send \scmd{QUIT} to any other clients
+ that need to be notified of this client's departure.
+
+ \citem{\Err} None.
+ \end{cmddef}
+
+ \begin{cmddef}{INFO}{\param{ns} \param{id}}
+ \citem{\Desc}
+ Get information about the in the namespace \param{ns}
with the id \param{id}.
+ This will only return the most ``relevant'' fields of
the object,
+ not all of them.
+
+ \citem{\Res}
+ The server will send \scmd{INFO}.
+
+ \citem{\Err}
+ \begin{errors}
+ \eitem{syntax.id}{ns id}
+ \eitem{syntax.ns}{ns}
+ \eitem{unknown.id}{ns id}
+ \eitem{unknown.ns}{ns}
+
+ \end{errors}
+ \end{cmddef}
+
+ \begin{cmddef}{LINFO}{\param{where} \param{ns} \param{id}}
+ \citem{\Desc}
+ This is like INFO, except local to a channel
\param{where},
+ the ``L'' standing for local. The only other
+ difference is \param{id} may be ``*'' (the asterisk),
+ in which case it is as if the client sent \cmd{LINFO}
+ requests to every \param{ns} in \param{where}.
+
+ \comment{Perhaps \param{ns} should be allowed to be
``*''
+ as well?}
+ \citem{\Res}
+ The server will send \scmd{LINFO}.
+
+ If \param{id} is ``*'', the server will
+ send \scmd{END} \cmd{LINFO} after all other
\scmd{LINFO}'s
+ have been sent.
+
+ \citem{\Err}
+ \begin{errors}
+ \eitem{syntax.cid}{where}
+ \eitem{unknown.cid}{where}
+ \eitem{syntax.ns}{ns}
+ \eitem{unknown.ns}{ns}
+ \eitem{syntax.id}{ns id}
+ \eitem{unknown.id}{ns id}
+ \end{errors}
+ \end{cmddef}
+
+ \begin{cmddef}{LIST}{\param{where} \param{ns}}
+ \citem{\Desc}
+ Request a list of all things in \param{where}
+ with the namespace \param{ns}.
+
+ \citem{\Res}
+ The server will send \scmd{LIST}.
+
+ \citem{\Err}
+ \begin{errors}
+ \eitem{syntax.cid}{where}
+ \eitem{syntax.ns}{ns}
+ \eitem{unknown.cid}{where}
+ \eitem{unknown.ns}{ns}
+ \end{errors}
+ \end{cmddef}
+
+
+\end{commands}
+
Modified: trunk/docs/manual/chap/commands.tex
===================================================================
--- trunk/docs/manual/chap/commands.tex 2004-08-08 22:49:49 UTC (rev 343)
+++ trunk/docs/manual/chap/commands.tex 2004-08-09 04:48:32 UTC (rev 344)
@@ -65,255 +65,8 @@
\end{description}
-\section{Client Commands}
-\label{commands.client}
+\input{chap/commands/client}
-This section describes the commands that clients may send to the server.
-
-Each command may result in the server sending one or more commands to the
client,
-though the protocol is asynchronous and this may not be relied on.
-In the listings below the possible results of each command is explained under
-the ``\Res'' entry. Keep in mind this may not exhaustive.
-
-In addition to the listed results, nearly every client command may result in
-the server sending the \scmd{FAIL} command. An ``\Err'' listing
-shows the possible (not exhaustive) error types that may result.
-See Section~\ref{commands.server} for details on \scmd{FAIL}.
-Section~\ref{commands.errors} describes errors in more detail.
-
-\begin{commands}
- \begin{cmddef}{HAVER}{\param{client}}
- \citem{\Desc}
- This command may only be sent once during
- the liftetime the connection.
-
- A client will send this command when it
- first connects to the server. The argument
\param{client}
- should be the name and version num\-ber of the user
agent.
-
- \citem{\Res}
- The server will send \scmd{HAVER} and \scmd{WANT}.
-
- \citem{\Err} None.
- \end{cmddef}
-
- \begin{cmddef}{IDENT}{\param{id} \opt{ns}}
- \citem{\Desc}
- A client may only send this when it the server
- requests it with \scmd{WANT}.
-
- Login as \param{id} in namespace \param{ns},
- where \param{ns} is optional and defaults to ``user''.
-
- \citem{\Res}
- \scmd{ACCEPT} will be sent if \param{id} requires
- no authorization. If authorization is required,
- the server will request (\scmd{WANT}) \cmd{AUTH}.
-
- \citem{\Err}
- \begin{errors}
- \eitem{unsupported.ns}{ns}
- \eitem{reserved}{id}
- \eitem{used}{id}
- \end{errors}
- \end{cmddef}
-
- \begin{cmddef}{AUTH}{\param{method}}
- \citem{\Desc}
- A client may only send this when it the server
- requests it with \scmd{WANT}.
-
- Ask the server to use the ``\param{method}''
- method of authorization.
-
- \citem{\Res}
- The server will \scmd{WANT} \cmd{AUTH:\param{method}}
- where \param{method} is replaced by the actual method
requested.
-
- \citem{\Err}
- \begin{errors}
- \eitem{badmethod}{method}
- \end{errors}
- \end{cmddef}
-
- \begin{cmddef}{AUTH:PASS}{\param{password}}
- \citem{\Desc}
- A client may only send this when it the server
- requests it with \scmd{WANT}.
-
- This is the authorization command for password-based
authentication.
- The password, \param{password} will be the SHA-1 sum of
- the user's password, their id, and the hostname of the
server.
-
- \citem{\Res}
- \scmd{ACCEPT}.
-
- \citem{\Err}
- \begin{errors}
- \eitem{nomatch}{~}
- \end{errors}
- \end{cmddef}
-
- \newpage
- \begin{cmddef}{MSG}{\param{where} \param{type} \params{msg}}
- \citem{\Desc}
- This command may only be used by user clients.
-
- Send a public message \params{msg}\ of type \param{type}
- to the channel \param{where}.
-
- \citem{\Res}
- The server will send \scmd{MSG} to every user in
\param{where}.
-
- \citem{\Err}
- \begin{errors}
- \eitem{syntax.cid}{where}
- \eitem{unknown.cid}{where}
- \end{errors}
- \end{cmddef}
-
- \begin{cmddef}{PMSG}{\param{to} \param{type} \params{msg}}
- \citem{\Desc}
- This command may only be used by user clients.
-
- Send a private message \params{msg}\ of type
\param{type}
- to the user \param{to}.
-
- \citem{\Res}
- The user \param{to} will recieve \scmd{PMSG},
- the sender recieves nothing (Unless there is an error).
-
- \citem{\Err}
- \begin{errors}
- \eitem{syntax.uid}{to}
- \eitem{unknown.uid}{to}
- \end{errors}
- \end{cmddef}
-
- \begin{cmddef}{JOIN}{\param{where}}
- \citem{\Desc}
- This command may only be used by user clients.
-
- Attempt to join \param{where}.
-
- \citem{\Res}
- Upon successful entry, the server will send
- \scmd{JOIN} to each user in the channel, including the
joiner.
-
- \comment{There should be some support for passworded
channels,
- and channels that maintain a wait-list.}
-
- \citem{\Err}
- \begin{errors}
- \eitem{syntax.cid}{where}
- \eitem{unknown.cid}{where}
- \eitem{joined}{where}
- \end{errors}
- \comment{Further errors will be added for when people
are banned, etc.}
- \end{cmddef}
-
- \begin{cmddef}{PART}{\param{where}}
- \citem{\Desc}
- This command may only be used by user clients.
-
- Attempt to leave \param{where}.
-
- \citem{\Res}
- The server will send \scmd{PART}
- to every user in the channel \emph{before} the user
- actually leaves the channel. Thus the parter will get
his
- own part message.
-
- \citem{\Err}
- \begin{errors}
- \eitem{syntax.cid}{where}
- \eitem{unknown.cid}{where}
- \eitem{timetravel}{where}
- \end{errors}
- \end{cmddef}
-
- \begin{cmddef}{BYE}{\opt{reason}}
- \citem{\Desc}
- Part every channel and disconnect from the server.
-
- \citem{\Res}
- The server will send \scmd{BYE}
- and disconnect shortly after that.
-
- The server will send \scmd{QUIT} to any other clients
- that need to be notified of this client's departure.
-
- \citem{\Err} None.
- \end{cmddef}
-
- \begin{cmddef}{INFO}{\param{ns} \param{id}}
- \citem{\Desc}
- Get information about the in the namespace \param{ns}
with the id \param{id}.
- This will only return the most ``relevant'' fields of
the object,
- not all of them.
-
- \citem{\Res}
- The server will send \scmd{INFO}.
-
- \citem{\Err}
- \begin{errors}
- \eitem{syntax.id}{ns id}
- \eitem{syntax.ns}{ns}
- \eitem{unknown.id}{ns id}
- \eitem{unknown.ns}{ns}
-
- \end{errors}
- \end{cmddef}
-
- \begin{cmddef}{LINFO}{\param{where} \param{ns} \param{id}}
- \citem{\Desc}
- This is like INFO, except local to a channel
\param{where},
- the ``L'' standing for local. The only other
- difference is \param{id} may be ``*'' (the asterisk),
- in which case it is as if the client sent \cmd{LINFO}
- requests to every \param{ns} in \param{where}.
-
- \comment{Perhaps \param{ns} should be allowed to be
``*''
- as well?}
- \citem{\Res}
- The server will send \scmd{LINFO}.
-
- \citem{\Err}
- \begin{errors}
- \eitem{syntax.cid}{where}
- \eitem{unknown.cid}{where}
- \eitem{syntax.ns}{ns}
- \eitem{unknown.ns}{ns}
- \eitem{syntax.id}{ns id}
- \eitem{unknown.id}{ns id}
- \end{errors}
- \end{cmddef}
-
-
-
-
-
-
-
-\end{commands}
-
-%> [INFO]
-%> C: INFO $id
-%> S: INFO $type $id (list of key value pairs)
-%> Errors:
-%> * unknown -- the id %1 of type %2 was not found.
-%> * syntax -- the id %1 of type %2 is invalid.
-%> [LINFO]
-%> C: LINFO $cid $uid
-%> S: LINFO $cid $uid (key-value pairs)
-%> Errors:
-%> * unknown.cid -- the cid %1 was not found.
-%> * unknown.uid -- the uid %1 was not found.
-%> * syntax.cid -- the cid %1 is invalid.
-%> * syntax.uid -- the uid %1 is invalid.
-
-
-
\section{Server Commands}
\label{commands.server}
To be written...
Modified: trunk/docs/manual/config.m4
===================================================================
--- trunk/docs/manual/config.m4 2004-08-08 22:49:49 UTC (rev 343)
+++ trunk/docs/manual/config.m4 2004-08-09 04:48:32 UTC (rev 344)
@@ -1,7 +1,13 @@
-define(`have', `dnl
-\newboolean{have$1}
-\setboolean{have$1}{ifdef(`$1', `true', `false')}')dnl
+dnl Edit the makefile if you want to configure this. :)
+ifdef(`have', , dnl
+`define(`have', `\newboolean{have$1}dnl
+\setboolean{have$1}{ifdef(`$1', `true', `false')}')')dnl
+ifdef(`version', , dnl
+`define(`version', ``\newcommand{\version}{$1}'')')
+
+
+version(VERSION)
have(`COLOR')
have(`DRAFT')
have(`PDF')
Modified: trunk/docs/manual/haver.tex
===================================================================
--- trunk/docs/manual/haver.tex 2004-08-08 22:49:49 UTC (rev 343)
+++ trunk/docs/manual/haver.tex 2004-08-09 04:48:32 UTC (rev 344)
@@ -12,7 +12,7 @@
\input{style}
-\title{The Divine Secrets of Haver}
+\title{The Divine Secrets of Haver (v\version)}
\author{Dylan William Hardison}
\date{\today}