python-rwhoisd is a simple RWhois server (see RFC 2167) written in python.

It uses in-memory data structures, and it intuits the schema based on the data it sees. The server takes as input a schema file which just describes which attributes should be indexed (and how), and data files which are similar to the C rwhoisd's data files.

This version supports a sort of extended query syntax: IP or CIDR queries ending in "**" will result in a "subnet" search, where all of the found subnets at or below the specified network will be returned. Ending a IP or CIDR query with a single "*" will result in a "supernet" search, returning all the networks enclosing the queried network. (A plain network query will return the closest enclosing network, including matching networks).

Because this is a simple RWhois server, it doesn't implement every possible feature. In particular, it doesn't handle "-register" directives (which make it possible to add/modify data via the RWhois protocol itself). Right now, the only way to update the data served by a python-rwhoisd server is to edit the data files and restart.

As of version 0.4.1, it should be possible to run python-rwhoisd on Windows. There is no special support for doing so, but it should run from the command line. Enhancements to make this a bit more Windows-friendly are welcomed.

This software is licensed under the GPLv2.

The Software


This project is open source, and contributions are welcome. There are two basic ways to contribute changes to this project.

  1. Send patches. Please send them to
  2. Set up a git repository that I can pull from.

Comments? Discussion?

Comments may be sent directly to me (), although more general discussion should occur on the mailing list.