Citrix ADC Erweiterungen API-Referenz

Verhaltensweisen sind eine Formalisierung gängiger programmierbarer Muster, die auf einer Citrix ADC Appliance verfügbar sind。Ein virtueller TCP-Server unterstützt beispielsweise Ein TCP-Clientverhalten und Ein TCP-Serververhalten。Ein Verhalten ist Ein vordefinierter Satz von Callback-Funktionen。Sie können Verhaltensweisen implementieren, indem Sie Callback-Funktionen bereitstellen。Beispielsweise kann in TCP-Clientverhalten aus der Funktion on_data bestehen, die den TCP-Datenstrom verarbeitet。

TCP-Clientverhalten

on_data-函数回调für TCP-Client-Datenereignisse。Der Rückruf nimmt zwei论证an:

  • ctxt——TCP-Clientverarbeitungskontext
  • Nutzlast——Ereignisnutzlast
    • payload.data- Empfangene TCP-Daten, verfügbar als Bytestrom

Verhalten des TCP-Servers

on_data- function Callback für TCP-Server-Datenereignisse, nimmt der Callback zwei参数:

  • ctxt- TCP-Server Verarbeitungskontext
  • Nutzlast——Ereignisnutzlast
    • payload.data- empfangene TCP-Daten, verfügbar als Bytestrom

TCP-Clientkontext

Der Kontext, Der an die TCP-Clientereignisrückrufe übergeben奇怪的:

  • ctxt.output- Der nächste Verarbeitungskontext在Der Pipeline。Extension-Callback-Handler können ns.tcp。stream-Typdaten一个ctxt。output senden, indem sie die Ereignisse DATA verwenden,是Teilnachricht oder EOM bedeutet,是das Ende der Protokollnachricht bedeutet。Das EOM-Ereignis kann TCP-Daten enthalten oder niht。Ein EOM-Ereignis mit TCP-Daten kann ohne vorheriges DATA-Ereignis gesendet werden, um eine ganze原kolnachrichtsdaten zu senden and das Ende der Nachricht zu markieren。Die Entscheidung für den Lastausgleich wid nachgeschaltet vom virtuellen Lastausgleichsserver bei den ersten empfangenen Daten getroffen。那是我的错,我的错。嗯原始的,原始的,原始的,原始的,原始的,原始的,原始的allle zusammenhängenden data - erignisse und die folgenden eom - erignisse werden an dieselbe server ververtung gesendet, die durch Lastenausgleichsentscheidung für das erste data - erignis in der sequenes ausgewählt wurde。

  • ctxt.input- Der vorherige Verarbeitungskontext in Der Pipeline, von dem die TCP-Streamdaten stammen。

  • ctxt:持有(数据)- Funktion,嗯die Daten für die zukünftige Verarbeitung zu speichern。在我的世界里,我的世界在我的世界里。Später, wenn mehr Daten im gleichen Kontext empfangen werden, werden neu empfangene Daten an die zuvor gespeicherten Daten angehängt and der kombinierte Datenstrom wid dann an die on_data call- funktion übergeben。那是我的名字,那是我的名字,那是我的名字。

  • ctxt.vserver- Der virtuelle Serverkontext。

  • ctxt.client- Verarbeitungskontext der Clientverbindung。德语Verarbeitungskontext kann verwendet werden, um Daten an den客户端zu senden und einige verindungsbezogene信息wiip - address, Quell- und Zielports abzurufen。

  • ctxt: close ()- Schließen Sie die Clientverbindung, indem Sie FIN an den Client senden。Nach dem Aufruf dieser API ist der Client Verarbeitungskontext niht mehr verwendbar and gibt Fehler bei jder Verwendung。

TCP-Serverkontext

