diff --git a/README.md b/README.md index b3c9fd6..adc94cd 100644 --- a/README.md +++ b/README.md @@ -99,7 +99,7 @@ Installing Puzzle Categories Puzzle categories are distributed in a different way than the server. After setting up (see above), just run - $ /srv/koth/mycontest/bin/install-category /path/to/my/category + $ /srv/moth/mycontest/bin/install-category /path/to/my/category Permissions diff --git a/src/mothd b/src/mothd index ffad247..e21ad55 100755 --- a/src/mothd +++ b/src/mothd @@ -1,12 +1,12 @@ #! /bin/sh cd ${1:-$(dirname $0)} -KOTH_BASE=$(pwd) +MOTH_BASE=$(pwd) -echo "Running koth instances in $KOTH_BASE" +echo "Running moth instances in $MOTH_BASE" while true; do - for i in $KOTH_BASE/*/assigned.txt; do + for i in $MOTH_BASE/*/assigned.txt; do dir=${i%/*} $dir/bin/once done diff --git a/tools/mothd b/tools/mothd index ffad247..e21ad55 100755 --- a/tools/mothd +++ b/tools/mothd @@ -1,12 +1,12 @@ #! /bin/sh cd ${1:-$(dirname $0)} -KOTH_BASE=$(pwd) +MOTH_BASE=$(pwd) -echo "Running koth instances in $KOTH_BASE" +echo "Running moth instances in $MOTH_BASE" while true; do - for i in $KOTH_BASE/*/assigned.txt; do + for i in $MOTH_BASE/*/assigned.txt; do dir=${i%/*} $dir/bin/once done diff --git a/www/cgi-bin/koth.lua b/www/cgi-bin/moth.lua similarity index 80% rename from www/cgi-bin/koth.lua rename to www/cgi-bin/moth.lua index df23523..f0a40de 100644 --- a/www/cgi-bin/koth.lua +++ b/www/cgi-bin/moth.lua @@ -1,9 +1,9 @@ #! /usr/bin/env lua -local koth = {} +local moth = {} -- cut -d$ANCHOR -f2- | grep -Fx "$NEEDLE" -function koth.anchored_search(haystack, needle, anchor) +function moth.anchored_search(haystack, needle, anchor) local f, err = io.open(haystack) if (not f) then return false, err @@ -27,7 +27,7 @@ function koth.anchored_search(haystack, needle, anchor) return false end -function koth.page(title, body) +function moth.page(title, body) if (os.getenv("REQUEST_METHOD")) then print("Content-type: text/html") print() @@ -62,7 +62,7 @@ end -- -- We're going to rely on `bin/once` only processing files with the right number of lines. -- -function koth.award_points(team, category, points, comment) +function moth.award_points(team, category, points, comment) team = team:gsub("[^0-9a-f]", "-") if (team == "") then team = "-" @@ -75,19 +75,19 @@ function koth.award_points(team, category, points, comment) entry = entry .. " " .. comment end - local f = io.open(koth.path("state/teams/" .. team)) + local f = io.open(moth.path("state/teams/" .. team)) if (f) then f:close() else return false, "No such team" end - local ok = koth.anchored_search(koth.path("state/points.log"), entry, " ") + local ok = moth.anchored_search(moth.path("state/points.log"), entry, " ") if (ok) then return false, "Points already awarded" end - local f = io.open(koth.path("state/points.new/" .. filename), "a") + local f = io.open(moth.path("state/points.new/" .. filename), "a") if (not f) then return false, "Unable to write to points file" end @@ -101,19 +101,19 @@ end -- Most web servers cd to the directory containing the CGI. -- Not uhttpd. -koth.base = "" -function koth.path(p) - return koth.base .. p +moth.base = "" +function moth.path(p) + return moth.base .. p end -- Traverse up to find assigned.txt for i = 0, 5 do - local f = io.open(koth.path("state/assigned.txt")) + local f = io.open(moth.path("state/assigned.txt")) if (f) then f:close() break end - koth.base = koth.base .. "../" + moth.base = moth.base .. "../" end -return koth +return moth diff --git a/www/cgi-bin/puzzler.cgi b/www/cgi-bin/puzzler.cgi index 3b51c70..2d79ee5 100755 --- a/www/cgi-bin/puzzler.cgi +++ b/www/cgi-bin/puzzler.cgi @@ -3,7 +3,7 @@ package.path = "?.lua;cgi-bin/?.lua;www/cgi-bin/?.lua" local cgi = require "cgi" -local koth = require "koth" +local moth = require "moth" local team = cgi.fields['t'] or "" local category = cgi.fields['c'] or "" @@ -15,20 +15,20 @@ category = category:gsub("[^A-Za-z0-9_]", "-") -- Check answer local needle = points .. " " .. answer -local haystack = koth.path("packages/" .. category .. "/answers.txt") -local found, err = koth.anchored_search(haystack, needle) +local haystack = moth.path("packages/" .. category .. "/answers.txt") +local found, err = moth.anchored_search(haystack, needle) if (not found) then - koth.page("Wrong answer", err) + moth.page("Wrong answer", err) end -local ok, err = koth.award_points(team, category, points) +local ok, err = moth.award_points(team, category, points) if (not ok) then - koth.page("Error awarding points", + moth.page("Error awarding points", "
You got the right answer, but there was a problem trying to give you points:
" .. "" .. err .. "
") end -koth.page("Points awarded", +moth.page("Points awarded", "" .. points .. " points for " .. team .. "!
" .. "") diff --git a/www/cgi-bin/register.cgi b/www/cgi-bin/register.cgi index 7017016..ef28f2e 100755 --- a/www/cgi-bin/register.cgi +++ b/www/cgi-bin/register.cgi @@ -4,7 +4,7 @@ package.path = "?.lua;cgi-bin/?.lua;www/cgi-bin/?.lua" local cgi = require "cgi" -local koth = require "koth" +local moth = require "moth" local team = cgi.fields["n"] or "" local hash = cgi.fields["h"] or "" @@ -12,22 +12,22 @@ local hash = cgi.fields["h"] or "" hash = hash:match("[0-9a-f]*") if ((hash == "") or (team == "")) then - koth.page("Invalid Entry", "Oops! Are you sure you got that right?") -elseif (not koth.anchored_search(koth.path("state/assigned.txt"), hash)) then - koth.page("Invalid Hash", "Oops! I don't have a record of that hash. Did you maybe use capital letters accidentally?") + moth.page("Invalid Entry", "Oops! Are you sure you got that right?") +elseif (not moth.anchored_search(moth.path("state/assigned.txt"), hash)) then + moth.page("Invalid Hash", "Oops! I don't have a record of that hash. Did you maybe use capital letters accidentally?") end -local f = io.open(koth.path("state/teams/" .. hash)) +local f = io.open(moth.path("state/teams/" .. hash)) if (f) then f:close() - koth.page("Already Exists", "Your team has already been named! Maybe somebody on your team beat you to it.") + moth.page("Already Exists", "Your team has already been named! Maybe somebody on your team beat you to it.") end -local f, err = io.open(koth.path("state/teams/" .. hash), "w+") +local f, err = io.open(moth.path("state/teams/" .. hash), "w+") if (not f) then - koth.page("Kersplode", err) + moth.page("Kersplode", err) end f:write(team) f:close() -koth.page("Success", "Okay, your team has been named and you may begin using your hash!") +moth.page("Success", "Okay, your team has been named and you may begin using your hash!") diff --git a/www/cgi-bin/token.cgi b/www/cgi-bin/token.cgi index 6e03abe..62b95a6 100755 --- a/www/cgi-bin/token.cgi +++ b/www/cgi-bin/token.cgi @@ -3,36 +3,36 @@ package.path = "?.lua;cgi-bin/?.lua;www/cgi-bin/?.lua" local cgi = require "cgi" -local koth = require "koth" +local moth = require "moth" local team = cgi.fields['t'] or "" local token = cgi.fields['k'] or "" -- Check answer local needle = token -local haystack = koth.path("state/tokens.txt") -local found, err = koth.anchored_search(haystack, needle) +local haystack = moth.path("state/tokens.txt") +local found, err = moth.anchored_search(haystack, needle) if (not found) then - koth.page("Unrecognized token", err) + moth.page("Unrecognized token", err) end local category, points = token:match("^(.*):(.*):") if ((category == nil) or (points == nil)) then - koth.page("Unrecognized token", "Something doesn't look right about that token") + moth.page("Unrecognized token", "Something doesn't look right about that token") end points = tonumber(points) -- Defang category name; prevent directory traversal category = category:gsub("[^A-Za-z0-9]", "-") -local ok, err = koth.award_points(team, category, points, token) +local ok, err = moth.award_points(team, category, points, token) if (not ok) then - koth.page("Error awarding points", + moth.page("Error awarding points", "You entered a valid token, but there was a problem trying to give you points:
" .. "" .. err .. "
") end -koth.page("Points awarded", +moth.page("Points awarded", "" .. points .. " points for " .. team .. "!
" .. "")