Fortinet Document Library

Version:


Table of Contents

5.3.0
Download PDF
Copy Link

Global commands

Crc32(str)

Returns the crc32 check value of the string, or 0 if it is an empty string.

Syntax

crc32(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

str = "any string for crc32 calculation"

crc = crc32(str);

debug("crc is %d\n", crc);

}

FortiADC version: V5.2

Used in events: ALL

Key_gen(str_pass, str_salt, iter_num, len_num)

Create an AES key to encrypt/decrypt data, either generated by password or user defined.

Syntax

key_gen(str_pass, str_salt, iter_num, len_num);

Arguments

Name Description

str_pass

The password string.

str_salt

The salt string.

iter_num

The number of iterations.

len_num

The key length.

Examples

when HTTP_REQUEST {

new_key = key_gen("pass", "salt", 32, 32); -- first parameter is the password string, second the salt string, third the number of iterations, fourth the key length

debug("new key in hex is %s\n", to_HEX(new_key));

}

FortiADC version: V5.2

Used in events: ALL

Aes_enc(t)

encrypt the data using the previously-created AES key

Syntax

Aes_enc(t);

Arguments

Name Description

t

A table which specifies the message, key, size that used to encrypt.

Examples

when HTTP_REQUEST {

t={};

t["message"] = "MICK-TEST";

t["key"] = "aaaaaaaaaabbbbbb" --16bit

t["size"]= 128 -- 128, 192, or 256, the corresponding key length is 16, 24, and 32

enc = aes_enc(t)

debug("The aes_enc output to HEX\n %s\n",to_HEX(enc));

}

Note:

  • Message: a string which will be encrypted
  • Key: a string to encrypt str
  • Size: must be 128, 192, or 256, the corresponding key length is 16, 24, and 32.

FortiADC version: V5.2

Used in events: ALL

aes_dec(t)

decrypt the data using the previously-created AES key

Syntax

Aes_dec(t);

Arguments

Name Description

t

A table which specifies the message, key, size that used to decrypt.

Examples

when HTTP_REQUEST {

t={};

t["message"] = "MICK-TEST";

t["key"] = "aaaaaaaaaabbbbbb"

t["size"]= 128 -- 128, 192, or 256, the corresponding key length is 16, 24, and 32

enc = aes_enc(t)

--aes decryption

a={};

a["message"] = enc;

a["key"] = "aaaaaaaaaabbbbbb"

a["size"]= 128;

dec = aes_dec(a);

debug("key length %s decrypted is %s\n",”128” ,dec);

}

Note:

  • Message: a string which will be decrypted
  • Key: a string to decrypt str
  • Size: must be 128, 192, or 256, the corresponding key length is 16, 24, and 32

FortiADC version: V5.2

Used in events: ALL

EVP_Digest(alg, str)

EVP_Digest for oneshot digest calculation.

Syntax

EVP_Digest(alg, str);

Arguments

Name Description

alg

A string which specifies the algorithm.

str

A string which will be EVP_Digested.

Examples

when HTTP_REQUEST {

alg = "MD5"; -- or "SHA1", "SHA256", "SHA384", "SHA512"

data = "your data"

re = EVP_Digest(alg, data);

debug("the digest in hex is %s\n", to_HEX(re));

}

Note:

Alg: type of hashing algorithms to use, must be MD5, SHA1, SHA256, SHA384, SHA512

FortiADC version: V5.2

Used in events: ALL

HMAC(alg, str, key)

HMAC message authentication code.

Syntax

HMAC(alg, str, key);

Arguments

Name Description

alg

A string which specifies the algorithm.

str

A string which will be calculated.

key

A string which is a secret key.

Examples

when HTTP_REQUEST {

alg = "MD5"; -- or "SHA1", "SHA256", "SHA384", "SHA512"

data = "your data"

key = "123456789ABCDEF0123456789ABCDEF\121"; -- or you can generate a key using key_gen

re = HMAC(alg, data, key);

debug("the HMAC in hex is %s\n", to_HEX(re));

}

Note:

Alg: type of hashing algorithms to use, must be MD5, SHA1, SHA256, SHA384, SHA512

FortiADC version: V5.2

Used in events: ALL

HMAC_verify(alg, data, key, verify)

Check if the signature is same as the current digest.

Syntax

HMAC_verify(alg, data, key verify);

Arguments

Name Description

alg

A string which specifies the algorithm.

key

A string which is a secret key.

data

A string which will be calculated.

verify

A signature to compare the current digest against.

Examples

when HTTP_REQUEST {

alg = "MD5"; -- or "SHA1", "SHA256", "SHA384", "SHA512"

data = "your data"

verify = "your result to compare"

key = "123456789ABCDEF0123456789ABCDEF\121"; -- or you can generate a key using key_gen

re = HMAC_verify(alg, data, key, verify);

if re then

debug("verified\n")

else

debug("not verified\n")

end

}

Note:

Alg: type of hashing algorithms to use, must be MD5, SHA1, SHA256, SHA384, SHA512

FortiADC version: V5.2

Used in events: ALL

G2F(alg, key)

Returns a G2F random value.

Syntax

G2F(alg, key);

Arguments

Name Description

alg

A string which specifies the algorithm.

key

A string which is a secret key.

Examples

when HTTP_REQUEST {

alg = "MD5"; -- or "SHA1", "SHA256", "SHA384", "SHA512"

key = "123456789ABCDEF0123456789ABCDEF\121"; -- or you can generate a key using key_gen

re = G2F(alg, key);

debug("the G2F value is %d\n", re);

}

Note:

Alg: type of hashing algorithms to use, must be MD5, SHA1, SHA256, SHA384, SHA512

FortiADC version: V5.2

Used in events: ALL

Class_match(str, method, list)

Used to match the string against an element.

Syntax

Class_match(str, method, list);

Arguments

Name Description

str

A string which will be matched.

method

A string which specifies the match method

list

A list which specifies the match target.

Examples

when HTTP_REQUEST {

url_list = “”

url = HTTP:uri_get()

status, count, t = class_match(url, "starts_with", url_list); --or "ends_with", "equals", "contains"

debug("status %s, count %s\n", status, count);

for k,v in pairs(t) do

debug("index %s, value %s\n", k,v);

end

}

