Start work to drop spp
Start refactoring pages, makefile, ect to drop the simple preprocessor as a dependency.
This commit is contained in:
parent
68e73aba3e
commit
60213086dc
92
Makefile
92
Makefile
|
@ -11,20 +11,19 @@ GREP=grep
|
||||||
SORT=sort
|
SORT=sort
|
||||||
|
|
||||||
# Config
|
# Config
|
||||||
worker_chroot = /var/lib/smr/kore_worker
|
worker_chroot = $(smr_var)/kore_worker
|
||||||
kmgr_chroot = /var/lib/smr/kore_kmgr
|
kmgr_chroot = $(smr_var)/kore_kmgr
|
||||||
parent_chroot = /var/lib/smr/kore_parent
|
parent_chroot = $(smr_var)/kore_parent
|
||||||
conf_path = /etc/smr
|
conf_path = /etc/smr
|
||||||
|
smr_bin_path = /usr/local/lib
|
||||||
host_config = /etc/smr
|
ifeq ($(DEV),true)
|
||||||
|
worker_chroot = ./kore_chroot
|
||||||
ifeq ($(DEV),"true")
|
kmgr_chroot = ./kore_chroot
|
||||||
approot=/
|
parent_chroot = ./kore_chroot
|
||||||
chroot_dir=./kore_chroot$(approot)
|
conf_path = ./kore_chroot/conf
|
||||||
else
|
smr_bin_path = ./kore_chroot
|
||||||
approot=/var/smr/
|
|
||||||
chroot_dir=$(worker_chroot)$(approot)
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
mirror=http://dl-cdn.alpinelinux.org/alpine/
|
mirror=http://dl-cdn.alpinelinux.org/alpine/
|
||||||
arch=aarch64
|
arch=aarch64
|
||||||
version=2.12.9
|
version=2.12.9
|
||||||
|
@ -33,14 +32,14 @@ certbot_email=--register-unsafely-without-email
|
||||||
user=robin
|
user=robin
|
||||||
port=8888
|
port=8888
|
||||||
domain=test.monster:$(port)
|
domain=test.monster:$(port)
|
||||||
server_cert=cert/server.pem
|
server_cert=/root/cert/server.pem
|
||||||
server_key=cert/key.pem
|
server_key=/root/cert/key.pem
|
||||||
|
|
||||||
SPPFLAGS=-D port=$(port) -D kore_chroot=$(chroot_dir) -D chuser=$(user) -D domain=$(domain) -D bin_path="$(bin_path)" -D server_cert="$(server_cert)" -D server_key="$(server_key)" -D worker_chroot="$(worker_chroot)" -D kmgr_chroot="$(kmgr_chroot)" -D approot="$(approot)"
|
SPPFLAGS=-D port=$(port) -D kore_chroot=$(build_dir) -D chuser=$(user) -D domain=$(domain) -D bin_path="$(bin_path)" -D server_cert="$(server_cert)" -D server_key="$(server_key)" -D worker_chroot="$(worker_chroot)" -D kmgr_chroot="$(kmgr_chroot)"
|
||||||
# squelch prints, flip to print verbose information
|
# squelch prints, flip to print verbose information
|
||||||
#Q=@
|
#Q=@
|
||||||
Q=
|
Q=
|
||||||
LUAROCKS_FLAGS=--tree $(chroot_dir)/usr/lib/luarocks --lua-version 5.1
|
LUAROCKS_FLAGS=--tree $(build_dir)/usr/lib/luarocks --lua-version 5.1
|
||||||
chroot_packages=\
|
chroot_packages=\
|
||||||
-p luarocks5.1 \
|
-p luarocks5.1 \
|
||||||
-p "build-base" \
|
-p "build-base" \
|
||||||
|
@ -49,7 +48,6 @@ chroot_packages=\
|
||||||
-p luajit \
|
-p luajit \
|
||||||
-p "lua5.1-dev" \
|
-p "lua5.1-dev" \
|
||||||
-p "luajit-dev" \
|
-p "luajit-dev" \
|
||||||
-p "lua5.1-lpeg" \
|
|
||||||
-p sqlite \
|
-p sqlite \
|
||||||
-p "sqlite-dev" \
|
-p "sqlite-dev" \
|
||||||
-p certbot \
|
-p certbot \
|
||||||
|
@ -69,20 +67,19 @@ lua_files=$(shell find src/lua/*.lua -type f) $(shell find src/lua/endpoints -ty
|
||||||
src_files=$(shell find src -type f) $(shell find conf -type f)
|
src_files=$(shell find src -type f) $(shell find conf -type f)
|
||||||
sql_files=$(shell find src/sql -type f)
|
sql_files=$(shell find src/sql -type f)
|
||||||
test_files=$(shell find spec -type f)
|
test_files=$(shell find spec -type f)
|
||||||
built_tests=$(test_files:%=$(chroot_dir)%)
|
built_tests=$(test_files:%=$(build_dir)%)
|
||||||
built_files=$(lua_files:src/lua/%.lua=$(chroot_dir)%.lua)
|
built_files=$(lua_files:src/lua/%.lua=$(build_dir)%.lua)
|
||||||
in_page_files=$(shell find src/pages/*.in -type f)
|
in_page_files=$(shell find src/pages/*.in -type f)
|
||||||
in_part_files=$(shell find src/pages/parts/*.in -type f)
|
|
||||||
page_files=$(in_page_files:%.in=%)
|
page_files=$(in_page_files:%.in=%)
|
||||||
part_files=$(in_part_files:%.in=%) $(shell find src/pages/parts/*.etlua -type f)
|
part_files=$(shell find src/pages/parts/*.etlua -type f)
|
||||||
built_pages=$(page_files:src/pages/%.etlua=$(chroot_dir)pages/%.etlua)
|
built_pages=$(page_files:src/pages/%.etlua=$(build_dir)pages/%.etlua)
|
||||||
built_sql=$(sql_files:src/sql/%.sql=$(chroot_dir)sql/%.sql)
|
built_sql=$(sql_files:src/sql/%.sql=$(build_dir)sql/%.sql)
|
||||||
built=$(built_files) $(built_sql) $(built_pages) $(built_tests)
|
built=$(built_files) $(built_sql) $(built_pages) $(built_tests)
|
||||||
asset_in_files=$(wildcard assets/*.in -type f)
|
asset_in_files=$(wildcard assets/*.in -type f)
|
||||||
asset_files=$(asset_in_files:%.in=%)
|
asset_files=$(asset_in_files:%.in=%)
|
||||||
initscript=/lib/systemd/system/smr.service
|
initscript=/lib/systemd/system/smr.service
|
||||||
config=$(conf_path)/smr.conf
|
config=$(conf_path)/smr.conf
|
||||||
bin_path=$(shell pwd)
|
built_bin=$(smr_bin_path)/smr.so
|
||||||
|
|
||||||
APK_aarch64_HASH=0164d47954c8a52e8ed10db1633174974a3b1e4182a1993a5a8343e394ee1bbc
|
APK_aarch64_HASH=0164d47954c8a52e8ed10db1633174974a3b1e4182a1993a5a8343e394ee1bbc
|
||||||
APK_x86_64_HASH=5176da3d4c41f12a08b82809aca8e7e2e383b7930979651b8958eca219815af5
|
APK_x86_64_HASH=5176da3d4c41f12a08b82809aca8e7e2e383b7930979651b8958eca219815af5
|
||||||
|
@ -91,13 +88,7 @@ apk_hash := $(APK_$(arch)_HASH)
|
||||||
help: ## Print this help
|
help: ## Print this help
|
||||||
$(Q)$(GREP) -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | $(SORT) | $(AWK) 'BEGIN {FS = ":.*?## "}; {printf "%-10s %s\n", $$1, $$2}'
|
$(Q)$(GREP) -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | $(SORT) | $(AWK) 'BEGIN {FS = ":.*?## "}; {printf "%-10s %s\n", $$1, $$2}'
|
||||||
|
|
||||||
all: $(chroot_dir) smr.so $(built_files) $(built_pages) $(built_sql) ## Build and run smr in a chroot
|
all: $(build_dir) smr.so $(built_files) $(built_pages) $(built_sql) ## Build and run smr in a chroot
|
||||||
$(Q)$(ECHO) "[running] $@"
|
|
||||||
$(Q)$(KODEV) run
|
|
||||||
|
|
||||||
conf/smr.conf : conf/smr.conf.in Makefile
|
|
||||||
$(Q)$(ECHO) "[preprocess] $@"
|
|
||||||
$(Q)$(SPP) -o $@ $(SPPFLAGS) $<
|
|
||||||
|
|
||||||
apk-tools-static-$(version).apk:
|
apk-tools-static-$(version).apk:
|
||||||
wget -q $(mirror)latest-stable/main/$(arch)/apk-tools-static-$(version).apk
|
wget -q $(mirror)latest-stable/main/$(arch)/apk-tools-static-$(version).apk
|
||||||
|
@ -106,30 +97,29 @@ clean: ## clean up all the files generated by this makefile
|
||||||
$(Q)$(ECHO) "[clean] $@"
|
$(Q)$(ECHO) "[clean] $@"
|
||||||
$(Q)$(KODEV) clean
|
$(Q)$(KODEV) clean
|
||||||
$(Q)$(RM) $(page_files)
|
$(Q)$(RM) $(page_files)
|
||||||
$(Q)$(RM) conf/smr.conf
|
|
||||||
$(Q)$(RM) src/pages/parts/story_breif.etlua
|
|
||||||
$(Q)$(RM) src/lua/config.lua
|
|
||||||
$(Q)$(RM) $(asset_files)
|
$(Q)$(RM) $(asset_files)
|
||||||
|
$(Q)$(RM) smr.so
|
||||||
|
|
||||||
install: $(worker_chroot) $(kmgr_chroot) $(parent_chroot) $(initscript) $(config) smr.so $(built_files) $(built_pages) $(built_sql) ## Install smr into a new host system
|
install: $(worker_chroot) $(kmgr_chroot) $(parent_chroot) $(initscript) $(config) smr.so $(built_files) $(built_pages) $(built_sql) ## Install smr into a new host system
|
||||||
|
$(Q)$(COPY) smr.so $(built_bin)
|
||||||
|
|
||||||
$(config) : conf/smr.conf
|
$(config) : conf/smr.conf
|
||||||
$(Q)$(MKDIR) $(host_config)
|
$(Q)$(MKDIR) $(conf_path)
|
||||||
$(Q)$(COPY) $< $@
|
$(Q)$(COPY) $< $@
|
||||||
|
|
||||||
$(initscript) : packaging/systemd/smr.service
|
$(initscript) : packaging/systemd/smr.service
|
||||||
$(Q)$(COPY) $< $@
|
$(Q)$(COPY) $< $@
|
||||||
|
|
||||||
cloc: ## calculate source lines of code in smr
|
cloc: ## calculate source lines of code in smr
|
||||||
cloc --force-lang="html",etlua.in --force-lang="html",etlua src assets Makefile
|
cloc --force-lang="html",etlua.in --force-lang="html",etlua --force-lang="lua",lua.in src assets Makefile
|
||||||
|
|
||||||
$(chroot_dir):
|
$(build_dir):
|
||||||
$(Q)$(MKDIR) $(chroot_dir)
|
$(Q)$(MKDIR) $(build_dir)
|
||||||
$(Q)$(MKDIR) $(chroot_dir)/pages
|
$(Q)$(MKDIR) $(build_dir)/pages
|
||||||
$(Q)$(MKDIR) $(chroot_dir)/sql
|
$(Q)$(MKDIR) $(build_dir)/sql
|
||||||
$(Q)$(MKDIR) $(chroot_dir)/data
|
$(Q)$(MKDIR) $(build_dir)/data
|
||||||
$(Q)$(MKDIR) $(chroot_dir)/data/archive
|
$(Q)$(MKDIR) $(build_dir)/data/archive
|
||||||
$(Q)$(MKDIR) $(chroot_dir)/endpoints
|
$(Q)$(MKDIR) $(build_dir)/endpoints
|
||||||
|
|
||||||
alpine-chroot-install:
|
alpine-chroot-install:
|
||||||
$(Q)wget https://raw.githubusercontent.com/alpinelinux/alpine-chroot-install/v0.14.0/alpine-chroot-install \
|
$(Q)wget https://raw.githubusercontent.com/alpinelinux/alpine-chroot-install/v0.14.0/alpine-chroot-install \
|
||||||
|
@ -144,13 +134,13 @@ $(worker_chroot) $(kmgr_chroot) $(parent_chroot): alpine-chroot-install
|
||||||
|
|
||||||
code : $(built_files)
|
code : $(built_files)
|
||||||
|
|
||||||
$(built_files): $(chroot_dir)%.lua : src/lua/%.lua $(chroot_dir)
|
$(built_files): $(build_dir)%.lua : src/lua/%.lua $(build_dir)
|
||||||
$(Q)$(ECHO) "[copy] $@"
|
$(Q)$(ECHO) "[copy] $@"
|
||||||
$(Q)$(COPY) $< $@
|
$(Q)$(COPY) $< $@
|
||||||
|
|
||||||
$(built_pages): $(chroot_dir)pages/%.etlua : src/pages/%.etlua
|
$(built_pages): $(build_dir)pages/%.etlua : src/pages/%.etlua $(build_dir)
|
||||||
$(Q)$(ECHO) "[copy] $@"
|
$(Q)$(ECHO) "[copy] $@"
|
||||||
$(Q)$(COPY) $^ $@
|
$(Q)$(COPY) $< $@
|
||||||
|
|
||||||
src/lua/config.lua : src/lua/config.lua.in Makefile
|
src/lua/config.lua : src/lua/config.lua.in Makefile
|
||||||
$(Q)$(ECHO) "[preprocess] $@"
|
$(Q)$(ECHO) "[preprocess] $@"
|
||||||
|
@ -160,15 +150,11 @@ $(page_files) : % : %.in $(part_files)
|
||||||
$(Q)$(ECHO) "[preprocess] $@"
|
$(Q)$(ECHO) "[preprocess] $@"
|
||||||
$(Q)$(SPP) $(SPPFLAGS) -o $@ $<
|
$(Q)$(SPP) $(SPPFLAGS) -o $@ $<
|
||||||
|
|
||||||
src/pages/parts/story_breif.etlua : src/pages/parts/story_breif.etlua.in
|
$(built_sql): $(build_dir)sql/%.sql : src/sql/%.sql
|
||||||
$(Q)$(ECHO) "[preprocess] $@"
|
|
||||||
$(Q)$(SPP) $(SPPFLAGS) -o $@ $<
|
|
||||||
|
|
||||||
$(built_sql): $(chroot_dir)sql/%.sql : src/sql/%.sql
|
|
||||||
$(Q)$(ECHO) "[copy] $@"
|
$(Q)$(ECHO) "[copy] $@"
|
||||||
$(Q)$(COPY) $^ $@
|
$(Q)$(COPY) $^ $@
|
||||||
|
|
||||||
$(built_tests) : $(chroot_dir)% : %
|
$(built_tests) : $(build_dir)% : src/spec/%
|
||||||
$(Q)$(ECHO) "[copy] $@"
|
$(Q)$(ECHO) "[copy] $@"
|
||||||
$(Q)$(COPY) $^ $@
|
$(Q)$(COPY) $^ $@
|
||||||
|
|
||||||
|
@ -176,7 +162,7 @@ $(asset_files) : % : %.in
|
||||||
$(Q)$(ECHO) "[preprocess] $@"
|
$(Q)$(ECHO) "[preprocess] $@"
|
||||||
$(Q)$(SPP) $(SPPFLAGS) -o $@ $<
|
$(Q)$(SPP) $(SPPFLAGS) -o $@ $<
|
||||||
|
|
||||||
smr.so : $(src_files) conf/smr.conf conf/build.conf $(asset_files) .flavor
|
smr.so : $(src_files) conf/build.conf $(asset_files)
|
||||||
$(Q)$(ECHO) "[build] $@"
|
$(Q)$(ECHO) "[build] $@"
|
||||||
$(Q)$(KODEV) build
|
$(Q)$(KODEV) build
|
||||||
|
|
||||||
|
|
220
conf/smr.conf.in
220
conf/smr.conf.in
|
@ -1,220 +0,0 @@
|
||||||
# smr configuration
|
|
||||||
|
|
||||||
server tls {
|
|
||||||
bind 0.0.0.0 <{get port}>
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
seccomp_tracing yes
|
|
||||||
|
|
||||||
privsep worker {
|
|
||||||
runas root
|
|
||||||
|
|
||||||
root <{get worker_chroot }>
|
|
||||||
|
|
||||||
}
|
|
||||||
privsep keymgr {
|
|
||||||
runas root
|
|
||||||
|
|
||||||
root <{get kmgr_chroot }>
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
load <{get bin_path}>/smr.so
|
|
||||||
|
|
||||||
workers 1
|
|
||||||
|
|
||||||
http_body_max 8388608
|
|
||||||
|
|
||||||
tls_dhparam <{get bin_path}>/dh2048.pem
|
|
||||||
|
|
||||||
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)
|
|
||||||
validator v_bool regex (0|1)
|
|
||||||
validator v_checkbox regex (|on)
|
|
||||||
validator v_hex_128 regex [0-9a-f]{128}
|
|
||||||
validator v_time regex [0-9]+
|
|
||||||
|
|
||||||
domain * {
|
|
||||||
attach tls
|
|
||||||
|
|
||||||
certfile cert/server.pem
|
|
||||||
certkey cert/key.pem
|
|
||||||
|
|
||||||
#I run kore behind a lighttpd reverse proxy, so this is a bit useless to me
|
|
||||||
accesslog /dev/null
|
|
||||||
|
|
||||||
route / {
|
|
||||||
handler home
|
|
||||||
methods get
|
|
||||||
}
|
|
||||||
|
|
||||||
route /_css/style.css {
|
|
||||||
handler asset_serve_style_css
|
|
||||||
methods get
|
|
||||||
}
|
|
||||||
|
|
||||||
route /_css/suggest_tags.css {
|
|
||||||
handler asset_serve_style_css
|
|
||||||
methods get
|
|
||||||
}
|
|
||||||
|
|
||||||
route /_css/milligram.css {
|
|
||||||
handler asset_serve_milligram_css
|
|
||||||
methods get
|
|
||||||
}
|
|
||||||
|
|
||||||
route /_css/milligram.min.css.map {
|
|
||||||
handler asset_serve_milligram_min_css_map
|
|
||||||
methods get
|
|
||||||
}
|
|
||||||
|
|
||||||
route /_faq {
|
|
||||||
handler asset_serve_faq_html
|
|
||||||
methods get
|
|
||||||
}
|
|
||||||
|
|
||||||
route /_js/suggest_tags.js {
|
|
||||||
handler asset_serve_suggest_tags_js
|
|
||||||
methods get
|
|
||||||
}
|
|
||||||
|
|
||||||
route /_js/bookmark.js {
|
|
||||||
handler asset_serve_bookmark_js
|
|
||||||
methods get
|
|
||||||
}
|
|
||||||
|
|
||||||
route /_js/intervine_deletion.js {
|
|
||||||
handler asset_serve_intervine_deletion_js
|
|
||||||
methods get
|
|
||||||
}
|
|
||||||
|
|
||||||
route /_js/index_scroll.js {
|
|
||||||
handler asset_serve_index_scroll_js
|
|
||||||
methods get
|
|
||||||
}
|
|
||||||
|
|
||||||
route /favicon.ico {
|
|
||||||
handler asset_serve_favicon_ico
|
|
||||||
methods get
|
|
||||||
}
|
|
||||||
|
|
||||||
route /_paste {
|
|
||||||
handler post_story
|
|
||||||
methods get post
|
|
||||||
|
|
||||||
validate post title v_any
|
|
||||||
validate post text v_any
|
|
||||||
validate post pasteas v_subdomain
|
|
||||||
validate post markup v_markup
|
|
||||||
validate post tags v_any
|
|
||||||
validate post unlisted v_checkbox
|
|
||||||
}
|
|
||||||
|
|
||||||
route /_edit {
|
|
||||||
handler edit_story
|
|
||||||
methods get post
|
|
||||||
|
|
||||||
validate qs:get story v_storyid
|
|
||||||
|
|
||||||
validate post title v_any
|
|
||||||
validate post story v_storyid
|
|
||||||
validate post text v_any
|
|
||||||
validate post pasteas v_subdomain
|
|
||||||
validate post markup v_markup
|
|
||||||
validate post tags v_any
|
|
||||||
validate post unlisted v_checkbox
|
|
||||||
}
|
|
||||||
|
|
||||||
route /_bio {
|
|
||||||
handler edit_bio
|
|
||||||
methods get post
|
|
||||||
|
|
||||||
validate post text v_any
|
|
||||||
validate post author v_subdomain
|
|
||||||
}
|
|
||||||
|
|
||||||
route /_login {
|
|
||||||
handler login
|
|
||||||
methods get post
|
|
||||||
|
|
||||||
validate post user v_subdomain
|
|
||||||
validate post pass v_any
|
|
||||||
}
|
|
||||||
|
|
||||||
route /_logout {
|
|
||||||
handler logout
|
|
||||||
methods get
|
|
||||||
}
|
|
||||||
|
|
||||||
route ^/_claim {
|
|
||||||
handler claim
|
|
||||||
methods get post
|
|
||||||
|
|
||||||
validate post user v_subdomain
|
|
||||||
}
|
|
||||||
|
|
||||||
route /_download {
|
|
||||||
handler download
|
|
||||||
methods get
|
|
||||||
|
|
||||||
validate qs:get story v_storyid
|
|
||||||
validate qs:get pwd v_hex_128
|
|
||||||
validate qs:get fmt v_any
|
|
||||||
}
|
|
||||||
|
|
||||||
route /_preview {
|
|
||||||
handler preview
|
|
||||||
methods post
|
|
||||||
|
|
||||||
validate post title v_any
|
|
||||||
validate post text v_any
|
|
||||||
validate post pasteas v_subdomain
|
|
||||||
validate post markup v_markup
|
|
||||||
validate post tags v_any
|
|
||||||
validate post unlisted v_checkbox
|
|
||||||
}
|
|
||||||
|
|
||||||
route /_search {
|
|
||||||
handler search
|
|
||||||
methods get
|
|
||||||
|
|
||||||
validate qs:get q v_any
|
|
||||||
}
|
|
||||||
|
|
||||||
route /_archive {
|
|
||||||
handler archive
|
|
||||||
methods get
|
|
||||||
|
|
||||||
validate qs:get t v_time
|
|
||||||
}
|
|
||||||
|
|
||||||
route /_api {
|
|
||||||
handler api
|
|
||||||
methods get
|
|
||||||
|
|
||||||
validate qs:get call v_any
|
|
||||||
validate qs:get data v_any
|
|
||||||
}
|
|
||||||
|
|
||||||
route /_delete {
|
|
||||||
handler delete
|
|
||||||
methods post
|
|
||||||
|
|
||||||
validate post story v_storyid
|
|
||||||
}
|
|
||||||
# Leading ^ is needed for dynamic routes, kore says the route is dynamic if it does not start with '/'
|
|
||||||
route ^/[^_].* {
|
|
||||||
handler read_story
|
|
||||||
methods get post
|
|
||||||
|
|
||||||
validate qs:get comments v_bool
|
|
||||||
validate qs:get pwd v_hex_128
|
|
||||||
|
|
||||||
validate post text v_any
|
|
||||||
validate post postas v_subdomain
|
|
||||||
validate post pwd v_hex_128
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -20,4 +20,8 @@ each worker), and should return a table with at least the following information
|
||||||
order for entrypoints (the strings are the names files)
|
order for entrypoints (the strings are the names files)
|
||||||
]]
|
]]
|
||||||
|
|
||||||
|
local oldconfigure = configure
|
||||||
|
function configure(...)
|
||||||
|
|
||||||
|
return oldconfigure(...)
|
||||||
|
end
|
||||||
|
|
|
@ -21,6 +21,12 @@ local pagenames = {
|
||||||
"search",
|
"search",
|
||||||
"error",
|
"error",
|
||||||
"edit_bio",
|
"edit_bio",
|
||||||
|
"parts/header",
|
||||||
|
"parts/footer",
|
||||||
|
"parts/motd",
|
||||||
|
"parts/search",
|
||||||
|
"parts/story_breif",
|
||||||
|
"parts/taglist"
|
||||||
}
|
}
|
||||||
local pages = {}
|
local pages = {}
|
||||||
for k,v in pairs(pagenames) do
|
for k,v in pairs(pagenames) do
|
||||||
|
|
|
@ -1,32 +0,0 @@
|
||||||
|
|
||||||
<tr><td>
|
|
||||||
<% if story.unlisted then %>
|
|
||||||
⛔
|
|
||||||
<% end %>
|
|
||||||
</td><td>
|
|
||||||
<a href="<%= story.url %>">
|
|
||||||
<%- story.title %>
|
|
||||||
</a>
|
|
||||||
</td><td>
|
|
||||||
<% if story.isanon then %>
|
|
||||||
By Anonymous
|
|
||||||
<% else %>
|
|
||||||
By <a href="https://<%= story.author %>.<%= domain %>"><%= story.author %></a>
|
|
||||||
<% end %>
|
|
||||||
</td><td>
|
|
||||||
<%= story.hits %> hits
|
|
||||||
</td><td>
|
|
||||||
<%= story.ncomments %> comments
|
|
||||||
</td><td>
|
|
||||||
<ul class="row tag-list">
|
|
||||||
<% for i = 1,math.min(#story.tags, 5) do %>
|
|
||||||
<% local tag = story.tags[i] %>
|
|
||||||
<{system cat src/pages/parts/taglist.etlua}>
|
|
||||||
<% end %>
|
|
||||||
<% if #story.tags > 5 then %>
|
|
||||||
<li>+<%= #story.tags - 5 %></li>
|
|
||||||
<% end %>
|
|
||||||
</ul>
|
|
||||||
</td><td>
|
|
||||||
<%= story.posted %>
|
|
||||||
</td></tr>
|
|
|
@ -184,6 +184,7 @@ This method does not requirei any parameters for GET requests.
|
||||||
This method requiries the following for POST requests:
|
This method requiries the following for POST requests:
|
||||||
* user :: [a-z0-9]{1,30} - The username to log in as
|
* user :: [a-z0-9]{1,30} - The username to log in as
|
||||||
* pass :: any - The passfile for this user
|
* pass :: any - The passfile for this user
|
||||||
|
***/
|
||||||
int
|
int
|
||||||
login(struct http_request *req){
|
login(struct http_request *req){
|
||||||
return do_lua(req,"login");
|
return do_lua(req,"login");
|
||||||
|
|
Loading…
Reference in New Issue