DataScript 中提供了以下组函数:
函数 |
描述 |
---|---|
avi.ipgroup.contains( ipgroup, ip-address ) |
将 IP 地址与 IP 组中的 IP 进行比较。 |
avi.stringgroup.beginswith( stringgroup, string ) |
将字符串与字符串组中的字符串列表进行比较。 |
avi.stringgroup.contains( stringgroup, string ) |
将字符串与字符串组中的字符串列表进行比较。 |
avi.stringgroup.equals( stringgroup, string ) |
将字符串与字符串组中的字符串列表进行比较。 |
avi.stringgroup.endswith( stringgroup, string ) |
将字符串与字符串组中的字符串列表进行比较。 |
avi.ipgroup.contains
函数 |
avi.ipgroup.contains ( ipgroup, ipaddress ) |
描述 |
将 IPv4 或 IPv6 地址与 IP 组中的 IP 地址列表进行比较。IP 组可以是 IP 地址、网络或国家/地区的列表。 有任何匹配项时,比较将返回 例如,如果 IP 组包含 10.0.0.0/8、10.10.0.0/16 和 10.10.10.10 条目,并且评估的 IP 地址为 10.10.10.10,则函数成功匹配。 |
事件 |
HTTP_REQ。 HTTP_RESP。 |
参数 |
ipgroup 是要与之进行比较的 IP 组的名称。在使用 GUI 或 API 创建 DataScript 时,必须将 IP 组映射到 DataScript。 ipaddress 是一个以点四分法 (1.2.3.4) 表示的 IP 地址。 IP 组 Datascript 接受 IP 组名称作为变量。例如, ipgrp_name = “IPGRP1” avi.ipgroup.contains(ipgrp_name, ip_address) |
返回 |
如果找到了匹配项,match 将返回 |
相关 |
avi.stringgroup.contains() - 将自定义字符串与字符串组匹配。 |
示例 |
放弃与 IP 黑名单匹配的客户端。 var = avi.vs.client_ip() if avi.ipgroup.contains("IP-Group", var) then avi.vs.log("Blacklisted IP" .. var.. "attempting to log in") avi.http.close_conn() end |
avi.stringgroup.beginswith
函数 |
avi.stringgroup.beginswith( stringgroup, string ) |
描述 |
字符串组是简单字符串数据列表。此函数将评估自定义字符串,以查看其是否以匹配的字符串组中的条目开头。如果字符串组已配置为键值对映射,则将比较该字符串以查看它是否与键匹配,并从键的值字段中返回字符串。 在找到最短匹配项时,字符串比较将返回 true。例如,如果字符串组具有 a、ab、abc 条目,并且评估的字符串为“abc”,则函数将匹配“a”,因为它是最短的有效匹配项。 |
事件 |
HTTP_REQ。 HTTP_RESP。 |
参数 |
stringgroup 是要与之进行比较的字符串组的名称。在 GUI 或 API 的 DataScript 创建中,必须将字符串组映射到 DataScript。 string 是要在字符串组中搜索的自定义数据。 CASE 用于执行区分大小写的检查。默认情况下,执行比较时忽略大小写。要执行区分大小写的匹配,请使用以下语法: avi.stringgroup.beginswith_CASE( "stringgroup", "string") 字符串组 Datascript 也接受字符串组名称作为变量。 示例: client = avi.http.get_header(“SessionID”)strgrp_name = “StringGroup”val, match = avi.stringgroup.beginswith(strgrp_name, client) |
返回 |
此函数可以返回一个或两个变量,具体取决于所引用字符串组的类型。 value:如果为键值对配置了字符串组,则会将 string 参数与键进行比较,并在 value 变量中返回值。如果没有为键值对配置字符串组,则 value 变量将为 nil。 如果找到了匹配项,match 将返回 true,如果未找到匹配项,则返回 false。 |
相关 |
avi.ipgroup.contains():将 IP 地址与 IP 组匹配。 avi.stringgroup.contains():如果字符串组条目包含另一个字符串的一部分,则匹配。 avi.stringgroup.endswith():如果字符串组条目以另一个字符串的一部分结尾,则匹配。 avi.stringgroup.equals():如果字符串组条目等于另一个字符串,则匹配。 |
示例 |
以下示例必须与配置并启用了键值对的字符串组一起使用。 client = avi.http.get_header("SessionID") val, match = avi.stringgroup.beginswith("StringGroup", client) if match then avi.vs.log("User " .. val .. "authorized.") else -- Deny users not in the whitelist avi.http.response(403) end |
示例:
StringGroup="abc" val, match = avi.stringgroup.beginswith("StringGroup", client)
avi.stringgroup.contains( stringgroup, string )
函数 |
avi.stringgroup.contains ( stringgroup, string ) |
描述 |
字符串组是简单字符串数据列表。此函数将评估自定义字符串,以查看该字符串是否存在于字符串组的条目中。如果字符串组已配置为键值对映射,则将比较该字符串以查看它是否与键匹配,并从键的值字段中返回字符串。 字符串比较将在找到最短匹配项时返回 |
事件 |
HTTP_REQ。 HTTP_RESP。 |
参数 |
stringgroup 是要与之进行比较的字符串组的名称。在 GUI 或 API 的 DataScript 创建中,必须将字符串组映射到 DataScript。 string 是要在字符串组中搜索的自定义数据。 CASE 用于执行区分大小写的检查。默认情况下,执行比较时忽略大小写。要执行区分大小写,请使用以下语法: 字符串组 Datascript 也接受字符串组名称作为变量。 示例:
|
返回 |
此函数可能会返回一个或两个变量,具体取决于所引用字符串组的类型。 value:如果为键值对配置了字符串组,则会将 string 参数与键进行比较,并在 value 变量中返回值。如果没有为键值对配置字符串组,则 value 变量将为 nil。 match:如果找到了匹配项,将返回 |
相关 |
avi.ipgroup.contains():将 IP 地址与 IP 组匹配。 avi.stringgroup.beginswith():如果字符串组条目以另一个字符串的一部分开头,则匹配。avi.stringgroup.endswith():如果字符串组条目以另一个字符串的一部分结尾,则匹配。avi.stringgroup.equals():如果字符串组条目等于另一个字符串,则匹配。 |
示例 |
以下示例必须与配置并启用了键值对的字符串组一起使用。 client = avi.http.get_header("Authorization") val, match = avi.stringgroup.contains("StringGroup", client) if match then avi.vs.log("User " .. val .. "authorized.") else -- Deny users not in the whitelist avi.http.response(403) end |
avi.stringgroup.equals( stringgroup, string )
函数 |
avi.stringgroup.equals( stringgroup, string ) |
||||||||||
描述 |
字符串组是简单字符串数据列表。此函数将评估自定义字符串,以查看其是否与字符串组中的条目完全匹配。如果字符串组已配置为键值对映射,则将比较字符串以查看它是否与键匹配,并返回键的值字段。 |
||||||||||
事件 |
HTTP_REQ。 HTTP_RESP。 |
||||||||||
参数 |
stringgroup 是要与之进行比较的字符串组的名称。在 GUI 或 API 的 DataScript 创建中,必须将字符串组映射到 DataScript。 string 是要在字符串组中搜索的自定义数据。 CASE 用于执行区分大小写的检查。默认情况下,将执行不区分大小写的比较。对于区分大小写的匹配,请使用以下语法:
字符串组 DataScript 还接受字符串组名称作为 L7 DataScript 变量。 示例:
|
||||||||||
返回 |
此函数始终返回两个变量。 value:如果为键值对配置了字符串组,则会将 string 参数与键进行比较,并在 value 变量中返回值。如果没有为键值对配置字符串组,则仍会返回 value 变量,但其值始终为 nil。 如果找到了匹配项,match 将返回 |
||||||||||
相关 |
avi.ipgroup.contains():将 IP 地址与 IP 组匹配。 avi.stringgroup.contains():如果字符串组条目包含另一个字符串的一部分,则匹配。 avi.stringgroup.beginswith():如果字符串组条目以另一个字符串的一部分开头,则匹配。 avi.stringgroup.endswith():如果字符串组条目以另一个字符串的一部分结尾,则匹配。 |
||||||||||
示例 1 |
在允许访问站点之前,以下示例将先检查 userID 是否位于已批准列表中。这是一种我们期望 val 始终返回 nil 的情况。 val, match = avi.stringgroup.equals("StringGroup", avi.http.get_userid()) if not match then avi.http.redirect("https://login.site.com") end |
||||||||||
示例 2 |
此示例通过将位置移动到路径开头,基于嵌入到主机标头中的位置重定向客户端。下表说明了存储在字符串组中的键值。在这种情况下,如果 match 为
val, match = avi.stringgroup.equals("StringGroup", avi.http.hostname()) if match then avi.http.redirect("https://www.test.com" .. val .. avi.http.get_url()) end |
sa.test.com/path/index.htm?query=1
将被重定向到
www.test.com/sa/path/index.htm?query=1
。
avi.stringgroup.endswith( stringgroup, string )
函数 |
avi.stringgroup.endswith( stringgroup, string ) |
描述 |
字符串组是简单字符串数据列表。此函数将评估自定义字符串,以查看其是否以匹配的字符串组中的条目结尾。如果字符串组已配置为键值对映射,则将比较字符串以查看它是否与键匹配,并且将返回键的值字段。 字符串比较将在找到最短匹配项时返回 |
事件 |
HTTP_REQ。 HTTP_RESP。 |
参数 |
stringgroup 是要与之进行比较的字符串组的名称。在 GUI 或 API 的 DataScript 创建中,必须将字符串组映射到 DataScript。 string 是要在字符串组中搜索的自定义数据。 CASE - 默认情况下,执行比较时不区分大小写。要在执行比较时区分大小写,请使用以下语法:avi.stringgroup.endswith_CASE( "stringgroup", "string") 从 Avi Vantage 20.1.1 开始,字符串组 Datascript 还接受字符串组名称作为变量。 例如,strgrp_name = “StringGroup” val, match = avi.stringgroup.endswith(strgrp_name, path) |
返回 |
此函数可能会返回一个或两个变量,具体取决于所引用字符串组的类型。 value:如果为键值对配置了字符串组,则会将 string 参数与键进行比较,并在 value 变量中返回值。如果没有为键值对配置字符串组,则 value 变量将为 nil。 如果找到了匹配项,match 将返回 true,如果未找到匹配项,则返回 false。 |
相关 |
avi.ipgroup.contains():将 IP 地址与 IP 组匹配。 avi.stringgroup.contains():如果字符串组条目包含另一个字符串的一部分,则匹配。 avi.stringgroup.beginswith():如果字符串组条目以另一个字符串的一部分开头,则匹配。 avi.stringgroup.equals():如果字符串组条目等于另一个字符串,则匹配。 |
示例 |
以下示例将检查 URL 的路径是否以批准的类型(如 .html、.png 或 .css)结尾。将丢弃不在列表中的其他文件类型。此示例使用标准字符串列表,而不是键值对。 path = avi.http.get_path() val, match = avi.stringgroup.endswith("StringGroup", path) if not match then avi.http.response(404) end |