[nanny/win32: 9/75] FilterManager multiplatform
- From: Roberto Majadas <telemaco src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nanny/win32: 9/75] FilterManager multiplatform
- Date: Tue, 2 Nov 2010 18:51:42 +0000 (UTC)
commit 9a589fa0444f678121daf24e2cc08391aa863f8f
Author: Roberto Majadas <roberto majadas openshine com>
Date: Wed Sep 15 12:50:58 2010 +0200
FilterManager multiplatform
daemon/src/FilterManager.py | 41 ++++++++++++++++++++++++++++++++---------
daemon/src/QuarterBack.py | 1 +
2 files changed, 33 insertions(+), 9 deletions(-)
---
diff --git a/daemon/src/FilterManager.py b/daemon/src/FilterManager.py
index 04f93ac..032546a 100644
--- a/daemon/src/FilterManager.py
+++ b/daemon/src/FilterManager.py
@@ -26,6 +26,8 @@
import gobject
import gio
import os
+import errno
+
import shutil
import pickle
import tempfile
@@ -38,11 +40,14 @@ from twisted.enterprise import adbapi
from BlockingDeferred import BlockingDeferred
from ctypes import *
-g = cdll.LoadLibrary("libglib-2.0.so")
+if os.name == "posix" :
+ g = cdll.LoadLibrary("libglib-2.0.so")
+elif os.name == "nt":
+ g = cdll.LoadLibrary("libglib-2.0-0.dll")
+
g.g_regex_match_simple.restype=c_int
g.g_regex_match_simple.argtypes=[c_wchar_p, c_wchar_p, c_int, c_int]
-
def regexp(expr, item):
try:
return bool(g.g_regex_match_simple(expr, item, 0, 0))
@@ -53,6 +58,18 @@ def regexp(expr, item):
def on_db_connect(conn):
conn.create_function("gregexp", 2, regexp)
+if os.name == "posix" :
+ NANNY_DAEMON_DATA = "/var/lib/nanny/"
+elif os.name == "nt" :
+ NANNY_DAEMON_DATA = "C:\\WINDOWS\\nanny_data"
+
+def mkdir_path(path):
+ try:
+ os.mkdirs(path)
+ except os.error, e:
+ if e.errno != errno.EEXIST:
+ raise
+
class FilterManager (gobject.GObject) :
def __init__(self, quarterback):
gobject.GObject.__init__(self)
@@ -66,7 +83,7 @@ class FilterManager (gobject.GObject) :
def start(self):
print "Start Filter Manager"
- os.system("mkdir -p /var/lib/nanny/pkg_filters")
+ mkdir_path(os.path.join(NANNY_DAEMON_DATA, "pkg_filters"))
self.custom_filters_db = self.__get_custom_filters_db()
self.__start_packaged_filters()
@@ -78,7 +95,7 @@ class FilterManager (gobject.GObject) :
#------------------------------------
def __get_custom_filters_db(self):
- path = "/var/lib/nanny/customfilters.db"
+ path = os.path.join(NANNY_DAEMON_DATA, "customfilters.db")
if os.path.exists(path) :
return adbapi.ConnectionPool('sqlite3', path,
check_same_thread=False,
@@ -155,19 +172,22 @@ class FilterManager (gobject.GObject) :
#-----------------------------------
def __start_packaged_filters(self):
- ddbb = glob('/var/lib/nanny/pkg_filters/*/filters.db') + glob('/usr/share/nanny/pkg_filters/*/filters.db')
+ ddbb = glob(os.path.join(NANNY_DAEMON_DATA, "pkg_filters","*","filters.db"))
+ if os.name == "posix" :
+ ddbb = ddbb + glob('/usr/share/nanny/pkg_filters/*/filters.db')
+
for db in ddbb :
self.db_pools[db] = adbapi.ConnectionPool('sqlite3', db,
check_same_thread=False,
cp_openfun=on_db_connect)
- if not os.path.exists("/var/lib/nanny/pkg_filters/conf") :
+ if not os.path.exists(os.path.join(NANNY_DAEMON_DATA, "pkg_filters","conf")) :
for db in ddbb :
self.pkg_filters_conf[db] = {"categories" : [],
"users_info" : {}
}
else:
- db = open("/var/lib/nanny/pkg_filters/conf", 'rb')
+ db = open(os.path.join(NANNY_DAEMON_DATA, "pkg_filters","conf"), 'rb')
self.pkg_filters_conf = pickle.load(db)
db.close()
for rdb in list(set(self.pkg_filters_conf.keys()) - set(ddbb)) :
@@ -184,6 +204,9 @@ class FilterManager (gobject.GObject) :
gobject.timeout_add(5000, self.__check_external_dbs)
def __check_external_dbs(self):
+ if os.name != "posix" :
+ return True
+
ddbb = glob('/usr/share/nanny/pkg_filters/*/filters.db')
if len(ddbb) == 0 :
for db in self.pkg_filters_conf.keys() :
@@ -224,7 +247,7 @@ class FilterManager (gobject.GObject) :
return True
def __save_pkg_filters_conf(self):
- output = open("/var/lib/nanny/pkg_filters/conf", 'wb')
+ output = open(os.path.join(NANNY_DAEMON_DATA, "pkg_filters","conf"), 'wb')
pickle.dump(self.pkg_filters_conf, output)
output.close()
@@ -252,7 +275,7 @@ class FilterManager (gobject.GObject) :
return []
def add_pkg_filter(self, path):
- temp_dir = tempfile.mkdtemp(prefix="filter_", dir="/var/lib/nanny/pkg_filters/")
+ temp_dir = tempfile.mkdtemp(prefix="filter_", dir=os.path.join(NANNY_DAEMON_DATA, "pkg_filters"))
try:
if not tarfile.is_tarfile (path):
print "The file has not in the correct format"
diff --git a/daemon/src/QuarterBack.py b/daemon/src/QuarterBack.py
index fb38bf3..b0d19e3 100644
--- a/daemon/src/QuarterBack.py
+++ b/daemon/src/QuarterBack.py
@@ -41,6 +41,7 @@ elif os.name == "nt" :
from Win32WebContentFiltering import Win32WebContentFiltering as WebContentFilter
from Win32UsersManager import Win32UsersManager as UsersManager
from Win32SessionFiltering import Win32SessionFiltering as SessionFilter
+ from FilterManager import FilterManager as FilterManager
from Chrono import Chrono
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]