DictExpress

This is a dictionary protocol server implementation written in Python. I decided to write this stuff just to learn Python. The goal is to create a full-featured dictionary server, while making the retrieval of word definitions from any source and in any language easy. The server is usable and acts as a proper UNIX daemon.

General Info

This is not a program that does pretty much out-of-the-box, other than acting as a dictionary protocol server. What exists is a preliminary plugin-like system, so that a user can write some code in order to retrieve word definitions from any source. By default, no dictionaries/databases are included. I intend to include dictionary backends that retrieve word definitions from dict formatted text files or PostgreSQL/MySQL databases in future versions.

The README and dictdbs.py files contain all the needed information in order to author a dictionary backend that will work flawlessly with the server.

This program is released with absolutely no warranty, expressed or implied, and absolutely no support.

Keep in mind that this software is still in alpha stage of development and it should not be used in a production environment, as it has not been thoroughly tested.

Features

This server complies with the Dictionary Protocol Specification RFC-2229.

The features include:

  1. Multiple client connections.
  2. Command Pipelining.
  3. Logging to file with adjustable verbosity.
  4. Configuration file.
  5. Command line options (override configuration file options).
  6. Basic server statistics.
  7. Designed to work with international text with minimum configuration.
  8. Drops root privileges as soon as it is started and runs as a pre-defined user/group.
  9. A preliminary plugin-like system for easy dictionary backend implementation.

It should work with the majority of the DICT protocol clients.

Note that, because this server, through a proper dictionary backend, can send data to other sources, special care has been taken, so that client commands pass through many filters to ensure that an actual word is sent to the dictionary backends for the retrieval of definitions, ensuring, not only the proper use of this server, but also the proper use of any available dictionary backends and the sources they refer to.

The following commands are fully supported:

  • CLIENT
  • DEFINE
  • SHOW
  • STATUS
  • HELP
  • OPTION
  • QUIT

The following commands have not yet been implemented:

  • MATCH
  • AUTH
  • SASLAUTH

Although it is still at an early stage of development, it seems to work well.

As it was mentioned previously, this program is written in order to learn Python. The code is documented, so that I do not forget things ;-)

Installation, Configuration, Usage

This program is designed to work as a UNIX server. If it is started as root, it drops privileges and runs as a predefined user/group.

More info about the installation, configuration, usage of this program or about running it using your normal user account can be found in the Documentation or in the README file. For command-line help use the --help or -h flag.

License

The code is released under the GNU General Public License version 2 or later with absolutely no warranty, expressed or implied (without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE), and absolutely no support. In other words, if it blows your home, it would be your fault. If it does not work for you or if it does not work as you might have expected, please try to fix it yourself.

Download

All public versions are available from the SourceForge Page.

DictExpress by George Notaras is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
Copyright © 2006 - Some Rights Reserved