Shellcheck

Shellcheck
This commit is contained in:
Kroese 2023-04-21 07:53:44 +02:00 committed by GitHub
commit 9d699f15dd
6 changed files with 61 additions and 61 deletions

View File

@ -1,5 +1,5 @@
on: [workflow_call] on: [workflow_call]
name: "shellcheck" name: "Check"
permissions: {} permissions: {}
jobs: jobs:
@ -10,5 +10,5 @@ jobs:
- uses: actions/checkout@v3 - uses: actions/checkout@v3
- name: Run ShellCheck - name: Run ShellCheck
uses: ludeeus/action-shellcheck@master uses: ludeeus/action-shellcheck@master
env: 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 SHELLCHECK_OPTS: -x -e SC2002 -e SC2223 -e SC2034 -e SC2064

View File

@ -42,7 +42,7 @@ function downloadUpdate {
[[ "$remote_size" == "" || "$remote_size" == "0" ]] && return [[ "$remote_size" == "" || "$remote_size" == "0" ]] && return
SCRIPT=$(readlink -f ${BASH_SOURCE[0]}) SCRIPT=$(readlink -f "${BASH_SOURCE[0]}")
local_size=$(stat -c%s "$SCRIPT") local_size=$(stat -c%s "$SCRIPT")
[[ remote_size -eq local_size ]] && return [[ remote_size -eq local_size ]] && return

View File

@ -6,7 +6,7 @@ set -eu
DL="https://global.synologydownload.com/download/DSM" 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/beta/7.2/64216/DSM_VirtualDSM_64216.pat"
#URL="$DL/release/7.0.1/42218/DSM_VirtualDSM_42218.pat" #URL="$DL/release/7.0.1/42218/DSM_VirtualDSM_42218.pat"
@ -25,7 +25,7 @@ echo "Install: Downloading extractor..."
TMP="$STORAGE/tmp" TMP="$STORAGE/tmp"
RD="$TMP/rd.gz" 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" 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 echo "Failed to download extractor, code: $?" && exit 60
fi 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 echo "Invalid extractor, checksum failed." && exit 61
fi fi
set +e set +e
xz -dc <$RD >$TMP/rd 2>/dev/null xz -dc <"$RD" >"$TMP/rd" 2>/dev/null
(cd $TMP && cpio -idm <$TMP/rd 2>/dev/null) (cd "$TMP" && cpio -idm <"$TMP/rd" 2>/dev/null)
set -e set -e
mkdir -p /run/extract mkdir -p /run/extract
@ -52,9 +52,9 @@ done
mv /run/extract/scemd /run/extract/syno_extract_system_patch mv /run/extract/scemd /run/extract/syno_extract_system_patch
chmod +x /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" PAT="/$BASE.pat"
rm -f "$PAT" rm -f "$PAT"
@ -77,10 +77,10 @@ fi
echo "Install: Extracting downloaded image..." echo "Install: Extracting downloaded image..."
if { tar tf "$PAT"; } >/dev/null 2>&1; then if { tar tf "$PAT"; } >/dev/null 2>&1; then
tar xpf $PAT -C $TMP/. tar xpf "$PAT" -C "$TMP/."
else else
export LD_LIBRARY_PATH="/run/extract" 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 echo "Invalid PAT file: File is an update pack which contains no OS image." && exit 63
fi fi
export LD_LIBRARY_PATH="" export LD_LIBRARY_PATH=""
@ -96,12 +96,12 @@ HDP="$TMP/synohdpack_img"
[ ! -f "$IDB.txz" ] && echo "Invalid PAT file: contains no IndexDB." && exit 66 [ ! -f "$IDB.txz" ] && echo "Invalid PAT file: contains no IndexDB." && exit 66
[ ! -d "$PKG" ] && echo "Invalid PAT file: contains no packages." && exit 68 [ ! -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 [ ! -f "$BOOT" ] && echo "Invalid PAT file: contains no boot file." && exit 67
BOOT=$(echo "$BOOT" | head -c -5) 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..." [ "$ALLOCATE" != "Z" ] && echo "Install: Allocating diskspace..."
@ -150,37 +150,37 @@ PART="$TMP/partition.fdisk"
echo "" echo ""
echo "${SYSTEM}1 : start= 2048, size= 4980480, type=83" echo "${SYSTEM}1 : start= 2048, size= 4980480, type=83"
echo "${SYSTEM}2 : start= 4982528, size= 4194304, type=82" echo "${SYSTEM}2 : start= 4982528, size= 4194304, type=82"
} > $PART } > "$PART"
sfdisk -q $SYSTEM < $PART sfdisk -q "$SYSTEM" < "$PART"
echo "Install: Extracting system partition..." echo "Install: Extracting system partition..."
MOUNT="$TMP/system" 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 "$HDP.txz" --absolute-names -C "$MOUNT/"
tar xpfJ $HDA.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 "$IDB.txz" --absolute-names -C "$MOUNT/usr/syno/synoman/indexdb/"
# Install Agent # Install Agent
LOC="$MOUNT/usr/local" LOC="$MOUNT/usr/local"
mkdir -p $LOC mkdir -p "$LOC"
mv $PKG/ $LOC/ mv "$PKG/" "$LOC/"
LOC="$MOUNT/usr/local/bin" LOC="$MOUNT/usr/local/bin"
mkdir -p $LOC mkdir -p "$LOC"
cp /agent/agent.sh $LOC/agent.sh cp /agent/agent.sh "$LOC/agent.sh"
chmod 755 $LOC/agent.sh chmod 755 "$LOC/agent.sh"
LOC="$MOUNT/usr/local/etc/rc.d" LOC="$MOUNT/usr/local/etc/rc.d"
mkdir -p $LOC mkdir -p "$LOC"
cp /agent/service.sh $LOC/agent.sh cp /agent/service.sh "$LOC/agent.sh"
chmod 755 $LOC/agent.sh chmod 755 "$LOC/agent.sh"
# Store agent version # Store agent version
echo "7" > "$STORAGE"/"$BASE".agent echo "7" > "$STORAGE"/"$BASE".agent
@ -191,13 +191,13 @@ LABEL="1.44.1-42218"
OFFSET="1048576" # 2048 * 512 OFFSET="1048576" # 2048 * 512
NUMBLOCKS="622560" # (4980480 * 512) / 4096 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 echo "$BASE" > "$STORAGE"/dsm.ver
mv -f "$PAT" "$STORAGE"/"$BASE".pat mv -f "$PAT" "$STORAGE"/"$BASE".pat
mv -f "$BOOT" "$STORAGE"/"$BASE".boot.img mv -f "$BOOT" "$STORAGE"/"$BASE".boot.img
mv -f "$SYSTEM" "$STORAGE"/"$BASE".system.img mv -f "$SYSTEM" "$STORAGE"/"$BASE".system.img
rm -rf $TMP rm -rf "$TMP"

