Application Delivery Management

組み込み関数

StyleBookの式で組み込み関数を使用します。

例えば、組み込み関数 str() を使用して、数値を文字列に変換できます。

str($parameters.order)

または、組み込み関数 int() を使用して、文字列を整数に変換できます。

int($parameters.priority)

以下は、StyleBookの式でサポートされている組み込み関数の一覧と、その使用例です。

str() 関数

str() 関数は、入力引数を文字列値に変換します。

許可される引数の型:

  • string
  • number
  • TCPポート
  • boolean
  • IPアドレス

:

  • "set-" + str(10) 関数は "set-10" を返します。
  • str(10) 関数は 10 を返します。
  • str(1.1.1.1) 関数は 1.1.1.1 を返します。
  • str(T rue) 関数は "T rue" を返します。
  • str(ADM) 関数は "mas" を返します。

int() 関数

int() 関数は、文字列、数値、IPアドレス、または tcpport を引数として受け取り、整数を返します。

:

  • int("10") 関数は 10 を返します。
  • int(10) 関数は 10 を返します。
  • int(ip('0.0.4.1')) 関数は 1025 を返します。

bool() 関数

bool() 関数は任意の型を引数として受け取ります。引数の値が false、空、または存在しない場合、この関数は false を返します。

それ以外の場合は true を返します。

:

  • bool(true) 関数は true を返します。
  • bool(false) 関数は false を返します。
  • $parameters.afalse、空、または存在しない場合、bool($parameters.a) 関数は false を返します。

len() 関数

len() 関数は、文字列またはリストを引数として受け取り、文字列内の文字数またはリスト内の項目数を返します。

例 1:

置換を次のように定義した場合:

items: ["123", "abc", "xyz"]

len($substitutions.items) 関数は 3 を返します。

例 2:

len("NetScaler Console") 関数は 10 を返します。

例 3:

$parameters.vips['1.1.1.1', '1.1.1.2', '1.1.1.3'] の値を持つ場合、len($parameters.vips) 関数は 3 を返します。

min() 関数

min() 関数は、リストまたは一連の数値、あるいは TCPポート を引数として受け取り、最小の項目を返します。

一連の数値/TCPポートの例:

  • min(80, 100, 1000) 関数は 80 を返します。
  • min(-20, 100, 400) 関数は -20 を返します。
  • min(-80, -20, -10) 関数は -80 を返します。
  • min(0, 100, -400) 関数は -400 を返します。

数値/TCPポートのリストの例:

  • $parameters.portsTCPポート のリストであり、値が [80, 81, 8080] であるとします。

    min($parameters.ports) 関数は 80 を返します。

max() 関数

max() 関数は、リストまたは一連の数値、あるいは TCPポート を引数として受け取り、最大の項目を返します。

一連の数値/TCPポートの例:

  • max(80, 100, 1000) 関数は 1000 を返します。
  • max(-20, 100, 400) 関数は 400 を返します。
  • max(-80, -20, -10) 関数は -10 を返します。
  • max(0, 100, -400) 関数は 100 を返します。

数値/TCPポートのリストの例:

  • $parameters.portsTCPポート のリストであり、値が [80, 81, 8080] であるとします。

    max($parameters.ports) 関数は 8080 を返します。

bin() 関数

bin() 関数は、数値を引数として受け取り、その数値をバイナリ形式で表す文字列を返します。

式の例:

bin(100) 関数は 0b1100100 を返します。

oct() 関数

oct() 関数は、数値を引数として受け取り、その数値を8進数形式で表す文字列を返します。

式の例:

oct(100) 関数は 0144 を返します。

hex() 関数

hex() 関数は、数値を引数として受け取り、その数値を16進数形式で表す小文字の文字列を返します。

式の例:

hex(100) 関数は 0x64 を返します。

lower() 関数

lower() 関数は、文字列を引数として受け取り、その文字列を小文字で返します。

:

lower("ADM") 関数は adm を返します。

upper() 関数

upper() 関数は、文字列を引数として受け取り、その文字列を大文字で返します。

:

upper("NetScaler Console") 関数は NetScaler Console を返します。

sum() 関数

sum() 関数は、数値または TCPポート のリストを引数として受け取り、リスト内の数値の合計を返します。

例 1:

置換を次のように定義した場合: substitutions:

list-of-numbers = [11, 22, 55]

sum($substitutions.list-of-numbers) 関数は 88 を返します。

例 2:

$parameters.ports[80, 81, 82] の場合、sum($parameters.ports) 関数は 243 を返します。

pow() 関数

pow() 関数は、2つの数値を引数として受け取り、最初の引数を2番目の引数で累乗した数値を返します。

