smr/README.md

55 lines
2.2 KiB
Markdown

# SMR
## Overview
This repository contains the source code to a pastebin clone. It was made after
concerns with pastebin.com taking down certain kinds of content. SMR aims to
be small, fast, and secure. It is built on top of [Kore](https://kore.io), using
[luajit](https://luajit.org) to expose a Lua programming environment. It uses
[sqlite3](https://sqlite.org) as it's database. SMR is implemented in about
3.5k SLOC and is expected to never exceed 5k SLOC. Contributions welcome.
## Roadmap
* Accounts (complete)
* Comments (complete)
* Tags (complete)
* Search (complete)
* Archive (in progress)
* Author biographies
* Kore 4.2.0
TODO's:
Currently, people can post comments to unlisted stories even if they don't have
the correct link.
## Hacking
If you want to contribute to this repository:
1. Install the [kore webserver](https://kore.io)(Documentation -> installation)
2. Use a `kodev create smr` to create a blank kore application
3. Install Lua and Luarocks from your package manager
4. Use Luarocks to install the following dependencies (`luarocks install <package>`)
* etlua - Lua templating, comparable to Jinja for Python
* lpeg - Parsing Expression Grammers, used to build text parsers
* lsqlite3 - Sqlite3 for Lua, a lightweight database
* lua-zlib - Data compression
5. You may need to modify conf/build.conf, I use Lua 5.1 on my development machine,
but everything should still work with later versions.
6. Install [spp](https://github.com/radare/spp)
7. Clone this repository into the smr folder, cd into the root, and run `make`!
* You may need to modify the configuration in the Makefile, add `test.monster 127.0.0.1` to your `/etc/hosts`, modify command invocation, ect.
## Misc. notes
SMR requires a slightly modified version of Kore to run. See [my kore patches](https://git.fuwafuwa.moe/rmalley/kore_patches)
for the changes I needed to make to get the JIT compiler playing nice with
Kore's seccomp restrictions. There are a few other changes, like modified kore
to accept any text as input for things like file upload.
**UPDATE (12/18/2020)**
Kore 4.0 no longer needs the seccomp changes, as those have been exposed to
library users, and smr has been updated appropriately. It still needs the
allow-multiline-input patch though.