< BACKMake Note | BookmarkCONTINUE >
152015024128143245168232148039199167010047123209178152124239215162148047091216156219053001

Third-Party Internet Applications

Some completely developed Web applications, written in Python, are available for general use. You don't need to do any programming to use them. You just have to install, configure, and use them.

Grail Web Browser

Grail is a free Web browser written entirely in Python, using the Tkinter GUI (Tk, which is a free UI toolkit developed by John Ousterhout). Grail has the capability to manipulate SGML, HTML, URL's, images, and sound. Besides, it is easily extended to offer new functionality.

Being written in Python helps Grail to have a high adhesion to the Python language. Something similar happens to HotJava, which is a browser written entirely in Java.

For documentation and downloads, check out the following sites:

http://grail.python.org and http://grail.cnri.reston.va.us/grail/

Grail should run on any UNIX system to which Python and Tk have been ported—that is, almost all UNIX systems supporting X11. In particular, Grail is one of the few Web browsers that supports Solaris for Intel x86 processors. It now also runs on Windows and Macintosh because there are now stable ports of Tk to those platforms (you need a lot of RAM though). Grail supports the protocols and file formats commonly found on the World Wide Web, such as HTTP, FTP, and HTML. However, it is easily extended to support new protocols or file formats. Grail is distributed by CNRI in source form, free of charge (without warranties), and can be freely redistributed (within reason). Grail has not been worked on for a while, and doesn't support any of the latest standards you might expect in a browser.

Grail's design tries to provide a plug-in architecture, which allows the browser to easily support applets written in Python. Grail lets you download Python programs that execute inside Grail on your local machine. These little applications, which are called applets can do things such as display animations, interact with the user in new ways, even create additional menus that pop up dialogs if you like. Grail applets run in a restricted execution environment, so broken or malicious applets (Trojan Horses) can't erase your files or crash your computer.

Grail's Web site has an applet demo collection that you can explore.

Grail has many positive qualities, such as support to full HTML 2.0, including images, forms and image maps, as well as many HTML 3.2 features. It uses asynchronous document transfer and supports printing and saving documents, searching, bookmarks, history, and more. It also supports frames, file upload in forms, support for JPEG, TIFF, and XBM images, image printing, and tables (within the limitations of the Tk toolkit). It has preference panels, an I/O status display, a remote control interface, and many other nice features.

