#!/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 }