What is Ethereal Realms?

 

Ethereal Realms is a concept web-based chat system, originally based on two chat sites which are now both defunct. This system emulates what features and functionality those sites possessed while adding to the initial design and scope as time progressed.  Over time the code base has picked up message boards, internal messaging, image/prose galleries and a social network interface.

 
Released under the GNU General Public License[1] (GPL), this project also has the secondary aim of creating an advanced role-play and gallery environment that will can be shared and modified freely throughout the community.

Ethereal Realms has also moved well beyond the original mandate of offering chat capabilities. This includes the addition of threaded message boards, web polls, homepage management, collaborative galleries and social networking profiles with geographical searching. While these additions are not necessarily core to the role-play aspect of the site, they do compliment the existing feature set and provides communities a method of remaining self-sufficient.

 


Table of Contents

 

What is Ethereal Realms?. 1

Table of Contents. 2

File Overview.. 4

./ethereal 4

./ethereal/conf/ 4

./ethereal/conf/config.pl 4

./ethereal/conf/conf.ini 4

./ethereal/conf/lang.ini 4

./ethereal/conf/ethereal_base.tmpl 5

./ethereal/conf/ethereal_data.tmpl 5

./ethereal/conf/ethereal_functions.tmpl 5

./ethereal/conf/ethereal_schema.tmpl 5

./ethereal/conf/ethereal_views.tmpl 5

./ethereal/main. 5

./ethereal/main/bio.pl 5

./ethereal/main/board.pl 6

./ethereal/main/contrib.pl 6

./ethereal/main/gallery.pl 6

./ethereal/main/gate.pl 6

./ethereal/main/gummies.pl 6

./ethereal/main/gwho.pl 6

./ethereal/main/mail.pl 6

./ethereal/main/offline.pl 7

./ethereal/main/openid.pl 7

./ethereal/main/poll.pl 7

./ethereal/main/realm.pl 7

./ethereal/main/registration.pl 7

./ethereal/main/reset.pl 7

./ethereal/main/social.pl 7

./ethereal/main/vanity.pl 7

./ethereal/main/weblog.pl 8

./ethereal/main/webring.pl 8

./ethereal/main/js. 8

./ethereal/main/js/forecast.pl 8

./ethereal/main/js/feed.pl 8

./ethereal/main/js/rotate.pl 8

./ethereal/main/js/vote.pl 8

./ethereal/main/post 8

./ethereal/main/post/colours.pl 8

./ethereal/main/post/dice.pl 9

./ethereal/main/post/private.pl 9

./ethereal/main/post/who.pl 9

./ethereal/main/zoom.pl 9

./ethereal/main/ssi 9

./ethereal/mgmt 9

./ethereal/mgmt/admin. 9

./ethereal/mgmt/admin/swho.pl 9

./ethereal/mgmt/admin/system.pl 10

./ethereal/mgmt/config. 10

./ethereal/mgmt/config/home.pl 10

./ethereal/mgmt/config/ignore.pl 10

./ethereal/mgmt/config/gallery.pl 10

./ethereal/mgmt/config/puppet.pl 10

./ethereal/mgmt/config/puppeteer.pl 10

./ethereal/mgmt/config/realm.pl 10

./ethereal/mgmt/perl 11

./ethereal/mgmt/commandline. 11

./ethereal/mgmt/commandline/erealms.pl 11

./ethereal/mgmt/commandline/locate_tags.pl 11

./ethereal/mgmt/commandline/publish.pl 11

./ethereal/mgmt/commandline/queue.pl 12

./ethereal/mgmt/commandline/reverse.pl 12

./ethereal/mgmt/commandline/short.pl 12

./ethereal/mgmt/commandline/spel.pl 12

./ethereal/mgmt/commandline/thumb.pl 12

./ethereal/mgmt/commandline/xfer.pl 12

./ethereal/mgmt/ssi/ 12

./ethereal/mgmt/ssi/faq.pl 12

./ethereal/mgmt/ssi/rotate.pl 12

./ethereal/mgmt/Ethereal 13

./ethereal/mgmt/Ethereal/Audit.pm.. 13

./ethereal/mgmt/Ethereal/Comm.pm.. 13

./ethereal/mgmt/Ethereal/Database.pm.. 13

./ethereal/mgmt/Ethereal/Geo.pm.. 13

./ethereal/mgmt/Ethereal/Filter.pm.. 13

./ethereal/mgmt/Ethereal/Home.pm.. 13

./ethereal/mgmt/Ethereal/Image.pm.. 14

./ethereal/mgmt/Ethereal/Leech.pm.. 14

./ethereal/mgmt/Ethereal/Login.pm.. 14

./ethereal/mgmt/Ethereal/Mail.pm.. 14

./ethereal/mgmt/Ethereal/Menu.pm.. 14

./ethereal/mgmt/Ethereal/OpenID.pm.. 14

./ethereal/mgmt/Ethereal/Option.pm.. 14

./ethereal/mgmt/Ethereal/Param.pm.. 14

./ethereal/mgmt/Ethereal/Post.pm.. 14

./ethereal/mgmt/Ethereal/Pull.pm.. 15

./ethereal/mgmt/Ethereal/Rotate.pm.. 15

./ethereal/mgmt/Ethereal/Spel.pm.. 15

./ethereal/mgmt/Ethereal/Template.pm.. 15

./ethereal/mgmt/Ethereal/Weather.pm.. 15

./ethereal/mgmt/Ethereal/Who.pm.. 15

./ethereal/db. 16

./ethereal/db/geo. 16

./ethereal/db/hash. 16

./ethereal/db/realms. 16

Caveats. 17

Version 4.0.0. 17

Version 4.1.0. 17

Version 4.2.0. 17

Version 4.3.0. 17

Installation. 18

Before You Start 18

Common Installation Process. 19

Dedicated Hosting. 23

Shared Hosting. 24

Frequently Asked Questions. 26

Copyrights. 27

Installation Document 27

Source Code. 27


File Overview

./ethereal

 

