històries de mastodonts (III)

Elefant amb una cria.

Dos mastodonts caminen amb fermesa per la sabana i en arribar l’hora tardana del crepuscle, quan el cel es refresca i les aus inicien el seu concert de comiat al sol, quan troben la pastura verda i fresca després d’un jorn amb la calor enganxada a dins la pell, aprofiten per contar històries que, de vegades son el resum del que serà una vida.

– I hui que tenim? – pregunta el jove.
– Herba fresca, com quasi cada dia, fill.
– Ja! Vull la història que ve amb la pastura – va afegir rient.
– Hmm! Hui em trobe una mica cansat. – va dir el gran – Aprofitaré que a més d’imaginació, en tenim de memòria i prou que en tenim.

El silenci va ser el teló d’una història que té a veure amb els humans.
– “Fa un temps un pare humà vivia amb el seu filla a una granja on criaven pobrament uns quants pollastres i cultivaven un parell de collites repartides a un tros de terra que hi havia al voltant. En temps de primavera plantaven tomaques, enciams, carabassetes, pimentó i després de l’estiu carlotes, naps, creïlles i tot allò que sota la terra suporta millor els freds que hi arriben.

Va ser en una de les jornades de la tardor que, a l’endemà de fer un dia de molt de treball preparant la terra i sembrant les creïlles per fer un parell de cabassos amb els que passar l’hivern, van trobar tot el camp trepitjat i les plantes mossegades.

– Pare!, Pare! – va cridar el jove en veure la destrossa – quina desgràcia. Açò és molta mala sort. Després de tot l’esforç que hem fet.

El pare va mirar amb serenitat aquell camp que havia passat de ser un camp de llavor a un camp de batalla i va comentar pausadament:
– Ja ho veurem, fill, ja ho veurem.

A la nit el pare li va proposar al fill vigilar el camp entre els dos per tal de saber si tornaven els lladres o qui haguera fet aquella destrossa. Al fill li va semblar bona idea i organitzaren els torns per estar a l’aguait d’aquells que hagueren fet eixa malifeta.

A poc de fer-se de nit, van sentir el soroll d’unes petjades i amb molta discreció van eixir cadascú per una banda per encerclar al malfactor. I va ser gran la sorpresa en trobar que era una gran cavall blanc que amb molta gana només volia menjar. Entre els dos es feren amb l’animal que tampoc es va espantar de veure els dos llauradors. El dugueren a un tancat i van mirar-se tots tres.

-Pare! Quina sort hem tingut! Amb l’animal podrem llaurar més camp i si fem més collites, podrem anar a més.
L’home gran només va alça la mà i va dir el seu fill:
-Ja ho veurem, fill, ja ho veurem.

En passar uns dies, el jove va proposar-li al pare que volia domar l’animal per anar al seu damunt fins que pogueren fer-se amb un carro. Va mirar el jove i com que sabia que dir-li que no era inútil, va callar i va moure el cap de dalt avall.

El fill, amb molta il·lusió va cercar una manta, unes cordes i va enllestir l’animal per anar al damunt. Primer va fer caminades pel tancat i, en agafar confiança, va donar una volta pels terrenys que envoltaven la casa. Primer caminant, es va animar a anar al trot i, ja que estem, un galop. I va ser en eixe moment quan va esvarar de la manta i va caure a terra. El crit va ser immediat al so del colp.

El pare va eixir de presa de dins de la casa on preparava el dinar. En arribar va ajudar a alçar-se al xic i amb serenor el va embenar el braç que li feia mal. El jove, amb un rostre apenat no parava de remugar i lamentar-se.
-Quina mala sort, pare. Ara només et podràs ajudar del cavall. I la collita és en uns dies i cal anar al mercat i tot sol no podrà. Quina mana sort, caram!
Amb tranquil·litat, el vell només va dir:
– Ja ho veurem, fill, ja ho veurem,

Els temps entre els humans, va afegir el mastodont, ja saps que son convulsos i amb massa freqüència es barallen per un pam de terra o per allò que diuen ‘recursos naturals’ o per ser senyor d’allò que no els pertany.
-Això ho sé pare, va dir la cria de l’elefant mentre rumiava un bon mos d’herba, el que em té intrigat és el fil del teu conte.

Només un dies després van acudir a la granja un destacament de soldats ben uniformats i armats, marcant el pas i amb cara de serietat i, fins i tot, ferocitat.

-Bon dia -va dir el cap- hem de reclutar els joves per anar al front immediatament.
El granger des de la porta de la casa va cridar el fill que estava dins.
En eixir amb braç encara embenat, li va canviar la cara al militar i amb cara de menyspreu giraren cua sense donar cap explicació.

