SMOLNET PORTAL home about changes
iChange output to a tab separated output to make it parseable - reed-alert - Lightweight agentless alerting system for server	Err	bitreich.org	70
hgit clone git://bitreich.org/reed-alert/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/reed-alert/	URL:git://bitreich.org/reed-alert/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/reed-alert/	bitreich.org	70
1Log	/scm/reed-alert/log.gph	bitreich.org	70
1Files	/scm/reed-alert/files.gph	bitreich.org	70
1Refs	/scm/reed-alert/refs.gph	bitreich.org	70
1Tags	/scm/reed-alert/tag	bitreich.org	70
1README	/scm/reed-alert/file/README.gph	bitreich.org	70
1LICENSE	/scm/reed-alert/file/LICENSE.gph	bitreich.org	70
i---	Err	bitreich.org	70
1commit e6d5e1bcf78191f5c5e8810564033eab29f7f686	/scm/reed-alert/commit/e6d5e1bcf78191f5c5e8810564033eab29f7f686.gph	bitreich.org	70
1parent 17024e3560369b58c274e68fdd6128ad12fccd49	/scm/reed-alert/commit/17024e3560369b58c274e68fdd6128ad12fccd49.gph	bitreich.org	70
hAuthor: Solene Rapenne <solene@perso.pw>	URL:mailto:solene@perso.pw	bitreich.org	70
iDate:   Tue,  9 Jul 2019 09:05:40 +0200	Err	bitreich.org	70
i	Err	bitreich.org	70
iChange output to a tab separated output to make it parseable	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  M functions.lisp                      |      37 +++++++++++++------------------	Err	bitreich.org	70
i	Err	bitreich.org	70
i1 file changed, 16 insertions(+), 21 deletions(-)	Err	bitreich.org	70
i---	Err	bitreich.org	70
1diff --git a/functions.lisp b/functions.lisp	/scm/reed-alert/file/functions.lisp.gph	bitreich.org	70
i@@ -8,14 +8,6 @@	Err	bitreich.org	70
i (defparameter *states-dir* "~/.reed-alert/states/")	Err	bitreich.org	70
i (ensure-directories-exist *states-dir*)	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-(defun color(num1 num2)	Err	bitreich.org	70
i-  (format nil "~a[~a;~am" #\Escape num1 num2))	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-(defparameter *red*    (color 1 31))	Err	bitreich.org	70
i-(defparameter *white*  (color 0 70))	Err	bitreich.org	70
i-(defparameter *green*  (color 1 32))	Err	bitreich.org	70
i-(defparameter *yellow* (color 0 33))	Err	bitreich.org	70
i-	Err	bitreich.org	70
i ;; simple hash function (Fowler Noll Vo)	Err	bitreich.org	70
i ;; https://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function	Err	bitreich.org	70
i (defun fnv-hash(string)	Err	bitreich.org	70
i@@ -98,11 +90,13 @@	Err	bitreich.org	70
i      (or ,@body)))	Err	bitreich.org	70
i 	Err	bitreich.org	70
i (defun =>(level fonction &rest params)	Err	bitreich.org	70
i-  (format t "[~a~10a ~20A~a] ~45A" *yellow* level fonction *white* (getf params :desc params))	Err	bitreich.org	70
i   (let* ((hash (fnv-hash (format nil "~{~a~}" (remove-if #'symbolp params))))	Err	bitreich.org	70
i          (result (funcall fonction params))	Err	bitreich.org	70
i          (filename (format nil "~a-~a-~a" level fonction hash))	Err	bitreich.org	70
i-         (filepath (format nil "~a/~a" *states-dir* filename)))	Err	bitreich.org	70
i+         (filepath (format nil "~a/~a" *states-dir* filename))	Err	bitreich.org	70
i+         (current-state 'failure) ;; default state is a failure	Err	bitreich.org	70
i+         (previous-state 'success)	Err	bitreich.org	70
i+         (trigger-state 'no))	Err	bitreich.org	70
i 	Err	bitreich.org	70
i     ;; we open the file to read the number of tries	Err	bitreich.org	70
i     ;; if no fail then we have 0 try	Err	bitreich.org	70
i@@ -117,18 +111,17 @@	Err	bitreich.org	70
i       (if (not (listp result))	Err	bitreich.org	70
i           (progn	Err	bitreich.org	70
i 	Err	bitreich.org	70
i+            ;; mark state as success	Err	bitreich.org	70
i+            (setf current-state 'success)	Err	bitreich.org	70
i+	Err	bitreich.org	70
i             ;; we delete the file with previous states	Err	bitreich.org	70
i             (when (probe-file filepath)	Err	bitreich.org	70
i               (delete-file filepath))	Err	bitreich.org	70
i 	Err	bitreich.org	70
i             ;; it was a failure and then it's back to normal state	Err	bitreich.org	70
i-            (if triggered-before?	Err	bitreich.org	70
i-                (progn	Err	bitreich.org	70
i-                  (uiop:run-program (trigger-alert level fonction params t 'success) :output t)	Err	bitreich.org	70
i-                  (format t " => ~afailure => success~a~%" *green* *white*))	Err	bitreich.org	70
i-                (progn	Err	bitreich.org	70
i-                  ;; last time was a success	Err	bitreich.org	70
i-                  (format t " => ~asuccess~a~%" *green* *white*)))	Err	bitreich.org	70
i+            (when triggered-before?	Err	bitreich.org	70
i+              (uiop:run-program (trigger-alert level fonction params t 'success) :output t)	Err	bitreich.org	70
i+              (setf previous-state 'failure))	Err	bitreich.org	70
i             ;; in any case we return t because it's ok	Err	bitreich.org	70
i             t)	Err	bitreich.org	70
i 	Err	bitreich.org	70
i@@ -143,16 +136,18 @@	Err	bitreich.org	70
i                                  (and (= 0 (mod (+ 1 tries) (getf params :reminder *reminder*)))	Err	bitreich.org	70
i                                       'REMINDER)))))  ;; do we need to remind it's failing?	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-            (format t " => ~aerror (~a failure(s) before)~a~a~%" *red* tries *white* (if trigger-now? " NOTIFIED" ""))	Err	bitreich.org	70
i-	Err	bitreich.org	70
i             ;; more error than limit, send alert once	Err	bitreich.org	70
i             (when trigger-now?	Err	bitreich.org	70
i-              (uiop:run-program (trigger-alert level fonction params (cadr result) trigger-now?) :output t))	Err	bitreich.org	70
i+              (setf trigger-state 'notified)	Err	bitreich.org	70
i+              (uiop:run-program (trigger-alert level fonction params (cadr result) trigger-now?)))	Err	bitreich.org	70
i             ;; increment the number of tries by 1	Err	bitreich.org	70
i             (with-open-file (stream-out filepath :direction :output	Err	bitreich.org	70
i                                         :if-exists :supersede)	Err	bitreich.org	70
i               (format stream-out "~a~%~a~%" (+ 1 tries) params))	Err	bitreich.org	70
i-            nil)))))	Err	bitreich.org	70
i+            nil))	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+      (format t "~a        ~A        ~A        ~A        ~A        ~A~%"	Err	bitreich.org	70
i+              level fonction params previous-state current-state trigger-state))))	Err	bitreich.org	70
i 	Err	bitreich.org	70
i ;; abort when using ctrl+c instead of dropping to debugger	Err	bitreich.org	70
i #+ecl	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/reed-alert/commit/e6d5e1bcf78...
Content-Typetext/plain; charset=utf-8