[nanny] Add CheckDomain method
- From: Roberto Majadas <telemaco src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [nanny] Add CheckDomain method
- Date: Mon, 1 Feb 2010 21:16:33 +0000 (UTC)
commit d5f79fa00d787a563078154ffde8ba17fd2d574a
Author: Roberto Majadas <roberto majadas openshine com>
Date: Mon Feb 1 22:15:48 2010 +0100
Add CheckDomain method
daemon/src/DansGuardianImporter.py | 2 +-
daemon/src/FilterManager.py | 100 +++++++++++++++++++++++++++++++++---
daemon/src/NannyDBus.py | 5 ++
3 files changed, 99 insertions(+), 8 deletions(-)
---
diff --git a/daemon/src/DansGuardianImporter.py b/daemon/src/DansGuardianImporter.py
index 3786044..bd70c8f 100644
--- a/daemon/src/DansGuardianImporter.py
+++ b/daemon/src/DansGuardianImporter.py
@@ -276,7 +276,7 @@ class DansGuardianImporter (gobject.GObject):
if is_black == True :
c.execute('insert into black_urls values ("%s", "%s")' % (category, regexp))
else:
- c.execute('insert into white_urlss values ("%s", "%s")' % (category, regexp))
+ c.execute('insert into white_urls values ("%s", "%s")' % (category, regexp))
self.conn.commit()
self.emit("progress-status",
diff --git a/daemon/src/FilterManager.py b/daemon/src/FilterManager.py
index 5837085..b023d62 100644
--- a/daemon/src/FilterManager.py
+++ b/daemon/src/FilterManager.py
@@ -41,7 +41,7 @@ def regexp(expr, item):
return bool(nanny.gregex.regexp(expr, item))
def on_db_connect(conn):
- conn.create_function("regexp", 2, regexp)
+ conn.create_function("gregexp", 2, regexp)
class FilterManager (gobject.GObject) :
def __init__(self, quarterback):
@@ -63,12 +63,6 @@ class FilterManager (gobject.GObject) :
def stop(self):
print "Stop Filter Manager"
- def check_domain(self, user_id, domain):
- pass
-
- def check_url(self, user_id, url):
- pass
-
#Custom Filters methods
#------------------------------------
@@ -414,3 +408,95 @@ class FilterManager (gobject.GObject) :
self.__save_pkg_filters_conf()
return True
+ #Check methods
+ #------------------------------------
+
+ def check_domain(self, uid, domain):
+ print "Check Domain"
+
+ idomain = ''
+ domain_list = domain.split(".")
+ domain_list.reverse()
+ for x in domain_list:
+ idomain = idomain + x + "."
+ idomain = idomain[:-1]
+
+ print "Idomain : %s" % idomain
+
+ blacklisted_categories = []
+ custom_black=False
+
+ #Search in customfilters
+ sql_query = 'select distinct is_black from customfilters where uid="%s" and gregexp( "(.+\.|)" || regexp || ".*" , "%s")' % (uid, domain)
+ query = self.custom_filters_db.runQuery(sql_query)
+ block_d = BlockingDeferred(query)
+ try:
+ qr = block_d.blockOn()
+ if len(qr) > 0 :
+ for x in qr :
+ if x[0] == 0:
+ print "Custom WhiteListed"
+ return [False, False, []]
+ if x[0] == 1:
+ custom_black = True
+
+ except:
+ print "Something goes wrong checking Custom Filters"
+ return [False, False, []]
+
+
+ #Search in whitelists
+ for db in self.pkg_filters_conf.keys():
+ if self.pkg_filters_conf[db]["users_info"].has_key(uid) :
+ if len(self.pkg_filters_conf[db]["users_info"][uid]) > 0 :
+ sql_query = 'select distinct category from white_domains where gregexp(regexp || "(|\..+)" , "%s")' % idomain
+ query = self.db_pools[db].runQuery(sql_query)
+ block_d = BlockingDeferred(query)
+
+ try:
+ qr = block_d.blockOn()
+ if len(qr) > 0:
+ return [False, False, []]
+
+ except:
+ print "Something goes wrong checking domains"
+ return [False, False, []]
+
+ if custom_black == True :
+ print "Custom BlackListed"
+ return [True, True, []]
+
+ #Search in blacklists
+ for db in self.pkg_filters_conf.keys():
+ if self.pkg_filters_conf[db]["users_info"].has_key(uid) :
+ if len(self.pkg_filters_conf[db]["users_info"][uid]) > 0 :
+
+ category_c = ''
+ for cat in self.pkg_filters_conf[db]["users_info"][uid] :
+ if category_c != '' :
+ category_c = category_c + " OR " + "category='%s' " % cat
+ else:
+ category_c = "category='%s' " % cat
+ #category_c = category_c + "OR category='may_url_blocked'"
+
+ regexp_c = 'gregexp(regexp || "(|\..+)" , "%s")' % idomain
+ sql_query = 'select distinct category from black_domains where (%s) AND (%s)' % (category_c, regexp_c)
+ query = self.db_pools[db].runQuery(sql_query)
+ block_d = BlockingDeferred(query)
+
+ try:
+ qr = block_d.blockOn()
+ for cat in qr :
+ blacklisted_categories.append(cat[0])
+ except:
+ print "Something goes wrong checking domains"
+ return [False, False, []]
+
+ if len (blacklisted_categories) > 0 :
+ return [True, True, blacklisted_categories]
+
+ return [False, False, []]
+
+
+ def check_url(self, uid, url):
+ pass
diff --git a/daemon/src/NannyDBus.py b/daemon/src/NannyDBus.py
index 3d8e7a3..deb6752 100644
--- a/daemon/src/NannyDBus.py
+++ b/daemon/src/NannyDBus.py
@@ -178,6 +178,11 @@ class NannyDBus(dbus.service.Object):
return self.quarterback.filter_manager.set_pkg_filter_user_categories(unicode(pkg_id),
str(uid),
list_c)
+
+ @dbus.service.method("org.gnome.Nanny.WebDatabase",
+ in_signature='ss', out_signature='bbas')
+ def CheckDomain(self, uid, domain):
+ return self.quarterback.filter_manager.check_domain(uid, domain)
@dbus.service.method("org.gnome.Nanny.WebDatabase",
in_signature='ssss', out_signature='b')
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]