mirror of
https://github.com/AuxXxilium/arc-dsm.git
synced 2024-11-24 00:10:52 +07:00
update: add sanity check for url
Signed-off-by: AuxXxilium <info@auxxxilium.tech>
This commit is contained in:
parent
903a7a0918
commit
12095d36e2
201
update.sh
201
update.sh
@ -16,109 +16,114 @@ function getDSM() {
|
||||
echo "${PVS}" >"${TMP_PATH}/versions"
|
||||
while IFS= read -r line; do
|
||||
VERSION="${line}"
|
||||
PAT_URL=$(echo "${PJ}" | jq -r ".\"${VERSION}\".url")
|
||||
PAT_HASH=$(echo "${PJ}" | jq -r ".\"${VERSION}\".sum")
|
||||
URLVER="$(echo "${PV}" | cut -d'.' -f1,2)"
|
||||
PAT_FILE="${MODEL}_${VERSION}.pat"
|
||||
PAT_PATH="${CACHE_PATH}/dl/${PAT_FILE}"
|
||||
UNTAR_PAT_PATH="${CACHE_PATH}/${MODEL}/${VERSION}"
|
||||
DESTINATION="${DSMPATH}/${MODEL}/${VERSION}"
|
||||
DESTINATIONFILES="${FILESPATH}/${MODEL}/${URLVER}"
|
||||
# Make Destinations
|
||||
mkdir -p "${DESTINATION}"
|
||||
mkdir -p "${DESTINATIONFILES}"
|
||||
echo "${MODEL} ${URLVER} (${VERSION})"
|
||||
echo "" >>"${TMP_PATH}/dsmdata.yml"
|
||||
echo "${MODEL} ${URLVER} (${VERSION})" >>"${TMP_PATH}/dsmdata.yml"
|
||||
echo "${PAT_URL}"
|
||||
echo "Url: ${PAT_URL}" >>"${TMP_PATH}/dsmdata.yml"
|
||||
echo "${PAT_HASH}"
|
||||
echo "Hash: ${PAT_HASH}" >>"${TMP_PATH}/dsmdata.yml"
|
||||
if [ -f "${DESTINATION}/pat_url" ] && [ -f "${DESTINATION}/pat_hash" ]; then
|
||||
OLDURL="$(cat "${DESTINATION}/pat_url")"
|
||||
OLDHASH="$(cat "${DESTINATION}/pat_hash")"
|
||||
CHECK_URL=$(echo "${PJ}" | jq -r ".\"${VERSION}\".url")
|
||||
if curl --head -skL -m 5 "${CHECK_URL}" | head -n 1 | grep -q "404\|403"; then
|
||||
continue
|
||||
else
|
||||
OLDURL="0"
|
||||
OLDHASH="0"
|
||||
fi
|
||||
# Check for Update
|
||||
if [ "${PAT_HASH}" != "${OLDHASH}" ] || [ "${PAT_URL}" != "${OLDURL}" ]; then
|
||||
mkdir -p "${CACHE_PATH}/dl"
|
||||
echo "Downloading ${PAT_FILE}"
|
||||
# Discover remote file size
|
||||
STATUS=$(curl -k -w "%{http_code}" -L "${PAT_URL}" -o "${PAT_PATH}" --progress-bar)
|
||||
if [ $? -ne 0 -o ${STATUS} -ne 200 ]; then
|
||||
rm "${PAT_PATH}"
|
||||
echo "Error downloading"
|
||||
PAT_URL=$(echo "${PJ}" | jq -r ".\"${VERSION}\".url")
|
||||
PAT_HASH=$(echo "${PJ}" | jq -r ".\"${VERSION}\".sum")
|
||||
URLVER="$(echo "${PV}" | cut -d'.' -f1,2)"
|
||||
PAT_FILE="${MODEL}_${VERSION}.pat"
|
||||
PAT_PATH="${CACHE_PATH}/dl/${PAT_FILE}"
|
||||
UNTAR_PAT_PATH="${CACHE_PATH}/${MODEL}/${VERSION}"
|
||||
DESTINATION="${DSMPATH}/${MODEL}/${VERSION}"
|
||||
DESTINATIONFILES="${FILESPATH}/${MODEL}/${URLVER}"
|
||||
# Make Destinations
|
||||
mkdir -p "${DESTINATION}"
|
||||
mkdir -p "${DESTINATIONFILES}"
|
||||
echo "${MODEL} ${URLVER} (${VERSION})"
|
||||
echo "" >>"${TMP_PATH}/dsmdata.yml"
|
||||
echo "${MODEL} ${URLVER} (${VERSION})" >>"${TMP_PATH}/dsmdata.yml"
|
||||
echo "${PAT_URL}"
|
||||
echo "Url: ${PAT_URL}" >>"${TMP_PATH}/dsmdata.yml"
|
||||
echo "${PAT_HASH}"
|
||||
echo "Hash: ${PAT_HASH}" >>"${TMP_PATH}/dsmdata.yml"
|
||||
if [ -f "${DESTINATION}/pat_url" ] && [ -f "${DESTINATION}/pat_hash" ]; then
|
||||
OLDURL="$(cat "${DESTINATION}/pat_url")"
|
||||
OLDHASH="$(cat "${DESTINATION}/pat_hash")"
|
||||
else
|
||||
OLDURL="0"
|
||||
OLDHASH="0"
|
||||
fi
|
||||
if [ -f "${PAT_PATH}" ]; then
|
||||
# Export Values
|
||||
echo "${PAT_HASH}" >"${DESTINATION}/pat_hash"
|
||||
echo "${PAT_URL}" >"${DESTINATION}/pat_url"
|
||||
# Extract Files
|
||||
rm -rf "${UNTAR_PAT_PATH}"
|
||||
mkdir -p "${UNTAR_PAT_PATH}"
|
||||
echo -n "Disassembling ${PAT_FILE}: "
|
||||
header=$(od -bcN2 ${PAT_PATH} | head -1 | awk '{print $3}')
|
||||
case ${header} in
|
||||
105)
|
||||
echo "Uncompressed tar"
|
||||
isencrypted="no"
|
||||
;;
|
||||
213)
|
||||
echo "Compressed tar"
|
||||
isencrypted="no"
|
||||
;;
|
||||
255)
|
||||
echo "Encrypted"
|
||||
isencrypted="yes"
|
||||
;;
|
||||
*)
|
||||
echo -e "Could not determine if pat file is encrypted or not, maybe corrupted, try again!"
|
||||
;;
|
||||
esac
|
||||
if [ "${isencrypted}" = "yes" ]; then
|
||||
# Check existance of extractor
|
||||
if [ -f "${EXTRACTOR_PATH}/${EXTRACTOR_BIN}" ]; then
|
||||
echo "Extractor cached."
|
||||
fi
|
||||
# Uses the extractor to untar pat file
|
||||
echo "Extracting..."
|
||||
LD_LIBRARY_PATH="${EXTRACTOR_PATH}" "${EXTRACTOR_PATH}/${EXTRACTOR_BIN}" "${PAT_PATH}" "${UNTAR_PAT_PATH}"
|
||||
else
|
||||
echo "Extracting..."
|
||||
tar -xf "${PAT_PATH}" -C "${UNTAR_PAT_PATH}"
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Error extracting"
|
||||
fi
|
||||
# Check for Update
|
||||
if [ "${PAT_HASH}" != "${OLDHASH}" ] || [ "${PAT_URL}" != "${OLDURL}" ]; then
|
||||
mkdir -p "${CACHE_PATH}/dl"
|
||||
echo "Downloading ${PAT_FILE}"
|
||||
# Discover remote file size
|
||||
STATUS=$(curl -k -w "%{http_code}" -L "${PAT_URL}" -o "${PAT_PATH}" --progress-bar)
|
||||
if [ $? -ne 0 -o ${STATUS} -ne 200 ]; then
|
||||
rm "${PAT_PATH}"
|
||||
echo "Error downloading"
|
||||
fi
|
||||
# Export Hash
|
||||
echo -n "Checking hash of zImage: "
|
||||
HASH=$(sha256sum ${UNTAR_PAT_PATH}/zImage | awk '{print$1}')
|
||||
echo "OK"
|
||||
echo "${HASH}" >"${DESTINATION}/zImage_hash"
|
||||
echo -n "Checking hash of ramdisk: "
|
||||
HASH=$(sha256sum ${UNTAR_PAT_PATH}/rd.gz | awk '{print$1}')
|
||||
echo "OK"
|
||||
echo "${HASH}" >"${DESTINATION}/ramdisk_hash"
|
||||
# Copy Files to Destination
|
||||
echo -n "Copying files: "
|
||||
cp "${UNTAR_PAT_PATH}/grub_cksum.syno" "${DESTINATION}"
|
||||
cp "${UNTAR_PAT_PATH}/GRUB_VER" "${DESTINATION}"
|
||||
cp "${UNTAR_PAT_PATH}/grub_cksum.syno" "${DESTINATION}"
|
||||
cp "${UNTAR_PAT_PATH}/GRUB_VER" "${DESTINATION}"
|
||||
cp "${UNTAR_PAT_PATH}/zImage" "${DESTINATION}"
|
||||
cp "${UNTAR_PAT_PATH}/rd.gz" "${DESTINATION}"
|
||||
cd "${DESTINATION}"
|
||||
tar -cf "${DESTINATIONFILES}/${PAT_HASH}.tar" .
|
||||
rm -f "${PAT_PATH}"
|
||||
rm -rf "${UNTAR_PAT_PATH}"
|
||||
if [ -f "${PAT_PATH}" ]; then
|
||||
# Export Values
|
||||
echo "${PAT_HASH}" >"${DESTINATION}/pat_hash"
|
||||
echo "${PAT_URL}" >"${DESTINATION}/pat_url"
|
||||
# Extract Files
|
||||
rm -rf "${UNTAR_PAT_PATH}"
|
||||
mkdir -p "${UNTAR_PAT_PATH}"
|
||||
echo -n "Disassembling ${PAT_FILE}: "
|
||||
header=$(od -bcN2 ${PAT_PATH} | head -1 | awk '{print $3}')
|
||||
case ${header} in
|
||||
105)
|
||||
echo "Uncompressed tar"
|
||||
isencrypted="no"
|
||||
;;
|
||||
213)
|
||||
echo "Compressed tar"
|
||||
isencrypted="no"
|
||||
;;
|
||||
255)
|
||||
echo "Encrypted"
|
||||
isencrypted="yes"
|
||||
;;
|
||||
*)
|
||||
echo -e "Could not determine if pat file is encrypted or not, maybe corrupted, try again!"
|
||||
;;
|
||||
esac
|
||||
if [ "${isencrypted}" = "yes" ]; then
|
||||
# Check existance of extractor
|
||||
if [ -f "${EXTRACTOR_PATH}/${EXTRACTOR_BIN}" ]; then
|
||||
echo "Extractor cached."
|
||||
fi
|
||||
# Uses the extractor to untar pat file
|
||||
echo "Extracting..."
|
||||
LD_LIBRARY_PATH="${EXTRACTOR_PATH}" "${EXTRACTOR_PATH}/${EXTRACTOR_BIN}" "${PAT_PATH}" "${UNTAR_PAT_PATH}"
|
||||
else
|
||||
echo "Extracting..."
|
||||
tar -xf "${PAT_PATH}" -C "${UNTAR_PAT_PATH}"
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Error extracting"
|
||||
fi
|
||||
fi
|
||||
# Export Hash
|
||||
echo -n "Checking hash of zImage: "
|
||||
HASH=$(sha256sum ${UNTAR_PAT_PATH}/zImage | awk '{print$1}')
|
||||
echo "OK"
|
||||
echo "${HASH}" >"${DESTINATION}/zImage_hash"
|
||||
echo -n "Checking hash of ramdisk: "
|
||||
HASH=$(sha256sum ${UNTAR_PAT_PATH}/rd.gz | awk '{print$1}')
|
||||
echo "OK"
|
||||
echo "${HASH}" >"${DESTINATION}/ramdisk_hash"
|
||||
# Copy Files to Destination
|
||||
echo -n "Copying files: "
|
||||
cp "${UNTAR_PAT_PATH}/grub_cksum.syno" "${DESTINATION}"
|
||||
cp "${UNTAR_PAT_PATH}/GRUB_VER" "${DESTINATION}"
|
||||
cp "${UNTAR_PAT_PATH}/grub_cksum.syno" "${DESTINATION}"
|
||||
cp "${UNTAR_PAT_PATH}/GRUB_VER" "${DESTINATION}"
|
||||
cp "${UNTAR_PAT_PATH}/zImage" "${DESTINATION}"
|
||||
cp "${UNTAR_PAT_PATH}/rd.gz" "${DESTINATION}"
|
||||
cd "${DESTINATION}"
|
||||
tar -cf "${DESTINATIONFILES}/${PAT_HASH}.tar" .
|
||||
rm -f "${PAT_PATH}"
|
||||
rm -rf "${UNTAR_PAT_PATH}"
|
||||
fi
|
||||
echo "DSM Extraction complete: ${MODEL}_${VERSION}"
|
||||
else
|
||||
echo "No DSM Update found: ${MODEL}_${VERSION}"
|
||||
fi
|
||||
echo "DSM Extraction complete: ${MODEL}_${VERSION}"
|
||||
else
|
||||
echo "No DSM Update found: ${MODEL}_${VERSION}"
|
||||
cd ${HOME}
|
||||
fi
|
||||
cd ${HOME}
|
||||
done < <(cat "${TMP_PATH}/versions")
|
||||
rm -f "${TMP_PATH}/versions"
|
||||
done < <(cat "${TMP_PATH}/productvers")
|
||||
|
Loading…
Reference in New Issue
Block a user