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