Commit ac6eef3c authored by Michael Liang's avatar Michael Liang

le-proinfodata: Modifying in relation the task #1437.

Signed-off-by: Michael Liang's avatarMichael Liang <ml09@inf.ufpr.br>
parent 6e2d38ee
Data de modificação: 12/2013
Scripts usados:
-> dialog_inep.sh
-> exec_dialog.sh
-> exec_dialog.script
-> stop_screen.sh
-> dialog_inep.sh
Ele é o dialog que irá obter as informações do usuario, como inep e proxy. Ele foi implementado usando o Zenity.
-> exec_dialog.sh e exec_dialog.script
Ambos são scripts para chamar o dialog_inep.sh, mas o LE5 possui versão com multiterminal e sem multiterminal, e ambos possuem diferenças em sua inicialização, motivo que levou a realizar adaptações para ambos. exec_dialog irá executar apenas em maquinas com LE sem multitermainal enquanto o exec_dialog.script irá executar apenas para maquinas com multiterminal.
------------------------------------------------
| | | | | |
| | Antes | | Depois | |
| boot | do | greeter | do | Sessão |
| | greeter | | greeter | |
| | | | | |
------------------------------------------------
^ ^
| |
Esses são os momentos onde o exec_dialog são chamados
Além da diferenças entre versão multiterminal, o LE pode iniciar sessões com o Gnome-Shell ou Gnome-Fallback, que também receberam formas diferentes de ser chamar o exec_dialog. Quando é fallback, apenas para (stop) os processo do script que chama a le-edubar e o gnome-panel, eles só são destravados (continue) quando o script terminar, ou seja se receber um inep valido ou a frase dizendo que não tem o inep no momento, isso tudo acontece através de uma chamada do autostart que executa o exec_dialog.sh.
Caso seja uma sessão Gnome-Shelll, não é possivel parar o processo do painel, isso porque o painel não é mais uma aplicação e sim um script em javascript, então usa-se uma configuração do lightdm (greeter), que é chamar o exec_dialog.sh depois do greeter e antes da sessão ser iniciada.
Observações: Sabendo destas peculiaridades, em ambos os scrpts existem algumas variaveis que servem para evitar alguns problemas. Por exemplo em um multiterminal ambos scripts existiram e acontecerá que depois do greeter será chamado o exec_dialog.sh( que não irá aparecerá porque multiterminal impede o uso do X) e irá criar o .dialog_lock (trava para que não fique se excutando o script tda vez que iniciar sessão e quando encerrar sessão), que por sua vez impedirá o exec_dialog.script executar.
-> stop_screen.sh
Script que server para travar o painel e a edubar no multiterminal, isso porque o PID do painel e edubar não são gerados a tempo para que o exec_dialog.script obtenha estes valores.
#!/bin/bash
# Copyright (C) 2004-2012 Centro de Computacao Cientifica e Software Livre
# Departamento de Informatica - Universidade Federal do Parana - C3SL/UFPR
# This file is part of le-proinfodata
#
# exec_dialog.sh is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
# USA.
F_MULT="/tmp/.mult.lock"
F_LOCK="/tmp/.dialog.lock"
F_INEP="/opt/seed_mec/SEED2/client/conf/inep"
BACKGROUND="/usr/share/backgrounds/le5-wallpaper1600X1200.png"
LE_EDUBAR_POS="/usr/share/gnome/autostart/le-edubar_position.sh"
function enable_mouse () {
xmodmap -e "pointer = 1 2 3 4 5 6 7 8 9" &
xmodmap -e "keycode 64 = Alt_L Meta_L Alt_L Meta_L Alt_L Meta_L" &
}
function disable_mouse () {
xmodmap -e "pointer = 1 2 11 4 5 6 7 8 9" &
xmodmap -e "keycode 64 = " &
}
function call_dialog_inep_mult_off () {
#Disable mouse right-click
disable_mouse
#Set background
xli -onroot -fillscreen $BACKGROUND
dialog_inep.sh
#Reset background to default
xli -onroot -background black
#Enable mouse right-click
enable_mouse
}
function call_dialog_inep_mult_on () {
#Disable mouse right-click
disable_mouse
dialog_inep.sh
#Get PID
P_EDUBAR=$(ps aux | grep $LE_EDUBAR_POS | tr -s -t " " "|" | cut -d"|" -f2)
P_GPANEL=$(pgrep gnome-panel)
#Enable Edubar and Panel
kill -cont $P_GPANEL
kill -cont $P_EDUBAR
#Enable mouse right-click
enable_mouse
}
export LANG="pt_BR.UTF-8"
# SANITY CHECK -------------------------------------------------------
# Do not run script if we are on live-cd
# or the INEP code is already set
# or we are logging out
if dpkg --get-selections "ubiquity-le" | grep -q 'install$' ||
[ -f $F_INEP ] ||
[ -f $F_LOCK ]; then
exit 0
fi
# --------------------------------------------------------------------
# Delay for not happen overlay window
sleep 3
# Check whether the computer is running on a the multiterminal
if dpkg --get-selections "le-multiterminal" | grep -q 'install$'; then
# In the first call (lightdm) in multiterminal this is script must leave, to be called again after.
if [ -f $F_MULT ];then
touch $F_LOCK
echo "0" > $F_LOCK
call_dialog_inep_mult_on
else
touch $F_MULT
exit 0
fi
else
touch $F_LOCK
echo "1" > $F_LOCK
call_dialog_inep_mult_off
fi
exit 0
...@@ -20,15 +20,15 @@ ...@@ -20,15 +20,15 @@
# USA. # USA.
#Filter data in le.zone #Filter data in le.zone
function verifica_inep() { function verify_inep() {
i=0 i=0
cat $le_zone | cut -d "|" -f1 | grep $1 cat $LE_ZONE | cut -d "|" -f1 | grep $1
retorno=$? RETURN=$?
info1=$(cat $le_zone | grep $1 | tr -d " " | cut -d "|" -f1) info1=$(cat $LE_ZONE | grep $1 | tr -d " " | cut -d "|" -f1)
info2=$(cat $le_zone | grep $1 | tr -d " " | cut -d "|" -f2) info2=$(cat $LE_ZONE | grep $1 | tr -d " " | cut -d "|" -f2)
info3=$(cat $le_zone | grep $1 | tr -d " " | cut -d "|" -f3) info3=$(cat $LE_ZONE | grep $1 | tr -d " " | cut -d "|" -f3)
info4=$(cat $le_zone | grep $1 | cut -d "|" -f4) info4=$(cat $LE_ZONE | grep $1 | cut -d "|" -f4)
info5=$(cat $le_zone | grep $1 | tr -d " " | cut -d "|" -f5) info5=$(cat $LE_ZONE | grep $1 | tr -d " " | cut -d "|" -f5)
if [ $info1 != $1 ]; then if [ $info1 != $1 ]; then
return 1 return 1
fi fi
...@@ -37,9 +37,9 @@ function verifica_inep() { ...@@ -37,9 +37,9 @@ function verifica_inep() {
echo $i echo $i
sleep 1 sleep 1
i=$((i+30)) i=$((i+30))
done)| zenity --progress --title="INEP" --text="Verificando inep digitado..." --percentage=0 --no-cancel --auto-close --width=600 --height=100 done)| zenity --progress --title="INEP" --text="Verificando INEP digitado..." --percentage=0 --no-cancel --auto-close --width=600 --height=100
#End progress bar #End progress bar
if [ $retorno -eq 0 ];then if [ $RETURN -eq 0 ];then
#Check INEP is valid and correct #Check INEP is valid and correct
zenity --list --title="INEP" --text="Essas informações estão corretas?" --cancel-label="Não" --ok-label="Sim" --width=600 --height=200 --column="Inep" --column="Estado" --column="Municipio" --column="Cep" --column="Escola" $info1 $info2 $info3 $info5 "$info4" zenity --list --title="INEP" --text="Essas informações estão corretas?" --cancel-label="Não" --ok-label="Sim" --width=600 --height=200 --column="Inep" --column="Estado" --column="Municipio" --column="Cep" --column="Escola" $info1 $info2 $info3 $info5 "$info4"
if [ $? -eq 0 ];then if [ $? -eq 0 ];then
...@@ -51,94 +51,95 @@ function verifica_inep() { ...@@ -51,94 +51,95 @@ function verifica_inep() {
fi fi
else else
#Check INEP is invalid #Check INEP is invalid
zenity --warning --title="INEP" --text="O INEP fornecido é inválido. Por favor verifique o número INEP correspondente a sua instituição de ensino e tente novamente ou digite $frase" --width=600 --height=100 zenity --warning --title="INEP" --text="O INEP fornecido é inválido. Por favor verifique o número INEP correspondente a sua instituição de ensino e tente novamente ou digite $TEXT" --width=600 --height=100
return 1 return 1
fi fi
} }
frase="\"quero digitar o inep da minha escola depois\"" #Save information of the proxy in file
valido=0 function verify_proxy() {
proxy_ok=0
while [ $proxy_ok -eq 0 ]; do
proxy=$(zenity --forms --title="PROXY" --text="Preencha as informações de proxy:" --add-entry="Host" --add-entry="Porta" --add-entry="Usuario" --cancel-label="Cancelar")
if [ $? -eq 1 ];then
zenity --info --title="INEP" --text="Processo concluido!"
exit 0
fi
host=$(echo $proxy | cut -d"|" -f1)
port=$(echo $proxy | cut -d"|" -f2)
user=$(echo $proxy | cut -d"|" -f3)
echo "phost="$host > $F_PROXY
echo "pport="$port >> $F_PROXY
echo "puid="$user >> $F_PROXY
zenity --question --title="PROXY" --cancel-label="Não" --ok-label="Sim" --text="Existe senha do proxy ?" --width=600 --height=100
password_y_n=$?
#Configure the password if exist
if [ $password_y_n -eq 0 ]; then
password_ok=0
while [ $password_ok -eq 0 ]; do
passwords=$(zenity --title="PROXY" --forms --text="Digite a senha" --add-password="Digite a senha" --add-password="Confirme a senha" --cancel-label="Cancelar")
password=$(echo $passwords | cut -d"|" -f1)
password_conf=$(echo $passwords | cut -d"|" -f2)
echo "PASS "$passwords "P1 "$password "P2 "$password_conf
if [ "$password" = "$password_conf" ]; then
echo "ppasswd="$password >> $F_PROXY
password_ok=1
else
zenity --info --title="PROXY" --text="As senhas não conferem!"
fi
done
fi
#Check PROXY is valid and correct
zenity --question --title="INEP" --cancel-label="Não" --ok-label="Sim" --text="Host:$host \nPorta: $port \nUsuario: $user \nEssas informações estão corretas?"
if [ $? -eq 0 ];then
proxy_ok=1
fi
done
}
TEXT="\"quero digitar o INEP da minha escola depois\""
VALID=0
# INEP file # INEP file
SEED_HOME=/opt/seed_mec SEED_HOME=/opt/seed_mec/SEED2
F_INEP="${SEED_HOME}/SEED2/client/conf/inep" F_INEP="${SEED_HOME}/client/conf/INEP"
MD5F_INEP="${SEED_HOME}/SEED2/.md5sum/client/conf/inep" MD5F_INEP="${SEED_HOME}/.md5sum/client/conf/INEP"
BACKUPF_INEP="${SEED_HOME}/SEED2/.backup/client/conf/inep" BACKUPF_INEP="${SEED_HOME}/.backup/client/conf/INEP"
MD5BACKUPF_INEP="${SEED_HOME}/SEED2/.md5sum/.backup/client/conf/inep" MD5BACKUPF_INEP="${SEED_HOME}/.md5sum/.backup/client/conf/INEP"
# Proxy file # Proxy file
F_PROXY="${SEED_HOME}/SEED2/client/conf/proxy" F_PROXY="${SEED_HOME}/client/conf/proxy"
MD5F_PROXY="${SEED_HOME}/SEED2/.md5sum/client/conf/proxy" MD5F_PROXY="${SEED_HOME}/.md5sum/client/conf/proxy"
BACKUPF_PROXY="${SEED_HOME}/SEED2/.backup/client/conf/proxy" BACKUPF_PROXY="${SEED_HOME}/.backup/client/conf/proxy"
MD5BACKUPF_PROXY="${SEED_HOME}/SEED2/.md5sum/.backup/client/conf/proxy" MD5BACKUPF_PROXY="${SEED_HOME}/.md5sum/.backup/client/conf/proxy"
# LE ZONE # LE ZONE
le_zone="/etc/le-proinfodata/le.zone" LE_ZONE="/etc/le-proinfodata/le.zone"
if [ $valido -eq 0 ]; then if [ $VALID -eq 0 ]; then
zenity --info --height=100 --no-wrap --title="INEP" --text="O agente de acompanhamento do projeto PROINFODATA foi instalado nesta máquina.\nPara torná-lo funcional, entretanto, é necessário fornecer informações sobre as configurações de proxy,\nalém do número INEP da instituição.\nPara saber mais sobre o projeto, visite o site http://seed.c3sl.ufpr.br." zenity --info --height=100 --no-wrap --title="INEP" --text="O agente de acompanhamento do projeto PROINFODATA foi instalado nesta máquina.\nPara torná-lo funcional, entretanto, é necessário fornecer informações sobre as configurações de proxy,\nalém do número INEP da instituição.\nPara saber mais sobre o projeto, visite o site http://seed.c3sl.ufpr.br."
inep=`zenity --entry --title="INEP" --text="Digite seu INEP ou a mensagem: $frase" --cancel-label="Cancelar" --width=600 --height=100` INEP=$(zenity --entry --title="INEP" --text="Digite seu INEP ou a mensagem: $TEXT" --cancel-label="Cancelar" --width=600 --height=100)
while [ $valido -eq 0 ]; do while [ $VALID -eq 0 ]; do
if [ $? -eq 1 ]; then if [ $? -eq 1 ]; then
inep=`zenity --entry --title="INEP" --text="Digite seu INEP ou a mensagem: $frase" --cancel-label="Cancelar" --width=600 --height=100` INEP=$(zenity --entry --title="INEP" --text="Digite seu INEP ou a mensagem: $TEXT" --cancel-label="Cancelar" --width=600 --height=100)
else else
#Check strings #Check strings
inep_c=`echo $inep|tr -d " "` INEP_C=$(echo $INEP|tr -d " ")
frase_c=`echo $frase|tr -d " "|tr -d "\""` TEXT_C=$(echo $TEXT|tr -d " "|tr -d "\"")
if [ $inep_c = $frase_c ]; then if [ "$INEP_C" = "$TEXT_C" ]; then
zenity --info --title="INEP" --height=100 --no-wrap --text=" O número INEP será requisitado novamente na próxima vez que este computador for ligado. Clique em OK para continuar." zenity --info --title="INEP" --height=100 --no-wrap --text=" O número INEP será requisitado novamente na próxima vez que este computador for ligado. Clique em OK para continuar."
valido=1 VALID=1
else else
#Check the size of the string #Check the size of the string
if [ ${#inep} -eq 8 ]; then if [ ${#INEP} -eq 8 ]; then
verifica_inep $inep $F_INEP if verify_inep $INEP $F_INEP; then
inep_valido=$? VALID=1
if [ $inep_valido -eq 0 ]; then
valido=1
zenity --question --title="PROXY" --text="Você possui informações de proxy?" zenity --question --title="PROXY" --text="Você possui informações de proxy?"
#Configure Proxy #Configure Proxy
if [ $? -eq 0 ];then if [ $? -eq 0 ];then
proxy_ok=0 verify_proxy
while [ $proxy_ok -eq 0 ]; do
proxy=`zenity --forms --title="PROXY" --text="Preencha as informações de proxy:" --add-entry="Host" --add-entry="Porta" --add-entry="Usuario" --cancel-label="Cancelar"`
if [ $? -eq 1 ];then
zenity --info --title="INEP" --text="Processo concluido!"
exit
fi
host=`echo $proxy | cut -d"|" -f1`
port=`echo $proxy | cut -d"|" -f2`
user=`echo $proxy | cut -d"|" -f3`
echo "phost="$host > $F_PROXY
echo "pport="$port >> $F_PROXY
echo "puid="$user >> $F_PROXY
`zenity --question --title="PROXY" --cancel-label="Não" --ok-label="Sim" --text="Existe senha do proxy ?" --width=600 --height=100`
password_y_n=$?
#Configure the password if exist
if [ $password_y_n -eq 0 ]; then
password_ok=0
while [ $password_ok -eq 0 ]; do
passwords=`zenity --title="PROXY" --forms --text="Digite a senha" --add-password="Digite a senha" --add-password="Confirme a senha" --cancel-label="Cancelar"`
password=`echo $passwords | cut -d"|" -f1`
password_conf=`echo $passwords | cut -d"|" -f2`
echo "PASS "$passwords "P1 "$password "P2 "$password_conf
if [ $password = $password_conf ]; then
echo "ppasswd="$password >> $F_PROXY
password_ok=1
else
zenity --info --title="PROXY" --text="As senhas não conferem!"
fi
done
fi
#Check PROXY is valid and correct
zenity --question --title="INEP" --cancel-label="Não" --ok-label="Sim" --text="Host:$host \nPorta: $port \nUsuario: $user \nEssas informações estão corretas?"
if [ $? -eq 0 ];then
proxy_ok=1
fi
done
fi fi
zenity --info --title="INEP" --text="Processo concluido!" zenity --info --title="INEP" --text="Processo concluido!"
else else
inep=`zenity --entry --title="INEP" --text="Digite seu INEP ou a mensagem: $frase" --width=600 --height=100 --cancel-label="Cancelar" ` INEP=$(zenity --entry --title="INEP" --text="Digite seu INEP ou a mensagem: $TEXT" --width=600 --height=100 --cancel-label="Cancelar" )
fi fi
else else
inep=`zenity --entry --title="INEP" --text="Digite seu INEP ou a mensagem: $frase" --width=600 --height=100 --cancel-label="Cancelar"` INEP=$(zenity --entry --title="INEP" --text="Digite seu INEP ou a mensagem: $TEXT" --width=600 --height=100 --cancel-label="Cancelar")
fi fi
fi fi
fi fi
......
...@@ -21,34 +21,42 @@ F_MULT="/tmp/.mult.lock" ...@@ -21,34 +21,42 @@ F_MULT="/tmp/.mult.lock"
F_LOCK="/tmp/.dialog.lock" F_LOCK="/tmp/.dialog.lock"
F_INEP="/opt/seed_mec/SEED2/client/conf/inep" F_INEP="/opt/seed_mec/SEED2/client/conf/inep"
BACKGROUND="/usr/share/backgrounds/le5-wallpaper1600X1200.png" BACKGROUND="/usr/share/backgrounds/le5-wallpaper1600X1200.png"
function call_dialog_inep_mult_off () { LE_EDUBAR_POS="/usr/share/gnome/autostart/le-edubar_position.sh"
#Disable mouse right-click
function enable_mouse () {
xmodmap -e "pointer = 1 2 3 4 5 6 7 8 9" &
xmodmap -e "keycode 64 = Alt_L Meta_L Alt_L Meta_L Alt_L Meta_L" &
}
function disable_mouse () {
xmodmap -e "pointer = 1 2 11 4 5 6 7 8 9" & xmodmap -e "pointer = 1 2 11 4 5 6 7 8 9" &
xmodmap -e "keycode 64 = " & xmodmap -e "keycode 64 = " &
}
function call_dialog_inep_mult_off () {
#Disable mouse right-click
disable_mouse
#Set background #Set background
xli -onroot -fillscreen $BACKGROUND xli -onroot -fillscreen $BACKGROUND
dialog_inep.sh dialog_inep.sh
#Reset background to default #Reset background to default
xli -onroot -background black xli -onroot -background black
#Enable mouse right-click #Enable mouse right-click
xmodmap -e "pointer = 1 2 3 4 5 6 7 8 9" & enable_mouse
xmodmap -e "keycode 64 = Alt_L Meta_L Alt_L Meta_L Alt_L Meta_L"
} }
function call_dialog_inep_mult_on () { function call_dialog_inep_mult_on () {
#Disable mouse right-click #Disable mouse right-click
xmodmap -e "pointer = 1 2 11 4 5 6 7 8 9" & disable_mouse
xmodmap -e "keycode 64 = " &
dialog_inep.sh dialog_inep.sh
#Get PID #Get PID
P_EDUBAR=$(ps aux | grep "/usr/share/gnome/autostart/le-edubar_position.sh" | tr -s -t " " "|" | cut -d"|" -f2) P_EDUBAR=$(ps aux | grep $LE_EDUBAR_POS | tr -s -t " " "|" | cut -d"|" -f2)
P_GPANEL=$(pgrep gnome-panel) P_GPANEL=$(pgrep gnome-panel)
#Enable Edubar and Panel #Enable Edubar and Panel
kill -cont $P_GPANEL kill -cont $P_GPANEL
kill -cont $P_EDUBAR kill -cont $P_EDUBAR
#Enable mouse right-click #Enable mouse right-click
xmodmap -e "pointer = 1 2 3 4 5 6 7 8 9" & enable_mouse
xmodmap -e "keycode 64 = Alt_L Meta_L Alt_L Meta_L Alt_L Meta_L"
} }
export LANG="pt_BR.UTF-8" export LANG="pt_BR.UTF-8"
...@@ -62,6 +70,7 @@ if dpkg --get-selections "ubiquity-le" | grep -q 'install$' || ...@@ -62,6 +70,7 @@ if dpkg --get-selections "ubiquity-le" | grep -q 'install$' ||
exit 0 exit 0
fi fi
# -------------------------------------------------------------------- # --------------------------------------------------------------------
# Delay for not happen overlay window
sleep 3 sleep 3
# Check whether the computer is running on a the multiterminal # Check whether the computer is running on a the multiterminal
if dpkg --get-selections "le-multiterminal" | grep -q 'install$'; then if dpkg --get-selections "le-multiterminal" | grep -q 'install$'; then
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment