Address connection filter

This filter allows you to accept or reject connections based on the client's IP address.

Parameter: Addresses allowed

Optional. A space-separated list of Java regular expressions for IP addresses that are allowed to connect.

Keep in mind that in Java regular expressions, a dot means any character, so if you mean to specify a dot, it must be escaped with a backslash.

If this is specified, and the client address does not match any of the regular expressions, the connection will be rejected.

Examples:

127\.0\.0\.1 133\.24\..* either 127.0.0.1 or any IP4 address that starts with 133.24.

750f:17a0:6770:6930:15c:[0-9a-f]{3,4}:d6cc any IP6 address that starts with 750f:17a0:6770:6930:15c: and ends with :d6cc, with 3 or 4 digits in between

Parameter: Addresses denied

Optional. Like the previous parameter, but if the client address matches any of these regular expressions, the connection will be rejected.

Parameter: Denied message

Optional. If specified, this message will be sent to the client (this is applicable to Postgres and MySQL, other databases may or may not send back a message).

Parameter: Execute code

If true, then in addition to the regular processing done by this filter, the JavaScript code (if any) in this filter will be invoked before the result is returned to the engine.

This gives you an opportunity to have more fine-grained control over the exact behavior of the filter.


The following variables will be accessible from your code, in the context object:

clientIP will always be the client's IP address, which can be IP4 (e.g. 123.45.67.89) or IP6 (e.g. 2600:1201:6c70:39f1:47c:d4cc:5d5e:1af0)

socket will be a Java socket object

result is the result object

Example code

A (slightly contrived) example that checks if the last number of an IP4 address is 200 or more:

const lastDotIdx = context.clientIP.lastIndexOf(".");
if (lastDotIdx > 0) {
const finalNumStr = clientAddress.substring(lastDotIdx + 1);
const finalNum = parseInt(finalNumStr);
if (finalNum >== 200) {
context.result.success = false;
context.result.errorMessage = "No IPs ending of 200 and over";
}
}