109 end); |
109 end); |
110 -- Optional config parameters |
110 -- Optional config parameters |
111 conn.connect_host = account.address; |
111 conn.connect_host = account.address; |
112 conn.connect_port = account.port; |
112 conn.connect_port = account.port; |
113 |
113 |
114 if not account.password and opts.interactive then |
114 if not account.password and not (account.clientkey and account.serverkey) and opts.interactive then |
115 account.password = read_password() |
115 account.password = read_password() |
116 end |
116 end |
|
117 |
|
118 local clientkey, serverkey = account.clientkey, account.serverkey; |
|
119 if clientkey and serverkey then |
|
120 local hex = require "util.hex"; |
|
121 clientkey = hex.from(clientkey); |
|
122 serverkey = hex.from(serverkey); |
|
123 elseif clientkey or serverkey then |
|
124 conn:warn("Only one of 'clientkey' and 'serverkey' available, both reqired for SCRAM") |
|
125 clientkey, serverkey = nil, nil; |
|
126 end |
117 |
127 |
118 -- Connect! |
128 -- Connect! |
119 conn:connect_client(account.jid, account.password); |
129 conn:connect_client(account.jid, account.password, clientkey, serverkey); |
120 |
130 |
121 -- COMPAT: Tigase discards stanzas sent at the same time as </stream:stream> |
131 -- COMPAT: Tigase discards stanzas sent at the same time as </stream:stream> |
122 local _real_close = conn.close; |
132 local _real_close = conn.close; |
123 function conn:close() |
133 function conn:close() |
124 conn:debug("Delaying close..."); |
134 conn:debug("Delaying close..."); |