Der Kontext, Der an die TCP-Serverereignisrückrufe übergeben奇怪的:

  • ctxt.output- Der nächste Verarbeitungskontext在Der Pipeline。Extension-Callback-Handler können ns.tcp。stream-Typdaten一个ctxt。output senden, indem sie die Ereignisse DATA verwenden,是Teilnachricht oder EOM bedeutet,是das Ende der Protokollnachricht bedeutet。

  • ctxt.input- Der vorherige Verarbeitungskontext in Der Pipeline, von dem die TCP-Streamdaten stammen。

  • ctxt:持有(数据)- Funktion,嗯die Daten für die zukünftige Verarbeitung zu speichern。在我的世界里,我的世界在我的世界里。Später, wenn mehr Daten im gleichen Kontext empfangen werden, werden neu empfangene Daten an die zuvor gespeicherten Daten angehängt and der kombinierte Datenstrom wid dann an die on_data call- funktion übergeben。那是我的名字,那是我的名字,那是我的名字。

  • ctxt.vserver- Der virtuelle Serverkontext。

  • ctxt.server——Serververbindungskontext。德语Verarbeitungskontext kann verwendet werden, um Daten an den服务器zu senden und einige verindungsbezogene信息威ip地址,柏林和苏黎世。

  • ctxt: reuse_server_connection ()- Diese API wid verwendet, um die Serververbindung nur für andere Clientverbindungen im Serverkontext wiederverwendet werden kann。Diese API kann nur verwendet werden, wenn ein EOM-Ereignis(在ns。发送()API) verwendet奇怪,嗯die Daten im Client-Kontext zu senden。安德恩福尔斯löst die ADC-Appliance einen Fehler aus。

    Damit eine server verindung von anderen Clients wiederverwendet werden kann, muss diese API am Ende jder Antwortnachricht aufgerufen werden。Wenn nach dem Aufruf diesel API mehr Daten auf diesel serververindung empfangen werden, wid dies als Fehler behandelt and die serververindung wid geschlossen。Wenn diese API nicht verwendet wd, kann die server ververindung nur für den Client verwendet werden, für den sie geöffnet wurde。Wenn derselbe Server für eine weitere Lastenausgleichsentscheidung für diesen Client ausgewählt ist, wid dieselbe Serververbindung zum Senden der Clientdaten verwendet。这是我的名字,这是我的名字,für这是我的名字geöffnet这是我的名字für这是我的名字für这是我的名字。Nach dem Aufruf diesel API ist der Serverkontext nicht mehr verwendbar und löst bei jder Verwendung einen Fehler aus。

    Hinweis: Citrix ADC 12.1 Build 49中的Diese API ist。Xx und höher verfügbar。

  • ctxt: close ()- Schließen Sie die Serververbindung, indem Sie FIN an den Server senden。那是奥弗夫柴尔德客户- verarbeitungskontext, nicht mehr verwendbar和zeigt bei jder Verwendung einen Fehler an。

    Hinweis: Citrix ADC 12.1 Build 50中的Diese API ist。Xx und höher verfügbar。

vServer-Kontext

Der virtuelle Benutzerserverkontext, Der über die an Callbacks übergebenen Kontexte verfügbar ist:

  • vserver: counter_increment (counter_name)- Erhöht den Wert eines virtuellen server - leistungsindickators, der als参数übergeben word。自由的自由与自由的自由unterstützt。
    • ——invalid_messages- Anzahl der ungültigen Anforderungen/Antworten auf diesem virtuellen服务器。
    • ——invalid_messages_dropped- Anzahl der ungültigen Anforderungen/Antworten, die von diesem virtuellen Server gelöscht wurden。
  • vserver.params- Die konfigurierten参数für den virtuellen Benutzerserver。参数bieten Konfigurierbarkeit von Erweiterungen。Der Erweiterungscode kann auf Parameter zugreifen, die in Der CLI angegeben sind, um einen virtuellen Benutzerserver hinzuzufügen。

Clientverbindungskontext

Client-Verbindungsverarbeitungskontext, um verbindungsbezogene Informationen zu erhalten。

  • client.ssl——SSL-Kontext
  • client.tcp——TCP-Kontext
  • client.is_ssl-是啊,Clientverbindung SSL-basiert ist

Serververbindungskontext

Serververbindungskontext, um verbindungsbezogene Informationen abrufen zu können。

  • server.ssl——SSL-Kontext
  • server.tcp——TCP-Kontext
  • server.is_ssl-正确,wenn die Serververbindung SSL-basiert ist

TCP-Kontext

TCP-Kontext arbeitet mit TCP-Protokoll。

  • tcp.srcport- Quellport als Zahl
  • tcp.dstport- Zielport als Zahl

IP-Kontext

Der IP- kontext funktioniert mit IP- oder IPv6-Protokolldaten。

  • ip.src——Quell-IP-Adresskontext。
  • ip.dst- ziel - ip - address Kontext。

Hinweis: Citrix ADC 12.1 Build 51中的Diese API ist。Xx und höher verfügbar。

IP-Adresskontext

