|
| 1 | +#!/bin/sh |
| 2 | + |
| 3 | +# DSM 5 -> 7 upgrade path: |
| 4 | +# Not supported |
| 5 | +# DSM 6 -> 7 upgrade path: |
| 6 | +# files are migrated from ${SYNOPKG_PKGDEST}/var to ${SYNOPKG_PKGVAR} |
| 7 | +# Not supported (yet) |
| 8 | + |
| 9 | +INST_ETC="/var/packages/${SYNOPKG_PKGNAME}/etc" |
| 10 | +INST_VARIABLES="${INST_ETC}/installer-variables" |
| 11 | +INST_VAR="${SYNOPKG_PKGVAR}" |
| 12 | + |
| 13 | +# Optional FWPORTS file |
| 14 | +FWPORTS_FILE="/var/packages/${SYNOPKG_PKGNAME}/conf/${SYNOPKG_PKGNAME}.sc" |
| 15 | + |
| 16 | +TMP_DIR="${SYNOPKG_TEMP_UPGRADE_FOLDER}/var" |
| 17 | + |
| 18 | +# Source package specific variable and functions |
| 19 | +SVC_SETUP=`dirname $0`"/service-setup" |
| 20 | +if [ -r "${SVC_SETUP}" ]; then |
| 21 | + . "${SVC_SETUP}" |
| 22 | +fi |
| 23 | + |
| 24 | +# Reload wizard variables stored by postinst |
| 25 | +if [ -r "${INST_VARIABLES}" ]; then |
| 26 | + . "${INST_VARIABLES}" |
| 27 | +fi |
| 28 | + |
| 29 | +# Expect user to be set from package specific variables |
| 30 | +if [ -n "${USER}" -a -z "${USER_DESC}" ]; then |
| 31 | + USER_DESC="User running $SYNOPKG_PKGNAME" |
| 32 | +fi |
| 33 | + |
| 34 | +# Default description if group name provided by UI |
| 35 | +if [ -n "${GROUP}" -a -z "${GROUP_DESC}" ]; then |
| 36 | + GROUP_DESC="SynoCommunity Package Group" |
| 37 | +fi |
| 38 | + |
| 39 | +# Extract share volume and share name from download location if provided |
| 40 | +if [ -n "${SHARE_PATH}" ]; then |
| 41 | + SHARE_VOLUME=$(echo "${SHARE_PATH}" | awk -F/ '{print "/"$2}') |
| 42 | + SHARE_NAME=$(echo "${SHARE_PATH}" | awk -F/ '{print $3}') |
| 43 | +fi |
| 44 | + |
| 45 | +# Tools shortcuts |
| 46 | +MV="/bin/mv -f" |
| 47 | +RM="/bin/rm -rf" |
| 48 | +CP="/bin/cp -rfp" |
| 49 | +MKDIR="/bin/mkdir -p" |
| 50 | +LN="/bin/ln -nsf" |
| 51 | +TEE="/usr/bin/tee -a" |
| 52 | + |
| 53 | +### Functions library |
| 54 | + |
| 55 | +log () |
| 56 | +{ |
| 57 | + echo "$1" 1>&2 # /var/log/packages/{package}.log |
| 58 | +} |
| 59 | + |
| 60 | + |
| 61 | +log_step () |
| 62 | +{ |
| 63 | + log $(date) |
| 64 | + log "===> Step $1. USER=$USER GROUP=$GROUP SHARE_PATH=${SHARE_PATH}" |
| 65 | +} |
| 66 | + |
| 67 | +save_wizard_variables () |
| 68 | +{ |
| 69 | + if [ -e "${INST_VARIABLES}" ]; then |
| 70 | + $RM "${INST_VARIABLES}" |
| 71 | + fi |
| 72 | + if [ -n "${GROUP}" ]; then |
| 73 | + echo "GROUP=${GROUP}" >> ${INST_VARIABLES} |
| 74 | + fi |
| 75 | + if [ -n "${SHARE_PATH}" ]; then |
| 76 | + echo "SHARE_PATH=${SHARE_PATH}" >> ${INST_VARIABLES} |
| 77 | + fi |
| 78 | +} |
| 79 | + |
| 80 | +set_unix_permissions () |
| 81 | +{ |
| 82 | + log "${SYNOPKG_PKGNAME} has not been updated to DSM7 yet. set_unix_permissions() is no longer supported." |
| 83 | +} |
| 84 | + |
| 85 | +syno_remove_user () |
| 86 | +{ |
| 87 | + log "${SYNOPKG_PKGNAME} has not been updated to DSM7 yet. syno_remove_user() is no longer supported." |
| 88 | +} |
| 89 | + |
| 90 | +syno_group_create () |
| 91 | +{ |
| 92 | + log "${SYNOPKG_PKGNAME} has not been updated to DSM7 yet. syno_group_create() is no longer supported." |
| 93 | +} |
| 94 | + |
| 95 | +syno_group_remove () |
| 96 | +{ |
| 97 | + log "${SYNOPKG_PKGNAME} has not been updated to DSM7 yet. syno_group_remove() is no longer supported." |
| 98 | +} |
| 99 | + |
| 100 | +syno_user_add_to_group () |
| 101 | +{ |
| 102 | + log "${SYNOPKG_PKGNAME} has not been updated to DSM7 yet. syno_user_add_to_group() is no longer supported." |
| 103 | +} |
| 104 | + |
| 105 | +set_syno_permissions () |
| 106 | +{ |
| 107 | + log "${SYNOPKG_PKGNAME} has not been updated to DSM7 yet. set_syno_permissions() is no longer supported." |
| 108 | +} |
| 109 | + |
| 110 | +syno_user_add_to_legacy_group () { |
| 111 | + log "${SYNOPKG_PKGNAME} has not been updated to DSM7 yet. syno_user_add_to_legacy_group() is no longer supported." |
| 112 | +} |
| 113 | + |
| 114 | + |
| 115 | +### Generic package behaviors |
| 116 | + |
| 117 | +preinst () |
| 118 | +{ |
| 119 | + log_step "preinst" |
| 120 | + call_func "service_preinst" |
| 121 | + |
| 122 | + # Check volume exists |
| 123 | + if [ -n "${SHARE_PATH}" ]; then |
| 124 | + if [ ! -d "${SHARE_VOLUME}" ]; then |
| 125 | + echo "Volume ${SHARE_VOLUME} does not exist." | $TEE 1>&2 |
| 126 | + exit 1 |
| 127 | + fi |
| 128 | + fi |
| 129 | + |
| 130 | + exit 0 |
| 131 | +} |
| 132 | + |
| 133 | +postinst () |
| 134 | +{ |
| 135 | + log_step "postinst" |
| 136 | + save_wizard_variables |
| 137 | + |
| 138 | + # copy target/var data to permanent storage |
| 139 | + # and don't override old configurations |
| 140 | + if [ -d ${SYNOPKG_PKGDEST}/var ] && [ "$(find ${SYNOPKG_PKGVAR} -mindepth 1 -not -name '*.log' -print)" = "" ]; then |
| 141 | + $CP -RT ${SYNOPKG_PKGDEST}/var/. ${SYNOPKG_PKGVAR} |
| 142 | + fi |
| 143 | + |
| 144 | + if [ "${SYNOPKG_PKG_STATUS}" == "INSTALL" ]; then |
| 145 | + # Add firewall config |
| 146 | + if [ -r "${FWPORTS_FILE}" ]; then |
| 147 | + echo "Installing service configuration ${FWPORTS_FILE}" >> ${INST_LOG} |
| 148 | + servicetool --install-configure-file --package "${FWPORTS_FILE}" >> ${INST_LOG} 2>&1 |
| 149 | + fi |
| 150 | + fi |
| 151 | + |
| 152 | + call_func "service_postinst" |
| 153 | + call_func "service_create_links" |
| 154 | + |
| 155 | + exit 0 |
| 156 | +} |
| 157 | + |
| 158 | +preuninst () |
| 159 | +{ |
| 160 | + log_step "preuninst" |
| 161 | + |
| 162 | + if [ "${SYNOPKG_PKG_STATUS}" == "UNINSTALL" ]; then |
| 163 | + # Remove firewall config |
| 164 | + if [ -r "${FWPORTS_FILE}" ]; then |
| 165 | + echo "Removing service configuration ${SYNOPKG_PKGNAME}.sc" >> ${INST_LOG} |
| 166 | + servicetool --remove-configure-file --package "${SYNOPKG_PKGNAME}.sc" >> ${INST_LOG} 2>&1 |
| 167 | + fi |
| 168 | + fi |
| 169 | + |
| 170 | + call_func "service_preuninst" |
| 171 | + exit 0 |
| 172 | +} |
| 173 | + |
| 174 | +postuninst () |
| 175 | +{ |
| 176 | + log_step "postuninst" |
| 177 | + |
| 178 | + call_func "service_postuninst" |
| 179 | + call_func "service_remove_links" |
| 180 | + |
| 181 | + if [ "$wizard_delete_data" = "true" ]; then |
| 182 | + |
| 183 | + if [ "$(ls -A ${SYNOPKG_PKGHOME})" != "" ]; then |
| 184 | + rm -rf ${SYNOPKG_PKGHOME}/ |
| 185 | + fi |
| 186 | + |
| 187 | + if [ "$(ls -A ${SYNOPKG_PKGVAR})" != "" ]; then |
| 188 | + rm -rf ${SYNOPKG_PKGVAR}/ |
| 189 | + fi |
| 190 | + |
| 191 | + if [ "$(ls -A /var/packages/${SYNOPKG_PKGNAME}/etc)" != "" ]; then |
| 192 | + rm -rf /var/packages/${SYNOPKG_PKGNAME}/etc/ |
| 193 | + fi |
| 194 | + |
| 195 | + if ["$(ls -A ${SYNOPKG_PKGTMP})" != "" ]; then |
| 196 | + rm -rf ${SYNOPKG_PKGTMP}/ |
| 197 | + fi |
| 198 | + fi |
| 199 | + exit 0 |
| 200 | +} |
| 201 | + |
| 202 | +preupgrade () |
| 203 | +{ |
| 204 | + log_step "preupgrade" |
| 205 | + |
| 206 | + # dsm6 -> dsm7 |
| 207 | + # Migrate data to permanent storage |
| 208 | + if [ ! "$(ls -A ${SYNOPKG_PKGVAR})" ]; then |
| 209 | + # only migrate when destination is empty |
| 210 | + $CP -RT ${SYNOPKG_PKGDEST}/var/. ${SYNOPKG_PKGVAR} |
| 211 | + fi |
| 212 | + |
| 213 | + call_func "service_preupgrade" |
| 214 | + |
| 215 | + call_func "service_save" |
| 216 | + |
| 217 | + exit 0 |
| 218 | +} |
| 219 | + |
| 220 | +postupgrade () |
| 221 | +{ |
| 222 | + log_step "postupgrade" |
| 223 | + |
| 224 | + call_func "service_restore" |
| 225 | + |
| 226 | + call_func "service_postupgrade" |
| 227 | + |
| 228 | + exit 0 |
| 229 | +} |
0 commit comments