Last modified July 20, 1998

So what is this WebRSH thing and what is it good for?

The short answer is: WebRSH is a flexible and extensible general purpose web-based computing shell, designed to run as a CGI program and to provide a command line interface, file manager, text editor, and a few other basic things while being highly configurable and adaptable to various tasks.

Here is a much longer answer, that also puts WebRSH in the context of other available programs:

WebRSH is somewhat similar to programs of a type known as "site managers." These are usually CGI programs aimed at providing users with a web-based interface to manage their website space. They typically include a simple file manager along with a form-based text editor. Links to some site managers are provided here . While WebRSH can be effectively used as a site manager its scope is much wider than that. It is intended to provide a general purpose computing shell, and, roughly speaking, its features are a superset of what typical site managers do. Some of the key differences between WebRSH and typical site managers are:

  1. WebRSH provides an interface to executing programs on the remote host. It has a command line interface as well as the ability to generate links that actually run programs. In particular, it provides the capability to execute programs on a remote host by clicking a a link or a bookmark (think of starting an xterm session on a remote host by clicking a browser bookmark).
  2. Site managers are typically restricted to the web space of the server on which they run. They present a directory tree structure that corresponds to the server's URI's, and rely on the web server itself for file retrieval. WebRSH, on the other hand, presents the native file system structure of the underlying operating system and does its own file retrieval (using its own MIME table, etc.). Its access capabilities are restricted only by the security mechanisms of the underlying operating system (and because of that it must be run in the appropriate security context of the user running it).
  3. WebRSH lacks some features that some site managers have and that are useful specifically for managing web content. For example, it does not provide a special interface for creating certain special kinds of files (like CGI scripts that get created with executable permissions). This sort of functionality is always available from the command line, but users must be somewhat more sophisticated to utilize it.

Another type of programs to which WebRSH is related are web-based administration tools. From Netscape's administration server to webmin to linuxconf the usefulness and popularity of such tools for remote server administration is clear. Such tools typically provide a form based interface to the administration of specific services or portions of the operating system. In some cases, they also provide the capability to edit directly certain configuration files. But what if you want to edit a configuration file that these tools don't know about? To save a backup copy of an existing configuration? To import a previously saved configuration? To find out who is running netscape by typing "ps auxw | grep netscape" rather than having to extract this information from a long list?

This is where WebRSH comes into the web-based administration picture. By providing a general purpose command line and file manager at your fingertips, it complements specialized configuration tools and can be used in conjunction with such tools to achieve a complete web-based administration solution. In fact, WebRSH can be easily integrated with many existing administration tools. Here are some specific examples:

  1. WebRSH can be easily integrated with webmin as a webmin module which utilizes webmin's own built in server and is called from webmin's main index page.
  2. Netscape's administration server is, in fact, a CGI compliant web server obtaining its functionality by running CGI programs. By putting copies of WebRSH and some of its files in appropriate locations (and maybe also adding appropriate links to it in some of the admin server's pages) it can become easily accessible directly from this administration server.

In fact, by using WebRSH's Frames Interface, WebRSH can become the main portal for web-based administration of a system. Links to various administration tools can be inserted to its main menu (the main menu of the frames interface is simply an html page with a bit of JavaScript, and it can be easily edited and customized), and these tools can then be run in its main frame, such that the command line interface and the main menu itself are kept readily available. Furthermore, WebRSH provides a plugin API that should make it easy to integrate self-contained CGI programs (or programs that take advantage of some portions of WebRSH itself) into it, without changing a single line of code in WebRSH itself. Thus, WebRSH can be a starting point to creating a more complete administration system. Another important aspect is the capability of WebRSH to start other programs alongside the fact that as a CGI program it need not involve running an independent server. As long as an appropriate web server is running, programs such as a VNC server, webmin, or even inetd can be installed and started with WebRSH only when needed. This can help to utilize such programs when needed, while avoiding the resource consumption and potential security risks involved in keeping them constantly running.