Note:

Method: must be “starts_with”, “equals”, “contains”, “end_with”

This command return three parameter, first “status”: true or false means if match or not; second “count”: return the number of times matches; third “t”: return matched index and matched value in the list.

FortiADC version: V5.2

Used in events: ALL

Class_search(list, method, str)

Used to search an element in the list against a string.

Syntax

Class_search(list, method, str);

Arguments

Name Description

str

A string which will be calculated.

list

A string which will be matched.

method

A string which specifies the match method.

Examples

when HTTP_REQUEST {

status, count, t = class_search(url_list, "starts_with", url); --or "ends_with", "equals", "contains"

for k,v in pairs(t) do

debug("index %s, value %s\n", k,v);

end

}

Note:

Method: , must be “starts_with”, “equals”, “contains”, “end_with”

FortiADC version: V5.2

Used in events: ALL

Cmp_addr()

Used to match one IP address against a group of IP addresses.

It can automatically detect IPv4 and IPv6 and can be used to compare IPv4 addresses with IPv6 addresses

Syntax

Cmp_addr(client_Ip, addr_group );

Arguments

Name Description

Client_ip

For an IPv4 ip_addr/[mask], the mask can be a number between 0 and 32 or a dotted format like 255.255.255.0

For an IPv6 ip_addr/[mask], the mask can be a number between 0 and 128.

Addr_group

A group of IP address.

addr_group = "192.168.1.0/24" --first network address

addr_group = addr_group..",::ffff:172.30.1.0/120" --second

network address

Examples

when RULE_INIT{

--initialize the address group here

--for IPv4 address, mask can be a number between 0 to 32 or a dotted format

--support both IPv4 and IPv6, for IPv6, the mask is a number between 0 and 128

addr_group = "192.168.1.0/24"

addr_group = addr_group..",172.30.1.0/255.255.0.0"

addr_group = addr_group..",::ffff:172.40.1.0/120"

}

when HTTP_REQUEST{

client_ip = HTTP:client_addr()

matched = cmp_addr(client_ip, addr_group)

if matched then

debug("client ip found in address group\n");

else

debug("client ip not in address group\n");

end

}

FortiADC version: V4.8

Used in events: ALL

url_enc(str)

converted the url info a valid ASCII format

Syntax

url_enc(str);

Arguments

Name Description

str

A string which will be converted.

Examples

when HTTP_REQUEST {

url_list =https://abc.www.123.bbEEE.com/?5331=212&qe1=222

debug("Ori= %s \nencodeed= %s\n", url_list,url_enc(url_list));

}

FortiADC version: V5.2

Used in events: ALL

url_dec(str)

converted the encoding-url into a original url.

Syntax

url_dec(str);

Arguments

Name Description

str

A string which will be converted.

Examples

when HTTP_REQUEST {

str = "http%3A%2F%2Fwww.example.com%3A890%2Furl%2Fpath%2Fdata%3Fname%3Dforest%23nose“

debug("String= %s\ndecoded= %s\n", str,url_dec(str));

}

FortiADC version: V5.2

Used in events: ALL

url_parser(str)

Parse a url, return a table contains host, port, path, query, fragment, the username, password etc from the url.

Syntax

url_parser(str);

Arguments

Name Description

str

A url which will be parser.

Examples

when HTTP_REQUEST {

url_list="http://foo:bar@w1.superman.com/very/long/path.html?p1=v1&p2=v2#more-details"

purl = url_parser(url_list);

debug("parsed url scheme %s host %s\n port %s path %s query %s\n fragment %s, the username %s\n passowrd %s\n", purl["scheme"], purl["host"], purl["port"],purl["path"], purl["query"], purl["fragment"], purl["username"], purl["password"]);

}

FortiADC version: V5.2

Used in events: ALL

url_compare(url1, url2)

Compare two url string, return true if they are the same.

Syntax

url_compare(url1, url2);

Arguments

Name Description

url1, url2

Two urls which will be compared.

Examples

when HTTP_REQUEST {

url_list={};

url_list[1]="http://10.10.10.10:80/"

url_list[2]="http://10.10.10.10/"

url_list[3]="https://5.5.5.5:443/"

url_list[4]="https://5.5.5.5/"

url_list[5]="http://[2001::1]:80"

url_list[6]="http://[2001::1]"

url_list[7]="https://[2001:99:1]:443"

url_list[8]="https://[2001:99:1]"

for i = 1,8,2 do

if url_compare(url_list[i],url_list[i+1]) then

debug("URL_List %d %d Match !\n",i,i+1);

else

debug("URL_List %d %d NOT Match !\n",i,i+1);

end

end

}

FortiADC version: V5.2

Used in events: ALL

Rand()

Generate a random number. Returns is a integer number. After FAD reboot, the random number will be different.

Syntax

rand();

Arguments: N/A

Examples

when HTTP_REQUEST {

a = rand()

debug(“a = %d\n”, a)

}

FortiADC version: V5.2

Used in events: ALL

srand(str)

Set the random seed.

Syntax

srand(str);

Arguments

Name Description

str

A string which specifies the seed.

Examples

when HTTP_REQUEST {

srand(1111)

a = rand()

debug(“a = %d\n”, a)

}

FortiADC version: V5.2

Used in events: ALL

Rand_hex(int)

Generate a random number in HEX. Returns is a string, length is the <int>.

Syntax

Rand_hex(int);

Arguments

Name Description

Int

An integer which specifies the length of the returned string.

Examples

when HTTP_REQUEST {

b = rand_hex(15)

debug("-----rand_hex b = %s-----\n", b)

}

Result:

-----rand_hex b = 43474FB47A8A8C4-----

FortiADC version: V5.2

Used in events: ALL

Rand_alphanum(int)

Generate a random alphabet+number sequence. Returns is a string, length is the <int>.

Syntax

Random_alphanum(int);

Arguments

Name Description

Int

An integer which specifies the length of the returned string.

Examples

when HTTP_REQUEST {

c = rand_alphanum(17)

debug("-----rand_alphanum c = %s-----\n", c)

}

Result:

-----rand_alphanum c = XTHQpb6ngabMqH7nx-----

FortiADC version: V5.2

Used in events: ALL

