<?xml version='1.0' standalone='yes'?>

<!DOCTYPE PLUGIN [
<!ENTITY name      "unRAIDServer">
<!ENTITY author    "LimeTech">
<!ENTITY version   "6.3.2">
<!ENTITY pluginURL "https://raw.github.com/limetech/&name;/master/&name;.plg">

<!ENTITY category  "stable">
<!ENTITY zip       "https://s3.amazonaws.com/dnld.lime-technology.com/&category;/unRAIDServer-&version;-x86_64.zip">
<!ENTITY md5       "https://s3.amazonaws.com/dnld.lime-technology.com/&category;/unRAIDServer-&version;-x86_64.md5">
<!ENTITY files     "bzimage,bzroot*,make_bootable.bat,make_bootable_linux,make_bootable_mac,memtest,*.txt,syslinux/syslinux.cfg-">

<!ENTITY infozip   "infozip-6.0-i486-1.txz">
]>

<PLUGIN  name="&name;"
         author="&author;"
         version="&version;"
         pluginURL="&pluginURL;">

<CHANGES>
<![CDATA[
unRAID Server OS Change Log
===========================

Version 6.3.2 2017-02-16
------------------------

Base distro:

- kernel-firmware: 20170210
- openssl: version 1.0.2k (CVE-2017-3731, CVE-2017-3732, CVE-2016-7055)

Linux kernel:

- version 4.9.10
- accraid: version 1.2.1-53005
- added Chelsio Ethernet support (user request):
  - CONFIG_NET_VENDOR_CHELSIO: Chelsio devices
  - CHELSIO_T1_1G: Chelsio gigabit Ethernet support
  - CONFIG_CHELSIO_T1: Chelsio 10Gb Ethernet support
  - CONFIG_CHELSIO_T3: Chelsio Communications T3 10Gb Ethernet support
  - CONFIG_CHELSIO_T4: Chelsio Communications T4/T5/T6 Ethernet support
  - CONFIG_CHELSIO_T4VF: Chelsio Communications T4/T5/T6 Virtual Function Ethernet support
- added F2FS support (user request):
  - CONFIG_F2FS_FS: F2FS filesystem support
  - CONFIG_F2FS_FS_XATTR: F2FS extended attributes
  - CONFIG_F2FS_FS_POSIX_ACL: F2FS Access Control Lists

Management:

- emhttp: fixed regression passing ampersands in querystring
- update hwdata/{pci.ids,usb.ids,oui.txt,manuf.txt}
- webGui: Fix regression adding or changing user account images
- webGui: provide per-share "vfs_fruit" optimization control under SMB security settings
- webGui: reorganize how the device ids are displayed on the System Devices page

Version 6.3.1 2017-02-08
------------------------

Base distro:

- apcupsd: version 3.14.14 (rev2 -- added modbus usb support)
- gd: version 2.2.4 (CVE-2016-9317, CVE-2016-6912)
- libusb-compat: version 0.1.5
- qemu: version 2.7.1
- samba: version 4.5.5

Linux kernel:

- version 4.9.8

Management:

- emhttp: fixed spurious "ioctl(SIOCGIFHWADDR): Bad address" appearing on Console
- smb: permit NTLMv1 authentication
- webGui: Add lsusb info to diagnostics
- webGui: Fix regression assigning slots and devices
- webGui: Fix regression generating SMART files for diagnostics

Version 6.3.0 2017-02-02
------------------------

Management:

- emhttp: added 'svcs_restarting' event
- emhttp: include "vfs objects =" line for each share named in generated /etc/samba/smb-shared.conf file
- webGui: Fix regression changing display banner
- webGui: Fix regression with 'Compute All' on Share page

Version 6.3.0-rc9 2017-01-27
----------------------------

Base distro:

- add pv: version 1.6.0
- docker: version 1.12.6 (CVE-2016-9962)
- containerd: version 0.2.5
- glibc-zoneinfo: version 2016j
- gnutls: version 3.5.8 (CVE-2017-5334, CVE-2017-5335, CVE-2017-5336, CVE-2017-5337)
- libpng: version 1.6.27 (CVE-2016-10087)
- mozilla-firefox: version 51.0 (CVE-2017-5375, CVE-2017-5376, CVE-2017-5377, CVE-2017-5378, CVE-2017-5379, CVE-2017-5380, CVE-2017-5390, CVE-2017-5389, CVE-2017-5396, CVE-2017-5381, CVE-2017-5382, CVE-2017-5383, CVE-2017-5384, CVE-2017-5385, CVE-2017-5386, CVE-2017-5394, CVE-2017-5391, CVE-2017-5392, CVE-2017-5393, CVE-2017-5395, CVE-2017-5387, CVE-2017-5388, CVE-2017-5374, CVE-2017-5373)
- openssh: version 7.4p1 (CVE-2016-10009, CVE-2016-10010, CVE-2016-10011, CVE-2016-10012)
- php: version 7.0.15 (CVE-2016-10161, CVE-2016-10162, CVE-2017-5340, CVE-2016-7479, CVE-2016-10158, CVE-2016-10160, CVE-2016-10159)
- samba: version 4.5.3 (CVE-2016-2123, CVE-2016-2125, CVE-2016-2126)
- update hwdata/{pci.ids,usb.ids,oui.txt,manuf.txt}

Linux kernel:

- version 4.9.6
- added CONFIG_DRM_I915: Intel 8xx/9xx/G3x/G4x/HD Graphics (but blacklisted to prevent auto-load)

Management:

- libvirt: disable nested virtualizaton by default
- shfs: correct return value of system.LOCATION extended attribute to eliminate bash "warning: command substitution: ignored null byte in input"
- webGui: Add BTRFS file system checking notifications
- webGui: Avoid wget to cache plugin files and postpone plugin updates
- webGui: Capitalize method name in plugin operations.
- webGui: Natural sorting of user share names
- webGui: Save docker, VM and libvirt logs as .txt files in diagnostics
- webGui: Disable filesystem selection when data-rebuild is pending
- webGui: Add cache pool BTRFS info (if existing) to diagnostics
- webGui: added new Europe/Saratov timezone
- webGui: additional XSS and CSRF hardening

Version 6.3.0-rc6 2016-12-07
----------------------------

Base distro:

- inotify-tools: version 3.14
- mozilla-firefox: version 50.0.2 (CVE-2016-9078, CVE-2016-9079)
- ntfs-3g: version 2016.2.22
- rsyslog: version 8.23.0

Linux kernel:

- version 4.8.12 (CVE-2016-8650)

Management:

- network: must set forwarding delay before setting stp 'on'; need 1 sec delay between stop/start in restart
- samba: move OS X "vfs_fruit" optimization from 'global' to individual share settings
- shutdown: increase default shutdown delay from 60 to 90 sec; eliminate extraneous console messages
- update: hwdata/{pci.ids,usb.ids,oui.txt,manuf.txt} smartmontools/drivedb.h
- webGui: add Hibernate option to VM context menu

Version 6.3.0-rc5 2016-11-25
----------------------------

Base distro:

- bash: version 4.4.005
- grep: version 2.26 (rev2)
- kernel-firmware: version 20161118git
- libvirt: version 2.4.0
- mozilla-firefox: version 50.0
- ntp: version 4.2.8p9 (CVE-2016-9311, CVE-2016-9310, CVE-2016-7427, CVE-2016-7428, CVE-2016-9312, CVE-2016-7431, CVE-2016-7434, CVE-2016-7429, CVE-2016-7426, CVE-2016-7433)

Linux kernel:

- version 4.8.10 (CVE-2016-7039)

Management:

- add btrfs_check script to facilitate btrfs file system check
- bug fix: firefox correctly connects to emhttp port number
- samba: include OS X vfs_fruit optimizations by default
- shutdown: bug fix: overall shutdown timeout read from wrong cfg file
- shutdown: bug fix: saving shutdown timeout value
- shutdown: add config setting for overall VM shutdown timeout
- update: hwdata/{pci.ids,usb.ids,oui.txt,manuf.txt} smartmontools/drivedb.h
- webGui: add filesystem Check for btrfs volumes in Maintenance mode
- webGui: add vm shutdown time-out option
- webGui: generate VM xml with cpu topology as single-threaded when host cpu is AMD
- webGui: special text aside new disks to clear
- webGui: split out Europe/Istanbul as its own timezone

Other:

- make_bootable_linux: use readlink instead of realpath since it is more compatible

Version 6.3.0-rc4 2016-11-11
----------------------------

Base distro:

- curl: version 7.51.0 (CVE-2016-8615, CVE-2016-8616, CVE-2016-8617, CVE-2016-8618, CVE-2016-8619, CVE-2016-8620, CVE-2016-8621, CVE-2016-8622, CVE-2016-8623, CVE-2016-8624, CVE-2016-8625)
- docker: version 1.12.3 (CVE-2016-8867)
- glibc-zoneinfo: version 2016i
- grep: version 2.26
- kernel-firmware: version 20161001git
- libusb: version 1.0.21
- libX11: version 1.6.4 (CVE-2016-7942, CVE-2016-7943)
- libXfixes: version 5.0.3 (CVE-2016-7944)
- libXi: version 1.7.8 (CVE-2016-7945, CVE-2016-7946)
- libXrandr: version 1.5.1 (CVE-2016-7947, CVE-2016-7948)
- libXrender: version 0.9.10 (CVE-2016-7949, CVE-2016-7950)
- libXtst: version 1.2.3 (CVE-2016-7951, CVE-2016-7952)
- libXv: version 1.0.11 (CVE-2016-5407)
- lvm2: version 2.02.166
- mozilla-firefox: version 49.0.2
- mpfr: version 3.1.5
- nano: version 2.7.1
- php: version 7.0.13
- samba: version 4.5.1

Linux kernel:

- version 4.8.7 (CVE-2016-7042, CVE-2016-8630, CVE-2016-8633)
- md/unraid version: 2.7.1
  - make the 'check' command "correct"/"nocorrect" argument case insensitive
  - mark superblock 'clean' upon initialization

Management:

- emhttp: add API command cmdStopMover and API status variable shareMoverActive (yes/no)
- emhttp: ensure disk shares have proper permissions set even if not being exported
- emhttp: fix detecton of unclean shutdown to trigger automatic parity check upon Start if necessary
- emhttp: fix mac address not set in avahi afp share advertisement (regression introduced in -rc2)
- emhttp: unmount docker/libvirt loopback if docker/libvirt fail to start properly
- mover: add start/stop/status subcommands (experimental)
- mover: dereference files on user shares to get st_dev/st_ino instead of from shfs stat structure
- shfs: eliminate 'use_ino' option dependency (fixes NFS issue on buggy clients)
- update: hwdata/{pci.ids,usb.ids,oui.txt,manuf.txt} smartmontools/drivedb.h
- webGui: combine PCI Devices and IOMMU Groups on Sysdev page; Sort IOMMU and USB Devices properly
- webGui: correct button positions on confirmation dialogs
- webGui: correct handling of unclean shutdown detection
- webGui: fixed device passthrough for Docker
- webGui: fixed Docker/VMs tab stay visible when array is stopped
- webGui: fixed some help text typos
- webGui: update to font-awesome 4.7.0

Version 6.3.0-rc3 2016-10-22
----------------------------

Linux kernel:

- version 4.8.4 (CVE-2016-5195)

Management:

- shutdown: additional logging in event of cmdStop timeout

Version 6.3.0-rc2 2016-10-19
----------------------------

Base distro:

- docker: version 1.12.2
- containerd: version 0.2.4
- runc: version 1.0.0_rc2
- libseccomp: version 2.3.1
- libvirt-php: 0.5.2 (+ latest from git)
- php: version 7.0.12
- usbredir: version 0.7.1
- spice: version 0.12.8
- spice-protocol: version 0.12.12
- imlib2: version 1.4.9
- gd: version 2.2.3
- rsyslog: version 8.22.0
- libfastjson: version 0.99.4
- reverted OVMF firmware back to the version in 6.2 due to user reported issues

Linux kernel:

- version 4.8.2
- r750: version 1.2.10-16_10_13
- md/unraid: kernel 4.8 API changes; support FUA and SYNC write operation flags

Management:

- bug fix: Samba listening on the wrong interface in a VLAN-enable config
- emhttp: added starting/stopping docker/libvirt events
- emhttp: removed 'reboot', 'shutdown', 'changeNetwork' API calls; eliminated emhttp-managed network vars
- shutdown: save diagnostics in event of cmdStop timeout
- vm manager: add 'virtio-win-0.1.126-2' and 'virtio-win-0.1.126-1' to VirtIO-ISOs list
- webGui: Added "Join" notification agent
- webGui: Add support for "Notify My Android" notifications
- webGui: Fixed: Windows unable to extract diagnostics zip file
- webGui: Increased password length to 128 characters
- webGui: Interactive Reboot and Shutdown directly invokes '/sbin/reboot' and '/sbin/poweroff'

Version 6.3.0-rc1 2016-10-05
----------------------------

Base distro (primary packages):

- btrfs-progs: version v4.7.2
- netatalk: version 3.1.10
- openssl: version 1.0.2j
- php: version 5.6.26
- qemu: version 2.7.0
- samba: version 4.5.0

Base distro (secondary packages):

- apcupsd: version 3.14.14
- bash: version 4.4.0
- curl: version 7.50.3
- diffutils: version 3.5
- e2fsprogs: version 1.43.3
- etc: version 14.2
- file: version 5.28
- fuse: version 2.9.7
- gawk: version 4.1.4
- gdbm: version 1.12
- glib2: version 2.46.2
- glibc: version 2.24
- glibc: version zoneinfo
- glibc-solibs: version 2.24
- gnutls: version 3.4.15
- jemalloc: version 4.2.1
- kmod: version 23
- libtasn1: version 4.9
- libxml2: version 2.9.4
- lvm2: version 2.02.161
- nano: version 2.7.0
- network-scripts: version 14.2
- nfs-utils: version 1.3.4
- openssl-solibs version: 1.0.2j
- pkgtools-14.2-noarch: version 13
- reiserfsprogs: version 3.6.25
- util-linux: version 2.28.2

Base distro (desktop GUI packages):

- freetype: version 2.6.5
- harfbuzz: version 1.3.0
- libXfont: version 1.5.2
- mesa: version 12.0.2
- mozilla-firefox: version 49.0.1
- xkeyboard-config: version 2.18
- xorg-server: version 1.18.4

Linux kernel:

- version 4.7.6
- aacraid: version 1.2.1-52011
- intel 10Gbit ethernet: revert to in-tree drivers
- r750: version 1.2.9-16_09_27
- md/unraid: Fix bug where case of no data disks improperly detected.

Management:

- bug fix: For file system type "auto", only attempt btrfs,xfs,reiserfs mounts.
- bug fix: For docker.img and libvirt.img, if path on /mnt/ check for mountpoint on any subdir component
- bug fix: During shutdown force continue if array stop taking too long.
- bug fix: Handle case in 'mover' where rsync may move a file but also return error status.
- webGui: Add "Shutdown time-out" control on Disk Settings page.
- webGui: bug fix: Cannot manually specify virtIO iso in VM settings
- webGui: other changes: refer to github commit log
]]>
</CHANGES>

