diff options
author | robocoder <anthon.pang@gmail.com> | 2012-07-29 00:41:17 +0400 |
---|---|---|
committer | robocoder <anthon.pang@gmail.com> | 2012-07-29 00:41:17 +0400 |
commit | ce4222b610a061861a8aea93f6e229f1d0269aee (patch) | |
tree | d04989f33675212e4209a8a89b1f7890f8ec57a1 /misc/package | |
parent | 979a0198cb7175aac7445520bbcd449b730c856a (diff) |
fixes #3279
git-svn-id: http://dev.piwik.org/svn/trunk@6584 59fd770c-687e-43c8-a1e3-f5a4ff64c105
Diffstat (limited to 'misc/package')
-rw-r--r-- | misc/package/QNAP/build.sh | 17 | ||||
-rw-r--r-- | misc/package/QNAP/header.qpkg | 9 | ||||
-rwxr-xr-x | misc/package/QNAP/icons/qpkg_icon.gif | bin | 0 -> 4617 bytes | |||
-rwxr-xr-x | misc/package/QNAP/icons/qpkg_icon_80.gif | bin | 0 -> 5737 bytes | |||
-rwxr-xr-x | misc/package/QNAP/icons/qpkg_icon_gray.gif | bin | 0 -> 3672 bytes | |||
-rwxr-xr-x | misc/package/QNAP/qinstall.sh | 246 | ||||
-rw-r--r-- | misc/package/QNAP/qpkg.cfg.tpl | 43 |
7 files changed, 315 insertions, 0 deletions
diff --git a/misc/package/QNAP/build.sh b/misc/package/QNAP/build.sh new file mode 100644 index 0000000000..0ef74e21c7 --- /dev/null +++ b/misc/package/QNAP/build.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +LATEST=`curl -s http://api.piwik.org/1.0/getLatestVersion/` +curl -s http://builds.piwik.org/piwik-$LATEST.tar.gz | gunzip | tar xf - + +cp icons/qpkg_icon_80.gif piwik/.qpkg_icon_80.gif +cp icons/qpkg_icon.gif piwik/.qpkg_icon.gif +cp icons/qpkg_icon_gray.gif piwik/.qpkg_icon_gray.gif + +tar cf - piwik | gzip >Piwik.tgz + +sed "s/{{VERSION}}/$LATEST/" <qpkg.cfg.tpl >qpkg.cfg + +cp header.qpkg Piwik_$LATEST.qpkg +tar zcf - qinstall.sh Piwik.tgz qpkg.cfg >>Piwik_$LATEST.qpkg + +zip Piwik_$LATEST.zip Piwik_$LATEST.qpkg diff --git a/misc/package/QNAP/header.qpkg b/misc/package/QNAP/header.qpkg new file mode 100644 index 0000000000..7a143ecd19 --- /dev/null +++ b/misc/package/QNAP/header.qpkg @@ -0,0 +1,9 @@ +#!/bin/sh +/bin/echo "Install QNAP package on TS-NAS ..." +/bin/grep "/mnt/HDA_ROOT" /proc/mounts 1>>/dev/null 2>>/dev/null +[ $? = 0 ] || return 1 +[ -d /mnt/HDA_ROOT/update_pkg/tmp ] || /bin/mkdir -p /mnt/HDA_ROOT/update_pkg/tmp +/bin/dd if=${0} bs=487 skip=1 | /bin/tar zxv -C /mnt/HDA_ROOT/update_pkg/tmp +[ $? = 0 ] || return 1 +cd /mnt/HDA_ROOT/update_pkg/tmp && ( /bin/sh qinstall.sh || echo "Installation Abort." ) && cd .. && /bin/rm -rf /mnt/HDA_ROOT/update_pkg/tmp && exit 10 +exit 1 diff --git a/misc/package/QNAP/icons/qpkg_icon.gif b/misc/package/QNAP/icons/qpkg_icon.gif Binary files differnew file mode 100755 index 0000000000..eec1713ce2 --- /dev/null +++ b/misc/package/QNAP/icons/qpkg_icon.gif diff --git a/misc/package/QNAP/icons/qpkg_icon_80.gif b/misc/package/QNAP/icons/qpkg_icon_80.gif Binary files differnew file mode 100755 index 0000000000..43fefcb95f --- /dev/null +++ b/misc/package/QNAP/icons/qpkg_icon_80.gif diff --git a/misc/package/QNAP/icons/qpkg_icon_gray.gif b/misc/package/QNAP/icons/qpkg_icon_gray.gif Binary files differnew file mode 100755 index 0000000000..7efe51ce9d --- /dev/null +++ b/misc/package/QNAP/icons/qpkg_icon_gray.gif diff --git a/misc/package/QNAP/qinstall.sh b/misc/package/QNAP/qinstall.sh new file mode 100755 index 0000000000..3f834fe1d5 --- /dev/null +++ b/misc/package/QNAP/qinstall.sh @@ -0,0 +1,246 @@ +#!/bin/sh +#================================================================ +# Copyright (C) 2010 QNAP Systems, Inc. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +#---------------------------------------------------------------- +# +# qinstall.sh +# +# Abstract: +# A QPKG installation script for +# Piwik v1.0 +# +# HISTORY: +# 2008/03/26 - Created - KenChen +# 2010/11/05 - Modified - AndyChuo (zeonism at gmail dot com) +# 2012/07/28 - Modified - Anthon Pang (anthon at piwik dot org) +# +#================================================================ + +##### Util ##### +CMD_APACHE="/usr/local/apache/bin/apachectl" +CMD_CP="/bin/cp" +CMD_CUT="/bin/cut" +CMD_CHMOD="/bin/chmod" +CMD_ECHO="/bin/echo" +CMD_GETCFG="/sbin/getcfg" +CMD_GREP="/bin/grep" +CMD_LN="/bin/ln" +CMD_MKTEMP="/bin/mktemp" +CMD_MKDIR="/bin/mkdir" +CMD_PIDOF="/bin/pidof" +CMD_READLINK="/usr/bin/readlink" +CMD_RM="/bin/rm" +CMD_SETCFG="/sbin/setcfg" +CMD_SYNC="/bin/sync" +CMD_SETCFG="/sbin/setcfg" +CMD_SLEEP="/bin/sleep" +CMD_TAR="/bin/tar" +CMD_TOUCH="/bin/touch" +CMD_WLOG="/sbin/write_log" + +##### System ##### +UPDATE_PROCESS="/tmp/update_process" +UPDATE_PB=0 +UPDATE_P1=1 +UPDATE_P2=2 +UPDATE_PE=3 + +SYS_HOSTNAME=`/bin/hostname` +SYS_IP=`$CMD_GREP "${SYS_HOSTNAME}" /etc/hosts | $CMD_CUT -f 1` +SYS_CONFIG_DIR="/etc/config" #put the configuration files here +SYS_INIT_DIR="/etc/init.d" +SYS_rcS_DIR="/etc/rcS.d/" +SYS_rcK_DIR="/etc/rcK.d/" +SYS_QPKG_CONFIG_FILE="/etc/config/qpkg.conf" #qpkg infomation file +SYS_QPKG_CONF_FIELD_NAME="Name" +SYS_QPKG_CONF_FIELD_VERSION="Version" +SYS_QPKG_CONF_FIELD_QPKGFILE="QPKG_File" +SYS_QPKG_CONF_FIELD_ENABLE="Enable" +SYS_QPKG_CONF_FIELD_DATE="Date" +SYS_QPKG_CONF_FIELD_SHELL="Shell" +SYS_QPKG_CONF_FIELD_INSTALL_PATH="Install_Path" +SYS_QPKG_CONF_FIELD_CONFIG_PATH="Config_Path" +SYS_QPKG_CONF_FIELD_WEBUI="WebUI" +SYS_QPKG_CONF_FIELD_WEBPORT="Web_Port" +SYS_QPKG_CONF_FIELD_SERVICEPORT="Service_Port" +SYS_QPKG_CONF_FIELD_AUTHOR="Author" +SYS_WEB_STATUS=`${CMD_GETCFG} QWEB enable` +PUBLIC_SHARE=`/sbin/getcfg SHARE_DEF defPublic -d Public -f /etc/config/def_share.info` +WEB_SHARE=`/sbin/getcfg SHARE_DEF defWeb -d Qweb -f /etc/config/def_share.info` + +##### QPKG ##### +# +. qpkg.cfg +##### Func ###### +# +find_base(){ + # Determine BASE installation location according to smb.conf + + publicdir=`/sbin/getcfg Public path -f /etc/config/smb.conf` + if [ ! -z $publicdir ] && [ -d $publicdir ];then + publicdirp1=`/bin/echo $publicdir | /bin/cut -d "/" -f 2` + publicdirp2=`/bin/echo $publicdir | /bin/cut -d "/" -f 3` + publicdirp3=`/bin/echo $publicdir | /bin/cut -d "/" -f 4` + if [ ! -z $publicdirp1 ] && [ ! -z $publicdirp2 ] && [ ! -z $publicdirp3 ]; then + [ -d "/${publicdirp1}/${publicdirp2}/${PUBLIC_SHARE}" ] && QPKG_BASE="/${publicdirp1}/${publicdirp2}" + fi + fi + + # Determine BASE installation location by checking where the Public folder is. + if [ -z $QPKG_BASE ]; then + for datadirtest in /share/HDA_DATA /share/HDB_DATA /share/HDC_DATA /share/HDD_DATA /share/MD0_DATA /share/MD1_DATA; do + [ -d $datadirtest/$PUBLIC_SHARE ] && QPKG_BASE="/${publicdirp1}/${publicdirp2}" + done + fi + if [ -z $QPKG_BASE ] ; then + echo "The ${PUBLIC_SHARE} share not found." + _exit 1 + fi + +} + +_exit(){ + local ret=0 + + case $1 in + 0)#normal exit + ret=0 + if [ "x$QPKG_INSTALL_MSG" != "x" ]; then + $CMD_WLOG "${QPKG_INSTALL_MSG}" 4 + else + $CMD_WLOG "${QPKG_NAME} ${QPKG_VER} installation succeeded." 4 + fi + $CMD_ECHO "$UPDATE_PE" > ${UPDATE_PROCESS} + ;; + *) + ret=1 + if [ "x$QPKG_INSTALL_MSG" != "x" ];then + $CMD_WLOG "${QPKG_INSTALL_MSG}" 1 + else + $CMD_WLOG "${QPKG_NAME} ${QPKG_VER} installation failed" 1 + fi + $CMD_ECHO -1 > ${UPDATE_PROCESS} + ;; + esac + + exit $ret +} + +pre_update() +{ + TMP_DIR=/tmp + $CMD_CP -af $QPKG_CONFIG_PATH $TMP_DIR +} + +post_update() +{ + $CMD_CP -af "${TMP_DIR}/config.ini.php" ${QPKG_CONFIG_PATH} +} + +install() +{ + TMP=`$CMD_READLINK $QPKG_INSTALL_PATH` + UPDATE_FLAG=0 + if [ -f "${QPKG_SOURCE_DIR}/${QPKG_SOURCE_FILE}" ]; then + if [ -d ${QPKG_DIR} ]; then + CURRENT_QPKG_VER="`/sbin/getcfg ${QPKG_NAME} Version -f /etc/config/qpkg.conf`" + QPKG_INSTALL_MSG="${QPKG_NAME} ${QPKG_VER} is already installed. Setup will now perform package upgrading." + $CMD_ECHO "$QPKG_INSTALL_MSG" + UPDATE_FLAG=1 + fi + + $CMD_ECHO "$UPDATE_P1" > ${UPDATE_PROCESS} + if [ $UPDATE_FLAG -eq 0 ]; then + $CMD_ECHO "Install ${QPKG_NAME} ..." + [ ! -d $QPKG_DIR ] || $CMD_RM -rf $QPKG_DIR + else + pre_update + fi + + #install QPKG files + $CMD_TAR xzf "${QPKG_SOURCE_DIR}/${QPKG_SOURCE_FILE}" -C $QPKG_INSTALL_PATH + if [ $? = 0 ]; then + # restore backups + if [ ${UPDATE_FLAG} -eq 1 ]; then + post_update + else + $CMD_CHMOD 0777 "${QPKG_DIR}" + $CMD_CHMOD 0777 -R "${QPKG_DIR}/config" + $CMD_CHMOD 0777 -R "${QPKG_DIR}/tmp" + + $CMD_MKDIR -p ${QPKG_DIR}/tmp/{sessions, templates_c, cache, assets, latest, tcpdf} + $CMD_CHMOD 0777 -R "${QPKG_DIR}/tmp/" + fi + + chown httpdusr.everyone ${QPKG_DIR} -R + + $CMD_ECHO "$UPDATE_P2" > ${UPDATE_PROCESS} + else + ${CMD_RM} -rf ${QPKG_DIR} + QPKG_INSTALL_MSG="${QPKG_NAME} ${QPKG_VER} installation failed. ${QPKG_SOURCE_DIR}/${QPKG_SOURCE_FILE} file error." + $CMD_ECHO "$QPKG_INSTALL_MSG" + _exit 1 + fi + + # set QPKG information to $SYS_QPKG_CONFIG_FILE + $CMD_ECHO "Set QPKG information to $SYS_QPKG_CONFIG_FILE" + [ -f ${SYS_QPKG_CONFIG_FILE} ] || $CMD_TOUCH ${SYS_QPKG_CONFIG_FILE} + $CMD_SETCFG ${QPKG_NAME} ${SYS_QPKG_CONF_FIELD_NAME} "${QPKG_NAME}" -f ${SYS_QPKG_CONFIG_FILE} + $CMD_SETCFG ${QPKG_NAME} ${SYS_QPKG_CONF_FIELD_VERSION} "${QPKG_VER}" -f ${SYS_QPKG_CONFIG_FILE} + + #default value to activate(or not) your QPKG if it was a service/daemon + $CMD_SETCFG ${QPKG_NAME} ${SYS_QPKG_CONF_FIELD_ENABLE} "UNKNOWN" -f ${SYS_QPKG_CONFIG_FILE} + + #set the qpkg file name + [ "x${SYS_QPKG_CONF_FIELD_QPKGFILE}" = "x" ] || $CMD_SETCFG ${QPKG_NAME} ${SYS_QPKG_CONF_FIELD_QPKGFILE} "${QPKG_QPKG_FILE}" -f ${SYS_QPKG_CONFIG_FILE} + + #set the date of installation + $CMD_SETCFG ${QPKG_NAME} ${SYS_QPKG_CONF_FIELD_DATE} `date +%F` -f ${SYS_QPKG_CONFIG_FILE} + + #set the path of start/stop shell script + [ "x${QPKG_SERVICE_PROGRAM}" = "x" ] || $CMD_SETCFG ${QPKG_NAME} ${SYS_QPKG_CONF_FIELD_SHELL} "${QPKG_DIR}/${QPKG_SERVICE_PROGRAM}" -f ${SYS_QPKG_CONFIG_FILE} + + #set path where the QPKG installed + $CMD_SETCFG ${QPKG_NAME} ${SYS_QPKG_CONF_FIELD_INSTALL_PATH} "${QPKG_DIR}" -f ${SYS_QPKG_CONFIG_FILE} + + #set path where the QPKG configure directory/file is + [ "x${QPKG_CONFIG_PATH}" = "x" ] || $CMD_SETCFG ${QPKG_NAME} ${SYS_QPKG_CONF_FIELD_CONFIG_PATH} "${QPKG_CONFIG_PATH}" -f ${SYS_QPKG_CONFIG_FILE} + + #set the port number if your QPKG was a service/daemon and needed a port to run. + [ "x${QPKG_SERVICE_PORT}" = "x" ] || $CMD_SETCFG ${QPKG_NAME} ${SYS_QPKG_CONF_FIELD_SERVICEPORT} "${QPKG_SERVICE_PORT}" -f ${SYS_QPKG_CONFIG_FILE} + + #set the port number if your QPKG was a service/daemon and needed a port to run. + [ "x${QPKG_WEB_PORT}" = "x" ] || $CMD_SETCFG ${QPKG_NAME} ${SYS_QPKG_CONF_FIELD_WEBPORT} "${QPKG_WEB_PORT}" -f ${SYS_QPKG_CONFIG_FILE} + + #set the URL of your QPKG Web UI if existed. + [ "x${QPKG_WEBUI}" = "x" ] || $CMD_SETCFG ${QPKG_NAME} ${SYS_QPKG_CONF_FIELD_WEBUI} "${QPKG_WEBUI}" -f ${SYS_QPKG_CONFIG_FILE} + + #Sign up + [ "x${QPKG_AUTHOR}" = "x" ] && $CMD_ECHO "Warning: ${SYS_QPKG_CONF_FIELD_AUTHOR} is not specified!!" + [ "x${QPKG_AUTHOR}" = "x" ] || $CMD_SETCFG ${QPKG_NAME} ${SYS_QPKG_CONF_FIELD_AUTHOR} "${QPKG_AUTHOR}" -f ${SYS_QPKG_CONFIG_FILE} + + $CMD_SYNC + QPKG_INSTALL_MSG="$QPKG_NAME ${QPKG_VER} has been installed in $QPKG_DIR." + $CMD_ECHO "$QPKG_INSTALL_MSG" + _exit 0 + else + QPKG_INSTALL_MSG="${QPKG_NAME} ${QPKG_VER} installation failed. ${QPKG_SOURCE_DIR}/${QPKG_SOURCE_FILE} file not found." + $CMD_ECHO "$QPKG_INSTALL_MSG" + _exit 1 + fi +} + +##### Main ##### + +$CMD_ECHO "$UPDATE_PB" > ${UPDATE_PROCESS} +install diff --git a/misc/package/QNAP/qpkg.cfg.tpl b/misc/package/QNAP/qpkg.cfg.tpl new file mode 100644 index 0000000000..a97631cbb1 --- /dev/null +++ b/misc/package/QNAP/qpkg.cfg.tpl @@ -0,0 +1,43 @@ +#!/bin/sh +#================================================================ +# Copyright (C) 2010 QNAP Systems, Inc. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +#---------------------------------------------------------------- +# +# qpkg_all.cfg +# +# Abstract: +# A QPKG configuration file for +# Piwik v1.0 +# +# HISTORY: +# 2010/11/05 - Created - AndyChuo (zeonism at gmail dot com) +# 2012/07/28 - Modified - Anthon Pang (anthon at piwik dot org) +# +#================================================================ +QPKG_AUTHOR="QNAP Systems, Inc." +QPKG_SOURCE_DIR="." +QPKG_QPKG_FILE="Piwik.qpkg" +QPKG_SOURCE_FILE="Piwik.tgz" +QPKG_NAME="Piwik" +QPKG_VER="{{VERSION}}" +QPKG_MAJOR_VER="1" +QPKG_MINOR_VER="0" +QPKG_TYPE="Web Applications" +QPKG_LOG_PATH="" +QPKG_INSTALL_PATH="/share/${WEB_SHARE}" +QPKG_CONFIG_PATH="$QPKG_INSTALL_PATH/piwik/config/config.ini.php" +QPKG_DIR="$QPKG_INSTALL_PATH/piwik" +QPKG_WEBUI="/piwik/" #URL relative path of your QPKG web interface led by "/" +QPKG_INSTALL_MSG="" +QPKG_WEB_PORT="" +QPKG_SERVICE_PORT="" |