Apart from running applets, Grail is extensible in other areas, by writing so-called Grail plug-in modules. Grail plug-ins can be written for a number of new implementations, such as protocols (for example, CNRI's handle protocol), file formats (for example, for handling JPEG or sound directly), HTML tags (for example, tables), and preference panels. Check out the following site for more information:

Grail—The Browser For The Rest Of Us (DRAFT), by Guido van Rossum

http://grail.cnri.reston.va.us/grail/info/papers/restofus.html

Zope Web Application Server

The Z Object Publishing Environment, also known as Zope, is an open source object publishing system for the Web, developed by a company called Digital Creations. Zope is a complete dynamic Web site management Web platform used for building high-performance, dynamic Web sites. Essentially, it is a very complete framework for building Web applications, written in Python.

Check out the following sites for details:

http://www.digicool.com and http://www.zope.org

Zope is the leading Open Source Web-application server. Zope enables teams to collaborate in the creation and management of dynamic Web-based business applications such as intranets and portals. It also makes it easy to build features such as site search, news, personalization, and e-commerce into your Web applications.

Zope is a long running process, has a sophisticated authentication/authorization model, and has a useful SQL related product called ZSQLMethod, which provides an easy way to access a database from the Web application.

The following link is a technical introduction to object publishing with Zope. The document introduces Zope's object publishing facilities and shows you how to write and publish your own objects in Python. It has an excellent tutorial on integrating a Python module with the Zope ORB, Templates and Object Database.

http://www.zope.org/Members/Amos/WhatIsObjectPublishing

All requests made to the application server are mapped to Python objects. Therefore, whenever you make a call to a URL, as demonstrated in the following line of code

http://host/path/to/object?name1=value1&name2=value2

The server internally calls an object passing the pairs (name, value) as arguments.

Zope is not monolithic. Instead, it is composed of parts which can be deployed standalone with your own Python code support; for example, the Object Request Broker, HTML Templates (DTML) and the Object Database (ZOBD, Z Object Database, which stores Python objects) can all be abstracted from the mix.

Zope's templates are somehow similar to IIS ASP files. However, instead of being associated to Web pages, they are associated to Python objects.

You don't need to use Apache (PyApache/Httpdapy) in conjunction with Zope. In fact, Zope comes with a fast Web server of its own, which supports multiple protocols. On the other hand, it can also work with other Web servers as well. Most users do put Apache in front of Zope for reasons of flexibility. Because Zope is a long running process, they implement Persistent CGI, FastCGI, or ProxyPass.

If you need to find Web Hosting companies that support Zope, this might help: http://www.zope.org/Resources/ZSP.

Mailman—GNU Mailing List Manager

Mailman is a Web integrated mailing list manager that helps manage email discussion lists, much like Majordomo and Smartmail. Unlike most similar products, Mailman gives each mailing list a Web page, and allows users to subscribe, unsubscribe, and so on, over the Web. Even the list manager can administer his list entirely from the Web. Both users and system administrator can do almost everything through an Internet connection. Mailman also integrates most things people want to do with mailing lists, including archiving, mail-to-news gateways, and so on.

Mailing lists are great for meeting people and sharing common interests. Within Mailman, each mailing list has its own page that makes it much simpler to use. Each mailing list's Web page has an extensive Web-based user interface that is customizable on a per-list basis. This allows users to manage their own subscriptions, with support for temporarily disabling their accounts, selecting digest modes, hiding their email addresses from other members, and so on.

All Mailman actions—including subscription requests, list administration, and management reports—can be performed either through a Web interface or more traditional textual commands.

In order to use Mailman, you will need the following:

  • A Web server that supports CGI scripts, such as Apache

  • An SMTP daemon (also known as mail transfer agents, MTAs, or mail servers), such as Sendmail, Qmail, or Postfix

  • Python 1.5 or newer

Mailman currently doesn't work on Windows. Instead, it runs on most UNIX-like systems. It is also compatible with most Web servers, browsers, and most SMTP servers. Actually, the only thing Mailman really requires of the mail server is the ability to setup aliases that execute commands.

Mailman is written primary in Python (in approximately 13,000 lines) with a few modules written in C (600 lines) for improved security (the C parts are the wrappers that handle securely changing to the correct permissions). Mailman exposes Python as an extension language that allows for customization of Mailman's interfaces.

In case you need to build Mailman from the source, it is necessary to have in hand: the GNU-make utility, an ANSI C Compiler, such as gcc, and Python 1.5 or higher.

Mailman is brought to you by the Mailman Cabal, which is currently composed of the following core developers: Barry Warsaw, Harald Meland, Ken Manheimer, Scott Cotton, and John Viega. Mailman was originally written by John Viega. Mailman is free software. It is distributed under the GNU General Public License.

The following lists some of the main features implemented by Mailman:

  • Automatic Web-based, hypermail-style archiving, including provisions for private archives.

  • Integrated gatewaying to and from Usenet.

  • Smart bounce handling by using the Delivery Status Notification (DSN), which is described in RFC 1894. This feature enables automatic disposition (that is, configurable disabling, unsubscribing).

  • Flexible and direct SMTP delivery of messages, including integrated fast bulk mailing.

  • Smart spam protection.

  • Multiple list owners and moderators are possible.

  • Supports RFC934 and MIME digest delivery.

  • Support for virtual domains.

  • Mail-based administrative commands.

  • A Web-based list administration interface for all administrative-type tasks, including list configuration, moderation (post approvals), selection of posting and subscribing rules, management of user accounts via the Web, and so on.

Among other responsibilities, Mailman keeps track of the mailing lists of all python.org activities, including the Python Special Interest Groups (Python SIGs).

As a practical matter, you'll need root access on your host to configure Mailman properly. Most open source products can be generated and initially tested by ordinary UNIX users. Some organizations have a policy that requires this. With Mailman, though, you'll at least need to create a new account and group (the default for both is "mailman") for Mailman's use.

Mailman, of course, powers the Python-list, which is a general discussion list for the Python programming language. You can see it working at

http://www.python.org/mailman/listinfo/python-list

Also check out the Mailman home page:

http://www.gnu.org/software/mailman/mailman.html

More information is also available at: http://www.list.org

Christopher Kolar has made Mailman documentation available, primarily for list owners who aren't necessarily technical, but who own Mailman mailing lists. The GNU Mailman Documentation can be found at the following site:

http://www.aurora.edu/~ckolar/mailman/

Medusa Internet Server

Medusa is a Web server application that can be embeddable into a Python program, offering high-performance for HTTP, FTP, and other IP services. Medusa was written entirely in Python by Sam Rushing.

Medusa provides an Internet server framework for implementing asynchronous socket-based servers—TCP/IP, and on UNIX, UNIX domain sockets. The first release includes HTTP, FTP, and monitor servers. Medusa can simultaneously support several instances of either the same or different server types. For example, you could start up two HTTP servers, an FTP server, and a monitor server. Then you could connect to the monitor server to control and manipulate Medusa while it is running, entering and evaluating Python expressions (basically, a remote Python interpreter capability).

Out of the box, Medusa can run an unlimited number of HTTP and FTP servers within a single address space, without the use of threads. Capable of impressive hit rates, this server can solve your performance problems while handing you the most powerful server-side scripting language available.

Because Medusa is written entirely in Python, it is portable to any platform that implements the socket and select modules correctly. It has been tested on several UNIX platforms, Windows NT, and Windows 95.

Medusa is an elegant and efficient solution to a difficult programming problem. Medusa's core async-socket library is very stable because it has been in use virtually unchanged since 1995.

Medusa is an architecture for building long-running, very high-performance TCP/IP network servers (such as HTTP, FTP, and NNTP) in Python. Medusa is different from most other servers because it runs as a single process, multiplexing I/O with its various client and server connections within a single process/thread.

Medusa is in use now in several mission-critical applications, ranging from custom Web servers at extremely high-traffic sites to distributed data processing systems.

As Medusa is written in Python, it can be extended and modified at runtime, even by the end user. User scripts can be used to completely change the behavior of the server, and even add in completely new server types.

Note

According to http://www.nightmare.com/medusa/license.html, Medusa is now Free Software under the same license as Python, so you don't need a commercial use license.



For more details, check out the following site:

http://www.nightmare.com/medusa/


Last updated on 1/30/2002
Python Developer's Handbook, © 2002 Sams Publishing

< BACKMake Note | BookmarkCONTINUE >

Index terms contained in this section

applets
applications
      Grail 2nd
      Internet, third-party 2nd 3rd 4th 5th 6th 7th 8th
      Mailman 2nd 3rd 4th
      Medusa Internet Server 2nd
      Z Object Publishing Environment (Zope) 2nd
      ZSQLMethod
browsers
      Grail 2nd
Cotton, Scott
Delivery Status Notification (DSN)
development
     Web
            third-party applications 2nd 3rd 4th 5th 6th 7th 8th
Digital Creations
DSN (Delivery Status Notification)
GNU Mailing List Manager (Mailman) 2nd 3rd 4th
Grail 2nd
Internet
     development for
            third-party applications 2nd 3rd 4th 5th 6th 7th 8th
Kolar, Christopher
lists
     mailing
            Mailman
mailing lists
      Mailman
Mailman 2nd 3rd 4th
Mailman Cabal
Manheimer, Ken
Medusa Internet Server 2nd
Meland, Harald
modules
      select
      socket
programs
      Grail 2nd
      Internet, third-party 2nd 3rd 4th 5th 6th 7th 8th
      Mailman 2nd 3rd 4th
      Medusa Internet Server 2nd
      Z Object Publishing Environment (Zope) 2nd
      ZSQLMethod
Rushing, Sam
select module
socket module
software
      Grail 2nd
      Internet, third-party 2nd 3rd 4th 5th 6th 7th 8th
      Mailman 2nd 3rd 4th
      Medusa Internet Server 2nd
      Z Object Publishing Environment (Zope) 2nd
      ZSQLMethod
third-party Internet applications 2nd 3rd 4th 5th 6th 7th 8th
Trojan Horses
Viega, John
Warsaw, Barry
World Wide Web
     development for
            third-party applications 2nd 3rd 4th 5th 6th 7th 8th
Z Object Publishing Environment (Zope) 2nd
Zope (Z Object Publishing Environment) 2nd
ZSQLMethod

© 2002, O'Reilly & Associates, Inc.