-Pare quina sort!!. No he d’anar a la guerra!! Si continue recuperant-me, amb l’ajuda del cavall i el carro que hem encarregat, esta serà una bona anyada.

L’home gran va mirar el fill a poc a poc i amb un somriure només va afegir:
-Ja ho veurem, fill, ja ho veurem.

El mastodont va callar. El silenci va durar uns instants i mentre l’elefant mirava discretament a la seua cria este rumiava amb la mirada perduda a l’horitzó.

– I ja està, pare?
– Si, fill, ja està.
– I el final?
– El final sempre és el mateix per tots els essers vius. Ja ho saps.
– Dic el final de la història.
– Hi ha històries que es queden en el record i mai no tenen un final.

El sol estava amagant-se i, poc després, tots dos caminaren cap la resta del ramat per trobar un lloc on descansar de la caminada d’aquell dia a la sabana.

històries de mastodonts (II)

elefant sobre pastura verda

Va ser fa molt de temps, quan els animals compartien una llengua i, malgrat ser aliments alguns dels altres, compartien el seu coneixement. Va ser quan encara la natura era un espai on es trobava l’equilibri. També en aquell temps hi havia moments de reflexió i d’acció, temps de joventut i de senectut, temps de vida i de mort, temps de passió i de desconnexió.

En eixos dies hi havia un elefant jove que pasturava sense por entre els animals més ferotges. Era gros i fort. Caminava cada dia fins trobar el seu lloc per abeurar entre els hipopòtams i cocodrils. L’elefant estava molt pendent de la seua parella. Fins i tot va preveure el dia de l’aniversari en que es van trobar. Estava pendent de aconseguir un anell per regalar-li’l eixe dia i celebrar el temps que compartien.

Un bon dia, entre menjar, caminar, beure i cobrir-se de fang per netejar-se, va trobar que el seu cos li demanava un bon descans. El descans seré a l’ombra d’un sicòmor es va allargar en el silenci de la sabana. Tot va ser perfecte fins que l’elefant va despertar. El sol s’amagava a l’horitzó i les aus cantaven acomiadant-se del dia. En eixe moment va recordar que era el dia que tant esperava. Havia d’arreplegar l’anell i trobar la seua estimada per fer-li el regal.

sicomoro
Un sicòmor a la sabana.

Amb tota l’agilitat de les seues potes va córrer fins arribar on el goril·la tenia enllestit un anell únic i especial: el que recordava el dia que van començar a pasturar junts els dos elefants. Encara amb el alé sense recobrar va arrancar a caminar veloç cap al riu on abeuraven cada vesprada. A cada pas sentia que les forces estaven justes i el temps s’esmunyia més ràpid.

En arribar a la vora va frenar fins que les seues potes esvararen amb el fang de la riba amb la poca fortuna que el regal per l’estimada va caure a l’aigua ja poc transparent. En sentir que havia perdut aquell anell apreciat, va començar a rodar, botar, escarbar. Una mirada era prou per tornar a pegar colps a l’aigua, remenar el fons i córrer per la vora quan veia un reflex brillant. A cada moviment, a cada intent l’aigua es tornava més fosca i cada volta veia menys el que volia trobar.

A la branca d’un arbre proper, un mussol el contemplava amb serenitat fins que li va dir:
– Ei! Amic, agafa aire i espera un moment.
– Com he d’esperar? – contestà l’elefant – Faig tard i he perdut el regal que vull fer hui mateix.
– Fes-me cas. Respira un moment, tanca els ulls i quan els òbrigues, mira l’aigua.

Van ser uns instants breus que es van fer llargs per a l’elefant amb els ulls clucs.

A poc a poc, amb la quietud de l’animal, l’aigua va asserenar, es va aclarir prou com per a deixar veure una brillantor amb els darrers rajos del sol vespertí. En obrir els ulls, l’elefant va reconèixer l’anell que, amb les preses havia perdut a l’aigua i el tarquim li havia amagat.

El va agafar amb un somriure, li va agrair el consell al mussol qui li va mirar amb comprensió.
Desconec com va quedar el regal i si al final van gaudir d’una bona celebració. El que si em cal viure, com va recomanar el mussol és la serenor quan l’aigua és térbola. Amb la calma, fins l’aigua més bruta pot ser ens deixe veure el que llueix al fons.

Però tot açò, ja t’ho he dit, va passar fa molt de temps, quan els animals encara compartien la saviesa i, fins i tot, la llengua.

