Software /
code /
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 |
parent | 2873:9e693d433a41 |
child | 2881: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 |