LINUX.ORG.RU
решено ФорумAdmin

Squid external acl

 , ,


0

1

Бен! Это Данила. Ай нид хелп...

squid.conf

external_acl_type testacl_type children=1 %URI /opt/acl
acl testacl external testacl_type
http_access deny testacl
/opt/acl
#!/bin/bash
LOG='/tmp/acl.log'
while read L
do
        echo "$L" >> "$LOG"
        echo 'OK'
done
exit
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys

while True:
	l = sys.stdin.readline().split(' ')
	try:
		url = l[0]
	except:
		continue
	sys.stdout.write('OK\n')
	sys.stdout.flush()
	sys.stderr.write('Got: %s\n' % (url))

обе программы ни фига не читают из stdin (при запуске ручками всё нормально)... ЧЯДНТ?

net-proxy/squid-3.1.16  USE="epoll ssl -caps -ecap -icap-client (-ipf-transparent) -ipv6 -kerberos (-kqueue) -ldap -logrotate -mysql -nis -pam (-pf-transparent) -postgres -radius -samba -sasl (-selinux) -snmp -sqlite -test -tproxy -zero-penalty-hit"
★★★★★

хехе... где-то выше затерялся http_access allow, acl просто не дёргался )))

ЗЫ

external_acl_type beeline_type ttl=360 %DST /opt/squid/beeline
acl beeline external beeline_type
never_direct allow beeline
always_direct deny beeline
no_cache allow beeline
no_cache deny all
жуткий кусочек кода на пистоне (заодно и познакомился поближе)
#!/usr/bin/python2.7
# -*- coding:utf-8 -*-

import pycurl
import StringIO
import sys

while True:
	line = sys.stdin.readline().strip()
	if line:
		data = StringIO.StringIO()
		curl = pycurl.Curl()
		curl.setopt(curl.URL, 'http://help.internet.beeline.ru/restricted?ip=%s' % (line))
		curl.setopt(curl.WRITEFUNCTION, data.write)
		curl.perform()
		curl.close()
		if data.getvalue().count('Данный ресурс заблокирован по решению органов государственной власти'):
			sys.stdout.write('OK\n')
			sys.stdout.flush()
		else:
			sys.stdout.write('ERR\n')
			sys.stdout.flush()
Итого вот это реализовано. Малой кровью, даже запоминать ничего не надо, ttl=360 в external_acl_type вполне достаточно чтоб не ощущать воздействия сего костыля. Отдельное спасибо Kroz.

erfea ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.