històries de mastodonts ( I )

Elefant amb una cria.

A les planes d’un llibre vaig escoltar una història que es va crear al foc d’una foguera. Una història que va ressonar en el silenci reflexiu de persones que compartien el coneixement i acumulaven saviesa. És, com m’agrada dir, una història de mastodonts.

“Un grup de deu persones cegues caminava en filera per la selva. El primer, amb l’ajuda d’una branca, trobava el camí per anar guiant els companys. De tant en tant, quan algú ho demanava, feien una parada per recuperar forces. Cadascú anava escoltant la remor de les fulles, els cants de les aus i els sorolls d’un i d’altres animals.

Un elefant mira la càmera al davant de la vegetació de la sabana.

El seu destí era trobar una font per refrescar-se, trobar on assentar-se i descansar.

Quan ja duien un bon temps caminant, el guia va escoltar un soroll que va identificar:
– Compte -va dir amb veu baixa- ara passem prop d’un elefant.
Un dels del grup va comentar que mai havia sentit un elefant. Un altre que ell tampoc i un tercer que li agradaria saber com era un “elefant”, un animal que mai havia tingut a prop.

El guia va sospirar, ell sabia de la seua grandària i també de la força que tenia. Va recomanar que tots anaren amb molta tranquil·litat i, si es mostraven serens, l’elefant deixaria que el tocaren per reconéixer-lo. A poc a poc, els deu invidents s’aproparen a l’animal que menjava l’herba amb calma. Un dels de la filera va arribar a una de les potes de darrere de l’animal. Va tocar la seua pell aspra i amb pels durs i negres. Va reconèixer la forma cilíndrica i a poc a poc la va abraçar.

– Ara ja sé que un elefant és com un tronc d’un arbre- va dir amb veu suau.

Un altre, que havia trobat la cua de l’elefant, va contestar: “En absolut, un elefant se sembla molt a un plomall. És finet i al final té molts pels.”
– Esteu tot dos enganyats. -aportà un tercer- sembla una llança suau i amb la punta esmolada.
La seua mà acaronava un dels ullals blancs.
Encara un altre va afegir que res més lluny del que és un elefant mentre rebia la brisa que feia el moviment rítmic de les seues orelles i alçava les mans per tocar-les.
-Un elefant és com un ventall gegant que ens refresca.
– No sé que esteu fent, va dir el darrer, per un elefant és el més semblant a una serp, mentre les seus mans tocaven la trompa.

A cada una de les opinions, la conversa es tornava més agra. Quatre deien que era un tronc, dos optaven pels ventalls, dos més defenien que era com una llança i un altre que semblava un rèptil sense potes.
Quan el volum va ser molest, l’elefant va arrancar la marxa i va tombar els cecs que estaven al voltant.

El guia, en sentir que l’animal s’allunyava, va ajudar a cadascú dels membres de la corda i van organitzar-se de nou per trobar el que cercaven: una font o un pou on poder beure, refrescar-se i seure per comentar el que havien aprés.”

Segurament la reflexió millor és la que faça cadascú.
Tal volta, només veiem una part de la realitat i voler compartir-la és útil. Quan la volem imposar és quan l’elefant, això que no acabem de saber com és completament, marxa.

Qui sap.

fidonet: quan la xarxa era intermitent i amb més persones.

Una mà fent servir el ratolí i l'ordinador.

Serà la edat, la solitud del meu cervell, l’enyor de l’avenir o ves a saber el qué. He recordat els temps remots en els quals internet era una eina de comunicació molt semblant al correu postal, aquell que feiem servir papers -decorats o no, perfumats o no, ves a saber-, llapisseres de colors, ploma estilogràfica, bolígraf o el que fora per enviar els missatges.

D’aquell temps conserve el record del “piiiiiiiiiiiiiii-trrrrr-piiii-tr-piiiiiii” fins establir la connexió amb un veloç modem de 14.4Kbps. I eixa sintonia era l’inici d’un temps mesurat ja que mentre connectaves a internet perdies tota communicació telefònica. Els mòbils encara estaven per arribar i els telefons ‘inteligents’ o les tauletes digitals de Steve Jobs eren un somni o la imatge d’un futur retratat a “2001 una odissea de l’espai” (S. Kubrick, 1968)

2001 una odissea a l'espai
Mirant una tauleta a 2001 una odissea a l’espai (S.Kubrick, 1968)

I tot per accedir a un BBS (Bulletin Board System) un esquema d’intercanvi de missatges com posteriorment van ser els forums. N’hi havia els super nodus (tres a tota la península crec recordar) que interconnectaven entre ells, d’aquí depenien els nodus de primer nivell, els de segon i els punts.