<!--
Be compatible with unRAID-5 installplg
-->
<FILE Name="/tmp/&name;.sh" Run="/bin/bash">
<INLINE>
rm /tmp/&name;.sh
# cleanup possibly failed previous download/install attempt
rm -rf /tmp/&name;*
mkdir /tmp/&name;
# check if this is unRAID-5
source /etc/unraid-version
if [ "${version:0:2}" == "5." ]; then
  # prevent endless install loop
  rm -rf /boot/plugins/&name;.plg
  rm -rf /boot/config/plugins/&name;.plg
  # check if 64-bit capable CPU
  if ! grep -q " lm" /proc/cpuinfo ; then
    echo "CPU is not 64-bit capable"
    exit 1
  fi
  # Wait until network is ready by pinging google - thanks bonienl!
  ip=8.8.4.4
  timer=30
  while [[ $timer -gt 0 ]]; do
    if [[ -n $(route -n|awk '/^0.0.0.0/{print $2}') &amp;&amp; $(ping -qnc1 $ip|awk '/received/{print $4}') -eq 1 ]]; then
      break
    fi
    ((timer--))
    sleep 1
  done
  if [[ $timer -eq 0 ]]; then
    echo "No network communication !!!"
    exit 1
  fi
  # unRAID-5 needs infozip
  if [ ! -f /boot/extra/&infozip; ]; then
    echo "Downloading &infozip; package"
    mkdir -p /boot/extra
    wget http://slackware.cs.utah.edu/pub/slackware/slackware-13.1/slackware/a/&infozip; -O /boot/extra/&infozip;
    upgradepkg --install-new /boot/extra/&infozip;
  fi
  # download the release
  if ! wget --no-check-certificate &zip; -O /tmp/&name;.zip ; then
    echo "&zip; download error $?"
    exit 1
  fi
  if ! wget --no-check-certificate &md5; -O /tmp/&name;.md5 ; then
    echo "&md5; download error $?"
    exit 1
  fi
