108 lines
3.6 KiB
Bash
108 lines
3.6 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() {
|
|
MENU="$1" TITLE="$2"
|
|
|
|
if [ "$MENU" = "zenity" ] ; then
|
|
zenity --title "$TITLE" --password
|
|
else
|
|
echo
|
|
fi
|
|
}
|
|
|
|
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() {
|
|
for cmd in curl unzip ; do
|
|
if ! command -v "$cmd" > /dev/null ; then
|
|
printf '%s ' "$cmd"
|
|
fi
|
|
done
|
|
}
|