Newsgroup: it.comp.os.linux.sys
Titolo: Generazione dinamica file in fase di lettura

Ciao a tutti.
devo fare una cosa alquanto singolare:
ho la necessità di autogenerare un file di testo nel momento in cui
viene 'letto' da un programma.
(Non posso modificare i sorgenti del programma, ma devo realizzare una
cosa del tutto trasparente.)
Ad esempio: quando da un browser si apre una pagina php, php ne
interpreta il codice, lo da al server il quale lo invia al browser.
Dal punto di vista del browser una pagina php è identica ad una pagina
html statica.
Io devo fare praticamente la stessa cosa con dei file di
configurazione presenti sul sistema.
Ad esempio dovrei fare un file di config per squid che si autogeneri
da un DB al momento della lettura da parte di squid.
AFAIK si può fare un sistemino simile modificando gli script di
startup dei vari programmi.
Ad esempio potrei impostare lo startup di squid per generare prima la
config partendo dal DB, poi avviare squid stesso.
Così facendo però potrei gestire esclusivamente start/stop dei
programmi. Eventuali SIGHUP non sarebbero interpretati.
E' possibile eseguire un programma ad ogni lettura di specifici file
presenti nel sistema?
Oppure, è possibile linkare un file locale con uno remoto via web?
Esempio: "ln -s 
http://localhost/fileconfig.php
 /etc/fileconfig"
(Si lo so, sono impazzito)

 viene 'letto' da un programma.
Questo dovrebbe fare al caso mio:
http://www.rot13.org/~dpavlin/fuse_dbi.html
In teoria, così facendo letture e scritture di file dentro tale FS
saranno veicolate via DB.
Avete usato niente di simile?

 Avete usato niente di simile?
L'approccio FUSE mi pare l'unico che consenta quel che vuoi fare, ma IMHO č
un'inutile complicazione.
Non hai detto il motivo per cui vuoi fare questo accrocchio, ma dato che i
files di configurazione non cambiano molto frequentemente, riterrei piů
appropriato un "push" della nuova configurazione rispetto ad un pull.
Se vuoi essere piů prodigo di info...
-- 
Flavio Visentin
Scientists have finally discovered what's wrong with the female brain:
On the left side, there is nothing right, and on the right side, there
is nothing left.

 Se vuoi essere più prodigo di info...
Sto realizzando un appliance che dovrà essere gestita interamente via
web.
Mettere i files di conf su db permetterebbe una gestione più semplice
da parte del mio sistema.
Potrei fare dei push ad ogni modifica, ma dovrei far andare in giro
per il sistema l'interfaccia web.
Anche questo caso IMHO sarebbe una inutile complicazione, avere tutto
su DB seplificherebbe la gestione.

 per il sistema l'interfaccia web.
Un demone che ascolti su una socket unix e che ad ogni modifica venga
attivato dalla parte web. Il demone quindi preleva i dati dal DB, genera i
nuovi files di configurazione e riavvia/ricarica i servizi.


 nuovi files di configurazione e riavvia/ricarica i servizi.
Puoi spiegarti meglio? La soluzione sembrerebbe valida.
Ma dalla parte web, come richiamo il demone?

 nuovi files di configurazione e riavvia/ricarica i servizi.
Più che una socket, che sarebbe limitata al sistema locale [1] forse
sarebbe meglio fare un demone che si apre una porta ed io comunico su
quella porta.
In questo modo (poichè le appliance saranno modelli differenti, ed in
un futuro
dovranno comunicare tra loro) potrei far gestire il push delle
configurazioni
da una singola postazione centralizzata che comunica con le altre
mediante
tale porta bindata sulla LAN.
Implementando una sorta di shared key come password potrei anche avere
una discreta sicurezza. [2]
[1] in condizioni normali
[2] anche perchè, se qualucuno riuscisse a comunicare sulla porta XXX
lato LAN, avrei ben altri problemi
da risolvere, dato che quel qualcuno sarebbe già entrato nella mia
LAN.

 Ma dalla parte web, come richiamo il demone?
Con un banale script cgi che apra la socket (unix o TCP è uguale) e ci
scriva dentro i comandi :-)


 mediante tale porta bindata sulla LAN.
puoi anche limitare l'ascolto sul 127.0.0.1 e poi fare tunnel via ssh...
ilSImo
-- 
now playing: Exodus - Corruption
Le barche mi danno il voltastomaco. 
Piu' delle barche odio soltanto gli elfi.
          -- Gotrek Gurnisson
             da "Sangue di Skaven"

 scriva dentro i comandi :-)
Dalle mie parti si direbbe:
sono proprio un patacca.

 puoi anche limitare l'ascolto sul 127.0.0.1 e poi fare tunnel via ssh...
A si, utilizzando una porta dopo posso fare quasi tutto.
Ma prima, devo fare il demone.

 Ma prima, devo fare il demone.
man Net::Server
e figli.


 e figli.
tnx

Alessandro wrote:

just my 2c sulla sicurezza :)
ilSimo
-- 
now playing: 
So there He stands, Mightiest among the Mighty 
Guarding a Holy Place where evil's never to rise 
Archangel of Salvation, Vision of Majesty
Fly higher, bring the Fire, The Flame of God
                                Domine - Uriel, The Flame Of God

 just my 2c sulla sicurezza :)
Come ho già detto, una volta bindato lato lan fidata ed implementata
una sorta di autenticazione mediante shared-key dovrei essere già un
pezzo in la.
Se mi bucano la lan, il demone sarà l'ultimo dei miei problemi.

 nuovi files di configurazione e riavvia/ricarica i servizi.
Comunque, ripensandoci, anche progettare un demone che faccia il push
delle config potrebbe essere una inutile complicazione.
A sto punto, tanto vale usare un FS sqlite e leggere direttamente da
li le configurazioni.