bridge improvements, mostly configuration

This commit is contained in:
Izaya 2018-04-06 16:51:45 +10:00
parent 57345b6598
commit f254ededac
3 changed files with 11 additions and 6 deletions

View File

@ -21,13 +21,15 @@ The protocol is documented [here](vtunnel-protocol.md)
At present, all you need to do is run bridge.lua, for example: At present, all you need to do is run bridge.lua, for example:
``` ```
lua53 bridge.lua lua53 bridge.lua [port] [timeout]
``` ```
### Client ### Client
#### OPPM #### OPPM
Not yet functional, but when it is:
``` ```
oppm install vtunnel oppm install vtunnel
``` ```

View File

@ -1,6 +1,10 @@
local socket = require "socket" local socket = require "socket"
local imt = require "interminitel" local imt = require "interminitel"
local tArgs = {...}
local port, timeout = tonumber(tArgs[1]) or 4096, tonumber(tArgs[2]) or 60
local clients, coroutines, messages = {}, {}, {} local clients, coroutines, messages = {}, {}, {}
local function spawn(f) local function spawn(f)
@ -28,8 +32,6 @@ function reprint(...)
end end
end end
reprint(imt.encodePacket("Hello, world!",123))
local function hasValidPacket(s) local function hasValidPacket(s)
local w, res = pcall(imt.decodePacket,s) local w, res = pcall(imt.decodePacket,s)
if res then return true end if res then return true end
@ -37,8 +39,9 @@ end
hasValidPacket("") hasValidPacket("")
function socketLoop() function socketLoop()
local server = socket.bind("*", 4096) local server = socket.bind("*", port)
server:settimeout(0) server:settimeout(0)
print("vTunnel bridge server listening on port "..tostring(port))
while true do while true do
local client,err = server:accept() local client,err = server:accept()
if client then if client then
@ -66,7 +69,7 @@ function clientLoop()
client.conn:close() client.conn:close()
clients[id] = nil clients[id] = nil
end end
if client.last+3000 < os.time() then if client.last+timeout < os.time() then
print("Dropping client "..tostring(id).." for inactivity") print("Dropping client "..tostring(id).." for inactivity")
client.conn:close() client.conn:close()
clients[id] = nil clients[id] = nil

View File

@ -54,4 +54,4 @@ By default, the bridge server:
- uses port 4096, as Minitel does on OpenComputers networks - uses port 4096, as Minitel does on OpenComputers networks
- drops clients after 60 seconds of inactivity - drops clients after 60 seconds of inactivity
This can be configured by **FIXME.** This can be configured by appending a port number and timeout (in seconds) to the command you use to launch the bridge.