Comparison

plugins/mod_admin_telnet.lua @ 4674:f44726a910a0

mod_admin_telnet: Add initial port:list() and port:close() commands
author Matthew Wild <mwild1@gmail.com>
date Tue, 24 Apr 2012 15:40:00 +0100
parent 4647:57a4f863e48f
child 4684:dc70c4ffb66d
comparison
equal deleted inserted replaced
4673:2fb5882fdef1 4674:f44726a910a0
757 print(host); 757 print(host);
758 end 758 end
759 return true, i.." hosts"; 759 return true, i.." hosts";
760 end 760 end
761 761
762 def_env.port = {};
763
764 function def_env.port:list()
765 local print = self.session.print;
766 local services = portmanager.get_active_services().data;
767 local ordered_services, n_ports = {}, 0;
768 for service, interfaces in pairs(services) do
769 table.insert(ordered_services, service);
770 end
771 table.sort(ordered_services);
772 for _, service in ipairs(ordered_services) do
773 local ports_list = {};
774 for interface, ports in pairs(services[service]) do
775 for port in pairs(ports) do
776 table.insert(ports_list, "["..interface.."]:"..port);
777 end
778 end
779 n_ports = n_ports + #ports_list;
780 print(service..": "..table.concat(ports_list, ", "));
781 end
782 return true, #ordered_services.." services listening on "..n_ports.." ports";
783 end
784
785 function def_env.port:close(close_port, close_interface)
786 close_port = assert(tonumber(close_port), "Invalid port number");
787 local n_closed = 0;
788 local services = portmanager.get_active_services().data;
789 for service, interfaces in pairs(services) do
790 for interface, ports in pairs(interfaces) do
791 if not close_interface or close_interface == interface then
792 if ports[close_port] then
793 self.session.print("Closing ["..interface.."]:"..close_port.."...");
794 local ok, err = portmanager.close(interface, close_port)
795 if not ok then
796 self.session.print("Failed to close "..interface.." "..port..": "..err);
797 else
798 n_closed = n_closed + 1;
799 end
800 end
801 end
802 end
803 end
804 return true, "Closed "..n_closed.." ports";
805 end
806
762 ------------- 807 -------------
763 808
764 function printbanner(session) 809 function printbanner(session)
765 local option = config.get("*", "core", "console_banner"); 810 local option = config.get("*", "core", "console_banner");
766 if option == nil or option == "full" or option == "graphic" then 811 if option == nil or option == "full" or option == "graphic" then
787 pcall(option, session); 832 pcall(option, session);
788 end 833 end
789 end 834 end
790 end 835 end
791 836
792 require "core.portmanager".register_service("console", { 837 module:add_item("net-provider", {
838 name = "console";
793 listener = console_listener; 839 listener = console_listener;
794 default_port = 5582; 840 default_port = 5582;
795 private = true; 841 private = true;
796 }); 842 });