Received: with ECARTIS (v1.0.0; list gopher); Tue, 26 Mar 2002 13:03:56 -0500 (EST) Return-Path: Delivered-To: gopher@complete.org Received: from christoph.complete.org (unknown [168.215.193.254]) by pi.glockenspiel.complete.org (Postfix) with ESMTP id 4C1E83B80B for ; Tue, 26 Mar 2002 13:03:56 -0500 (EST) Received: from localhost (localhost [127.0.0.1]) by christoph.complete.org (Postfix) with ESMTP id A268F5A439 for ; Tue, 26 Mar 2002 13:03:55 -0500 (EST) Date: Tue, 26 Mar 2002 13:03:55 -0500 Mime-Version: 1.0 (Apple Message framework v481) Content-type: text/plain; charset=US-ASCII Subject: [gopher] ANN: pygopherd modular gopher server From: John Goerzen To: gopher@complete.org Content-Transfer-Encoding: 8bit Message-Id: X-Mailer: Apple Mail (2.481) X-archive-position: 534 X-ecartis-version: Ecartis v1.0.0 Sender: gopher-bounce@complete.org Errors-to: gopher-bounce@complete.org X-original-sender: jgoerzen@complete.org Precedence: bulk Reply-to: gopher@complete.org List-help: List-unsubscribe: List-software: Ecartis version 1.0.0 List-ID: Gopher X-List-ID: Gopher List-subscribe: List-owner: List-post: List-archive: X-list: gopher Hi, In an effort to do some testing with new gopher protocols and idea, I created pygopherd. Rapid prototyping is much better done with a Python framework than a UMN C-based one :-) pygopherd right now contains protocol modules for standard gopher (rfc1436.py) and Gopher+ (gopherp.py). Thanks to the modular architecture and significant framework, rfc1436.py is implemented in 17 lines of code and gopherp.py in 59 (including comments!) pygopherd also has modular handlers. At the moment, only file.py and dir.py are defined. I expect to add modules to handle UMN-format .Links files. pygopherd uses a mime.types file and Python's mimetypes module for all type-related operations. It achieves fill MIME type results in a far more complete and accurate fashion than UMN gopherd. Due to its GopherEntry object architecture, it has no need to prepend the file type to the selector string like UMN gopherd does. RFC1436 single-character types are generated based on a simple mimetype regexp mapping (ie, image/gif -> g, image/.* -> I). It should also be fairly easy to make pygopherd speak HTTP (on the same port as gopher!) and any other gopher-related protocols. Please download and try it out. Let me know any thoughts. There are no docs right now. gopher://quux.org/1/devel/gopher/Downloads http://quux.org/give-me-gopher/ -- John