Тут у вас 2 проблемы:
1. Передача IPшника, который осуществляет коннект
2. Передача полученных параметров от web-интерфейса в bird.client
О чем и сообщают приведенные вами ошибки. Вторая проблема является следствием первой. Если исправить первую проблему, то и вторая пропадет.
dragomir писал(а):birdclient stream tcp nowait root /usr/sbin/tcpd /usr/bin/php /usr/local/bin/bird.client.php &
В данном случае bird.client получит в кач-ве аргумента &, а это не надо. Уберите "&" в конце строки, т.к. это необходимо только при запуске через ucspi-tcp.
dragomir писал(а):у вас в примерах показана настройкана freebsd с tcp-server
да, уже есть такое дело. мы под фрей сидим
dragomir писал(а):подскажите, что можно подправить
Вариант 1Исходя из
16.5 Inetd EnvironmentIf a connection is made with a streaming protocol (‘stream’) and if --environment option has been given, inetd will set the following environment variables before starting the program:
PROTO
Always ‘TCP’.
TCPLOCALIP
Local IP address of the interface which accepted the connection.
TCPLOCALPORT
Port number on which the TCP connection was established.
TCPREMOTEIP
IP address of the remote client.
TCPREMOTEPORT
Port number on the client side of the TCP connection.
Additionally, if given the --remote option, inetd sets the following environment variables:
TCPLOCALHOST
DNS name of TCPLOCALIP.
TCPREMOTEHOST
DNS name of TCPREMOTEIP.
Соответственно попробовать указать environment и строку 68 bird.client.php:
- Код: Выделить всё
$remote_ip=isset($_SERVER['TCPREMOTEIP']) ? $_SERVER['TCPREMOTEIP'] : "";
заменить на
- Код: Выделить всё
$remote_ip=isset($_SERVER['TCPREMOTEIP']) ? $_SERVER['TCPREMOTEIP'] : getenv('TCPREMOTEIP');
Вариант 2Отключить проверку IP в bird.client.php и отдать эту функцию на откуп inetd (рулить через /etc/hosts.allow (ну или firewall никто не отменял
)) и $remote_ip присвоить IP-адрес разрешенный в конфиге, например если в конфиге в списке разрешенных 127.0.0.1:
- Код: Выделить всё
$config['bird_client_remote_permited_ips']=array();
$config['bird_client_remote_permited_ips'][]="127.0.0.1";
то в bird.client.php строка 68 должна быть такой:
- Код: Выделить всё
$remote_ip="127.0.0.1";
P.S. А вы не пробовали установить ucspi-tcp ? Судя по
install.html и результатам гугления можно сделать вывод что ucspi-tcp будет работать и на Linux`е.