smr/doc/hacking.md

1.8 KiB

A gentle introduction to SMR

SMR is a small Pastebin clone, with a few extra features. One of it's goals is to be simple and easy to modify. This document will explain how:

Downloading

The canonical location for the SMR source repository is https://git.fuwafuwa.moe/rmalley/smr In the case of downtime, a mirror is available at https://dev.sum7.eu/Robin.Malley/smr

Dependencies

SMR requires the following things to be install on the host system.

  • kore - Web server framework for C https://kore.io
  • luarocks - package manager for the Lua programming language. Will require a working Lua environment. The maintainer recommends luajit, SMR is written against Lua 5.1, but should still work on 5.2. Lua 5.3 introduced breaking changes and may require additional modification.
    • spp - A simple preprocessor used to preprocess some files.

Installing

After doing git clone, make and make install, SMR will install itself under /var/lib/smr/, in this folder, there will be 2 more folders, each corresponding to a chroot environment:

  • kore_worker - The chroot where business logic runs. All application code lives under /var/smr/. This chroot also holds the database for at /var/smr/data/posts.db (so the full path from the host to the database is /var/lib/smr/kore_worker/var/smr/data/posts.db). After the kore worker starts and chroots, it runs the file /var/smr/init.lua. In addition, SMR will install lua rocks under /usr/lib/luarocks under the chroot.

  • kore_keymgr - The chroot where https keys are stored. The entire point of the keymgr process is to separate the processes that runs business logic from the process that holds encryption keys. In theory, even in the event of an arbitrary code execution vulnerability in the SMR code, the encryption keys used for the site should still be safe.