Ethereal Realms is designed to be a self-contained series of scripts.    This path and all elements within demonstrate this concept as everything required to run the site is located within.    This means the installation[2], execution[3], operation/maintenance[4], and run-time information[5] critical to the use of the site are all here.

 

This directory contains four sub-directories.   The first of which is covered below:

 

./ethereal/conf/

 

This directory exists for the deployment and management of sites using Ethereal Realms code.    New to version 4.0.0 of the code is the ability to hosts multiple sites[6] under one roof and is managed centrally through the script contained within.

 

./ethereal/conf/config.pl

 

This is the core script used in the deployment and management of sites.    By default, this script cannot be executed directly as different locations in the interpreter would generate errors.    In order to correct this issue this script has two requirements:

 

  • The script requires the existence of the Config::IniFiles[7] module before it can be used; and
  • The script must be called be the Perl interpreter directly.  E.g.  perl –w config.pl

 

Once this script is employed, you can add/remove, upgrade and manage new sites.   The script will also confirm the existence of critical modules required for the use of the site and display the proper connection string to use with your scripts in order to effectively make use of the database.

 

Please note that this script is in fact a command-line script.    You cannot make use of a web-browser to configure[8] the site.

 

./ethereal/conf/conf.ini

 

This file includes the basic configuration of the site itself.    Information such as the database and http user names will be stored within this file.    Please note that this file should not be made publicly available.

 

./ethereal/conf/lang.ini

 

This file contains all necessary messages and words used in the operation of the config.pl script.    Due to the nature of the script it is necessary to not be dependant on a database which may not be operational at the moment.

 

./ethereal/conf/ethereal_base.tmpl

 

Any file of the .tmpl extension exists to generate the base template of a sites configuration.    With the addition of macros, these files contain all of the necessary database code[9] used in generation.   During the process the macros are replaced with the proper information which will be appended to the site prior to use.

 

./ethereal/conf/ethereal_data.tmpl

 

See ./ethereal/conf/ethereal_base.tmpl for more details.

 

./ethereal/conf/ethereal_functions.tmpl

 

See ./ethereal/conf/ethereal_base.tmpl for more details.

 

 

./ethereal/conf/ethereal_schema.tmpl

 

See ./ethereal/conf/ethereal_base.tmpl for more details.

 

./ethereal/conf/ethereal_views.tmpl

 

See ./ethereal/conf/ethereal_base.tmpl for more details.

 

 

./ethereal/main

 

While the previous path dealt with the low level management of the site, this one exists to cater to the needs of the general users.   Every script within are user scripts, designed to created user interfaces, pull information and share if it need be.

 

These scripts are designed to be used directly under mod_perl[10] a critical Apache[11] module used in accelerating Perl scripts at the expense of memory usage.   These scripts are not true mod_perl modules however in order to maintain compatibility with sites that cannot run under this system.

 

./ethereal/main/bio.pl  Aliases: board, sysboard.pl

 

This is a script designed to display biographical information, contact information or redirect to a puppets home page if the users have so decided to allow it.   In realms, this functionality is enhanced as to allow for quick access to private messaging, ignoring and watching if currently in offline mode.

 


./ethereal/main/board.pl  Aliases: board, sysboard.pl

 

Message board functionality for Ethereal Realms, using a simplified threaded model expanded for ease of use.   These are embedded within every public realm and can be accessed in various ways.    Additionally a special realm[12] can be established to hold the systems forums.

 

./ethereal/main/contrib.pl

 

A new portal designed exclusively for contributors which allow access to all contributor components[13] without using a unified native interface.   With the addition of this portal it became possible to make use of Ethereal Realms without the rest of the chat component in place.

 

 

./ethereal/main/gallery.pl Aliases: gallery

 

This script is the client side portion of galleries, currently featuring text and image works.   Script includes searching capabilities, with multiple views for quickly finding works or simply browsing through an individual’s gallery.

 

For users currently authenticated to the system, one has the ability to rate and comment on works displayed.    This interface is also designed in such a matter to make it friendly to web spiders giving the works within the chance to be indexed in search engines.

 

 

./ethereal/main/gate.pl Aliases: go, portal.pl, ./ethereal/main/ssi/static.pl

 

The primary function of the portal is to authenticate users and direct them to a screen that will show them access to available features, functionality and allow them to access individual realms.   The realm resembles the interface provided with the .contrib.pl script except that it bridges to users to realms instead of works.

 

./ethereal/main/gummies.pl

 

A view-only script that is generally used in conjunction with the puppet configuration panel and allows users to see gummies allowed on the site.   This script can also be employed to view injected gummies, which behave very much like emoticons on instant messengers.

 

./ethereal/main/gwho.pl

 

The Global who script is a front-end allowing users to see realm activity globally.   There exists variants to this interface, one which will display information more pertinent to the administrators of a site and the other used to display initially at realm level.

 

./ethereal/main/mail.pl

 

Internal mail system for Ethereal Realms, that allows for users to send messages directly to another user without having to making their identities known.   This feature can also be used to capture messages normally send through Email[14], alleviating the load on mail systems if need be.

 

./ethereal/main/offline.pl

 

Realms can be accessed in one of two modes, for users who wish to re-create a message-board style of role play they would normally enabled offline mode.   This script similar to the realm.pl handles all the necessary complexities.

 

./ethereal/main/openid.pl

 

This is the identity provider portion of Ethereal Realms.  Making use of the OpenID libraries it will authenticate users from other sites with valid consumers and gain necessary information to enter without the normal registration process.

 

./ethereal/main/poll.pl

 

This is a front-end interface for the polling system used by the site, which works by taking in votes and displaying the current results on request.

 

 

./ethereal/main/realm.pl Aliases: stream.pl

 

The Realm script handles the primary interaction between the users with their realms.   This script will also act as a portal for realm specific functionality such as private messaging, enhanced biographical information and forums.

 

 

./ethereal/main/registration.pl Aliases: confirmation.pl

 

Ethereal Realms requires that users are registered in order to recall settings, handles and customizations.   This script handles the tasks of collecting initial information and making sure that the details provided such as the Email address are valid through the confirmation aspect of the script.

 

