More Silly
import module namespace authMiddleware = 'http://middleware..auth' at '[...].xqm'
declare
%rest:preHook:(authMiddleware:authoriseFail2BanRest:input("/main/admin",,)):path("/main/admin"):result($vs_authKeyResult) %rest:query-param("vbJson", " {$vbJson}") %if ($vbJSON = 'true') then %rest:postHook:(noCaching:noCacheFunc):(JSONConversion:xml2JOSNFunc:input($resultdifferent))
%output:method("xml") function local:admin($vs_authKeyResult) { let $authorized := 'Welcome to the admin page' let $unauthorized := 'Your IP has been logged with fail2ban' let $resultdifferent := if ($vs_authKeyResult=true()) then <jsonRep>{$authorized}</jsonRep> else <jsonRep>{$unauthorized}</jsonRep>{ return <xml>{$resultdifferent/*}</xml> };
/--------------------------------- module namespace authMiddleware = 'http://middleware.auth';
import module namespace loggingMiddleware = 'http://middleware.logging' at '[...].xqm'
declare %variable $vsPath external = "/"; %rest:query-param("vs_logAside", " {$vs_logAside}") %preHook:(loggingMiddleware:functionLog:input($vsPath,$vs_logAside)):result($vs_logResult) (:a postHook here would be before the calling function local:admin :) %rest:query-param("vs_authKey", " {$vs_authKey}") function authMiddleware:authoriseFail2BanRest($vsPath,$vs_authKey,$vs_logResult) { let $result := if ($vs_authKey='YKJKhh') then true() else false() let $result := if ($vs_logResult='override') then true() else result() return $result };
/--------------------------------- module namespace loggingMiddleware = 'http://middleware.logging'; module namespace myUpdatingOutput = 'http://function.updatingOutput'; declare %variable $vsPath external = "/"; %variable $vs_logAside external = "/"; function loggingMiddleware:functionLog($vsPath,$vs_logAside) { let $result := if (vs_logAside != 'adminOverride*75x4558') then myUpdatingOutput:logwrite($vsPath,request:remote-address()) else 'override' return $result };