From felix at f-hauri.ch  Wed Apr  2 11:01:01 2025
From: felix at f-hauri.ch (=?utf-8?B?RsOpbGl4?= Hauri)
Date: Wed, 2 Apr 2025 11:01:01 +0200
Subject: [gull] Trucs et divers propos
Message-ID: <Z-z8zQalND6jmZY8@medium.hauri>

Salut ici!

1. NTFY
 Pour ceux qui ne connaissent pas encore, allez jetter un oeil sur
   https://ntfy.sh   ## Oui, ".sh"
   Send push notifications to your phone via PUT/POST
   Push notifications made easy

   Un serveur webpush et une appli qui ouvre un websocket et reste
   à l'écoute... Simple et léger.

 J'en mets partout!
  Exempla asterisk: Sur mon serveur ntfy:
    root at ntfyServ# ntfy user add asterisk
    root at ntfyServ# ntfy token add asterisk
    root at ntfyServ# ntfy access asterisk mesnotif rw
  (je crois que juste `w` aurrait suffit). Sur mon PBX:
    root at asterisk# cat >/usr/share/asterisk/agi-bin/ntfy.sh <<eof
	#!/bin/bash
	ntfyUrl=https://ntfyServ.exemple.com
	ntfyTopic=mesnotif
	ntfyToken=tk_dux12ceci3st7otalement6idon34
	IFS=\| read -r nom < <(
	    printf -v req 'SELECT name FROM tel WHERE nr ~ \47%s\47;' "${1:2}"
	    psql -h pgDbHost -U asterisk -Atc "$req" files )
	printf -v msg '\U260e\Ufe0f Appel de %s\n %s\n %s' "$*" "$nom"
	curl -u ":$ntfyToken" -d "$msg" "$ntfyUrl/$ntfyTopic" >/dev/null 2>&1 <<<'' &
	exit 0
    eof
    root at asterisk# grep ntfy /etc/asterisk/extensions.conf
    exten => _,1,AGI(ntfy.sh,${CALLERID(num)})
    Du coup, je reçois la notif sur tous mes dispositifs connectés ( mon
    navigateur et mon téléphone mobile ) AVANT que mes téléphones ne
    sonnent...


2. bash, fzf, utf-8
 Pour le reste, je m'amuse toujours beaucoup en bash...
 - Mon dossier /vrac est désormais trié par date descendant:
   https://f-hauri.ch/vrac
   le petit dernier ``colorPing.sh'' change la couleur de fond (bg)
   en rouge ou vert, fonction de la réponse au ping, et 
   clair ou foncé en fonction de la couleur de fond initiale, du
   terminal. (Remet la couleur initial en quittant.)
   J'ai créé ce petit script en tâchant d'être léger et lisible.

 - En utf-8, j'ai découvert l'utilisation des "VARIATION SELECTOR",
   en particulier du "VARIATION SELECTOR-16" (Il y en a 256, la
   plupart semblent être des réserves, les autre concernent des
   alphabets non latins.)
    $ LANG=fr_CH.UTF8 printf '\U26A0 Warning\n\U26A0\UFE0F Warning + vs16\n'
    âš  Warning
    ⚠️ Warning + vs16
   A noter que la différence n'est PAS visible dans (mon) xterm. Je
   dois utiliser mate-terminal ou gnome-terminal pour voir la différence.
   Cela dit: sur les navigateurs et téléphones mobiles, c'est utile
   pour les notifications.
    $ printf '%b vs %b\UFE0F\n' 0 0 1 1 2 2 6 6 9 9 '#' '#' '*' '*' \
	'+' '+' 'A' 'A' 'a' 'a' '\U1F'5D{4,5}{,}
   Et donc mon petit UTF-8 browser utilisant fzf:
   https://f-hauri.ch/vrac/fzfShowU8var.sh

 - Afficher `df -i` et `df -h` cote à cote, avec une barre verticale,
   façon remplissage de citerne:
   https://f-hauri.ch/vrac/vbarFmt.sh
   Usage:
    $ [envvar=value] vbarFmt.sh [--full] <path>
   les variables d'environment:
     colSat, bgColSat: Saturation des couleurs avant/arrière plan
     colLevel, bgColLevel: Valeur des couleurs avant/arrière plan
     bwidth, bwidth2: largeur des barres block/inodes
    $ colSat=.9 bgColSat=.4 bwidth=4 ./vbarFmt.sh --full .
    $ colSat=.9 bgColSat=.91 bwidth=4 bash vbarFmt.sh .

