Citrix ADC扩展API参考

行为是Citrix ADC设备上可用的常见可编程模式的正式化。例如,tcp虚拟服务器支持tcp客户端行为和tcp服务器行为。行为是一组预定义的回调函数。您可以通过提供回调函数来实现行为。例如,TCP客户端行为可以包含处理TCP数据流的on_data函数。

TCP客户端行为

on_data-tcp客户端数据事件的函数回调。回调需要两个参数:

  • ctxt-tcp客户端处理上下文
  • 有效负载-事件有效负载
    • payload.data—接收到的TCP数据,作为字节流提供

TCP服务器行为

on_data-tcp服务器数据事件的函数回调,回调需要两个参数:

  • ctxt-tcp服务器处理上下文
  • 有效负载-事件有效负载
    • payload.data—接收到的TCP数据,作为字节流可用

TCP客户端上下文

传递给TCP客户端事件回调的上下文:

  • ctxt.output-管道中的下一个处理上下文。扩展回调处理程序可以使用事件数据将ns.tCP.stream类型的数据发送到ctxt。输出,这意味着部分消息或EOM,意味着协议消息的结束。严某事件可能具有也可能不具有TCP数据。包含TCP数据的加工事件可以在没有前面数据的事件的情况下发送,以发送整个协议消息数据并标记消息结束。负载平衡决策由负载平衡虚拟服务器根据收到的第一个数据进行下游。在收到eom消息后,将做出新的负载平衡决策。因此,要流式传输协议消息数据,请发送多个data事件,最后一个事件作为eom。所有连续的数据事件和以下加工事件都会发送到序列中第一个数据事件的负载平衡决策所选的相同服务器连接。

  • ctxt.input-tcp流数据来自的管道中之前的处理上下文。

  • ctxt:hold(数据)-存储数据以供将来处理的功能。使用数据调用保持时,数据存储在上下文中。之后,在同一上下文中接收更多数据时,新接收的数据会附加到先前存储的数据,然后将组合的数据流传递给on_data回调函数。调用保留后,数据引用不再可用,并在任何使用情况下都会出现错误。

  • ctxt.vserver-虚拟服务器上下文。

  • ctxt。客户端—客户端连接处理上下文。此处理上下文可用于将数据发送到客户端,并获取一些与连接相关的信息,如IP地址,源端口和目标端口。

  • ctxt: close ()-通过向客户端发送fin来关闭客户端连接。调用此API后,客户端处理上下文不再可用,并在任何使用情况下都会出现错误。

TCP服务器上下文

传递给TCP服务器事件回调的上下文:

  • ctxt.output-管道中的下一个处理上下文。扩展回调处理程序可以使用事件数据将ns.tCP.stream类型的数据发送到ctxt。输出,这意味着部分消息或EOM,意味着协议消息的结束。

  • ctxt.input-tcp流数据来自的管道中之前的处理上下文。

  • ctxt:hold(数据)-存储数据以供将来处理的功能。使用数据调用保持时,数据存储在上下文中。之后,在同一上下文中接收更多数据时,新接收的数据会附加到先前存储的数据,然后将组合的数据流传递给on_data回调函数。调用保留后,数据引用不再可用,并在任何使用情况下都会出现错误。

  • ctxt.vserver-虚拟服务器上下文。

  • ctext .server—服务器连接处理上下文。此处理上下文可用于将数据发送到服务器,并获取一些与连接相关的信息,如IP地址,源端口和目标端口。

  • ctxt: reuse_server_connection ()—此API用于允许服务器连接仅用于服务器上下文中的其他客户端连接。只有在使用EOM事件(在ns。发送()API中)在客户端上下文中发送数据时,才能使用此API。否则,adc设备会引发错误。

    要允许其他客户端重复使用服务器连接,必须在每条响应消息的末尾调用此api。调用此API后,如果在此服务器连接上收到更多数据,则将被视为错误并关闭服务器连接。如果未使用此api,则服务器连接只能用于打开它的客户端。此外,如果为该客户端的另一个负载平衡决策选择了同一服务器,则使用相同的服务器连接发送客户端数据。使用此API后,服务器连接停止绑定到其打开的客户端连接,并且可以重新使用任何其他客户端连接的新负载平衡决策。调用此API后,服务器上下文不再可用,并在任何使用方面引发错误。

    注意:此API在Citrix ADC 12.1版本49。Xx及更高版本中可用。

  • ctxt: close ()-通过向服务器发送fin来关闭服务器连接。调用此API后,客户端处理上下文不再可用,并显示任何使用情况的错误。

    注意:此API在Citrix ADC 12.1版本50。Xx及更高版本中可用。