./ethereal/main/reset.pl

 

If and when a user forgets their password, this script can come to their aid.   All they will require is their username and a new password[15] will be generated for them.   For users of elevated status such as an administrator[16] or supervisor[17] this script cannot be used.

 

 

./ethereal/main/social.pl Aliases: social

 

This is the social networking front-end for Ethereal Realms, which includes searches and the display of profile.  The site also incorporates Google Maps directly in order to visually show where people are aiding in the search of people nearby to oneself.

 

./ethereal/main/vanity.pl

 

This is an additional component to the social networking component.   This part deals specifically with the display of user pictures named Vanity Shots and allows for the voting and display of them in a mini-gallery like view.

 

./ethereal/main/weblog.pl Aliases: ./ethereal/main/ssi/quicklog.pl

 

Though the use of a weblog-style interface this script allows administrators to pass on information to the rest of the site.   Extracts of the news headings can also be displayed within realms or through the use of SSI scripts.

 

 

./ethereal/main/webring.pl Aliases: ring.pl

 

A web ring system has been incorporated into Ethereal Realms in order to link all hosted realms together.    This script acts as the intelligence required to link and lists all of the realms within the ring itself.

 

./ethereal/main/js

 

Scripts within this directory exist to export certain aspects of the site outside of Ethereal Realms itself.   This allows hosts and users to display a realms current weather, list who is on and display banners currently being rotated out.

 

All of this can be done through the use of JavaScript.  Also with the use of CSS[18] the user has the option of changing the look and feel of the displayed object to look exactly how they wish it too.

 

./ethereal/main/js/forecast.pl

 

This script displays the weather forecasts used in realms.    Hosts can pass on the appropriate link as need be.

 

./ethereal/main/js/feed.pl

 

The use of RSS feeds on the site can be extended to display that information though JavaScript.

 

./ethereal/main/js/rotate.pl

 

This is the rotation script used specifically in rotating items outside of Ethereal Realms.

 

./ethereal/main/js/vote.pl

 

This is an additional script to the Polling system designed to collect and display polls.   Uses JavaScript injection to make it dynamic and simplify output.

 

./ethereal/main/post

 

These scripts are used while interacting through a realm.  As a result of this, the bulk of these scripts will have the same access control measures put into place as to prevent unauthorized access.

 

./ethereal/main/post/colours.pl

 

The colour guide displays every colour allowed within a realm allowing the user to make a better selection of fonts when playing within that setting. 

 

./ethereal/main/post/dice.pl

 

An advanced die roller that while supporting a multitude of systems can use templates to support on system and catering to a realms specific role-play system.  Rolls can be made in publicly or sent privately based on the user’s preference.

./ethereal/main/post/private.pl

 

This script is the primary private message sub-system that will allow sending messages in private to people of the same realm or public realms if configured to do as such.  Administrators can also use this interface as to send messages globally to all realms at once.

 

./ethereal/main/post/who.pl

 

Realm specific variant of the global who is on that will originally display everyone in a specific realm then move to all public realms if requested.

 

./ethereal/main/zoom.pl

 

Allows for the expansion of posts into an external window in order to allow for easier modification and spell checking[19].

      

 

./ethereal/main/ssi

 

Ethereal Realms has created scripts that are made to function in conjunction with Server Side Includes (SSI).   This allows dynamic content to be mixed in with seemingly static pages, without requiring people to use scripts directly.

 

The above directory does not contain any scripts; instead it acts as a container for allowed SSI scripts that can be made available publicly.   To prevent a script from being used as a SSI element, simply have that link revoked.

  

 

./ethereal/mgmt

 

This directory acts as a separate container for scripts that sites may not to have loaded to be under mod_perl or equivalent web acceleration processes.    This also allows one to selectively export directories within this tree granting a more granular control over the scripts themselves.

   

./ethereal/mgmt/admin

 

This contains all of the administrative scripts which require administrative level users to make changes to the system.   These scripts allow changing anything from user’s properties to the look and feel of the site.

 

This path is normally exported for use by administrators.    Without access to these scripts it becomes nearly impossible to make use of the site at all.

 

./ethereal/mgmt/admin/swho.pl

 

This script is similar in principle to global who is on, except that this script has the additional capabilities of seeing addition details.   This includes the listing of all associated usernames, warning levels and any active realm currently active.

 

 
./ethereal/mgmt/admin/system.pl

 

This administrative script creates a tabbed user interface that allows controlling all administrative aspects of the site.  From realm creation to changes in the specific wording of a button, this script will allow such changes to be made.  The administrator can also actions taken on the site, this audit entry viewer can become a very useful ally to determine where things have gone wrong.

      

./ethereal/mgmt/config

 

This directory contains these configuration scripts do not require administrative access in order to be used.   However, their access levels vary from requiring supervisory/moderator access for their use to simply being available to all.

 

This path is normally exported for use by users.    Without access to these scripts it becomes nearly impossible to make use of the site at all.

 

./ethereal/mgmt/config/home.pl

 

The homepage component of Ethereal Realms which allows contributors to access files and images stored on the local server.    In addition to straight file access, the script allows  for mass uploads, removals and image resizing.

 

./ethereal/mgmt/config/ignore.pl

 

This script allows the ignoring users on multiple levels, including simply replacing their title information.

 

./ethereal/mgmt/config/gallery.pl

 

Interface used to manage galleries, works and gallery news entries for any contributor of the site.  This interface is collaborative in nature and can allow users who are not generally considered a contributor to access existing galleries in a limited fashion.

 

./ethereal/mgmt/config/puppet.pl

 

This is the puppet configuration script that handles the creation, cloning, modification and removal of puppets to be used throughout the site itself.    Puppets are used as pen-names in galleries and employed when making comments to works or posting in a forum, these are essentially one of many user avatars.

 

./ethereal/mgmt/config/puppeteer.pl

Puppeteer configuration panel, also known as the user details page, allows a user to change user specific information from one interface.   This includes password, Email address changes and contact information updates etc.

 

./ethereal/mgmt/config/realm.pl

 

