add syslog client
							parent
							
								
									a2b218ab0e
								
							
						
					
					
						commit
						f7e2e7c58d
					
				
							
								
								
									
										55
									
								
								waf.lua
								
								
								
								
							
							
						
						
									
										55
									
								
								waf.lua
								
								
								
								
							| 
						 | 
				
			
			@ -1,16 +1,67 @@
 | 
			
		|||
function syslog(msg)
 | 
			
		||||
    ngx.header.content_type = "text/html"
 | 
			
		||||
    kern = 0
 | 
			
		||||
    user = 1
 | 
			
		||||
    mail = 2
 | 
			
		||||
    daemon = 3
 | 
			
		||||
    auth = 4
 | 
			
		||||
    syslog = 5
 | 
			
		||||
    lpr = 6
 | 
			
		||||
    news = 7
 | 
			
		||||
    uucp = 8
 | 
			
		||||
    cron = 9
 | 
			
		||||
    authpriv = 10
 | 
			
		||||
    ftp = 11
 | 
			
		||||
    local0 = 16
 | 
			
		||||
    local1 = 17
 | 
			
		||||
    local2 = 18
 | 
			
		||||
    local3 = 19
 | 
			
		||||
    local4 = 20
 | 
			
		||||
    local5 = 21
 | 
			
		||||
    local6 = 22
 | 
			
		||||
    local7 = 23
 | 
			
		||||
 | 
			
		||||
    emerg = 0
 | 
			
		||||
    alert = 1
 | 
			
		||||
    crit = 2
 | 
			
		||||
    err = 3
 | 
			
		||||
    warning = 4
 | 
			
		||||
    notice = 5
 | 
			
		||||
    info = 6
 | 
			
		||||
    debug = 7
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
local sock = ngx.socket.udp()
 | 
			
		||||
local ok, err = sock:setpeername('127.0.0.1', 514)
 | 
			
		||||
if not ok then
 | 
			
		||||
    ngx.say("failed to connect to syslog server: ", err)
 | 
			
		||||
    return
 | 
			
		||||
end
 | 
			
		||||
level=info
 | 
			
		||||
facility=daemon
 | 
			
		||||
sign=level+facility*8
 | 
			
		||||
ok, err = sock:send('<'..sign..'>'..msg)
 | 
			
		||||
sock:close()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function log(method,url,data)
 | 
			
		||||
 | 
			
		||||
file=assert(io.open("/data/logs/hack/"..ngx.var.server_name.."_sec.log","a"))
 | 
			
		||||
    if data then
 | 
			
		||||
      if ngx.var.http_user_agent  then
 | 
			
		||||
            file:write(ngx.var.remote_addr.." ".." ["..ngx.localtime().."] \""..method.." "..url.."\" \""..data.."\" \""..ngx.status.."\" \""..ngx.var.http_user_agent.."\"\n")
 | 
			
		||||
			syslog(ngx.var.remote_addr.." ".." ["..ngx.localtime().."] \""..method.." "..url.."\" \""..data.."\" \""..ngx.status.."\" \""..ngx.var.http_user_agent.."\"\n")
 | 
			
		||||
      else
 | 
			
		||||
            file:write(ngx.var.remote_addr.." ".." ["..ngx.localtime().."] \""..method.." "..url.."\" \""..data.."\" \"-\"\n")
 | 
			
		||||
            file:write(ngx.var.remote_addr.." ".." ["..ngx.localtime().."] \""..method.." "..url.."\" \""..data.."\" \""..ngx.status.."\" \""..ngx.var.http_user_agent.."\"\n")
 | 
			
		||||
			syslog(ngx.var.remote_addr.." ".." ["..ngx.localtime().."] \""..method.." "..url.."\" \""..data.."\" \""..ngx.status.."\" \""..ngx.var.http_user_agent.."\"\n")
 | 
			
		||||
      end
 | 
			
		||||
    else
 | 
			
		||||
        if ngx.var.http_user_agent  then
 | 
			
		||||
            file:write(ngx.var.remote_addr.." ".." ["..ngx.localtime().."] \""..method.." "..url.."\" \"-\" \""..ngx.var.http_user_agent.."\"\n")
 | 
			
		||||
            syslog(ngx.var.remote_addr.." ".." ["..ngx.localtime().."] \""..method.." "..url.."\" \"-\" \""..ngx.var.http_user_agent.."\"\n")
 | 
			
		||||
        else
 | 
			
		||||
            file:write(ngx.var.remote_addr.." ".." ["..ngx.localtime().."] \""..method.." "..url.."\" \"-\" \"".."-\"\n")
 | 
			
		||||
			syslog(ngx.var.remote_addr.." ".." ["..ngx.localtime().."] \""..method.." "..url.."\" \"-\" \"".."-\"\n")
 | 
			
		||||
        end
 | 
			
		||||
    end
 | 
			
		||||
file:close()
 | 
			
		||||
| 
						 | 
				
			
			@ -21,7 +72,7 @@ function check()
 | 
			
		|||
    ngx.exit(200)
 | 
			
		||||
end
 | 
			
		||||
function read_rule(var)
 | 
			
		||||
    file = io.open("/usr/local/nginx/conf/wafconf/"..var,"r")
 | 
			
		||||
    file = io.open("/usr/local/openresty/nginx/conf/wafconf/"..var,"r")
 | 
			
		||||
    t = {}
 | 
			
		||||
    for line in file:lines() do
 | 
			
		||||
        table.insert(t,line)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue