1#!/bin/sh 2 3version=`cat /cloud_version` 4sleep_time_1=60 5sleep_time_2=300 6sleep_time_3=600 7sleep_time_4=1800 8sleep_time_5=3600 9 10dynamic_sleep() { 11 if [ $retry_count -lt 5 ]; then 12 let retry_count=$retry_count+1 13 fi 14 eval sleep_time=\$sleep_time_$retry_count 15 sleep $sleep_time 16} 17 18start() { 19 [ -d /opt ] && { 20 /opt/xagent/run-xagent.sh 21 /www/cgi-bin/readycloud_control.cgi 22 sleep 2 23 readycloud_enable=$(/bin/config get readycloud_enable) 24 if [ "$readycloud_enable" = "1" ]; then 25 readycloud_user_admim="$(/bin/config get readycloud_user_admin)" 26 readycloud_user_passsword="$(/bin/config get readycloud_user_password)" 27 ./opt/rcagent/scripts/register.sh $readycloud_user_admim $readycloud_user_passsword 28 fi 29 } 30} 31 32uninstall() { 33 [ -s /opt/filelist ] && cat /opt/filelist | xargs rm -f 34 rm -rf /opt 35} 36 37checkversion() { 38 [ -d /opt ] || return 1 39 [ "x$(grep $version /opt/version)" = "x" ] && uninstall 40} 41 42backup() { 43 [ -s /overlay/opt/filelist ] || return 1 44 while read file; do 45 target="/tmp/clouddir$(dirname $file)" 46 mkdir -p $target 47 cp -f $file $target 48 done < /overlay/opt/filelist 49} 50 51restore() { 52 [ -d /tmp/clouddir ] || return 1 53 cp -fpR /tmp/clouddir/overlay/* /overlay 54 rm -rf /tmp/clouddir 55} 56 57install_local(){ 58 tar -zxvf /lib/readygeniecloud-r7800new-20161026-01.tar.gz -C / 59 echo 20161026 > /opt/version 60 sed '2s/^/source \/etc\/profile\n/' /opt/rcagent/run_server.sh > /tmp/run_server.sh 61 cp /tmp/run_server.sh /opt/rcagent/run_server.sh 62 63 start 64} 65 66update() { 67 local cloud_binary_install=$(/bin/config get cloud_binary_install) 68 [ -f /tmp/.cloud_updated ] && return 1 69 PID_file=/var/run/cloud.pid 70 [ -f $PID_file ] && return 1 71 install_local 72 echo "$$" > $PID_file 73 echo "start to get info from ftp://updates1.netgear.com/sw-apps/ready-genie-cloud/r7800/" 74 retry_count=0 75 while [ 1 ]; do 76 curl ftp://updates1.netgear.com/sw-apps/ready-genie-cloud/r7800/ 2>/dev/null | grep readygeniecloud-r7800new-*-.*.tar.gz > /tmp/cloud_info 77 [ -s /tmp/cloud_info ] && break 78 echo "cannot access ftp://updates1.netgear.com/sw-apps/ready-genie-cloud/r7800/ or don't find readygeniecloud tarball with version $version" 79 dynamic_sleep 80 done 81 fullversion=`tail -1 /tmp/cloud_info | awk '{print $9}'` 82 if [ -f /opt/version -a "x$(cat /opt/version)" = "x$fullversion" ]; then 83 rm -f /tmp/cloud_info 84 touch /tmp/.cloud_updated 85 rm -f $PID_file 86 echo "the readygeniecloud on update server is same as on R/W filesystem" 87 start 88 return 1 89 fi 90 size=`tail -1 /tmp/cloud_info | awk '{print $5}'` 91 echo "start to download ftp://updates1.netgear.com/sw-apps/ready-genie-cloud/r7800/$fullversion" 92 retry_count=0 93 while [ 1 ]; do 94 curl ftp://updates1.netgear.com/sw-apps/ready-genie-cloud/r7800/$fullversion -o /tmp/cloud.tar.gz 2>/dev/null 95 [ "$(wc -c /tmp/cloud.tar.gz | awk '{print $1}')" = "$size" ] && break 96 echo "fail to download ftp://updates1.netgear.com/sw-apps/ready-genie-cloud/r7800/readygeniecloud-r7800-$fullversion" 97 dynamic_sleep 98 done 99 uninstall 100 mkdir /tmp/clouddir 101 tar xfz /tmp/cloud.tar.gz -C /tmp/clouddir 102 echo $fullversion > /tmp/clouddir/opt/version 103 touch /tmp/clouddir/opt/filelist 104 find /tmp/clouddir -type f | sed 's/\/tmp\/clouddir/\/overlay/' > /tmp/clouddir/opt/filelist 105 cp -fpR /tmp/clouddir/* / 106 rm -f /tmp/cloud_info 107 rm -f /tmp/cloud.tar.gz 108 rm -rf /tmp/clouddir 109 touch /tmp/.cloud_updated 110 # add newline "source /etc/profile" in file /opt/rcagent/run_server.sh 111 sed '2s/^/source \/etc\/profile\n/' /opt/rcagent/run_server.sh > /tmp/run_server.sh 112 cp /tmp/run_server.sh /opt/rcagent/run_server.sh 113 114 echo $fullversion | cut -d - -f 3 > /cloud_version 115 echo "install ftp://updates1.netgear.com/sw-apps/ready-genie-cloud/r7800/$fullversion to R/W filesystem successfully" 116 start 117 rm -f $PID_file 118} 119 120case "$1" in 121 start) 122 start 123 ;; 124 backup) 125 backup 126 ;; 127 restore) 128 restore 129 ;; 130 checkversion) 131 checkversion 132 ;; 133 update) 134 update 135 ;; 136esac 137 138