cp -f $var_etc_def $var_ctree
if [ 0 -ne $? ]
then
rm -rf /var/notsavedata
echo "ERROR::Failed to cp hw_default_ctree.xml to hw_ctree.xml!"
return 1
fi
return
}
# set spec data
HW_Script_SetData()
{
cat $var_boardinfo_file | while read -r line;
do
obj_id_temp=`echo $line | sed 's/\(.*\)obj.value\(.*\)/\1/g'`
obj_id=`echo $obj_id_temp | sed 's/\(.*\)"\(.*\)"\(.*\)/\2/g'`
# 刷新boardinfo文件的crc行
HW_Customize_ValidateBoardinfoCRC()
{
if [ -z $1 ]; then
return 0
fi
if [ -x /bin/factparam ]; then
/bin/factparam -v $1
if [ 0 -ne $? ]; then
echo "ERROR::Failed to validate boardinfo crc on $1!"
return 1
fi
fi
}
# 清除出厂参数备份
HW_Customize_ClearFactoryParamsBackup()
{
if [ -x /bin/factparam ]; then
/bin/factparam -e reserved
if [ 0 -ne $? ]; then
echo "ERROR::Failed to clear factory parameter backup area!"
return 1
fi
fi
}
if [ 0 -ne $# ]; then
echo "ERROR::input para is not right!";
exit 1;
else
HW_Script_CreateFile
[ ! $? == 0 ] && exit 1
HW_Script_RemoveFile
[ ! $? == 0 ] && exit 1
HW_Script_CopyFile
[ ! $? == 0 ] && exit 1
HW_Script_SetData
[ ! $? == 0 ] && exit 1
rm -rf $var_boardinfo_bakfile
ctrg_support=`GetFeature HW_SSMP_FEATURE_CTRG`
if [ $ctrg_support = 1 ] ;then
dbus-send --system --print-reply --dest=com.ctc.saf1 /com/ctc/saf1 com.ctc.saf1.framework.Restore > /dev/null
fi
#新增企业网防串货特性,会在配置特征字后添加_ENBG
var_cfg_ft_word_en=`echo $var_cfg_ft_word_init | sed 's/_ENBG$//g'`
if [ $var_cfg_ft_word_init != $var_cfg_ft_word_en ];then
var_is_ENBG=1
fi
var_upcase_cfg_ft_word=$(echo $var_cfg_ft_word_en | tr '[a-z]' '[A-Z]')
var_BUCPEkeycfg=$(expr match "$var_upcase_cfg_ft_word" '.*\(BUCPE\).*')
#判断配置特征字是否以WIFI结尾,如果是则删除
var_cfg_ft_word_temp=`echo "$var_cfg_ft_word" | sed 's/WIFI$//g'`
if [ "$var_bin_ft_word" = "CMCC" ] && [ "$var_cfg_ft_word_temp" != "CMCC_RMS2" ] ; then
var_cfg_ft_word_cmcc="$var_cfg_ft_word_temp"
var_cfg_ft_word_temp=`echo "$var_cfg_ft_word_cmcc" | sed 's/2$//g'`
fi
#如果是免预配置,电信定制为E8C E8C,联通定制为COMMON UNICOM
if [ "$var_cfg_ft_word_choose" = "CHOOSE_" ] ; then
if [ "$var_bin_ft_word" = "E8C" ] ; then
var_cfg_ft_word_temp="E8C"
fi
if [ "$var_bin_ft_word" = "CMCC" ];then
var_cfg_ft_word_temp="CMCC"
fi
if [ "$var_bin_ft_word" = "CMCC_RMS" ];then
var_cfg_ft_word_temp="CMCC_RMS"
fi
if [ "$var_bin_ft_word" = "BZTLF2" ];then
var_cfg_ft_word_temp="BZTLF2"
fi
if [ "$var_cfg_ft_word" = "CHOOSE_UNICOMBRI" ];then
var_cfg_ft_word_temp="UNICOMBRI"
fi
fi
if [ "$var_cfg_ft_word_temp" = "CMCC_RMS2" ] ; then
var_cfg_ft_word_temp="CMCC_RMS"
fi
#检查boardinfo是否存在
HW_Check_Boardinfo
if [ ! $? == 0 ]
then
echo "ERROR::Failed to Check Boardinfo!"
return 1
fi
#设置cfg fileword
HW_Set_CfgFile_Word()
{
if [ -z "$var_typeword" ]
then
HW_Customize_Set_CFGTypeFile ""
#不带typeword,删去typeword文件(之前定制的typeword)
rm -f /mnt/jffs2/typeword
else
HW_Customize_Set_CFGTypeFile "$var_typeword"
fi
return 0
}
# 参数检测
HW_Customize_Check_Arg()
{
if [ -z "$var_bin_ft_word" ] || [ -z "$var_cfg_ft_word" ]
then
echo "ERROR::The binfeature word and cfgword should not be null!"
return 1
fi
return 0
}
# 如果是COMMON_WIFI ~COMMON定制,则将BinWord由COMMON_WIFI->COMMON,依然走定制流程
# 如果CfgWord以wifi结尾,则去掉"wifi"字符串
HW_Change_Customize_Parameter()
{
if [ "$var_bin_ft_word" = "COMMON_WIFI" ] ; then
{
var_bin_ft_word="COMMON"
}
fi
#判断配置特征字是否以WIFI结尾,如果是则删除
var_cfg_ft_word_temp=`echo "$var_cfg_ft_word" | sed 's/WIFI$//g'`
if [ "$var_bin_ft_word" = "CMCC" ] && [ "$var_cfg_ft_word_temp" != "CMCC_RMS2" ] ; then
var_cfg_ft_word_cmcc="$var_cfg_ft_word_temp"
var_cfg_ft_word_temp=`echo "$var_cfg_ft_word_cmcc" | sed 's/2$//g'`
#现在TELMEX只支持12个参数(customize.sh后面的),格式如下:
#customize.sh COMMON TELMEX SSID WEP_KEY PPPoE_user PPPoE_pwd TR069_user TR069_pwd WEB_pwd CLI_user CLI_pwd WPA_pwd
if [ $var_cfg_ft_word == "TELMEX" ]
then
#对于之前的已经用5个参数定制的整机,返工场景(重新定制,要删除该文件,否则定制检查会失败)
if [ -f $var_customize_telmex ]
then
rm -rf $var_customize_telmex
fi
#只支持12个参数(除customize.sh以外的其他参数)
if [ 12 -ne $var_para_num ]
then
echo "ERROR::input para must be COMMON TELMEX SSID WEP_KEY PPPoE_user PPPoE_pwd TR069_user TR069_pwd WEB_pwd CLI_user CLI_pwd WPA_pwd !"
return 1
fi
fi
# 调用Customize进程进行装备资源的校验, 把文件暂时写入typeword 暂时写入/mnt/jffs2/typeword 文件。 如果不通过文件传递,通过argv 传递
# 需要函数扩展的函数有十个左右,且在Customize APP 中需要扩展解析该字段。
if [ -f /mnt/jffs2/typeword ]; then
cp -f /mnt/jffs2/typeword /mnt/jffs2/typeword_bak
fi
echo $var_typeword > /mnt/jffs2/typeword
#检测是是否在生产过程中写入specsn文件,重新返工需要将此文件删除。
if [ -f $var_jffs2_specsn_file ]
then
rm -rf $var_jffs2_specsn_file
fi
if [ ! -f /var/customize_flag ] ;then
echo > /var/customize_flag
fi
Customize $var_input_para
var_result=$?
if [ 0 -eq $var_result ]
then
#写boardinfo和文件
HW_Set_CfgFile_Word
rm -f /mnt/jffs2/typeword_bak
else
#定制失败, 如果存在备份文件,还原备份
if [ -f /mnt/jffs2/typeword_bak ]; then
mv -f /mnt/jffs2/typeword_bak /mnt/jffs2/typeword
else
#第一次定制失败
rm -f /mnt/jffs2/typeword
fi
if [ -f /mnt/jffs2/customizepara.txt ] ; then
rm -f /mnt/jffs2/customizepara.txt
fi