pastiche is a BSD licensed awful application providing a basic pastebin service. It has been named pastiche in honor of lisppaste where loads of ideas and the syntax highlighting (indirectly via the colorize egg has been borrowed).
After installation create and compile the following file:
(use awful pastiche) (pastiche "/" "paste.db" awful-settings: (lambda (handler) (parameterize ((debug-file "/tmp/paste") (page-css "http://wiki.call-cc.org/chicken.css") (page-charset "UTF-8") (page-doctype "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">")) (handler))))
load this then with awful
$ awful example-app.scm
Or compile it and load the compiled application:
$ csc -s awful-app.scm $ awful example-app.so
This will run the pastebin service using call-cc.org's css look and feel on your host. Access http://localhost/ for your paste app.
Caveat: If using the search feature with the bundled sql-de-lite db, you need to make sure that the SQLITE_ENABLE_FTS3_PARENTHESIS option is not set. Otherwise people searching for parenthesis make pastiche error out.
- (pastiche base-path db-file #!key (vandusen-port 22722) (vandusen-host "localhost") (base-url "http://paste.call-cc.org") (use-captcha? #t) (audible-captcha? #t) (num-captchas 500) (browsing-steps 15) force-vandusen-notification? (awful-settings (lambda (_) (_))))procedure
Starts pastiche with base-path as the root URL and the sqlite database file db-file. If the database file does not exist, pastiche will create and initialize an empty database.
It supports sending the paste event to the chicken IRC bot vandusen. The message contains of the author, the title of the paste and the url to the paste on one line.
- TCP port number which the vandusen bot listens on
- hostname which vandusen resides on. Set to #f to disable vandusen notifications
- The absolute base URL to the root of pastiche
- If #t iinsert into searchable select * from pastes;t will try to use figlet for creating a captcha. Set to #f to disable captchas
- If #t (the default) it will check for espeak and if that's available on the system will generate wav files on demand for each captcha.
- Defines the number of different captchas that will get created
- The number of paste entries per page
- If bound to a truthy value, unconditionally notify #chicken via vandusen on new pastes. When enabled, the checkbox to select notification via vandusen is not displayed.
- A procedure that will get the path before passed to awful's handler. See awful's documentation for details.
Copyright 2011 Christian Kellermann <email@example.com>. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY CHRISTIAN KELLERMANN ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CHRISTIAN KELLERMANN OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. The views and conclusions contained in the software and documentation are those of the authors and should not be interpreted as representing official policies, either expressed or implied, of Christian Kellermann.
- initial release for C5 based on the 0.33 C4 version
- Forgot to port tests
- Bugfix: seconds are an exact number now