#!/usr/bin/env bash # # Copyright (C) 2022 Ing # # This is free software, licensed under the MIT License. # See /LICENSE for more information. # # Convert po2mo # $1 path function convertpo2mo() { echo "Convert po2mo begin" local DEST_PATH="${1:-lang}" if [ `find ${DEST_PATH}/ -name "*.po" | wc -l` -gt 0 ]; then for P in "`ls ${DEST_PATH}/*.po`" do # Use msgfmt command to compile the .po file into a binary .mo file echo "msgfmt ${P} to ${P/.po/.mo}" msgfmt ${P} -o ${P/.po/.mo} done fi echo "Convert po2mo end" } # Get extractor # $1 path function getExtractor(){ echo "Getting syno extractor begin" local DEST_PATH="${1:-extractor}" local CACHE_DIR="/tmp/pat" rm -rf "${CACHE_DIR}"; mkdir -p "${CACHE_DIR}" # Download pat file # global.synologydownload.com, global.download.synology.com, cndl.synology.cn local PAT_URL="https://global.download.synology.com/download/DSM/release/7.0.1/42218/DSM_DS3622xs%2B_42218.pat" local PAT_FILE="DSM_DS3622xs+_42218.pat" local STATUS=`curl -# -w "%{http_code}" -L "${PAT_URL}" -o "${CACHE_DIR}/${PAT_FILE}"` if [ $? -ne 0 -o ${STATUS} -ne 200 ]; then echo "[E] DSM_DS3622xs%2B_42218.pat download error!" rm -rf ${CACHE_DIR} exit 1 fi mkdir -p "${CACHE_DIR}/ramdisk" tar -C "${CACHE_DIR}/ramdisk/" -xf "${CACHE_DIR}/${PAT_FILE}" rd.gz 2>&1 if [ $? -ne 0 ]; then echo "[E] extractor rd.gz error!" rm -rf ${CACHE_DIR} exit 1 fi (cd "${CACHE_DIR}/ramdisk"; xz -dc < rd.gz | cpio -idm) >/dev/null 2>&1 || true rm -rf "${DEST_PATH}"; mkdir -p "${DEST_PATH}" # Copy only necessary files for f in libcurl.so.4 libmbedcrypto.so.5 libmbedtls.so.13 libmbedx509.so.1 libmsgpackc.so.2 libsodium.so libsynocodesign-ng-virtual-junior-wins.so.7; do cp "${CACHE_DIR}/ramdisk/usr/lib/${f}" "${DEST_PATH}" done cp "${CACHE_DIR}/ramdisk/usr/syno/bin/scemd" "${DEST_PATH}/syno_extract_system_patch" # Clean up rm -rf ${CACHE_DIR} echo "Getting syno extractor end" } # Get latest LKMs # $1 path function getLKMs() { echo "Getting LKMs begin" local DEST_PATH="${1:-lkms}" local CACHE_FILE="/tmp/rp-lkms.zip" rm -f "${CACHE_FILE}" TAG=`curl -s "https://api.github.com/repos/wjz304/redpill-lkm/releases/latest" | grep -oP '"tag_name": "\K(.*)(?=")'` STATUS=`curl -w "%{http_code}" -L "https://github.com/wjz304/redpill-lkm/releases/download/${TAG}/rp-lkms.zip" -o "${CACHE_FILE}"` echo "Status=${STATUS}" [ ${STATUS} -ne 200 ] && exit 1 # Unzip LKMs rm -rf "${DEST_PATH}"; mkdir -p "${DEST_PATH}" unzip "${CACHE_FILE}" -d "${DEST_PATH}" rm -f "${CACHE_FILE}" echo "Getting LKMs end" } # Get latest addons and install its # $1 path function getAddons() { echo "Getting Addons begin" local DEST_PATH="${1:-addons}" local CACHE_DIR="/tmp/addons" local CACHE_FILE="/tmp/addons.zip" TAG=`curl -s https://api.github.com/repos/wjz304/arpl-addons/releases/latest | grep -oP '"tag_name": "\K(.*)(?=")'` STATUS=`curl -w "%{http_code}" -L "https://github.com/wjz304/arpl-addons/releases/download/${TAG}/addons.zip" -o "${CACHE_FILE}"` echo "Status=${STATUS}" [ ${STATUS} -ne 200 ] && exit 1 rm -rf "${DEST_PATH}"; mkdir -p "${DEST_PATH}" # Install Addons rm -rf "${CACHE_DIR}"; mkdir -p "${CACHE_DIR}" unzip "${CACHE_FILE}" -d "${CACHE_DIR}" echo "Installing addons to ${DEST_PATH}" [ -f /tmp/addons/VERSION ] && cp -f /tmp/addons/VERSION ${DEST_PATH}/ for PKG in `ls ${CACHE_DIR}/*.addon`; do ADDON=`basename "${PKG}" .addon` mkdir -p "${DEST_PATH}/${ADDON}" echo "Extracting ${PKG} to ${DEST_PATH}/${ADDON}" tar xaf "${PKG}" -C "${DEST_PATH}/${ADDON}" done echo "Getting Addons end" } # Get latest modules # $1 path function getModules() { echo "Getting Modules begin" local DEST_PATH="${1:-addons}" local CACHE_FILE="/tmp/modules.zip" rm -f "${CACHE_FILE}" TAG=`curl -s https://api.github.com/repos/wjz304/arpl-modules/releases/latest | grep -oP '"tag_name": "\K(.*)(?=")'` STATUS=`curl -w "%{http_code}" -L "https://github.com/wjz304/arpl-modules/releases/download/${TAG}/modules.zip" -o "${CACHE_FILE}"` echo "Status=${STATUS}" [ ${STATUS} -ne 200 ] && exit 1 # Unzip Modules rm -rf "${DEST_PATH}"; mkdir -p "${DEST_PATH}" unzip "${CACHE_FILE}" -d "${DEST_PATH}" rm -f "${CACHE_FILE}" echo "Getting Modules end" }