Rand_seq(int)

Generate a random in sequence. Returns is a string, length is the <int>.

Syntax

Rand_seq(int);

Arguments

Name Description

Int

An integer which specifies the length of the returned string.

Examples

when HTTP_REQUEST {

d = rand_seq(18)

debug("-----rand_seq d = %s-----\n", d)

}

Result:

FortiADC version: V5.2

Used in events: ALL

Time()

Returns the current time in a number which is the time since the Epoch measured in seconds.

Syntax

time();

Arguments: N/A

Examples

when HTTP_REQUEST {

t = time()

debug(“-----time: t %s-----\n”, t)

}

Result:

-----time: t 1561424783-----

FortiADC version: V4.8

Used in events: ALL

Ctime()

Returns a string descripting the current time like “Tue Jun 25 14:11:01 2019”.

Syntax

ctime();

Arguments: N/A

Examples

when HTTP_REQUEST {

ct = ctime()

debug(“-----ctime: ct %s-----\n”, ct)

}

Result:

-----ctime: ct Mon Jun 24 18:06:23 2019-----

FortiADC version: V4.8

Used in events: ALL

gmtime()

Returns the GMT time like “Thu 27 Jun 2019 18:27:42 GMT”.

Syntax

gmtime();

Arguments: N/A

Examples

when HTTP_REQUEST {

gt = gmtime()

debug(“-----gmtime: gt %s-----\n”, gt)

}

Result:

-----gmtime: gt Thu 27 Jun 2019 18:27:42 GMT -----

FortiADC version: V5.3

Used in events: ALL

Md5(str)

Rreturn the MD5 calculated for the string provided.

Syntax

Md5(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

str1 = “abc”

md5 = md5(str1)

str = “test string”

a=12

md = md5(“%s,123%d”,str,a)

}

FortiADC version: V4.8

Used in events: ALL

Md5_hex(str)

Returns the md5 value in hex to the string

Syntax

Md5_hex(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

str1 = “abc”

str2 = md5_hex(str1)

}

FortiADC version: V4.8

Used in events: ALL

Md5_str(str)

Calculate the MD5 of a string input and stores the results in an intermediate variable, in some cases you need a version to deal with it.

Syntax

Md5_str(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

md5 = md5_str(input); --input can be a cert in DER format

}

FortiADC version: V4.8

Used in events: ALL

Md5_hex_str(str)

Calculate the MD5 of a string input of a string input and outputs the results in HEX format, in some cases you need a version to deal with it.

Syntax

Md5_hex_str(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

md = md5_hex_str(input); --input can be a cert in DER format

}

FortiADC version: V4.8

Used in events: ALL

Sha1(str)

Returns the sha1 calculated for the string provided.

Syntax

Sha1(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

result = sha1(input)

}

FortiADC version: V4.8

Used in events: ALL

Sha1_hex(str)

Returns the sha1 calculated for the string in hex.

Syntax

Sha1_hex(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

str1 = “123456789”

sha1 = sha1_hex(str1)

}

FortiADC version: V4.8

Used in events: ALL

Sha1_str(str)

Calculate the SHA1 of a string input and stores the results in an intermediate variable, in some cases you need a version to deal with it.

Syntax

Sha1_str(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

result = sha1_str(input); --input can be a cert in DER format

}

FortiADC version: V4.8

Used in events: ALL

Sha1_hex_str(str)

Calculate the SHA1 of a string input and output the results in HEX format, in some cases you need a version to deal with it.

Syntax

Sha1_hex_str(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

result = sha1_hex_str(input); -- input can be a cert in DER format

}

FortiADC version: V4.8

Used in events: ALL

Sha256(str)

Calculates the SHA256 of a string input and store the result in an intermediate variable.

Syntax

Sha256(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

str1 = “abc”

str2 = sha256(str1)

}

FortiADC version: V4.8

Used in events: ALL

Sha256_hex(str)

Calculate the SHA256 of a string input and output the result in an intermediate variable. In some cases you need a version to deal with it.

Syntax

Sha256_hex(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

str1 = “abc”

sha256 = sha256_hex(str)

}

FortiADC version: V4.8

Used in events: ALL

Sha256_str(str)

Calculate the SHA256 of a string input and restore the result in an intermediate variable. In some cases you need a version to deal with it.

Syntax

Sha256_str(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

result = sha256_str(input); --input can be a cert in DER format

}

FortiADC version: V4.8

Used in events: ALL

Sha256_hex_str(str)

Calculate the SHA256 of a string input and restore the result in an intermediate variable. In some case you need a version to deal with it.

Syntax

Sha256_hex_str(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

result = sha256_hex_str(input); --input can be a cert in DER format

}

FortiADC version: V4.8

Used in events: ALL

Sha384(str)

Calculates the SHA384 of a string input and store the result in an intermediate variable.

Syntax

Sha384(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

str1 = “abc”

str2 = sha384(str1)

}

FortiADC version: V4.8

Used in events: ALL

Sha384_hex(str)

Calculate the SHA384 of a string input and output the result in an intermediate variable. In some cases you need a version to deal with it.

Syntax

Sha384_hex(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

str1 = “abc”

sha384 = sha384_hex(str)

}

FortiADC version: V4.8

Used in events: ALL

Sha384_str(str)

Calculate the SHA384 of a string input and restore the result in an intermediate variable. In some cases you need a version to deal with it.

Syntax

Sha384_str(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

result = sha384_str(input); --input can be a cert in DER format

}

FortiADC version: V4.8

Used in events: ALL

Sha384_hex_str(str)

Calculate the SHA384 of a string input and restore the result in an intermediate variable. In some case you need a version to deal with it.

Syntax

Sha384_hex_str(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

result = sha384_hex_str(input); --input can be a cert in DER format

}

FortiADC version: V4.8

Used in events: ALL

Sha512(str)

Calculates the SHA512 of a string input and store the result in an intermediate variable.

Syntax

Sha512(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

str1 = “abc”

str2 = sha512(str1)

}

FortiADC version: V4.8

Used in events: ALL

Sha512_hex(str)

Calculate the SHA512 of a string input and output the result in an intermediate variable. In some cases you need a version to deal with it.

Syntax

Sha512_hex(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

str1 = “abc”

sha512 = sha512_hex(str)

}

