[nanny] Store proxy in HKEY_USERS instead HKEY_CURRENT_USER



commit edcb9837b15f9c2398f8f9ac0ca295c415c116d5
Author: Roberto Majadas <roberto majadas openshine com>
Date:   Fri Oct 29 17:24:22 2010 +0200

    Store proxy in HKEY_USERS instead HKEY_CURRENT_USER

 daemon/src/Win32UsersManager.py        |   10 ++++++++
 daemon/src/Win32WebContentFiltering.py |   39 +++++++++++++++++++++++++++-----
 2 files changed, 43 insertions(+), 6 deletions(-)
---
diff --git a/daemon/src/Win32UsersManager.py b/daemon/src/Win32UsersManager.py
index e22de9d..dadcd5a 100644
--- a/daemon/src/Win32UsersManager.py
+++ b/daemon/src/Win32UsersManager.py
@@ -31,6 +31,9 @@ class Win32UsersManager:
     def __init__(self):
         self.last_time = None
         self.users = None
+        self.uid_sid = {}
+        
+        self.get_users()
         
     def get_users (self):
         if self.last_time != None and time.time() - self.last_time <= 60 :
@@ -45,6 +48,7 @@ class Win32UsersManager:
             for result in qry:
                 uid = str(result.SID).split("-")[-1]
                 if int(uid) >= 1000 and result.Name != "HomeGroupUser$" :
+                    self.uid_sid[int(uid)] = str(result.SID)
                     users.append((uid, unicode(result.Name), unicode(result.FullName)))
         self.last_time = time.time()
         self.users = users
@@ -58,3 +62,9 @@ class Win32UsersManager:
             return True
         
         return False
+    
+    def get_sid_from_uid (self, uid):
+        if int(uid) in self.uid_sid.keys() :
+            return self.uid_sid[int(uid)]
+        else:
+            return None
diff --git a/daemon/src/Win32WebContentFiltering.py b/daemon/src/Win32WebContentFiltering.py
index af9d168..05ca05f 100644
--- a/daemon/src/Win32WebContentFiltering.py
+++ b/daemon/src/Win32WebContentFiltering.py
@@ -154,8 +154,17 @@ class Win32WebContentFiltering(gobject.GObject) :
         return True
 
     def __set_proxy_settings(self, enable, http_proxy_server='') :
-        root = _winreg.HKEY_CURRENT_USER
-        proxy_path = r"Software\Microsoft\Windows\CurrentVersion\Internet Settings"
+        root = _winreg.HKEY_USERS
+        session_uid = int(self.quarterback.win32top.get_current_user_session())
+        if session_uid == 0 :
+            print "[W32WebContentFiltering] session 0 (__set_proxy_settings)"
+            return
+        user_sid = self.quarterback.usersmanager.get_sid_from_uid(session_uid)
+        if user_sid == None :
+            print "[W32WebContentFiltering] USER SID = None (__set_proxy_settings)"
+            return
+
+        proxy_path = r"%s\Software\Microsoft\Windows\CurrentVersion\Internet Settings" % user_sid
 
         hKey = _winreg.CreateKey (root, proxy_path)
 
@@ -196,8 +205,17 @@ class Win32WebContentFiltering(gobject.GObject) :
         _winreg.CloseKey(hKey)
 
     def __get_proxy_info(self):
-        root = _winreg.HKEY_CURRENT_USER
-        proxy_path = r"Software\Microsoft\Windows\CurrentVersion\Internet Settings"
+        root = _winreg.HKEY_USERS
+        session_uid = int(self.quarterback.win32top.get_current_user_session())
+        if session_uid == 0 :
+            print "[W32WebContentFiltering] session 0 (__get_proxy_info)"
+            return
+        user_sid = self.quarterback.usersmanager.get_sid_from_uid(session_uid)
+        if user_sid == None :
+            print "[W32WebContentFiltering] USER SID = None (__get_proxy_info)"
+            return
+
+        proxy_path = r"%s\Software\Microsoft\Windows\CurrentVersion\Internet Settings" % user_sid
         hKey = _winreg.OpenKey (root, proxy_path)
         
         is_enabled = 0
@@ -222,8 +240,17 @@ class Win32WebContentFiltering(gobject.GObject) :
         return is_enabled, http_server
         
     def __show_proxy_settings(self):
-        root = _winreg.HKEY_CURRENT_USER
-        proxy_path = r"Software\Microsoft\Windows\CurrentVersion\Internet Settings"
+        root = _winreg.HKEY_USERS
+        session_uid = int(self.quarterback.win32top.get_current_user_session())
+        if session_uid == 0 :
+            print "[W32WebContentFiltering] session 0 (__show_proxy_settings)"
+            return
+        user_sid = self.quarterback.usersmanager.get_sid_from_uid(session_uid)
+        if user_sid == None :
+            print "[W32WebContentFiltering] USER SID = None (__show_proxy_settings)"
+            return
+
+        proxy_path = r"%s\Software\Microsoft\Windows\CurrentVersion\Internet Settings" % user_sid
         hKey = _winreg.OpenKey (root, proxy_path)
 
         def get_reg_info(name):



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]