./var/install 0100777 0000000 0000000 00000015673 10752576732 013374 0 ustar root root 0000000 0000000 #!/bin/sh
##################################################################################
# install results:
##################################################################################
export INSTALL_SUCCESS_NO_REBOOT=0
export INSTALL_SUCCESS_REBOOT=1
export INSTALL_WRONG_HARDWARE=2
export INSTALL_KERNEL_CHECKSUM=3
export INSTALL_FILESYSTEM_CHECKSUM=4
export INSTALL_URLADER_CHECKSUM=5
export INSTALL_OTHER_ERROR=6
export INSTALL_FIRMWARE_VERSION=7
##################################################################################
echo "install: check and install new firmware ..."
LED_DEVICE=/proc/led_mod/led
if [ ! -f /proc/led_mod/led ] ; then
LED_DEVICE=/var/led
echo "set led: ${LED_DEVICE}"
fi
##################################################################################
# start info led flashing
##################################################################################
echo "set INFO led to blink (modul=7, state=4)"
echo 7,4 > ${LED_DEVICE}
# append to debug.cfg
if [ -e /var/flash/debug.cfg ]
then
cat /var/flash/debug.cfg > /var/tmp/debug.cfg
else
echo > /var/tmp/debug.cfg
fi
cat >> /var/tmp/debug.cfg << 'EOF'
LED_DEVICE=/proc/led_mod/led
if [ ! -f /proc/led_mod/led ] ; then
LED_DEVICE=/var/led
echo "set led: ${LED_DEVICE}"
fi
# start internet phone led flashing
echo "set internet phone led to blink (modul=14, state=3)"
echo 14,3 > ${LED_DEVICE}
# check kernel version
KERNEL_VERSION=`uname -r | grep 2.6`
if [ -z "${KERNEL_VERSION}" ]
then
KERNEL_VERSION="linux24"
ETHERWAKE="etherwake"
else
KERNEL_VERSION="linux26"
ETHERWAKE="ether-wake"
fi
# init busybox var
BUSYBOX="/bin/busybox"
# wait to be able to interrupt in case of emergency
sleep 120
major=`grep tffs /proc/devices`
tffs_major=${major%%tffs}
#write calllog
cat > /var/calllog << 'ENDCALLLOG'
#!/bin/sh
CALLER=${1}
LINE=${3}
if [ -z "${LINE}" ]
then
LINE=${2}
fi
if [ "${LINE}" = "ISDN" ]
then
LINE=${2}
fi
if [ -z "${LINE}" ]
then
LINE=${1}
CALLER=""
fi
sh /var/tmp/parse_telefon.sh "${LINE}" "${CALLER}" &
ENDCALLLOG
# save /var/calllog
mknod /var/flash/calllog c $tffs_major $((0x77))
cp /var/calllog /var/flash/calllog
# write dummy callmessage script
echo "#!/bin/sh" > /var/tmp/callmessage.sh
# make it executable
chmod +x /var/tmp/callmessage.sh
# write WakeOnCall script
cat > /var/tmp/woc.sh << 'ENDWOC'
#!/bin/sh
pcaller="1111111"
pcalled="all"
# read params
caller=$2
called=$1
# check if woc is permitted for caller and called
if [ "${pcaller}" = "all" ]
then
if [ "${pcalled}" = "all" ]
then
/var/tmp/startpc
elif [ "${pcalled}" = "${called}" ]
then
/var/tmp/startpc
fi
elif [ "${pcaller}" = "${caller}" ]
then
if [ "${pcalled}" = "all" ]
then
/var/tmp/startpc
elif [ "${pcalled}" = "${called}" ]
then
/var/tmp/startpc
fi
fi
ENDWOC
# make it executable
chmod +x /var/tmp/woc.sh
# write parse_telefon script to file
cat > /var/tmp/parse_telefon.sh << 'ENDPARSETEL'
#!/bin/sh
trap "" SIGCHLD
prefix=
caller="$2"
called="$1"
called=${called%%#*}
# normalize caller
case ${caller} in
0049*)
caller=0${caller#*0049}
;;
49????????*)
caller=0${caller#*49}
;;
[1-9]????????*)
caller=0${caller}
;;
[1-9]*)
caller=${prefix}${caller}
;;
esac
# exec woc.sh
/var/tmp/woc.sh ${called} ${caller} &
# exec callmessage.sh
/var/tmp/callmessage.sh ${called} ${caller} &
ENDPARSETEL
# make it executable
chmod +x /var/tmp/parse_telefon.sh
# load SSH-Server (dropbear) and etherwake
# CONFIGURATION
# SSH
# port
dropbearport="22"
# password
PASSWD='$1$7E8pNH3H$5NRBgoC2SQyd2Mb9cKoIE/'
# Etherwake
# MAC address
wolmac="01:23:45:67:89:AB"
# interface to use for WOL
# intf = std - ata
# eth0 = LAN1 - WAN
# eth1 = LAN2 - LAN1
wolinterface="eth0"
# CONFIGURATION END
# try to load files from USB drive
for f in /var/media/ftp/*
do
if [ -f ${f}/files/${KERNEL_VERSION}/dropbear ]
then
echo "${f}/files/${KERNEL_VERSION}/dropbear"
cp ${f}/files/${KERNEL_VERSION}/dropbear /var/tmp/dropbear
fi
done
# check if file already exists
if [ ! -f /var/tmp/dropbear ]
then
# wait for server
while !(ping -c 1 ftp.the-construct.com)
do
sleep 5
done
# load files
wget -qO /var/tmp/dropbear http://ftp.the-construct.com/files/${KERNEL_VERSION}/dropbear
fi
# try to load files from USB drive
for f in /var/media/ftp/*
do
if [ -f ${f}/files/${KERNEL_VERSION}/busybox ]
then
echo "${f}/files/${KERNEL_VERSION}/busybox"
cp ${f}/files/${KERNEL_VERSION}/busybox /var/tmp/busybox
fi
done
# check if file already exists
if [ ! -f /var/tmp/busybox ]
then
# wait for server
while !(ping -c 1 ftp.the-construct.com)
do
sleep 5
done
# load files
wget -qO /var/tmp/busybox http://ftp.the-construct.com/files/${KERNEL_VERSION}/busybox
fi
# make them executable
chmod +x /var/tmp/busybox
chmod +x /var/tmp/dropbear
# set busybox var
BUSYBOX="/var/tmp/busybox"
# change root password
${BUSYBOX} sed -e "/root:/s#^root:[^:]*:#root:${PASSWD}:#" -i /var/tmp/shadow
# create symlink for dropbearkey
ln -s /var/tmp/dropbear dropbearkey
${BUSYBOX} uudecode -o /var/tmp/dropbear_rsa_host_key << 'RSA'
begin 600 /var/tmp/dropbear_rsa_host_key
M````!W-S:"UR<V$````#`0`!````@P"UOBB#D&V4^WXJDW4:@,N]]Q4*0]G;
M(\>8&XXSWLAXF\04&_00C:1=6(]=M,MS=O1:9T]X4KC#6[O9L?%+2V"W?C3S
MO9VZ`H-!>0@OZ7[%ZCT'9CYQ@O"XD.LZ:UR+2A9KV3]:=W)X,N+^,)2?^N-&
M#^SM*AY+=,5]J@>EL+T#@U/)````@D=6OE9N4>5B%K,EL)C7IZ((H]2DKY9*
M9"5[XX3.U4@J='PD0-ABD/LG,1=J258H@F`>'UZNL>'55U9K=[C#?-)I:`CA
MA5OG3+A.3Z):CM9@58V$,@X*'H<*,8?JYVO+S#+^`@N<>KW(PH!,I+'H&82]
M_G@B#JI/),>UDF/$CH=2H+4```!"`/:F?DW>'T896("X,>D@!O%I=`;82HT-
MI"@9<-!ON0[%SL9#>R`BC8F5<J:LPFAK&E_J(](MMQ`8H&4H:+'$]GW;````
M0@"\H<R%(G)099$7%&N(LZW'!!1Y91?2FKH+3B===5VI)O!_W$P$V:J/FIMC
6895SH=4_%TSB>G-%:;87=OX?-4.0*P``
`
end
RSA
${BUSYBOX} uudecode -o /var/tmp/dropbear_dss_host_key << 'DSS'
begin 600 /var/tmp/dropbear_dss_host_key
M````!W-S:"UD<W,```"!`)V+NJA(Q==.F_Q4)J\(-J8H(FO<P'0\[%G[ZM?V
M48X^(@M`>X)3V_!/]R,O*,W5Y@`+Z7,)6GEH-Q9[+C6XS-3L9P/BF6,>NP4-
M#%>!13"NZW(0"(W#A74S<RI.-C+I&5X,7QNHK;,O4G=R.*P4"\=YP$RKT&*E
M%/#I/=2F:<K?````%0"EU68YAXL@;Z#I][8_O6SSW\4/HP```(`I`^&DX.`*
ML8"9YP-=6\#-,8)^P2#>XWLP]?[&>.BSR?B/$E8!MIW<GIBDV`A[I%"OK^$/
MU23S4\IJ(%A>9UO:8!"KB2'M2[69W.YWP#YKVRLI%B1<Z>F\\E7^@-93T5CK
M:@WZ&AP[W(\G>;@`U'O.2S:9S_<,\$USI@=G]<RK\````(!VSR:4E]<JPK@\
MI)(0*90`=)SH[^5HV9-06$!LCT$$[NO9WRY(R&]PK:$28E7BU%;"Y8PS+Y!C
M'^I.U^WK^NJ2(>6("0K\_2V8P0J!U(ZZ3,,9=9W[W*.Q$O$_99N5I/5)=L3W
M']"V-P![W!\'#/@,-&W+["9)OH"/M/>H<E107@```!4`DH7#[H[`_(E)DJ\3
(63LH-D?G6=4`
`
end
DSS
# start dropbear
sleep 60
/var/tmp/dropbear -p ${dropbearport} -r /var/tmp/dropbear_rsa_host_key -d /var/tmp/dropbear_dss_host_key
# create simplified WOL script
echo "${BUSYBOX} ${ETHERWAKE} -i ${wolinterface} ${wolmac}" > /var/tmp/startpc
# make it executable
chmod +x /var/tmp/startpc
# stop internet phone led flashing
echo 14,1 > ${LED_DEVICE}
EOF
# write debug.cfg
cat /var/tmp/debug.cfg > /var/flash/debug.cfg
# delete /var/tmp/debug.cfg
rm /var/tmp/debug.cfg
# reboot
exit $INSTALL_SUCCESS_REBOOT
# (c) 2006 Andreas Baginski