|
|
|
@ -336,15 +336,245 @@ _h2b() {
|
|
|
|
|
done |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#hex string |
|
|
|
|
_hex() { |
|
|
|
|
_str="$1" |
|
|
|
|
_str_len=${#_str} |
|
|
|
|
_h_i=1 |
|
|
|
|
while [ "$_h_i" -le "$_str_len" ]; do |
|
|
|
|
_str_c="$(printf "%s" "$_str" | cut -c "$_h_i")" |
|
|
|
|
printf "%02x" "'$_str_c" |
|
|
|
|
_h_i="$(_math "$_h_i" + 1)" |
|
|
|
|
_is_solaris() { |
|
|
|
|
_contains "${__OS__:=$(uname -a)}" "solaris" || _contains "${__OS__:=$(uname -a)}" "SunOS" |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#stdin output hexstr splited by one space |
|
|
|
|
#input:"abc" |
|
|
|
|
#output: " 61 62 63" |
|
|
|
|
_hex_dump() { |
|
|
|
|
if _is_solaris; then |
|
|
|
|
od -A n -v -t x1 | tr -d "\r\n\t" | tr -s " " | tr -d "\n" |
|
|
|
|
else |
|
|
|
|
od -A n -v -t x1 | tr -d "\r\n\t" | tr -s " " | sed "s/ $//" | tr -d "\n" |
|
|
|
|
fi |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#url encode, no-preserved chars |
|
|
|
|
#A B C D E F G H I J K L M N O P Q R S T U V W X Y Z |
|
|
|
|
#41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 56 57 58 59 5a |
|
|
|
|
|
|
|
|
|
#a b c d e f g h i j k l m n o p q r s t u v w x y z |
|
|
|
|
#61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a |
|
|
|
|
|
|
|
|
|
#0 1 2 3 4 5 6 7 8 9 - _ . ~ |
|
|
|
|
#30 31 32 33 34 35 36 37 38 39 2d 5f 2e 7e |
|
|
|
|
|
|
|
|
|
#stdin stdout |
|
|
|
|
_url_encode() { |
|
|
|
|
_hex_str=$(_hex_dump) |
|
|
|
|
_debug3 "_url_encode" |
|
|
|
|
_debug3 "_hex_str" "$_hex_str" |
|
|
|
|
for _hex_code in $_hex_str; do |
|
|
|
|
#upper case |
|
|
|
|
case "${_hex_code}" in |
|
|
|
|
"41" ) |
|
|
|
|
printf "%s" "A" |
|
|
|
|
;; |
|
|
|
|
"42" ) |
|
|
|
|
printf "%s" "B" |
|
|
|
|
;; |
|
|
|
|
"43" ) |
|
|
|
|
printf "%s" "C" |
|
|
|
|
;; |
|
|
|
|
"44" ) |
|
|
|
|
printf "%s" "D" |
|
|
|
|
;; |
|
|
|
|
"45" ) |
|
|
|
|
printf "%s" "E" |
|
|
|
|
;; |
|
|
|
|
"46" ) |
|
|
|
|
printf "%s" "F" |
|
|
|
|
;; |
|
|
|
|
"47" ) |
|
|
|
|
printf "%s" "G" |
|
|
|
|
;; |
|
|
|
|
"48" ) |
|
|
|
|
printf "%s" "H" |
|
|
|
|
;; |
|
|
|
|
"49" ) |
|
|
|
|
printf "%s" "I" |
|
|
|
|
;; |
|
|
|
|
"4a" ) |
|
|
|
|
printf "%s" "J" |
|
|
|
|
;; |
|
|
|
|
"4b" ) |
|
|
|
|
printf "%s" "K" |
|
|
|
|
;; |
|
|
|
|
"4c" ) |
|
|
|
|
printf "%s" "L" |
|
|
|
|
;; |
|
|
|
|
"4d" ) |
|
|
|
|
printf "%s" "M" |
|
|
|
|
;; |
|
|
|
|
"4e" ) |
|
|
|
|
printf "%s" "N" |
|
|
|
|
;; |
|
|
|
|
"4f" ) |
|
|
|
|
printf "%s" "O" |
|
|
|
|
;; |
|
|
|
|
"50" ) |
|
|
|
|
printf "%s" "P" |
|
|
|
|
;; |
|
|
|
|
"51" ) |
|
|
|
|
printf "%s" "Q" |
|
|
|
|
;; |
|
|
|
|
"52" ) |
|
|
|
|
printf "%s" "R" |
|
|
|
|
;; |
|
|
|
|
"53" ) |
|
|
|
|
printf "%s" "S" |
|
|
|
|
;; |
|
|
|
|
"54" ) |
|
|
|
|
printf "%s" "T" |
|
|
|
|
;; |
|
|
|
|
"55" ) |
|
|
|
|
printf "%s" "U" |
|
|
|
|
;; |
|
|
|
|
"56" ) |
|
|
|
|
printf "%s" "V" |
|
|
|
|
;; |
|
|
|
|
"57" ) |
|
|
|
|
printf "%s" "W" |
|
|
|
|
;; |
|
|
|
|
"58" ) |
|
|
|
|
printf "%s" "X" |
|
|
|
|
;; |
|
|
|
|
"59" ) |
|
|
|
|
printf "%s" "Y" |
|
|
|
|
;; |
|
|
|
|
"5a" ) |
|
|
|
|
printf "%s" "Z" |
|
|
|
|
;; |
|
|
|
|
|
|
|
|
|
#lower case |
|
|
|
|
"61" ) |
|
|
|
|
printf "%s" "a" |
|
|
|
|
;; |
|
|
|
|
"62" ) |
|
|
|
|
printf "%s" "b" |
|
|
|
|
;; |
|
|
|
|
"63" ) |
|
|
|
|
printf "%s" "c" |
|
|
|
|
;; |
|
|
|
|
"64" ) |
|
|
|
|
printf "%s" "d" |
|
|
|
|
;; |
|
|
|
|
"65" ) |
|
|
|
|
printf "%s" "e" |
|
|
|
|
;; |
|
|
|
|
"66" ) |
|
|
|
|
printf "%s" "f" |
|
|
|
|
;; |
|
|
|
|
"67" ) |
|
|
|
|
printf "%s" "g" |
|
|
|
|
;; |
|
|
|
|
"68" ) |
|
|
|
|
printf "%s" "h" |
|
|
|
|
;; |
|
|
|
|
"69" ) |
|
|
|
|
printf "%s" "i" |
|
|
|
|
;; |
|
|
|
|
"6a" ) |
|
|
|
|
printf "%s" "j" |
|
|
|
|
;; |
|
|
|
|
"6b" ) |
|
|
|
|
printf "%s" "k" |
|
|
|
|
;; |
|
|
|
|
"6c" ) |
|
|
|
|
printf "%s" "l" |
|
|
|
|
;; |
|
|
|
|
"6d" ) |
|
|
|
|
printf "%s" "m" |
|
|
|
|
;; |
|
|
|
|
"6e" ) |
|
|
|
|
printf "%s" "n" |
|
|
|
|
;; |
|
|
|
|
"6f" ) |
|
|
|
|
printf "%s" "o" |
|
|
|
|
;; |
|
|
|
|
"70" ) |
|
|
|
|
printf "%s" "p" |
|
|
|
|
;; |
|
|
|
|
"71" ) |
|
|
|
|
printf "%s" "q" |
|
|
|
|
;; |
|
|
|
|
"72" ) |
|
|
|
|
printf "%s" "r" |
|
|
|
|
;; |
|
|
|
|
"73" ) |
|
|
|
|
printf "%s" "s" |
|
|
|
|
;; |
|
|
|
|
"74" ) |
|
|
|
|
printf "%s" "t" |
|
|
|
|
;; |
|
|
|
|
"75" ) |
|
|
|
|
printf "%s" "u" |
|
|
|
|
;; |
|
|
|
|
"76" ) |
|
|
|
|
printf "%s" "v" |
|
|
|
|
;; |
|
|
|
|
"77" ) |
|
|
|
|
printf "%s" "w" |
|
|
|
|
;; |
|
|
|
|
"78" ) |
|
|
|
|
printf "%s" "x" |
|
|
|
|
;; |
|
|
|
|
"79" ) |
|
|
|
|
printf "%s" "y" |
|
|
|
|
;; |
|
|
|
|
"7a" ) |
|
|
|
|
printf "%s" "z" |
|
|
|
|
;; |
|
|
|
|
#numbers |
|
|
|
|
"30" ) |
|
|
|
|
printf "%s" "0" |
|
|
|
|
;; |
|
|
|
|
"31" ) |
|
|
|
|
printf "%s" "1" |
|
|
|
|
;; |
|
|
|
|
"32" ) |
|
|
|
|
printf "%s" "2" |
|
|
|
|
;; |
|
|
|
|
"33" ) |
|
|
|
|
printf "%s" "3" |
|
|
|
|
;; |
|
|
|
|
"34" ) |
|
|
|
|
printf "%s" "4" |
|
|
|
|
;; |
|
|
|
|
"35" ) |
|
|
|
|
printf "%s" "5" |
|
|
|
|
;; |
|
|
|
|
"36" ) |
|
|
|
|
printf "%s" "6" |
|
|
|
|
;; |
|
|
|
|
"37" ) |
|
|
|
|
printf "%s" "7" |
|
|
|
|
;; |
|
|
|
|
"38" ) |
|
|
|
|
printf "%s" "8" |
|
|
|
|
;; |
|
|
|
|
"39" ) |
|
|
|
|
printf "%s" "9" |
|
|
|
|
;; |
|
|
|
|
"2d" ) |
|
|
|
|
printf "%s" "-" |
|
|
|
|
;; |
|
|
|
|
"5f" ) |
|
|
|
|
printf "%s" "_" |
|
|
|
|
;; |
|
|
|
|
"2e" ) |
|
|
|
|
printf "%s" "." |
|
|
|
|
;; |
|
|
|
|
"7e" ) |
|
|
|
|
printf "%s" "~" |
|
|
|
|
;; |
|
|
|
|
#other hex |
|
|
|
|
*) |
|
|
|
|
printf '%%%s' "$_hex_code" |
|
|
|
|
;; |
|
|
|
|
esac |
|
|
|
|
done |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|