Mercurial > prosody-modules
comparison mod_onions/mod_onions.lua @ 2880:05ebe377fc90
mod_onions: Use net.server API for creating a new connection instead of duplicating socket creation
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Fri, 16 Feb 2018 04:33:13 +0100 |
| parents | 9e693d433a41 |
| children | 824b0d7fa883 |
comparison
equal
deleted
inserted
replaced
| 2879:9d633d8f3451 | 2880:05ebe377fc90 |
|---|---|
| 1 local prosody = prosody; | 1 local prosody = prosody; |
| 2 local core_process_stanza = prosody.core_process_stanza; | 2 local core_process_stanza = prosody.core_process_stanza; |
| 3 | 3 |
| 4 local wrapclient = require "net.server".wrapclient; | 4 local addclient = require "net.server".addclient; |
| 5 local s2s_new_outgoing = require "core.s2smanager".new_outgoing; | 5 local s2s_new_outgoing = require "core.s2smanager".new_outgoing; |
| 6 local initialize_filters = require "util.filters".initialize; | 6 local initialize_filters = require "util.filters".initialize; |
| 7 local st = require "util.stanza"; | 7 local st = require "util.stanza"; |
| 8 local socket = require "socket"; | |
| 9 | 8 |
| 10 local portmanager = require "core.portmanager"; | 9 local portmanager = require "core.portmanager"; |
| 11 | 10 |
| 12 local softreq = require "util.dependencies".softreq; | 11 local softreq = require "util.dependencies".softreq; |
| 13 | 12 |
| 178 end | 177 end |
| 179 end | 178 end |
| 180 | 179 |
| 181 local function connect_socks5(host_session, connect_host, connect_port) | 180 local function connect_socks5(host_session, connect_host, connect_port) |
| 182 | 181 |
| 183 local conn, handler = socket.tcp(); | |
| 184 | |
| 185 module:log("debug", "Connecting to " .. connect_host .. ":" .. connect_port); | 182 module:log("debug", "Connecting to " .. connect_host .. ":" .. connect_port); |
| 186 | 183 |
| 187 -- this is not necessarily the same as .to_host (it can be that this is from the onions_map) | 184 -- this is not necessarily the same as .to_host (it can be that this is from the onions_map) |
| 188 host_session.socks5_to = connect_host; | 185 host_session.socks5_to = connect_host; |
| 189 host_session.socks5_port = connect_port; | 186 host_session.socks5_port = connect_port; |
| 190 | 187 |
| 191 conn:settimeout(0); | 188 local conn = addclient(proxy_ip, proxy_port, socks5listener, "*a"); |
| 192 | |
| 193 local success, err = conn:connect(proxy_ip, proxy_port); | |
| 194 | |
| 195 conn = wrapclient(conn, connect_host, connect_port, socks5listener, "*a"); | |
| 196 | 189 |
| 197 socks5listener.register_outgoing(conn, host_session); | 190 socks5listener.register_outgoing(conn, host_session); |
| 198 | 191 |
| 199 host_session.conn = conn; | 192 host_session.conn = conn; |
| 200 end | 193 end |
