URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 8655
[ Назад ]

Исходное сообщение
"Как узнать файл из которого был запущен срипт perl"

Отправлено metacom , 18-Мрт-10 20:51 
Пишу sendmail wrapper на perl, для php sendmail, подскажите как на perl определить имя и путь файла который инициировал данный скрипт.

т.е. в php.ini вместо стандартного sendmail, я помещаю мой sendmail.pl, соответственно когда php отправляет почту при помощи функции sendmail, запускается мой sendmail.pl вот в нем то мне надо опредилить имя php файла в котором сработала фунция sendmail. Я так понимаю что эта информация должна быть в массиве $env, подскажите в каком ключе.


Содержание

Сообщения в этом обсуждении
"Как узнать файл из которого был запущен срипт perl"
Отправлено ACCA , 23-Мрт-10 10:39 
>сработала фунция sendmail. Я так понимаю что эта информация должна быть
>в массиве $env, подскажите в каком ключе.

Нет, не должна, это тебе не HTTP referer. $PPID есть только в bash, лазить по /proc не поможет - в общем случае ты можешь оказаться и в мастдае и в BSD.

Проще всего - пропихни $_SERVER["SCRIPT_NAME"] параметром в командной строке.


"Как узнать файл из которого был запущен срипт perl"
Отправлено metacom , 23-Мрт-10 11:37 
>Проще всего - пропихни $_SERVER["SCRIPT_NAME"] параметром в командной строке.

Немогу я его через командную строку передать, у меня сервер LAMP, на нем крутятся порядка 20 сайтов, мне надо отследить рассылку спама, чтобы при превышении лимита, включалась блокировка отправки почты с уведомлением, - какой скрипт, в папке какого домена...

свой враппер я прописываю в httpd.conf через директиву:
php_admin_value sendmail_path '/usr/sbin/sendmail.pl -t -i'

Может есть еще варианты? ENV{PWD} получает, т.е. частично проблемма решается, но ENV{PWD} это только директория, вот бы еще сам скрипт отковырять.


"Как узнать файл из которого был запущен срипт perl"
Отправлено ACCA , 25-Мрт-10 07:30 
>>Проще всего - пропихни $_SERVER["SCRIPT_NAME"] параметром в командной строке.
>
>Немогу я его через командную строку передать, у меня сервер LAMP, на
>нем крутятся порядка 20 сайтов, мне надо отследить рассылку спама, чтобы
>при превышении лимита, включалась блокировка отправки почты с уведомлением, - какой

Сгенери персональные коды, раздай юзерам. Пусть предъявляют в каждом вызове mail через $additional_parameters. Твой скрипт проверяет код. Если код неизвестен - письмо не уходит.

Против PEAR::Mail или самодельного SMTP клиента в скрипте требуй SMTP авторизацию, а прямой выход на чужой 25 порт закрой firewall.


"Как узнать файл из которого был запущен срипт perl"
Отправлено metacom , 25-Мрт-10 09:32 
>Сгенери персональные коды, раздай юзерам. Пусть предъявляют в каждом вызове mail через
>$additional_parameters. Твой скрипт проверяет код. Если код неизвестен - письмо не
>уходит.

Это не решит вопрос по сабжу.
  
Нашел выход проще, оказывается в PHP 5.3.0 mail.log добавили, в него как раз всё что мне надо заносится. Остается тока распарсить его, а в случае превышения лимита блокировать отправку с нужного домена (домен я по ENW{PWD} определяю нормально).

>Против PEAR::Mail или самодельного SMTP клиента в скрипте требуй SMTP авторизацию, а
>прямой выход на чужой 25 порт закрой firewall.

А как же я 25 порт закрою? тогда sendmail работать не будет.


"Как узнать файл из которого был запущен срипт perl"
Отправлено ACCA , 25-Мрт-10 21:19 
>>Против PEAR::Mail или самодельного SMTP клиента в скрипте требуй SMTP авторизацию, а
>>прямой выход на чужой 25 порт закрой firewall.
>
>А как же я 25 порт закрою? тогда sendmail работать не будет.

man iptables

-m owner --cmd-owner ...