# 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 just over 2k SLOC and is expected to never exceed 5k SLOC. Contributions welcome. ## Roadmap * Accounts (complete) * Comments (complete) * Tags (complete) * Search (complete) * Author biographies * Archive 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 `) * 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.