This supervisory/moderator level script deals with realm specific management as required for public and/or hybrid realms.   The management of every detail of the realm is done exclusively through this interface.

 

For administrators additional options may also appear, as certain features are considered to volatile for general experimentation and requires an administrator to undo.

./ethereal/mgmt/perl

 

A directory that contains very simple Perl modules which Ethereal Realms uses and does not require to be compiled to be run or included.   This process alone should cut down considerably on the list of required modules for installation, especially when some of these are less then common.

Module

Version

Release Date

Author

Config::IniFiles

2.38

13 May 2003

Jeremy Wadsack

Crypt::OpenID

1.1x

Nil

Nil[20]

Lingua::EN::NameCase

1.13

26 Apr 2002

Mark Summerfield

Lingua::EN:Tagger

0.13

29 Jun 2005

Aaron Coburn

Lingua::Stem

0.81

26 Jul 2004

Benjamin Franz

LWP::ParanoidAgent

1.03

21 Aug 2006

Brad Fitzpatrick

Number::Format

1.51

26 Apr 2006

William R Ward

Text::Wrap

2005.0824

24 Aug 2005

David Muir Sharnoff

 

 

 

 

 

 

./ethereal/mgmt/commandline

 

Scripts in this directory are to be used at the command line level only and do not carry with them the ability to interact as a CGI script and are used exclusively for maintenance/update tasks.   In certain cases the scripts heavily tailored to Ethereal Realms specifically and may require modification before use.

 

In certain cases these scripts are no longer being actively used and no longer work.  If this is the case and you are in dire need of employing them you may wish to contact the developer.

 

./ethereal/mgmt/commandline/erealms.pl

 

Primary command-line utility used by Ethereal Realms for all of required maintenance.   This script can also be used to terminate streams, rotate banners in realms and synchronize Email addresses with mailing-lists.

 

./ethereal/mgmt/commandline/locate_tags.pl

 

This script is used in the location of stale and unused tags in the database.    When called it will display the proper SQL required to have these tags removed from the database.     This script is generally not required for sites outside of Ethereal Realms itself as the code is not generally actively being changed.

./ethereal/mgmt/commandline/publish.pl

 

Used on the site in order to publish all text works in galleries.    This also allows for a global update of all works to new matching templates saving time and resources.

 


./ethereal/mgmt/commandline/queue.pl

 

The queue is a simple script designed to serialize maintenance scripts[21].    Unfortunately this script does not always work as intended, however when it does the system can conduct complex maintenance without the worry of other administrative scripts interrupting its process or causing a fatal lock at database level.

 

./ethereal/mgmt/commandline/reverse.pl

 

Generates the necessary reverse indexes used in established galleries.   Most sites not already on 4.0.0 and already using galleries will either be required to use this script or have all users resubmit their works before the search engine can be used.

 

./ethereal/mgmt/commandline/short.pl

 

This script will go through all puppets and realms, checking for those that are missing their short name entries.  This is not meant for those moving to 3.0.0 since that information does not account for duplicates.

 

./ethereal/mgmt/commandline/spel.pl

 

This is a spell checking server-side daemon which will interact with ispell or the more modern aspell and allow the system to run spell-checking in scripts in an accelerated manner.

 

./ethereal/mgmt/commandline/thumb.pl

 

The thumbnail generator script is used to regenerate all thumbnails and supporting images based on new imposed rules.

 

./ethereal/mgmt/commandline/xfer.pl

 

Primitive script requiring a bit of retooling allowing users to be transferred wholesale from one version of Ethereal Realms to another.  In order to work, the old Database.pm settings from the original site have to copied into a new version of Database.pm on the new site and renamed to Source.pm.   With Database.pm (current settings) and Source.pm (old server settings) the site will transfer over elements piecemeal.

 

./ethereal/mgmt/ssi/

 

Additional Server Side Includes are added here.    These cannot normally be accessed from the outside world and have to be linked to the exported ./ssi directory located in the ./ethereal/main/ directory structure.

 

./ethereal/mgmt/ssi/faq.pl

 

Allows a user to display the FAQ and have it accessible to users.   This is the only interface available for the FAQ.

 

./ethereal/mgmt/ssi/rotate.pl

 

Similar to the JavaScript equivalent except there is no processing client side when the user makes use of the page.

./ethereal/mgmt/Ethereal

 

Modules on Ethereal Realms exist to perform certain tasks and cut down on code and complexity.   The following modules come default with Ethereal Realms and are core to its use, however there are other modules required for operation which can be installed separately.

 

./ethereal/mgmt/Ethereal/Audit.pm

 

Auditing modules used to store records of administrative and supervisory tasks done within the system.

 

./ethereal/mgmt/Ethereal/Comm.pm

 

This module handles all the composition of posts and writing of that information to the database.  Secondly it provides the interface with which people interact with at realm level.

 

./ethereal/mgmt/Ethereal/Database.pm

 

This module is designed primarily to hide most of the work used to access and work with the database and handle things from making a database handle to retrieving documents.   With the introduction of Ethereal Realms 4.0.0 this module will also make use of BerkelyDB[22] databases in addition to PostgreSQL in order to create a faster cache for frequently accessed information.

 

./ethereal/mgmt/Ethereal/Geo.pm

 

A module that handles the localization of users through the use of their IP addresses.   This is done using one of two databases[23] and while they require modules to use, administrators can select which is more appropriate for them.

 

This module is also employed in finding the Latitude and Longitude ranges for use in distance based queries.  The math provided for this capability is used in aviation[24] and is more accurate then other modules available from CPAN since it accounts for the fact that the earth is not flat.

./ethereal/mgmt/Ethereal/Filter.pm

 

A safer, centralized method of filtering HTML based on a few factors.  This includes a somewhat primitive version of HTML tag closing for those that tend to forget.

 

./ethereal/mgmt/Ethereal/Home.pm

 

Home page module, currently only used for the storage and  removal of images and files on the system accessed through the Home Page or Gallery configuration panels.

 


./ethereal/mgmt/Ethereal/Image.pm

 