:

pow(3,2) 関数は 9 を返します。

ip() 関数

ip() 関数は、整数、文字列、またはIPアドレスを引数として受け取り、入力値に基づいてIPアドレスを返します。

:

  • ip 関数でIPアドレスを指定します。

    ip(3.1.1.1) 関数は 3.1.1.1 を返します。

  • ip 関数で文字列を指定します。

    ip('2.1.1.1') 関数は 2.1.1.1 を返します。

  • ip 関数で整数を指定します。

    • ip(12) 関数は 0.0.0.12 を返します。

    • ip 関数で整数を文字列として指定すると、入力の同等のIPアドレスが返されます。

      ip('1025') 関数は 0.0.4.1 を返します。

    この関数は、整数の加算および減算操作もサポートしており、結果のIPアドレスを返します。

    • 加算: ip(1025) + ip(12) 関数は 0.0.4.13 を返します。

    • 減算: ip('1025') - ip(12) 関数は 0.0.3.245 を返します。

    • 加算と減算の組み合わせ: ip('1.1.1.1') + ip('1.1.1.1') – ip(2)2.2.2.0 を返します。

base64.encode() 関数

base64.encode() 関数は文字列引数を受け取り、base64エンコードされた文字列を返します。

:

base64.encode("abcd") 関数は YWJjZA== を返します。

base64.decode() 関数

base64.decode 関数はbase64エンコードされた文字列を引数として受け取り、デコードされた文字列を返します。

:

base64.decode("YWJjZA==") 関数は abcd を返します。

exists() 関数

exists() 関数は任意の型の引数を受け取り、ブール値を返します。入力に何らかの値がある場合、戻り値は True です。入力引数に値がない場合 (つまり、値がない場合)、戻り値は False です。

$parameters.monitor がオプションのパラメーターであるとします。設定パックの作成時にこのパラメーターに値を指定すると、exists($parameters.monitor) 関数は True を返します。

それ以外の場合は False を返します。

filter() 関数

filter() 関数は2つの引数を受け取ります。

引数 1: 1つの引数を受け取り、ブール値を返す置換関数。

引数 2: リスト。

この関数は、元のリストのサブセットを返します。このサブセットでは、各要素が最初の引数の置換関数に渡されたときに True と評価されます。

:

置換関数を次のように考えます。

置換:

x(a): $a != 81

この関数は、入力値が 81 と等しくない場合に True を返します。それ以外の場合は False を返します。

$parameters.ports[81, 80, 81, 89] であるとします。

filter($substitutions.x, $parameters.ports) は、リストから 81 のすべての出現を削除して [80, 89] を返します。

if-then-else() 関数

if-then-else() 関数は3つの引数を受け取ります。

引数 1: ブール式

引数 2: 任意の式

引数 3: 任意の式 (オプション)

引数 1 の式が True と評価された場合、この関数は引数 2 として指定された式の値を返します。

それ以外の場合、引数 3 が指定されていれば、この関数は引数 3 の式の値を返します。

引数 3 が指定されていない場合、この関数は no を返します。

例 1:

$parameters.servicetypeHTTP の値を持つ場合、if-then-else($parameters.servicetype == HTTP, 80, 443) 関数は 80 を返します。それ以外の場合、この関数は 443 を返します。

例 2:

$parameters.servicetypeHTTP の値を持つ場合、if-then-else($parameters.servicetype == HTTP, $parameters.hport, $parameters.sport) 関数は $parameters.hport の値を返します。

それ以外の場合、この関数は $parameters.sport の値を返します。

例 3:

$parameters.servicetypeHTTP の値を持つ場合、if-then-else($parameters.servicetype == HTTP, 80)80 を返します。

それ以外の場合、この関数は値を返しません。

join() 関数

join() 関数は2つの引数を受け取ります。

引数 1: 数値、TCPポート、文字列、またはIPアドレスのリスト

引数 2: 区切り文字列 (オプション)

この関数は、引数 1 として指定されたリストの要素を文字列に結合します。各要素は、引数 2 として指定された区切り文字列で区切られます。引数 2 が指定されていない場合、リスト内の要素は1つの文字列として結合されます。

:

  • $parameters.ports[81, 82, 83] です。

    • 区切り文字引数を使用した場合:

      join($parameters.ports, '-') 関数は 81-82-83 を返します。

    • 区切り文字引数を使用しない場合:

      join($parameters.ports) 関数は 818283 を返します。

split() 関数

split() 関数は、指定された区切り文字に応じて入力文字列を複数のリストに分割します。区切り文字が指定されていないか、空白 ('') の場合、この関数はスペースを区切り文字と見なし、文字列をリストに分割します。

