On Monday 06 of June 2011 11:56:05 Georgi Georgiev wrote:
> Hi to all ,
>   Yesterday  I’ve try to match on regexp from client user-agent and
> redirect it ..
> 
> The configuration  is on frontend is like this:
>  ……
>         acl test_match hdr_reg -i user\-agent:\ 
> test|android|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|iemobil
> e|ip(hone|od)|iris|kindle|lge\ |maemo|midp|mmp|opera\ m(ob|in)i|palm(\
> os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|
> vodafone|wap|windows\ (ce|phone)|xda|xiino
> 
>           redirect prefix http://xxxxxxx?rule1 if test_match
> …….
> 
> It is working fine for most of PCs and mobiles  ( redirect only mobile )
> but with exactly this user-agent :
> 
> Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB6.6;
> SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET4.0C; .NET CLR
> 3.0.30729)
> 
> ( IE 8 with Vista SP2 ) it somehow match rule ……
> 
> So the question is :
> Where can I find some info about regular expressions  library used in
> haproxy ? I need to find out why it match in this very case …..

$ haproxy -vv | grep -i options
  OPTIONS = USE_LINUX_SPLICE=1 USE_LIBCRYPT=1 USE_REGPARM=1 USE_PCRE=1 
USE_STATIC_PCRE=1

You're using libpcre if USE_PCRE=1.

You can check pcre regex with grep -P (it doesn't match on my machine):

$ echo "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; 
GTB6.6; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET4.0C; .NET CLR 
3.0.30729)" | grep -P 'test|android|avantgo|blackberry|blazer|compal|elaine|
fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge\ |maemo|midp|mmp|opera\ 
m(ob|in)i|palm(\os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.
(browser|link)|vodafone|wap|windows\ (ce|phone)|xda|xiino'

$ echo $?
1

Best regards, Brane

Reply via email to