fi
</INLINE>
</FILE>

<!--
Download release from S3
For unRAID-5 this will be skipped because already downloaded above
For unRAID-6 we download here, verifying certificiate
-->
<FILE Name="/tmp/&name;.zip">
<URL>&zip;</URL>
</FILE>
<FILE Name="/tmp/&name;.md5">
<URL>&md5;</URL>
</FILE>

<FILE Name="/tmp/&name;.sh" Run="/bin/bash">
<INLINE>
rm /tmp/&name;.sh
# check download and extract
sum1=$(/usr/bin/md5sum /tmp/&name;.zip)
sum2=$(cat /tmp/&name;.md5)
if [ "${sum1:0:32}" != "${sum2:0:32}" ]; then
  echo "wrong md5"
  exit 1
fi
if ! unzip -d /tmp/&name; /tmp/&name;.zip ; then
  echo "unzip error $?"
  exit 1
fi
# check if enough free space on flash
have=$(df -k /boot | awk ' END { print $4 } ')
need=$(du -Ssk /tmp/&name; | awk ' END { print $1 } ')
source /etc/unraid-version
if [ "${version:0:2}" == "5." ]; then
  # to permit another upgrade
  need=$(($need * 2))
fi
# add some margin for possible additional config info
need=$(($need + 8192))
if [ $need -gt $have ]; then
  echo "boot device shows $have free but upgrade needs $need"
  exit 1
