un po' [OT] : linguaggio per programma client server

10 risposte [Ultimo contenuto]
Ritratto di ferretti75
ferretti75
(Monster)
Offline
Monster
Iscritto: 08/07/2005
Messaggi: 476

Forse sono un po' OT, ma fra le cose che mi sono ripromesso di fare quest'anno c'è un programma ( da rilasciare con licenza GNU ) per la gestione degli internet cafè.

Se ricordate, un po' di tempo fà ero alle prese con il cafè di un amico che vorrebbe togliersi dai piedi windows e i problemi che ne derivano.

Tutte le soluzioni che ho trovato per linux non sono adatte a un internet cafè : tutti programmi kiosk . La differenza fra un kiosk e un cafè è che, fondamentalmente, la gente paga un tot di tempo e quando il tempo è scaduto il client si deve chiudere e tornare a uno stato "pristino".

A questo punto mi sono detto, vabbè, per quest'anno è andata ma per il prossimo voglio essere preparato.

Il succo del discorso è :
un demone su una macchina server che spara messaggi a dei demoni sulle macchine client. Sul server ci deve essere un'interfaccia grafica per dare il tempo ai client. Sui client i demoni devono stare in ascolto del server e, quando finisce il tempo, chiudere il tutto e notificare al server che sono liberi.

Ora, io sono un programmatore soprattutto java e con i miei skill ci pago le bollette et altro. La licenza per il no-profit dovrebbe essere "aggratis" mentre per quelli che si fanno pagare la connessione, pensavo a una cifra "simbolica" intorno ai 20/30 € (per un server e 10 client) che dovrebbero andare a rimpinguare le casse dell'associazione. Se poi qualcuno se lo fà installare dal sottoscritto ... vedremo . Ovviamente l'amico che fà da alfa-beta-gamma-delta tester non gli chiedo niente ....

Che cosa mi suggerite di usare per un programma siffatto sotto linux che sia compatibile sia con GNOME che con KDE ?

Vi prego di postare risposte che contengano link a risorse ( how-to , tutorial etc ) .

TIA.

p.s. : se avete voglia di partecipare siete i benvenuti !

magic is real ... unless explicitly declared as integer

Ritratto di Moreno
Moreno
(Geek)
Offline
Geek
Iscritto: 16/06/2005
Messaggi: 94

Ciao

Secondo me sbagli approccio, stare li a sbattersi a mettere le mani nei client può diventare una cosa alquanto pesantuccia.

Penso che la soluzione migliore sia lavorare esclusivamente sul server che è quello che alla fin fine da l'accesso ai client.
Il client deve essere il più minimale possibile un mio amico ha fatto una Live che parte dierttamente in FireFox e non può fare altro.

Sul server si può agire sulla configurazione di squid (indiespensabile poi per il filtraggio dei contenuti) e su iptables che potrebbe essere utile per modulare la banda passante dei vari client.

Ciao Ciao Moreno

Ebbene sì confesso sono un infiltrato di http://www.mandrakeitalia.org ma mi piace girare il Mondo.
Profilo

Ritratto di kripsio
kripsio
(Collaboratore)
Offline
Collaboratore
Iscritto: 10/09/2004
Messaggi: 1486

Detta così, imho, hai tante idee e confuse.
L'ultima cosa a cui dovresti pensare, sempre imho, è come realizzarlo tecnicamente: non credo che in questo periodo storico si possa scrivere un programma vasto come quello che intendi realizzare, che funzioni, che sia mantenuto, che piaccia alla gente e venga trovato utile partendo da un prurito e da una idea buttata su un forum.

Credo sia necessario che lo pianifichi per bene, pianifichi le componenti, come esse debbano interagire, i flussi informativi e blablablabla...
Devi considerarne gli aspetti legali, le problematiche di usabilità, il target a cui il prodotto si rivolge, produrre un business plan anche se è un progetto no profit ci saranno costi da sostenere, verificarne la fattibilità, verificare le risorse umane e finanziarie di cui disponi e una parasagna di altri aspetti tutt'altro che tecnico/informatici.

_poi_ passerei alla pianificazione _tecnica_. Il mio approccio, solitamente, è prendi qualcosa di fatto e modificalo come ti fa più comodo. Partire da zero, imho, deve sempre essere l'ultima spiaggia.

Ah... il nuovo anno e le pianificazioni... che pacco... Big Grin