FortiADC version: V4.8

Used in events: ALL

Sha512_str(str)

Calculate the SHA512 of a string input and restore the result in an intermediate variable. In some cases you need a version to deal with it.

Syntax

Sha512_str(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

result = sha512_str(input); --input can be a cert in DER format

}

FortiADC version: V4.8

Used in events: ALL

Sha512_hex_str(str)

Calculate the SHA512 of a string input and restore the result in an intermediate variable. In some case you need a version to deal with it.

Syntax

Sha512_hex_str(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

result = sha512_hex_str(input); --input can be a cert in DER format

}

FortiADC version: V4.8

Used in events: ALL

b32_enc(str)

encode a string input in base32 and output the result in string format.

Syntax

B32_enc(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

str = “abc”

en = b32_enc(str)

}

FortiADC version: V5.2

Used in events: ALL

B32_enc_str(str)

Encode a string input in base32 and output the result in string format. In some cases you need a version to deal with it.

Syntax

B32_enc_str(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

result = b32_enc_str(input); --input can be a cert in DER format

}

FortiADC version: V5.2

Used in events: ALL

B32_dec(str)

Decode a base32 encoded string input and output the result in string format

Syntax

B32_dec(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

str = “abc”

dec = b32_dec(str)

}

FortiADC version: V5.2

Used in events: ALL

B32_dec_str(str)

Decode a base32 encoded string input and output the result in string format. In some cases you need a version to deal with it.

Syntax

B32_dec_str(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

result = b32_dec_str(input); --input can be a cert in DER format

}

FortiADC version: V5.2

Used in events: ALL

B64_enc(str)

Returns base64 encryption of string

Syntax

B64_enc(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

result = b64_enc(input);

--Input can be general format:

str=”test string”

a=12

en=b64_enc(“%s, 123 %d”, str, a);

}

FortiADC version: V4.8

Used in events: ALL

B64_dec(str)

Returns base64 decryption of string

Syntax

B64_dec(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

result = b64_dec(input);

str=”test string”

a=12

de=b64_dec(“%s, 123 %d”, str, a);

}

FortiADC version: V4.8

Used in events: ALL

Get_pid()

Returns the PID value of the VS process.

Syntax

Get_pid();

Arguments: N/A

Examples

when HTTP_REQUEST {

pid = get_pid();

debug(“VS PID is : %d\n”, pid)

}

FortiADC version: V5.2

Used in events: ALL

table_to_string(t)

Returns the table in a string.

Syntax

Table_to_string(t);

Arguments

Name Description

t

A table which specifies the info.

Examples

when HTTP_REQUEST {

t={};

t[1]=97;

t[2]=98;

t[3]=99;

t[4]=1;

str = table_to_string(t);

debug(“str is %s\n”, str)

}

Result:

str is abc

FortiADC version: V4.8

Used in events: ALL

Htonl(int)

Convert a 32 bit long integer from host byte order to network byte order

Syntax

htonl(int);

Arguments

Name Description

int

An integer which will be calculated.

Examples

when HTTP_REQUEST {

str="0x12345678"

test=htonl(str)

debug("return : %x \n", test)

}

Result:

return: 78563412

FortiADC version: V4.8

Used in events: ALL

Ntohs(int)

Convert a 16 bit short integer from network byte order to host byte order

Syntax

ntohs(int);

Arguments

Name Description

int

An integer which will be calculated.

Examples

when HTTP_REQUEST {

str="0x12345678"

test=ntohs(str)

debug("return : %x \n", test)

}

Result:

Return: 7856

FortiADC version: V4.8

Used in events: ALL

htons(int)

Convert a 16 bit short integer from host byte order to network byte order

Syntax

htons(int);

Arguments

Name Description

int

An integer which will be calculated.

Examples

when HTTP_REQUEST {

str="0x12345678"

test=htons(str)

debug("return : %x \n", test)

}

Result

Return: 7856

FortiADC version: V4.8

Used in events: ALL

Ntohl(int)

When receive some long integrates in HTTP response from the network, convert a 32 bit long integer from network byte order to host byte order.

Syntax

ntohl(int);

Arguments

Name Description

int

An integer which will be calculated.

Examples

when HTTP_REQUEST {

str="0x12345678"

test=ntohl(str)

debug("return : %x \n", test)

log("record a log: %x \n", test)

}

Result:

return: 78563412

FortiADC version: V4.8

Used in events: ALL

to_HEX(str)

Returns the HEX calculate of the string.

Syntax

To_HEX(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

str = “\0\123\3”

hex = to_HEX(str)

debug(“this str in hex is: %s\n”, hex)

}

FortiADC version: V4.8

Used in events: ALL

Debug(str)

Prints debug info when vs using scripting.

Syntax

debug(str);

Arguments

Name Description

str

A string which will be printed.

Examples

when HTTP_REQUEST {

debug(“http request method is %s.\n”, HTTP:method_get())

}

FortiADC version: V4.3

Used in events: ALL

Log(str)

Prints the scripting running info in log format. When using this command, you should enable scripting log.

Syntax

log(str);

Arguments

Name Description

str

A string which will be logged.

Examples

when HTTP_REQUEST {

log(“http request method is %s.\n”, HTTP:method_get())

}

FortiADC version: V4.8

Used in events: ALL

File_open(path, str)

Opens a file, returns a file object.

Syntax

File_open(path, str);

Arguments

Name Description

str

A string which specifies the method to open the file.

Path

A string which specifies the file path.

Examples

when HTTP_REQUEST {

filepath = "/etc/resolv.conf";

fp = file_open(filepath,"r");

if not fp then

debug("file open failed\n");

end

repeat

line = file_gets(fp, 256);

if line then

debug("line %s", line);

end

until not line

file_close(fp);

}

FortiADC version: V5.2

Used in events: ALL

File_get(file, size)

Returns the file content.

Syntax

File_get(file, size);

Arguments

Name Description

file

A file object that get from file_open()

Examples

FortiADC version: V5.2

Used in events: ALL

File_close(file)

Closes a file.

Syntax

File_close(file);

Arguments

Name Description

file

A file object which will be closed.

Examples

FortiADC version: V5.2

Used in events: ALL

