#!/bin/sh Url () { U=$1 P=`expr "$U" : '\([a-zA-Z0-9][a-zA-Z0-9]*\):.*'` if [ -z "$P" ] ; then if [ -z "$Host" ] ; then Host=$U Port=80 Folder=/PACKAGES/ File=filelist else File=$U fi else U=`expr "$U" : "$P:\(.*\)"` File=`expr "$U" : "//[^/][^/]*.*/\(.*\)"` H=`expr "$U" : '//\([^/][^/]*\).*'` if [ -n "$H" ] ; then Host=`expr "$H" : '\([^:][^:]*\).*'` Port=`expr "$H" : '[^:][^:]*:\([0-9][0-9]*\).*'` U=`expr "$U" : "//[^/][^/]*\(.*\)/.*"` fi Folder=$U/ if [ -z "$Port" ] ; then Port=80 fi fi unset H U P } Get () { echo -e "GET "$Folder""$File" HTTP/1.0\r\nHost: $Host\r\n\r" | nc "$Host" "$Port" | StripHeader } StripHeader () { ( IFS=`echo ""` cat "$@" | ( while read line do [ "$line" = "`echo -e -n "\r"`" ] && break done cat) ) } Ramdisk4M () { ( echo -en "BZh91AY&SY\30\275\350\362\0\0\30\177\367\376\335\300R\310\t@$\50\t\b\ \204\5E\216\20\303\377\340 \n \26@\2\42\1c\326\b\260\1\30$\64E2\0\0\0\0\0\3A\2404h\ \6\233P\343&M\30\206&\230\b\30\23L\21\202bi\246\200\14 \221E\47\223\324\231\32=M4\ \0\r\32\r\00024\0\64h\304\322\301\216\25\351\334\236\344\250\215IJ\264\1RhW]\255iG\ \17<\0\22I_hI$\222\22\315HbK*\2518\321\257HE\21\231\251\254\270\326\237re\242\347\ \351\207W_gm\333\335\326{\357\324\256\3530\317b\4\200\0\50i\n\303\rV\222,q\301-\ \366\bH\0\2N\320\351\265\6\1q\210\250\321+pI @\0N\355\263e\242G\214\nn.b\47\14MLu\ \134q\341\200/\347&\224e\7\331\240\4\361\b&Lg\364\325\31\0\314,\307\222 \300\330\ \310\306\270\16\304e0\1\267\325\256\315\232\322\315\335\341\0\16\206\2\216\361BB\b\ \306\47\24D\33R\227qN\221\4\217\216~J\305\223b%\346 H\0\2\312\21\201\245\313\5\211\ \344\377\27rE8P\220\30\275\350\362") | bzcat - > ${1} mount -t ext2 ${1} ${2} } . /etc/config cd / echo "Checking for packages on ${WWW_PACKAGES} " IFS="`echo -e "\n\r"`" Url ${WWW_PACKAGES} && Get | for line in `cat` ; do unset IFS set `echo -n ${line}` [ "$dbg" = "v" ] && echo ":${line}:" 1>&2 case "${1}" in debug) dbg=v ;; md) mkdir ${2} ;; ln) ln -s -f ${2} ${3} ;; rm) rm ${2} ;; chmod) chmod ${2} ${3} ;; cd) cd ${2} ;; ramdisk) if [ `mount | grep ${2}` ]; then echo ${2} is already in use. else echo "${4}K RAM disk on ${2} at ${3}" if [ "$4" = "4096" ]; then Ramdisk4M ${2} ${3} ${4} else mke2fs -m0 ${2} ${4} || echo "Need mk2efs unless ramdisk is 4096K" mount -t ext2 ${2} ${3} fi fi ;; md5) echo "md5 is not implemented yet" ;; *) echo -e "Getting ${1}" if [ `echo $1 | grep .*tar$` ]; then Url ${1} && Get | tar -x${debug} 1>&2 else if [ `echo $1 | grep .*bz2$` ]; then Url ${1} && Get | bzcat -f - | tar -x${debug} 1>&2 else if [ `echo $1 | grep ^post.*\.ini$` ]; then Url ${1} && Get | tr -d '\r' > /etc/${File} chmod 775 /etc/${File} /etc/${File} else Url ${1} && Get > ${File} fi fi fi ;; esac done