Si enviaves un missatge a un del teu punt podies interactuar quasi als minuts ja que les dos que conversaven estaven al mateix lloc (fer telefonades locals ers una manera d’estalviar en aquell temps, les conferències -telefonades fora de la província costaven més). Si era d’un altre nodus ja havies d’esperar al menys que es compliren els intercanvis perquè viatjara el teu text i et pugueren contestar i enviar la resposta. Recorde que vaig mantindre una amb una persona a les Illes Canàries que entre enviar i rebre tardava un parell de dies com si fora una carta local.

Ara també, clar, però en aquell moment era molt important i es vigilaba molt que els integrants feren ús de la ‘netiquette’ unes normes bàsique per no oblidar que som persones les que teclejem (avui igual som minoria però encara hi som) i que les paraules poden fer bé o mal segons les gastem.

Ja sé que sonarà a vell, i ho soc que caram, ho he sigut tota la vida, així que faig la traducció i vos les deixe per si, en un oment tenim la temptació d’oblidar que tots tenim uns sentiments i que a tots, vull pensar, ens agrada més una abraçada que un cop a la canella.

Les 10 normes bàsiques de la ‘netiquette’:

N° 1: Recorda allò humà – Tingues bona educació

Normalment a internet ens creiem anònims, tractar les persones amb les que et comuniques amb respecte, fer sevir les paraules amb prudència, ja que el que escrius pot ser arxivat, guardat i després utilitzat en contra teua. En general tracta bé als demés segons entengues el bon tracte.

N° 2: Compòrta’t com ho faries a la vida real o analògica

Sigues respectuòs i comportat segons les normes de la societat i del ciberespai ja que al ciberespai les possibilitat de ser descobert semblen més difícils però cal no oblidar que hi ha un esser humà a l’altre costat de l’ordinador.

N° 3: Sigues conscient de a quin lloc del ciberespai et trobes

Abans de participar en una activitat a internet, cal observar els costums i llegir les normes del lloc. És convenient ja que cadascuna funciona d’una manera i totes no de la mateixa manera. Així evitaràs cometre errades per no tindre prou informació.

N° 4: Respecta el temps i l’ample de banda dels demés

Abans d’enviar una informació a una persona, assegura’t que el que envies es d’importància. Sigues breu i concret ja que el temps dels demés val i qui llegeix el teu missatge deixa de fer altres coses per llegir el que li has enviat.

N° 5: Cuida l’escriptura

Redacta bé. Sigues correcte amb la gramàtica per redactar els teus correus o missatges, sigues clar i coherent amb la informació que transmets per a que no puga ser mal entesa ni distorsionada; sigues senzilla, agradable, educat i evita utilitzar un llenguatge ofensiu que puga ofendre algú.

N° 6: Comparteix els coneixement dels que saben

Comparteix els teus coneixements i d’aquells que saben tant o més que tu amb la resta de persones de la xarxa i faràs del ciberespai un mitjà per aprendre i comunicar el que saps. Posa’t al lloc dels demés i recorda quan ignoraves un tema o un punt de vista en el moment et pregunten alguna cosa.

N° 7: Ajuda a que els debats estiguen controlats

Quan vulgues formar part d’una conversa, fes-ho quan estigues segur del que vas a escriure. Queda’t fora de les converses de les que no domines la matèria, no parles per boca de cànter, i sigues prudent per entrar a opinar en una conversa o debat.

N° 8: Respecte de la privacitat dels demés

Si comparteixes l’ordinador amb altres persones, respecta les seus dades. No llegeixes correus que no son per tu, no mires els seus arxius, ni tafaneges els que no és teu ni per tu. Això cal aplicar-ho tant als usuaris que compartiu ordinador com al altres usuaris que no ho comparteixen.

N° 9: No abuses dels avantatges que pugues tindre

A lo millor ets una experta en un tema, per coneixement o per accés als sistema de coneixement que hi ha hui en dia. Recorda que això no et dona cap dret a profitar-te dels demés en una conversa.

N° 10: Sigues benevolent amb les errades dels altres

Recorda que tots som humans i tots podem enganyar-mos. Evita jutjar a algú per les seues errades. En tot cas, ajuda’l o suggereix-li que es troba en una errada sense cap prepotència. Intenta no riure’t de qui faça una errada i menys encara manifestar-se de forma prepotent com si tingueres la veritat absoluta.

