Support MQTT pour la réécriture
Action de réécriture pour MQTT
add rewrite action <name> <rewrite_type> <target> <rewrite_action>
Type de réécriture pour MQTT
-
replace_mqtt -
insert_before_mqtt -
insert_after_mqtt -
delete_mqtt -
insert_mqtt
Cible de réécriture pour MQTT
-
Réécrivez un ID client dans le paquet de connexion à l'aide du type
replace_mqttd'action.add rewrite action rwact1 replace_mqtt MQTT.CONNECT.CLIENTID "\"xyz\"" -
Réécrivez une rubrique dans la demande de publication à l'aide du type
replace_mqttd'action.add rewrite action rwact1 replace_mqtt MQTT.PUBLISH.TOPIC "\"testing/test123\"" -
Réécrivez pour insérer une propriété à l'aide du type d'action insert_mqtt.
add rewrite action rwact1 insert_mqtt MQTT.NEW_PROPERTY("prop1", "test") -
Supprimez une rubrique à l'aide du type d'action delete_mqtt.
add rewrite action rwact2 delete_mqtt MQTT.SUBSCRIBE.TOPIC_FILTERS.TOPIC(1)
Action de réécriture pour MQTT
-
MQTT.NEW_KEEPALIVE(interval) -
MQTT.NEW_PACKET_IDENTIFIER(packetID) -
MQTT.NEW_REASON_CODE(retCode) -
MQTT.NEW_PUBLISH(topic_name, payload) -
MQTT.NEW_CONNECT_USERNAME(username) -
MQTT.NEW_CONNECT_WILL_MESSAGE(will_topic, will_payload, will_Qos, will_retain) -
MQTT.NEW_TOPIC(topic, qos) -
MQTT.NEW_TOPIC(topic) -
MQTT.NEW_PROPERTY(key, value)
add rewrite action rwact1 replace_mqtt MQTT.CONNECT.KEEPALIVE MQTT.NEW_KEEPALIVE(90)
add rewrite action rwact1 replace_mqtt MQTT.CONNECT.USERNAME "\"user1\""
Stratégie de réécriture pour MQTT
add rewrite policy <name> <rewrite_rule> <rewrite_action>
add rewrite action insert_mqtt_username insert_mqtt MQTT.NEW_CONNECT_USERNAME("user1")
add rewrite policy rewrite_mqtt_username "MQTT.COMMAND.EQ(CONNECT) && MQTT.CONNECT.USERNAME.LENGTH.EQUALS(0) insert_mqtt_username
Points de liaison pour MQTT
-
MQTT_REQ_DEFAULT -
MQTT_REQ_OVERRIDE -
MQTT_RES_DEFAULT -
MQTT_RES_OVERRIDE
-
bind rewrite global <policyName> <priority> [-type MQTT_REQ_OVERRIDE | MQTT_REQ_DEFAULT | MQTT_RES_OVERRIDE | MQTT_RES_DEFAULT] -
bind lb|cs vserver <virtualServerName> -policyName <policyName> -priority <positiveInteger> -type REQUEST|RESPONSE
-
bind rewrite global pol1 10 -type MQTT_REQ_DEFAULT -
add/bind lb vserver v1 -policyName pol1 -type reqUEST -priority 10
Configurer une stratégie de réécriture pour MQTT
-
Activez la fonctionnalité de réécriture sur l'appliance NetScaler.
enable ns feature REWRITE -
Ajoutez une action de réécriture.
add rewrite action rwact1 replace_mqtt MQTT.CONNECT.KEEPALIVE MQTT.NEW_KEEPALIVE(10) -
Ajoutez une stratégie de réécriture.
add rewrite policy pol1 MQTT.COMMAND.EQ(CONNECT) rwact1 -
Configurez un serveur virtuel d'équilibrage de charge MQTT.
add lb vserver v1 MQTT 1.1.1.1 1883 -
Liez la stratégie de réécriture globalement ou à un serveur virtuel d'équilibrage de charge spécifique.
bind rewrite global pol1 10 -type MQTT_REQ_DEFAULTadd/bind lb vserver v1 -policyName pol1 -type REQUEST -priority 10
Cas d'utilisation 1 : remplacez le nom d'utilisateur dans le message MQTT CONNECT par le nom du certificat
MQTT CONNECT message contenant le nom d'utilisateur « admin ». Ce nom d'utilisateur doit être remplacé par le numéro de série (16 chiffres) extrait du certificat client (nom du certificat).
-
Une demande TCP (Transport Control Protocol) est envoyée à l'équilibreur de charge.
-
Dans l'équilibreur de charge, le nom d'utilisateur est remplacé par le nom du certificat.
-
La demande est transmise au courtier MQTT.
-
Ce nouveau nom d'utilisateur est utilisé pour l'autorisation via la charge utile du webhook.
add rewrite action mqtt_rw_unameact1 replace_mqtt MQTT.CONNECT.USERNAME CLIENT.SSL.CLIENT_CERT.SERIALNUMBER
add rewrite policy mqtt_rw_uname_pol1 "MQTT.COMMAND.EQ(CONNECT)" mqtt_rw_unameact1
bind cs vserver mqtt_frontend_cs -policyName mqtt_rw_uname_pol1 -priority 10 -gotoPriorityExpression END -type REQUEST
Cas d'utilisation 2 : Fournir un abonnement à un nouveau TOPIC
-
add rewrite action act2 insert_before_mqtt MQTT.TOPIC_FILTERS.TOPIC(1) MQTT.NEW_TOPIC(topic2, 2) -
add rewrite policy policy2 “MQTT.COMMAND.EQ(SUBSCRIBE) && MQTT.SUBSCRIBE. TOPIC_FILTERS.TOPIC.CONTAINS(\"test\")" act2