Repo Browser

bashcards/bashcards-android
cards/147941123570--file-encryption-vault/assets/raw.sh
#!/usr/bin/env bash
set -euo pipefail;bash -c $'set -euo pipefail\nbash -c $\'a1=$\\\'\\\\033[0;32m\\\';a2=$\\\'\\\\033[0;31m\\\';a3=$\\\'\\\\033[0;34m\\\';a4=$\\\'\\\\033[0m\\\';a5=$\\\'\\\\033[0;33m\\\'\nb1=`pwd`;b2="";t1="";t2=""\nt1="/dev/tty"; [ -r "$t1" ] && [ -w "$t1" ] || t1=""\nw0(){ if [ -n "$t1" ]; then printf "%b" "$1" >"$t1"; else printf "%b" "$1"; fi; }\nr0(){ if [ -n "$t1" ]; then IFS= read -r t2 <"$t1"; else IFS= read -r t2; fi; t2=`printf "%s" "$t2" | tr -d "\\\\r\\\\n" | sed "s/^[[:space:]]*//;s/[[:space:]]*$//"`; }\np0(){ w0 "Enter to continue... "; r0; }\nc0(){ if [ -n "$t1" ]; then clear >"$t1"; else clear; fi; }\ncommand -v gpg >/dev/null 2>&1 || { w0 "${a2}gpg not installed${a4}\\\\n"; exit 1; }\nk0(){ [ -n "${b2:-}" ] || { w0 "${a2}No file selected${a4}\\\\n"; return 1; }; [ -f "$b2" ] || { w0 "${a2}Selected file missing${a4}\\\\n"; return 1; }; return 0; }\ni0(){\n  c0\n  w0 "${a1}INFO${a4}\\\\n${a5}${b2:-<none>}${a4}\\\\n\\\\n"\n  k0 || { p0; return; }\n  t3=`file -b "$b2" 2>/dev/null || true`\n  t4=`wc -c < "$b2" 2>/dev/null | tr -d " " || true`\n  w0 "${a3}Type:${a4} ${t3}\\\\n"\n  w0 "${a3}Bytes:${a4} ${t4}\\\\n"\n  if command -v sha256sum >/dev/null 2>&1; then\n    t5=`sha256sum "$b2" 2>/dev/null | awk "{print \\\\$1}" || true`\n    w0 "${a3}SHA256:${a4} ${t5}\\\\n"\n  fi\n  w0 "\\\\nPreview (first 25 lines):\\\\n----------------------------------------\\\\n"\n  if [ -n "$t1" ]; then sed -n "1,25p" "$b2" >"$t1"; else sed -n "1,25p" "$b2"; fi\n  w0 "\\\\n----------------------------------------\\\\n\\\\n"\n  p0\n}\ne0(){\n  k0 || { p0; return; }\n  c0\n  w0 "${a1}ENCRYPT${a4}\\\\n${a5}${b2}${a4}\\\\n\\\\nOutput (blank = same + .gpg): "\n  r0; f1="$t2"; [ -z "$f1" ] && f1="${b2}.gpg"\n  if [ -e "$f1" ]; then\n    w0 "${a2}Output exists${a4}  Overwrite? (y/N): "\n    r0; case "$t2" in y|Y) ;; *) return;; esac\n  fi\n  if [ -n "$t1" ]; then gpg -c --output "$f1" "$b2" >"$t1" 2>&1; else gpg -c --output "$f1" "$b2"; fi\n  [ $? -eq 0 ] && w0 "${a1}Saved:${a4} $f1\\\\n" || w0 "${a2}Encrypt failed${a4}\\\\n"\n  p0\n}\nd0(){\n  k0 || { p0; return; }\n  c0\n  w0 "${a1}DECRYPT${a4}\\\\n${a5}${b2}${a4}\\\\n\\\\nOutput (blank = stdout): "\n  r0; f2="$t2"\n  if [ -n "$f2" ]; then\n    if [ -e "$f2" ]; then\n      w0 "${a2}Output exists${a4}  Overwrite? (y/N): "\n      r0; case "$t2" in y|Y) ;; *) return;; esac\n    fi\n    if [ -n "$t1" ]; then gpg -d --output "$f2" "$b2" >"$t1" 2>&1; else gpg -d --output "$f2" "$b2"; fi\n    [ $? -eq 0 ] && w0 "${a1}Saved:${a4} $f2\\\\n" || w0 "${a2}Decrypt failed${a4}\\\\n"\n  else\n    if [ -n "$t1" ]; then gpg -d "$b2" >"$t1" 2>&1; else gpg -d "$b2"; fi\n  fi\n  p0\n}\nb0(){\n  c0\n  w0 "${a1}BROWSER${a4}  ${a5}${b1}${a4}\\\\n\\\\n"\n  if [ -n "$t1" ]; then ls -1p "$b1" 2>/dev/null | sed -n "1,200p" >"$t1"; else ls -1p "$b1" 2>/dev/null | sed -n "1,200p"; fi\n  w0 "\\\\n1) Enter subdir\\\\n2) Go up (..)\\\\n3) Pick file (name)\\\\n4) Pick file (number)\\\\nq) Back\\\\n\\\\n> "\n  r0\n  case "$t2" in\n    1) w0 "Subdir: "; r0; [ -d "$b1/$t2" ] && b1="$b1/$t2" || { w0 "${a2}Not a directory${a4}\\\\n"; p0; } ;;\n    2) b1=`cd "$b1/.." 2>/dev/null && pwd` ;;\n    3) w0 "File: "; r0; [ -f "$b1/$t2" ] && b2="$b1/$t2" || { w0 "${a2}File not found${a4}\\\\n"; p0; } ;;\n    4)\n      c0\n      w0 "${a1}FILES${a4}  ${a5}${b1}${a4}\\\\n\\\\n"\n      if [ -n "$t1" ]; then ls -1p "$b1" 2>/dev/null | grep -v "/$" | nl -ba -w3 -s") " >"$t1"; else ls -1p "$b1" 2>/dev/null | grep -v "/$" | nl -ba -w3 -s") "; fi\n      w0 "\\\\nNumber: "\n      r0; n1="$t2"\n      s1=`ls -1p "$b1" 2>/dev/null | grep -v "/$" | sed -n "${n1}p"`\n      [ -n "$s1" ] && [ -f "$b1/$s1" ] && b2="$b1/$s1" || { w0 "${a2}Invalid selection${a4}\\\\n"; p0; }\n      ;;\n    q|Q|"") ;;\n    *) w0 "${a2}Invalid${a4}\\\\n"; p0 ;;\n  esac\n}\nwhile true; do\n  c0\n  w0 "${a1}FILE VAULT${a4}\\\\n"\n  w0 "${a3}Dir:${a4} ${a5}$b1${a4}\\\\n"\n  w0 "${a3}File:${a4} ${a5}${b2:-<none>}${a4}\\\\n\\\\n"\n  w0 "1) Browse / pick\\\\n2) Info / preview\\\\n3) Encrypt\\\\n4) Decrypt\\\\n5) Set dir (path)\\\\n6) Clear file\\\\nq) Quit\\\\n\\\\n> "\n  r0\n  case "$t2" in\n    1) b0 ;;\n    2) i0 ;;\n    3) e0 ;;\n    4) d0 ;;\n    5) w0 "Path: "; r0; [ -d "$t2" ] && b1=`cd "$t2" 2>/dev/null && pwd` || { w0 "${a2}Not a directory${a4}\\\\n"; p0; } ;;\n    6) b2="" ;;\n    q|Q) exit 0 ;;\n    *) w0 "${a2}Invalid${a4}\\\\n"; p0 ;;\n  esac\ndone\n\'\n'
NameTypeSize
auto-art.pngfile2,454,464
back-data-url.txtfile238,362
back-thumb.pngfile171,029
back.pngfile178,753
front-data-url.txtfile268,210
front-thumb.pngfile123,465
front.pngfile201,141
manifest.txtfile184
qr-payload.txtfile1,939
raw.shfile4,414