instalador-firma-digital/01-utils.sh
2024-05-06 21:35:27 -06:00

106 lines
3.7 KiB
Bash

#!/bin/sh
# - TODO:
# - kdialog and terminal get_pass
urlencode() {
ENCODEDURL="$(curl -Gs -w %{url_effective} --data-urlencode @- ./ ||: )"
printf '%s' "$ENCODEDURL" | sed 's/%0[aA]$//;s/^.*[?]//'
}
get_asp_var() {
i=0
for VAR in __VIEWSTATE __VIEWSTATEGENERATOR __EVENTVALIDATION ; do
VAL="$(printf '%s' "$RESPONSE" | grep "id=\"$VAR\"" | cut -d '"' -f 8 | urlencode)"
[ "$i" != 0 ] && printf '&'
printf '%s=%s' "$VAR" "$VAL"
i=+1
done
}
download_iso() {
hiddenISO="$1" SN="$2"
URL="https://soportefirmadigital.com/sfdj/dl.aspx"
RESPONSE="$(curl -s --compressed "$URL" -o -)"
ASP_VARS="$(get_asp_var)"
curl -s --compressed "$URL" --data-raw "$ASP_VARS" \
--data-raw "__EVENTTARGET=ctl00%24certContents%24LinkButton3" \
--data-raw "ctl00%24certContents%24hiddenISO=$hiddenISO" \
--data-raw "ctl00%24certContents%24txtSerialNumber=$SN" \
--data-raw "ctl00%24certContents%24chkConfirmo=on" \
-o -
}
set_version() {
# Linux
for os in /etc/os-release /usr/lib/os-release; do
[ -f $os ] && . $os && break
done
[ "$ID" = "debian" ] && ID="$(printf '%s %s' "$ID" "$VERSION_ID" | awk '{if ($2 >= 10) print $1}')"
[ "$ID" = "ubuntu" ] && ID="$(printf '%s %s' "$ID" "$VERSION_ID" | awk '{if ($2 >= 18.04) print $1}')"
[ "$ID" = "fedora" ] && ID="$(printf '%s %s' "$ID" "$VERSION_ID" | awk '{if ($2 >= 34) print $1}')"
[ "$ID" = "centos" ] && ID="$(printf '%s %s' "$ID" "$VERSION_ID" | awk '{if ($2 = 7) print $1}')"
[ "$ID" = "centos" ] && ID="$(printf '%s %s' "$ID" "$VERSION_ID" | awk '{if ($2 = 9) print "fedora"}')"
# MacOS
if v=/System/Library/CoreServices/SystemVersion.plist; [ -f "$v" ]; then
temp=
while read -r line; do
case $line in
*ProductVersion*) temp=.;;
*)
[ "$temp" ] || continue
VERSION_ID=${line#*>}
break
esac
done < "$v"
ID="$(printf '%s' "$VERSION_ID" | awk '{if ($1 >= 10.14) print "macos"}')"
fi
[ "$ID" = "debian" ] || [ "$ID" = "ubuntu" ] && FILE="ClientesLinux_DEB64_Rev25.zip"
[ "$ID" = "fedora" ] && FILE="ClientesLinux_RPM64_Rev24.zip"
[ "$ID" = "centos" ] && FILE="ClientesLinux_CentOS7_Rev6.zip"
[ "$ID" = "macos" ] && FILE="ClientesMAC_rev35.dmg"
}
get_pass() {
TITLE="$1" ; PROMPT="$2"
printf 'setprompt %s\nsetdesc %s\nGETPIN\n' "$TITLE" "$PROMPT"
}
term_prompt() {
TITLE="$1" ; PROMPT="$2" ; MODE="$3" ; LIST="$4"
if [ "$MODE" = "info" ] ; then printf '\n\033[1m\033[34m=== %s ===\033[0m\n%s ENTER' "$TITLE" "$PROMPT" ; fi
if [ "$MODE" = "entry" ] ; then printf '\n\033[1m\033[34m=== %s ===\033[0m\n%s\n -> ' "$TITLE" "$PROMPT" ; fi
if [ "$MODE" = "list" ] ; then printf '\n\033[1m\033[34m=== %s ===\033[0m\n%s (1, 2, 3, ...)\n%s\n -> ' "$TITLE" "$PROMPT" "$LIST" ; fi
if [ "$MODE" = "error" ] ; then printf '\n\033[1m\033[31m=== %s ===\033[0m\n%s\n' "$TITLE" "$PROMPT" ; fi
}
firmador_libre() {
FIRMADOR="https://firmador.libre.cr/firmador.jar"
if [ "$FILE" = "ClientesMAC_rev35.dmg" ] ; then
echo
elif [ "$FILE" = "ClientesLinux_DEB64_Rev25.zip" ] ; then
DIR="$HOME/.local/share/firmador"
elif [ "$FILE" = "ClientesLinux_CentOS7_Rev6" ] ; then
echo
elif [ "$FILE" = "ClientesLinux_RPM64_Rev24" ] ; then
echo
fi
mkdir -p "$DIR"
(cd "$DIR" && curl -O "$FIRMADOR")
# Add DESKTOP entry
}
check_deps() {
[ "$FILE" = "ClientesMAC_rev35.dmg" ] &&
echo
[ "$FILE" = "ClientesLinux_DEB64_Rev25.zip" ] &&
for cmd in curl unzip ; do if ! command -v "$cmd" > /dev/null ; then printf '%s ' "$cmd" ; fi ; done
[ "$FILE" = "ClientesLinux_CentOS7_Rev6" ] &&
echo
[ "$FILE" = "ClientesLinux_RPM64_Rev24" ] &&
echo
}