[a daffodil]
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
  1. Overview
    1. 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.

    2. Who is developing gicqd?


  2. Compilation, Configuration and Installation
    1. 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.

    2. 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.

    3. 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.


  3. Using gicqd
    1. 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.

    2. 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.

    3. 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. :)

    4. I can't get my ICQ 99a/98 client to connect to gicqd?
        See above.


  4. User Manipulation (adding, removing, etc...)
    1. 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.

    2. 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.

    3. 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.

    4. 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."

    5. 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.


  5. Help!?!
    1. 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.

    2. 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 |