<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card id="index" title="Text File" newcontext="true">
<p>
Received: with ECARTIS (v1.0.0; list gopher);
 Tue, 26 Mar 2002 13:03:56 -0500 (EST)
Return-Path: &lt;jgoerzen@complete.org&gt;
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 &lt;gopher@complete.org&gt;; 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 &lt;gopher@complete.org&gt;; 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 &lt;jgoerzen@complete.org&gt;
To: gopher@complete.org
Content-Transfer-Encoding: 8bit
Message-Id: &lt;D67E3B4D-40E3-11D6-863F-0003930BF072@complete.org&gt;
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: &lt;mailto:ecartis@complete.org?Subject=help&gt;
List-unsubscribe: &lt;mailto:gopher-request@complete.org?Subject=unsubscribe&gt;
List-software: Ecartis version 1.0.0
List-ID: Gopher &lt;gopher.complete.org&gt;
X-List-ID: Gopher &lt;gopher.complete.org&gt;
List-subscribe: &lt;mailto:gopher-request@complete.org?Subject=subscribe&gt;
List-owner: &lt;mailto:jgoerzen@complete.org&gt;
List-post: &lt;mailto:gopher@complete.org&gt;
List-archive: &lt;http://www.complete.org/mailinglists/archives/&gt;
X-list: gopher
</p>
<p></p>
<p>Hi,
</p>
<p>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 :-)
</p>
<p>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!)
</p>
<p>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.
</p>
<p>pygopherd uses a mime.types file and Python&#x27;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 -&gt; g, image/.* -&gt; I).
</p>
<p>It should also be fairly easy to make pygopherd speak HTTP (on the same
port as gopher!) and any other gopher-related protocols.
</p>
<p>Please download and try it out.  Let me know any thoughts.  There are no
docs right now.
</p>
<p>gopher://quux.org/1/devel/gopher/Downloads
http://quux.org/give-me-gopher/
</p>
<p>-- John
</p>
<p></p>
</card>
</wml>
