1
0
mirror of https://github.com/stefanocasazza/ULib.git synced 2025-10-12 20:27:27 +08:00
ULib/tests/examples/RA/RA.old/www/ra-station/cgi-bin/.registrazione
2015-01-23 17:24:36 +01:00

601 lines
15 KiB
Bash

#!/bin/bash
# .registrazione
view_form_input() {
# eventuali dati pre form input
TMP_FORM_FILE=/tmp/$BASE_NAME.prev
if [ -f $TMP_FORM_FILE ]; then
load_value_session $TMP_FORM_FILE
elif [ -f $HOME_DIR/etc/${BASE_NAME}.default ]; then
load_value_session $HOME_DIR/etc/${BASE_NAME}.default
fi
if [ "$BASE_NAME" = "registrazione-business" ]; then
# --------------------------------------
# value to skip: (input type select)
# --------------------------------------
# "contratto_profilo = $v23"
# --------------------------------------
printf -v OUTPUT "`cat $FORM_FILE_DIR/$BASE_NAME.tmpl`" \
"$v1" "$v2" "$v3" "$v4" "$v5" "$v6" "$v7" "$v8" "$v9" "${v10}" "${v11}" "${v12}" "${v13}" "${v14}" \
"${v15}" "${v16}" "${v17}" "${v18}" "${v19}" "${v20}" "${v21}" "${v22}" "${v24}"
else
# --------------------------------------
# value to skip: (input type select)
# --------------------------------------
# "dati_utente_sesso = $v5"
# "dati_utente_tipo_di_documento = $v11"
# "dominio = $v29"
# --------------------------------------
printf -v OUTPUT "`cat $FORM_FILE_DIR/$BASE_NAME.tmpl`" \
"$v2" "$v1" "$v3" "$v4" "$v6" "$v7" "$v8" "$v9" "${v10}" "${v12}" \
"${v13}" "${v14}" "${v15}" "${v16}" "${v17}" "${v18}" "${v19}" "${v20}" "${v21}" "${v22}" "${v23}" "${v24}" \
"${v25}" "${v26}" "${v27}" "${v28}" "${v30}"
fi
}
load_value_session() {
i=0
while read LINE
do
LINE=${LINE//\"/\\\"}
eval v$i=\"$LINE\"
let "i = i + 1"
done < $1
}
load_value_session_with_xml_escape() {
i=0
while read LINE
do
LINE=${LINE//&/&amp;}
LINE=${LINE//</&lt;}
LINE=${LINE//>/&gt;}
LINE=${LINE//\'/&apos;}
LINE=${LINE//\"/&quot;}
eval v$i=\"$LINE\"
let "i = i + 1"
done < $1
}
save_value_session() {
cat <<END >$TMP_FORM_FILE
$1
$2
$3
$4
$5
$6
$7
$8
$9
${10}
${11}
${12}
${13}
${14}
${15}
${16}
${17}
${18}
${19}
${20}
${21}
${22}
${23}
${24}
${25}
${26}
${27}
${28}
${29}
${30}
${31}
${32}
${33}
${34}
END
}
visualizza_contratto() {
if [ ! -d $DIR_SCAN ]; then
mkdir -p $DIR_SCAN
fi
FORM_STAMPA="`cat $FORM_FILE_DIR/stampa.js`"
FORM_1="`cat $FORM_FILE_DIR/contratto-privacy.html`"
FORM_2="`cat $FORM_FILE_DIR/contratto-informativa.html`"
if [ ! -f $DIR_SCAN/page01.tiff ]; then
DISABLE='disabled="1"'
fi
printf -v FORM_BOTTONI "`cat $FORM_FILE_DIR/contratto-bottoni.tmpl`" $BASE_NAME "$ATTIVA_SCANSIONE_MULTIPLA" $DISABLE $DISABLE
TMP_FORM_FILE=$DIR_SCAN/$BASE_NAME.curr
FORM_FILE="`cat $FORM_FILE_DIR/contratto-$BASE_NAME.tmpl`"
if [ "$BASE_NAME" = "registrazione-business" ]; then
# --------------------------------------
# value to skip
# --------------------------------------
# "cn = $11"
# "email_altro = $12"
# --------------------------------------
if [ $# -eq 25 ]; then
printf -v OUTPUT "$FORM_FILE" "$FORM_STAMPA" \
"$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9" "${10}" \
"${13}" "${14}" "${15}" "${16}" "${17}" "${18}" "${19}" "${20}" "${21}" "${22}" "${23}" "${24}" \
"$FORM_1" "$FORM_2" "$FORM_BOTTONI"
save_value_session "" "$@"
elif [ $# -eq 0 ]; then
if [ -f $TMP_FORM_FILE ]; then
load_value_session $TMP_FORM_FILE
fi
printf -v OUTPUT "$FORM_FILE" "$FORM_STAMPA" \
"$v1" "$v2" "$v3" "$v4" "$v5" "$v6" "$v7" "$v8" "$v9" "${v10}" \
"${v13}" "${v14}" "${v15}" "${v16}" "${v17}" "${v18}" "${v19}" "${v20}" "${v21}" "${v22}" "${v23}" "${v24}" \
"$FORM_1" "$FORM_2" "$FORM_BOTTONI"
fi
else
if [ $# -eq 31 ]; then
printf -v OUTPUT "$FORM_FILE" "$FORM_STAMPA" \
"$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9" "${10}" \
"${11}" "${12}" "${13}" "${14}" "${15}" "${16}" "${17}" "${18}" "${19}" "${20}" "${21}" "${22}" "${23}" "${24}" \
"${25}" "${26}" "${27}" "${28}" "$FORM_1" "$FORM_2" "$FORM_BOTTONI"
save_value_session "" "$@"
elif [ $# -eq 0 ]; then
if [ -f $TMP_FORM_FILE ]; then
load_value_session $TMP_FORM_FILE
fi
printf -v OUTPUT "$FORM_FILE" "$FORM_STAMPA" \
"$v1" "$v2" "$v3" "$v4" "$v5" "$v6" "$v7" "$v8" "$v9" "${v10}" "${v11}" "${v12}" \
"${v13}" "${v14}" "${v15}" "${v16}" "${v17}" "${v18}" "${v19}" "${v20}" "${v21}" "${v22}" "${v23}" "${v24}" \
"${v25}" "${v26}" "${v27}" "${v28}" "$FORM_1" "$FORM_2" "$FORM_BOTTONI"
fi
fi
}
visualizza_rid() {
FORM_STAMPA="`cat $FORM_FILE_DIR/stampa.js`"
printf -v FORM_BOTTONI "`cat $FORM_FILE_DIR/rid-bottoni.tmpl`" $BASE_NAME
TMP_FORM_FILE=$DIR_SCAN/$BASE_NAME.curr
if [ -f $TMP_FORM_FILE ]; then
load_value_session $TMP_FORM_FILE
fi
CODICE_FISCALE=$(eval "echo \$$(echo v${1})")
printf -v OUTPUT "`cat $FORM_FILE_DIR/rid.tmpl`" "$FORM_STAMPA" "$2" $CODICE_FISCALE "$FORM_BOTTONI"
}
errore_scansione() {
if [ "$BASE_NAME" = "registrazione-business" ]; then
TIPO="BUSINESS"
else
TIPO="RESIDENZIALE CON CPE"
fi
printf -v OUTPUT "`cat $FORM_FILE_DIR/error.tmpl`" "$TIPO" "$DEVICE_SCANNER" "`scanimage -L 2>/dev/null`" $BASE_NAME
}
# ---------------------------------------------------------------------------------------------
# scanimage --help -d $DEVICE_SCANNER
# ---------------------------------------------------------------------------------------------
# Options specific to device `net:ra-station:hpaio:/usb/HP_LaserJet_3055?serial=00CNCK343927':
# Scan mode:
# --mode Lineart|Gray|Color [Color]
# Selects the scan mode (e.g., lineart, monochrome, or color).
# --resolution 75|100|150|200|300|600|1200dpi [75]
# Sets the resolution of the scanned image.
# Advanced:
# --contrast 0..100 [inactive]
# Controls the contrast of the acquired image.
# --compression None|JPEG [JPEG]
# Selects the scanner compression method for faster scans, possibly at
# the expense of image quality.
# --jpeg-quality 0..100 [10]
# Sets the scanner JPEG compression factor. Larger numbers mean better
# compression, and smaller numbers mean better image quality.
# --batch-scan[=(yes|no)] [no]
# Enables continuous scanning with automatic document feeder (ADF).
# --source Auto|ADF [Auto]
# Selects the scan source (such as a document-feeder).
# Geometry:
# --length-measurement Unknown|Unlimited|Approximate|Padded [Padded]
# Selects how the scanned image length is measured and reported, which
# is impossible to know in advance for scrollfed scans.
# -l 0..228.6mm [0]
# Top-left x position of scan area.
# -t 0..381mm [0]
# Top-left y position of scan area.
# -x 0..228.6mm [228.6]
# Width of scan-area.
# -y 0..381mm [381]
# Height of scan-area.
# ---------------------------------------------------------------------------------------------
# X=210
# Y=297
# SCANMODE=Lineart
# --------------------------------------------------
# RESOLUTION=75
# --------------------------------------------------
# 72K prova.tiff
# 20K prova.pdf
# 16K prova.png
# X=210 Y=297 Image Width: 621 Image Length: 876
#
# 96K prova.tiff
# 20K prova.pdf
# 20K prova.png
# X=228.6 Y=381 Image Width: 640 Image Length: 1125
# --------------------------------------------------
# RESOLUTION=200
# --------------------------------------------------
# 480K prova.tiff
# 64K prova.pdf
# 40K prova.png
# X=210 Y=297 Image Width: 1654 Image Length: 2338
# --------------------------------------------------
# RESOLUTION=300
# --------------------------------------------------
# 1.1M prova.tiff
# 76K prova.pdf
# 60K prova.png
# X=210 Y=297 Image Width: 2481 Image Length: 3507
# --------------------------------------------------
# RESOLUTION=600
# --------------------------------------------------
# 4.2M prova.tiff
# 84K prova.pdf
# 56K prova.png
# X=210 Y=297 Image Width: 4961 Image Length: 7015
# --------------------------------------------------
reset_scansione() {
rm -f $DIR_SCAN/*.tiff $DIR_SCAN/*.png
visualizza_contratto
}
rascan_image() {
# $1 -> parametri scansione multipla (opt)
# X=210 # A4
# Y=297 # A4
# RESOLUTION=$1 # 75|100|150|200|300|600|1200dpi [75]
# set -x
# 1-bit multipage TIFF
SCANMODE=Lineart
NUM_PAGE=`ls -f $DIR_SCAN/page[0-9]*.tiff 2>/dev/null | wc -l`
let "NUM_DOC = $NUM_PAGE + 1"
rm -f /tmp/scan.log
if [ -n "$1" ]; then
OUTPUT=/tmp/scan.log
SCANIMAGE_PARAM="$SCANIMAGE_MULTI_PARAM --batch-start=$NUM_DOC"
else
printf -v OUTPUT "$DIR_SCAN/page%02d.tiff" $NUM_DOC
SCANIMAGE_PARAM=$SCANIMAGE_SINGLE_PARAM
fi
scanimage -d $DEVICE_SCANNER --format=tiff --mode $SCANMODE --resolution $RESOLUTION -x $X -y $Y $1 $SCANIMAGE_PARAM > $OUTPUT 2>&1
NUM_DOC=`ls -f $DIR_SCAN/page[0-9]*.tiff 2>/dev/null | wc -l`
if [ $NUM_DOC -eq 0 ]; then
errore_scansione
else
TMP_FORM_FILE=$DIR_SCAN/$BASE_NAME.curr
if [ -f $TMP_FORM_FILE ]; then
load_value_session $TMP_FORM_FILE
fi
save_value_session $NUM_DOC \
"$v1" "$v2" "$v3" "$v4" "$v5" "$v6" "$v7" "$v8" "$v9" "${v10}" "${v11}" "${v12}" "${v13}" "${v14}" "${v15}" \
"${v16}" "${v17}" "${v18}" "${v19}" "${v20}" "${v21}" "${v22}" "${v23}" "${v24}" "${v25}" "${v26}" "${v27}" "${v28}" "${v29}" "${v30}" "${v31}"
FOR_PAGE=1
set_paginazione 1
view_page
fi
}
rascan_image_multipla()
{
rascan_image "--batch=$DIR_SCAN/page%02d.tiff --source ADF"
}
rascan_image_singola() {
rascan_image
}
view_page() {
printf -v FILE $DIR_SCAN/page%02d $pagina_corrente
if [ ! -f ${FILE}.tiff ]; then
errore_scansione
fi
if [ ! -f ${FILE}.png ]; then
# Create the page PNG file
if [ "$SCANMODE" = "Lineart" ]; then
fax2png ${FILE}.tiff ${FILE}.png -w 621 -a >/dev/null 2>&1
else
tifftopnm ${FILE}.tiff >${FILE}.pnm 2>/dev/null
pnmtopng ${FILE}.pnm >${FILE}.png 2>/dev/null
rm -f ${FILE}.pnm
fi
optimize_image_bin ${FILE}.png ${FILE}.png
fi
if [ -f ${FILE}.png ]; then
printf -v OUTPUT "`cat $FORM_FILE_DIR/view.tmpl`" ${FILE}.png $BASE_NAME "$link_paginazione"
fi
}
view_page_prepare() {
TMP_FORM_FILE=$DIR_SCAN/$BASE_NAME.curr
if [ -f $TMP_FORM_FILE ]; then
load_value_session $TMP_FORM_FILE
fi
FOR_PAGE=1
NUM_DOC=$v0
if [ -z "$NUM_DOC" ]; then
NUM_DOC=`ls -f $DIR_SCAN/page[0-9]*.tiff 2>/dev/null | wc -l`
save_value_session $NUM_DOC \
"$v1" "$v2" "$v3" "$v4" "$v5" "$v6" "$v7" "$v8" "$v9" "${v10}" "${v11}" "${v12}" "${v13}" "${v14}" "${v15}" \
"${v16}" "${v17}" "${v18}" "${v19}" "${v20}" "${v21}" "${v22}" "${v23}" "${v24}" "${v25}" "${v26}" "${v27}" "${v28}" "${v29}" "${v30}" "${v31}"
fi
}
view_page_image() {
# set -x
view_page_prepare
set_paginazione $1
view_page
}
registrazione_contratto() {
# set -x
# load specific script env, for signing and sending message to workflow...
. $HOME_DIR/etc/${BASE_NAME}.conf
TMP_FORM_FILE=$DIR_SCAN/$BASE_NAME.curr
if [ -f $TMP_FORM_FILE ]; then
load_value_session_with_xml_escape $TMP_FORM_FILE
fi
# create PDF...
tiffcp -a $DIR_SCAN/page[0-9]*.tiff $DIR_SCAN/out.tiff >/dev/null 2>&1
tiff2pdf -p A4 -q 100 -j $DIR_SCAN/out.tiff >$DIR_SCAN/out.pdf 2>/dev/null # Creating PDF file...
PDF=`openssl base64 -in $DIR_SCAN/out.pdf -e 2>/dev/null` # ...and convert in base64
# directory to put mail to send...
DIR_SAVE=`pwd`
cd $DIR_MAIL
DIR_SESSION=$SESSION_ID/$BASE_NAME
if [ ! -d $DIR_SESSION ]; then
mkdir -p $DIR_SESSION
fi
NAME=$DIR_SESSION/send_to_$$
if [ "$BASE_NAME" = "registrazione-business" ]; then
printf "`cat mail-business.tmpl`" "$WORKFLOW_SUBJECT" "$WORKFLOW_FROM_ADDRESS" "$WORKFLOW_TO_ADDRESS" \
"$v1" "$v2" "$v3" "$v4" "$v5" "$v6" "$v7" "$v8" "$v9" "${v10}" "${v11}" "${v12}" "${v13}" "${v14}" \
"${v15}" "${v16}" "${v17}" "${v18}" "${v19}" "${v20}" "${v21}" "${v22}" "${v23}" "${v24}" ${NETWORK} \
"$PDF" > $NAME.eml
else
printf "`cat mail-cpe.tmpl`" "$WORKFLOW_SUBJECT" "$WORKFLOW_FROM_ADDRESS" "$WORKFLOW_TO_ADDRESS" \
"$v1" "$v2" "$v3" "$v4" "$v5" "$v6" "$v7" "$v8" "$v9" "${v10}" "${v11}" "${v12}" "${v13}" "${v14}" \
"${v15}" "${v16}" "${v17}" "${v18}" "${v19}" "${v20}" "${v21}" "${v22}" "${v23}" "${v24}" "${v25}" "${v26}" "${v27}" "${v28}" "${v30}" \
"${NETWORK}" "$PDF" > $NAME.eml
fi
send_MAIL_and_goto_MAIN_MENU $NAME $DIR_SAVE/$DIR_SCAN
}
# funzioni che creano i link alle pagine dei risultati
# ----------------------------------------------------
crea_link() {
if [ $pagina_corrente -eq $1 ]; then
ADD="<span class=\"pnow\">$1</span>"
else
ADD="<a href=\"?page=$1\" class=\"pnum\">$1</a>"
fi
link_paginazione=$link_paginazione$ADD" "
}
set_paginazione() {
pagina_corrente=$1
if [ $NUM_DOC -le $FOR_PAGE ]; then
if [ $NUM_DOC -eq 0 ]; then
NUM_START=0
else
NUM_START=1
fi
NUM_END=$NUM_DOC
link_paginazione="<span class=\"void\">PREV</span><span class=\"void\">NEXT</span>"
return
fi
let "pagina_precedente = $pagina_corrente - 1"
let "pagina_successiva = $pagina_corrente + 1"
let "tot_pagine = $NUM_DOC / $FOR_PAGE"
let "resto = $NUM_DOC % $FOR_PAGE"
if [ $resto -ne 0 ]; then
let "tot_pagine = $tot_pagine + 1"
fi
let "ultima_pagina = $tot_pagine - 1"
let "penultima_pagina = $ultima_pagina - 1"
# link alla pagina precedente
if [ $pagina_corrente -eq 1 ]; then
NUM_START=1
link_paginazione="<span class=\"void\">PREV</span> "
else
let "NUM_START = 1 + $pagina_precedente * $FOR_PAGE"
link_paginazione="<a href=\"?page=$pagina_precedente\" class=\"pnum\">PREV</a> "
fi
# mostriamo sempre il link alla prima pagina
crea_link 1
# se il prossimo link non è alla seconda pagina aggiungo dei puntini ... oppure la sola pagina mancante
if [ $pagina_precedente -gt 2 ]; then
if [ $pagina_precedente -eq 3 ]; then
crea_link 2
else
link_paginazione=$link_paginazione" ... "
fi
fi
# creo i link alla pagina corrente ed a quelle ad essa vicine
for (( i=$pagina_precedente; i<=$pagina_successiva; i+=1 )); do
# se tra quelle vicine c'è la prima pagina (già riportata)
if [ $i -lt 2 ]; then
continue
fi
# se tra quelle vicine c'è l'ultima pagina (che mostrerò con le prossime istruzioni)
if [ $i -gt $ultima_pagina ]; then
continue
fi
crea_link $i
done
# se il precedente link non era alla penultima pagina aggiungo dei puntini ... oppure la sola pagina mancante
if [ $pagina_successiva -lt $ultima_pagina ]; then
if [ $pagina_successiva -eq $penultima_pagina ]; then
crea_link $ultima_pagina
else
link_paginazione=$link_paginazione" ... "
fi
fi
# mostriamo il link all'ultima pagina se questa non coincide con la prima
if [ $tot_pagine -ne 1 ]; then
crea_link $tot_pagine
fi
# link alla pagina successiva
if [ $pagina_corrente -eq $tot_pagine ]; then
NUM_END=$NUM_DOC
link_paginazione=$link_paginazione"<span class=\"void\">NEXT</span>"
else
let "NUM_END = $NUM_START + $FOR_PAGE - 1"
link_paginazione=$link_paginazione"<a href=\"?page=$pagina_successiva\" class=\"pnum\">NEXT</a>"
fi
}
# ------------------------------------------------------