Re: [squid-users] Need help to build my own external help

From: Mohamed Amine Kadimi <amine.kadimi_at_gmail.com>
Date: Thu, 12 Apr 2012 22:57:53 +0000

2012/4/11 Amos Jeffries <squid3_at_treenet.co.nz>:
> On 12.04.2012 06:12, Mohamed Amine Kadimi wrote:
>>
>> 2012/4/10 Amos Jeffries <squid3_at_treenet.co.nz>:
>>>
>>> On 11.04.2012 03:27, Mohamed Amine Kadimi wrote:
>>>>
>>>>
>>>> Hello,
>>>>
>>>> I'm trying to make an external helper which will be called by an acl,
>>>> so I have created one which is very simple: it takes an IP in stdin
>>>> and returns OK if it maches a predefined IP.
>>>>
>>>> It works when I test it from the CLI, however when I put the relevant
>>>> directives in the squid.conf file and restart squid the connection to
>>>> internet is no longer possible.
>>>>
>>>> The message displayed by FF is : "Firefox is configured to use a proxy
>>>> server that is refusing connections".
>>>
>>>
>>>
>>> It would seem Squid is not listening on the IP:port which Firefox is
>>> trying
>>> to use, or a firewall is actively rejecting port 3128 TCP connections.
>>>
>>> 1) check that squid is running okay. It should be fine if your helper
>>> runs
>>> okay on command line, but read+execute access permission differences
>>> between
>>> the squids user and your own user account can still cause problems. Run
>>> "squid -k parse" or look in cache.log for message if Squid is not
>>> starting.
>>>
>>> 2) check that port 3128 is accessible. telnet etc can be used here. A
>>> packet
>>> dump may be needed to find which device is rejecting TCP packets to port
>>> 3128.
>>>
>>
>> It's not a connectivity issue since Squid is working fine unless I
>> uncomment the lines relevant to my external helper.
>>
>> I noticed some errors I didn't understand in the cache.log:
>>
>> #######
>> 2012/04/11 17:56:19| Accepting  HTTP connections at [::]:3128, FD 24.
>> 2012/04/11 17:56:19| HTCP Disabled.
>> 2012/04/11 17:56:19| Squid modules loaded: 0
>> 2012/04/11 17:56:19| Adaptation support is off.
>> 2012/04/11 17:56:19| Ready to serve requests.
>> 2012/04/11 17:56:19| WARNING: src_ip_ext #1 (FD 10) exited
>> 2012/04/11 17:56:19| WARNING: src_ip_ext #4 (FD 16) exited
>> 2012/04/11 17:56:19| WARNING: src_ip_ext #2 (FD 12) exited
>> 2012/04/11 17:56:19| WARNING: src_ip_ext #3 (FD 14) exited
>
>
> These causing ....
>
>
>> 2012/04/11 17:56:19| Too few src_ip_ext processes are running
>> 2012/04/11 17:56:19| storeDirWriteCleanLogs: Starting...
>> 2012/04/11 17:56:19|   Finished.  Wrote 0 entries.
>> 2012/04/11 17:56:19|   Took 0.00 seconds (  0.00 entries/sec).
>> FATAL: The src_ip_ext helpers are crashing too rapidly, need help!
>
>
> ... this ...
>
>
>>
>> Squid Cache (Version 3.1.6): Terminated abnormally.
>
>
> ... resulting in the proxy being shutdown. ie (1).
>
>
>> #######
>>
>> I think I'll need to review my program.
>
>
> Hmm. The only thing that looks like it might cause issues is fopen() for the
> debug log.
>

I've rewritten the source code excluding fopen() and handling
concurrency but I still get the same problem.

Here's the new one:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_INPUT 8192

int main(int argc, char **argv)
{
    char request [MAX_INPUT];

    while (fgets(request, MAX_INPUT , stdin) != NULL)
    {
        const char *channel_id = strtok(request, " ");
        char *detail = strtok(NULL, "\n");

        if (detail == NULL)
        {
// Only 1 paramater supplied. We are expecting at least 2 (including
the channel ID)
            fprintf(stderr, "FATAL: %s is concurrent and requires the
concurrency option to be specified.\n", program_name);
            exit(1);
        }

        if (strcmp(detail,"172.30.30.1")==0) printf ("%s OK\n",channel_id);
        else printf ("%s ERR\n",channel_id);
    }
    return 0;
}
Received on Thu Apr 12 2012 - 22:58:02 MDT

This archive was generated by hypermail 2.2.0 : Fri Apr 13 2012 - 12:00:04 MDT