The communication between Tectia Server and an external application (from now on referred to as "application") proceeds as follows (also depicted in Figure E.1):
Tectia Server waits for the parameter
versionfrom the application. The parameter indicates the highest protocol number the application understands. Currently, the only supported version is 1.
Tectia Server sends
version, indicating the highest protocol number Tectia Server understands. The application may ignore this.
Tectia Server sends one or more requests. Each request is started by sending
idis the request identifier. It is unique for any ongoing requests the application has not yet completed. (The application later sends the request ID back to Tectia Server, see step 4).
Next, Tectia Server sends zero or more data entries of the form
<key>=<data>. For a list of the data entries sent by Tectia Server when matching local tunnel constraints with external data, see tunnel-local or Local Tunnels in Tectia Server Configuration tool.)
The request is terminated by
idis the same as in the start of the request.
After sending the request(s), Tectia Server waits for the response(s) from the application. If Tectia Server has sent more than one request, the responses may come in any order. Each response starts with
idand is followed by zero or more data entries of the form
<key>=<data>, containing information the application needs to send to Tectia Server.
The application ends each response with the parameter "
success:" or "
failure:". This parameter may contain additional information in the data field, for example
"success: Access was allowed".
Once Tectia Server has received all the responses from the application, it waits for the application to exit. Tectia Server collects the application's exit status and reports an error if the status is not 0.
Note If the application hangs, Tectia Server will not kill it.