This module is basically a wrapper Image::Magick[25] that simplifies common tasks such as thumbnail generation, resizing of images and determining key information.

 

./ethereal/mgmt/Ethereal/Leech.pm

 

This module is new to Ethereal Realms 4.0.0 and allows galleries to retrieve massive amounts of images from web pages.    This leeching module can be employed on any site without authentication and has a memory necessary in pulling several hundreds of images without a hitch.

./ethereal/mgmt/Ethereal/Login.pm

 

This module exists as the central authentication method for the site.

 

./ethereal/mgmt/Ethereal/Mail.pm

 

This is a mail handling module, allowing for the standardization and separation of the mailing process from the scripts.   This module will make use of both SMTP and a Sendmail[26] wrapper in order to guarantee the transmission of Email.

 

./ethereal/mgmt/Ethereal/Menu.pm

 

A straight forward module which will handle the rewrite necessary to change the title, identifier and provide a consistent menu structure for all headers with generated content.

 

./ethereal/mgmt/Ethereal/OpenID.pm

 

This handles the consumer/provider side of OpenID.   The nitty gritty that is required to be used in order to link with OpenID with Ethereal Realms will gain all of its functionality from here directly.

 

./ethereal/mgmt/Ethereal/Option.pm

 

This is the options handling module used in determining exactly what the user has selected and what it means for the database.

 

./ethereal/mgmt/Ethereal/Param.pm

 

This module handles all aspects of the parameters sent back and forth between browser and server.  Instance of the class also acts as an associative hash for easier retrieval of values.

 

./ethereal/mgmt/Ethereal/Post.pm

 

Handles the display of posts to the various viewing method

 

./ethereal/mgmt/Ethereal/Pull.pm

 

Module used to retrieve posts for users.

 

./ethereal/mgmt/Ethereal/Rotate.pm

 

This module deals with the rotation of ads and other material as dictated by administrators.

 

./ethereal/mgmt/Ethereal/Spel.pm

 

Spell checking module, which will work in conjunction with the spell checking daemon.    The typo in the name is done on purpose.

 

./ethereal/mgmt/Ethereal/Template.pm

 

This module makes use of templates to generate interfaces and widgets on the site, removing a great deal of repetition from the attribute code.

 

./ethereal/mgmt/Ethereal/Weather.pm

 

This module handles the parsing of the METAR[27] weather reports and will also retrieve them as needed for use in weather forecasts on the system and individual realms.

 

./ethereal/mgmt/Ethereal/Who.pm

 

Primary module used in all instances which list users actively in a realm.

 


./ethereal/db

 

This directory will always be shipped empty.    When in use the database module will make use of it to place local caches of information specifically designed to speed things up client side and reduce database load.

 

In all cases the files within will contain the sites short name and then pertinent information.   This allows an administrator to quickly remove any stale files if and when a site is removed from the system.

 

./ethereal/db/geo

 

This directory is normally used to store the IP2Location and MaxMind databases.   Reference the Ethereal::Geo module for more information.

 

./ethereal/db/hash

 

This directory contains a cache of all hashes used in the display of information.   Files here are only generated when an administrator views the existing attributes and templates and their individual sites.

 

./ethereal/db/realms

 

Same as above, however this is related to realm specific settings.


Caveats

 

Version 4.0.0

 

Versions prior to the above version will encounter problems when attempting to upgrade to this latest version due to massive changes at the template and attributes level.    Names have been changed, moved around, re-organized and cleaned up in order to create a more streamlined release.   

 

However, this had a side effect of causing conflicts between the old design and the new.  In addition, the move to Cascading Style Sheets has changed the way many of these designs can be changed.  As a result, it is highly recommend that people create an alternate site and upgrade the sites in parallel.

 

Galleries have also been changed heavily in order to support new features.    These require a significant amount of changes, which are not easy to achieve and may be easier to ask users to move their galleries over in time.

 

Due to the above reason IT IS NOT RECOMMENDED TO ATTEMPT A DIRECT UPGRADE FROM VERSIONS PRIOR.

 

Version 4.1.0

 

This version is can be for the most part upgraded from versions prior without too much difficulty.  However it is to be noted that some handles may be lost for users because of the new ‘Short Name’ entry kept in the database.   This new short method of displaying names comes in handy when applied to the social networking component and reduces the chance of handles being too similar from one another.

 

This upgrade as a result will require a script to be run mid part in order to create these new entries.     Make use of the ./ethereal/mgmt/commandline/short.pl script to complete the conversion.

 

Note:  Because of the requirement of the script, it will be necessary to run the upgrade script twice.   Else certain aspects of the site will not engage properly.

 

Version 4.2.0

 

This release has a few minor database changes which may cause previous backups to fail in restore.    Before upgrading to this version, it is recommended that you backup before and after the upgrade script has kicked in.

 

Version 4.3.0

 

This version is not recommended for a direct upgrade as several templates will require the addition of certain macros which will allow for the consistent menu structure and title names.    While it can be done, these changes missing from existing templates will yield trouble.

 

It is recommended as a result that one makes use of a parallel site and the ./mgmt/commandline/xfer.pl script in order to move users and their attributes over.


Installation

 

There currently exist two separate methods for using Ethereal Realms.   The first, which is the preferred method, is to host the scripts on a dedicated server with little or nothing else running on the server.   The more access you have in this case the better.

 

The alternate method is to make use of a shared hosting site.   This is not recommended under any circumstances as the sites performance will be horribly crippled and administration in general becomes more difficult.    However it is possible and requires a different process in the configuration of the site.

 

Before You Start

 

Make sure that you have the latest version of Ethereal Realms ready to be installed.    This documentation will always reflect the most current release and may not be in synch with older methods of installing the scripts.   The most versions of the script are always available through this link: http://www.ethereal-realms.org/download/pub/ethereal/ethereal-latest.tar.gz

 

Under no circumstance should you open the archived file on a Windows based operating system and transfer the contents to its new home.    This will cause several needed symbolic links in being lost and may severely hinder your ability to use the site.

 

