Назад | Перейти на главную страницу

Внешний ACL Pfsense Squid с PHP скриптом

Я хочу использовать сценарий PHP, чтобы разрешить или отклонить запрос прокси-сервера Squid при установке pfsense, поэтому я использую эту конфигурацию для внешнего ACL:

external_acl_type mysqlAuth %SRC /usr/local/bin/php -f /var/scripts/mysqlacl.php
acl extGrant external mysqlAuth
http_access allow extGrant

Мой сценарий Mysql выглядит так:

<?php
file_put_contents("/var/scripts/out.txt",date("Y/m/d H:i:s")."Started\r\n",FILE_APPEND);

$STDIN=fopen("php://stdin", "r");
$STDOUT=fopen("php://stdout", "w"));


while (!feof($STDIN)) {
        $line = trim(fgets($STDIN));
        file_put_contents("/var/scripts/out.txt",date("Y/m/d H:i:s")." ".$line,FILE_APPEND);
        fwrite($STDOUT, "OK\n");
        //break;
}
?>

Если я запускаю этот сценарий из командной строки, все работает, для каждой строки ввода я получаю строку вывода «ОК».

Проблема в том, что при запуске Squid я получаю следующие ошибки (журнал из system.log):

squid [43190]: Родитель Squid: (squid-1) процесс 56700 запущен

(squid-1): хелперы mysqlAuth вылетают слишком быстро, нужна помощь!

squid [43190]: Родитель Squid: (squid-1) процесс 56700 завершился со статусом 1

squid [43190]: Родитель Squid: (squid-1) процесс 56700 не будет перезапущен из-за повторяющихся частых сбоев

И это cache.log:

kid1 | ipcCreate: / usr / local / bin / php: (2) Нет такого файла или каталога

Но этот файл наверняка существует, и чтобы быть уверенным, что это не из-за ошибки доступа к файлу, я попытался установить оболочку для пользователя «прокси» и войти в систему как пользователь прокси (su proxy) и здесь из вызова оболочки /usr/local/bin/php -f /var/scripts/mysqlacl.php и это работает!

Это моя версия php:

PHP 5.5.22 (cgi-fcgi) (построено: 26 февраля 2015 18:00:22) Авторское право (c) 1997-2015 гг. PHP Group Zend Engine v2.5.0, Copyright (c) 1998-2015 гг. Zend Technologies с Suhosin v0. 9.37.1, Copyright (c) 2007-2014, SektionEins GmbH

Что это может быть?

Это мой ответ на использование скриптов PHP в качестве внешнего acl squid в pfsense:

ln -s /usr/local/bin/php /usr/pbi/squid-amd64/local/bin/php
ln -s /usr/local/lib/php /usr/pbi/squid-amd64/local/lib/php
ln -s /usr/local/etc/php.ini /usr/pbi/squid-amd64/local/etc/php.ini