#!/bin/bash # wmcc_new_msg 0.9.2 # $Id$ rahhh le cvs en en panne # Ce script est le résultat du mélange de plusieurs scripts # créés par LordOric et Shift. # Je (Annah Conne-Hue) ne connais pas la licence faudrait demander aux auteurs # ci-dessus... # La doc d'installation et d'utilisation se trouve à la fin du script. # (avec VI : ESC ESC ESC G % ) # NEW 20020704 : Gros tests pour vérifier la validité des CPS. Seuls les logins # authentifiés vont dans le fichier de mark (sinon c'est trop facile pour # rentrer des fausses infos). Ajout du niveau de debug. # NEW 20020627 : meilleure gestion du fichier de "marks", cf config. # TODO : trouver des "features" à rajouter # Config XMESSAGE_OPTIONS="-geometry 250x70 -timeout 20" # moi j'aime pas les sons alors j'utilise xmesssage (voir Part 1) WMCCDIR="$HOME/.wmcoincoin/" mylogin="un_nain_connu" # pour reconnaitre nos propres messages myname="[Aa]nnah" # annah ou Annah, utilisé comme identifiant d'appel "annah<" MAXMOULES=50 # nombre maxi de moules à afficher sur la carte (ça ne garde que les "$MAXMOULES" dernières moules à avoir poster) DEBUGLEVEL=0 # 0: silencieux, 10:pipelette-mode # End of conf, sinon ben faut trafiquer le script login="$1" message="$2" ua="$3" echodebug() { lvl=$1 shift if [ "$lvl" -lt "$DEBUGLEVEL" ] then echo >&2 "[wmcc_new_msg] $*" fi } # Quels sont les paramètres qui nous arrivent ? echodebug 9 "-------------------------------------------------------" echodebug 9 "PARAMETRES : $*" echodebug 9 ". . . . . . . . . . . . . . . . . . . . . . . . . . . ." # Part 1 : bigornophone # volé sur http://shift.free.fr/?item=p_wmcc_addons&all_open= case "$login" in #--- C'est moi qui ai envoyé le message $mylogin) echodebug 2 "plop !" ;; #--- C'est un message des autres *) case "$message" in #----- Si le message contient "mon_nom<" *$myname\\\<*) #play ~/.wmcoincoin/newpost/message_shift.wav & xmessage $XMESSAGE_OPTIONS "Hey ! On t'appelle !" & ;; #----- Si le message contient "moules<" *moules\\\<*) xmessage $XMESSAGE_OPTIONS "Appel à toutes les moules !" & #play ~/.wmcoincoin/newpost/message_all.wav & ;; esac ;; esac # Part 2 : Coincoin Positionning System # piqué sur http://lordoric.free.fr/vrac/cps marker="$WMCCDIR/markerfile" # Spéciale pour pouaite qui sème des espaces partout ua=`echo "$ua" | sed -n -e 's/\\\\ \(\\\\ \)*/ /g p'` # Faudrait une regexp un peu plus poussée pour filtrer les cps mal formatés #iscps=`echo "$ua" | sed -n -e 's/.*\([gc]ps:[0-9.:-]+\).*/\1/ p'` iscps=`echo "$ua" | perl -p -e 's/.*[gc]ps:(-?\d+\.\d+|-?\d+):(-?\d+\.\d+|-?\d+).*/$1 $2/g or {s/.*/XXX/}'` echodebug 2 "iscps==\"$iscps\"" if ! echo $iscps | grep 'XXX' >/dev/null ; then echodebug 2 "A CPS was found !!!" lat=$( echo "$iscps" | cut -f1 -d' ') long=$( echo "$iscps" | cut -f2 -d' ') echodebug 9 "lat ==$lat" echodebug 9 "long==$long" if ! [ $( echo "$long > -360" | bc ) -eq 1 \ -a $( echo "$long < 360" | bc ) -eq 1 \ -a $( echo "$lat > -90" | bc ) -eq 1 \ -a $( echo "$lat < 90" | bc ) -eq 1 ] then echodebug 4 "COORDONNEES CPS INVALIDES" exit 0 else echodebug 4 "Coordonnées CPS OK." fi # On vire les anonymes, seuls les gens authentifiés ont le droit # d'apparaître sur la carte (prévention des abus). if [ -z "$login" ] ; then # was : login=`echo "$ua" | sed -e 's/. .*//'`; exit 0; fi; # on forme le marqueur long lat "login" CPS=$( echo "$iscps \"$login\"" ) #### | awk -F ":" '{print $2" "$3" \""$4"\""}' ) echodebug 2 "DEBUG:CPS==\"$CPS\"" # ====> Moment gestion du fichier de mark <==== fgrep -v "$login" "$marker" >"$marker.tmp" # On vire les lignes où le login apparaît (on ne le veut qu'une seule fois) echo "$CPS" >>"$marker.tmp" # On ajoute notre entrée à la fin du fichier temporaire tail -n "$MAXMOULES" "$marker.tmp" >"$marker" # On ne garde que les "$MAXMOULES" dernières entrées rm -f "$marker.tmp" # Et on vire le fichier temporaire fi # Aide-mémoire de la signification des options filées à ce script #tribune.post_cmd: /YOUR_HOME_DIRECTORY/.wmcoincoin/wmcc_new_msg "$l" "$m" "$u" "$i" "$t" "$s" "$r" #-------- # $1: $l login # $2: $m message # $3: $u useragent # $4: $i identifiant message # $5: $t timestamp # $6: $s score du trollomètre # $7: $r code de retour : # $r=(1 si c'est votre message, # 2 si c'est une réponse à un de vos messages, # 3 si il vérifie votre filtre de sélection par mots-clés, # 4 si le message est plopifié et 0 sinon) # J'ai foutu la doc la-dedans, parce que. usage() { cat <"$MD5_FILE" md5sum -c "$MD5_FILE" ok=$? done --------------------------------------------------------------------------- 2.4.3 Génération de l'image Il faut jouer avec xplanet pour avoir une image suivant ses gouts. Vu la tonne d'options, y'a surement de quoi faire votre bonheur. Par exemple j'utilise : xplanet -markerfile ~/.wmcoincoin/markerfile \ -radius 200 \ -latitude 48 \ -longitude 5 \ -blend \ -shade 100 \ -cloud_image ~/.wmcoincoin/clouds.jpg \ -cloud_shade 60 \ -night_image /usr/share/xplanet/images/night.jpg 2.5. Crontab Nous avons à faire des tâches régulièrement, alors on va dire au gros cron de faire le boulot : crontab -e --------------------------------------------------------------------------- # Toutes les heures, on va choper les nuages 42 * * * * ~/.wmcoincoin/get-clouds.sh >/dev/null 2>&1 # Toutes les 10 mn, on va mettre à jour notre belle image de fond */10 * * * * DISPLAY=:0 xplanet -markerfile ~/.wmcoincoin/markerfile -radius 200 -latitude 48 -longitude 5 -blend -shade 100 -cloud_image ~/.wmcoincoin/clouds.jpg -cloud_shade 60 -night_image /usr/share/xplanet/images/night.jpg --------------------------------------------------------------------------- Voilà, avec ça vous voyez où se trouvent les moules du bouchot, en temps presque réel. 3.0 See Also - Thanx to Les sites suivants m'ont permis de réaliser ce petit document, et sans aucun doute vous y trouverez vous aussi des informations complémentaires : LE site : http://hules.free.fr/wmcoincoin/ LordOric pour son script de CPS : http://lordoric.free.fr/vrac/cps Shift pour le bigornophone : http://shift.free.fr/?item=p_wmcc_addons&all_open=1 K3ats pour CPS et xplanet : http://k3ats.dyndns.org/ Le wiki http://reziztanzia.free.fr/wiki/?CoincoinPositioningSystem -- Annah C. Hue - http://annah.connehue.free.fr/ EOF }