App::mojopaste - Pastebin application
0.24
Mojopaste is a pastebin application. There's about one million of these out there, but if you have the need to run something internally at work or you just fancy having your own pastebin, this is your application.
The standard version of App::mojopaste can take normal text as input, store it as a text file on the server and render the content as either plain text or prettified using Google prettify. (Note: Maybe another prettifier will be used in future versions)
In addition to just supporting text, this application can also make charts from the input data. To turn this feature on, you need to specify "enable_charts" in the config or set the PASTE_ENABLE_CHARTS
environment variable:
$ PASTE_ENABLE_CHARTS=1 script/mojopaste daemon;
The input chart data must be valid CSV:
CSV data is similar to "Just data" above, except the first line is used as "xkey,ykey1,ykey2,...". Example:
# Can have comments in CSV input as well
x,a,b
2015-02-04 15:03,120,90
2015-03-14,75,65
2015-04,100,40
CSV input data require Text::CSV to be installed.
A paste can be embedded in other pages using the query param "embed". Examples:
http://p.thorsen.pm/mojopastedemo.txt
Get the raw data.
http://p.thorsen.pm/mojopastedemo?embed=text
Show the paste without any margin/padding and no menu.
http://p.thorsen.pm/mojopastedemo/chart?embed=graph
Show only the graph data.
http://p.thorsen.pm/mojopastedemo/chart?embed=graph,heading,description
Show the graph data, heading and description, but no menus.
You can try mojopaste here: http://p.thorsen.pm.
Install system wide with cpanm:
$ cpanm --sudo App::mojopaste
Don't have cpanm installed?
$ curl -L http://cpanmin.us | perl - --sudo App::mojopaste
$ wget http://cpanmin.us -O - | perl - --sudo App::mojopaste
Simple single process daemon
$ mojopaste daemon --listen http://*:8080
Save paste to custom dir
$ PASTE_DIR=/path/to/paste/dir mojopaste daemon --listen http://*:8080
Using the UNIX optimized, preforking hypnotoad web server
$ MOJO_CONFIG=/path/to/mojopaste.conf hypnotoad $(which mojopaste)
Example mojopaste.conf:
{ paste_dir => '/path/to/paste/dir', enable_charts => 1, # default is 0 hypnotoad => { listen => ['http://*:8080'], }, }
"enable_charts" is for adding a button which can make a chart of the input data using morris.js
Check out Mojo::Server::Hypnotoad for more hypnotoad options.
If you want to run your pastebin on 2 computers, for the sake of scaling/failover/replication, you can. Simply tell each instance about the others and they'll PUT pastes at each other:
{ hypnotoad => { listen => ['http://*:80'] },
paste_peers => [qw[ http://paste-A http://paste-B http://paste-C ]] }
or
paste-A:~ PASTE_PEERS='http://paste-A http://paste-B http://paste-C' \
morbo -l 'http://*:80' ./script/mojopaste
With this setup you can route web traffic to any one of the nodes and they'll relay the data to one another, which is great for high-read sites or sites who don't want to lose their paste content when a disk fails.
It's kinda sad that you need to introduce all the nodes to each other, but if you're in need of a load balanced pastebin, you likely have some fancy service discovery too.
Jan Henning Thorsen - jhthorsen@cpan.org