Fredrik Tolf wrote:
Essentially, a state machine where you must send GUID first and then
DESC is like this context engine, only that it has even more contexts
and even more implicit changes. Therefore, I think this is clearer,
more flexible, and also allows for human input error when eg. typing
in a Telnet session. Also, since all contexts are named, that gives a
very strict definition of the protocol - there can be no doubts
anywhere about when you should/could send what.
At least that is the idea I had behind it.
Instead of sending contexts forth and backward, isn't is just simplier
to have a strict order to send the commands? And/or more specific reply
messages instead of `ACPT' for every kind of command :/
> Yeah, I know the context concept is a bit heavy, but I think that it's
> a good idea, nonetheless. That way, it will always be very clearly
> defined which commands are valid.
Why bother? If the command isn't valid just reply with a message that
he/she are not authorized to use it (you gotta have such a message
anyways) And if you mean to disable the function to send the command at
all from the client, the client could aswell `detect' if it has been
given operator status.
If you use context, use binary flags instead of string names - you can
save alot of bandwidth - instead of 18 bytes ("base,main,operator") you
have just 2 bytes (in a text protocol, 1 byte if we can cheat) (using
table described below).
base 0
identify 1
auth 2
main 4
operator 8
base|main|operator = 12
And last, about adding more operator `levels' - dont! I can only see the
usage of adding a `voice' (vip), and a global operator level if channel
support are going to be supported.
Adding too many of userlevels in the protocol don't allow much of the
customization that is available to DC today regarding user modes/access.
/Carl-Adam