| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- #!/bin/bash
- CONFIGDIR="/oem/.record"
- SYSTEMCONF="/etc/speaker.conf"
- FIRMWARECONF="${CONFIGDIR}/firmware_url"
- action="$1"
- address="$2"
- type="$3"
- [ -z "${action}" ] && echo "Usage:$0 dhcp|static" && exit 1
- [ ! -d ${CONFIGDIR} ] && mkdir -p ${CONFIGDIR}
- if [ ! -f ${FIRMWARECONF} ];then
- touch ${FIRMWARECONF}
- cat << END > ${FIRMWARECONF}
- [firmware]
- url=test
- END
- fi
- [ ! -d ${CONFIGDIR} ] && mkdir -p ${CONFIGDIR}
- get_mac() {
- real_model="`/etc/scripts/getmodel.sh`"
- if [ "foo${real_model}" = "fooX10" -o "foo${real_model}" = "fooX10_V2" ];then
- interface="br0"
- else
- interface="eth0"
- fi
- echo "`ifconfig ${interface} | grep HWaddr | awk '{print $5}' | tr -d ':' | tr -d ' '`"
- }
- handle_conf() {
- /etc/scripts/conf_handle.sh export_${format}
- res="`/etc/scripts/import_compare.sh ${CONFIGDIR}/new.json /tmp/conf`"
- if [ ! -z "${res}" ];then
- cp ${CONFIGDIR}/new.json /tmp/conf
- res="`/etc/scripts/conf_handle.sh import`"
- if [ -z "${res}" ];then
- rm -rf ${CONFIGDIR}/new.json
- echo "Auto privisioning Successfully"
- if [ "foopnp" != "foo${type}" ];then
- /etc/scripts/shell_action.sh showReboot
- sleep 1
- /sbin/reboot
- fi
- else
- echo "Import configuration failed"
- rm -rf ${CONFIGDIR}/new.json
- exit 1
- fi
- else
- rm -rf ${CONFIGDIR}/new.json
- echo "Configuration same as local, dont need apply"
- exit 0
- fi
- }
- mac="`get_mac`"
- model="`sysconf ${SYSTEMCONF} get system oem_model`"
- [ -z "${model}" ] && model="`sysconf ${SYSTEMCONF} get system model`"
- softwareVersion="`sysconf ${SYSTEMCONF} get system firmware`"
- [ -z "${mac}" ] && echo "Please check network interface" && exit 1
- format="`sysconf ${SYSTEMCONF} get auto_privisioning format`"
- [ -z "${format}" ] && echo "Please check auto privisioning format" && exit 1
- if [ "foo${action}" = "foodhcp" ];then
- [ -z "${address}" ] && echo "Not found http url or tftp server" && exit 1
- result=$(echo ${address} | grep "://")
- if [ -z ${result} ];then
- mode="tftp"
- else
- mode="http"
- final_char="${address: -1}"
- if [ "foo${final_char}" = "foo/" ];then
- address="${address%?}"
- fi
- fi
- else
- mode="`sysconf ${SYSTEMCONF} get auto_privisioning mode`"
- address="`sysconf ${SYSTEMCONF} get auto_privisioning address`"
- [ -z "${address}" -o -z "${mode}" ] && echo "Need http url and mode" && exit 1
- final_char="${address: -1}"
- if [ "foo${final_char}" = "foo/" ];then
- address="${address%?}"
- fi
- fi
- if [ "foo${mode}" = "footftp" ];then
- #get config file from tftp server
- tftp -g -l ${CONFIGDIR}/new.json -r ${mac}.${format} ${address}
- retcode="$?"
- [ "foo${retcode}" = "foo1" ] && echo "Failed download file form tftp server" && exit 1
- handle_conf
- elif [ "foo${mode}" = "foohttp" ];then
- #get config file from http server
- #"Zycoo-X10 v_s1.2.5 68692E290C5D"
- user_agent="Zycoo-${model} ${softwareVersion} ${mac}"
- if [ "foopnp" = "foo${type}" ];then
- retcode="`/usr/bin/curl -o ${CONFIGDIR}/new.json -k --user-agent "${user_agent}" --connect-timeout 3 -w %{http_code} ${address}`"
- else
- retcode="`/usr/bin/curl -o ${CONFIGDIR}/new.json -k --user-agent "${user_agent}" --connect-timeout 3 -w %{http_code} ${address}/${mac}.${format}`"
- fi
- if [ "foo${retcode}" = "foo200" ];then
- handle_conf
- else
- rm -rf ${CONFIGDIR}/new.json
- exit 1
- fi
- fi
- exit 0
|