Ritratto di ferretti75
ferretti75
(Monster)
Offline
Monster
Iscritto: 08/07/2005
Messaggi: 476

Mi sono spiegato male.

Ho ravanato la rete per un anno circa. Tutte le soluzioni che ho trovato ( per linux ) erano kiosk.

Quello che mi serve è un programma che, lanciato al login di un utente, blocchi in qualche modo il pc ( tipo una mashera con un logo o uno screensaver ) finchè non gli arriva una password o un messaggio su una porta .

caso 1 : password
Viene inserito un tempo nel quale l'utente è sbloccato
caso 2 : messaggio
Insieme al messaggio arriva un pacchetto con il tempo nel quale l'utente è sbloccato

In tutti e due i casi, al momento della "fine del tempo" , la home ( e tutti i files temporanei, cache etc etc ) è ripulita

Lato "server" :
C'è un interfaccia utente ( il gestore del cafè ) che permette
1) di sapere quali sono i pc in uso e quanto tempo rimane
2) di sbloccare un pc
3) di aggiungere tempo a un pc

x Moreno : tutto giusto quello che dici ( specialmente la parte di squid ) ... ma questo esula, per il momento, da quello che mi serve. Per la pesantezza : l'ultima volta che sono entrato in un internet cafè avevano dei celeron con 512 Mb di ram .... un "demone" del genere in background credi che faccia la differenza ?

x Kripsio : l'idea è precisa, è l'esposizione che fà schifo . Per il businessplan : no comment. Per le licenze : era un'idea : se ci faccio due euro ( che non credo ) li giro direttamente all'associazione ( se non diventano multipli di mille ... ma neanche questo lo credo )

Il succo è avere qualcosa tipo "NetTime" ( che non esiste per linux ) che è leggero, pratico e costa poco ....

La domanda è : che linguaggio usereste voi ? La cosa che mi preme è che l'interfaccia ( sia per il "client" che per il "server" ) sia "compatibile" ( almeno ) con GNOME e KDE.