Global commands

Crc32(str)

Returns the crc32 check value of the string, or 0 if it is an empty string.

Syntax

crc32(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

str = "any string for crc32 calculation"

crc = crc32(str);

debug("crc is %d\n", crc);

}

FortiADC version: V5.2

Used in events: ALL

Key_gen(str_pass, str_salt, iter_num, len_num)

Create an AES key to encrypt/decrypt data, either generated by password or user defined.

Syntax

key_gen(str_pass, str_salt, iter_num, len_num);

Arguments

Name Description

str_pass

The password string.

str_salt

The salt string.

iter_num

The number of iterations.

len_num

The key length.

Examples

when HTTP_REQUEST {

new_key = key_gen("pass", "salt", 32, 32); -- first parameter is the password string, second the salt string, third the number of iterations, fourth the key length

debug("new key in hex is %s\n", to_HEX(new_key));

}

FortiADC version: V5.2

Used in events: ALL

Aes_enc(t)

encrypt the data using the previously-created AES key

Syntax

Aes_enc(t);

Arguments

Name Description

t

A table which specifies the message, key, size that used to encrypt.

Examples

when HTTP_REQUEST {

t={};

t["message"] = "MICK-TEST";

t["key"] = "aaaaaaaaaabbbbbb" --16bit

t["size"]= 128 -- 128, 192, or 256, the corresponding key length is 16, 24, and 32

enc = aes_enc(t)

debug("The aes_enc output to HEX\n %s\n",to_HEX(enc));

}

Note:

  • Message: a string which will be encrypted
  • Key: a string to encrypt str
  • Size: must be 128, 192, or 256, the corresponding key length is 16, 24, and 32.

FortiADC version: V5.2

Used in events: ALL

aes_dec(t)

decrypt the data using the previously-created AES key

Syntax

Aes_dec(t);

Arguments

Name Description

t

A table which specifies the message, key, size that used to decrypt.

Examples

when HTTP_REQUEST {

t={};

t["message"] = "MICK-TEST";

t["key"] = "aaaaaaaaaabbbbbb"

t["size"]= 128 -- 128, 192, or 256, the corresponding key length is 16, 24, and 32

enc = aes_enc(t)

--aes decryption

a={};

a["message"] = enc;

a["key"] = "aaaaaaaaaabbbbbb"

a["size"]= 128;

dec = aes_dec(a);

debug("key length %s decrypted is %s\n",”128” ,dec);

}

Note:

  • Message: a string which will be decrypted
  • Key: a string to decrypt str
  • Size: must be 128, 192, or 256, the corresponding key length is 16, 24, and 32

FortiADC version: V5.2

Used in events: ALL

EVP_Digest(alg, str)

EVP_Digest for oneshot digest calculation.

Syntax

EVP_Digest(alg, str);

Arguments

Name Description

alg

A string which specifies the algorithm.

str

A string which will be EVP_Digested.

Examples

when HTTP_REQUEST {

alg = "MD5"; -- or "SHA1", "SHA256", "SHA384", "SHA512"

data = "your data"

re = EVP_Digest(alg, data);

debug("the digest in hex is %s\n", to_HEX(re));

}

Note:

Alg: type of hashing algorithms to use, must be MD5, SHA1, SHA256, SHA384, SHA512

FortiADC version: V5.2

Used in events: ALL

HMAC(alg, str, key)

HMAC message authentication code.

Syntax

HMAC(alg, str, key);

Arguments

Name Description

alg

A string which specifies the algorithm.

str

A string which will be calculated.

key

A string which is a secret key.

Examples

when HTTP_REQUEST {

alg = "MD5"; -- or "SHA1", "SHA256", "SHA384", "SHA512"

data = "your data"

key = "123456789ABCDEF0123456789ABCDEF\121"; -- or you can generate a key using key_gen

re = HMAC(alg, data, key);

debug("the HMAC in hex is %s\n", to_HEX(re));

}

Note:

Alg: type of hashing algorithms to use, must be MD5, SHA1, SHA256, SHA384, SHA512

FortiADC version: V5.2

Used in events: ALL

HMAC_verify(alg, data, key, verify)

Check if the signature is same as the current digest.

Syntax

HMAC_verify(alg, data, key verify);

Arguments

Name Description

alg

A string which specifies the algorithm.

key

A string which is a secret key.

data

A string which will be calculated.

verify

A signature to compare the current digest against.

Examples

when HTTP_REQUEST {

alg = "MD5"; -- or "SHA1", "SHA256", "SHA384", "SHA512"

data = "your data"

verify = "your result to compare"

key = "123456789ABCDEF0123456789ABCDEF\121"; -- or you can generate a key using key_gen

re = HMAC_verify(alg, data, key, verify);

if re then

debug("verified\n")

else

debug("not verified\n")

end

}

Note:

Alg: type of hashing algorithms to use, must be MD5, SHA1, SHA256, SHA384, SHA512

FortiADC version: V5.2

Used in events: ALL

G2F(alg, key)

Returns a G2F random value.

Syntax

G2F(alg, key);

Arguments

Name Description

alg

A string which specifies the algorithm.

key

A string which is a secret key.

Examples

when HTTP_REQUEST {

alg = "MD5"; -- or "SHA1", "SHA256", "SHA384", "SHA512"

key = "123456789ABCDEF0123456789ABCDEF\121"; -- or you can generate a key using key_gen

re = G2F(alg, key);

debug("the G2F value is %d\n", re);

}

Note:

Alg: type of hashing algorithms to use, must be MD5, SHA1, SHA256, SHA384, SHA512

FortiADC version: V5.2

Used in events: ALL

Class_match(str, method, list)

Used to match the string against an element.

Syntax

Class_match(str, method, list);

Arguments

Name Description

str

A string which will be matched.

method

A string which specifies the match method

list

A list which specifies the match target.

Examples

when HTTP_REQUEST {

url_list = “”

url = HTTP:uri_get()

status, count, t = class_match(url, "starts_with", url_list); --or "ends_with", "equals", "contains"

debug("status %s, count %s\n", status, count);

for k,v in pairs(t) do

debug("index %s, value %s\n", k,v);

end

}

Note:

Method: must be “starts_with”, “equals”, “contains”, “end_with”