fi
# move release files to flash
mkdir -p /boot/&name;
rm -rf /boot/&name;/*
if ! mv /tmp/&name;/{&files;} /boot/&name; ; then
  echo "flash write error $?, maybe corrupted?"
  rm -rf /boot/&name;/*
  exit 1
fi
# preserve previous version
source /etc/unraid-version
if [ "${version:0:2}" == "6." ]; then
  mkdir -p /boot/previous
  rm -rf /boot/previous/*
  mv /boot/{&files;} /boot/previous
else
  mkdir -p /boot/unRAID5
  rm -rf /boot/unRAID5/*
  # preserve all files in root of flash except ldlinux.sys needed to boot
  find /boot -maxdepth 1 -type f -not -name ldlinux.sys -exec mv {} /boot/unRAID5 \;
  # preserve a few directories
  mv /boot/extra /boot/unRAID5 &amp;&gt; /dev/null
  mv /boot/packages /boot/unRAID5 &amp;&gt; /dev/null
  mv /boot/plugins /boot/unRAID5 &amp;&gt; /dev/null
  mkdir /boot/unRAID5/config
  mv /boot/config/plugins /boot/unRAID5/config &amp;&gt; /dev/null
  # grab a fresh 'go' file
  mv /boot/config/go /boot/unRAID5/config
  cp /tmp/&name;/config/go /boot/config
  # ensure key file is in the 'config' directory
  cp /boot/unRAID5/*.key /boot/config &amp;&gt; /dev/null
fi
# move new version files into place
mv /boot/&name;/* /boot
rmdir /boot/&name;
# move the new syslinux.cfg- in to the syslinux folder
if [ -f /boot/syslinux.cfg- ]; then
  mv /boot/syslinux.cfg- /boot/syslinux
fi
# if unRaid-6 replace the readme file
if [ "${version:0:2}" == "6." ]; then
  echo "**REBOOT REQUIRED!**" &gt; /usr/local/emhttp/plugins/&name;/README.md
fi
# when upgrading any version prior to 6.2
if [ "${version:0:3}" \&lt; "6.2" ]; then
  if ! grep -q '/bzroot-gui' /boot/syslinux/syslinux.cfg &amp;&gt; /dev/null ; then
    sed -i 's|menu title Lime Technology\r|menu title Lime Technology, Inc.\r|g' /boot/syslinux/syslinux.cfg &amp;&gt; /dev/null
    sed -i 's|label unRAID OS Safe Mode (no plugins)|label unRAID OS GUI Mode\r\n  kernel /bzimage\r\n  append initrd=/bzroot,/bzroot-gui\r\nlabel unRAID OS Safe Mode (no plugins, no GUI)|g' /boot/syslinux/syslinux.cfg &amp;&gt; /dev/null
  fi
fi
# when upgrading any version prior to 6.1
if [ "${version:0:3}" \&lt; "6.1" ]; then
  if ! grep -q 'shareDisk' /boot/config/share.cfg &amp;&gt; /dev/null ; then
    echo 'shareDisk="yes"' &gt;&gt; /boot/config/share.cfg
  fi
fi
# when upgrading from 6.0.x
if [ "${version:0:3}" == "6.0" ]; then
  sed -i 's|dynamix.docker.manager/dockerupdate.php|dynamix.docker.manager/scripts/dockerupdate.php|g' /boot/config/plugins/dynamix/docker-update.cron &amp;&gt; /dev/null
  sed -i 's|sbin/monitor|emhttp/plugins/dynamix/scripts/monitor|g' /boot/config/plugins/dynamix/monitor.cron &amp;&gt; /dev/null
  sed -i 's|/root/mdcmd|/usr/local/sbin/mdcmd|g' /boot/config/plugins/dynamix/parity-check.cron &amp;&gt; /dev/null
  sed -i 's|sbin/plugincheck|emhttp/plugins/dynamix.plugin.manager/scripts/plugincheck|g' /boot/config/plugins/dynamix/plugin-check.cron &amp;&gt; /dev/null
  sed -i 's|sbin/statuscheck|emhttp/plugins/dynamix/scripts/statuscheck|g' /boot/config/plugins/dynamix/status-check.cron &amp;&gt; /dev/null
fi
# if template-repos does not exist
if [ ! -e /boot/config/plugins/dockerMan/template-repos ]; then
  mkdir -p /boot/config/plugins/dockerMan
  echo "https://github.com/limetech/docker-templates" &gt; /boot/config/plugins/dockerMan/template-repos
fi
echo "syncing - please wait..."
sync
echo "Update successful - PLEASE REBOOT YOUR SERVER"
</INLINE>
</FILE>

<!--
The 'remove' script.
-->
<FILE Name="/tmp/&name;.sh" Run="/bin/bash" Method="remove">
<INLINE>
rm /tmp/&name;.sh
# unRAID-5 doesn't support 'remove' method, so we're done
source /etc/unraid-version
if [ "${version:0:2}" == "5." ]; then
  exit 0
fi
if [ -d /boot/previous ]; then
  # restore previous unRAID-6 release
  mv /boot/previous/* /boot
  rmdir /boot/previous
  echo "**REBOOT REQUIRED!**" &gt; /usr/local/emhttp/plugins/&name;/README.md
elif [ -d /boot/unRAID5 ]; then
  # restore previous unRAID-5 release
  rm -rf /boot/extra
  mv /boot/unRAID5/extra /boot &amp;&gt; /dev/null
  rm -rf /boot/plugins
  mv /boot/unRAID5/plugins /boot &amp;&gt; /dev/null
  rm -rf /boot/packages
  mv /boot/unRAID5/packages /boot &amp;&gt; /dev/null
  rm -rf /boot/config/plugins
  mv /boot/unRAID5/config/plugins /boot/config &amp;&gt; /dev/null
  mv /boot/unRAID5/config/go /boot/config
  rmdir /boot/unRAID5/config
  mv /boot/unRAID5/* /boot
  rmdir /boot/unRAID5
else
  echo "Cannot remove, no previous version"
  exit 1
fi
echo "syncing..."
sync
echo "Remove successful - PLEASE REBOOT YOUR SERVER"
</INLINE>
</FILE>

</PLUGIN>
