Make kickstart.user.exec work on clients using module
The kickstart.user.exec function was using the `kickstart infect`
command, which works on clients with kickstart installed (which is the
    case for `kickstart infect`ed terminals or baseline).
This change will lookup for the client existance and use it, or use the
compiled module.
			
			
This commit is contained in:
		@@ -18,15 +18,32 @@ kickstart.user.remove_group() {
 | 
			
		||||
    usermod -G `kickstart.print_with_separator , ${groups[*]}` $1
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
kickstart.user.exec.command.module() {
 | 
			
		||||
  local cur_dir=`pwd`
 | 
			
		||||
  cat <<COMMAND
 | 
			
		||||
  cd modules/kickstart
 | 
			
		||||
  source install.sh
 | 
			
		||||
  cd $cur_dir
 | 
			
		||||
  $@
 | 
			
		||||
COMMAND
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
kickstart.user.exec.command.infect() {
 | 
			
		||||
  cat <<COMMAND
 | 
			
		||||
  eval "$(kickstart infect)"
 | 
			
		||||
  $@
 | 
			
		||||
COMMAND
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
kickstart.user.exec() {
 | 
			
		||||
  local user=$1
 | 
			
		||||
  shift
 | 
			
		||||
 | 
			
		||||
  local command=$(cat <<COMMAND
 | 
			
		||||
  eval "$(kickstart infect)"
 | 
			
		||||
  $@
 | 
			
		||||
COMMAND
 | 
			
		||||
)
 | 
			
		||||
  kickstart.info "Running \"$@\" as $user"
 | 
			
		||||
  local command=''
 | 
			
		||||
  kickstart.command_exists kickstart && \
 | 
			
		||||
    command=`kickstart.user.exec.command.infect "$@"` || \
 | 
			
		||||
    command=`kickstart.user.exec.command.module "$@"`
 | 
			
		||||
 | 
			
		||||
  kickstart.info Running \'"$@"\' as $user
 | 
			
		||||
  su $user - bash -c "$command"
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user