This command return three parameter, first “status”: true or false means if match or not; second “count”: return the number of times matches; third “t”: return matched index and matched value in the list.

FortiADC version: V5.2

Used in events: ALL

Class_search(list, method, str)

Used to search an element in the list against a string.

Syntax

Class_search(list, method, str);

Arguments

Name Description

str

A string which will be calculated.

list

A string which will be matched.

method

A string which specifies the match method.

Examples

when HTTP_REQUEST {

status, count, t = class_search(url_list, "starts_with", url); --or "ends_with", "equals", "contains"

for k,v in pairs(t) do

debug("index %s, value %s\n", k,v);

end

}

Note:

Method: , must be “starts_with”, “equals”, “contains”, “end_with”

FortiADC version: V5.2

Used in events: ALL

Cmp_addr()

Used to match one IP address against a group of IP addresses.

It can automatically detect IPv4 and IPv6 and can be used to compare IPv4 addresses with IPv6 addresses

Syntax

Cmp_addr(client_Ip, addr_group );

Arguments

Name Description

Client_ip

For an IPv4 ip_addr/[mask], the mask can be a number between 0 and 32 or a dotted format like 255.255.255.0

For an IPv6 ip_addr/[mask], the mask can be a number between 0 and 128.

Addr_group

A group of IP address.

addr_group = "192.168.1.0/24" --first network address

addr_group = addr_group..",::ffff:172.30.1.0/120" --second

network address

Examples

when RULE_INIT{

--initialize the address group here

--for IPv4 address, mask can be a number between 0 to 32 or a dotted format

--support both IPv4 and IPv6, for IPv6, the mask is a number between 0 and 128

addr_group = "192.168.1.0/24"

addr_group = addr_group..",172.30.1.0/255.255.0.0"

addr_group = addr_group..",::ffff:172.40.1.0/120"

}

when HTTP_REQUEST{

client_ip = HTTP:client_addr()

matched = cmp_addr(client_ip, addr_group)

if matched then

debug("client ip found in address group\n");

else

debug("client ip not in address group\n");

end

}

FortiADC version: V4.8

Used in events: ALL

url_enc(str)

converted the url info a valid ASCII format

Syntax

url_enc(str);

Arguments

Name Description

str

A string which will be converted.

Examples

when HTTP_REQUEST {

url_list =https://abc.www.123.bbEEE.com/?5331=212&qe1=222

debug("Ori= %s \nencodeed= %s\n", url_list,url_enc(url_list));

}

FortiADC version: V5.2

Used in events: ALL

url_dec(str)

converted the encoding-url into a original url.

Syntax

url_dec(str);

Arguments

Name Description

str

A string which will be converted.

Examples

when HTTP_REQUEST {

str = "http%3A%2F%2Fwww.example.com%3A890%2Furl%2Fpath%2Fdata%3Fname%3Dforest%23nose“

debug("String= %s\ndecoded= %s\n", str,url_dec(str));

}

FortiADC version: V5.2

Used in events: ALL

url_parser(str)

Parse a url, return a table contains host, port, path, query, fragment, the username, password etc from the url.

Syntax

url_parser(str);

Arguments

Name Description

str

A url which will be parser.

Examples

when HTTP_REQUEST {

url_list="http://foo:bar@w1.superman.com/very/long/path.html?p1=v1&p2=v2#more-details"

purl = url_parser(url_list);

debug("parsed url scheme %s host %s\n port %s path %s query %s\n fragment %s, the username %s\n passowrd %s\n", purl["scheme"], purl["host"], purl["port"],purl["path"], purl["query"], purl["fragment"], purl["username"], purl["password"]);

}

FortiADC version: V5.2

Used in events: ALL

url_compare(url1, url2)

Compare two url string, return true if they are the same.

Syntax

url_compare(url1, url2);

Arguments

Name Description

url1, url2

Two urls which will be compared.

Examples

when HTTP_REQUEST {

url_list={};

url_list[1]="http://10.10.10.10:80/"

url_list[2]="http://10.10.10.10/"

url_list[3]="https://5.5.5.5:443/"

url_list[4]="https://5.5.5.5/"

url_list[5]="http://[2001::1]:80"

url_list[6]="http://[2001::1]"

url_list[7]="https://[2001:99:1]:443"

url_list[8]="https://[2001:99:1]"

for i = 1,8,2 do

if url_compare(url_list[i],url_list[i+1]) then

debug("URL_List %d %d Match !\n",i,i+1);

else

debug("URL_List %d %d NOT Match !\n",i,i+1);

end

end

}

FortiADC version: V5.2

Used in events: ALL

Rand()

Generate a random number. Returns is a integer number. After FAD reboot, the random number will be different.

Syntax

rand();

Arguments: N/A

Examples

when HTTP_REQUEST {

a = rand()

debug(“a = %d\n”, a)

}

FortiADC version: V5.2

Used in events: ALL

srand(str)

Set the random seed.

Syntax

srand(str);

Arguments

Name Description

str

A string which specifies the seed.

Examples

when HTTP_REQUEST {

srand(1111)

a = rand()

debug(“a = %d\n”, a)

}

FortiADC version: V5.2

Used in events: ALL

Rand_hex(int)

Generate a random number in HEX. Returns is a string, length is the <int>.

Syntax

Rand_hex(int);

Arguments

Name Description

Int

An integer which specifies the length of the returned string.

Examples

when HTTP_REQUEST {

b = rand_hex(15)

debug("-----rand_hex b = %s-----\n", b)

}

Result:

-----rand_hex b = 43474FB47A8A8C4-----

FortiADC version: V5.2

Used in events: ALL

Rand_alphanum(int)

Generate a random alphabet+number sequence. Returns is a string, length is the <int>.

Syntax

Random_alphanum(int);

Arguments

Name Description

Int

An integer which specifies the length of the returned string.

Examples

when HTTP_REQUEST {

c = rand_alphanum(17)

debug("-----rand_alphanum c = %s-----\n", c)

}

Result:

-----rand_alphanum c = XTHQpb6ngabMqH7nx-----

FortiADC version: V5.2

Used in events: ALL

Rand_seq(int)

Generate a random in sequence. Returns is a string, length is the <int>.

Syntax

