Software /
code /
prosody-modules
Diff
mod_onions/mod_onions.lua @ 1071:8f59b45fe6a7
mod_onions: Copy the code to find the bit module from mod_websockets.
author | Thijs Alkemade <me@thijsalkema.de> |
---|---|
date | Sat, 15 Jun 2013 12:48:56 +0200 |
parent | 1061:f4031e7ccec1 |
child | 1299:a7d6c6d2c7b5 |
line wrap: on
line diff
--- a/mod_onions/mod_onions.lua Fri Jun 14 20:29:15 2013 +0200 +++ b/mod_onions/mod_onions.lua Sat Jun 15 12:48:56 2013 +0200 @@ -1,9 +1,21 @@ local wrapclient = require "net.server".wrapclient; local s2s_new_outgoing = require "core.s2smanager".new_outgoing; local initialize_filters = require "util.filters".initialize; -local bit = require "bit32"; local st = require "util.stanza"; + local portmanager = require "core.portmanager"; + +local softreq = require "util.dependencies".softreq; + +local bit; +pcall(function() bit = require"bit"; end); +bit = bit or softreq"bit32" +if not bit then module:log("error", "No bit module found. Either LuaJIT 2, lua-bitop or Lua 5.2 is required"); end + +local band = bit.band; +local rshift = bit.rshift; +local lshift = bit.lshift; + local byte = string.byte; local c = string.char; @@ -51,7 +63,7 @@ local ip2 = byte(data, 6); local ip3 = byte(data, 7); local ip4 = byte(data, 8); - local port = bit.band(byte(data, 9), bit.lshift(byte(data, 10), 8)); + local port = band(byte(data, 9), lshift(byte(data, 10), 8)); module:log("debug", "Should connect to: "..ip1.."."..ip2.."."..ip3.."."..ip4..":"..port); if not (ip1 == 0 and ip2 == 0 and ip3 == 0 and ip4 == 0 and port == 0) then @@ -125,7 +137,7 @@ -- version 5, connect, (reserved), type: domainname, (length, hostname), port conn:send(c(5) .. c(1) .. c(0) .. c(3) .. c(#session.socks5_to) .. session.socks5_to); - conn:send(c(bit.rshift(session.socks5_port, 8)) .. c(bit.band(session.socks5_port, 0xff))); + conn:send(c(rshift(session.socks5_port, 8)) .. c(band(session.socks5_port, 0xff))); session.socks5_handler = socks5_connect_sent; end