I have the following acl in my squid.conf

external_acl_type acexternal children=50 ttl=60 negative_ttl=1 %>{X-MYAUTH} 
/usr/local/bin/acexternal localhost
acl iceauth external acexternal
http_access allow iceauth
http_access deny all

question on TTL expiration on the external_acl_type. When a external acl 
cached_result is expired due to TTL timeout, seems like squid will do a async 
call to the external acl program,  acexternal in this case above, to validate 
the acl request.
if the async call acexternal does not return result before the "http_access 
deny all" is executed, will squid consider it is a 403 situation? 

Thanks

Ming


On Dec 28, 2011, at 6:47 PM, Amos Jeffries wrote:

> On 28/12/2011 3:19 p.m., Ming Pun wrote:
>> Thanks for the prompt response. It is very useful. I was playing 
>> external_acl_type to understand how it works.
>> 
>> a couple of questions
>> - when a request did not pass external acl , I got a HTTP 403.  How can I 
>> make it to return 401 instead?
> 
> That is automatic when the %LOGIN tag is set for the helper input format. 
> %LOGIN pulls credentials out of HTTP authentication headers.
> 
> Alternatively the latest squid can attach a deny_info display or redirect 
> with custom status code when the ACL test is last on an access line (ie 
> "http_acces deny").
> 
>> - how do I write an external acl program to support concurrency? I followed 
>> some example on the internet. The program basically parses stdio for input 
>> parameters, and writes out the result to stdout?
> 
> Yes. The helper protocol is documented here 
> http://wiki.squid-cache.org/Features/AddonHelpers#Access_Control_.28ACL.29
> 
> Amos

Reply via email to