FreeRADIUS InkBridge

Echo Module

The echo module an example of the exec module configured with a program configuration item set so it can be called as any other module, i.e.

echo

The sample program below is a trivial example and should be replaced with something more meaningful.

The return value of the program run determines the result of the exec instance call as follows:

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

disallow

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.

See doc/configurable_failover for details.

Configuration Settings

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.

The example program below has a few important features which should be noted:

  • The string for the program name uses triple quotes. These allow the text inside of the string to contain double-quote characters without needing to escape them. This doesn’t affect the output string, but it does make the configuration easier to read.

  • The argument to "/bin/echo" is a double-quoted string. That is, the attribute name, operator, and value are passed to "echo" as one argument. If the parameters to the "echo" command were not quoted, then they would be passed as three separate arguments.

  • The attribute value is surrounded by single quotes. These single quotes are inside of the single argument to the "echo" command.

  • If instead the "echo" command was passed three separate arguments, then the attribute value would be printed without the quotes. Because quoting an argument to a command results in the unquoted string being passed to the command, as the argument.

The summary of all of the above is that when printing attributes it’s usually easier to run one shell script with no arguments. That shell script can then print the attribute names, operators, and values.

Any string values should also be quoted.

Default Configuration

exec echo {
	wait = yes
	program = """/bin/echo "Filter-Id := '%{User-Name}'" """
	input_pairs = request
	output_pairs = reply
	shell_escape = yes
#	timeout = 10
}