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
};