Rand_seq(int);

Arguments

Name Description

Int

An integer which specifies the length of the returned string.

Examples

when HTTP_REQUEST {

d = rand_seq(18)

debug("-----rand_seq d = %s-----\n", d)

}

Result:

FortiADC version: V5.2

Used in events: ALL

Time()

Returns the current time in a number which is the time since the Epoch measured in seconds.

Syntax

time();

Arguments: N/A

Examples

when HTTP_REQUEST {

t = time()

debug(“-----time: t %s-----\n”, t)

}

Result:

-----time: t 1561424783-----

FortiADC version: V4.8

Used in events: ALL

Ctime()

Returns a string descripting the current time like “Tue Jun 25 14:11:01 2019”.

Syntax

ctime();

Arguments: N/A

Examples

when HTTP_REQUEST {

ct = ctime()

debug(“-----ctime: ct %s-----\n”, ct)

}

Result:

-----ctime: ct Mon Jun 24 18:06:23 2019-----

FortiADC version: V4.8

Used in events: ALL

gmtime()

Returns the GMT time like “Thu 27 Jun 2019 18:27:42 GMT”.

Syntax

gmtime();

Arguments: N/A

Examples

when HTTP_REQUEST {

gt = gmtime()

debug(“-----gmtime: gt %s-----\n”, gt)

}

Result:

-----gmtime: gt Thu 27 Jun 2019 18:27:42 GMT -----

FortiADC version: V5.3

Used in events: ALL

Md5(str)

Rreturn the MD5 calculated for the string provided.

Syntax

Md5(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

str1 = “abc”

md5 = md5(str1)

str = “test string”

a=12

md = md5(“%s,123%d”,str,a)

}

FortiADC version: V4.8

Used in events: ALL

Md5_hex(str)

Returns the md5 value in hex to the string

Syntax

Md5_hex(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

str1 = “abc”

str2 = md5_hex(str1)

}

FortiADC version: V4.8

Used in events: ALL

Md5_str(str)

Calculate the MD5 of a string input and stores the results in an intermediate variable, in some cases you need a version to deal with it.

Syntax

Md5_str(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

md5 = md5_str(input); --input can be a cert in DER format

}

FortiADC version: V4.8

Used in events: ALL

Md5_hex_str(str)

Calculate the MD5 of a string input of a string input and outputs the results in HEX format, in some cases you need a version to deal with it.

Syntax

Md5_hex_str(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

md = md5_hex_str(input); --input can be a cert in DER format

}

FortiADC version: V4.8

Used in events: ALL

Sha1(str)

Returns the sha1 calculated for the string provided.

Syntax

Sha1(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

result = sha1(input)

}

FortiADC version: V4.8

Used in events: ALL

Sha1_hex(str)

Returns the sha1 calculated for the string in hex.

Syntax

Sha1_hex(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

str1 = “123456789”

sha1 = sha1_hex(str1)

}

FortiADC version: V4.8

Used in events: ALL

Sha1_str(str)

Calculate the SHA1 of a string input and stores the results in an intermediate variable, in some cases you need a version to deal with it.

Syntax

Sha1_str(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

result = sha1_str(input); --input can be a cert in DER format

}

FortiADC version: V4.8

Used in events: ALL

Sha1_hex_str(str)

Calculate the SHA1 of a string input and output the results in HEX format, in some cases you need a version to deal with it.

Syntax

Sha1_hex_str(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

result = sha1_hex_str(input); -- input can be a cert in DER format

}

FortiADC version: V4.8

Used in events: ALL

Sha256(str)

Calculates the SHA256 of a string input and store the result in an intermediate variable.

Syntax

Sha256(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

str1 = “abc”

str2 = sha256(str1)

}

FortiADC version: V4.8

Used in events: ALL

Sha256_hex(str)

Calculate the SHA256 of a string input and output the result in an intermediate variable. In some cases you need a version to deal with it.

Syntax

Sha256_hex(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

str1 = “abc”

sha256 = sha256_hex(str)

}

FortiADC version: V4.8

Used in events: ALL

Sha256_str(str)

Calculate the SHA256 of a string input and restore the result in an intermediate variable. In some cases you need a version to deal with it.

Syntax

Sha256_str(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

result = sha256_str(input); --input can be a cert in DER format

}

FortiADC version: V4.8

Used in events: ALL

Sha256_hex_str(str)

Calculate the SHA256 of a string input and restore the result in an intermediate variable. In some case you need a version to deal with it.

Syntax

Sha256_hex_str(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

result = sha256_hex_str(input); --input can be a cert in DER format

}

FortiADC version: V4.8

Used in events: ALL

Sha384(str)

Calculates the SHA384 of a string input and store the result in an intermediate variable.

Syntax

Sha384(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

str1 = “abc”

str2 = sha384(str1)

}

FortiADC version: V4.8

Used in events: ALL

Sha384_hex(str)

Calculate the SHA384 of a string input and output the result in an intermediate variable. In some cases you need a version to deal with it.

Syntax

Sha384_hex(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

str1 = “abc”

sha384 = sha384_hex(str)

}

FortiADC version: V4.8

Used in events: ALL

Sha384_str(str)

Calculate the SHA384 of a string input and restore the result in an intermediate variable. In some cases you need a version to deal with it.

Syntax

Sha384_str(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

result = sha384_str(input); --input can be a cert in DER format

}

FortiADC version: V4.8

Used in events: ALL

Sha384_hex_str(str)

Calculate the SHA384 of a string input and restore the result in an intermediate variable. In some case you need a version to deal with it.

Syntax

Sha384_hex_str(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

result = sha384_hex_str(input); --input can be a cert in DER format

}

FortiADC version: V4.8

Used in events: ALL

Sha512(str)

Calculates the SHA512 of a string input and store the result in an intermediate variable.

Syntax

Sha512(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

str1 = “abc”

str2 = sha512(str1)

}

FortiADC version: V4.8

Used in events: ALL

Sha512_hex(str)

Calculate the SHA512 of a string input and output the result in an intermediate variable. In some cases you need a version to deal with it.

Syntax

Sha512_hex(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

str1 = “abc”

sha512 = sha512_hex(str)

}

FortiADC version: V4.8

Used in events: ALL

