# -*- text -*-
#
+# :toc:
+#
# $Id$
+#######################################################################
+#
+# ## Echo Module
+#
+# The `echo` module is used for execute an external program in more than
+# one section (e.g. `recv`, `pre_proxy`, etc), then it is probably best
+# to define a different instance of the `exec` module for every section.
+#
+# NOTE: This is a more general example of the execute module.
#
-# This is a more general example of the execute module.
+# Attribute-Name = `%{echo:/path/to/program args}`
#
-# This one is called "echo".
+# The return value of the program run determines the result of the exec
+# instance call as follows:
#
-# Attribute-Name = `%{echo:/path/to/program args}`
+# [options="header,autowidth"]
+# |===
+# | Code | Return | Description
+# | < 0 | fail | the module failed.
+# | = 0 | ok | the module succeeded.
+# | = 1 | reject | the module rejected the user.
+# | = 2 | fail | the module failed.
+# | = 3 | ok | the module succeeded.
+# | = 4 | handled | the module has done everything to handle the request.
+# | = 5 | invalid | the user's configuration entry was invalid.
+# | = 6 | userlock | the user was locked out.
+# | = 7 | notfound | the user was not found.
+# | = 8 | noop | the module did nothing.
+# | = 9 | updated | the module updated information in the request.
+# | > 9 | fail | the module failed.
+# |===
#
-# If you wish to execute an external program in more than
-# one section (e.g. 'authorize', 'pre_proxy', etc), then it
-# is probably best to define a different instance of the
-# 'exec' module for every section.
+# NOTE: See `doc/configurable_failover` for details.
#
-# The return value of the program run determines the result
-# of the exec instance call as follows:
-# (See doc/configurable_failover for details)
+
#
-# < 0 : fail the module failed
-# = 0 : ok the module succeeded
-# = 1 : reject the module rejected the user
-# = 2 : fail the module failed
-# = 3 : ok the module succeeded
-# = 4 : handled the module has done everything to handle the request
-# = 5 : invalid the user's configuration entry was invalid
-# = 6 : userlock the user was locked out
-# = 7 : notfound the user was not found
-# = 8 : noop the module did nothing
-# = 9 : updated the module updated information in the request
-# > 9 : fail the module failed
+# ## Default instance
#
exec echo {
#
- # Wait for the program to finish.
+ # wait:: Wait for the program to finish.
#
# If we do NOT wait, then the program is "fire and
# forget", and any output attributes from it are ignored.
# request, then we MUST wait for the program to
# finish, and therefore set 'wait=yes'
#
- # allowed values: {no, yes}
wait = yes
#
- # The name of the program to execute, and it's
- # arguments. Dynamic translation is done on this
- # field, so things like the following example will
- # work.
+ # program:: The name of the program to execute, and it's
+ # arguments.
+ #
+ # Dynamic translation is done on this field, so things like
+ # the following example will work.
#
program = "/bin/echo %{User-Name}"
#
- # The attributes which are placed into the
+ # input_pairs:: The attributes which are placed into the
# environment variables for the program.
#
# Allowed values are:
#
- # request attributes from the request
- # config attributes from the configuration items list
- # reply attributes from the reply
- # proxy-request attributes from the proxy request
- # proxy-reply attributes from the proxy reply
+ # [options="header,autowidth"]
+ # |===
+ # | Pairs | Description
+ # | request | attributes from the request
+ # | config | attributes from the configuration items list
+ # | reply | attributes from the reply
+ # | proxy-request | attributes from the proxy request
+ # | proxy-reply | attributes from the proxy reply
+ # |===
#
- # Note that some attributes may not exist at some
- # stages. e.g. There may be no proxy-reply
- # attributes if this module is used in the
- # 'authorize' section.
+ # NOTE: Some attributes may not exist at some stages.
+ # e.g. There may be no proxy-reply attributes if this module is used
+ # in the `recv` section.
#
input_pairs = request
#
- # Where to place the output attributes (if any) from
- # the executed program. The values allowed, and the
- # restrictions as to availability, are the same as
- # for the input_pairs.
+ # output_pairs::: Where to place the output attributes (if any) from
+ # the executed program.
+ #
+ # The values allowed, and the restrictions as to availability, are the
+ # same as for the `input_pairs`.
#
output_pairs = reply
#
- # Should we escape the environment variables?
+ # shell_escape:: Escape the environment variables.
+ #
+ # If this is set, all the RADIUS attributes are capitalised and dashes
+ # replaced with underscores. Also, RADIUS values are surrounded with
+ # double-quotes.
#
- # If this is set, all the RADIUS attributes
- # are capitalised and dashes replaced with
- # underscores. Also, RADIUS values are surrounded
- # with double-quotes.
+ # That is to say:
+ #
+ # User-Name=BobUser => USER_NAME="BobUser"
#
- # That is to say: User-Name=BobUser => USER_NAME="BobUser"
shell_escape = yes
#
- # How long should we wait for the program to finish?
+ # timeout:: Set a time wait for the program to finish.
#
- # Default is 10 seconds, which should be plenty for nearly
- # anything. Range is 1 to 30 seconds. You are strongly
- # encouraged to NOT increase this value. Decreasing can
- # be used to cause authentication to fail sooner when you
- # know it's going to fail anyway due to the time taken,
+ # Default is `10` seconds, which should be plenty for nearly
+ # anything. Range is `1` to `30` seconds.
+ #
+ # WARNING: You are strongly encouraged to NOT increase this value.
+ # Decreasing can be used to cause authentication to fail sooner
+ # when you know it's going to fail anyway due to the time taken,
# thereby saving resources.
#
- #timeout = 10
-
+# timeout = 10
}