Unverified Commit a562d61d authored by Kroese's avatar Kroese Committed by GitHub
Browse files

Shellcheck

Shellcheck
parents e7a9c9eb 558ea362
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
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 
+1 −1
Original line number Diff line number Diff line
@@ -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
+30 −30
Original line number Diff line number Diff line
@@ -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"
+18 −18
Original line number Diff line number Diff line
@@ -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"
}

# ######################################
+5 −5
Original line number Diff line number Diff line
@@ -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

Loading