#!/bin/sh -ef

alterator_api_version=1
po_domain="alterator-sysconfig"
proxy_conf_file=/etc/sysconfig/network

. alterator-sh-functions
. shell-config

on_message()
{
    case "$in_action" in
	type)
	    write_type_item server hostname-or-ip
	    write_type_item port tcp-port
	    ;;
	read)
	    local url="$(shell_config_get "$proxy_conf_file" HTTP_PROXY)"

	    url="${url##http://}"

	    local auth="${url%%@*}"
	    [ "$auth" != "$url" ] || auth=""
	    url="${url##*@}"
	    local passwd="$(decode-url-component "${auth##*:}")"
	    local login="$(decode-url-component "${auth%%:*}")"

	    port="${url##*:}"
	    [ "$port" != "$url" ] || port=""
	    url="$(decode-url-component ${url%%:*})"

	    write_string_param server "$url"
	    write_string_param port "$port"
	    write_string_param login "$login"
	    write_string_param passwd "$passwd"
	    ;;
	write)
	    if [ -n "$in_server" ]; then
		local url="$in_server"
		[ -z "$in_login" -o -z "$in_passwd" ] ||
		    url="$(encode-url-component "$in_login"):$(encode-url-component "$in_passwd")@$url"
		[ -z "$in_port" ] ||
		    url="$url:$in_port"

		shell_config_set "$proxy_conf_file" HTTP_PROXY "http://$url"
		shell_config_set "$proxy_conf_file" HTTPS_PROXY "http://$url"
		shell_config_set "$proxy_conf_file" FTP_PROXY "http://$url"
	    else
		shell_config_set "$proxy_conf_file" HTTP_PROXY ""
		shell_config_set "$proxy_conf_file" HTTPS_PROXY ""
		shell_config_set "$proxy_conf_file" FTP_PROXY ""
	    fi
	    ;;
    esac
}

message_loop
