#!/bin/sh /etc/rc.common
# Copyright (C) 2006-2011 OpenWrt.org

START=10
STOP=98

uci_apply_defaults() {
	. /lib/functions/system.sh

	cd /etc/uci-defaults || return 0
	files="$(ls)"
	[ -z "$files" ] && return 0
	mkdir -p /tmp/.uci
	for file in $files; do
		( . "./$(basename $file)" ) && rm -f "$file"
	done
	uci commit
}

boot() {
	boot_log "boot 11111"
	. /lib/pre_setting_config.sh
	[ -f /lib/modules/`uname -r`/mtdoops.ko ] && {
		insmod mtdoops.ko mtddev="panic-oops"
	}
	boot_log "boot insomd mtdoops"
	if [ -e /sbin/is_cal ] && [ "$(/sbin/is_cal)" = "false" ]; then            
			echo timer > /sys/class/leds/SYS_LED/trigger
			echo 100 > /sys/class/leds/SYS_LED/delay_on
			echo 100 > /sys/class/leds/SYS_LED/delay_off
			cd /tmp
			insmod ag71xx.ko
			
			mkdir /tmp/rsa_check
			echo "PASS" > /tmp/rsa_check/rsa_result
			/etc/init.d/switch start
			swconfig dev switch0 phy_reg set 4 0x0-0x1000
			vconfig add eth0 1
			ifconfig eth0 up
			ifconfig eth0.1 192.168.0.2 up

			local success=0
			echo "" &> /dev/console
			echo "===================================" &> /dev/console
			echo "Downloading file auto_art_tp.sh from 192.168.0.100 ..." &> /dev/console
			echo "===================================" &> /dev/console
			while [ $success = 0 ]; do
			/usr/bin/tftp -gr auto_art_tp.sh 192.168.0.100
			if [ $? -eq 0 ]; then
			success=1
			fi
			sleep 5
			done
			chmod +x auto_art_tp.sh

			/bin/sh auto_art_tp.sh
			cd /
			exit 0
        else
            [ -f /proc/mounts ] || /sbin/mount_root
        	[ -f /proc/jffs2_bbc ] && echo "S" > /proc/jffs2_bbc
        	[ -f /proc/net/vlan/config ] && vconfig set_name_type DEV_PLUS_VID_NO_PAD
			boot_log "boot mounts jffs2_bbc vconfig"

        	mkdir -p /var/run
        	mkdir -p /var/log
        	mkdir -p /var/lock
        	mkdir -p /var/state
        	mkdir -p /tmp/.uci
        	chmod 0700 /tmp/.uci
        	touch /var/log/wtmp
        	touch /var/log/lastlog
        	touch /tmp/resolv.conf.auto
        	ln -sf /tmp/resolv.conf.auto /tmp/resolv.conf
        	grep -q debugfs /proc/filesystems && /bin/mount -o noatime -t debugfs debugfs /sys/kernel/debug
        	[ "$FAILSAFE" = "true" ] && touch /tmp/.failsafe
			boot_log "boot mkdir and touch"
        	/sbin/kmodloader
			boot_log "boot kmodloader"

        	# allow wifi modules time to settle
        	# sleep 1

        	#/sbin/wifi detect > /tmp/wireless.tmp
        	#[ -s /tmp/wireless.tmp ] && {
        	#       cat /tmp/wireless.tmp >> /etc/config/wireless
       		#}
        	#rm -f /tmp/wireless.tmp

        	uci_apply_defaults
			boot_log "boot uci_apply_defaults"

        	# temporary hack until configd exists
        	/sbin/reload_config
			boot_log "boot reload_config"
			#set or add some configurations in advance
			pre_setting_config
			boot_log "boot pre_setting_config"
       		# create /dev/root if it doesn't exist
        	[ -e /dev/root -o -h /dev/root ] || {
               		rootdev=$(awk 'BEGIN { RS=" "; FS="="; } $1 == "root" { print $2 }' < /proc/cmdline)
                	[ -n "$rootdev" ] && ln -s "$rootdev" /dev/root
        	}   
			boot_log "boot rootdev"
        fi

        # 添加 database 新分区文件解压动作, 各相关模块逻辑
        local ubi_volume_name="database"
        local database_mtd=`cat /proc/mtd | grep \"${ubi_volume_name}\" | head -n 1 | awk -F : '{print $1}'`
        [ -n "$database_mtd" ] && {
            [ ! -d "/tmp/database" ] && mkdir /tmp/database
            dd if=/dev/${database_mtd} of=/tmp/database/database.tar.gz bs=4M
            tar -C /tmp/database -xzf /tmp/database/database.tar.gz
            rm -f /tmp/database/database.tar.gz
        }
			boot_log "boot database"

        # 添加 database2 新分区文件解压动作, 各相关模块逻辑
        ubi_volume_name="database2"
        database_mtd=`cat /proc/mtd | grep \"${ubi_volume_name}\" | head -n 1 | awk -F : '{print $1}'`
        [ -n "$database_mtd" ] && {
            [ ! -d "/tmp/database2" ] && mkdir /tmp/database2
            dd if=/dev/${database_mtd} of=/tmp/database2/database2.tar.gz bs=4M
            tar -C /tmp/database2 -xzf /tmp/database2/database2.tar.gz
            rm -f /tmp/database2/database2.tar.gz
        }
			boot_log "boot database2"

		[ -f /usr/sbin/check_upgrade_config ] && {
			/usr/sbin/check_upgrade_config
		}
			boot_log "boot check_upgrade_config"
}