Who can use WebRSH?

  1. Anyone with a user account on a UNIX system along with the privilege of running CGI programs in his own security context can install it and use it as a way of accessing the system. (Note that we do not encourage doing that in the event that whoever owns the said system objects to such usage.)

  2. System administrators can make a system-wide installation of WebRSH to provide their users with web-based access to the system.

  3. Anyone needing to remotely administer UNIX or Win32 servers, can use WebRSH as an aid, possibly integrating it with other web-based administration tools.

  4. Anyone having a networked computer can use WebRSH as a way of providing himself (or others) remote access to it.


What are WebRSH's main design principles and future goals?

The main goal for WebRSH at the moment is to be good at what it is (a general purpose computing shell), while attempting to maximize compatibility (with operating systems, servers, and browsers), performance, configurability, and adaptability. Being a CGI program means that it should be easy to incorporate WebRSH as a plugin (or module) of other programs, and being implemented in Perl makes it easy to modify and adapt to various tasks. At the same time, WebRSH provides its own plugin API which enables other CGI programs to be integrated with it.

There are virtually no limits on how far the general concept of a "web-based computing shell" can be carried. It is possible to combine CGI, Java, JavaScript, etc., to produce a fairly extensive computing environment, as well as applications to run in it. Indeed, this may be a direction some portions of the computing world are moving to, and, in a sense, WebRSH fits into that paradigm if you think of programs written to be WebRSH plugins as "applications" written for its API. To the most part, however, such things are beyond the scope of WebRSH, which is focused on providing a solid basic shell that can be effectively operated from virtually any web browser and over low bandwidth network connections.

The following more specific guidelines effect WebRSH's design: While WebRSH uses some JavaScript code and has an optional interface that utilizes frames, the use of such "advanced" technologies is:

  1. Restricted to the minimum necessary to provide functionality that can't be obtained otherwise.
  2. Done to provide some extra functionality or desirable behavior without introducing any incompatibilities with browsers that do not support these features.
Most of WebRSH is HTML 2.0 compliant, at least in the sense that it should work properly with any HTML 2.0 compliant web browser. One exception to this rule is support for form-based file uploading which is either provided by a browser or is not. Other than that, however, all that is needed is support for basic HTML, forms, and tables. WebRSH should be compatible with pure text browsers and minimal browsers designed to run on PDA's and such. In more practical terms: currently 100% of WebRSH's functionality can be obtained using Netscape Navigator 2.0 (or later), and essentially everything other than file uploading should work well with Lynx. The Frames Interface is, in fact, implemented as a WebRSH plugin. The support in the core WebRSH code needed to enable it takes no more than a few lines of code, and even that is in the form of fairly general hooks that are also useful for other things.


How can I help the WebRSH project?

Help can include general feedback, bug reports, fixes, feature requests, reports on success or failure of using WebRSH in settings where its usability status is not yet known, etc. It can also be more substantial and include implementing portions of WebRSH that are still missing, improving the existing documentation, writing CGI plugins that add to WebRSH's functionality, and porting WebRSH to operating systems on which it does not yet work (or providing "missing pieces" like pslib-*.pl scripts for operating systems where some of WebRSH's functionality is absent). More generally, if you think something is missing, please drop me a note . If you are also willing to do something about it, that's even better.

Note that while WebRSH is basically a simple program, making it robust and reliable across many operating systems, web servers, and browsers isn't so trivial. Furthermore, WebRSH can be extended to cover more grounds as a system administration tool, as well as to become a first class site manager. This seems worthwhile since its core is more robust than any free site manager that I know of, and while webmin is growing into an impressive system administration tool, it is not free software. However, all this is not likely to happen if WebRSH's development remains the doing of a single person: My access to operating systems is restricted to Win32, Linux, and (to a lesser extent) Solaris, I don't run an ISP or anything of the sort--so my real world experience in using WebRSH is limited, and, of course, my time is also limited.



Related Sites

Here is a random collection of links to programs that may be of interest to people that are interested in WebRSH.

back to the main WebRSH page


You are visitor number to this page since July 20, 1998