Ovvio che a livello di configurazione delle macchine ci si può sbizzarrire : io pensavo a un utente che non può fare niente ( tipo la live dell'amico di moreno ) se non navigare, chattare e ( forse ) attaccare dispositivi esterni tipo chiavette o foto/video camere .... ma questa solo come idea di massima .

TIA

Marco

magic is real ... unless explicitly declared as integer

Ritratto di Moreno
Moreno
(Geek)
Offline
Geek
Iscritto: 16/06/2005
Messaggi: 94

Ciao

???

Vuoi dire che il Celeron era il Server o il Client ??

Guarda comunque che squid è leggerissimo (ovviamente dipende da quanti client ha sotto).

Per il logo non c'è problema basta reindirizzare stramite squid tutte le richieste di quella determinata postazione su una pagina predefinita con il logo e quanto serve.

Ciao Ciao Moreno

Ebbene sì confesso sono un infiltrato di http://www.mandrakeitalia.org ma mi piace girare il Mondo.
Profilo

Ritratto di Henryx
Henryx
(Geek)
Offline
Geek
Iscritto: 24/08/2005
Messaggi: 121

Domanda: cos'e` NetTime?
Per il linguaggio, se sai Java, usa Java, e` piu` che ottimo

Enrico

Ritratto di ferretti75
ferretti75
(Monster)
Offline
Monster
Iscritto: 08/07/2005
Messaggi: 476

grazie delle risposte ... e delle domande ! Wink

NetTime è un programma per la gestione operativa di un internet cafè . E' a pago e non è conforme all'ultima legge anti-terr. ma chisse.gz. ... non fosse che è solo per finestre

Java : non vorrei avere una VM sui client che gira tanto per "girare" . Vedevo meglio qualcosa in c++ ( o c ) ; è per questo che ho chiesto il parere del mondo, sperando di incappare il qualcuno che avesse già fatto qualcosa "del genere" .

Celeron : i client

Squid : mi sà che mi devo leggere un po' + di cose ....

ciao

Marco

magic is real ... unless explicitly declared as integer

Ritratto di Henryx
Henryx
(Geek)
Offline
Geek
Iscritto: 24/08/2005
Messaggi: 121

Intanto, potresti usare Java + GCJ + SWT per avere un'applicazione grafica nativa, la cui unica dipendenza e` la libreria libgcj.so . Poi farei cosi`: prima di tutto verificherei la possibilita` di utilizzare Gecko direttamente da Java o se la compatibilita` HTML di Java 6 e` tale da poter sviluppare un browser (se non e` fattibile, passerei a Python).
Dopodiche`, creerei un'applicazione grafica (l'unica a partire con X) che mi chiede utente e password. Inseriti questi dati, presenterei una schermata tipo browser che mi permette di navigare. In background, comunicherei ad un server l'ora di avvio della navigazione, facendo in modo che scatti un timer. Allo scadere del timer, invierei al client un messaggio di stop della navigazione. Una volta ricevuto tale messaggio, il client mostra nuovamente la finestra di login e non permette nessun'altra operazione.
Dovrebbe funzionare

Enrico
P.S. attualmente, un browser web totalmente in Java lo trovi qui: http://html.xamjwg.org/

Ritratto di pietro
pietro
(Collaboratore)
Offline
Collaboratore
Iscritto: 30/06/2005
Messaggi: 792

Indipendentemente dalla soluzione che scegli ti consiglio di testarne bene la sicurezza.

Una volta ero in trasferta per motivi di lavoro e soggiornavo in un albergo che aveva nella hall una serie di PC per la navigazione in Internet su cui girava una versione modificata di Explorer (e di Windows, suppongo, ma non me ne intendo). In pratica c'erano due pulsantoni "Accedi ad Internet" e "Termina la Sessione" o qualcosa del genere, fatto sta che si poteva utilizzare solo Explorer. Tutto sicuro direte voi, beh... la prima cosa che ho fatto e' stato digitare nella barra dell'URL, al posto di un indirizzo IP, la seguente stringa: "C:\". Lascio a voi immaginare il resto. Si poteva accedere a tutti i file di sistema, scaricare da Internet quello che si voleva ed eseguirlo. Per non parlare delle scorciatoie con i tasti...

Probabilmente il "totem" o "access point" o come diavolo si chiamava non era stato progettato da persone molto esperte. Probabilmente hanno testato il sistema solo nelle condizioni di corretto utilizzo, mentre si dovrebbero collaudare anche le situazioni "al contorno", per dirla con un termine matematico.

Ovviamente il Linux su questo aspetto e' piu' sicuro, ma volevo semplicemente portare alla tua attenzione il fattore sicurezza, che su un PC pubblico non deve essere sottovalutato.

Pietro

Debian Lenny on BeagleBoard

Ritratto di ferretti75
ferretti75
(Monster)
Offline
Monster
Iscritto: 08/07/2005
Messaggi: 476

Quello che vorrei fare io, a livello di programma, è "semplicemente" una maschera che blocca il pc se non arriva un segnale ( da tastiera o dal server ) . Quando la maschera si chiude ( è finito il tempo o l'utente si slogga ) la home dell'utente viene ripulita ben bene.

Dal lato della sicurezza ( IMHO ) la cosa più semplice e sicura è restringere l'utente che si logga di default e che fà "girare" la maschera .

Java : eviterei perchè non sono sicuro del livello di integrazione col sotto-sistema X ( vedi keybord shortcuts da trappare prima che l'utente fetente_ma_maledetto_lui_conosce_X riesca a far danno ) .

Inoltre, un browser scritto in Java è , per definizione, lento : la gente paga per navigare ... almeno diamogli firefox . Altra condizione sine-qua-non è la possibilità di usare un client di chat ( anche solo aMsn sarebbe un buon inizio ) .

Quindi, la parte da sviluppare è la maschera che blocca+logga+pulisce . Il resto è configurazione della linuz box.

Per Moreno : mi sono guardato un po' le faq e i docs di squid ma non sono un gran che ferrato in materia ... non è che hai dei links 4 dummies ?

Ciao e grazie delle risposte !

Marco

magic is real ... unless explicitly declared as integer

Ritratto di paolo
paolo
(Webmaster)
Offline
Webmaster
Iscritto: 04/10/2004
Messaggi: 1260

Io eviterei di aprire altre porte oltre la 80 per ovvie ragioni di sicurezza, quindi per la chat, si fa un bel link al sito:

http://www.meebo.com

Supporta tutti i protocolli, gira dentro al browser, usa la porta 80 e non fa danni.

My 2 cents

Paolo Mainardi
CTO Twinbit http://www.twinbit.it
Vice Presidente -- ILDN - Italian Linux DIstro Network