Ja veus que senzill pot resultar millorar l’entorn digital que t’agrade i en el que pots gaudir del contacte amb altres essers humans.

bot_plus un automatisme per publicar a mastodon (II)

registre de l'activitat del bot_plus

Per començar el funcionament hem de connectar amb una font rss. Els fitxers que utilitza este sistema de difusió de informació son del format xml, un tipus de fitxer que té un format de dates de fàcil i àgil transmissió com son les cadenes json, matriu d’informació que van com una cadena de dades.

bot i ordinador

Per accedir he utilitzat la classe que daniweb publica en el seu article . Amb això ja podem començar a treballar i filtrar el contingut de la font rss convertida en matriu. Primer obtenim la font

// Obtenim la font XML/RSS 2.0
$feed = new ExportRSS($fitxer , "2.0");
$channel = $feed->get_channel_data();

El segon pas es triar el que vols publicar. I el bot_plus ho fa amb aquestes línies:

    if ( (str_contains($enllac,"noticies")) || 
            (str_contains($enllac,"oratge")) || 
            (str_contains($enllac,"documentals")) || 
            (str_contains($enllac,'esports')) ) {
            if (strpos($enllac,'complets') == false) {
                    $tria = 1;
                    $n++;
            } else {
                    $tria = 0;
            }
    } else { $tria = 0; }

En este pas ja hem triat el contingut de les noticies que volem publicar ja que la web d’àPuntMedia té eixos directoris. El ser una miqueta dotor és molt important per veure com tenen organitzats tant els continguts com les fonts rss. Per exemple, al principi vaig triar l’enllaç que facilita la mateixa web. I em semblava que serie prou, però vaig veure que les publicacions es limitaven al que la redacció tria com a noticies importants i que han d’eixir a la portada. Com que el que vull es publicar tot allò que la redacció publique, arribe o no a la portada, he hagut de mirar el codi font de les planes i esbrinar quines subfonts o microsites de rss utilitzen per afegir les noticies que puguen ser d’interés.

Ara toca generar la cadena que comprovarà si s’ha publicat o no el que trobem a la matriu de la darrera connexió:

