Squid url redirector

Check-in [09a01deb52]
anonymous

Check-in [09a01deb52]

Overview
Comment:resolved stmt work, added sample sql database structure
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | master | trunk
Files: files | file ages | folders
SHA3-256: 09a01deb527790a565f90e805813cead23775e3032aaadf9311756e5bf5b1034
User & Date: c.kworr@d4daf22a-8aaf-11de-a64d-234b64dd91b4 on 2009-10-01 12:56:56.000
Other Links: branch diff | manifest | tags
Context
2009-10-02
06:09
minor function corrections check-in: fce4cc7368 user: c.kworr@d4daf22a-8aaf-11de-a64d-234b64dd91b4 tags: master, trunk
2009-10-01
12:56
resolved stmt work, added sample sql database structure check-in: 09a01deb52 user: c.kworr@d4daf22a-8aaf-11de-a64d-234b64dd91b4 tags: master, trunk
2009-09-11
12:47
version for python3.1: + config file support; + command line options. Needs testing probably... check-in: 7d2bc0649d user: c.kworr@d4daf22a-8aaf-11de-a64d-234b64dd91b4 tags: master, trunk
Changes
Added database.sql version [8d08e9c8ac].
19
20
21
22
23
24
25
26
27
28
29
30

31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
			self._syslog.syslog(self._syslog.LOG_INFO, message)

	def notice(self, message):
		if not self._silent:
			self._syslog.syslog(self._syslog.LOG_NOTICE, message)

class tagDB:
	__slots__ = frozenset(['_prepared', '_db'])

	def __init__(self):
		self._prepared = set()
		self._db = False


	def _curs(self):
		if not self._db:
			config.section('database')
			# needs thinking
			#connector = postgresql.api.Connector(
				#user = config['user'], password = config['password'],
				#database = config['database'], 
			self._db = postgresql.open(
				'pq://{0}:{1}@{2}/{3}'.format(
					config['user'],
					config['password'],
					config['host'],
					config['database'],
			))
		return(self._db)

	def check(self, ip_address, site):
		# doesn't work for inet
		#stmt = self._curs().prepare("select redirect_url from site_rules where site <@ tripdomain($1) and netmask >> '$2' limit 1")
		#result = stmt(site, ip_address)
		stmt = self._curs().prepare("select redirect_url from site_rules where site <@ tripdomain('{0}') and netmask >> '{1}' limit 1".format(site, ip_address))
		result = stmt()
		if len(result) > 0:
			return result[0]
		else:
			return None

class CheckerThread:
	__slots__ = frozenset(['_db', '_lock', '_lock_queue', '_log', '_queue'])







|




>




<
<
<
<






|



<
<
|
<
<







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35




36
37
38
39
40
41
42
43
44
45


46


47
48
49
50
51
52
53
			self._syslog.syslog(self._syslog.LOG_INFO, message)

	def notice(self, message):
		if not self._silent:
			self._syslog.syslog(self._syslog.LOG_NOTICE, message)

class tagDB:
	__slots__ = frozenset(['_prepared', '_check_stmt', '_db'])

	def __init__(self):
		self._prepared = set()
		self._db = False
		self._check_stmt = self._curs().prepare("select redirect_url from site_rule where site <@ tripdomain($1) and netmask >> $2::text::inet limit 1")

	def _curs(self):
		if not self._db:
			config.section('database')




			self._db = postgresql.open(
				'pq://{0}:{1}@{2}/{3}'.format(
					config['user'],
					config['password'],
					config['host'],
					config['database'],
			) )
		return(self._db)

	def check(self, ip_address, site):


		result = self._check_stmt(site, ip_address)


		if len(result) > 0:
			return result[0]
		else:
			return None

class CheckerThread:
	__slots__ = frozenset(['_db', '_lock', '_lock_queue', '_log', '_queue'])