View File

@ -29,16 +29,16 @@ configureDHCP() {
echo "docker variable to your container: --device=/dev/vhost-net" && exit 85 echo "docker variable to your container: --device=/dev/vhost-net" && exit 85
fi fi
VM_NET_TAP="_VmMacvtap" VM_NET_TAP="dsm"
echo "Info: Retrieving IP via DHCP using MAC ${VM_NET_MAC}..." 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 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 set "${VM_NET_TAP}" up
ip a flush eth0 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 if [[ "${DHCP_IP}" == [0-9.]* ]]; then
echo "Info: Retrieved IP ${DHCP_IP} via DHCP" 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 echo "ERROR: Cannot retrieve IP from DHCP using MAC ${VM_NET_MAC}" && exit 16
fi fi
ip a flush ${VM_NET_TAP} ip a flush "${VM_NET_TAP}"
TAP_PATH="/dev/tap$(</sys/class/net/${VM_NET_TAP}/ifindex)" 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) # 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 if (( MAJOR < 1)); then
echo "ERROR: Cannot find: sys/devices/virtual/net/${VM_NET_TAP}" && exit 18 echo "ERROR: Cannot find: sys/devices/virtual/net/${VM_NET_TAP}" && exit 18
fi 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 [[ ! -e "${TAP_PATH}" ]]; then
if ! mknod ${TAP_PATH} c $MAJOR $MINOR ; then if ! mknod "${TAP_PATH}" c "$MAJOR" "$MINOR" ; then
echo "ERROR: Cannot mknod: ${TAP_PATH}" && exit 20 echo "ERROR: Cannot mknod: ${TAP_PATH}" && exit 20
fi fi
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 -n "ERROR: Please add the following docker variables to your container: "
echo "--device=/dev/vhost-net --device-cgroup-rule='c ${MAJOR}:* rwm'" && exit 21 echo "--device=/dev/vhost-net --device-cgroup-rule='c ${MAJOR}:* rwm'" && exit 21
fi fi
@ -113,21 +113,21 @@ configureNAT () {
NET_OPTS="-netdev tap,ifname=${VM_NET_TAP},script=no,downscript=no,id=hostnet0" NET_OPTS="-netdev tap,ifname=${VM_NET_TAP},script=no,downscript=no,id=hostnet0"
# Build DNS options from container /etc/resolv.conf # 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') 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 for nameserver in "${nameservers[@]}"; do
if ! [[ $nameserver =~ .*:.* ]]; then if ! [[ "$nameserver" =~ .*:.* ]]; then
[[ -z $DNS_SERVERS ]] && DNS_SERVERS=$nameserver || DNS_SERVERS="$DNS_SERVERS,$nameserver" [[ -z "$DNS_SERVERS" ]] && DNS_SERVERS="$nameserver" || DNS_SERVERS="$DNS_SERVERS,$nameserver"
fi fi
done 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" 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" DNSMASQ_OPTS="$DNSMASQ_OPTS --dhcp-option=option:domain-search,$searchdomains --dhcp-option=option:domain-name,$domainname"
else else
[[ -z $(hostname -d) ]] || DNSMASQ_OPTS="$DNSMASQ_OPTS --dhcp-option=option:domain-name,$(hostname -d)" [[ -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" [ "$DEBUG" = "Y" ] && echo && echo "$DNSMASQ $DNSMASQ_OPTS"
$DNSMASQ $DNSMASQ_OPTS "$DNSMASQ $DNSMASQ_OPTS"
} }
# ###################################### # ######################################

View File

@ -6,9 +6,9 @@ set -eu
: ${URL:=''}. # URL of PAT file : ${URL:=''}. # URL of PAT file
: ${DEBUG:=''}. # Enable debug mode : ${DEBUG:=''}. # Enable debug mode
: ${ALLOCATE:='Y'} # Preallocate diskspace : ${ALLOCATE:='Y'} # Preallocate diskspace
: ${CPU_CORES:='1'} # vCPU count : ${CPU_CORES:='1'} # Amount of CPU cores
: ${DISK_SIZE:='16G'} # Initial disk size : ${DISK_SIZE:='16G'} # Initial data disk size
: ${RAM_SIZE:='512M'} # Amount of RAM : ${RAM_SIZE:='512M'} # Maximum RAM amount
echo "Starting Virtual DSM for Docker v${VERSION}..." echo "Starting Virtual DSM for Docker v${VERSION}..."
@ -44,7 +44,7 @@ fi
KVM_OPTS="" KVM_OPTS=""
if [ -e /dev/kvm ] && sh -c 'echo -n > /dev/kvm' &> /dev/null; then 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" KVM_OPTS=",accel=kvm -enable-kvm -cpu host"
fi fi
fi fi
@ -63,7 +63,7 @@ ARGS="${DEF_OPTS} ${CPU_OPTS} ${RAM_OPTS} ${KVM_OPTS} ${MON_OPTS} ${SERIAL_OPTS}
set -m set -m
( (
qemu-system-x86_64 ${ARGS} & echo $! > ${_QEMU_PID} qemu-system-x86_64 "${ARGS}" & echo $! > ${_QEMU_PID}
) )
set +m set +m

View File

@ -5,10 +5,10 @@ trap exit SIGINT SIGTERM
# Close any previous instances # Close any previous instances
script_name=${BASH_SOURCE[0]} script_name=${BASH_SOURCE[0]}
for pid in $(pidof -x $script_name); do for pid in $(pidof -x "$script_name"); do
if [ $pid != $$ ]; then if [ "$pid" != $$ ]; then
kill -15 $pid 2> /dev/null kill -15 "$pid" 2> /dev/null
wait $pid 2> /dev/null wait "$pid" 2> /dev/null
fi fi
done done