Advertisement
Guest User

TP-Link WDR3600 functions.sh

a guest
May 10th, 2016
2,202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.39 KB | None | 0 0
  1. #!/bin/sh
  2. # Copyright (C) 2006-2014 OpenWrt.org
  3. # Copyright (C) 2006 Fokus Fraunhofer <carsten.tittel@fokus.fraunhofer.de>
  4. # Copyright (C) 2010 Vertical Communications
  5.  
  6.  
  7. debug () {
  8. ${DEBUG:-:} "$@"
  9. }
  10.  
  11. # newline
  12. N="
  13. "
  14.  
  15. _C=0
  16. NO_EXPORT=1
  17. LOAD_STATE=1
  18. LIST_SEP=" "
  19.  
  20. append() {
  21. local var="$1"
  22. local value="$2"
  23. local sep="${3:- }"
  24.  
  25. eval "export ${NO_EXPORT:+-n} -- \"$var=\${$var:+\${$var}\${value:+\$sep}}\$value\""
  26. }
  27.  
  28. list_contains() {
  29. local var="$1"
  30. local str="$2"
  31. local val
  32.  
  33. eval "val=\" \${$var} \""
  34. [ "${val%% $str *}" != "$val" ]
  35. }
  36.  
  37. config_load() {
  38. [ -n "$IPKG_INSTROOT" ] && return 0
  39. uci_load "$@"
  40. }
  41.  
  42. reset_cb() {
  43. config_cb() { return 0; }
  44. option_cb() { return 0; }
  45. list_cb() { return 0; }
  46. }
  47. reset_cb
  48.  
  49. package() {
  50. return 0
  51. }
  52.  
  53. config () {
  54. local cfgtype="$1"
  55. local name="$2"
  56.  
  57. export ${NO_EXPORT:+-n} CONFIG_NUM_SECTIONS=$(($CONFIG_NUM_SECTIONS + 1))
  58. name="${name:-cfg$CONFIG_NUM_SECTIONS}"
  59. append CONFIG_SECTIONS "$name"
  60. [ -n "$NO_CALLBACK" ] || config_cb "$cfgtype" "$name"
  61. export ${NO_EXPORT:+-n} CONFIG_SECTION="$name"
  62. export ${NO_EXPORT:+-n} "CONFIG_${CONFIG_SECTION}_TYPE=$cfgtype"
  63. }
  64.  
  65. option () {
  66. local varname="$1"; shift
  67. local value="$*"
  68.  
  69. export ${NO_EXPORT:+-n} "CONFIG_${CONFIG_SECTION}_${varname}=$value"
  70. [ -n "$NO_CALLBACK" ] || option_cb "$varname" "$*"
  71. }
  72.  
  73. list() {
  74. local varname="$1"; shift
  75. local value="$*"
  76. local len
  77.  
  78. config_get len "$CONFIG_SECTION" "${varname}_LENGTH" 0
  79. [ $len = 0 ] && append CONFIG_LIST_STATE "${CONFIG_SECTION}_${varname}"
  80. len=$(($len + 1))
  81. config_set "$CONFIG_SECTION" "${varname}_ITEM$len" "$value"
  82. config_set "$CONFIG_SECTION" "${varname}_LENGTH" "$len"
  83. append "CONFIG_${CONFIG_SECTION}_${varname}" "$value" "$LIST_SEP"
  84. list_cb "$varname" "$*"
  85. }
  86.  
  87. config_unset() {
  88. config_set "$1" "$2" ""
  89. }
  90.  
  91. # config_get <variable> <section> <option> [<default>]
  92. # config_get <section> <option>
  93. config_get() {
  94. case "$3" in
  95. "") eval echo "\${CONFIG_${1}_${2}:-\${4}}";;
  96. *) eval export ${NO_EXPORT:+-n} -- "${1}=\${CONFIG_${2}_${3}:-\${4}}";;
  97. esac
  98. }
  99.  
  100. # config_get_bool <variable> <section> <option> [<default>]
  101. config_get_bool() {
  102. local _tmp
  103. config_get _tmp "$2" "$3" "$4"
  104. case "$_tmp" in
  105. 1|on|true|yes|enabled) _tmp=1;;
  106. 0|off|false|no|disabled) _tmp=0;;
  107. *) _tmp="$4";;
  108. esac
  109. export ${NO_EXPORT:+-n} "$1=$_tmp"
  110. }
  111.  
  112. config_set() {
  113. local section="$1"
  114. local option="$2"
  115. local value="$3"
  116. local old_section="$CONFIG_SECTION"
  117.  
  118. CONFIG_SECTION="$section"
  119. option "$option" "$value"
  120. CONFIG_SECTION="$old_section"
  121. }
  122.  
  123. config_foreach() {
  124. local ___function="$1"
  125. [ "$#" -ge 1 ] && shift
  126. local ___type="$1"
  127. [ "$#" -ge 1 ] && shift
  128. local section cfgtype
  129.  
  130. [ -z "$CONFIG_SECTIONS" ] && return 0
  131. for section in ${CONFIG_SECTIONS}; do
  132. config_get cfgtype "$section" TYPE
  133. [ -n "$___type" -a "x$cfgtype" != "x$___type" ] && continue
  134. eval "$___function \"\$section\" \"\$@\""
  135. done
  136. }
  137.  
  138. config_list_foreach() {
  139. [ "$#" -ge 3 ] || return 0
  140. local section="$1"; shift
  141. local option="$1"; shift
  142. local function="$1"; shift
  143. local val
  144. local len
  145. local c=1
  146.  
  147. config_get len "${section}" "${option}_LENGTH"
  148. [ -z "$len" ] && return 0
  149. while [ $c -le "$len" ]; do
  150. config_get val "${section}" "${option}_ITEM$c"
  151. eval "$function \"\$val\" \"\$@\""
  152. c="$(($c + 1))"
  153. done
  154. }
  155.  
  156. insert_modules() {
  157. for m in $*; do
  158. if [ -f /etc/modules.d/$m ]; then
  159. sed 's/^[^#]/insmod &/' /etc/modules.d/$m | ash 2>&- || :
  160. else
  161. modprobe $m
  162. fi
  163. done
  164. }
  165.  
  166. default_prerm() {
  167. local name
  168. name=$(basename ${1%.*})
  169. [ -f /usr/lib/opkg/info/${name}.prerm-pkg ] && . /usr/lib/opkg/info/${name}.prerm-pkg
  170. for i in `cat /usr/lib/opkg/info/${name}.list | grep "^/etc/init.d/"`; do
  171. $i disable
  172. $i stop
  173. done
  174. }
  175.  
  176. default_postinst() {
  177. local pkgname rusers
  178. pkgname=$(basename ${1%.*})
  179. rusers=$(grep "Require-User:" ${IPKG_INSTROOT}/usr/lib/opkg/info/${pkgname}.control)
  180. [ -n "$rusers" ] && {
  181. local user group uid gid
  182. for a in $(echo $rusers | sed "s/Require-User://g"); do
  183. user=""
  184. group=""
  185. for b in $(echo $a | sed "s/:/ /g"); do
  186. local ugname ugid
  187.  
  188. ugname=$(echo $b | cut -d= -f1)
  189. ugid=$(echo $b | cut -d= -f2)
  190.  
  191. [ -z "$user" ] && {
  192. user=$ugname
  193. uid=$ugid
  194. continue
  195. }
  196.  
  197. gid=$ugid
  198. [ -n "$gid" ] && {
  199. group_exists $ugname || group_add $ugname $gid
  200. }
  201.  
  202. [ -z "$gid" ] && {
  203. group_add_next $ugname
  204. gid=$?
  205. }
  206.  
  207. [ -z "$group" ] && {
  208. user_exists $user || user_add $user "$uid" $gid
  209. group=$ugname
  210. continue
  211. }
  212.  
  213. group_add_user $ugname $user
  214. done
  215. done
  216. }
  217.  
  218. [ -f ${IPKG_INSTROOT}/usr/lib/opkg/info/${pkgname}.postinst-pkg ] && ( . ${IPKG_INSTROOT}/usr/lib/opkg/info/${pkgname}.postinst-pkg )
  219. [ -n "${IPKG_INSTROOT}" ] || rm -f /tmp/luci-indexcache 2>/dev/null
  220.  
  221. [ "$PKG_UPGRADE" = "1" ] || for i in `cat ${IPKG_INSTROOT}/usr/lib/opkg/info/${pkgname}.list | grep "^/etc/init.d/"`; do
  222. [ -n "${IPKG_INSTROOT}" ] && $(which bash) ${IPKG_INSTROOT}/etc/rc.common ${IPKG_INSTROOT}$i enable; \
  223. [ -n "${IPKG_INSTROOT}" ] || {
  224. $i enable
  225. $i start
  226. }
  227. done
  228. return 0
  229. }
  230.  
  231. include() {
  232. local file
  233.  
  234. for file in $(ls $1/*.sh 2>/dev/null); do
  235. . $file
  236. done
  237. }
  238.  
  239. find_mtd_index() {
  240. local PART="$(grep "\"$1\"" /proc/mtd | awk -F: '{print $1}')"
  241. local INDEX="${PART##mtd}"
  242.  
  243. echo ${INDEX}
  244. }
  245.  
  246. find_mtd_part() {
  247. local INDEX=$(find_mtd_index "$1")
  248. local PREFIX=/dev/mtdblock
  249.  
  250. [ -d /dev/mtdblock ] && PREFIX=/dev/mtdblock/
  251. echo "${INDEX:+$PREFIX$INDEX}"
  252. }
  253.  
  254. group_add() {
  255. local name="$1"
  256. local gid="$2"
  257. local rc
  258. [ -f "${IPKG_INSTROOT}/etc/group" ] || return 1
  259. [ -n "$IPKG_INSTROOT" ] || lock /var/lock/group
  260. echo "${name}:x:${gid}:" >> ${IPKG_INSTROOT}/etc/group
  261. rc=$?
  262. [ -n "$IPKG_INSTROOT" ] || lock -u /var/lock/group
  263. return $rc
  264. }
  265.  
  266. group_exists() {
  267. grep -qs "^${1}:" ${IPKG_INSTROOT}/etc/group
  268. }
  269.  
  270. group_add_next() {
  271. local gid gids
  272. gid=$(grep -s "^${1}:" ${IPKG_INSTROOT}/etc/group | cut -d: -f3)
  273. [ -n "$gid" ] && return $gid
  274. gids=$(cat ${IPKG_INSTROOT}/etc/group | cut -d: -f3)
  275. gid=100
  276. while [ -n "$(echo $gids | grep $gid)" ] ; do
  277. gid=$((gid + 1))
  278. done
  279. group_add $1 $gid
  280. return $gid
  281. }
  282.  
  283. group_add_user() {
  284. local grp delim=","
  285. grp=$(grep -s "^${1}:" ${IPKG_INSTROOT}/etc/group)
  286. [ -z "$(echo $grp | cut -d: -f4 | grep $2)" ] || return
  287. [ -n "$(echo $grp | grep ":$")" ] && delim=""
  288. [ -n "$IPKG_INSTROOT" ] || lock /var/lock/passwd
  289. sed -i "s/$grp/$grp$delim$2/g" ${IPKG_INSTROOT}/etc/group
  290. [ -n "$IPKG_INSTROOT" ] || lock -u /var/lock/passwd
  291. }
  292.  
  293. user_add() {
  294. local name="${1}"
  295. local uid="${2}"
  296. local gid="${3}"
  297. local desc="${4:-$1}"
  298. local home="${5:-/var/run/$1}"
  299. local shell="${6:-/bin/false}"
  300. local rc
  301. [ -z "$uid" ] && {
  302. uids=$(cat ${IPKG_INSTROOT}/etc/passwd | cut -d: -f3)
  303. uid=100
  304. while [ -n "$(echo $uids | grep $uid)" ] ; do
  305. uid=$((uid + 1))
  306. done
  307. }
  308. [ -z "$gid" ] && gid=$uid
  309. [ -f "${IPKG_INSTROOT}/etc/passwd" ] || return 1
  310. [ -n "$IPKG_INSTROOT" ] || lock /var/lock/passwd
  311. echo "${name}:x:${uid}:${gid}:${desc}:${home}:${shell}" >> ${IPKG_INSTROOT}/etc/passwd
  312. echo "${name}:x:0:0:99999:7:::" >> ${IPKG_INSTROOT}/etc/shadow
  313. rc=$?
  314. [ -n "$IPKG_INSTROOT" ] || lock -u /var/lock/passwd
  315. return $rc
  316. }
  317.  
  318. user_exists() {
  319. grep -qs "^${1}:" ${IPKG_INSTROOT}/etc/passwd
  320. }
  321.  
  322. [ -z "$IPKG_INSTROOT" -a -f /lib/config/uci.sh ] && . /lib/config/uci.sh
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement