Deleted Added
full compact
group.subr (262904) group.subr (263980)
1if [ ! "$_USERMGMT_GROUP_SUBR" ]; then _USERMGMT_GROUP_SUBR=1
2#
3# Copyright (c) 2012 Ron McDowell
4# Copyright (c) 2012-2014 Devin Teske
5# All rights reserved.
6#
7# Redistribution and use in source and binary forms, with or without
8# modification, are permitted provided that the following conditions

--- 11 unchanged lines hidden (view full) ---

20# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26# SUCH DAMAGE.
27#
1if [ ! "$_USERMGMT_GROUP_SUBR" ]; then _USERMGMT_GROUP_SUBR=1
2#
3# Copyright (c) 2012 Ron McDowell
4# Copyright (c) 2012-2014 Devin Teske
5# All rights reserved.
6#
7# Redistribution and use in source and binary forms, with or without
8# modification, are permitted provided that the following conditions

--- 11 unchanged lines hidden (view full) ---

20# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26# SUCH DAMAGE.
27#
28# $FreeBSD: head/usr.sbin/bsdconfig/usermgmt/share/group.subr 262904 2014-03-07 20:44:19Z dteske $
28# $FreeBSD: stable/10/usr.sbin/bsdconfig/usermgmt/share/group.subr 263980 2014-04-01 00:19:13Z dteske $
29#
30############################################################ INCLUDES
31
32BSDCFG_SHARE="/usr/share/bsdconfig"
33. $BSDCFG_SHARE/common.subr || exit 1
34f_dprintf "%s: loading includes..." usermgmt/group.subr
35f_include $BSDCFG_SHARE/dialog.subr
36f_include $BSDCFG_SHARE/usermgmt/group_input.subr

--- 54 unchanged lines hidden (view full) ---

91
92 local group_name="$input"
93 while f_interactive && [ ! "$group_name" ]; do
94 f_dialog_input_group_name group_name "$group_name" ||
95 return $SUCCESS
96 [ "$group_name" ] ||
97 f_show_err "$msg_please_enter_a_group_name"
98 done
29#
30############################################################ INCLUDES
31
32BSDCFG_SHARE="/usr/share/bsdconfig"
33. $BSDCFG_SHARE/common.subr || exit 1
34f_dprintf "%s: loading includes..." usermgmt/group.subr
35f_include $BSDCFG_SHARE/dialog.subr
36f_include $BSDCFG_SHARE/usermgmt/group_input.subr

--- 54 unchanged lines hidden (view full) ---

91
92 local group_name="$input"
93 while f_interactive && [ ! "$group_name" ]; do
94 f_dialog_input_group_name group_name "$group_name" ||
95 return $SUCCESS
96 [ "$group_name" ] ||
97 f_show_err "$msg_please_enter_a_group_name"
98 done
99 if [ ! "$group_name" ]; then
100 f_show_err "$msg_no_group_specified"
101 return $FAILURE
102 fi
99
100 local group_password group_gid group_members
101 f_getvar $VAR_GROUP_PASSWORD group_password
102 f_getvar $VAR_GROUP_GID group_gid
103 f_getvar $VAR_GROUP_MEMBERS group_members
104
105 local group_password_disable=
106 f_interactive || [ "$group_password" ] || group_password_disable=1

--- 40 unchanged lines hidden (view full) ---

147 f_dprintf "retval=%u mtag=[%s]" $retval "$mtag"
148 defaultitem="$mtag"
149
150 # Return if user either pressed ESC or chose Cancel/No
151 [ $retval -eq $DIALOG_OK ] || return $FAILURE
152
153 case "$mtag" in
154 X) # Add/Exit
103
104 local group_password group_gid group_members
105 f_getvar $VAR_GROUP_PASSWORD group_password
106 f_getvar $VAR_GROUP_GID group_gid
107 f_getvar $VAR_GROUP_MEMBERS group_members
108
109 local group_password_disable=
110 f_interactive || [ "$group_password" ] || group_password_disable=1

--- 40 unchanged lines hidden (view full) ---

151 f_dprintf "retval=%u mtag=[%s]" $retval "$mtag"
152 defaultitem="$mtag"
153
154 # Return if user either pressed ESC or chose Cancel/No
155 [ $retval -eq $DIALOG_OK ] || return $FAILURE
156
157 case "$mtag" in
158 X) # Add/Exit
155 local cmd="pw groupadd -n '$group_name'"
156 [ "$group_gid" ] && cmd="$cmd -g '$group_gid'"
159 local var
160 for var in gid members name; do
161 local _group_$var
162 eval f_shell_escape \
163 \"\$group_$var\" _group_$var
164 done
165
166 local cmd="pw groupadd -n '$_group_name'"
167 [ "$group_gid" ] && cmd="$cmd -g '$_group_gid'"
157 [ "$group_members" ] &&
168 [ "$group_members" ] &&
158 cmd="$cmd -M '$group_members'"
169 cmd="$cmd -M '$_group_members'"
159
160 # Execute the command (break on success)
161 if [ "$group_password_disable" ]; then
162 f_eval_catch $funcname pw '%s -h -' "$cmd"
163 elif [ "$group_password" ]; then
164 echo "$group_password" |
165 f_eval_catch $funcname \
170
171 # Execute the command (break on success)
172 if [ "$group_password_disable" ]; then
173 f_eval_catch $funcname pw '%s -h -' "$cmd"
174 elif [ "$group_password" ]; then
175 echo "$group_password" |
176 f_eval_catch $funcname \
166 pw '%s -h 0' "$cmd"
177 pw '%s -h 0' "$cmd"
167 else
168 f_eval_catch $funcname pw '%s' "$cmd"
169 fi && break
170 ;;
171 1) # Group Name (prompt for new group name)
172 f_dialog_input_group_name input "$group_name" ||
173 continue
174 if f_quietly pw groupshow -n "$input" -g -1; then

--- 12 unchanged lines hidden (view full) ---

187 ;;
188 4) # Group Members
189 f_dialog_input_group_members group_members \
190 "$group_members"
191 ;;
192 esac
193 done
194 else
178 else
179 f_eval_catch $funcname pw '%s' "$cmd"
180 fi && break
181 ;;
182 1) # Group Name (prompt for new group name)
183 f_dialog_input_group_name input "$group_name" ||
184 continue
185 if f_quietly pw groupshow -n "$input" -g -1; then

--- 12 unchanged lines hidden (view full) ---

198 ;;
199 4) # Group Members
200 f_dialog_input_group_members group_members \
201 "$group_members"
202 ;;
203 esac
204 done
205 else
206 local var
207 for var in gid members name; do
208 local _group_$var
209 eval f_shell_escape \"\$group_$var\" _group_$var
210 done
211
195 # Form the command
212 # Form the command
196 local cmd="pw groupadd -n '$group_name'"
197 [ "$group_gid" ] && cmd="$cmd -g '$group_gid'"
198 [ "$group_members" ] && cmd="$cmd -M '$group_members'"
213 local cmd="pw groupadd -n '$_group_name'"
214 [ "$group_gid" ] && cmd="$cmd -g '$_group_gid'"
215 [ "$group_members" ] && cmd="$cmd -M '$_group_members'"
199
200 # Execute the command
201 local retval err
202 if [ "$group_password_disable" ]; then
203 f_eval_catch -k err $funcname pw '%s -h -' "$cmd"
204 elif [ "$group_password" ]; then
216
217 # Execute the command
218 local retval err
219 if [ "$group_password_disable" ]; then
220 f_eval_catch -k err $funcname pw '%s -h -' "$cmd"
221 elif [ "$group_password" ]; then
205 echo "$group_password" | f_eval_catch -k err \
206 $funcname pw '%s -h 0' "$cmd"
222 err=$( echo "$group_password" | f_eval_catch -de \
223 $funcname pw '%s -h 0' "$cmd" 2>&1 )
207 else
208 f_eval_catch -k err $funcname pw '%s' "$cmd"
209 fi
210 retval=$?
211 if [ $retval -ne $SUCCESS ]; then
212 f_show_err "%s" "$err"
213 return $retval
214 fi
215 fi
216
217 f_dialog_title "$title"
218 $alert "$msg_group_added"
219 f_dialog_title_restore
224 else
225 f_eval_catch -k err $funcname pw '%s' "$cmd"
226 fi
227 retval=$?
228 if [ $retval -ne $SUCCESS ]; then
229 f_show_err "%s" "$err"
230 return $retval
231 fi
232 fi
233
234 f_dialog_title "$title"
235 $alert "$msg_group_added"
236 f_dialog_title_restore
220 [ "$no_confirm" -a "$USE_DIALOG" ] && sleep 2
237 [ "$no_confirm" -a "$USE_DIALOG" ] && sleep 1
221
222 return $SUCCESS
223}
224
225# f_group_delete [$group]
226#
227# Delete a group. If both $group (as a first argument) and $VAR_GROUP are unset
228# or NULL and we are running interactively, prompt the user to select a group

--- 38 unchanged lines hidden (view full) ---

267 f_dprintf "retval=%u mtag=[%s]" $retval "$mtag"
268 defaultitem="$mtag"
269
270 # Return if user either pressed ESC or chose Cancel/No
271 [ $retval -eq $DIALOG_OK ] || return $FAILURE
272
273 case "$mtag" in
274 X) # Delete/Exit
238
239 return $SUCCESS
240}
241
242# f_group_delete [$group]
243#
244# Delete a group. If both $group (as a first argument) and $VAR_GROUP are unset
245# or NULL and we are running interactively, prompt the user to select a group

--- 38 unchanged lines hidden (view full) ---

284 f_dprintf "retval=%u mtag=[%s]" $retval "$mtag"
285 defaultitem="$mtag"
286
287 # Return if user either pressed ESC or chose Cancel/No
288 [ $retval -eq $DIALOG_OK ] || return $FAILURE
289
290 case "$mtag" in
291 X) # Delete/Exit
292 local _group_name
293 f_shell_escape "$group_name" _group_name
275 f_eval_catch $funcname pw 'pw groupdel "%s"' \
294 f_eval_catch $funcname pw 'pw groupdel "%s"' \
276 "$group_name" && break
295 "$_group_name" && break
277 ;;
278 1) # Group Name (select different group from list)
279 f_dialog_menu_group_list "$group_name" || continue
280 f_dialog_menutag_fetch mtag
281
282 [ "$mtag" = "X $msg_exit" ] && continue
283
284 if ! f_input_group "$mtag"; then
285 f_show_err "$msg_group_not_found" "$mtag"
286 # Attempt to fall back to previous selection
287 f_input_group "$input" || return $FAILURE
288 else
289 input="$mtag"
290 fi
291 ;;
292 esac
293 done
294 else
296 ;;
297 1) # Group Name (select different group from list)
298 f_dialog_menu_group_list "$group_name" || continue
299 f_dialog_menutag_fetch mtag
300
301 [ "$mtag" = "X $msg_exit" ] && continue
302
303 if ! f_input_group "$mtag"; then
304 f_show_err "$msg_group_not_found" "$mtag"
305 # Attempt to fall back to previous selection
306 f_input_group "$input" || return $FAILURE
307 else
308 input="$mtag"
309 fi
310 ;;
311 esac
312 done
313 else
295 local retval err
314 local retval err _group_name
315 f_shell_escape "$group_name" _group_name
296 f_eval_catch -k err $funcname pw \
316 f_eval_catch -k err $funcname pw \
297 'pw groupdel "%s"' "$group_name"
317 "pw groupdel '%s'" "$_group_name"
298 retval=$?
299 if [ $retval -ne $SUCCESS ]; then
300 f_show_err "%s" "$err"
301 return $retval
302 fi
303 fi
304
305 f_dialog_title "$title"
306 $alert "$msg_group_deleted"
307 f_dialog_title_restore
318 retval=$?
319 if [ $retval -ne $SUCCESS ]; then
320 f_show_err "%s" "$err"
321 return $retval
322 fi
323 fi
324
325 f_dialog_title "$title"
326 $alert "$msg_group_deleted"
327 f_dialog_title_restore
308 [ "$no_confirm" -a "$USE_DIALOG" ] && sleep 2
328 [ "$no_confirm" -a "$USE_DIALOG" ] && sleep 1
309
310 return $SUCCESS
311}
312
313# f_group_edit [$group]
314#
315# Modify a group. If both $group (as a first argument) and $VAR_GROUP are unset
316# or NULL and we are running interactively, prompt the user to select a group
317# from a list of available groups. Variables that can be used to script user
318# input:
319#
320# VAR_GROUP [Optional if running interactively]
321# The group to modify. Ignored if given non-NULL first-argument.
322# VAR_GROUP_GID [Optional]
323# Numerical group ID to set. If NULL or unset, the group ID is
324# unchanged.
325# VAR_GROUP_MEMBERS [Optional]
326# Comma separated list of users that are a member of this group.
329
330 return $SUCCESS
331}
332
333# f_group_edit [$group]
334#
335# Modify a group. If both $group (as a first argument) and $VAR_GROUP are unset
336# or NULL and we are running interactively, prompt the user to select a group
337# from a list of available groups. Variables that can be used to script user
338# input:
339#
340# VAR_GROUP [Optional if running interactively]
341# The group to modify. Ignored if given non-NULL first-argument.
342# VAR_GROUP_GID [Optional]
343# Numerical group ID to set. If NULL or unset, the group ID is
344# unchanged.
345# VAR_GROUP_MEMBERS [Optional]
346# Comma separated list of users that are a member of this group.
327# If NULL or unset, group membership is unmodified.
347# If set but NULL, group memberships are reset (no users will be
348# a member of this group). If unset, group membership is
349# unmodified.
328# VAR_GROUP_PASSWORD [Optional]
329# newgrp(1) password to set for the group. If unset, the password
330# is unmodified. If NULL, the newgrp(1) password is disabled.
331#
332# Returns success if the group was successfully modified.
333#
334f_group_edit()
335{

--- 59 unchanged lines hidden (view full) ---

395 f_dprintf "retval=%u mtag=[%s]" $retval "$mtag"
396 defaultitem="$mtag"
397
398 # Return if user either pressed ESC or chose Cancel/No
399 [ $retval -eq $DIALOG_OK ] || return $FAILURE
400
401 case "$mtag" in
402 X) # Save/Exit
350# VAR_GROUP_PASSWORD [Optional]
351# newgrp(1) password to set for the group. If unset, the password
352# is unmodified. If NULL, the newgrp(1) password is disabled.
353#
354# Returns success if the group was successfully modified.
355#
356f_group_edit()
357{

--- 59 unchanged lines hidden (view full) ---

417 f_dprintf "retval=%u mtag=[%s]" $retval "$mtag"
418 defaultitem="$mtag"
419
420 # Return if user either pressed ESC or chose Cancel/No
421 [ $retval -eq $DIALOG_OK ] || return $FAILURE
422
423 case "$mtag" in
424 X) # Save/Exit
403 local cmd="pw groupmod -n '$group_name'"
404 [ "$group_gid" ] && cmd="$cmd -g '$group_gid'"
425 local var
426 for var in gid members name; do
427 local _group_$var
428 eval f_shell_escape \
429 \"\$group_$var\" _group_$var
430 done
431
432 local cmd="pw groupmod -n '$_group_name'"
433 [ "$group_gid" ] && cmd="$cmd -g '$_group_gid'"
405 [ "$group_members" -o "$null_members" ] &&
434 [ "$group_members" -o "$null_members" ] &&
406 cmd="$cmd -M '$group_members'"
435 cmd="$cmd -M '$_group_members'"
407
408 # Execute the command (break on success)
409 if [ "$group_password_disable" ]; then
410 f_eval_catch $funcname pw '%s -h -' "$cmd"
411 elif [ "$group_password" ]; then
436
437 # Execute the command (break on success)
438 if [ "$group_password_disable" ]; then
439 f_eval_catch $funcname pw '%s -h -' "$cmd"
440 elif [ "$group_password" ]; then
412 echo "$group_password" |
413 f_eval_catch $funcname \
414 pw '%s -h 0' "$cmd"
441 echo "$group_password" | f_eval_catch \
442 $funcname pw '%s -h 0' "$cmd"
415 else
416 f_eval_catch $funcname pw '%s' "$cmd"
417 fi && break
418 ;;
419 1) # Group Name (select different group from list)
420 f_dialog_menu_group_list "$group_name" || continue
421 f_dialog_menutag_fetch mtag
422
423 [ "$mtag" = "X $msg_exit" ] && continue
424
425 if ! f_input_group "$mtag"; then
426 f_show_err "$msg_group_not_found" "$mtag"
443 else
444 f_eval_catch $funcname pw '%s' "$cmd"
445 fi && break
446 ;;
447 1) # Group Name (select different group from list)
448 f_dialog_menu_group_list "$group_name" || continue
449 f_dialog_menutag_fetch mtag
450
451 [ "$mtag" = "X $msg_exit" ] && continue
452
453 if ! f_input_group "$mtag"; then
454 f_show_err "$msg_group_not_found" "$mtag"
427 # Attempt to fall back to prevoius selection
455 # Attempt to fall back to previous selection
428 f_input_group "$input" || return $FAILURE
429 else
430 input="$mtag"
431 fi
432 title="$msg_edit_view $msg_group: $group_name"
433 ;;
434 2) # Password
435 f_dialog_input_group_password group_password \

