1
0
Fork 0
mirror of git://git.psyced.org/git/psyced synced 2024-08-15 03:25:10 +00:00

per-room web challenges and an ancient bug fixed

This commit is contained in:
psyc://loupsycedyglgamf.onion/~lynX 2017-07-11 18:31:40 +02:00
parent 92aaf00fff
commit b0b3d375a3
3 changed files with 34 additions and 2 deletions

View file

@ -610,6 +610,35 @@ htget(prot, query, headers, qs) {
}
#endif
#ifdef CHALLENGE_MATCH
#include <sys/regexp.h>
htget(prot, query, headers, qs, data, noprocess) {
if (query["challenge"] == "complete")
return ::htget(prot, query, headers, qs, data, noprocess);
string item = headers[item] || "/@"+ MYNICK;
if (query["challenge"] == "given" &&
# if __EFUN_DEFINED__(regmatch)
stringp(query["answer"]) &&
regmatch(lower_case(query["answer"]), CHALLENGE_MATCH, RE_MATCH_SUBS)
# else
query["answer"] == CHALLENGE_MATCH
# endif
) {
htredirect(prot, item, "Reload, please", 0, "Set-Cookie: psyced=\"challenge=complete\"; path="+ item +";\n");
return 1;
}
sTextPath(query["layout"], query["lang"], "html");
// could add a timeout here...
htok3(prot, 0, "Set-Cookie: psyced=\"challenge=given\"; path="+ item +";\n");
w("_PAGES_group_challenge", 0,
([ "_challenge" : htquote(CHALLENGE_QUESTION),
"_nick_place" : MYNICK ]) );
printf("%O (%O) in %O\n", query, qs, headers);
return 1;
}
#endif
#ifdef HISTORY
# if defined(HISTORY_METHOD) || defined(HISTORY_MAY_LOG)
mayLog(mc) {