shell bypass 403
#!/usr/bin/env bash
# General tools for manipulating patches
# and dealing with patches.
lookup_patchset()
{
\typeset paths lookup_path
if [[ -z "$1" ]]
then
echo "Usage: rvm patchset show name"
return 1
fi
paths=($(__rvm_ruby_string_paths_under "$rvm_path/patchsets" | sort -r))
for lookup_path in "${paths[@]}"
do
if [[ -s "$lookup_path/$1" ]]
then
\command \cat "$lookup_path/$1"
return 0
fi
done
return 1
}
# Returns the path used to look for a patch given a specific name.
__rvm_patch_lookup_path()
{
echo "/"
[[ -z "${rvm_patch_original_pwd:-""}" ]] || echo "$rvm_patch_original_pwd/"
echo "$PWD/"
__rvm_ruby_string_paths_under "$rvm_patches_path" | __rvm_sed 's/$/\//' | sort -r
return $?
}
__rvm_expand_patch_name()
{
\typeset name level expanded_patch_name not_required_patches
not_required_patches="optional default ${_system_name_lowercase}"
name="${1:-""}"
level="${2:-}"
[[ -n "$name" ]] || return 0
if
expanded_patch_name="$(
rvm_ruby_string="${rvm_ruby_string}" lookup_patchset "$name"
)"
then
echo "${expanded_patch_name}"
elif
[[ " $not_required_patches " != *" $name "* ]]
then
echo "${name}${level:+%}${level:-}"
fi
}
# Return the full patch for a given patch.
__rvm_lookup_full_patch_path()
{
\typeset extension patch_path directory directories __old_IFS
# Absolute path, pwd and then finally the rvm patches path.
__old_IFS="$IFS"
IFS=$'\n'
directories=($( __rvm_patch_lookup_path ))
IFS="$__old_IFS"
for directory in "${directories[@]}"
do
for extension in "" .patch .diff
do
patch_path="${directory}${1}${extension}"
# -s reports directories too - so additional check -f needed
if
[[ -s "$patch_path" && -f "$patch_path" ]]
then
echo "$patch_path"
return 0
fi
done
done
if
__rvm_string_match "$1" "http://*" "https://*" &&
file_exists_at_url "$1"
then
echo "$1"
fi
}