LibWeb -- a vanilla web site backend current version: 0.02  
Home | Requirements | Features | Documentation | Downloads | License
Control panel
Bug Tracking
Mailing lists
Message forums

What is LibWeb?

LibWeb is a Perl library and toolkit for building a community Web site and applications.

Features in a nutshell:

  • members and sessions management (authentication via cookies)
  • template-driven, dynamic HTML page generation without using PHP/ASP/SSI/Javascript
  • HTML widgets and themes
  • installation does not require root privilege

Sites running LibWeb


Sun Apr 21 2002 Happy news: Leah Einecker, who is a better Perl programmer than I am, joined as a developer for LibWeb and LEAPs. In particular, he uses PostgreSQL database, and hence next release of LibWeb will work not just with MySQL database, but also with PostgreSQL. In addition to that, I believe he already has several LEAPs to contribute. :)

Thu Jun 21 2001 Are you running perl 5.6.0 and having problem running LibWeb and the sample scripts? Add the following to the beginning of each sample script to see if it solves the problem,

# [From slashcode] This is the worst damned
# warning ever, so SHUT UP ALREADY!
$SIG{__WARN__} =
sub { warn @_ unless $_[0]
      =~ /Use of uninitialized value/ };

Sat May 05 2001 Updated the requirements section to reflect changes in various perl modules that LibWeb uses. Be sure to install all of the perl modules that LibWeb uses before you install LibWeb-0.02.

Thu Jul 20 2000 Released LibWeb-0.02. See Change log below for changes.

Thu Jun 29 2000 Added documentation on how to edit the run control file (dot_lwrc) for LibWeb.

Mon Jun 19 2000 LEAPs site is up and file-manager-0.01 is available for download.

Fri Jun 16 2000 Uploaded distribution and imported CVS for file-manager-0.01. Also imported CVS for LibWeb; if you can't wait for LibWeb-0.02 but still want all the fixes and new (not extensively tested) features as outlined in the Changelog below, you can download individual file from LibWeb's CVS.

Mon Jun 12 2000 ``cgi_error() not found''. I was using 2.66 when I wrote LibWeb-0.01 and cgi_error() appears in since version 2.47. You may not be able to run LibWeb-0.01 if you have older than version 2.47. This problem will be fixed in LibWeb-0.02. In the mean time, install the latest stable version 2.68. I checked, it has cgi_error(). I also checked the bleeding edge version 3.01 alpha (24/04/2000) and I could not find cgi_error(). -- colin

Sun Jun 11 2000 The code for file manager is 100% complete and I am now writing README and documentation. It will be up along with the LEAPs home page. -- colin

Changelog [txt]
$Id: Changes,v 1.9 2000/09/06 23:08:14 ckyc Exp $

Revision history for Perl extension LibWeb
Unless otherwise specified, all changes do not adversely affect
LibWeb's API and client codes written for previous versions of LibWeb.




o Canceled USER_LOG_TABLE_UID `auto_increment' property, and updated
LibWeb::Admin::add_new_user() accordingly. Therefore, we do not
have to worry about the corresponding entry in the user log table
when we are deleting an entry in the user profile table. See
patch/alter_t.sql for details if you are upgrading LibWeb from
previous version.


o LibWeb::Themes::Default::bordered_titled_table supports border color
different than the title's.



o Logo display in LibWeb::HTML::Default::header().

o Bug in LibWeb::File::read_lines_from_file().

o Links to LibWeb's ftp in all pods.

o various HTML syntax errors in LibWeb::Themes::Default.

o LibWeb::Admin::add_new_user() now checks if user name contains

o LibWeb::HTML::Default now ISAs LibWeb::Themes::Default.

o LibWeb::CGI now supports without cgi_error() (i.e. pre

o LibWeb::Database_init()'s fatal when there is no database (added rc:

o The ``require LibWeb::Crypt'' bug in LibWeb::Core::alert_admin().


o LibWeb::HTML::Default's header(), sheader(), lpanel(), content(),
rpanel() and footer() now return an ARRAY reference instead of SCALAR
reference. Sample class MyHTML changed accordingly.

o Sample script lm.cgi: $p_is_just_login changed from '.a' to '.b' and
$p_is_first_time changed from '.b' tp '.c'.

o `use DBI;' into `require DBI;' at line 29 of LibWeb::Database.

o Deprecated rc:Lib_ROOT and rc:COPYRIGHT. LibWeb::HTML::Default and
MyHTML changed accordingly.

o Separated Crypt into Crypt and Digest.

o LibWeb::Session::is_login() and LibWeb::Admin::is_login() are now
deprecated (actually, they refer to the same method). They are
replaced by LibWeb::Session::get_user() and LibWeb::Admin::get_user()