虚拟服务器上下文

通过传递给回调的上下文可用的用户虚拟服务器上下文:

  • vserver: counter_increment (counter_name)-增加作为参数传递的虚拟服务器计数器的值。目前支持以下内置计数器。
    • ——invalid_messages-此虚拟服务器上的无效请求/响应数量。
    • ——invalid_messages_dropped-此虚拟服务器丢弃的无效请求/响应数量。
  • 虚拟服务器.params-为用户虚拟服务器配置的参数。参数提供扩展的可配置性。扩展代码可以访问cli中指定的参数以添加用户虚拟服务器。

客户端连接上下文

用于获取连接相关信息的客户端连接处理上下文。

  • 客户端.ssl-ssl上下文
  • 客户端.tcp-tcp上下文
  • client.is_ssl—如果客户端连接是基于SSL的,则为true

服务器连接上下文

用于获取连接相关信息的服务器连接处理上下文。

  • 服务器.ssl-ssl上下文
  • 服务器.tcp-tcp上下文
  • server.is_ssl—如果服务器连接是基于SSL的,则为true

TCP上下文

TCP上下文在TCP协议上运行。

  • tcp.srcport-源端口作为数字
  • tcp.dstport-目标端口作为数字

IP上下文

IP上下文适用于IP或IPv6协议数据。

  • ip.src—源IP地址上下文。
  • ip.dst—目标IP地址上下文。

注意:此API在Citrix ADC 12.1 Build 51。Xx及更高版本中可用。

IP地址上下文

IP地址上下文适用于IP或IPv6地址数据。

  • <地址> .to_s—相应ASCII表示法中的地址字符串。
  • <地址> .to_n—地址的数字值作为网络顺序字节字符串(IPv4为4个字节,IPv6为16个字节)。
  • <地址> .version—为IPv4返回4、为IPv6返回6。
  • (< <地址>:子网前缀值>)-应用前缀编号后返回子网地址字符串。
    • 对于IPv4地址,值必须介于0到32之间
    • 对于IPv6地址,值必须介于0到128之间。
  • 面具<地址>:apply_mask(<字符串>)-应用掩码字符串后返回地址字符串。API验证参数的版本并执行适当的错误检查。
  • 解决>:情商(<地址字符串>)—根据参数是否等效于地址对象,返回true或false。API验证参数的版本。

注意:此API在Citrix ADC 12.1 Build 51。Xx及更高版本中可用。

SSL上下文

SSL上下文提供与前端SSL连接相关的信息。

  • SSL.cert-ssl证书上下文。对于客户端连接,它提供了客户端证书上下文,对于服务器连接,它提供了服务器证书上下文。
  • ssl.version—表示当前事务的SSL协议版本的数字,如下所示:

    • —0:非ssl协议
    • —0x002:事务是SSLv2
    • —0x300:事务是SSLv3
    • —0x301:事务是TLSv1
    • —0x302:该事务为TLSv1.1协议
    • —0x303:事务为TLSv1.2
  • ssl.cipher_name-ssl密码名称作为字符串,如果从SSL连接调用,否则会给出null字符串。
  • ssl.cipher_bit-加密密钥中的位数。

