!7 // uses its own transpiler so it can set options cm SnippetTranspiler { switchable int refreshDelay = 1; // seconds switchable S authModuleID; virtual WebResponse html(IWebRequest req) { S realPW = realPW(); if (empty(realPW)) ret "No password set by admin - please put password in: " + realPWFile().getAbsolutePath(); S pw = params.get("_pass"); if (empty(pw)) ret "Need pw"; if (neq(pw, realPW)) { print("XXX - Alert, bad PW entered on web - XXX"); ret "Bad PW, bugger"; } ret dm_evalInQ(-> snippetTranspileWebBot(req.uri(), req.params(), refreshDelay)); } File realPWFile() { ret secretProgramFile("master-pw"); } S realPW() { ret trim(loadTextFile(realPWFile())); } }