mod_portcheck/mod_portcheck.lua
author Kim Alvefur <zash@zash.se>
Sat, 19 Feb 2022 01:42:12 +0100
changeset 4903 adecfb36349e
parent 4901 42a362a2bf51
child 4905 3abbcb8584d2
permissions -rw-r--r--
mod_portcheck: Include '*' in allowed characters so '*:port' works
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4901
42a362a2bf51 mod_portcheck: Shell command to check if ports are open
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     1
module:set_global();
42a362a2bf51 mod_portcheck: Shell command to check if ports are open
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     2
local portmanager = require "core.portmanager";
42a362a2bf51 mod_portcheck: Shell command to check if ports are open
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     3
42a362a2bf51 mod_portcheck: Shell command to check if ports are open
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     4
local commands = module:shared("admin_shell/commands")
42a362a2bf51 mod_portcheck: Shell command to check if ports are open
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     5
42a362a2bf51 mod_portcheck: Shell command to check if ports are open
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     6
function commands.portcheck(session, line)
4903
adecfb36349e mod_portcheck: Include '*' in allowed characters so '*:port' works
Kim Alvefur <zash@zash.se>
parents: 4901
diff changeset
     7
	for desc, interface, port in line:gmatch("%s(%[?([%x:.*]+)%]?:(%d+))") do
4901
42a362a2bf51 mod_portcheck: Shell command to check if ports are open
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     8
		if interface == "*" then
42a362a2bf51 mod_portcheck: Shell command to check if ports are open
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     9
			interface = "0.0.0.0";
42a362a2bf51 mod_portcheck: Shell command to check if ports are open
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    10
		end
42a362a2bf51 mod_portcheck: Shell command to check if ports are open
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    11
		assert(portmanager.get_service_at(interface, tonumber(port)), desc);
42a362a2bf51 mod_portcheck: Shell command to check if ports are open
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    12
	end
42a362a2bf51 mod_portcheck: Shell command to check if ports are open
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    13
	session.print "OK";
42a362a2bf51 mod_portcheck: Shell command to check if ports are open
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    14
end
42a362a2bf51 mod_portcheck: Shell command to check if ports are open
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    15
42a362a2bf51 mod_portcheck: Shell command to check if ports are open
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    16
function module.unload()
42a362a2bf51 mod_portcheck: Shell command to check if ports are open
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    17
	commands.portcheck = nil;
42a362a2bf51 mod_portcheck: Shell command to check if ports are open
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    18
end