Tables for INN Administration
M.C. Widerkrantz <mc@hack.org>
2004-02-03 (10)

Data is stored to be rather easily readable into C without wasting too
much space on padding. All items are stored as NUL separated strings
of characters.

* Data types

  String: A series of NUL terminated Latin 1 characters, one per
  octet.

  Integer: A subseries of NUL terminated Latin 1 characters, one per
  octet, from the set of characters [0-9]. The integer is between [-,
  and x].

  Username: String(16)

  Groupname: String(256)

  Time: Integer

  Message-ID: String(256)

  URL: String(512)

  Address: String(256)

* newsusers.db - one user per record

    username: Username
    {
      password: String(30)
      fullname: String(64)
      address: Address
      currgroup: Groupname      ; currently selected group
      online_since: Time        ; UNIX type date & time.
      last_online: Time         ; d:o
      total_time: Time          ; d:o
      written_arts: Integer	; total posted articles on this server
      read_arts: Integer	; total read articles on this server
      description: Message-ID   ; message-id of article containing a text
      faceurl: URL              ; URL to file? Or keyword saying that there is
                                ; Face: header?
    }

* newsgroups.db - one newsgroup per record

    groupname: Groupname
    {
      creator: Username
      moderator: Address
      expire: Integer          ; number of days, 0 for forever.
      flags: Integer           ; secret | acl
      title: String(80)       ; one line description of this newsgroup
      description: Message-ID ; message-id of long description
    }

  flags are:

  secret: The newsgroup is not visible at all if you are not already a
          member/in the access control list.

  acl: Use access control list to determine access rights.

* acl/groupname

    address: Address
    {
       access: Integer   ; read | post | approve | external
    }

If the external flag is set, we export articles by mail to the address
given.

* import.db

   address: Address
   {
      newsgroup: Groupname
   }
