HTTPS SSH

BARF - emit HTML

DESCRIPTION

BARF utilizes rc(1) and command line tools to compile a structured
directory of files into a single page of HTML. Tagging and RSS 2.0
feeds have been implemented.

SETUP

To enable BARF, add:

    conf_enable_barf

to _werc/config under the site root.

To configure BARF, copy or create the following files under the site
root (example files have been included in this distribution):

_werc/barf/config
    A list of variables that control various site options:

        barf_type=paste # blog, image, log, paste
        posts_per_page=10
        show_ascending=0
        show_footer=0
        show_header=0
        show_sidebar=0
        require_login=0 # if not logged in, redirect to /login
        allow_anon=1 # allow posts without logging in
        show_disqus=0 # include disqus comments template
                # from _werc/barf/disqus

_werc/barf/footer
    HTML or markdown that will appear as the foot of
    the BARF content area.

_werc/barf/header
    HTML or markdown that will appear at the head of
    the BARF content area.

_werc/barf/sidebar
    HTML or markdown that will appear on one side of
    the BARF content area.

Finally, sample stylesheets are provided in the directory
pub/. Copy any of these to _werc/pub/style.css to try
them out.

POSTS

Posts are stored in the directory src/ relative to the
site root.

Directory names in src/ that do not match the regular
expression ^[0-9]*$ will not be included in the listing of
posts that are displayed in the browser. However, such
directories are still accessible when called directly via
an appropriately constructed URL.

A post's directory contains the following files and
directories (an example post's directory has been
included in this distribution):

    body
    date
    img/
    link
    tags/
    title

The img/ directory contains images uploaded to the
image board, including the original image and a
thumbnail version, resized to no greater than 500
pixels wide and 600 pixels tall.

The tags/ directory contains one empty file named
for each tag associated with the post.

The site root contains a file named tags that is compr-
ised of an index of the tags associated with each post.
This index is consulted when searching for a given tag in
the web browser.

UTILS

bin/gf
    Parse Livejournal and Tumblr RSS feeds into
    BARF posts. (Abandoned, may no longer work.)
bin/gk
    Create a list of known tags in the site root in
    a file named known_tags.
bin/gr
    Parse Google Reader bundles into BARF posts.
bin/gt
    Create an index of tags in the site root in a file
    named tags.

For more information on these tools, read the source.

ADMIN

Any tool that can create, alter, or delete flat files
and directories is sufficient to administer a BARF.

Web-based login and administration utilizes werc's
built-in user authentication:

    http://domain.com/login

After login, links to edit and delete will appear in
each post's meta data.

Web-based administration requires that the src/
directory and its sub-directories are writable by
the web server process.

REQUIREMENTS

Unix
    Plan9port or 9base are required. Site type
    image requires ImageMagick and curl. Site
    type url also requires curl if the user employs
    the option to download remote URLs. These
    utilities may be swapped out for others by
    altering the source.

SOURCE

EXAMPLES

blog
    http://read.stanleylieber.com
    RSS feeds are converted by the utility rrss[0]
    and stored as individual blog posts.
image
    http://img.stanleylieber.com
    Hybrid public/private image board. Requires
    standard werc authentication to post, but all
    posts are visible to the public.
paste
    http://okturing.com
    Public pastebin. No authentication required
    to post.
url
    http://url.stanleylieber.com
    Private index of URL bookmarks, similar
    in functionality to the old delicious.com.
    (In fact, most of the index was imported
    from delicious.)

SEE ALSO

[0] https://code.9front.org/hg/rrss

LICENSE

Public domain.

BUGS

On Plan 9, if the web server process is run as user
none (typically the case), directories used for entering
posts or uploading/downloading files from the browser
must be set world writable. This could prove problematic
on multiuser systems.