o Changed the name for LibWeb::HTML::Site to LibWeb::HTML::Standard.


o `croak' in various places of LibWeb::HTML::Default,
LibWeb::HTML::Error and LibWeb::Themes::Default, this makes
debugging applications easier.

o `_parse_construct()' and `_parse_content()' in LibWeb::HTML::Default
and LibWeb::Themes::Default respectively. Updated the sample class
`MyHTML' accordingly.

o fatal call in LibWeb::Session::is_browser_cookie_enabled().

o `IS_DB_ENABLED' option in dot_lwrc file.

o bordered_titled_table() and enlighted_titled_table() in
LibWeb::Themes::Default. Set the standard in how methods should be
named in a theme class; they should be named in alphabetical order
for easy API.

o $core->{OS} so that LEAPs can perform some portability tweaking
according to this variable

o LibWeb::Themes::tabber(); allows you to add a tabbing navigation bar
to your HTML pages.

o In READEME, added download locations for LibWeb's dependencies.

o Fatal errors logging ability; added rc: FATAL_LOG.

o Documentation for is_logout() in LibWeb::Admin.

o `SMTP' option in dot_lwrc and LibWeb now uses Mail::Sendmail and
hence LibWeb now supporting NT platform with respect to mailing.

Sat May 13 01:42:11 2000
- original version; created by h2xs 1.18

Todo [txt]
$Id: TODO,v 1.16 2000/09/06 23:08:14 ckyc Exp $

20/07/2000 LibWeb-0.02
o Add more methods in LibWeb::Themes::Default. For example, add some
HTML form generation templates in LibWeb::Themes::Default.

o Add more methods in LibWeb::Database::Mysql.

o Add some themes.

o Add MyThemes in ./eg.

o Fix LibWeb::CGI OO bugs.

o Fix ``redirect'' security hole.

o Multiple database support. Tell user to put something like
DB_NAME.USER_LOG_TABLE in the rc file to specify the db for libweb's
user log table (this syntax may be MySQL specific). Add
LibWeb::Database::get_db_handle() and get_statement_handle().

o Advocate $self->{OS}, $self->{CRLF} and $self->{PATH_SEP}.

o Add 'guest' option in lm.cgi ($Is_allow_guest, $Is_login_alert_admin).

o fatal should not send password in plain text, e.g. when
loginindicator high.

o Add filtering ability in LibWeb::Core::sanitize( -html=> );
i.e. something like LibWeb::Core::sanitize( -html=>, -allow=>[] ).

o In README, tell people to read patch/alter_t.sql if they are

o True session management (use Apache::Session or implement it in
LibWeb: register(), freeze() and serialize()), i.e. not just
authentication handling. Allow either performing it through cookies or
via database interaction per page displayed (expensive). This should
be mainly for storing application states and not application data.
There should be separate database table for each application's own

o Review the possibility of using HTTP GET if the remote browser is
not cookie enabled (every `A' and `FORM' HTML tag will need to
be appended the variable).

o Advocate putting
"print $q->header( -expires => $a->{CLASSIC_EXPIRES} );"
on every `protected session' pages.

o Add LibWeb::Admin::forgot_password(): Change the password in
database and mail the new password to the registered e-mail address.

o Review the possibility of adding LibWeb::Admin::add_tmp_user(): E-mail
a randomly generated password to the tmp user and tell the user to
click on a link (possibly need to add
LibWeb::Admin::activate_tmp_account()) to activate her/his account.

o Review the possibility of adding two columns (`GROUP' and `GID') in the
USER_PROFILE database table or a separate table. This allows fine
tune page access according to the group a user belong to.
Implementation will need to

* Add an entry in the rc file (e.g. GROUPS => { 0 => 'wheel'}).

* Change the code for LibWeb::Admin::add_new_user() and get_user()
accordingly. The structure of the authentication cookie needs to be
changed to reflect that and hence several get/parse cookie methods
will also need to be changed.

o Use Class::Singleton in LibWeb::Class [need fine tone]. All derived
classes are
changed accordingly by adding a method _new_instance() to each of
them. Sample classes and and sample scripts
lw.cgi and lm.cgi are changed accordingly. Documents are also
changed to reflect this.

o Fix font color problem since is obsoleted in
HTML 4.0?

o LibWeb::HTML::Default::display_error() should uses header() and
footer(), etc.

o Use Crypt::UnixCrypt

o Change all theme table names to *box.

Copyright © 2000-2002 LibWeb.
All trademarks and copyrights on this page are properties of their respective owners. Forum comments are owned by the poster.