Der IP- adresskontext funktioniert mit IP- oder IPv6-Adressdaten。

  • <地址> .to_s- Die Adresszeichenfolge in der entsprechenden ascii符号。
  • <地址> .to_n- Der numerische Wert Der addresse als Zeichenfolge von Bytes in Netzwerreihenfolge (4 Bytes für IPv4和16 Bytes für IPv6)。
  • <地址> .version- Gibt 4 für IPv4 und 6 für IPv6 zurück。
  • (< <地址>:子网前缀值>)- Gibt die Subnetzadressenzeichenfolge nach dem Anwenden der Präfixnummer zurück。
    • Für ipv4地址muss der Wert zwischen 0 und 32 liegen。
    • 北ipv6地址muss der Wert zwischen 0和128 liegen。
  • 面具<地址>:apply_mask(<字符串>)-森林地址和森林地址zurück。API überprüft die版本des参数和führt entsprechende Fehlerüberprüfung durch。
  • 解决>:情商(<地址字符串>)- Gibt真命令假zurück, je nachdem, ob das论点äquivalent zum Adressobjekt ist。API überprüft die Version der argument。

Hinweis: Citrix ADC 12.1 Build 51中的Diese API ist。Xx und höher verfügbar。

SSL-Kontext

Der SSL-Kontext stellt Informationen zur front - ssl - verbindung bereit。

  • ssl.cert——SSL-Zertifikatskontext。Für die Clientverbindung stellt sie Clientzertifikatkontext bereit und stellt für die Serververbindung Serverzertifikatkontext bereit。
  • ssl.version- Eine Zahl, die die SSL-Protokollversion der aktuellen Transaktion darstellt, wie folgt:

    • —0:非ssl事务
    • —0x002:事务是SSLv2
    • —0x300:事务是SSLv3
    • —0x301:事务为TLSv1
    • —0x302:事务为TLSv1.1
    • —0x303:事务为TLSv1.2
  • ssl.cipher_name- SSL-Chiffriername als Zeichenfolge, wenn von einer SSL-Verbindung aufgerufen wid, andernfalls gibt NULL-Zeichenfolge。
  • ssl.cipher_bits- Anzahl der Bits im kryptografischen Schlüssel。

SSL-Zertifikatkontext

  • Cert.version-版本号des Zertifikats。Wenn die Verbindung nicht SSL-basiert, gibt 0 zurück。
  • Cert.valid_not_before-数据im Zeichenfolgenformat, vor dem das Zertifikat ungültig ist。
  • Cert.valid_not_after-德国环境数据,德国环境数据gültig ist。
  • Cert.days_to_expire-自由之路,自由之路gültig ist。Gibt -1 für abgelaufenes Zertifikat zurück。
  • Cert.to_pem- Zertifikat im Binärformat。
  • cert.issuer-区分名称(DN) des Ausstellers im Zertifikat als Name- wert - list。Ein Gleichheitszeichen (" = ") ist das Trennzeichen für den Namen und den Wert, und under Schrägstrich (" / ") ist das Trennzeichen, das die Name-Wert-Paare trent。

    Es folgt ein Beispiel für den zurückgegebenen DN: /C=US/O=myCompany/OU=www.mycompany.com/CN=www.mycompany.com/emailAddress=myuserid@mycompany.com

  • cert.auth_keyid- X.509 V3权限密钥标识符。

    • auth_keyid.exists- TRUE, wenn das Zertifikat eine Erweiterung des Authority Key Identifier enthält。

    • auth_keyid.issuer_name-杰出的名字des Ausstellers im Zertifikat als Name- wert - list。Ein Gleichheitszeichen (" = ") ist das Trennzeichen für den Namen und den Wert, und under Schrägstrich (" / ") ist das Trennzeichen, das die Name-Wert-Paare trent。

    Es folgt ein Beispiel: /C=US/O=myCompany/OU=www.mycompany.com/CN=www.mycompany.com/emailAddress=myuserid@mycompany.com

    • auth_keyid.keyid- KeyIdentifier Feld des Authority密钥标识符Blob
    • auth_keyid.cert_serialnumber- Feld SerialNumber des Autoritätsschlüssel-Identifikators als Blob。
  • cert.pk_algorithm-名称des öffentlichen Schlüsselalgorithmus, der vom Zertifikat verwendet wid。
  • cert.pk_size- Größe des öffentlichen Schlüssels, der im Zertifikat verwendet wid。
  • cert.serialnumber- Seriennummer des Client-Zertifikats。Wenn es sich um eine Nicht-SSL-Transaktion handelt oder ein Fehler im Zertifikat vorliegt, wine leere Zeichenfolge ausgegeben。
  • cert.signature_algorithm-命名des ryptografischen算法,der von der Zertifizierungsstelle zum Signieren dieses Zertifikats verwendet wid。
  • cert.subject_keyid- Betreff KeyID des Client-Zertifikats。Wenn keine主题KeyID vorhanden ist, gibt死在Null-Längen-Textobjekt。
  • cert.subject-学科名称- wert。Ein Gleichheitszeichen (=) trent Namen und Werte und Ein Schrägstrich (/) trent Name-Wert-Paare。

