LINUX.ORG.RU
ФорумAdmin

squid и external_acl_type


0

1

Написал простую прогу /usr/local/bin/python_test.py:

#!/usr/bin/env python2.5
# -*- coding: utf-8 -*-
import sys


def main(arg):
    while 1:
        l = sys.stdin.readline().split()

        user = l[0]
        url = l[1]
        sys.stderr.write('Got: user %s and site %s\n' % (user, url))

        print 'OK'


if __name__ == '__main__':
    sys.exit(main(arg=sys.argv[1:]))

Пишу в конфиге сквида:

external_acl_type python_test %SRC %DST /usr/local/bin/python_test.py
acl PythonTest external python_test
http_access allow PythonTest

Сквид запускается:

root@phobos:~# ps ax | grep python_test
 7435 ?        Ss     0:00 python2.5 /usr/local/bin/python_test.py
 7436 ?        Ss     0:00 python2.5 /usr/local/bin/python_test.py
 7437 ?        Ss     0:00 python2.5 /usr/local/bin/python_test.py
 7438 ?        Ss     0:00 python2.5 /usr/local/bin/python_test.py
 7439 ?        Ss     0:00 python2.5 /usr/local/bin/python_test.py
 7475 pts/0    R+     0:00 grep python_test
root@phobos:~# ps ax | grep squid
 7427 ?        Ss     0:00 /usr/sbin/squid -D -YC
 7429 ?        S      0:00 (squid) -D -YC
 7477 pts/0    R+     0:00 grep squid

Пытаюсь зайти на любой сайт, браузер ничего не отображает, просто делает вид, что грузит страницу, ошибок никаких нет. В cache.log следующее:

Got: user 10.0.10.2 and site www.google.ru

Если убрать из конфига «http_access allow PythonTest», браузер нормально отображает страницу. В чём может быть дело ?

★★

Читаем доки:
The helper receives lines per the above format specification,
   and returns lines starting with OK or ERR indicating the validity
   of the request and optionally followed by additional keywords with
   more details.

«General result syntax:
OK/ERR keyword=value ...»

zgen ★★★★★
()
Ответ на: комментарий от spiro

Разобрался сам :)

#!/usr/bin/env python2.5
# -*- coding: utf-8 -*-
import sys


def main(arg):
    while 1:
        l = sys.stdin.readline().split()

        user = l[0]
        url = l[1]
        sys.stderr.write('Got: user %s and site %s\n' % (user, url))

        sys.stdout.write('OK\n')
        sys.stdout.flush()


if __name__ == '__main__':
    sys.exit(main(arg=sys.argv[1:]))
spiro ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.