local jid = 'wilson@ubq323.website' local server = 'ubq323.website' local auth = 'AHdpbHNvbgBncmVnb3J5PDM=' local resource = 'cheese' local cqueues = require'cqueues' local socket = require'cqueues.socket' local function connect(...) local sock = assert(socket.connect(... or server, 5222)) sock:setmode('bn','bn') local start = ([[ ]]):format(jid, server) local function check_and_send(test, text) local x = sock:read('-2048') print(x) assert(x:find(test)) if text then sock:write(text) end end sock:write(start) check_and_send('starttls', [[]]) check_and_send('proceed', nil) sock:starttls() sock:write(start) check_and_send('PLAIN', ([[%s]]):format(auth)) check_and_send('success',start) check_and_send('bind', ([[ %s ]]):format(resource)) check_and_send('jid','') return sock end -- sock:write[[ -- -- -- -- -- -- -- -- -- -- -- ]] local sock = connect(...) local mucs = { 'ja@conference.ubq323.website' } for _, muc in ipairs(mucs) do sock:write(([[ ]]):format(muc .. '/wilson')) end -- sock:write[[ -- -- -- -- -- -- ]] local xml=require'xml' for x in xml.stanzae(function() return sock:read('-2048') end) do print(x) end