Ciao a tutti,
volevo accennare ad una modifica che ho effettuato sul processo di installazione dell'applicativo aggiuntivo DExtra che viene installato sui sistemi Icom per essere in grado di operare sui sistemi X-Reflectors.
Indico queste cose a titolo di curiosità personale, ovviamente se deciderete di apportare le modifiche al vostro sistema Icom+DExtra, fatelo solo se siete sicuri di quello che state facendo e vi sentite sufficientemente a vostro agio nel fare le modifiche.
Non si tratta di nulla di critico o difficoltoso, però nemmeno un'operazione da fare a cuor leggero senza persarci due volte.
Parte dell'installazione del pacchetto DExtra su un gateway Icom prevede il fatto di apportare una modifica al database postgres del sistema Icom; tale database dispone già di tutta una serie di tabelle e dalla documentazione del DExtra viene indicato di crearne una nuova chiamata "xrfdata".
Su tale tabella si andranno poi ad inserire i records relativi agli XRF e ai rispettivi indirizzi IP, in modo che successivamente il sistema sia in grado di effettuare il link anche sulla rete XRF.
Tutto questo viene descritto nel file di installazione del pacchetto DExtra per sistema Icom.
Personalmente ho preferito non aggiungere questa tabella, in modo da non dover andare a toccare il database postgres, dal momento che i records degli XRF di interesse erano un numero limitato e pertanto facilmente gestibili anche in altro modo.
Nel mio caso, pertanto, ho aggiunto i records necessari affinché il mio sistema sia in grado di linkare un X-Reflector direttamente nello script che realizza ogni X minuti l'aggiornamento del database DExtra (il file dextra.db) con il database Icom.
A tal proposito esiste questo script shell fornito dall'installazione del DExtra: dextra_srv_readdb.sh
E' qui che sono andato ad agire per apportare quelle poche modifiche necessarie a non aver più bisogno della tabella aggiuntiva "xrfdata" e al tempo stesso aggiungendo i records degli XRF necessari al mio dextra.db.
Pertanto ho modificato le parti salienti che riporto in questo messaggio a titolo di riferimento.
dextra_srv_readdb.sh
=================
Nella sezione dove vengono cancellati i files temporanei e poi viene fatta la query al database postgres, ho eliminato le cose che non userò più (tipo il file xrfdata.dat) e ho ridotto la query all'estrazione dei dati dalla sola tabella sync_gip, ovvero quella dove sono memorizzati tutti i gateways Icom+ircDDB con relativi IP address.
Ecco come si presenta nel mio file adesso:
$RM -rf /tmp/users.txt
$RM -rf /tmp/sync_gip.dat
$PSQL -d dstar_global -U dstar << EOF (voi avrete -U postgres, vedi note sotto)
COPY sync_gip (zonerp_cs, zonerp_ipaddr) to '/tmp/sync_gip.dat' using delimiters '|';
\q
EOF
Successivamente anche nella sezione seguente ho modificato l'IF iniziale in modo da valutare solo la presenza del file sync_gip.dat (mentre lo script originale valuterebbe la presenza di xrfdata.dat) e ho proceduto aggiungendo tutti i dati relativi ai gateways con infine l'aggiunta manuale dei soli records relativi agli XReflectors di mio interesse.
Ecco come si presenta nel mio file adesso:
if [ -s /tmp/sync_gip.dat ] ; then
$CAT /tmp/sync_gip.dat >> /tmp/users.txt
$RM -rf /dstar/dextra/dextra.db_new
/dstar/dextra/dextra_create_db /dstar/dextra/dextra.db_new /tmp/users.txt
RC=$?
if [ $RC -eq 0 ] ; then
echo Executing netcat command with PORT $COMMAND_PORT
$NC -u -w 1 $G2_IP $COMMAND_PORT << EOF
upd /dstar/dextra/dextra.db_new
EOF
/dstar/dextra/dextra_access_db /dstar/dextra/dextra.db a XRF008 xrf008.ircddb.it
/dstar/dextra/dextra_access_db /dstar/dextra/dextra.db a XRF033 xrf033.dyndns.org
/dstar/dextra/dextra_access_db /dstar/dextra/dextra.db a XRF055 95.110.229.195
else
echo Return code $RC failed to create the new file dextra.db_new
fi
else
echo "File /tmp/sync_gip.dat not extracted from database"
fi
Ora si può notare come la creazione inizialmente del file sync_gip.dat per poi creare da esso il file users.txt sia inutile, in quanto si potrebbe creare direttamente il file users.txt in un colpo solo, dal momento che non faremo più il merge di altri dati... ma ho voluto tenere la struttura originale caso mai avessi voglia in futuro di fare il merge con qualche altro file.
Come potete vedere le righe che lanciano il comando "dextra_access_db" ci consentono di aggiornare a mano il dextra.db senza per questo aver avuto bisogno di creare una tabella aggiuntiva al database postgres.
Qualora il risultato finale fosse di gradimento, ma foste partiti da un'installazione già modificata con l'aggiunta della tabella xrfdata, basterà accedere al database postgres con il comando:
$PSQL -d dstar_global -U postgres
(indico l'utente postegres, mentre nel mio codice uso l'utente dstar, in quanto se avete seguito le istruzioni di base del manuale DExtra, viene indicato di creare la tabella xrfdata di proprietà postegres, mentre io ho preferito mantenerla uniforme con le altre).
Una volta entrati dentro, basterà dare il comando:
drop table xrfdata;
Il sistema risponderà che una tabella è stata cancellata.
Infine dando il comando \d potrete vedere nuovamente 10 tabelle attive e non più 11.
Con il comando \q potrete uscire dalla console pqsl e ritornare alla console della shell.
Ripeto non si tratta di nulla di difficoltoso, ma è bene sapere cosa si sta facendo.
Tutto questo per non dover intaccare il database originale e poter lo stesso avere la flessibilità di aggiungere gli XRF di vostro gradimento.
Inoltre, non dovendo più aggiungere gli XRF nella tabella del database postgres, potrete evitare di dovervi ricordare la sintassi dei comandi psql per aggiungere records, in quanto li aggiungerete dallo script di aggiornamento.
Detto questo vi saluto,
73's de Armando, IK2XYP.
Team ircDDB-Italia.