NAME
Lavoco::Web::Editor - Experimental framework with two constraints: FastCGI and Template::Toolkit to edit flat files.
VERSION
Version 0.03
SYNOPSIS
Framework to run small web app to edit flat files, running as a FastCGI application.
use Lavoco::Web::Editor;
my $editor = Lavoco::Web::Editor->new( name => 'Example editor' );
my $action = lc( $ARGV[0] ); # (start|stop|restart)
$editor->$action;
METHODS
Class Methods
new
Creates a new instance of the web-app editor object.
Attributes
name
The identifier for the web-app, used as the FastCGI-process title.
base
The base directory of the application, detected using FindBin.
processes
Number of FastCGI process to spawn, 5 by default.
filename
Filename for the config file, default is editor.json and only JSON is currently supported.
config
The config as a hash-reference.
Instance Methods
start
Starts the FastCGI daemon. Performs basic checks of your environment and dies if there's a problem.
stop
Stops the FastCGI daemon.
restart
Restarts the FastCGI daemon, with a 1 second delay between stopping and starting.
CONFIGURATION
The editor app should be a simple Perl script in a folder with the following structure:
editor.pl # see the synopsis
editor.json # config, see below
editor.pid # generated, to control the process
editor.sock # generated, to accept incoming FastCGI connections
logs/
The config file is read for each and every request, this makes adding new pages easy, without the need to restart the application - you can edit its own config file.
The config file should be placed in the base directory of your editor application.
See the examples directory for a sample JSON config file, something like the following...
{
"password" : "foo",
"salt" : "abc123",
"folders" : [
"templates/content/organic",
"templates/content/store"
],
"files" : [
"app.json",
"site/style.css"
]
}
Two fields which drive the editor are folders and files, each of which is an array of paths, all relative to $editor->base.
Files in the folders are all editable, but not sub-directories, you need to add those separately.
If the field for password exists in the config, then this will be requested before a user can access the index page (listing all files that can be edited).
When using a password, a salt is also required, just create a random string, it's concatenated to the password before SHA-hashing and setting as a cookie.
TODO
Allow absolute paths to any part of the filesystem?
AUTHOR
Rob Brown, <rob at intelcompute.com>
LICENSE AND COPYRIGHT
Copyright 2014 Rob Brown.
This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.
See http://dev.perl.org/licenses/ for more information.