#!/bin/sh # Copyright (C) 2012 Luka Perkov # Copyright (C) 2013 Inteno Broadband Technology AB # Author Ahmed Zribi get_device_users() { local parameter="$1" case "$parameter" in Device.Users.UserNumberOfEntries) local val=`wc -l /etc/passwd | awk '{ print $1 }'` freecwmp_value_output "$parameter" "$val" return ;; esac local rc local num # TODO: Device.Users.User.{i}.Alias (alias support does not exist) freecwmp_parse_formated_parameter "$parameter" "Device.Users.User.{i}.Enable" "rc" "num" if [ $rc -eq 0 ]; then # TODO: this is very system dependent, for now just look at users shell local sed_cmd=`echo -n \'$num; echo p\'` local val=`eval sed -n $sed_cmd /etc/passwd | grep -v '/bin/false' | wc -l` freecwmp_value_output "$parameter" "$val" return fi freecwmp_parse_formated_parameter "$parameter" "Device.Users.User.{i}.RemoteAccessCapable" "rc" "num" if [ $rc -eq 0 ]; then # TODO: this is very system dependent, for now just look at users shell local sed_cmd=`echo -n \'$num; echo p\'` local val=`eval sed -n $sed_cmd /etc/passwd | grep -v '/bin/false' | wc -l` freecwmp_value_output "$parameter" "$val" return fi freecwmp_parse_formated_parameter "$parameter" "Device.Users.User.{i}.Username" "rc" "num" if [ $rc -eq 0 ]; then local sed_cmd=`echo -n \'$num; echo p\'` local val=`eval sed -n $sed_cmd /etc/passwd | awk -F ':' '{ print $1 }'` freecwmp_value_output "$parameter" "$val" return fi freecwmp_parse_formated_parameter "$parameter" "Device.Users.User.{i}.Password" "rc" "num" if [ $rc -eq 0 ]; then # if we *really* wanted to get the password we could do it like this # local sed_cmd=`echo -n \'$num; echo p\'` # local val=`eval sed -n $sed_cmd /etc/shadow | awk -F ':' '{ print $2 }'` # freecwmp_value_output "$parameter" "$val" freecwmp_value_output "$parameter" "" return fi freecwmp_parse_formated_parameter "$parameter" "Device.Users.User.{i}.Language" "rc" "num" if [ $rc -eq 0 ]; then freecwmp_value_output "$parameter" "" return fi return $FAULT_CPE_INVALID_PARAMETER_NAME } set_device_users() { local parameter="$1" local value="$2" local rc local num # TODO: Device.Users.User.{i}.Alias (alias support does not exist) freecwmp_parse_formated_parameter "$parameter" "Device.Users.User.{i}.Enable" "rc" "num" if [ $rc -eq 0 ]; then # TODO: this is very system dependent, for now just look at users shell local val if [ "$value" = "1" ]; then val="/bin/ash" else val="/bin/false" fi local sed_cmd sed_cmd=`echo -n \'$num; echo p\'` local orig=`eval sed -n $sed_cmd /etc/passwd | awk -F ':' '{ print $7 }'` sed_cmd=`echo -n \'$num; echo s%:$orig%:$val%\'` eval sed -i $sed_cmd /etc/passwd return fi freecwmp_parse_formated_parameter "$parameter" "Device.Users.User.{i}.RemoteAccessCapable" "rc" "num" if [ $rc -eq 0 ]; then # TODO: this is very system dependent, for now just look at users shell local val if [ "$value" = "1" ]; then val="/bin/ash" else val="/bin/false" fi local sed_cmd sed_cmd=`echo -n \'$num; echo p\'` local orig=`eval sed -n $sed_cmd /etc/passwd | awk -F ':' '{ print $7 }'` sed_cmd=`echo -n \'$num; echo s%:$orig%:$val%\'` eval sed -i $sed_cmd /etc/passwd return fi freecwmp_parse_formated_parameter "$parameter" "Device.Users.User.{i}.Username" "rc" "num" if [ $rc -eq 0 ]; then local sed_cmd sed_cmd=`echo -n \'$num; echo p\'` local orig=`eval sed -n $sed_cmd /etc/passwd | awk -F ':' '{ print $1 }'` sed_cmd=`echo -n \'$num; echo s%$orig:%$value:%\'` eval sed -i $sed_cmd /etc/passwd return fi freecwmp_parse_formated_parameter "$parameter" "Device.Users.User.{i}.Password" "rc" "num" if [ $rc -eq 0 ]; then local sed_cmd sed_cmd=`echo -n \'$num; echo p\'` local orig=`eval sed -n $sed_cmd /etc/shadow | awk -F ':' '{ print $2 }'` sed_cmd=`echo -n \'$num; echo s%:$orig:%:$value:%\'` eval sed -i $sed_cmd /etc/shadow return fi # TODO: Device.Users.User.{i}.Language (why? look at the get value function for this parameter) } get_device_users_name() { return $FAULT_CPE_INVALID_PARAMETER_NAME; } get_device_users_notification() { return $FAULT_CPE_INVALID_PARAMETER_NAME; } set_device_users() { return $FAULT_CPE_INVALID_PARAMETER_NAME; } set_device_users_notification() { return $FAULT_CPE_INVALID_PARAMETER_NAME; } add_device_users() { return $FAULT_CPE_INVALID_PARAMETER_NAME; } delete_device_users() { return $FAULT_CPE_INVALID_PARAMETER_NAME; }