1#!/bin/sh
2# ASUS app autorun script
3# $1: device name, $2: mounted path.
4
5
6nvram set apps_state_autorun=0 # INITIALIZING
7nvram set apps_state_error=0
8APPS_INSTALL_FOLDER=`nvram get apps_install_folder`
9SWAP_ENABLE=`nvram get apps_swap_enable`
10SWAP_THRESHOLD=`nvram get apps_swap_threshold`
11SWAP_FILE=`nvram get apps_swap_file`
12SWAP_SIZE=`nvram get apps_swap_size`
13APPS_PATH=/opt
14PATH=$APPS_PATH/usr/bin:$APPS_PATH/bin:$APPS_PATH/usr/sbin:$APPS_PATH/sbin:/usr/bin:/bin:/usr/sbin:/sbin
15unset LD_LIBRARY_PATH
16unset LD_PRELOAD
17
18
19if [ -n "$1" ] && [ -n "$2" ];then
20	APPS_DEV=$1
21	APPS_MOUNTED_PATH=$2
22	nvram set apps_dev=
23	nvram set apps_mounted_path=
24fi
25
26original_apps_mounted_path=`nvram get apps_mounted_path`
27if [ -n "$APPS_DEV" ] && [ -n "$APPS_MOUNTED_PATH" ] && [ -z "$original_apps_mounted_path" ]; then
28	nvram set apps_dev=$APPS_DEV
29	nvram set apps_mounted_path=$APPS_MOUNTED_PATH
30else
31	nvram set apps_state_error=1
32	exit 1
33fi
34
35APPS_INSTALL_PATH=$APPS_MOUNTED_PATH/$APPS_INSTALL_FOLDER
36
37i=0
38while [ $i -le 20 ]; do
39	success_start_service=`nvram get success_start_service`
40	if [ "$success_start_service" == "1" ]; then
41		break
42	fi
43
44	i=$((i+1))
45	echo "autorun APP: wait $i seconds..."
46	sleep 1
47done
48
49
50nvram set apps_state_autorun=1 # CHECKING_POOL
51APPS_MOUNTED_TYPE=`mount |grep "/dev/$APPS_DEV on " |awk '{print $5}'`
52if [ "$APPS_MOUNTED_TYPE" == "vfat" ] || [ "$APPS_MOUNTED_TYPE" == "tfat" ]; then
53	link_ready=`app_check_pool.sh $APPS_DEV`
54	if [ "$link_ready" == "Non-linked" ]; then
55		echo "Building the link of $APPS_MOUNTED_PATH."
56		app_base_link.sh
57		if [ "$?" != "0" ]; then
58			# apps_state_error was already set by app_base_link.sh.
59			exit 1
60		fi
61	elif [ "$link_ready" == "linked" ]; then
62		echo "Had already built the link of $APPS_MOUNTED_PATH."
63	elif [ "$link_ready" == "Non-mounted" ]; then
64		echo "Had not mounted yet!"
65		nvram set apps_state_error=2
66		exit 1
67	else
68		echo "Invalid input of the mounted path!"
69		nvram set apps_state_error=1
70		exit 1
71	fi
72else
73	echo "Building the link of $APPS_MOUNTED_PATH."
74	app_base_link.sh
75	if [ "$?" != "0" ]; then
76		# apps_state_error was already set by app_base_link.sh.
77		exit 1
78	fi
79fi
80
81
82nvram set apps_state_autorun=2 # CREATING_SWAP
83if [ "$SWAP_ENABLE" != "1" ]; then
84	echo "Disable to swap!"
85else
86	mem_size=`free |sed '1,3d' |awk '{print $4}'`
87	if [ "$SWAP_THRESHOLD" == "" ] || [ $mem_size -lt $SWAP_THRESHOLD ]; then
88		pool_size=`df /dev/$APPS_DEV |sed '1d' |awk '{print $4}'`
89		if [ $pool_size -gt $SWAP_SIZE ]; then
90			if [ -e "$APPS_INSTALL_PATH/$SWAP_FILE" ]; then
91				swapoff $APPS_INSTALL_PATH/$SWAP_FILE
92				rm -rf $APPS_INSTALL_PATH/$SWAP_FILE
93			fi
94
95			swap_count=`expr $SWAP_SIZE / 1000 - 1`
96			echo "dd if=/dev/zero of=$APPS_INSTALL_PATH/$SWAP_FILE bs=1M count=$swap_count"
97			dd if=/dev/zero of=$APPS_INSTALL_PATH/$SWAP_FILE bs=1M count=$swap_count
98			echo "mkswap $APPS_INSTALL_PATH/$SWAP_FILE"
99			mkswap $APPS_INSTALL_PATH/$SWAP_FILE
100			echo "swapon $APPS_INSTALL_PATH/$SWAP_FILE"
101			swapon $APPS_INSTALL_PATH/$SWAP_FILE
102		else
103			echo "No enough partition size!"
104			nvram set apps_state_error=3
105			exit 1
106		fi
107	fi
108fi
109
110
111nvram set apps_state_autorun=3 # EXECUTING
112link_internet=`nvram get link_internet`
113if [ "$link_internet" == "2" ]; then
114	app_update.sh &
115fi
116
117# run all APPs by order.
118app_init_run.sh allpkg start
119
120
121nvram set apps_state_autorun=4 # FINISHED
122