![]() ![]() |
Oct 30 2007, 05:02 PM
Post
#1
|
|
|
INM wizard ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Group: Root Admin Posts: 2,282 Joined: 24-August 04 From: Intellipool AB, Härnösand, Sweden Member No.: 3 |
CODE -----------------------------------------------------------------
-- Name: SQLUnauthorizedApplication.lua -- Author: Kevin Prestage -- Required INM version: 3.3 -- Version: 1.1 -- Date: 2007-09-21 -- Description: This script will check all active connections -- and make sure they are on a list of logins and application -- names allowed to access the server. You can also validate -- the host the connection if coming from if desired. -- -- Arguments: -- 1) Server Name -- 2) config file path -- 3) Check Hosts is a boolean value to determine if you want -- to enforce the host the connection is coming from. -- The config file is a tab delimited text file on the INM host -- machine. The format should be: -- login application hostname ----------------------------------------------------------------- --simple function to split a string into an array (table) based on a seperator. function MakeTable2(str, sep) fields = {}; string.gsub(str,"([^"..sep.."]*)"..sep, function(c) table.insert(fields, c) end); return fields; end --grab the parameters servername = GetArgument(0); fn = GetArgument(1); bhost = GetArgument(2); --open the file in the context of the INM host. file = TLuaFile(true); iLength = file:GetFileSize( fn ); iRet = file:Open(fn,false); RawData = ""; RawData, iLength = file:Read(iLength); file:Close(); --convert the file text to lower case for easier comparison. RawData = string.lower(RawData); RawData = string.gsub(RawData,"\t","_"); RawData = string.gsub(RawData," ","_"); RawData = string.gsub(RawData,"-","_"); --create a TLuaDB object and connect to the database. db = TLuaDB(); con = servername .. "@master"; x = db:Connect(con,TLuaDB.CLIENT_SQLSERVER); --set the sql statement to run against the db sql = "select spid, rtrim(ltrim(loginame)), rtrim(ltrim(hostname)), rtrim(ltrim(program_name)) from sysprocesses"; --create variables to store results. result = ""; count = 0; spid = ""; app = ""; login = ""; host = ""; --if the db connection succeeded we can now execute our sql statement. if (x == true) then x = db:Execute(sql); --read the results of the statement. if (db:ResultAvilable() == true) then while (db:NextRow() == true) do count = count + 1; spid = db:GetCol(1); app = db:GetCol(4); login = db:GetCol(2); host = db:GetCol(3); login = string.lower(login); host = string.lower(host); app = string.lower(app); find = ""; app = string.gsub(app," ", "_"); app = string.gsub(app,"-", "_"); login = string.gsub(login," ", "_"); login = string.gsub(login,"-", "_"); host = string.gsub(host," ", "_"); host= string.gsub(host,"-", "_"); if ((login ~= "sa") and (app ~= "")) then if (bhost == "true") then find = login.."_"..app.."_"..host; else find = login.."_"..app; end iPos2 = string.find(RawData,find ); if (iPos2 == nil) then result = result .. login .. "\t" .. app .."\t"..host.."\tIs Not Allowed.\n"; b = false; else --print("fOUND iT"); end end end end else result = db:GetErrorDescription(); end if (result == "") then result = "All connections ok!"; else x = false; end SetExitStatus(result, x); -------------------- |
|
|
|
![]() ![]() |
|
Lo-Fi Version | Time is now: 31st July 2010 - 05:49 PM |