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 アドレス、ネットワーク、または国のリストを指定できます。

比較して一致すると、true が返されます。

たとえば、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 グループの名前です。IP グループは、GUI または API の DataScript 作成で DataScript にマッピングする必要があります。

ipaddress は、ドット付きのクアッド表記 (1.2.3.4) の IP アドレスです。

IP グループの DataScript は、IP グループ名を変数として受け入れます。次はその例です。

ipgrp_name = “IPGRP1”
avi.ipgroup.contains(ipgrp_name, ip_address)

戻り値

match は、一致が見つかった場合は true を返し、一致しない場合は false を返します。

関連

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)

戻り値

参照される文字列グループのタイプに応じて、この関数から 1 つまたは 2 つの変数を返すことができます。

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
文字列グループの DataScript は、文字列グループ名も変数として受け入れます。

例:

StringGroup="abc" val, match = avi.stringgroup.beginswith("StringGroup", client)

avi.stringgroup.contains( stringgroup, string )

機能

avi.stringgroup.contains ( stringgroup, string )

説明

文字列グループは、文字列データの単純なリストです。この関数は、カスタム文字列を評価し、文字列グループのエントリ内にカスタム文字列が存在するかどうかを確認します。文字列グループがキーと値のペアのマッピングとして構成されている場合、文字列がキーと一致するかどうかを比較し、キーの値フィールドから文字列を返します。

文字列の比較は、最短一致で true を返します。文字列グループに a、ab、abc のエントリがあり、評価された文字列が「abcdef」の場合、関数は最も短い有効な一致である「a」と一致します。

イベント

HTTP_REQ。

HTTP_RESP。

パラメータ

stringgroup は、比較する文字列グループの名前です。文字列グループは、GUI または API の DataScript 作成で DataScript にマッピングする必要があります。

string は、文字列グループ内で検索するカスタム データです。

CASE は、大文字と小文字を区別して確認する場合に指定します。デフォルトでは、大文字と小文字を無視して比較が実行されます。大文字と小文字を区別して実行するには、次の構文を使用します。avi.stringgroup.contains_CASE( "stringgroup", "string")

文字列グループの DataScript は、文字列グループ名も変数として受け入れます。

例:

strgrp_name = “StringGroup” val, match = avi.stringgroup.contains(strgrp_name, client)

戻り値

参照される文字列グループのタイプに応じて、この関数から 1 つまたは 2 つの変数を返すことができます。

value:文字列グループがキーと値のペア向けに構成されている場合、文字列パラメータがキーと比較され、値が value 変数に返されます。文字列グループがキーと値のペア用に構成されていない場合、値変数は nil になります。

match:一致が見つかった場合は true を返し、一致しない場合は nil を返します。

関連

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 は、大文字と小文字を区別して確認する場合に指定します。デフォルトでは、大文字と小文字を区別しない比較が実行されます。大文字と小文字を区別する一致の場合は、次の構文を使用します。

avi.stringgroup.endswith_CASE( "stringgroup", "string")

文字列グループ DataScript は、L7 DataScript の場合にのみ、文字列グループ名も変数として受け入れます。

例:

strgrp_name = “StringGroup” val, match = avi.stringgroup.equals(strgrp_name, avi.http.hostname())

戻り値

この関数は、常に 2 つの変数を返します。

value:文字列グループがキーと値のペア向けに構成されている場合、string パラメータがキーと比較され、value 変数に値が返されます。文字列グループがキーと値のペア向けに構成されていない場合、value 変数は引き続き返されますが、その値は常に nil になります。

match は、一致が見つかった場合は true を返し、一致しない場合は false を返します。

関連

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

この例では、場所をパスの先頭に移動することで、Host ヘッダーに組み込まれた場所に基づいてクライアントをリダイレクトします。次の表に、文字列グループに格納されているキー値を示します。この場合、一致が true のときは、val には対応する値が含まれます。

キー

us.test.com

/us

eu.test.com

/eu

ap.test.com

/ap

sa.test.com

/sa

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=1www.test.com/sa/path/index.htm?query=1 にリダイレクトされます。

avi.stringgroup.endswith( stringgroup, string )

機能

avi.stringgroup.endswith( stringgroup, string )

説明

文字列グループは、文字列データの単純なリストです。この関数は、カスタム文字列を評価して、一致する文字列グループ内のエントリでカスタム文字列が終わるかどうかを確認します。文字列グループがキーと値のペアのマッピングとして構成されている場合、文字列がキーと一致するかどうかを比較し、キーの値フィールドを返します。

文字列の比較は、最短一致で true を返します。文字列グループに a、ab、abc のエントリがあり、評価された文字列が「xxxab」の場合、関数は最も短い有効な一致である、文字列「ab」と一致します。

イベント

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)

戻り値

参照される文字列グループのタイプに応じて、この関数から 1 つまたは 2 つの変数を返すことができます。

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