--[[ inf_manager.lua v0.01 by blastbeat ]]-- local forbidden = { --// forbidden named parameters in inf on_connect = { "HI", "CT", "OP", "RG", "HU", "BO", }, on_inf = { "PD", "ID", "I4", }, } local additional = { --// additional named parameters for inf [ hub:getCfg "reg_rank" ] = "RG1 CT2", [ hub:getCfg "op_rank" ] = "OP1 CT4", [ hub:getCfg "admin_rank" ] = "OP1 CT8", [ hub:getCfg "owner_rank" ] = "OP1 CT16", } hub:setListener( "onConnect", { }, function( p ) local user = p.user local inf = user:inf( ) for i, name in ipairs( forbidden.on_connect ) do --// check if user sends forbidden parameters... if inf:getNP( name, "array" )[ 1 ] then user:kill{ adc_msg = "ISTA 240 Invalid\\snamed\\sparameter\\sin\\sINF:\\s" .. name .. "\n" } return PROCESSED end end return nil end ) hub:setListener( "onLogin", { }, function( p ) local user = p.user if user:isRegged( ) then if additional[ user:getRank( ) ] then --// set and send reg/op/su/owner status user:inf( ):changeNP( "", additional[ user:getRank( ) ] ) hub:sendToAll( "BINF " .. user:getSid( ) .. " " .. additional[ user:getRank( ) ] .. "\n" ) end elseif hub:getCfg "hub_pass" then --// consider hub with password as private reg hub user:inf( ):changeNP( "", "RG1 CT2" ) hub:sendToAll( "BINF " .. user:getSid( ) .. " RG1 CT2\n" ) end return nil end ) hub:setListener( "onInf", { }, function( p ) local user = p.user local cmd = p.cmd for i, name in ipairs( forbidden.on_inf ) do if cmd:getNP( name, "array" )[ 1 ] then user:kill{ adc_msg = "ISTA 240 Invalid\\snamed\\sparameter\\sin\\sINF:\\s" .. name .. "\n" } return PROCESSED end end local user_inf = user:inf( ) for name, value in pairs( cmd:getNP( true, "all" ) ) do if name == "NI" then if hub:getCfg "nick_change" then --// nick change allowed? local nick = cmd:getNP( "NI", "array" )[ 1 ] user:updateNick( nick, true ) else cmd:changeNP( "NI", nil ) --// delete new nick from inf if #cmd:getNP( true, "all" ) == 0 then --// no parameter left in inf -> discard message return PROCESSED end end elseif type( value ) == "table" and value[ 1 ] then cmd:changeNP( name, value[ 1 ] ) end end return nil end ) hub:debug( "** Loaded inf_manager.lua **" )