ns_conn - Find information about the current HTTP connection
This command is used to retrieve various pieces of information about a connection.
The subcommands of ns_conn are (in alphabetical order):
Returns the compression formats accepted by the client.
Returns the local IP address of the current connection.
Returns all authorization headers as a ns_set. For Basic authentication there are reserved keys: Username and Password, these are the keys returned by ns_conn authuser and ns_conn authpassword. This ns_set can be updated.
Returns the decoded user password from the authorization data.
Returns the decoded user name from the authorization data.
Returns the Tcl channel name for the current connection.
Query or set the client date of the current connection. The client data is provided by the application and is potentially passed to different threads and can be used to establish the context with the connection thread. For example, the writer thread outputs the client data when listing running connections (one can determine e.g. which user has initiated the delivery, etc.).
Closes the connection so the script (or ADP) can do any time-consuming processing without making the client wait. If you use ns_conn close in an ADP, streaming should be turned on before closing the connection (i.e. <SCRIPT RUNAT=SERVER STREAM=ON>) or nothing will get sent out at all.
Either set or query the compression level for the current connection. Use ns_conn compress 0 to indicate that compression should be deactivated
Returns the content of the HTTP request body, optionally a substring of that content starting at offset and extending length characters. If the option -binary is used, the content is returned raw. Otherwise, a conversion to the encoding of the connection is performed. Note that the client response might be returned as string content (as retrieved by this command) or as file (see ns_conn contentfile ).
Returns name of the temporary file which holds contents of the request. Whether of not a content files is returned depends on the configuration settings.
Returns the number of bytes in the content passed in.
Returns or sets the number of bytes in the content to be sent.
Copies number of bytes from the current connection starting at the given offset to a Tcl channel.
Returns the name of the module (nssock or nsssl) that is acting as the communications driver for this connection.
Query or set the encoding for the current connection.
Return the ns_set with header information for the uploaded file with the specified name (returned via [ns_conn files]). If the file was uploaded with the HTML5 multiple attribute a list of ns_sets is returned.
Return the length of the uploaded file with the specified name (returned via [ns_conn files]). If the file was uploaded with the HTML5 multiple attribute a list of file lengths is returned.
Return the offset of the uploaded file with the specified name (returned via [ns_conn files]). If the file was uploaded with the HTML5 multiple attribute a list of offsets is returned.
Return files uploaded with the current form.
Return the internal flags of the current connection. Use with care, the flags might change over versions.
Returns any submitted form data as an ns_set. This form data may have been submitted with a POST or appended to the URL in a GET request.
Note: ns_conn form is not suitable for multipart formdata file upload widgets. Use ns_getform instead.
Returns all the header data as an ns_set. The keys of the ns_set represent the field names. The case of the returned field names depends on the HeaderCase configuration parameter. By default, HeaderCase is "Preserve", which means case is preserved.
Returns the host part of the URL in the HTTP request line. This is only set, when the NaviServer is used as a proxy server.
Returns the unique identifier of the current connection.
Returns 1 if you're in a connection thread, and you are therefore allowed to make calls to ns_conn. It returns 0 if you're not in a connection thread (such as when you're in a schedule procedure) and you are not allowed to make calls to ns_conn.
Query or set the keepalive for the current connection.
Returns the location string for this virtual server in the form: protocol://hostname[:port].
Returns the HTTP method, e.g. GET.
Returns an ns_set containing the headers that will be sent out when a result is returned to the client. This ns_set can be manipulated like any other ns_set. You can also use this command to write to the set of output headers. For example: ns_set put [ns_conn outputheaders] key value.
Returns the IP address of the client, i.e. the "other side" of the HTTP connection. The IP address is returned in the form of a string separated with periods (e.g., 155.164.59.75).
Returns the port of the client, i.e. the "other side" of the HTTP connection.
Returns the current connection pool from the currently connected server.
Returns the port specified explicitly in the URL of the HTTP request. If the browser does not explicitly send the ":port" part of the URL, the port number returned will be 0.
Returns the protocol of the URL in the HTTP request line. This is only set, when the NaviServer is used as a proxy server.
Returns any query data that was part of the HTTP request.
Returns detailed timing information about the current requests. The result is a dict containing the keys "accepttime" (the time between the accept of a socket and its adding to the queue; not always easy to interpret), "queuetime" (time in the queue), "filtertime" (time spent during running of filters) and "runtime" (time spent so far during the main request).
Query or set rate limit for the current connection. The value is provided in KB/s (kilobytes per second). A value of 0 means unlimited. Default values can be provided per connection pool (parameter ratelimit) or on the driver level (parameter writerratelimit). The limit is only enforced on connections using writer threads.
Returns the HTTP request line as presented by the client, e.g. GET / HTTP/1.1.
Returns the name of the server handling the request.
Returns the socket id (integer fd) of current connection.
Returns the time the connection request started in "sec:usec" (a.k.a. ns_time) format.
Query or set the HTTP status code for the current connection.
Returns absolute time value beyond which conn should not wait on resources, such as condition variables.
Returns the URL of the HTTP request. This is the portion of the request after the hostname, for example [ns_conn url] on returns /index.adp.
Returns the number of elements (delimited by `/') in the URL of the HTTP request.
Query or set the url encoding for the current connection.
Returns a list containing the pieces of the URL delimited by `/'. When idx is provided, return the nth element of the URL vector.
Returns the version of the HTTP request. This is usually 1.0 or 1.1.
Returns 0 or 1 depending on whether or not the client accepts a zip encoded response.
if { [string match /page/* [ns_conn url]] } { ns_returnnotfound }