51 lines
1.4 KiB
Bash
51 lines
1.4 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
set -e
|
|
set -u
|
|
set -o pipefail
|
|
|
|
ENCODING="utf-8"
|
|
|
|
[[ "${EXTRACTED_FILE_UPDATE_RULES:-"false"}" == "true" ]] || exit 0
|
|
|
|
CAPA=${CAPA_BIN:-"/usr/local/bin/capa"}
|
|
|
|
BASE_DIR="$(mktemp -d -t capa-XXXXXX)"
|
|
|
|
function git_latest_release () {
|
|
if [ "$1" ]; then
|
|
(set -o pipefail && curl -sL -f "https://api.github.com/repos/$1/releases/latest" | jq '.tag_name' | sed -e 's/^"//' -e 's/"$//' ) || \
|
|
(set -o pipefail && curl -sL -f "https://api.github.com/repos/$1/releases" | jq '.[0].tag_name' | sed -e 's/^"//' -e 's/"$//' ) || \
|
|
echo unknown
|
|
else
|
|
echo "unknown">&2
|
|
fi
|
|
}
|
|
|
|
function finish {
|
|
rm -rf "$BASE_DIR"
|
|
}
|
|
|
|
if type git >/dev/null 2>&1; then
|
|
trap finish EXIT
|
|
if [[ -f "$CAPA" ]]; then
|
|
CAPA_PREVIOUS_VERSION="$("$CAPA" --version 2>&1 | awk '{print $2}' | cut -d'-' -f1)"
|
|
else
|
|
CAPA_PREVIOUS_VERSION="none"
|
|
fi
|
|
CAPA_LATEST_VERSION="$(git_latest_release fireeye/capa)"
|
|
if [[ -n $CAPA_LATEST_VERSION ]] && [[ "$CAPA_PREVIOUS_VERSION" != "$CAPA_LATEST_VERSION" ]]; then
|
|
pushd "$BASE_DIR" >/dev/null 2>&1
|
|
curl -fsSL -o ./capa.zip "https://github.com/fireeye/capa/releases/download/${CAPA_LATEST_VERSION}/capa-${CAPA_LATEST_VERSION}-linux.zip"
|
|
unzip ./capa.zip
|
|
chmod 755 ./capa
|
|
mkdir -p "$(dirname "$CAPA")"
|
|
rm -f "$CAPA".old 2>/dev/null || true
|
|
mv -f "$CAPA" "$CAPA".old 2>/dev/null || true
|
|
mv -f ./capa "$CAPA"
|
|
popd >/dev/null 2>&1
|
|
fi
|
|
else
|
|
exit 1
|
|
fi
|