SSL证书上下文

  • 证书。版本-证书的版本号。如果连接不基于ssl,则返回0。
  • Cert.valid_not_before-在字符串格式之前证书无效的日期。
  • Cert.valid_not_after-日期为字符串格式,在该日期之后证书不再有效。
  • Cert.days_to_expire- 证书有效之前的天数。返回-1 表示过期证书。
  • Cert.to_pem-二进制格式的证书。
  • cert。颁发者-证书中的颁发者的可分辨名称(dn)作为名称-值列表。等号(" = ")是名称和值的分隔符,斜杠(" / ")是分隔名称-值对的分隔符。

    下面是返回DN的示例:/ C =我的公司/我的公司/我的公司/我的公司/我的公司/电子邮件地址= myuserid@mycompany.com

  • cert.auth_keyid- x.509 v3证书的授权密钥标识符扩展的上下文。

    • auth_keyid.exists-如果证书包含授权密钥标识符扩展名,则为true。

    • auth_keyid.issuer_name-证书中的颁发者可分辨名称作为名称-值列表。等号(" = ")是名称和值的分隔符,斜杠(" / ")是分隔名称-值对的分隔符。

    以下是一个例子:/C=US/O=myCompany/OU=www.mycompany.com/CN=www.mycompany.com/emailAddress=myuserid@mycompany.com

    • auth_keyid.keyid-作为Blob的权限密钥标识符字段
    • Auth_keyid.cert_序列号-作为Blob的授权密钥标识符的序列号字段。
  • cert.pk_algorithm-证书使用的公钥算法的名称。
  • cert.pk_size-证书中使用的公钥的大小。
  • cert.序列号-客户端证书的序列号。如果这是一个非SSL事务或证书中存在错误,则会给出一个空字符串。
  • cert.signature_algorithm-ca用于签署此证书的加密算法的名称。
  • cert.subject_keyid—客户端证书的主题密钥id。如果没有主题键id,则会给出一个零长度的文本对象。
  • cert。主题-作为名称值的主题的可分辨名称。等号(" = ")分隔名称和值,斜杠(" / ")分隔名称-值对。

以下是一个例子:/C=US/O=myCompany/OU=www.mycompany.com/CN=www.mycompany.com/emailAddress=myuserid@mycompany.com

Citrix ADC库

  • ns.tcp.stream—类似字符串的库,用于将TCP数据作为字节流处理。这些API可以工作的TCP流数据的最大大小为128 KB.ns.tcp。流媒体库函数也可以在通常的面向扩展对象的调用风格中调用。例如,数据:len()与ns.tCP.stream.len(数据)相同
    • ns.tcp.stream.len(数据)-以字节为单位返回数据的长度,类似于Lua的字符串。len
    • ns.tcp.stream。查找(数据,模式[,init])-类似于Lua的字符串。查找功能。此外,它还在数据末尾执行部分匹配。部分匹配后,返回起始索引,结束索引变为零。
    • ns.tcp.stream.split(数据,长度)-将数据拆分成两个块,第一个块是指定长度的。成功拆分后,原始数据不再用作TCP数据流。任何尝试以这种方式使用它都会导致错误。
    • ns.tcp.stream。字节(数据[,i [,j]])-类似于Lua的字符串。返回字符data[i], data[i+1],…,data[j]的内部数字代码。
    • n.tcp.stream。Sub(数据,i [,j])-函数类似于Lua的字符串。返回从我开始并持续到j的子字符串。
    • ns.tcp.stream.match(数据,模式,[,init])-类似于Lua的字符串匹配的功能。在字符串s中查找模式的第一个匹配
  • ns。发送(processing_ctxt, event_name event_data)-用于将事件发送到处理上下文的通用函数。事件数据是可以包含任何内容的Lua表。内容取决于事件。调用ns。send () API后,数据引用不再可用。任何尝试使用它都会导致错误。

  • ns。管(src_ctxt dest_ctxt)-使用对pipe() API的调用,扩展代码可以将源上下文连接到目标上下文。调用管道后,从源上下文发送到管道中的下一个模块的所有事件都直接转到目标上下文。此API通常由进行pipe()调用的模块使用,从管道中移除自身。

  • ns.inet-图书馆的互联网地址。

    • ns.inet。apply_mask (address_str mask_str)-在应用掩码字符串后返回地址字符串。
    • ns.inet.aton (address_str)—以网络顺序的字节字符串形式返回地址的数字值(IPv4为4个字节,IPv6为16)。
    • ns.inet.ntoa (byte_str)-将数字字节值转换为字节字符串以处理字符串。
    • ns.inet.ntohs(数字)-将给定的网络字节顺序转换为主机字节顺序。如果输入大于 2 ^ 16-1,则引发错误。
    • ns.inet.htons(数字)-将给定的主机字节顺序转换为网络字节顺序。如果输入大于 2 ^ 16-1,则引发错误。
    • ns.inet.ntohl(数字)-将给定的网络字节顺序转换为主机字节顺序。如果输入大于 2 ^ 32-1,则引发错误。
    • ns.inet.htonl(数字)-将给定的主机字节顺序转换为网络字节顺序。如果输入大于 2 ^ 32-1,则引发错误。
    • ns.inet。子网(address_str subnet_value)-应用给定子网后返回子网地址字符串。