branches: front
Clone
clone: git://shithub.us/sl/barf gits://shithub.us/sl/barf
push: hjgit://shithub.us/sl/barf
patches to: sl@stanleylieber.com
Last commit
c7faa54a
– sl <sl@gaff>
authored
on 2024/09/02 22:20
lib/core: implement rudimentary whitelist filter in parse_get_args() and parse_post_args()
About
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 # redirect to /login
allow_anon=1 # allow posts without logging in
_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
http://plan9.stanleylieber.com/werc/apps/barf.tgz
https://only9fans.com/sl/barf/HEAD/info.html
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://only9fans.com/sl/rrss/HEAD/info.html
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.