URI: 
       [DEV] Add extended probes - reed-alert - Lightweight agentless alerting system for server
  HTML git clone git://bitreich.org/reed-alert/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/reed-alert/
   DIR Log
   DIR Files
   DIR Refs
   DIR Tags
   DIR README
   DIR LICENSE
       ---
   DIR commit 6e496d0ce582d7db769a93aa5f582321dc089894
   DIR parent 84cc333bfe3d62aff0d2ff899f58b034ac2ca542
  HTML Author: solene rapenne <solene@dataswamp.org>
       Date:   Fri, 14 Oct 2016 14:21:24 +0200
       
       [DEV] Add extended probes
       
       Diffstat:
         M example.lisp                        |      11 +++++++++++
         A probes-extended.lisp                |      23 +++++++++++++++++++++++
       
       2 files changed, 34 insertions(+), 0 deletions(-)
       ---
   DIR diff --git a/example.lisp b/example.lisp
       @@ -9,6 +9,7 @@
           '(with-plus ("echo -n '" + date + _ + hostname + " had problem on " + function + newline + params + newline
                        + desc + "' | mail -s '[Error] " + function +  " - " + hostname + "' foo@bar.com"))))
        
       +
        (load "functions.lisp")
        
        ;; check if used percent :path partition is more than :limit
       @@ -47,4 +48,14 @@
        (=> void command (:command "echo hello")) ;; success
        (=> void command (:command "ls /non-existent-file")) ;; fail
        
       +(load "probes-extended.lisp")
       +
       +;; check if web page :url answer under :limit
       +(=> void http-response-time (:url "http://google.fr/" :limit 10))
       +
       +;; check if the web page :url contains the text :pattern
       +(=> void http-text-present  (:url "http://google.fr/" :pattern "html"))
       +(=> void http-text-present  (:url "http://google.fr/" :pattern "hello")) ;; error
       +
       +
        (quit)
   DIR diff --git a/probes-extended.lisp b/probes-extended.lisp
       @@ -0,0 +1,23 @@
       +(ql:quickload :drakma)
       +(ql:quickload :cl-ppcre)
       +
       +(create-probe
       + http-response-time
       + (let ((begin (get-universal-time)))
       +   (let ((result (ignore-errors
       +                   (drakma:http-request (getf params :url) :connection-timeout (getf params :timeout 3)))))
       +     (if result
       +         (let ((elapsed-time (- (get-universal-time) begin)))
       +           (if (< elapsed-time (getf params :limit))
       +               t
       +               (list nil elapsed-time)))
       +         (list nil "http connection failure")))))
       +
       +(create-probe
       + http-text-present
       + (ignore-errors
       +   (let ((result (drakma:http-request (getf params :url) :connection-timeout (getf params :timeout 3))))
       +     (if (cl-ppcre:scan (getf params :pattern) result)
       +         t
       +         (list nil "pattern not found")))))
       +