Remove extra prints
Remove extra prints so the testing branch dosen't have it's test results cluttered up
This commit is contained in:
parent
86a14e9d62
commit
1236271834
|
@ -4,3 +4,4 @@
|
|||
smr.so
|
||||
assets.h
|
||||
cert
|
||||
kore_chroot/*
|
||||
|
|
11
README.md
11
README.md
|
@ -7,7 +7,7 @@ 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
|
||||
1.5k SLOC and is expected to never exceed 5k SLOC. Contributions welcome.
|
||||
2k SLOC and is expected to never exceed 5k SLOC. Contributions welcome.
|
||||
|
||||
## Roadmap
|
||||
|
||||
|
@ -16,9 +16,18 @@ be small, fast, and secure. It is built on top of [Kore](https://kore.io), using
|
|||
* Tags (complete)
|
||||
* Author biographies
|
||||
|
||||
## Hacking
|
||||
|
||||
If you want to contribute to this repository:
|
||||
1. Install the [kore webserver](https://kore.io) Documentation -> installation
|
||||
|
||||
## 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.
|
||||
|
|
|
@ -13,9 +13,14 @@ p,.tag-list{margin-bottom:0px}
|
|||
.greentext{color:#282}
|
||||
.pinktext{color:#928}
|
||||
.tag-list{list-style-type:none}
|
||||
.tag-list>*{display:inline}
|
||||
.tag{
|
||||
line-height:1.5em;
|
||||
height:1.5em;
|
||||
padding: 0 1em 0 1em;
|
||||
margin: 0 1px 0 1px;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark){
|
||||
@import "css/style_dark.css";
|
||||
}
|
||||
|
|
|
@ -16,7 +16,7 @@ http_body_max 8388608
|
|||
|
||||
tls_dhparam dh2048.pem
|
||||
|
||||
validator v_any regex .*
|
||||
validator v_any regex [\s\S]*
|
||||
validator v_storyid regex [a-zA-Z0-9]+
|
||||
validator v_subdomain regex [a-z0-9]{1,30}
|
||||
validator v_markup regex (plain|imageboard)
|
||||
|
@ -35,12 +35,13 @@ domain * {
|
|||
route /_css/style.css asset_serve_style_css
|
||||
route /_css/milligram.css asset_serve_milligram_css
|
||||
route /_css/milligram.min.css.map asset_serve_milligram_min_css_map
|
||||
route /_css/style_dark.css asset_serve_style_dark_css
|
||||
route /favicon.ico asset_serve_favicon_ico
|
||||
route /_paste post_story
|
||||
route /_edit edit_story
|
||||
route /_bio edit_bio
|
||||
route /_login login
|
||||
route /_claim claim
|
||||
route ^/_claim claim
|
||||
route /_download download
|
||||
route /_preview preview
|
||||
route /_search search
|
||||
|
@ -80,7 +81,6 @@ domain * {
|
|||
}
|
||||
params get ^/[^_].* {
|
||||
validate comments v_bool
|
||||
#validate story v_storyid
|
||||
}
|
||||
params post ^/[^_].* {
|
||||
validate text v_any
|
||||
|
@ -90,7 +90,7 @@ domain * {
|
|||
validate user v_subdomain
|
||||
validate pass v_any
|
||||
}
|
||||
params post /_claim {
|
||||
params post ^/_claim {
|
||||
validate user v_subdomain
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,51 @@
|
|||
--[[
|
||||
Does most of the database interaction.
|
||||
Notably, holds a connection to the open sqlite3 database in .conn
|
||||
]]
|
||||
local sql = require("lsqlite3")
|
||||
|
||||
local queries = require("queries")
|
||||
local util = require("util")
|
||||
|
||||
local db = {}
|
||||
local oldconfigure = configure
|
||||
db.conn = util.sqlassert(sql.open("data/posts.db"))
|
||||
function configure(...)
|
||||
|
||||
--Create sql tables
|
||||
assert(db.conn:exec(queries.create_table_authors))
|
||||
--Create a fake "anonymous" user, so we don't run into trouble
|
||||
--so that no one runs into trouble being able to paste under this account.
|
||||
assert(db.conn:exec(queries.insert_anon_author))
|
||||
--If/when an author deletes their account, all posts
|
||||
--and comments by that author are also deleted (on
|
||||
--delete cascade) this is intentional. This also
|
||||
--means that all comments by other users on a post
|
||||
--an author makes will also be deleted.
|
||||
--
|
||||
--Post text uses zlib compression
|
||||
assert(db.conn:exec(queries.create_table_posts))
|
||||
--Store the raw text so people can download it later, maybe
|
||||
--we can use it for "download as image" or "download as pdf"
|
||||
--in the future too. Stil stored zlib compressed
|
||||
assert(db.conn:exec(queries.create_table_raw_text))
|
||||
--Maybe we want to store images one day?
|
||||
assert(db.conn:exec(queries.create_table_images))
|
||||
--Comments on a post
|
||||
assert(db.conn:exec(queries.create_table_comments))
|
||||
--Tags for a post
|
||||
assert(db.conn:exec(queries.create_table_tags))
|
||||
--Index for tags
|
||||
assert(db.conn:exec(queries.create_index_tags))
|
||||
--Store a cookie for logged in users. Logged in users can edit
|
||||
--their own posts, and edit their biographies.
|
||||
assert(db.conn:exec(queries.create_table_session))
|
||||
return oldconfigure(...)
|
||||
end
|
||||
|
||||
function db.close()
|
||||
db.conn:close()
|
||||
end
|
||||
|
||||
|
||||
return db
|
|
@ -0,0 +1,28 @@
|
|||
--[[
|
||||
Compiles all the pages under src/pages/ with etlua. See the etlua documentation
|
||||
for more info (https://github.com/leafo/etlua)
|
||||
]]
|
||||
local et = require("etlua")
|
||||
local pagenames = {
|
||||
"index",
|
||||
"author_index",
|
||||
"claim",
|
||||
"paste",
|
||||
"edit",
|
||||
"read",
|
||||
"nostory",
|
||||
"cantedit",
|
||||
"noauthor",
|
||||
"login",
|
||||
"author_paste",
|
||||
"author_edit",
|
||||
"search",
|
||||
}
|
||||
local pages = {}
|
||||
for k,v in pairs(pagenames) do
|
||||
local f = assert(io.open("pages/" .. v .. ".etlua","r"))
|
||||
pages[v] = assert(et.compile(f:read("*a")))
|
||||
f:close()
|
||||
end
|
||||
|
||||
return pages
|
|
@ -0,0 +1,10 @@
|
|||
|
||||
--Grammar
|
||||
--Transpile a sting with + and - into an sql query that searches tags
|
||||
local function transpile(str)
|
||||
for chunk in str:gmatch("([+-])([^+-])") do
|
||||
print("found chunk:",chunk)
|
||||
end
|
||||
end
|
||||
|
||||
return transpile
|
Loading…
Reference in New Issue