// generar la cadena a partir del fitxer de registre (arxiu de dades)
// cadena per trobar la data de les darreres publicades
// si troba la cadena amb strpos NO publica, si no la troba, PUBLICA
// aqui la generava quan era només per un microsite
// $comprovar = shell_exec("cat ".$lloc."/fitxers/dates.txt");
$c = 0;
$n = $j-1;
$w = 0;
$p = 0;
$verifica = 0;
for( $c = 0; $c<$n ; $c++ ) { 
// $rss_ara = $llista[$c]['pub']; 
// activar quan estiga el fitxer complet de strtotime 
$rss_ara =  strtotime($llista[$c]['pub']); 
$rssu_ara = $llista[$c]['enllac']; $rssu_ara = preg_replace('/[^A-Za-z0-9-]/','',$rssu_ara); $rssu_ara = preg_replace('/https/',' ',$rssu_ara); $rsst_ara = $llista[$c]['titol']." ".$llista[$c]['descripcio']." ".$llista[$c]['enllac']." "; if ( ($l_detall == "COMPLET") || ($l_detall == "DETALLAT") ) { // echo "rss_ara: ".$rss_ara."\n"; $log -> lwrite ("Contingut de rss_ara: ".$rss_ara);
}
$verifica = strpos($comprovar,$rss_ara);
$mira_url = strpos($url_hist,$rssu_ara);
if ( ($l_detall == "COMPLET") ) {
// echo "Contingut de verifica num: ".$c." - ".$verifica."\n";
$log -> lwrite ("Contingut de verifica num: ".$c." - ".$verifica);
$log -> lwrite ("Contingut de mira_url num: ".$c."|".$rssu_ara."|".$mira_url);
}

Ràpidament, genera una cadena de les dates publicades que, més tard ordenarà. per això afegeix la cadena de temps amb strtotime . Deprés genera la cadena de l’article seleccionat i compara amb strpos si es troba una dins de l’altra. En cas afirmatiu, no ha de publicar, en cas negatiu passem a la publicació amb el curl com ja vam veure en el primer article

                    $status_data = array(
                      "status" => $publicacio,
                      "language" => $language,
                      "visibility" => $visibilitat
                    );

                    $ch_status = curl_init();
                    curl_setopt($ch_status, CURLOPT_URL, $base_url . "/api/v1/statuses");
                    curl_setopt($ch_status, CURLOPT_POST, 1);
                    curl_setopt($ch_status, CURLOPT_POSTFIELDS, $status_data);
                    curl_setopt($ch_status, CURLOPT_RETURNTRANSFER, true);
                    curl_setopt($ch_status, CURLOPT_HTTPHEADER, $headers);
                    $output_status = json_decode(curl_exec($ch_status));
                    curl_close ($ch_status);
                    $p++;
                    $pt++;
                    sleep($espera+30);

El primer és construir la matriu per enviar les opcions a curl i després indicar-li que connecte amb la url corresponent segons les indicacions de l’API de mastodon.

Després de publicar ens cal enregistrar en els fitxers de control, he optat per no utilitzar una base de dades i així que puga ser més entenedor, la data i les url per evitar repeticions, que no sempre passa.

    if ($p >= 1) {
    // escriu la data de la darrera publicació
    $data_tam = filesize($lloc."/fitxers/data_pub.txt");

// echo "data_tam: ".$data_tam."\n";
if ( $data_tam == 0 ) {
$data_esc = fopen($lloc . "/fitxers/data_pub.txt", "w+") or die("No puc obrir el contador!");
$data_ant = fread($data_esc,filesize("".$lloc ."/fitxers/data_pub.txt"));
// $data_ant = fread($data_esc,"10");
$data_nova = strtotime("now");
// echo "if: ".$data_ant."\n";
// echo "if: ".$data_nova."\n";
} else {
$data_esc = fopen($lloc . "/fitxers/data_pub.txt", "w+") or die("No puc obrir la darrera data!");
$data_ant = fread($data_esc,filesize($lloc . "/fitxers/data_pub.txt"));
$data_nova = strtotime("now");
// echo " else: ".$data_ant."\n";
// echo " else: ".$data_nova."\n";
}

Estes línies s’expliquen per si soles però un resum: obre el fitxer de la darrera publicació que ens permetrà controlar el temps que passa i, si ens ve de gust i ho activem, que el bot indique als seguidors que funciona i està esperan novetats de la font sindicada.

Amb açò tenim ja l’esquema bàsic de com funciona el bot_plus que, evidentment està adaptat a les característiques de les fonts rss del web d’ApuntMedia.

Per a a qui vulga veure els budells d’un programeta fet en php 8.1, que pugau aprendren si teniu ganes, o simplement per si alguna cosa vos és d’utilitat, vos deixe una còpia. Recordeu que primer cal mirar la configuració i, en un temps faré un fitxer d’instal·lació per omplir correctament tots els fitxer de control que calen.

Sigau benèvols que només és una β de un aficionat.

A tindre bon dia i a gaudir.

bot_plus un automatisme per publicar a mastodon (I)

Teclaat d'ordinador

Va ser a primer de desembre que @soctonyo@mastodont.cat va preguntar quan hi hauria un bot per les notícies d’Apunt. I em va picar la curiositat i vaig començar a documentar-me. Com que encara no he arribat a l’habilitat de @spla@mastodont.cat, l’administrador de la instància, programar en python, vaig acudir al que recordava del php. Un llenguatge que és molt útil per a generar respostes dinàmiques a les planes web i, també, funciona el línia de comandaments.

registre de l'activitat del bot_plus

El primer pas de tota documentació és veure que han fet d’altres que ja han recorregut el mateix camí. Soc dels que pensa que no cal inventar la roda cada volta. Amb una miqueta de cerca vaig trobar un model que, en un principi, em va permetre descobrir i aprofitar les característiques de l’API de mastodon. L’autor és groundcat, i el repositori que em va interessar té el nom de mastodon-rss-bot.

Ara, cercant els enllaços per a l’article veig que també en té un per a saludar els comptes que es creen a una instància, cosa que ja funciona i molt bé amb @mastodontcat@mastodont.cat

Tot anava bé fins que vaig veure que el bot triat només en publicava una noticia cada volta i només la primera de la sindicació de notícies (RSS). Per tant, estava al criteri de la redacció que triara com a primera notícia i només que apareguera a la portada o primera plana del RSS per a que es publicara a mastodont.cat. Una quantitat de publicacions, al meu parer, massa incompleta i sota el criteri dels redactors del web.

A partir d’aquí va ser quan vaig començar a crear bot_plus, ja que la base es diu bot i, crec, que ara fa més coses que aniré detallant en els articles.

El primer pas va ser trobar un bon esquema per convertir els fitxers RSS en un text ben codificat – això ho recordarà bé @spla@mastodont.cat, i finalment vaig trobar el camí per que tot es quedara en utf-8 que és el joc de caràcters que utilitza, també, el meu servidor.

Quan vaig ser conscient de les limitacions i vaig entendre el funcionament, vaig anar a fer una cerca més directa i la troballa va ser a la web daniweb, concretament a l’apartat de programació, clar. Es l’article explica com convertir el contingut de planes xml, l’habitual a les fonts de sindicació de notícies (RSS), en una matriu de dades i així poder manipular i treballar amb elles.

Encara que em va costar trobar el camí, finalment vaig fer el següent esquema de directoris per aconseguir el funcionament actual

/bot_plus
| — configuració
|– fitxers
|– gifis
|– lib
|– log
|– proves
|–utils

El php carrega amb facilitat els fitxers dels subdirectoris però hi ha que incloure una utilitat si volem que trobe un fitxer en una carpeta a una carpeta diferent al mateix nivell que on es troba la execució actual. M’explique: un fitxer a utils té dificultats per trobar un altre que es trobe a configuració. La solució que he implementat al funcionar en la línia de comandaments, cli, ha sigut enviar el paràmetre d’ublicació en les ordres d’execució com a argv i arreplagar-ho en cada fitxer que cal amb el següent codi:

// Comprova els arguments, en cas de no existir presenta l'ajuda.
if (!empty($_SERVER["argv"][1])){
$argument = $_SERVER["argv"][1];
} else {
// Presenta l'ajuda
echo "NO HE REBUT la variable";
exit;
}

Amb això ja tenim solucionat com enviar correctament la ubicació per trobar els fitxers que volem i necessitem fer funcionar.
Ara mirem els punts més destacats del bot des del principi.

# indicar l'autor
# indicar la font

// inici del document
$temps = microtime(true);

Ja tenim l’inici amb un rellotge que ens contarà en microsegons, el temps d’execució de determinades tasques i, fins i tot el total del fitxer.

include("configuracio/bot_plus_cfg.php");
include("lib/exportrss.php");
include("utils/bot_plus_funcions.php");
if ($pres_et == 1) {
require_once("utils/bot_plus_etiquetes.php");
}
require_once("class/logger.php");
// inicia el log
$log = new Logging();
//$log->lfile("/var/log/mastodon_bot.log");
$log->lfile("".$f_log."");
//defineix on es troba el fitxer a executar
$lloc = realpath(dirname(FILE));

En les línies de damunt carrega els fitxer de configuració, el que converteix els fitxer rss i les funcions que, a poc a poc, he anat agrupant per no repetir línies de codi que, encara -som a la versió 0.4.1β,- queda per anar netejant.
El primer condicional activa les etiquetes que figuraran en els toots segons el contingut de les paraules i eixa utilitat encara té un gran nombre d’errades i que ja comentaré el motiu més endavant.
La següent inclusió és el fitxer que permet fer un registre o log amb les indicacions que estimes convenients. Les següents línies inicien el fitxer del log. A partir d’este moment, totes les línies que comencen per $log -> lwrite("aquí el que vulgues que aparega"); s’escriuran al fitxer log. Amb això podràs controlar el funcionament, les errades i les necessitats de millora.

La darrera – $lloc – és una variable que serà molt útil per fer utilitats modulars que podràs activar o desactivar a voluntat amb el fitxer de configuració. Això també permetrà que pugues ampliar determinades utilitats que et vinguen al cap. De moment hem cobert la part inicial del fitxer. Anem a les funcions més sensibles que son les de interactuar amb l’API de mastodon per publicar missatges de text i, amb més passos, incloure una imatge en la publicació.

Per començar, necessites tindre instal·lada la llibreria curl del php que et permet connectar amb llocs web i tant enviar com rebre la informació que vulgues obtindre. Una mostra:

$bot_status = curl_init();
curl_setopt($bot_status, CURLOPT_URL, $base_url . "/api/v1/statuses/");
curl_setopt($bot_status, CURLOPT_RETURNTRANSFER, true);
curl_setopt($bot_status, CURLOPT_HTTPHEADER, $headers);
$resposta = (curl_exec($bot_status));
$resposta_json = json_decode(curl_exec($bot_status),true);
curl_close ($bot_status);

Una explicació ràpida de cada línia:

La primera inicia la connexió.
Les tres següents configuren les opcions, quin serà el directori per connectar, si volem que en conteste la connexió i l’enviament de les capçaleres.
Les que inicien amb $resposta obtenen i donen format a la informació obtinguda en format json des del servidor.
Finalment tanquem la connexió.

I a la segona part, revisaré la resta de utilitats necessàries per fer un fitxer modular que permeta ampliacions i execucions segons l’esquema que he seguit.

Fail2ban, el programa per mantindre actualitzat el tallafocs

Un dels elements fonamentals per un servidor connectat a internet és el firewall o tallafocs. La seua funció és limitar l’impacte d’una mala utilització dels usuaris de la xarxa contra el teu ordinador que tant t’ha costat d’instal·lar i configurar. Clar, si vols que la teua informació estiga disponible per als visitants cal que obrigues els ports corresponents als serveis que vulgues compartir, es a dir, obrir el port 80 per al servei http, el 443 per a https (cada volta més imprescindible), el port 25 i 110 per al correu, el 22 si vols tindre accés i administració remota, etcètera. El tallafocs serà qui regule amb quins ports es pot accedir i com han de dirigir-se els paquets d’informació.

Internet és la xarxa mundial i entre els usuaris hi ha que vols provar els seus coneixement o qui vol aprofitar les instal·lacions d’altres per a fer els seus experiments o activitats no autoritzades. Si és delicte o no, cal que ho diga un jutge.

Davant la situació de rebre un atac i identifiques la ip corresponent tens la opció de fer manualment una regla que bloquege eixa adreça d’internet o ip. La regla per a bloquejar una ip a iptables es:

iptables -I INPUT -s xx.xx.xx.xx -j DROP

Ara bé, vull pensar que tens vida i que vols dormir, menjar, caminar i ser amb les persones que estimes. És molt difícil que pugues vigilar vint-i-quatre hores al dia durant cada dia les connexions del teu servidor. I ara? Que podem fer?

Senzill, trobar un programa que ho faça de forma automàtica. I el programa més conegut i més eficient és fail2ban. Pots instal·lar les últimes versions, a hores d’ara va camí de a versió 0.11, o cercar-la al programari de la teua distribució de linux. Està disponible a diversos repositoris com ara les basades en Debian on només cal que utilitzes aquest codi per instal·lar-lo al teu computador:

apt-get install fail2ban

La versió disponible és la 0.10 que representa un canvi amb la 0.8 que era l’anterior més utilitzada. Per exemple, et recomane que utilitzes la utilitat fail2ban-regex per verificar que els filtres, fets amb tota la bona intenció, analitzen correctament les errades al teu servidor.

Un exemple:

fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf -v

I com és inevitable, el resultat de la consulta:

De vegades et convé afegir cadenes de filtre per missatges que actualment son ignorats i poden alertar d’activitats problemàtiques.

Per exemple, al meu filtre de sshd he afegit la següent línia:

^%(__prefix_line)sBad protocol version identification.from .$

Evidentment és una decisió de filtratge molt agressiva ja que la connexió no s’ha arribat a establir. Però així estic més tranquil.

Una volta comprovar els filtres a activar cal fer el fitxer jail.local on hi ha que definir els filtres que activaràs:

[sshd]
enabled = true
backend = auto
port = ssh
logpath = %(sshd_log)s
action = iptables-new

En el cas del filtre ssh no cal cap configuració més. Ara bé si vols bloquejar el port adient per a un bloqueig de una mala utilització del servidor web apache, segurament voldràs especificar el port a bloquejar i caldrà afegir aquest tipus de línia:

action = iptables-new[port=http,https]

Amb això bloquejaràs només el port corresponent a l’atac rebut.

Una volta tingues tots els filtres que vulgues activar definits, cal que escrigues:

fail2ban-client reload

Si la resposta es OK tot va bé i endavant.

Una volta en marxa, si vols saber quantes deteccions ha fet cada filtre cal aquesta línia:

fail2ban-client status

per a veure els filtres activats

fail2ban-client status sshd

per veure el nombre de ip detectades, les que encara no han arribat al màxim d’intents, i les bloquejades que ja les han superades.

Si a més de consultar la situació en que es troben els filtres o vols dotorejar sobre les ip, a quina hora s’ha fet el bloqueig, d’on venen i quantes voltes has bloquejat eixa ip, dispose d’una utilitat fail2mysql que permet ingressar a una base de dades la ip, la ubicació geogràfica i la data del primer i del últim registre.

Però això serà un escrit per a un altre dia.

La medina blava.

El món és més que el que tenim al voltant i encara hi ha qui viu en un temps i amb uns valors que ens fan essers humans.

Aqui deixe un recull de la història i la vida en la memòria del segle XXI.

Salutació

Inicie l’activitat del bloc amb la idea de que algú trobe quelcom útil al recull de notes sobre l’activitat que faig per a aprendre i millorar el servidor web en el que s’allotja el bloc i alguns serveis d’internet.

Gràcies per l’escolta.