Path: blob/master/lib/rex/proto/mqtt/client.rb
19778 views
# -*- coding: binary -*-12require 'mqtt'34##5# MQTT protocol support6##78module Rex9module Proto10module MQTT11class Client1213def initialize(sock, opts = {})14@sock = sock15@opts = opts16end1718def connect19connect_opts = {20client_id: @opts[:client_id]21}2223unless @opts[:username].blank?24connect_opts[:username] = @opts[:username]25end26unless @opts[:password].blank?27connect_opts[:password] = @opts[:password]28end29connect = ::MQTT::Packet::Connect.new(connect_opts).to_s30@sock.put(connect)31res = @sock.get_once(-1, @opts[:read_timeout])32::MQTT::Packet.parse(res)33end3435def connect?36connect.return_code.zero?37end3839def disconnect40disconnect = ::MQTT::Packet::Disconnect.new().to_s41@sock.put(disconnect)42end43end44end45end46end474849