Sha512_str(str)

Calculate the SHA512 of a string input and restore the result in an intermediate variable. In some cases you need a version to deal with it.

Syntax

Sha512_str(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

result = sha512_str(input); --input can be a cert in DER format

}

FortiADC version: V4.8

Used in events: ALL

Sha512_hex_str(str)

Calculate the SHA512 of a string input and restore the result in an intermediate variable. In some case you need a version to deal with it.

Syntax

Sha512_hex_str(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

result = sha512_hex_str(input); --input can be a cert in DER format

}

FortiADC version: V4.8

Used in events: ALL

b32_enc(str)

encode a string input in base32 and output the result in string format.

Syntax

B32_enc(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

str = “abc”

en = b32_enc(str)

}

FortiADC version: V5.2

Used in events: ALL

B32_enc_str(str)

Encode a string input in base32 and output the result in string format. In some cases you need a version to deal with it.

Syntax

B32_enc_str(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

result = b32_enc_str(input); --input can be a cert in DER format

}

FortiADC version: V5.2

Used in events: ALL

B32_dec(str)

Decode a base32 encoded string input and output the result in string format

Syntax

B32_dec(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

str = “abc”

dec = b32_dec(str)

}

FortiADC version: V5.2

Used in events: ALL

B32_dec_str(str)

Decode a base32 encoded string input and output the result in string format. In some cases you need a version to deal with it.

Syntax

B32_dec_str(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

result = b32_dec_str(input); --input can be a cert in DER format

}

FortiADC version: V5.2

Used in events: ALL

B64_enc(str)

Returns base64 encryption of string

Syntax

B64_enc(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

result = b64_enc(input);

--Input can be general format:

str=”test string”

a=12

en=b64_enc(“%s, 123 %d”, str, a);

}

FortiADC version: V4.8

Used in events: ALL

B64_dec(str)

Returns base64 decryption of string

Syntax

B64_dec(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

result = b64_dec(input);

str=”test string”

a=12

de=b64_dec(“%s, 123 %d”, str, a);

}

FortiADC version: V4.8

Used in events: ALL

Get_pid()

Returns the PID value of the VS process.

Syntax

Get_pid();

Arguments: N/A

Examples

when HTTP_REQUEST {

pid = get_pid();

debug(“VS PID is : %d\n”, pid)

}

FortiADC version: V5.2

Used in events: ALL

table_to_string(t)

Returns the table in a string.

Syntax

Table_to_string(t);

Arguments

Name Description

t

A table which specifies the info.

Examples

when HTTP_REQUEST {

t={};

t[1]=97;

t[2]=98;

t[3]=99;

t[4]=1;

str = table_to_string(t);

debug(“str is %s\n”, str)

}

Result:

str is abc

FortiADC version: V4.8

Used in events: ALL

Htonl(int)

Convert a 32 bit long integer from host byte order to network byte order

Syntax

htonl(int);

Arguments

Name Description

int

An integer which will be calculated.

Examples

when HTTP_REQUEST {

str="0x12345678"

test=htonl(str)

debug("return : %x \n", test)

}

Result:

return: 78563412

FortiADC version: V4.8

Used in events: ALL

Ntohs(int)

Convert a 16 bit short integer from network byte order to host byte order

Syntax

ntohs(int);

Arguments

Name Description

int

An integer which will be calculated.

Examples

when HTTP_REQUEST {

str="0x12345678"

test=ntohs(str)

debug("return : %x \n", test)

}

Result:

Return: 7856

FortiADC version: V4.8

Used in events: ALL

htons(int)

Convert a 16 bit short integer from host byte order to network byte order

Syntax

htons(int);

Arguments

Name Description

int

An integer which will be calculated.

Examples

when HTTP_REQUEST {

str="0x12345678"

test=htons(str)

debug("return : %x \n", test)

}

Result

Return: 7856

FortiADC version: V4.8

Used in events: ALL

Ntohl(int)

When receive some long integrates in HTTP response from the network, convert a 32 bit long integer from network byte order to host byte order.

Syntax

ntohl(int);

Arguments

Name Description

int

An integer which will be calculated.

Examples

when HTTP_REQUEST {

str="0x12345678"

test=ntohl(str)

debug("return : %x \n", test)

log("record a log: %x \n", test)

}

Result:

return: 78563412

FortiADC version: V4.8

Used in events: ALL

to_HEX(str)

Returns the HEX calculate of the string.

Syntax

To_HEX(str);

Arguments

Name Description

str

A string which will be calculated.

Examples

when HTTP_REQUEST {

str = “\0\123\3”

hex = to_HEX(str)

debug(“this str in hex is: %s\n”, hex)

}

FortiADC version: V4.8

Used in events: ALL

Debug(str)

Prints debug info when vs using scripting.

Syntax

debug(str);

Arguments

Name Description

str

A string which will be printed.

Examples

when HTTP_REQUEST {

debug(“http request method is %s.\n”, HTTP:method_get())

}

FortiADC version: V4.3

Used in events: ALL

Log(str)

Prints the scripting running info in log format. When using this command, you should enable scripting log.

Syntax

log(str);

Arguments

Name Description

str

A string which will be logged.

Examples

when HTTP_REQUEST {

log(“http request method is %s.\n”, HTTP:method_get())

}

FortiADC version: V4.8

Used in events: ALL

File_open(path, str)

Opens a file, returns a file object.

Syntax

File_open(path, str);

Arguments

Name Description

str

A string which specifies the method to open the file.

Path

A string which specifies the file path.

Examples

when HTTP_REQUEST {

filepath = "/etc/resolv.conf";

fp = file_open(filepath,"r");

if not fp then

debug("file open failed\n");

end

repeat

line = file_gets(fp, 256);

if line then

debug("line %s", line);

end

until not line

file_close(fp);

}

FortiADC version: V5.2

Used in events: ALL

File_get(file, size)

Returns the file content.

Syntax

File_get(file, size);

Arguments

Name Description

file

A file object that get from file_open()

Examples

FortiADC version: V5.2

Used in events: ALL

File_close(file)

Closes a file.

Syntax

File_close(file);

Arguments

Name Description

file

A file object which will be closed.

Examples

FortiADC version: V5.2

Used in events: ALL