-- 
 Félix Hauri  -  <felix at f-hauri.ch>  -  http://www.f-hauri.ch

From felix at f-hauri.ch  Wed Apr  2 11:31:11 2025
From: felix at f-hauri.ch (=?utf-8?B?RsOpbGl4?= Hauri)
Date: Wed, 2 Apr 2025 11:31:11 +0200
Subject: [gull] Trucs et divers propos
In-Reply-To: <Z-z8zQalND6jmZY8@medium.hauri>
References: <Z-z8zQalND6jmZY8@medium.hauri>
Message-ID: <Z-0D36IFUYUWVOi_@medium.hauri>

Avoid SQL injection!

$ sed -e '2{/^case/!i case ${1#+} in *[^0-9]*|\o47\o47) exit 1;;esac' \
	-e\} -i.bak /usr/share/asterisk/agi-bin/ntfy.sh

$ diff /usr/share/asterisk/agi-bin/ntfy.sh{.bak,}
1a2
> case ${1#+} in *[^0-9]*|'') exit 1;;esac

Le Wed, Apr 02, 2025 at 11:01:01AM +0200, Félix Hauri via gull a écrit :
>     root at asterisk# cat >/usr/share/asterisk/agi-bin/ntfy.sh <<eof
> 	#!/bin/bash
> 	ntfyUrl=https://ntfyServ.exemple.com
> 	ntfyTopic=mesnotif
> 	ntfyToken=tk_dux12ceci3st7otalement6idon34
> 	IFS=\| read -r nom < <(
> 	    printf -v req 'SELECT name FROM tel WHERE nr ~ \47%s\47;' "${1:2}"
> 	    psql -h pgDbHost -U asterisk -Atc "$req" files )
> 	printf -v msg '\U260e\Ufe0f Appel de %s\n %s\n %s' "$*" "$nom"
> 	curl -u ":$ntfyToken" -d "$msg" "$ntfyUrl/$ntfyTopic" >/dev/null 2>&1 <<<'' &
> 	exit 0
>     eof

-- 
 Félix Hauri  -  <felix at f-hauri.ch>  -  http://www.f-hauri.ch

From felix at f-hauri.ch  Wed Apr  2 23:03:20 2025
From: felix at f-hauri.ch (=?utf-8?B?RsOpbGl4?= Hauri)
Date: Wed, 2 Apr 2025 23:03:20 +0200
Subject: [gull] Truc et astuces: la commande column
Message-ID: <Z-2mGGmKHKs_gVyl@medium.hauri>

Intéressant: Je ne connaissais pas cet usage de la commande: ``column''

 $ s2p='s/[[:space:]]\+/|/;';printf -v fields '%*s' 7; /bin/ls -g |
     sed "1d;${fields// /$s2p}" |
       column --table --separator '|' --table-noheadings \
           --table-columns perm,b,grup,siz,day,mnt,yot,name --table-wrap name
ou
 $ s2p='s/[[:space:]]\+/|/;';printf -v fields '%*s' 5;LANG=C df -k |
     sed "${fields// /$s2p}" |
       column --table --separator '|' --table-noheadings \
           --table-columns fs,tot,use,ava,pct,mpnt --table-wrap fs


-- 
 Félix Hauri  -  <felix at f-hauri.ch>  -  http://www.f-hauri.ch