#!/bin/sh

alterator_api_version=1
. alterator-sh-functions

#turn off auto expansion
set -f

list_profiles()
{
    /usr/sbin/gpupdate-setup list
}

write_predefine_profile_names()
{
    while read profile; do
        case "$profile" in
            workstation) echo "$profile" "`_ "Workstation"`" ;;
            server) echo "$profile" "`_ "Server"`" ;;
            ad-domain-controller) echo "$profile" "`_ "Active Directory Domain Controller"`" ;;
            *) echo "$profile" "`_ "User profile: "`" "$profile" ;;
        esac
    done
}

profile_name()
{
    echo "$1" | write_predefine_profile_names | sed "s/^$1 //g"
}

on_message()
{
    case "$in_action" in
        list)
            case "$in__objects" in
                profiles)
                    list_profiles | write_predefine_profile_names | write_enum ;;
                *)            on_list ;;
            esac
            ;;
        read)
            policy_status="$(/usr/sbin/gpupdate-setup status)"
            active_policy="$(/usr/sbin/gpupdate-setup active-policy)"

            gp_status="$(echo ${policy_status} | sed 's/enabled/true/')"
            gp_type="${active_policy##*/}"

            write_bool_param "gp_status" "$gp_status"
            write_string_param "gp_type" "$gp_type"
            write_string_param "gp_profile_name" "$(profile_name $gp_type)"
            ;;
        write)
            [ "$in_gp_status" = "#f" ] && gp_status="disable"
            [ "$in_gp_status" = "#t" ] && gp_status="enable"
            if output=`/usr/sbin/gpupdate-setup write "$gp_status" "$in_gp_type" 2>&1`; then
                echo $output
            else
                write_error "`_ "Cannot enable group policy:"` $output"
            fi
            ;;
        esac
}

message_loop
