Technical Forum
Ask questions. Discover Answers.
cancel
Showing results for 
Search instead for 
Did you mean: 

condition irule OR not working

ralph_ralf
Nimbostratus
Nimbostratus

Can somebody help on this. the first irule is working perfectly but when adding OR condition it is not (not working section) .

this is working:

----------------------

when HTTP_REQUEST {
if { (([HTTP::uri] ne "/evs/ent.msg.evs.ext.Notification_1.0") and ([IP::client_addr] equals "172.16.37.16"))}
{ reject }}


not working

------------------

when HTTP_REQUEST {
if { (([HTTP::uri] ne "/evs/ent.msg.evs.ext.Notification_1.0") or ([HTTP::uri] ne "/evs/ent.msg.evs.ext.Notification_1.0?wsdl")
and ([IP::client_addr] equals "172.16.37.16"))}
{ reject }}

1 ACCEPTED SOLUTION

Hi ralph_ralf,

You should use "and" instead of "or" to block requests except these two uri.

when HTTP_REQUEST {
	if { [IP::client_addr] equals "172.16.37.16" && [HTTP::uri] ne "/evs/ent.msg.evs.ext.Notification_1.0" && [HTTP::uri] ne "/evs/ent.msg.evs.ext.Notification_1.0?wsdl" } {
		reject
	}
}

View solution in original post

2 REPLIES 2

Hi ralph_ralf,

You should use "and" instead of "or" to block requests except these two uri.

when HTTP_REQUEST {
	if { [IP::client_addr] equals "172.16.37.16" && [HTTP::uri] ne "/evs/ent.msg.evs.ext.Notification_1.0" && [HTTP::uri] ne "/evs/ent.msg.evs.ext.Notification_1.0?wsdl" } {
		reject
	}
}

Thabk you so much its working now