💾 Archived View for sl1200.dystopic.world › art › notes_from_the_address_bar.gmi captured on 2023-09-08 at 16:10:39. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2023-01-29)
-=-=-=-=-=-=-
2023-01-15
#gemini #agate #notas #journalctl #totp #bash
Publicar un diario o anotaciones directamente desde la barra de direcciones de cualquier cliente gémini, con el servidor Agate y con acceso a través de un código TOTP.
En el terminal: echo micontraseña | base32 NVUWG33OORZGC43FYOYWCCQ= En el script: v=$(oathtool -b -d 8 -s 60 --totp 'NVUWG33OORZGC43FYOYWCCQ') En el móvil o PC deberás configurar tu app con ese mismo código en base32.
Para publicar: gemini://sl1200.dystopic.world/39372698/Esto es una anotación. Para borrar : gemini://sl1200.dystopic.world/85426565/2023-01-10 10:35/rm
#!/bin/bash NOTAS=/home/usuario/gemini/content/diario.gmi # Cálculo el TOTP v=$(oathtool -b -d 8 -s 60 --totp 'clave en base32') # Doy 59 segundos para introducir la url y que se genere el log antes de seguir con el script sleep 59 # Función de decodificación de la url function urldecode() { : "${*//+/ }"; echo -e "${_//%/\\x}"; } # Filtro el contenido de los registros del último minuto post=$(journalctl --since "1 min ago" | grep 'gemini' | sed '1,5!d' | grep "$v" | cut -d "\"" -f 2 | \ sed 's|gemini://usuario.dystopic.world||g' | sed "s/\/$v\///g" ) # Decodifico el contenido filtrado post2=$( urldecode $post ) # Si post2 acaba en aaaa-mm-dd/rm, borro /rm de post2 y borro la fila de diario.gmi que incluya post2 if [[ $post2 == *"/rm" ]]; then post2=$( echo $post2 | sed 's/\/rm//g') sed -i "/$post2/{N;N;d;}" $NOTAS exit else # Si el contenido está vacio finalizo el script para que no añada filas en blanco if [ "$post2" = "" ]; then exit else # Si pongo una url http o gemini el contenido se publique como un enlace con => if [[ $post2 == http* || $post2 == gemini* ]]; then # Inserto el contenido decodificado, junto con la fecha, en la línea 6 del documento diario.gmi sed -i "6i \#\#\# $(date +"%Y-%m-%d %H:%M")" $NOTAS sed -i "7i => $post2 " $NOTAS # Depuro algunas cosas que no deben salir sed -i -e '7s/https\:\//https\:\/\//' $NOTAS sed -i -e '7s|\/\/\/|\/\/|' $NOTAS sed -i -e '7s|gemini\:\/|gemini\:\/\/|' $NOTAS # Inserto una fila en blanco tras el comentario recién publicado sed -i '8i\ ' $NOTAS else # Inserto el contenido decodificado, junto con la fecha, en la línea 6 del documento diario.gmi sed -i "6i \#\#\# $(date +"%Y-%m-%d %H:%M")" $NOTAS sed -i "7i 💬 $post2" $NOTAS # inserto una fila en blanco tras el comentario recién publicado sed -i '8i\ ' $NOTAS fi # limito el número de líneas del documento a 500 sed -i '500,$d' $NOTAS fi fi
Finalmente programas el script con cron para que se ejecute cada minuto.