Make sure that you have command line access to the server which will be hosting Ethereal Realms.   Command line access is required for installation, maintenance and management of all sites under the system.   Without command line access the system will slowly begin to degrade in performance which could lead to crashes.

 

Ensure that you have Perl installed with the Config::IniFiles[28] module prior to beginning the installation.   For those of you making of shared hosting arrangements you may need to request that the module be installed for you.

 

Lastly, you will require access to the PostgreSQL[29] database.   Not all shared hosts offer this database engine so you may need to shop around for it.

 

HTMLDoc[30] is a program that is used to translate HTML files into Adobe Acrobat compatible PDF files.  You may want to have this installed, especially if galleries are on your priority list for things to be operational.  While there is a commercial version available, there are free versions with the absence of support, for the needs of Ethereal Realms you do not need a support license.

 

Note:          For most shared hosts you cannot create the required schemas for the database.    This will have to be requested specifically.   Fortunately the installer will not create things automatically, so simply record the name you chose and have that created when the time is right.


Common Installation Process

 

Copy the latest archived version of Ethereal Realms your downloaded previously into a temporary directory.    The files will be copied to their new location once the archive has been open.

 

Open the archive:

  tar -zxvpf ethereal-X_X_X.tar.gz

 

Move into the newly created directory structure:

  cd ./ethereal

 

Copy the included Javascript and Cascading Style Sheet documents to the directory which hosts your domains root:

  cp -R ./webroot/css     /www/path/here

  cp -R ./webroot/js      /www/path/here

 

Alternatively copy the images over as well:

  cp -R ./webroot/img     /www/path/here

  cp -R ./webroot/gummies /www/path/here

  cp -R ./webroot/inject  /www/path/here

 

Move over the files used for the script to a location of your choice.    The preference is somewhere that is not directly accessible by the webserver.

  cp -R ./ethereal     /ethereal/base/path/here

 

Note:      The above makes no real difference as the server will be told where these files are located.  Optionally, if you feel comfortable with the installation process you can remove the archive and temporary location of the originals.

 

Move to the new location for the script files.   

  cd /ethereal/base/path/here

 

Move one step deeper into the ./conf path in order to begin installation:

  cd ./conf

 

Run the configuration script:

  perl -w config.pl

 

The following output will be displayed.  Answer each section appropriately:

  Initializing configuration:

    Admin:

      Database administrative login? [postgres][31]

      Database administrative password? [SOMEPASS]

    Database:

      Host address? [localhost][32]

      Host port number? [5432]

      Host database? [ethereal][33]

    Script:

      Script database username? [ethereal]

      Script database password? [SOMEPASS]

      Scripts will belong to which user? [www][34]

      Scripts will belong to which group? [www]

      Script permissions? [0775]

      Root location of scripts? [/ethereal/base/path/here]

      Location of Ethereal Realms libraries? Should be list directory where ./Ethereal is located. [/ethereal/base/path/here/mgmt/perl][35]

      Location of Perl interpreter? [/usr/bin/perl]

      Location of 'psql' utility? [/usr/local/bin/psql]

      Work directory for completed .sql files? [./work]

  Writing settings to file...  Done!

 

Do you wish to set the interpreter in the scripts? [no][36]

Do you wish to check for the existence of all necessary modules? [no][37]

    Testing for existence of modules

      Archive::Zip...Found!

      Calendar::Simple...Found!

      CGI...Found!

      CGI::Carp...Found!

      Cwd...Found!

      DBI...Found!

      DBD::Pg...Found!

      Digest::MD5...Found!

      LWP::Simple...Found!

      LWP::UserAgent...Found!

      IO::Socket...Found!

      Image::Magick...Found!

      IPC::Open2...Found!

      MIME::Entity...Found!

      Net::SMTP...Found!

      Number::Format...Found!

      POSIX...Found!

      Symbol...Found!

      Text::Wrap...Found!

      XML::RSS...Found!

      Math::Trig...Found!

      Lingua::Stem...Found!

      Lingua::EN::Tagger...Found!

      Time::HiRes...Found!

  Done!   [Enter]

 

Ethereal Realms will exist once the modules have been checked.  Repeat the above minus setting configuration until you have all the modules properly installed.    Once complete rerun the script:

  perl -w config.pl

  Checking configuration...  Done!

    Do you wish to reset file? [no]

  Do you wish to check for the existence of all necessary modules? [no]

 

