mirror of
https://github.com/AuxXxilium/arv-v-dsm.git
synced 2025-02-24 12:48:34 +07:00
Shellcheck
Shellcheck
This commit is contained in:
commit
9d699f15dd
6
.github/workflows/check.yml
vendored
6
.github/workflows/check.yml
vendored
@ -1,5 +1,5 @@
|
||||
on: [workflow_call]
|
||||
name: "shellcheck"
|
||||
name: "Check"
|
||||
permissions: {}
|
||||
|
||||
jobs:
|
||||
@ -10,5 +10,5 @@ jobs:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Run ShellCheck
|
||||
uses: ludeeus/action-shellcheck@master
|
||||
env:
|
||||
SHELLCHECK_OPTS: -e SC2001 -e SC2002 -e SC2116 -e SC2034 -e SC1091 -e SC2143 -e SC2223 -e SC2086 -e SC2145 -e SC2015 -e SC2268 -e SC2207 -e SC2064 -e SC2162 -e SC2153 -e SC2166
|
||||
env:
|
||||
SHELLCHECK_OPTS: -x -e SC2002 -e SC2223 -e SC2034 -e SC2064
|
||||
|
@ -42,7 +42,7 @@ function downloadUpdate {
|
||||
|
||||
[[ "$remote_size" == "" || "$remote_size" == "0" ]] && return
|
||||
|
||||
SCRIPT=$(readlink -f ${BASH_SOURCE[0]})
|
||||
SCRIPT=$(readlink -f "${BASH_SOURCE[0]}")
|
||||
local_size=$(stat -c%s "$SCRIPT")
|
||||
|
||||
[[ remote_size -eq local_size ]] && return
|
||||
|
@ -6,7 +6,7 @@ set -eu
|
||||
|
||||
DL="https://global.synologydownload.com/download/DSM"
|
||||
|
||||
if [ -z $URL ]; then
|
||||
if [ -z "$URL" ]; then
|
||||
|
||||
URL="$DL/beta/7.2/64216/DSM_VirtualDSM_64216.pat"
|
||||
#URL="$DL/release/7.0.1/42218/DSM_VirtualDSM_42218.pat"
|
||||
@ -25,7 +25,7 @@ echo "Install: Downloading extractor..."
|
||||
|
||||
TMP="$STORAGE/tmp"
|
||||
RD="$TMP/rd.gz"
|
||||
rm -rf $TMP && mkdir -p $TMP
|
||||
rm -rf "$TMP" && mkdir -p "$TMP"
|
||||
|
||||
LOC="$DL/release/7.0.1/42218/DSM_VirtualDSM_42218.pat"
|
||||
|
||||
@ -33,15 +33,15 @@ if ! curl -r 64493568-69886247 -sfk -o "$RD" "$LOC"; then
|
||||
echo "Failed to download extractor, code: $?" && exit 60
|
||||
fi
|
||||
|
||||
SUM=$(md5sum $RD | cut -f 1 -d " ")
|
||||
SUM=$(md5sum "$RD" | cut -f 1 -d " ")
|
||||
|
||||
if [ $SUM != "14fb88cb7cabddb5af1d0269bf032845" ]; then
|
||||
if [ "$SUM" != "14fb88cb7cabddb5af1d0269bf032845" ]; then
|
||||
echo "Invalid extractor, checksum failed." && exit 61
|
||||
fi
|
||||
|
||||
set +e
|
||||
xz -dc <$RD >$TMP/rd 2>/dev/null
|
||||
(cd $TMP && cpio -idm <$TMP/rd 2>/dev/null)
|
||||
xz -dc <"$RD" >"$TMP/rd" 2>/dev/null
|
||||
(cd "$TMP" && cpio -idm <"$TMP/rd" 2>/dev/null)
|
||||
set -e
|
||||
|
||||
mkdir -p /run/extract
|
||||
@ -52,9 +52,9 @@ done
|
||||
mv /run/extract/scemd /run/extract/syno_extract_system_patch
|
||||
chmod +x /run/extract/syno_extract_system_patch
|
||||
|
||||
rm -rf $TMP && mkdir -p $TMP
|
||||
rm -rf "$TMP" && mkdir -p "$TMP"
|
||||
|
||||
echo "Install: Downloading $(basename $URL)..."
|
||||
echo "Install: Downloading $(basename "$URL")..."
|
||||
|
||||
PAT="/$BASE.pat"
|
||||
rm -f "$PAT"
|
||||
@ -77,10 +77,10 @@ fi
|
||||
echo "Install: Extracting downloaded image..."
|
||||
|
||||
if { tar tf "$PAT"; } >/dev/null 2>&1; then
|
||||
tar xpf $PAT -C $TMP/.
|
||||
tar xpf "$PAT" -C "$TMP/."
|
||||
else
|
||||
export LD_LIBRARY_PATH="/run/extract"
|
||||
if ! /run/extract/syno_extract_system_patch $PAT $TMP/. ; then
|
||||
if ! /run/extract/syno_extract_system_patch "$PAT" "$TMP/." ; then
|
||||
echo "Invalid PAT file: File is an update pack which contains no OS image." && exit 63
|
||||
fi
|
||||
export LD_LIBRARY_PATH=""
|
||||
@ -96,12 +96,12 @@ HDP="$TMP/synohdpack_img"
|
||||
[ ! -f "$IDB.txz" ] && echo "Invalid PAT file: contains no IndexDB." && exit 66
|
||||
[ ! -d "$PKG" ] && echo "Invalid PAT file: contains no packages." && exit 68
|
||||
|
||||
BOOT=$(find $TMP -name "*.bin.zip")
|
||||
BOOT=$(find "$TMP" -name "*.bin.zip")
|
||||
|
||||
[ ! -f "$BOOT" ] && echo "Invalid PAT file: contains no boot file." && exit 67
|
||||
|
||||
BOOT=$(echo "$BOOT" | head -c -5)
|
||||
unzip -q -o "$BOOT".zip -d $TMP
|
||||
unzip -q -o "$BOOT".zip -d "$TMP"
|
||||
|
||||
[ "$ALLOCATE" != "Z" ] && echo "Install: Allocating diskspace..."
|
||||
|
||||
@ -150,37 +150,37 @@ PART="$TMP/partition.fdisk"
|
||||
echo ""
|
||||
echo "${SYSTEM}1 : start= 2048, size= 4980480, type=83"
|
||||
echo "${SYSTEM}2 : start= 4982528, size= 4194304, type=82"
|
||||
} > $PART
|
||||
} > "$PART"
|
||||
|
||||
sfdisk -q $SYSTEM < $PART
|
||||
sfdisk -q "$SYSTEM" < "$PART"
|
||||
|
||||
echo "Install: Extracting system partition..."
|
||||
|
||||
MOUNT="$TMP/system"
|
||||
|
||||
rm -rf $MOUNT && mkdir -p $MOUNT
|
||||
rm -rf "$MOUNT" && mkdir -p "$MOUNT"
|
||||
|
||||
mv -f $HDA.tgz $HDA.txz
|
||||
mv -f "$HDA.tgz" "$HDA.txz"
|
||||
|
||||
tar xpfJ $HDP.txz --absolute-names -C $MOUNT/
|
||||
tar xpfJ $HDA.txz --absolute-names -C $MOUNT/
|
||||
tar xpfJ $IDB.txz --absolute-names -C $MOUNT/usr/syno/synoman/indexdb/
|
||||
tar xpfJ "$HDP.txz" --absolute-names -C "$MOUNT/"
|
||||
tar xpfJ "$HDA.txz" --absolute-names -C "$MOUNT/"
|
||||
tar xpfJ "$IDB.txz" --absolute-names -C "$MOUNT/usr/syno/synoman/indexdb/"
|
||||
|
||||
# Install Agent
|
||||
|
||||
LOC="$MOUNT/usr/local"
|
||||
mkdir -p $LOC
|
||||
mv $PKG/ $LOC/
|
||||
mkdir -p "$LOC"
|
||||
mv "$PKG/" "$LOC/"
|
||||
|
||||
LOC="$MOUNT/usr/local/bin"
|
||||
mkdir -p $LOC
|
||||
cp /agent/agent.sh $LOC/agent.sh
|
||||
chmod 755 $LOC/agent.sh
|
||||
mkdir -p "$LOC"
|
||||
cp /agent/agent.sh "$LOC/agent.sh"
|
||||
chmod 755 "$LOC/agent.sh"
|
||||
|
||||
LOC="$MOUNT/usr/local/etc/rc.d"
|
||||
mkdir -p $LOC
|
||||
cp /agent/service.sh $LOC/agent.sh
|
||||
chmod 755 $LOC/agent.sh
|
||||
mkdir -p "$LOC"
|
||||
cp /agent/service.sh "$LOC/agent.sh"
|
||||
chmod 755 "$LOC/agent.sh"
|
||||
|
||||
# Store agent version
|
||||
echo "7" > "$STORAGE"/"$BASE".agent
|
||||
@ -191,13 +191,13 @@ LABEL="1.44.1-42218"
|
||||
OFFSET="1048576" # 2048 * 512
|
||||
NUMBLOCKS="622560" # (4980480 * 512) / 4096
|
||||
|
||||
mke2fs -q -t ext4 -b 4096 -d $MOUNT/ -L $LABEL -F -E offset=$OFFSET $SYSTEM $NUMBLOCKS
|
||||
mke2fs -q -t ext4 -b 4096 -d "$MOUNT/" -L "$LABEL" -F -E "offset=$OFFSET" "$SYSTEM" "$NUMBLOCKS"
|
||||
|
||||
rm -rf $MOUNT
|
||||
rm -rf "$MOUNT"
|
||||
|
||||
echo "$BASE" > "$STORAGE"/dsm.ver
|
||||
mv -f "$PAT" "$STORAGE"/"$BASE".pat
|
||||
mv -f "$BOOT" "$STORAGE"/"$BASE".boot.img
|
||||
mv -f "$SYSTEM" "$STORAGE"/"$BASE".system.img
|
||||
|
||||
rm -rf $TMP
|
||||
rm -rf "$TMP"
|
||||
|
@ -29,16 +29,16 @@ configureDHCP() {
|
||||
echo "docker variable to your container: --device=/dev/vhost-net" && exit 85
|
||||
fi
|
||||
|
||||
VM_NET_TAP="_VmMacvtap"
|
||||
VM_NET_TAP="dsm"
|
||||
echo "Info: Retrieving IP via DHCP using MAC ${VM_NET_MAC}..."
|
||||
|
||||
ip l add link eth0 name ${VM_NET_TAP} address ${VM_NET_MAC} type macvtap mode bridge || true
|
||||
ip l set ${VM_NET_TAP} up
|
||||
ip l add link eth0 name "${VM_NET_TAP}" address "${VM_NET_MAC}" type macvtap mode bridge || true
|
||||
ip l set "${VM_NET_TAP}" up
|
||||
|
||||
ip a flush eth0
|
||||
ip a flush ${VM_NET_TAP}
|
||||
ip a flush "${VM_NET_TAP}"
|
||||
|
||||
DHCP_IP=$( dhclient -v ${VM_NET_TAP} 2>&1 | grep ^bound | cut -d' ' -f3 )
|
||||
DHCP_IP=$( dhclient -v "${VM_NET_TAP}" 2>&1 | grep ^bound | cut -d' ' -f3 )
|
||||
|
||||
if [[ "${DHCP_IP}" == [0-9.]* ]]; then
|
||||
echo "Info: Retrieved IP ${DHCP_IP} via DHCP"
|
||||
@ -46,26 +46,26 @@ configureDHCP() {
|
||||
echo "ERROR: Cannot retrieve IP from DHCP using MAC ${VM_NET_MAC}" && exit 16
|
||||
fi
|
||||
|
||||
ip a flush ${VM_NET_TAP}
|
||||
ip a flush "${VM_NET_TAP}"
|
||||
|
||||
TAP_PATH="/dev/tap$(</sys/class/net/${VM_NET_TAP}/ifindex)"
|
||||
|
||||
# create dev file (there is no udev in container: need to be done manually)
|
||||
IFS=: read MAJOR MINOR < <(cat /sys/devices/virtual/net/${VM_NET_TAP}/tap*/dev)
|
||||
IFS=: read -r MAJOR MINOR < <(cat "/sys/devices/virtual/net/${VM_NET_TAP}/tap*/dev")
|
||||
|
||||
if (( MAJOR < 1)); then
|
||||
echo "ERROR: Cannot find: sys/devices/virtual/net/${VM_NET_TAP}" && exit 18
|
||||
fi
|
||||
|
||||
[[ ! -e ${TAP_PATH} ]] && [[ -e /dev0/${TAP_PATH##*/} ]] && ln -s /dev0/${TAP_PATH##*/} ${TAP_PATH}
|
||||
[[ ! -e "${TAP_PATH}" ]] && [[ -e "/dev0/${TAP_PATH##*/}" ]] && ln -s "/dev0/${TAP_PATH##*/}" "${TAP_PATH}"
|
||||
|
||||
if [[ ! -e ${TAP_PATH} ]]; then
|
||||
if ! mknod ${TAP_PATH} c $MAJOR $MINOR ; then
|
||||
if [[ ! -e "${TAP_PATH}" ]]; then
|
||||
if ! mknod "${TAP_PATH}" c "$MAJOR" "$MINOR" ; then
|
||||
echo "ERROR: Cannot mknod: ${TAP_PATH}" && exit 20
|
||||
fi
|
||||
fi
|
||||
|
||||
if ! exec 30>>$TAP_PATH; then
|
||||
if ! exec 30>>"$TAP_PATH"; then
|
||||
echo -n "ERROR: Please add the following docker variables to your container: "
|
||||
echo "--device=/dev/vhost-net --device-cgroup-rule='c ${MAJOR}:* rwm'" && exit 21
|
||||
fi
|
||||
@ -113,21 +113,21 @@ configureNAT () {
|
||||
NET_OPTS="-netdev tap,ifname=${VM_NET_TAP},script=no,downscript=no,id=hostnet0"
|
||||
|
||||
# Build DNS options from container /etc/resolv.conf
|
||||
nameservers=($(grep '^nameserver' /etc/resolv.conf | sed 's/nameserver //'))
|
||||
mapfile -t nameservers < <(grep '^nameserver' /etc/resolv.conf | sed 's/nameserver //')
|
||||
searchdomains=$(grep '^search' /etc/resolv.conf | sed 's/search //' | sed 's/ /,/g')
|
||||
domainname=$(echo $searchdomains | awk -F"," '{print $1}')
|
||||
domainname=$(echo "$searchdomains" | awk -F"," '{print $1}')
|
||||
|
||||
for nameserver in "${nameservers[@]}"; do
|
||||
if ! [[ $nameserver =~ .*:.* ]]; then
|
||||
[[ -z $DNS_SERVERS ]] && DNS_SERVERS=$nameserver || DNS_SERVERS="$DNS_SERVERS,$nameserver"
|
||||
if ! [[ "$nameserver" =~ .*:.* ]]; then
|
||||
[[ -z "$DNS_SERVERS" ]] && DNS_SERVERS="$nameserver" || DNS_SERVERS="$DNS_SERVERS,$nameserver"
|
||||
fi
|
||||
done
|
||||
|
||||
[[ -z $DNS_SERVERS ]] && DNS_SERVERS="1.1.1.1"
|
||||
[[ -z "$DNS_SERVERS" ]] && DNS_SERVERS="1.1.1.1"
|
||||
|
||||
DNSMASQ_OPTS="$DNSMASQ_OPTS --dhcp-option=option:dns-server,$DNS_SERVERS --dhcp-option=option:router,${VM_NET_IP%.*}.1"
|
||||
|
||||
if [ -n "$searchdomains" -a "$searchdomains" != "." ]; then
|
||||
if [ -n "$searchdomains" ] && [ "$searchdomains" != "." ]; then
|
||||
DNSMASQ_OPTS="$DNSMASQ_OPTS --dhcp-option=option:domain-search,$searchdomains --dhcp-option=option:domain-name,$domainname"
|
||||
else
|
||||
[[ -z $(hostname -d) ]] || DNSMASQ_OPTS="$DNSMASQ_OPTS --dhcp-option=option:domain-name,$(hostname -d)"
|
||||
@ -135,7 +135,7 @@ configureNAT () {
|
||||
|
||||
[ "$DEBUG" = "Y" ] && echo && echo "$DNSMASQ $DNSMASQ_OPTS"
|
||||
|
||||
$DNSMASQ $DNSMASQ_OPTS
|
||||
"$DNSMASQ $DNSMASQ_OPTS"
|
||||
}
|
||||
|
||||
# ######################################
|
||||
|
10
run/run.sh
10
run/run.sh
@ -6,9 +6,9 @@ set -eu
|
||||
: ${URL:=''}. # URL of PAT file
|
||||
: ${DEBUG:=''}. # Enable debug mode
|
||||
: ${ALLOCATE:='Y'} # Preallocate diskspace
|
||||
: ${CPU_CORES:='1'} # vCPU count
|
||||
: ${DISK_SIZE:='16G'} # Initial disk size
|
||||
: ${RAM_SIZE:='512M'} # Amount of RAM
|
||||
: ${CPU_CORES:='1'} # Amount of CPU cores
|
||||
: ${DISK_SIZE:='16G'} # Initial data disk size
|
||||
: ${RAM_SIZE:='512M'} # Maximum RAM amount
|
||||
|
||||
echo "Starting Virtual DSM for Docker v${VERSION}..."
|
||||
|
||||
@ -44,7 +44,7 @@ fi
|
||||
KVM_OPTS=""
|
||||
|
||||
if [ -e /dev/kvm ] && sh -c 'echo -n > /dev/kvm' &> /dev/null; then
|
||||
if [[ $(grep -e vmx -e svm /proc/cpuinfo) ]]; then
|
||||
if grep -q -e vmx -e svm /proc/cpuinfo; then
|
||||
KVM_OPTS=",accel=kvm -enable-kvm -cpu host"
|
||||
fi
|
||||
fi
|
||||
@ -63,7 +63,7 @@ ARGS="${DEF_OPTS} ${CPU_OPTS} ${RAM_OPTS} ${KVM_OPTS} ${MON_OPTS} ${SERIAL_OPTS}
|
||||
|
||||
set -m
|
||||
(
|
||||
qemu-system-x86_64 ${ARGS} & echo $! > ${_QEMU_PID}
|
||||
qemu-system-x86_64 "${ARGS}" & echo $! > ${_QEMU_PID}
|
||||
)
|
||||
set +m
|
||||
|
||||
|
@ -5,10 +5,10 @@ trap exit SIGINT SIGTERM
|
||||
# Close any previous instances
|
||||
script_name=${BASH_SOURCE[0]}
|
||||
|
||||
for pid in $(pidof -x $script_name); do
|
||||
if [ $pid != $$ ]; then
|
||||
kill -15 $pid 2> /dev/null
|
||||
wait $pid 2> /dev/null
|
||||
for pid in $(pidof -x "$script_name"); do
|
||||
if [ "$pid" != $$ ]; then
|
||||
kill -15 "$pid" 2> /dev/null
|
||||
wait "$pid" 2> /dev/null
|
||||
fi
|
||||
done
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user