![[a daffodil]](graphics/daffodil.gif)
GNU ICQ-compatible Server
daffodil \Daf"fo*dil\ n. : any of numerous
varieties of Narcissus plants having showy, often yellow,
flowers with a trumpet-shaped central crown. The flower
is often representative of vanity or pride and is given
on occassion of celebration.
Frequently Asked Questions - FAQ
- Overview
- What is gicqd?
The GNU ICQ-compatible Server, gicqd, is a portable, generic daemon
body that contains the ICQ protocol as pluggable functions. Our design,
while constructed on the ICQ protocol, can be used by anyone needing to
get a daemon process of any kind up and running with minimal effort.
Our goals for this server include extensibility, configurability,
localization, internationalization and, most importantly, freedom of
code.
- Who is developing gicqd?
The main developers/organizers of the project are
bishop and
m-poppa. There are also a
number of other contributers. For a list of people, see the
people page.
- Compilation, Configuration and
Installation
- I'm having trouble compiling/installing gicqd?
There are notes on how to install gicqd located on the
documents page. However, if you are
receiving funky error messages, please send an email to either
bishop or
m-poppa describing your
problem and including the error message and any pertainent information
from your error log.
- What type of database do I need to use with gicqd?
gicqd supports flat-file, GDBM/NDBM/DBM, and Berkeley DB databases as
of version 0.0.94b. When you do a "./configure," the script will
check to see if you have Berkeley DB, and then one of GDBM, NDBM and
DBM. You get flat-file databases for free, as we've implemented them
on top of your filesystem.
In order for a database to qualify as present, it must pass two or
three tests. First, the header file declaring the particular constants,
functions, etc. must be present (eg., "gdbm.h", etc). Second, the
open() function for the database must be locatable; this check is
performed by the configure script. Optionally, the third test that may
be performed is version checking.
- What database do you recommend?
We recommend using Berkeley DB as your database. This suggestion is
based on several underlying reasons, the most prominent being it's
just plain faster.
- Using gicqd
- How do I use gicqd?
There is a quick-start guide to using gicqd located on the
documents page. Additionally, we are in the
process of developing an extensive user's manual, so help is on the way.
- gicqd doesn't seem to be working and it's not giving me
any error messages?
First, configure gicqd with the debugging flag. I.e., "./configure
--with-debugging". By default, this will configure in full debug
output. You may have done "--with-debugging=N", where N is some number
between 0 and 6, inclusive. Zero (0) means restrict all but fatal
messages by default, while 6 means restrict nothing. Recompile.
With that done, you may start up the server and see all the pretty
debug messages. If you'd like, you may specify "-l N", where N is
also some number from 0 to 6, inclusive. Doing so will alter the
run-time behaviour with respect to logging of gicqd 0.0.94 and up.
If you specify an additional "c" after the number (e.g., "-l 6c") you
will get compact event lines, rather than the more expressive full ones.
- Why won't my client work? Something about "UNHANDLED"
messages?
These error messages mean one of two things; either we don't support
the feature at all (yet), or the version of the protocol your client is
using is too high. You can see if it is the latter by looking at the
message. If "vers=[5]" is there, then the problem is with the version.
If it's not, then we'll be getting in the feature soon. :)
- I can't get my ICQ 99a/98 client to connect to gicqd?
- User Manipulation (adding, removing,
etc...)
- How do I manipulate my users?
Tell them you're after their job, and then go talk to their boss.
Warning, this may be illegal in your country, state, province, territory,
homeland, etc; we do not endorse the activity.
- Seriously, how do I manipulate my users?
gicqd comes prepackaged with a utility to maniuplate the database called
dbtool. dbtool will work on any of the databases that gicqd
supports (see FAQ II.2. for a listing) and should be used to modify the
contents of the database.
- Why doesn't my client's "register new user" button work
with gicqd?
To register a new user, the client sends a request to gicqd to add the
new user. We have not implemented this feature yet, taking the approach
that for now it is more secure to have the gicqd admin be the only person
capable of adding users; s/he may do so through dbtool.
- How do I use dbtool?
First, have you tried dbtool --help? Assuming you have and you're
still asking this question, start by reading
the gicqd database theory white
paper.
Most users will only ever want to modify persistant databases, the paths
of which can be found in your configuration file. Knowing that, you
can do something like "dbtool userinfo /tmp/userinfo.db" to start
a modification session of the userinfo database stored in the file
/tmp/userinfo.db (or wherever your configuration file says it is).
Doing so, you'll see the dbtool prompt ">>". At the prompt,
type "help" for a list of options. In gicqd version 0.0.94 and above,
you may type "help <command>" where "command" is one of the
commands listed from plain ole' "help."
- dbtool built and all, but why is it not starting up, saying something about "error initializing database?"
Do you have the server running also? When the server starts up, it
obtains a read/write mode on the database. For some databases (such
as the recommended Berkeley DB), this is no problem; when the database
needs to be locked, it is done so internally. Other databases aren't
this smooth (such as GDBM), so a database can only be a writer or a
reader and there may only be one writer at a time.
We have considered putting in a fix for this, essentially by hacking
a reader/writer locking algorithm around the GDBM database calls. Putting
this in though will incur a performance decrease of approximately O(n^2)
for writing operations. If enough people complain, we'll put in the
kludge; otherwise, just shut your server down.
- Help!?!
- How can I help with the development of gicqd?
We'd love your help. There is a detailed description of how to volunteer
on the volunteer page.
- Is there a gicqd mailing list? If so, how do I
subscribe?
Yes, there is a gicqd mailing list. See our
mailing list page for instructions on
subscribing/unsubscribing.
| home |
people |
documents |
download |
FAQ |
screenshots |
links |