DBI connect('dbname=ethereal;

                                host=localhost;

                                port=5432;

                                user=postgres;

                                password=SOMEPASS','',...) failed: could not translate host name "localhost" to address: Name or service not known

 at config.pl line 1151

  Testing database connection...REMOTE FAILED...LOCAL SUCCESS...[38]

 

  -= Database Changes =-

 

   Based on your method of connection acheived, it will be necessary to

   modify the ./Ethereal/Database.pm file in order to connect without failure.

   Adapt line 122 of the file and replace it with the following:

 

   * For a REMOTE connection use the following lines:

     $database = DBI->connect("DBI:Pg:dbname=$dbname; host=$host; port=$port; user=$user; password=$pass")

      or $self->ErrExit($cgi, "Database error \#$DBI::err :  $DBI::errstr");

 

   * For a LOCAL connection use the following:

     $database = DBI->connect("DBI:Pg:dbname=$dbname; user=$user; ")

      or $self->ErrExit($cgi, "Database error \#$DBI::err :  $DBI::errstr");

  Done!   [Enter]

 

-= Action Menu =-   Select desired operation from the menu below.    For first time users   please note that the only option allowed will be to create a new site   required to begin using Ethereal Realms.

 

  -=Sites=-

    [C]reate a new Site

    [D]elete a site[39]

    [M]odify existing attributes of a site

 

  -=Database=-

    [G]enerate a new release

 

  Action: [] C

 

-= Create a new site =-   Welcome to the Site Creation section.   In order to create a new site   simply answer the questions prompted, which are needed for the creation   process.

 

    Full name [] Ethereal Realms

    Short name [] ethereal

    Domain Name [] ethereal-realms.org

    Root http:// directory [] /home/ethereal/www

    MD5 Password [ab8f9d279f3a8309a9f9ef50d9c330db][40]

    Shared memory [ethe][41]

    Site active for use [yes]

    Fallback default [no] yes

 

     * *

 

    Full name: Ethereal Realms

    Short name: ethereal

    Domain Name: ethereal-realms.org

    Root http:// directory: /home/ethereal/www

    MD5 Password: ab8f9d279f3a8309a9f9ef50d9c330db

    Shared memory: ethe

    Site active for use: yes

    Fallback default: yes

 

  Continue with operation? [yes]

 

> cat /somesite.sql | psql -h localhost -p 5432 -U postgres

 

The last line generated is exactly what will need to run in order to proceed with the installation.   If you do not have sufficient access to the system in order to complete this operation have an administrator proceed with this step.

 

Note:      This is where the difference between the admin user and database will become apparent.  While the SQL will be installed by the administrator the privileges will be changed to meet the needs of the script user and this is why that it is important to keep track of this.

 


Alternatively if you have more then one domain for the site you will need to make the scripts aware of this fact.    Follow the additional prompts below to correct the issue.

 

-= Action Menu =-   Select desired operation from the menu below.    For first time users   please note that the only option allowed will be to create a new site   required to begin using Ethereal Realms.

 

  -=Sites=-

    [C]reate a new Site

    [D]elete a site

    [M]odify existing attributes of a site

 

  -=Database=-

    [G]enerate a new release

 

  Action: []M

 

-= Modify a Site =-   Simply follow the prompts to change information.

 

  [1] ethereal

 

 

  Change following site [0] 1

 

  -=Confirm=-

    Full name: Ethereal Realms

    Short name: ethereal

    Domain Name: ethereal-realms.org

    Root http:// directory: /tmp

    MD5 Password: e95740232612b126afff4b7343bc1d3b

    Shared memory: ethr

    Site active for use: yes

    Fallback default: yes

 

 

    Full name [Ethereal Realms]

    Domain Name [ethereal-realms.org]

    Root http:// directory [/tmp] /home/martin/www

    MD5 Password [e95740232612b126afff4b7343bc1d3b]

    Shared memory [ethr]

    Site active for use [yes]

    Fallback default [yes]

 

 

  -=Aliases=-

    Maintain alias ethereal-realms.org [yes]

    Create new alias (type 'done' to end) [done] erealms.org

    Create new alias (type 'done' to end) [done]

 

  Done!  [Enter]

 

This will complete the base install for Ethereal Realms and all that remains now to make the site aware of the script and begin using the site.


Dedicated Hosting

 

Dedicated hosting sites are a bit simpler.    In order to proceed add in the following entries into the global section of the httpd.conf file located in the configuration directory for Apache:

#

# ETHEREAL REALMS

#

 

# Main folder

#

ScriptAlias /ethereal/[42] /ethereal/base/path/here/main/

ScriptAlias /erealms/  /ethereal/base/path/here/main/

 

 

<Directory /ethereal/base/path/here/main/>

  # Base settings

  AllowOverride None

  Options +ExecCGI FollowSymLinks

 

  # Apache Mod_Perl directives – Uncomment to use

  #SetHandler perl-script

  #Apache Registry

  #PerlHandler Apache::Registry

  #PerlSendHeader On

 

  # Permissions

  Order allow,deny

  Allow from all

</Directory>

 

 

# Administration scripts

#

ScriptAlias /ethereal/admin/ /ethereal/base/path/here/mgmt/admin/

ScriptAlias /erealms/admin/  /ethereal/base/path/here/mgmt/admin/

 

<Directory "/ethereal/base/path/here/mgmt/admin/">

  # Base settings

  AllowOverride None

  Options +ExecCGI FollowSymLinks

 

  # Permissions

  Order allow,deny

  Allow from all

</Directory>

 

 

# Configurations scripts

#

ScriptAlias /ethereal/config/ /ethereal/base/path/here/mgmt/config/

ScriptAlias /erealms/config/  /ethereal/base/path/here/mgmt/config/

 

<Directory "/home/oracles/ethereal/mgmt/config/">

  # Base settings

  AllowOverride None

  Options +ExecCGI FollowSymLinks

 

  # Permissions

  Order allow,deny

  Allow from all

</Directory>

 

Restart your Apache server to have these changes take effect:

  apachectl -restart

 

Lastly you can test the script by attempting to access it from your web browser at:

  http://www.somesite.org/ethereal/admin/system.pl


Shared Hosting

 

Move to the directory structure where copied the Cascading Style Sheets. JavaScript and images:

  cd /www/path/here

 

Create a new directory structure[43]:

  mkdir ./ethereal    ./ethereal/admin ./ethereal/config \

        ./ethereal/js ./ethereal/post  ./ethereal/ssi

 

Create a symbolic link to match multiple conventions:

  ln -s ./ethereal ./erealms

 

Create links[44] in all key folders:

  ln /ethereal/base/path/here/main/*               ./ethereal/

  ln /ethereal/base/path/here/main/js/*            ./ethereal/js/

  ln /ethereal/base/path/here/main/post/*          ./ethereal/post/

  ln /ethereal/base/path/here/mgmt/admin/*         ./ethereal/admin/

  ln /ethereal/base/path/here/mgmt/config/*        ./ethereal/config/

 

Additionally, you can do the following for ssi if desired:

  ln /ethereal/base/path/here/main/weblog.pl       ./ethereal/ssi/quicklog.pl

  ln /ethereal/base/path/here/main/weblog.pl       ./ethereal/ssi/extlog.pl

  ln /ethereal/base/path/here/main/gate.pl         ./ethereal/ssi/static.pl

  ln /ethereal/base/path/here/mgmt/ssi/*           ./ethereal/ssi/

 

The following will handle more transparent names:

  rm ./ethereal/bio

  ln ./ethereal/bio.pl ./ethereal/bio

  rm ./ethereal/board

  ln ./ethereal/board.pl ./ethereal/board

  rm ./ethereal/confirmation.pl

  ln ./ethereal/registration.pl c./ethereal/onfirmation.pl

  rm ./ethereal/donate.pl

  ln ./ethereal/donations.pl ./ethereal/donate.pl

  rm ./ethereal/gallery

  ln ./ethereal/gallery.pl ./ethereal/gallery

  rm ./ethereal/go

  ln ./ethereal/gate.pl ./ethereal/go

  rm ./ethereal/gummies

  ln ./ethereal/gummies.pl ./ethereal/gummies

  rm ./ethereal/journal

  rm ./ethereal/portal.pl

  ln ./ethereal/gate.pl ./ethereal/portal.pl

  rm ./ethereal/ring

  ln ./ethereal/webring.pl ./ethereal/ring

  rm ./ethereal/stream.pl

  ln ./ethereal/realm.pl ./ethereal/stream.pl

  rm ./ethereal/vanity

  ln ./ethereal/vanity.pl ./ethereal/vanity

  rm ./ethereal/sysboard.pl

  ln ./ethereal/board.pl ./ethereal/sysboard.pl

 

The next step is to create a new .htaccess[45] file in the ./ethereal directory with the following contents:

  # Main options

  Options +ExecCGI[46] +FollowSymlinks

 

  # CGI Variant

  SetHandler cgi-script[47]

  

In some extreme cases you may need to add some translation since the server will refuse you the right to use +ExecCGI directive.   Instead use this entry in your .htaccess with every single entry on one line:

    #

  # Regular Expression matching redirects

  RedirectMatch permanent /ethereal/board/(.*)   http://www/ethereal/board.pl/$

  RedirectMatch permanent /ethereal/gallery/(.*) http://www/ethereal/gallery.pl/$

  RedirectMatch permanent /ethereal/go/(.*)      http://www/ethereal/gate.pl/$

 

Lastly you can test the script by attempting to access it from your web browser at:

  http://www.somesite.org/ethereal/admin/system.pl

 

 

-- OR --

 

Alternatively, you can always make use of the ./ethereal/export directory already available in the 4.0.1 release and above in order to speed up the process.   Simply copy this entire tree into /www/path/here and call it the end of a day.  But first remember to have the files rewritten in order to make sure the paths are all sane.


Frequently Asked Questions

 

Due to the fluid nature of the code, the most current Frequently Asked Questions are maintained on the main development site.   This also avoids problems where the documents are out of synch and actually confuse more then they help the user.

 

 

 


Copyrights

 

The code and this documentation are covered under separate licenses.    The Acceptable Use Policy and Hosting Guidelines are also covered under the same copyright and license as this document.

 

Any third party modules included with this release are the fall under the Copyrights of their perspective authors.

 

Installation Document[48]

 

Copyright (C) 2005 Martin Foster.


Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".

 

 

Source Code[49]

 

Copyright (C) 2000-2005 Martin Foster

 

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

 

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.

 

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.

 



[2] This exists in the form of the config.pl script which manages most of the complexity involved in the installation of the scripts/database.

[3] In the form of end-user scripts located mainly under the ./main directory.

[4] Maintenance scripts for the most part exist under the ./mgmt directory.

[5] The ./db directory can contain local cache files to reduce database requests.

[6] Every site exists under its own schema in the database, while the core information relevant to all exists in public.

[7] Available through the CPAN network.

[8] This script was designed and tested to Unix-like operating systems only.

[9] Really just straight out SQL statements and little else.

[10] See http://perl.apache.org/ for more details.

[11] See http://www.apache.org/ for more details.

[12] Normally this is a hybrid realm and the realm name must be specified under /Attributes/System.

[13] Home pages and galleries are considered contributor components.

[14] This option can be changed through the User Details script.

[15] Ethereal Realms does not keep the password in clear text, as a result it is impossible to recover a password without breaking the cipher.

[16] Managers of the system.

[17] Managers of realms.

[19] The spell checker requires the use of a daemon to function.  Without this process checking spelling mistakes cannot be done.

[20] This module is in-house only and is a collection of different Crypt modules that when combined managed to do a part of the task required for OpenID.  As a result of this collection/mish-mash of code the version is arbitrary and the authors many.

[21] This script is normally employed with cron.

[22] See http://www.sleepycat.com/products/bdb.html for more details.

[25] See http://www.imagemagick.org/ for more details.

[26] See http://www.sendmail.org for more details.

[28] Newer version of Ethereal Realms will have this module included with the release.

[29] Visit http://www.postgresql.org for more details.

[30] Visit http://www.easysw.com/htmldoc/ for more details.

[31] This is generally the user under which the user has been created.   In certain cases the administrative login and password will be the same as the script because of limited access to the system.

[32] Localhost will suffice in all cases where the PostgreSQL server is on the same machine as the web server.

[33] This is whatever you create it as, the example uses the assumed default.

[34] The web user and group and used to set permissions properly.   If you are using a shared host use your username and group since most shared hosts require that permission set.

[35] This can be a trap for some users.   You can’t specify the full path as Perl will look for Ethereal prior to the name so simply specify the full path up to the ./Ethereal directory.

[36] Saying yes here will rewrite all your scripts.    This is highly recommended for the initial install.

[37] You want the script to check for the existence of all modules.   If one module is missing the script will exit with a sample command line script on how to have it installed.   For users of shared hosts, simply note the modules and have them do it.

[38] This is critical to pay attention to.    Depending on which method failed or passed you will have to change your Database.pm file to use the appropriate format.

[39] You cannot remove all your sites.  If only one is left the script will ignore your request.

[40] This is a legacy component which is no longer required.  Simply say yes on the matter and have it done with.

[41] This is a legacy component which is no longer required.  Simply say yes on the matter and have it done with.

[42] Add in any additional names that may be requested as the ./ethereal and ./erealms exist for legacy reasons.

[43] This structure will only contain links to the actual files and prevent pervasive access to key files.

[44] Makes use of hard links which differ from symbolic links and bypass a lot of security on shared hosts.

[45] This files allows you to override certain directives from the Apache web server.

[46] Will tell the server that all files in here regardless of extension are executed.

[47] Informs the server that these files are to be treated as CGI scripts.