shell bypass 403
#!/usr/bin/env bash
# Query the rvm key-value database for a specific key
# allow system specific overrides + warnings / errors
__rvm_db_system()
{
\typeset __key __message
for __key in "${_system_name}_${_system_version}_$1" "${_system_name}_$1" "$1"
do
if __rvm_db "${__key}_error" __message
then rvm_error "${__message}"
fi
if __rvm_db "${__key}_warn" __message
then rvm_warn "${__message}"
fi
if __rvm_db "${__key}" "$2"
then return 0
fi
done
true # for OSX
}
# Query the rvm key-value database for a specific key
# Allow overrides from user specifications in $rvm_user_path/db
__rvm_db()
{
\typeset value key variable
key="${1:-}"
variable="${2:-}"
value=""
if [[ -f "$rvm_user_path/db" ]]
then value="$( __rvm_db_ "$rvm_user_path/db" "$key" )"
fi
if [[ -z "$value" && -f "$rvm_path/config/db" ]]
then value="$( __rvm_db_ "$rvm_path/config/db" "$key" )"
fi
[[ -n "$value" ]] || return 1
if [[ -n "$variable" ]]
then eval "$variable='$value'"
else echo "$value"
fi
true # for OSX
}
__rvm_db_remove()
{
if
[[ -f "$1" ]]
then
__rvm_sed -e "\#^$2=# d" -e '/^$/d' "$1" > "$1.new"
\command \mv -f "$1.new" "$1"
fi
}
__rvm_db_add()
{
\typeset __dir="${1%/*}"
if [[ -f "${1}" ]]
then __rvm_db_remove "${1}" "${2}"
elif [[ ! -d "${__dir}" ]]
then mkdir -p "${__dir}"
fi
printf "%b=%b\n" "$2" "$3" >> "$1"
}
__rvm_db_get()
{
if [[ -f "$1" ]]
then __rvm_sed -n -e "\#^$2=# { s#^$2=##;; p; }" -e '/^$/d' < "$1"
else echo -n ""
fi
}
__rvm_db_()
{
\typeset __db __key __value
__db="$1"
__key="${2%%\?*}" # remove ?x=y from urls
shift 2
__value="$*"
case "${__value}" in
(unset|delete)
__rvm_db_remove "${__db}" "${__key}"
;;
("")
__rvm_db_get "${__db}" "${__key}"
;;
(*)
__rvm_db_add "${__db}" "${__key}" "${__value}"
;;
esac
}