例:

  • split('Example_string_split', 's') 関数は ['Example_','tring_','plit'] を返します。

  • split('Example string split') 関数は ['Example','string','split'] を返します。

  • split('Example string split', '') 関数は ['Example','string','split'] を返します。

  • split('Example string') 関数は ['Example','string'] を返します。

    この関数は、連続するスペースを1つのスペースと見なします。

map() 関数

map() 関数は2つの引数を受け取ります。

引数 1: 任意の関数

引数 2: 要素のリスト。

この関数は、リスト内の各要素が、引数 2 の対応する要素に map() 関数 (引数 1) を適用した結果であるリストを返します。

引数 1 で許可される関数:

  • 1つの引数を受け取る組み込み関数:

    base64.encode, base64.decode, bin, bool, exists, hex, int, ip, len, lower, upper, oct, quotewrap, str, trim, upper, url.encode, url.decode

  • 少なくとも1つの引数を受け取る置換関数。

:

$parameters.nums[81, 82, 83] であるとします。

  • 組み込み関数 str を使用したマップ

    map(str, $parameters.nums) 関数は ["81", "82", "83"] を返します。

    map関数の結果は文字列のリストであり、各要素は入力リスト ($parameters.nums) の対応する要素にstr関数を適用して計算された文字列です。

  • 置換関数を使用したマップ

    • 置換:

      add-10(port): $port + 10

    • 式:

      map($substitutions.add-10, $parameters.nums) 関数は数値のリスト [ 91, 92, 93 ] を返します。

このmap関数の結果は数値のリストです。各要素は、入力リスト ($parameters.nums) の対応する要素に置換関数 $substitutions.add-10 を適用して計算されます。

quotewrap() 関数

quotewrap() 関数は、文字列を引数として受け取り、入力値の前後に二重引用符文字を追加した文字列を返します。

:

quotewrap("ADM") 関数は "mas" を返します。

replace() 関数

replace() 関数は3つの引数を受け取ります。

引数 1: string または次の組み込み型のリスト:

  • string
  • number
  • IPアドレス
  • TCPポート
  • boolean

引数 2: 引数 1 で指定された型と一致する単一の値または値のリスト

引数 3: 引数 1 で指定された型と同じ型の単一の値 (オプション)

replace() 関数は、引数 1 内の引数 2 のすべての出現を引数 3 で置き換えます。

引数 3 が指定されていない場合、引数 1 から引数 2 のすべての出現が削除されます。

:

  • replace('abcdef', 'def', 'xyz') 関数は abcxyz を返します。

    def のすべての出現が xyz に置き換えられます。

  • replace('abcdefabc', 'def')abcabc を返します。

    引数 3 がないため、def は結果の文字列から削除されます。

  • replace('An#example@to%replace!characters', ['@', '#', '!', '%'], '_') 関数は An_example_to_replace_characters を返します。

    出力文字列には、['@', '#', '!', '%'] で指定された文字の代わりにアンダースコア (_) が含まれます。

  • replace([10.10.10.1, 10.10.10.2, 10.10.10.3, 10.10.10.4], [10.10.10.2, 10.10.10.4]) 関数は [10.10.10.1, 10.10.10.3] を返します。

    引数 3 がないため、10.10.10.210.10.10.4 は結果のIPアドレスのリストから削除されます。

  • replace([8080, 8081, 8082, 8083, 8084], 8083, 80) 関数は [8080, 8081, 8082, 80, 8084] を返します。

    8083 のすべての出現が 80 に置き換えられます。

trim() 関数

trim() 関数は、入力文字列から先頭と末尾の空白が削除された文字列を返します。

:

trim(' abc ') 関数は abc を返します。

truncate() 関数

truncate() 関数は2つの引数を受け取ります。

引数 1: 文字列

引数 2: 数値

この関数は、引数 1 の入力文字列が引数 2 で指定された長さに切り詰められた文字列を返します。

:

truncate('NetScaler Console', 6)Citrix を返します。

distinct() 関数

distinct() 関数は、リスト入力から一意の項目を抽出します。

例: $parameters.input_list['ADM', 'ADC', 'VPX', 'ADC', 'ADM', 'CPX'] の場合、distinct($parameters.input_list) 関数は ['ADM', 'ADC', 'VPX', 'CPX'] を返します。

url.encode() 関数

url.encode() 関数は、RFC 3986 に従って文字がASCII文字セットを使用して変換された文字列を返します。

:

url.encode("a/b/c") 関数は a%2Fb%2Fc を返します。

url.decode() 関数