--- 5 unchanged lines hidden (view full) ---

441 4) # Group Members
442 f_dialog_input_group_members group_members \
443 "$group_members" && [ ! "$group_members" ] &&
444 null_members=1
445 ;;
446 esac
447 done
448 else
456 f_input_group "$input" || return $FAILURE
457 else
458 input="$mtag"
459 fi
460 title="$msg_edit_view $msg_group: $group_name"
461 ;;
462 2) # Password
463 f_dialog_input_group_password group_password \

--- 5 unchanged lines hidden (view full) ---

469 4) # Group Members
470 f_dialog_input_group_members group_members \
471 "$group_members" && [ ! "$group_members" ] &&
472 null_members=1
473 ;;
474 esac
475 done
476 else
477 local var
478 for var in gid members name; do
479 local _group_$var
480 eval f_shell_escape \"\$group_$var\" _group_$var
481 done
482
449 # Form the command
483 # Form the command
450 local cmd="pw groupmod -n '$group_name'"
451 [ "$group_gid" ] && cmd="$cmd -g '$group_gid'"
484 local cmd="pw groupmod -n '$_group_name'"
485 [ "$group_gid" ] && cmd="$cmd -g '$_group_gid'"
452 [ "$group_members" -o "$null_members" ] &&
486 [ "$group_members" -o "$null_members" ] &&
453 cmd="$cmd -M '$group_members'"
487 cmd="$cmd -M '$_group_members'"
454
455 # Execute the command
456 local retval err
457 if [ "$group_password_disable" ]; then
458 f_eval_catch -k err $funcname pw '%s -h -' "$cmd"
459 elif [ "$group_password" -o "$null_password" ]; then
488
489 # Execute the command
490 local retval err
491 if [ "$group_password_disable" ]; then
492 f_eval_catch -k err $funcname pw '%s -h -' "$cmd"
493 elif [ "$group_password" -o "$null_password" ]; then
460 echo "$group_password" | f_eval_catch -k err \
461 $funcname pw '%s -h 0' "$cmd"
494 err=$( echo "$group_password" | f_eval_catch -de \
495 $funcname pw '%s -h 0' "$cmd" 2>&1 )
462 else
463 f_eval_catch -k err $funcname pw '%s' "$cmd"
464 fi
465 retval=$?
466 if [ $retval -ne $SUCCESS ]; then
467 f_show_err "%s" "$err"
468 return $retval
469 fi
470 fi
471
472 f_dialog_title "$title"
473 $alert "$msg_group_updated"
474 f_dialog_title_restore
496 else
497 f_eval_catch -k err $funcname pw '%s' "$cmd"
498 fi
499 retval=$?
500 if [ $retval -ne $SUCCESS ]; then
501 f_show_err "%s" "$err"
502 return $retval
503 fi
504 fi
505
506 f_dialog_title "$title"
507 $alert "$msg_group_updated"
508 f_dialog_title_restore
475 [ "$no_confirm" -a "$USE_DIALOG" ] && sleep 2
509 [ "$no_confirm" -a "$USE_DIALOG" ] && sleep 1
476
477 return $SUCCESS
478}
479
480############################################################ MAIN
481
482f_dprintf "%s: Successfully loaded." usermgmt/group.subr
483
484fi # ! $_USERMGMT_GROUP_SUBR
510
511 return $SUCCESS
512}
513
514############################################################ MAIN
515
516f_dprintf "%s: Successfully loaded." usermgmt/group.subr
517
518fi # ! $_USERMGMT_GROUP_SUBR