Webcafe/Configuration avec Multiseat

De Wiki Ubuntu Party
< Webcafe(Redirigé depuis WebcafeHowto)
Aller à : navigation, rechercher

Configuration de poste en libre service

Afin d'éviter :

  • le verrouillage de session
  • l'arrêt ou le redémarrage du poste
  • la déconnexion de la session
  • le switch de session
  • la configuration d'imprimantes
  • la modification des panels
  • l'écran noir en cas d'inactivité
  • l'historique firefox
  • l'enregistrement de mots de passes dans firefox

Script à exécuter en root :

 GCONFCMD='gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory'
 for option in /apps/gnome-screensaver/{user_switch_enabled,lock_enabled,status_message_enabled}
 do $GCONFCMD --type bool --set $option false ;done
 for option in /desktop/gnome/lockdown/{disable_user_switching,disable_print_setup,disable_lock_screen,disable_command_line} \
 /apps/indicator-session/{suppress_shutdown_menuitem,suppress_restart_menuitem,suppress_logout_restart_shutdown,suppress_logout_menuitem} \
 /apps/panel/global/locked_down
 do $GCONFCMD --type bool --set $option true ;done
 
 $GCONFCMD --type string --set /apps/gnome-screensaver/mode single
 $GCONFCMD --type list --list-type string --set /apps/gnome-screensaver/themes [screensavers-ubuntu_theme]
 
 echo 'user_pref("browser.privatebrowsing.autostart", true);' >> /etc/firefox/pref/firefox.js
 echo 'user_pref("signon.rememberSignons", false);' >> /etc/firefox/pref/firefox.js

À développer/tester : Détecter l'inactivité grâce à gnome-screensaver-command (ou autre) pour nettoyer le poste (relancer firefox / effacer les cookies / ...). Attendre idéalement 3 secondes après l'enclenchement de l'écran de veille afin d'être sur que l'utilisateur n'est pas juste en train de lire un texte un peu long.

Borne web restrictive

Le cas ne s'est jamais présenté, mais si nous devions mettre en place des bornes très restrictives limitées à l'usage du web, nous pourrions nous inspirer des bornes web de la CSI, :

  • firefox lancé seul dans X, sans aucun gnome ou autre lutin. (à part un xscreensaver pour détecter l'inactivité)
  • addon firefox "ProCon Latte" pour la gestion des listes blanches
  • addon firefox "R-kiosk" pour le plein écran et la désactivation des menus et des barres de commandes

Installation d'un multiseat

On appelle "multiseat" un ordinateur hébergeant plusieurs session d'utilisateur, typiquement une session indépendante par écran. Il est évidemment nécessaire de disposer d'un PC avec plusieurs sorties d'écrans.

La technologie "multiseat-x" couramment utilisée permet de lancer un serveur X par carte graphique, et non par sortie (une même carte graphique propose souvent 2 sorties). Pour pallier cette limitation, nous lançons plusieurs serveurs X enfants que nous positionnons à notre guise sur le(s) serveur(s) X racine(s). Pour cela nous utilisons Xephyr.

Voir la configuration logicielle d'un multiseat avec Xephyr, tel qu'utilisée au webcafé Ubuntu des Vieilles Charrues.

Supervision

  • Scanner le réseau 192.168.1.*
 nmap -sP 192.168.1.0/24
  • Screenshot de la session (ou des sessions, en cas de multiseat)
 CFILE=`hostname`.jpg
 sudo DISPLAY=:0 import -window root $CFILE
 convert $CFILE -resize x260 -fill white -stroke black -pointsize 50 -draw "text 25,60 '`hostname`'" $CFILE
  • Autre version (plus évoluée, semblerait-il)
 if [ "$1" = 'start' ]
 then
   screen -dm -S imp_survey $0
   exit
 fi
 while sleep 10
 do
   CFILE=`hostname`.jpg
   sudo DISPLAY=:0 import -window root $CFILE
   sudo chown charruespy $CFILE
   convert $CFILE -resize x250 -gravity south -splice 0x20 -gravity north -fill white -stroke black -pointsize 18 -weight bold -draw "text 5,252 '`hostname` - `date +%d-%h-%Hh%Mm%Ss`'" $CFILE
   scp $CFILE ch:${CFILE}.part; ssh ch mv ${CFILE}.part $CFILE
 done


  • Délocker l'écran
 DISPLAY=:0 gnome-screensaver-command -d
  • Serveur http simplissime pour les hosts pointés vers 127.0.0.x (blacklists)
 #! /bin/bash
 while true;do
 netcat -l 80 <<EOF
 HTTP/1.1 301 Moved Permanently
 Location: http://start.ubuntu-fr.org/
 EOF
 done

Multiseat

  • Redémarrer toutes les sessions / serveurs X
 sudo /etc/init.d/charrues restart
  • Inverser les écrans 2 et 3 (tous les écrans doivent avoir la même résolution horizontale)

Attention : la numérotation reste toujours celle d'origine : l'écran 1 est celui qui était le plus à gauche au démarrage. On peut également s'aider du nom d'utilisateur pour déterminer le numéro d'écran (charrue9 pour l'écran 1, charrue12 pour l'écran 4)

 /usr/local/bin/charrues_screenswitch 2 3
  • Réordonner tous les écrans
 # dans cet exemple, il y a 4 postes de 1280px de large, on remet tout dans l'ordre
 for D in 1 2 3 4; do 
 XINF=`xwininfo -root -children -display :0 | grep "Xephyr on :$D" --max-count=1 | tr -d ' ' | cut -d '"' -f 1`
 DISPLAY=:0 sudo wmctrl -i -r $XEF -e 0,$((( D - 1) * 1280)),0,-1,-1
 done
  • Redémarrer un poste :
 #!/bin/bash
 
 . /usr/local/etc/charrues/charrues.conf
 
 n=$1
 Xres=${RESOLUTION/x*/}
 
 pkill -9 -f " :$n"
 sleep 1
 /usr/local/bin/charrues_add_seat $n charrue$(($n-1)) $((($n-1)*${Xres}))
 


  • Compter les claviers et souris détectées et utilisables
 ls -l /dev/input/by-path/*event-mouse* | wc -l
 ls -l /dev/input/by-path/*event-kbd* | wc -l

Webcam

 cvlc v4l2:///dev/video0 :input-slave=alsa://plughw:1,0 v4l2-standard=0 --sout \
 "#transcode{acodec=vorb,ab=96,channels=2,vcodec=vorb,vcodec=theo,vb=128,height=320,width=240}:duplicate{dst=standard{access=shout,mux=ogg,dst=source:spyspy20@charrues.ubuntu-fr.org:8000/live.ogg}}"