url.decode() 関数は、RFC 3986 に従ってURLエンコードされた引数が通常の文字列にデコードされた文字列を返します。

:

url.decode("a%2Fb%2Fc") 関数は a/b/c を返します。

is-ipv4() 関数

is-ipv4() 関数はIPアドレスを引数として受け取り、IPアドレスがIPv4形式である場合はブール値 True を返します。

is-ipv4(10.10.10.10) 関数は True を返します。

is-ipv6() 関数

is-ipv6() 関数はIPアドレスを引数として受け取り、IPアドレスがIPv6形式である場合はブール値 True を返します。

is-ipv6(2001:DB8::) 関数は True を返します。

startswith() 関数

startswith() 関数は、文字列が指定されたプレフィックスで始まるかどうかを判断します。この関数には、2つの必須の文字列引数が必要です。

startswith(str, sub_str)

この関数は、文字列 (str) が部分文字列 (sub_str) で始まる場合に True を返します。

:

  • startswith('Citrix', 'Ci') 関数は True を返します。
  • startswith('Citrix', 'iC') 関数は False を返します。
  • startswith('Citrix', 'Ab') 関数は False を返します。

endswith() 関数

endswith() 関数は、文字列が指定されたサフィックスで終わるかどうかを判断します。この関数には、2つの必須の文字列引数が必要です。

endswith(str, sub_str)

この関数は、文字列 (str) が部分文字列 (sub_str) で終わる場合に True を返します。

:

  • endswith('Citrix', 'ix') 関数は True を返します。
  • endswith('Citrix', 'Ix') 関数は False を返します。
  • endswith('Citrix', 'ab') 関数は False を返します。

contains() 関数

contains() 関数は、文字列が指定された部分文字列を含むかどうかを判断します。この関数には、2つの必須の文字列引数が必要です。

contains(str, sub_str)

この関数は、部分文字列 (sub_str) が文字列 (str) 内のどこかに含まれている場合に True を返します。

例:

  • contains('Citrix', 'tri') 関数は True を返します。
  • contains('Citrix', 'Ci') 関数は True を返します。
  • contains('Citrix', 'ti') 関数は False を返します。

substring() 関数

substring() 関数を使用して、文字列から部分文字列を抽出します。

substring(str, start_index, end_index)

この関数には、2つの必須引数と1つのオプションの整数引数が必要です。

  • str (必須)
  • start_index (必須)
  • end_index (オプション)

この関数は、指定されたインデックス位置の間にある文字列 (str) から部分文字列を返します。終了インデックス位置を指定しない場合、関数は開始インデックスから文字列の末尾まで部分文字列を抽出します。

end_index を指定すると、部分文字列には end_index 位置の文字は含まれません。

例:

  • substring('Citrix', 2) 関数は trix を返します。

  • substring('Citrix', 10) 関数は (") を返します。

    この例では、無効な start_index 位置があるため、関数は空白の文字列を返します。

  • substring('Citrix', 2, 4) 関数は tr を返します。

    この例では、関数は2番目と4番目のインデックス位置の間にある文字を抽出します。

  • substring('Citrix', -3) 関数は rix を返します。

    文字列の末尾にある文字を抽出したい場合は、start_index 引数に負の値を指定します。

    この例では、関数は文字列の最後の3文字を含む部分文字列を抽出します。

multiple() 関数

multiple() 関数は2つの引数を受け取ります。

引数 1: numberstringbooleanIPアドレスTCPポート、または password

引数 2: number

multiple(argument1, argument2) 関数は、引数 1 の多数のコピーを含むリストを返します。コピーの数は、引数 2 に渡された数値と等しくなります。

:

  • multiple(10.10.10.10, 3) 関数は [10.10.10.10, 10.10.10.10, 10.10.10.10] を返します。

  • multiple(8080, 4) 関数は [8080, 8080, 8080, 8080] を返します。

reverse() 関数

reverse() 関数は、項目のリストを引数として受け取り、同じ項目を逆順にリストしたリストを返します。

引数は、次の組み込み型のリストにすることができます。

  • string
  • number
  • IPアドレス
  • IPネットワーク
  • TCPポート
  • boolean
  • password
  • object
  • file
  • 証明書ファイル
  • キーファイル
  • 証明書キー

:

  • reverse([10.102.20.1, 10.102.20.2, 10.102.20.3])[10.102.20.3, 10.102.20.2, 10.102.20.1] を返します。
  • reverse([80,81,82,81])[81,82,81,80] を返します。
  • reverse(['app-mx','app-cx','conf-27','app3'])['app3','conf-27','app-cx','app-mx'] を返します。