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]
name: "shellcheck"
name: "Check"
permissions: {}
jobs:
@ -11,4 +11,4 @@ jobs:
- 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
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
SCRIPT=$(readlink -f ${BASH_SOURCE[0]})
SCRIPT=$(readlink -f "${BASH_SOURCE[0]}")
local_size=$(stat -c%s "$SCRIPT")
[[ remote_size -eq local_size ]] && return

View File

@ -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"

View File

@ -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"
}
# ######################################

View File

@ -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

View File

@ -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