#!/bin/sh

#根据硬件时间设置系统时间
hwclock -s

hw_model=`/wns/shell/hw_model.sh`

#设置core位置和文件名格式
echo "/var/core/%e.%s.%t.%p" > /proc/sys/kernel/core_pattern

#设定tmp目录大小为100M
mount -o remount,size=100M /tmp
mount -o remount,size=100M /dev/shm

#设置启动时间（blackbox需要）
date +%y%m%d-%H%M%S >/var/boottime

if [ ! -f /var/lib/misc/udhcpd.leases ]; then
        touch /var/lib/misc/udhcpd.leases
        chmod 666 /var/lib/misc/udhcpd.leases
fi

if [ ! -f /wns/etc/config/wac/wns_cfg_admin.xml ]; then
	cp -rf /wns/etc/default/wns/etc/config/wac/wns_cfg_admin.xml /wns/etc/config/wac/wns_cfg_admin.xml
fi

#mod for wns1.5
if [ ! -f /wns/data/databasebk ]; then
	mkdir -p /wns/data/databasebk
fi
chmod 777 /wns/data/databasebk
if [ ! -f /wns/data/webui/temp ]; then
	mkdir -p /wns/data/webui/temp
fi
rm -rf /wns/data/webui/temp/*
mkdir -p /tmp/ci
chown  nobody:nogroup /tmp/ci/
chmod 777 /tmp/ci
ln -sf /wns/data/webui/temp /tmp/ci/temp
chmod 777 /wns/data/webui/temp



rm /wns/tmp -rf
ln -sf /tmp /wns/tmp
ln -sf /var /wns/var

#wuliang add
#ln -s /tmp/ci/temp /wns/webui/tmppic

mkdir -p /wns/var/core
mkdir -p /wns/var/contchk
mkdir -p /wns/var/sock
mkdir -p /var/run

mkdir -p /wns/etc/ap_update_files

#td88794 
mkdir -p /var/log/nginx/
rm /var/log/nginx/* -rf

#/wns/3party/php/bin/php /wns/webui/index.php wl_network create_wlan_tool

# PHP相关的文件夹给nobody权限
#chown nobody /wns/3party/apache/logs/fcgidsock
chown -R nobody /wns/etc/config
chown -R nobody /wns/webui
chown -R nobody /var/tmp
chown -R nobody /var/frontend-cache
chmod +x /wns/3party/apache/conf/apache_pass.sh
chown nobody /wns/3party/apache/conf/apache_pass.sh
chmod -R 777 /wns/etc/ap_update_files
chown nobody -R /wns/etc/ap_update_files
chmod -R 777 /wns/upgrade
#智能橱窗广告目录 by 3.6.8AI
mkdir -p /wns/data/ai_imgs
chown  nobody:nogroup /wns/data/ai_imgs
chmod 777 /wns/data/ai_imgs
if [ ! -L /wns/etc/config/portal/ai_imgs ];then
ln -sf /wns/data/ai_imgs /wns/etc/config/portal/ai_imgs
fi
rm /wns/data/ai_imgs/ai_imgs

#气象数据获取模块 by 3.6.8AI
mkdir -p /wns/data/weather
chown -R nobody:nogroup /wns/data/weather
chmod -R 777 /wns/data/weather

. /wns/etc/init.d/wns_functions.sh

etc_mirro_capacity="250M"
cfg_pool_capacity="2000M"
log_capacity="2000M"
upgrade_capacity="1400M"
frontend_cache="20M"
contchk_cache="200M"
lock_cache="10M"
httpd_logs="10M"
actrace_cache="40M"
TotalMem=`free -m | grep Mem | awk '{print $2}'`
let TotalMem=TotalMem/500+1
if [ $TotalMem -lt 10 ]; then
	run_cache="10M"
else
	run_cache="${TotalMem}M"
fi

#td45557 从ui上升级设备 32G的s5000需扩展/wns/upgrade分区 16G的和原来一样  by3.0
#td52685 分销wac dac1100也是32G硬盘，判断条件不能限制为S5000，直接判断硬盘大小 by3.2r3
#HW_MODEL=`cat /hwinfo|grep "model=s5000"`
sda_size=$(fdisk -l /dev/sda  2>/dev/null | grep "Disk /dev/sda:" | awk '{print $3}' | awk -F. '{print $1}')
#if [ "x$HW_MODEL" != "x" ];then
if [ "${sda_size}" -lt "33" ]; then    
		log_capacity="900M"
	if [ "${sda_size}" -lt "17" ];then
		upgrade_capacity="500M"
		cfg_pool_capacity="500M"
	fi
fi

#td48494 /wns/etc_mirror扩容到2G inode增加到300000
sda5_size=$(df -h /wns_mount_file/ | grep wns_mount_file | awk '{print $2}' | awk -F'[.G]' '{print $1}')
if [ "$sda5_size" -gt "8" ];then
	etc_mirro_capacity="2000M"
	etc_mirro_inodes="300000"
fi

get_actrace_cache_size
actrace_cache="$?M"

mount_quota_file "ext4" "$etc_mirro_capacity" "/wns_mount_file/etc_mirror_part"  "/wns/etc_mirror"      "noatime,data=journal" false "$etc_mirro_inodes"
mount_quota_file "ext4" "$cfg_pool_capacity" "/wns_mount_file/cfg_pool_part"  "/wns/cfg_pool"      "noatime,data=journal" false
mount_quota_file "ext4" "$log_capacity" "/wns_mount_file/log_part"  "/wns/log"      "noatime,barrier=0,data=writeback" false

#新增设备升级目录
mount_quota_file "ext4" "$upgrade_capacity" "/wns_mount_file/upgrade_part"  "/wns/upgrade"      "noatime,barrier=0,data=writeback" false

#3.0添加 td45557
##升级包中有多个app要升级的情况下，这里不能删除升级分区。移动到启动脚本中去判断处理。
upgrade_size=$(df -P /wns/upgrade|grep "/wns/upgrade"|awk '{print $2}')
if [ "${sda_size}" -gt "17" ];then
	if [ "${upgrade_size}" -lt "1300000" ]; then
		echo "/wns_mount_file/upgrade_part: ${upgrade_size}, delete it";
		umount /wns_mount_file/upgrade_part
		rm -rf /wns_mount_file/upgrade_part;
		mount_quota_file "ext4" "$upgrade_capacity" "/wns_mount_file/upgrade_part"  "/wns/upgrade"      "noatime,barrier=0,data=writeback" false
	fi
fi

#rhb添加 修正sshd.pid文件丢失导致S02remove-default中，stop sshd 失败。
#将/var/run下文件备份
mkdir -p /tmp/run
cp -a /var/run/* /tmp/run/

#为var目录下文件夹预留空间，防止var目录满了影响正常业务
# TD 81260 注意，这里如果改了记录数量，需要修改 write_varinfo 参数，改成和这里一致
mount_quota_file "ext4" "$frontend_cache" "/var/frontend_part"  "/var/frontend-cache"      "noatime,barrier=0,data=writeback" false
mount_quota_file "ext4" "$run_cache" "/var/run_part"  "/var/run"      "noatime,barrier=0,data=writeback" true
mount_quota_file "ext4" "$lock_cache" "/var/lock_part"  "/var/lock"      "noatime,barrier=0,data=writeback" false
mount_quota_file "ext4" "$httpd_logs" "/var/httpd-logs_part"  "/var/httpd-logs"      "noatime,barrier=0,data=writeback" false
mount_quota_file "ext4" "$actrace_cache" "/var/actrace_part"  "/var/actrace"      "noatime,barrier=0,data=writeback" true
#TD43674不需要通过contchkcfg生成中间文件，所以目录不需要了
rm -rf /var/contchk_part

# 上面如果mount失败，则记录var目录文件信息
mkdir -p /wns/log/appinit

# TD 81260 注意，这里如果改了记录数量，需要修改 write_varinfo 参数，改成和这里一致
write_varinfo 5

mkdir -p /wns/var/lock/subsys/
rm -rf /wns/var/lock/subsys/*
touch /wns/var/lock/subsys/_etc

#rhb添加 将备份的文件还原到/var/run下
cp -a /tmp/run/* /var/run/
rm -rf /tmp/run

#td47789 by liutao
chown -R nobody /var/frontend-cache

# 创建backup文件，保证在重启或关机的时候调用K01backup
touch /wns/var/lock/subsys/backup

#2.0 扩增/wns/cfg_pool的大小为2G， 将update_add_cant_convert_file中备份的配置恢复到/wns/cfg_pool中
if [ -d /wns/data/tmp_back_file ]; then
	echo "wns/data/tmp_back_file exists cp cfg back"; 
	mv /wns/data/tmp_back_file/* /wns/cfg_pool/
	rm -rf /wns/data/tmp_back_file;
fi


mkdir -p /wns/log/appinit
mkdir -p /wns/log/bugreport
mkdir -p /wns/log/hislog
mkdir -p /wns/log/security_alarm

#删除apache临时文件夹目录 避免这些文件影响apache启动
rm -rf /wns/3party/apache/logs/*

# 创建blackbox目录
mkdir -p /wns/data/blackbox
mkdir -p /var/spool/cron/crontabs/
ln -sf /etc/crontab /var/spool/cron/crontabs/admin

#qsy 给php添加平台宏定义
hwinfo=/etc/hwinfo

wns_catagory()
{
    local type=`busybox awk -F= '/type/{print $2}' $hwinfo`
    local product=`busybox awk -F= '/product/{print $2}' $hwinfo`
    echo  "${type}_${product}"
}
catagory=`wns_catagory`
case $catagory in
    "x86_WAC")
        sed 's/<%PLATFORM%>/WAC_X86/g' /wns/webui/application/config/platdef.php.tmp >/wns/webui/application/config/platdef.php
        ;;
    "mips_WAC")
        sed 's/<%PLATFORM%>/WAC_MINI/g' /wns/webui/application/config/platdef.php.tmp >/wns/webui/application/config/platdef.php
        ;;
    *)
        ;;
esac
#
find /wns/etc/cron -type f -exec dos2unix {} \; >/dev/null 2>&1
find /wns/shell -type f -exec dos2unix {} \; >/dev/null 2>&1

#去掉/wns/etc/目录下cron rc2.d init.d目录及其文件的写权限
chmod -R a-w /wns/etc/cron
chmod -R a-w /wns/etc/init.d
chmod -R a-w /wns/etc/rc2.d


#升级客户端升级和web升级，都上传到/wns/upgrade下面
if [ ! -f /wns/upgrade ]; then
	mkdir -p /wns/upgrade
fi
rm -rf /stmp
ln -sf /wns/upgrade/ /stmp

#提供给UI一个判断升级的别名接口
ln -sf /wns/sbin/web_upgrade /wns/sbin/web_upgrade_check_valid


#1.8新增拒绝访问页面，首次初始化软链接
chmod a+x /wns/webui/application/shells/denyPortal.sh
/wns/webui/application/shells/denyPortal.sh
#引用缓存文件数据格式有变更，需要删除，等下次自动重建为新格式的文件
rm -rf /wns/etc/config/wac/*.json

chmod a+x /wns/shell/rev_only_one_kdump_core.sh
/wns/shell/rev_only_one_kdump_core.sh

#2.4 td39048 temp目录不删除
#删除/wns/data/webui下的文件
#rm -rf /wns/data/webui/*
filenames=`ls /wns/data/webui`
for filename in $filenames
do
	#保留 sc_bak 目录及其下文件
	if [ "$filename" == "sc_bak" ];then
		continue;
	fi
	#保留 db 目录及其下文件 add 3.7.4 增加一个目录存放UI自己使用的数据库文件 TD85679 目前是 行业画像 大屏使用
	if [ "$filename" == "db" ];then
		continue;
	fi
    if [ "$filename" == "tmppic" ];then
		rm -rf /wns/data/webui/${filename}/*
	    continue;
	fi
	#保留 temp 目录
    if [ "$filename" == "temp" ];then
		rm -rf /wns/data/webui/${filename}/*
	    continue;
	fi
	rm -rf /wns/data/webui/$filename
done
#修改权限供UI使用
chown nobody:nobody /wns/data/webui/db/ -R

#3.0sp1 td48054
rm /var/frontend-cache/* -rf

#给/var/run加权限的语句要移动到这里，因为前面将/var/run重新挂载了!
#给/var/run目录加上写权限，否则非root用户无法执行cli
mkdir -p /var/run
chmod 757 /var/run

#执行guestdb_to_pushdb转换程序
#chmod a+x /wns/shell/guestdb_to_pushdb.sh
#/wns/shell/guestdb_to_pushdb.sh &


#重建sup软连接
rm -rf /etc/sup
ln -s /wns/sup/cfg /etc/sup
if [ ! -L /etc/eeprom_bk ]; then
	rm -rf /etc/eeprom_bk
	ln -sf /wns/etc/eeprom_bk /etc/eeprom_bk
fi

#重建mqtt_tunnel软连接
rm -rf /wns/sbin/mqtt_tunnel_*
ln -sf /wns/sbin/mqtt_tunnel /wns/sbin/mqtt_tunnel_ctrl
ln -sf /wns/sbin/mqtt_tunnel /wns/sbin/mqtt_tunnel_data

#虚拟机和阿里云都需要执行
if [ "${hw_model}" == "vm" ] || [ "${hw_model}" == "aws" ];then
	#虚拟机版本生成序列号相关的信息。 TD38947
	sh -x /wns/etc/cron/cron.10min/dump_dmi.sh
	filesum -m -d -r /wns/etc/config/wac/
fi

#阿里云都需要执行
if [ "${hw_model}" == "aws" ];then
	if [ ! -f /usr/sbin/.sinfor.id.file ]; then
		/usr/sbin/sinforauthtool -op 1
		/usr/sbin/sinforauthtool -op 2 /wns/webui/application/views/Welcome/login.php
		/usr/sbin/sinforauthtool -op 3
		touch /usr/sbin/.sinfor.log.file
	fi

	#将计算机名改为hostname
	hostname localhost

	# 将S00set_aliyun_iface.sh 中移动到这里执行
	/wns/3party/php/bin/php /wns/webui/index.php conf_upgrade_for_3xx upgrade_interface_for_aliyun "cnt="`/wns/shell/nic_num`
fi