Es folgt ein Beispiel: /C=US/O=myCompany/OU=www.mycompany.com/CN=www.mycompany.com/emailAddress=myuserid@mycompany.com

Citrix ADC-Bibliotheken

  • ns.tcp.stream-字符串ähnliche Bibliothek für die Verarbeitung von TCP-Daten als Bytestrom。Die maximale Größe der TCP-Streamdaten, mit denen diese api arbeiten können, beträgt 128 KB。Die bibliothesfunktionen ns.tcp.stream können auch im üblichen Erweiterungsobjektorientierten Stil des Aufrufs aufgerufen werden。Zum Beispiel ist data:len () identisch mit ns.tcp.stream.len (data)
    • ns.tcp.stream.len(数据)- Gibt die Länge der Daten in Bytes zurück, ähnlich wie Luas string.len
    • Ns.tcp.stream.find (data, pattern, [init])- Funktion ähnlich wie Luas string.find。Darüber hinaus führt es auch einen Teilabgleich am Ende der Daten durch。beipartieller Übereinstimmung wid der Startindex zurückgegeben und under Endindex wid null。
    • Ns.tcp.stream.split(数据,长度)- zwei Chunks中的Teilt die Daten, der erste Chunk ist von der angegebenen Länge。那是我的生日ursprünglichen我的生日tcp -我的生日。杰德·弗萨奇,他的身体健康,他的身体健康。
    • Ns.tcp.stream.byte (data[, I [, j]])- Funktion ähnlich wie Luas string.byte。张志强,张志强,张志强,等[j] . zurück。
    • n张晓东,张晓东,张晓东(data, i, [j])- Funktion ähnlich wie Luas string.sub。Gibt die Teilzeichenfolge von s zurück, die bei i开始和bis j fortgesetzt wile。
    • Ns.tcp.stream.match (data, pattern,[init])- Funktion ähnlich wie Luas string.match。Sucht nach der erstenUbereinstimmung字符串中的集合。
  • ns。发送(processing_ctxt, event_name, event_data)- Generische Funktion,嗯,erignisse和erinen Verarbeitungskontext zu senden。我爱你,我爱你,我爱你。Der Inhalt hängt vom erignis ab. Nachdem死亡n。send () API aufgerufen wurde, ist die Datenreferenz niht mehr verwendbar。Jeder Versuch, es zu verwenden, verursacht einen Fehler。

  • ns。管道(src_ctxt, dest_ctxt)- Mit einem Aufruf von pipe () API kann Erweiterungscode Quellkontext Mit einem Zielkontext verbinden。Nach einem Aufruf von Pipe gehen alle Ereignisse, die vom Quellkontext and das nächste module in der Pipeline gesendet werden, direkt in den Zielkontext。Diese API winormalerwise vom module verwendet, das den pipe () aufruft, um sich selbst ausder Pipeline zu entfernen。

  • ns.inet-图书馆für互联网地址。

    • ns.inet。Apply_mask (address_str, mask_str)- gibt die address zeichenfolge nach dem andwenden der Maskenzeichenfolge zurück。
    • ns.inet.aton (address_str)- Gibt den numerischen Wert der addresse als Zeichenfolge von Bytes in Netzwerreihenfolge zurück (4 Bytes für IPv4 und 16 für IPv6)。
    • ns.inet.ntoa (byte_str)- Konvertiert numerischen Byte-Wert als eine Zeichenfolge von Bytes in Adresszeichenfolge。
    • ns.inet.ntohs(数量)- Konvertieren Sie die angegebene Netzwerk-Byte-Reihenfolge in Host-Byte-Reihenfolge。Wenn die Eingabe größer als 2^16 - 1 ist, wid ein Fehler ausgegeben。
    • ns.inet.htons(数量)- Konvertiert die angegebene Host-Byte-Reihenfolge in Netzwerk-Byte-Reihenfolge。Wenn die Eingabe größer als 2^16 - 1 ist, wid ein Fehler ausgegeben。
    • ns.inet.ntohl(数量)- Konvertiert die angegebene Netzwerk-Byte-Reihenfolge in Host-Byte-Reihenfolge。Wenn die Eingabe größer als 2^32 - 1 ist, wid ein Fehler ausgegeben。
    • ns.inet.htonl(数量)- Konvertiert die angegebene Host-Byte-Reihenfolge in Netzwerk-Byte-Reihenfolge。Wenn die Eingabe größer als 2^32 - 1 ist, wid ein Fehler ausgegeben。
    • 子网(address_str, subnet_value)- Gibt die Subnetzadressenzeichenfolge nach Anwendung de angegebenen Subnetzes zurück。