rpms/sectool/devel sectool-0.9.4-dbus-fix.patch, NONE, 1.1 sectool-0.9.4-policykit-fix.patch, NONE, 1.1 sectool.spec, 1.34, 1.35

Maros Barabas mbarabas at fedoraproject.org
Wed Mar 10 15:43:52 UTC 2010


Author: mbarabas

Update of /cvs/pkgs/rpms/sectool/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv3449

Modified Files:
	sectool.spec 
Added Files:
	sectool-0.9.4-dbus-fix.patch sectool-0.9.4-policykit-fix.patch 
Log Message:
Added patches for PolicyKit and dBus

sectool-0.9.4-dbus-fix.patch:
 org.fedoraproject.sectool.mechanism.conf |    2 -
 org.fedoraproject.sectool.policy         |   11 +++++----
 src/sectool-gui.py                       |   37 ++++++++++++++++++++-----------
 3 files changed, 32 insertions(+), 18 deletions(-)

--- NEW FILE sectool-0.9.4-dbus-fix.patch ---
diff -up sectool-0.9.4/org.fedoraproject.sectool.mechanism.conf.old sectool-0.9.4/org.fedoraproject.sectool.mechanism.conf
--- sectool-0.9.4/org.fedoraproject.sectool.mechanism.conf.old	2009-09-01 10:20:23.000000000 +0200
+++ sectool-0.9.4/org.fedoraproject.sectool.mechanism.conf	2010-03-10 14:51:48.564326918 +0100
@@ -9,7 +9,7 @@
       <allow own="org.fedoraproject.sectool.mechanism"/>
   </policy>
   <policy context="default">
-      <allow send_destination="org.fedoraproject.sectool"/>
+      <allow send_destination="org.fedoraproject.sectool.mechanism"/>
       <allow send_type="method_call"/>
   </policy>
 </busconfig>
diff -up sectool-0.9.4/org.fedoraproject.sectool.policy.old sectool-0.9.4/org.fedoraproject.sectool.policy
--- sectool-0.9.4/org.fedoraproject.sectool.policy.old	2009-08-24 16:43:10.000000000 +0200
+++ sectool-0.9.4/org.fedoraproject.sectool.policy	2010-03-10 14:51:51.858326825 +0100
@@ -20,8 +20,9 @@
     <description>Run level</description>
     <message>System policy prevents run level</message>
     <defaults>
-      <allow_inactive>no</allow_inactive>
-      <allow_active>auth_admin</allow_active>
+      <allow_any>no</allow_any>
+      <allow_inactive>auth_admin_keep</allow_inactive>
+      <allow_active>auth_admin_keep</allow_active>
     </defaults>
   </action>
 
@@ -29,9 +30,9 @@
     <description>Run tests</description>
     <message>System policy prevents run tests</message>
     <defaults>
-      <allow_any>no</allow_any>
-      <allow_inactive>no</allow_inactive>
-      <allow_active>auth_admin</allow_active>
+      <allow_any>auth_admin_keep</allow_any>
+      <allow_inactive>auth_admin_keep</allow_inactive>
+      <allow_active>auth_admin_keep</allow_active>
     </defaults>
   </action>
  
diff -up sectool-0.9.4/src/sectool-gui.py.old sectool-0.9.4/src/sectool-gui.py
--- sectool-0.9.4/src/sectool-gui.py.old	2010-03-10 14:50:07.111201828 +0100
+++ sectool-0.9.4/src/sectool-gui.py	2010-03-10 14:52:01.219201762 +0100
@@ -712,10 +712,14 @@ class DBusCaller(object):
 
     def __init__(self):
 
+	#print "DBusCaller::init::start"
         self.timeout = -1
+	self.auth = 0
+	#print "DBusCaller::init::SystemBus()"
         self.bus = dbus.SystemBus ()
         #self.bus_name = dbus.service.BusName('org.fedoraproject.sectool.mechanism', self.bus)
-        self.dbus_action_object = self.bus.get_object ("org.fedoraproject.sectool.mechanism", "/org/fedoraproject/sectool/object")
+        #self.dbus_action_object = self.bus.get_object ("org.fedoraproject.sectool.mechanism", "/org/fedoraproject/sectool/object")
+	#print "DBusCaller::init::end"
         
     def get_action(self, action):
         """ Get action from dbus sectool mechanism """
@@ -723,7 +727,7 @@ class DBusCaller(object):
 
     @staticmethod
     def error_handler(error):
-	#print "ERROR: ", error
+	print "[ASYNC ERROR]: ", error
 	pass # We will recieve an error that timeout has expired
 
     @staticmethod
@@ -736,12 +740,16 @@ class DBusCaller(object):
 
     def close(self):
         self.bus.flush()
-        self.bus.close()
+        #self.bus.close() # can't close this, cause it will close main loop
 
     def run( self, args, file ):
 
-        auth = slip.dbus.polkit.IsSystemBusNameAuthorized( self.bus.get_unique_name(), "org.fedoraproject.sectool.runtests" )
+	#print "DBusCaller::run::start"
+        #if (self.auth != 1): 
+	self.auth = slip.dbus.polkit.IsSystemBusNameAuthorized( self.bus.get_unique_name(), "org.fedoraproject.sectool.runtests" )
+	#print "DBusCaller::run::auth: \"",self.auth,"\" end"
 	self.runtests(args, file)
+	#print "DBusCaller::run::end"
 
     @slip.dbus.polkit.enable_proxy
     def runtests( self, args, file ):
@@ -754,7 +762,7 @@ class DBusCaller(object):
                             [args, file], 
                             reply_handler=self.reply_handler, 
                             error_handler=self.error_handler, 
-                            timeout=0.00)
+                            timeout=10)
 
 
 class ThreadHandler(threading.Thread, Handler):
@@ -845,6 +853,9 @@ class ThreadHandler(threading.Thread, Ha
             """
 
             self.readers = []
+            # get action from dbus
+	    #print "start dbus"
+            self.bus = DBusCaller()
             for test in self.__suite:
     
                 self.test = test
@@ -869,12 +880,10 @@ class ThreadHandler(threading.Thread, Ha
 
                 # Block for dbus exceptions handling, here should be all code that manipulate with dBus
                 try:
-                    # get action from dbus
-                    bus = DBusCaller()
-
                     # Start new thread - reader to listen on socket and update GUI if something from dBus comes up
                     # We need to call reader here, because of passing bus to close connection and save processes
-                    reader = Reader( file, test.dsc['HEADER']['NAME'], self.fill_form, self.test_done, iter, bus )
+		    #print "start reader"
+                    reader = Reader( file, test.dsc['HEADER']['NAME'], self.fill_form, self.test_done, iter, self.bus )
                     reader.start()
                     # Add reader to readers pool
                     self.readers.append( reader )
@@ -886,12 +895,15 @@ class ThreadHandler(threading.Thread, Ha
                     TODO: Look for async call, this is workaround using 0-timeout
                     If you use timeout=-1, it will be sequencial, all positives numbers are seconds in float
                     """
-
-                    bus.run( self.__make_dbus_call( test.dsc["HEADER"]["NAME"] ), file )
+		    #print "run start"
+                    self.bus.run( self.__make_dbus_call( test.dsc["HEADER"]["NAME"] ), file )
+		    #print "run end"
                     #bus.call( test.dsc["HEADER"]["NAME"], file )
                 except dbus.DBusException, e:
                     # This should always happend. We need to be stopped by dBus to start new test in separate thread
+		    raise e
                     if 'org.freedesktop.DBus.Error.NoReply' in e.get_dbus_name():
+			print >>sys.stderr, "Not reply from DBus"
                         pass # maybe continue ?
                     # catch Authorization exception
                     elif 'NotAuthorizedException' in e.get_dbus_name():
@@ -939,6 +951,7 @@ class ThreadHandler(threading.Thread, Ha
          The testing process is going to die .. we have a little time to stop all tests correctly
          """
          self.__stopthread.set( ) 
+	 self.bus.close()
 	 for reader in self.readers:
 	     reader.stop_thread()
 
@@ -1056,7 +1069,7 @@ class Reader(threading.Thread):
     def stop_thread(self):
 
         self.stop = True
-        self.bus.close()
+        #self.bus.close()
     
 
         

sectool-0.9.4-policykit-fix.patch:
 sectool-gui.py |   36 ++++++++++++++++++++++++++++--------
 1 file changed, 28 insertions(+), 8 deletions(-)

--- NEW FILE sectool-0.9.4-policykit-fix.patch ---
diff -up sectool-0.9.4/src/sectool-gui.py.old sectool-0.9.4/src/sectool-gui.py
--- sectool-0.9.4/src/sectool-gui.py.old	2009-12-08 17:11:31.417357216 +0100
+++ sectool-0.9.4/src/sectool-gui.py	2010-01-13 14:37:49.817461379 +0100
@@ -645,7 +645,7 @@ class TestHandler( Handler ): 
         """ Stop button has been pressed """
         
         self.threadHandler.stop() #: give a short amount of time to stop the test by itself
-        self.__signalHandler.kill_thread() #: kill the test by unix-style kill through os library
+        #self.__signalHandler.kill_thread() #: kill the test by unix-style kill through os library
 
     def show_message_hint( self, test, msg_id ):
         """ Show info message in hintWindow """
@@ -721,6 +721,16 @@ class DBusCaller(object):
         """ Get action from dbus sectool mechanism """
         return self.dbus_action_object.get_dbus_method( action, "org.fedoraproject.sectool.mechanism" )
 
+    @staticmethod
+    def error_handler(error):
+	#print "ERROR: ", error
+	pass # We will recieve an error that timeout has expired
+
+    @staticmethod
+    def reply_handler():
+	#print "REPLY done."
+	pass
+
     def call(self, *p, **k):
         self.bus.call_async(*p, **k)
 
@@ -728,13 +738,23 @@ class DBusCaller(object):
         self.bus.flush()
         self.bus.close()
 
+    def run( self, args, file ):
+
+        auth = slip.dbus.polkit.IsSystemBusNameAuthorized( self.bus.get_unique_name(), "org.fedoraproject.sectool.runtests" )
+	self.runtests(args, file)
+
     @slip.dbus.polkit.enable_proxy
     def runtests( self, args, file ):
 
-        auth = slip.dbus.polkit.IsSystemBusNameAuthorized( self.bus.get_unique_name(), "org.fedoraproject.sectool.runtests" )
-        if auth == "yes": self.timeout = 0.00
-        self.dbus_action_object.runtests( args, file, timeout=self.timeout, dbus_interface = "org.fedoraproject.sectool.mechanism" )
-        #dbus_action( self.__make_dbus_call( test.dsc["HEADER"]["NAME"] ), file, timeout=0.00 )
+	self.bus.call_async("org.fedoraproject.sectool.mechanism", 
+                            "/org/fedoraproject/sectool/object", 
+                            "org.fedoraproject.sectool.mechanism", 
+                            "runtests", 
+                            "ass", 
+                            [args, file], 
+                            reply_handler=self.reply_handler, 
+                            error_handler=self.error_handler, 
+                            timeout=0.00)
 
 
 class ThreadHandler(threading.Thread, Handler):
@@ -867,7 +887,7 @@ class ThreadHandler(threading.Thread, Ha
                     If you use timeout=-1, it will be sequencial, all positives numbers are seconds in float
                     """
 
-                    bus.runtests( self.__make_dbus_call( test.dsc["HEADER"]["NAME"] ), file )
+                    bus.run( self.__make_dbus_call( test.dsc["HEADER"]["NAME"] ), file )
                     #bus.call( test.dsc["HEADER"]["NAME"], file )
                 except dbus.DBusException, e:
                     # This should always happend. We need to be stopped by dBus to start new test in separate thread
@@ -889,8 +909,6 @@ class ThreadHandler(threading.Thread, Ha
 
         while self.done < count:
             if self.__stopthread.isSet(): 
-                for reader in self.readers:
-                    reader.stop_thread()
                 #self.__formatter.stopProgressBar()
                 break
             time.sleep(2)
@@ -921,6 +939,8 @@ class ThreadHandler(threading.Thread, Ha
          The testing process is going to die .. we have a little time to stop all tests correctly
          """
          self.__stopthread.set( ) 
+	 for reader in self.readers:
+	     reader.stop_thread()
 
     def __make_tmp_file( self ):
         """ 


Index: sectool.spec
===================================================================
RCS file: /cvs/pkgs/rpms/sectool/devel/sectool.spec,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -p -r1.34 -r1.35
--- sectool.spec	2 Jan 2010 20:46:55 -0000	1.34
+++ sectool.spec	10 Mar 2010 15:43:52 -0000	1.35
@@ -1,12 +1,14 @@
 Summary: A security audit system and intrusion detection system
 Name: sectool
 Version: 0.9.4
-Release: 4%{?dist}
+Release: 5%{?dist}
 URL: https://hosted.fedoraproject.org/sectool/wiki/WikiStart
 Source0: %{name}-%{version}.tar.bz2
 Source1: sectool.log
 Patch1: sectool-0.9.2-optflags.patch
 Patch2: sectool-0.9.4-pk1.patch
+Patch3: sectool-0.9.4-policykit-fix.patch
+Patch4: sectool-0.9.4-dbus-fix.patch
 License: GPLv2+
 Group: Applications/System
 Requires: gettext coreutils libselinux python-slip-dbus PolicyKit dbus
@@ -43,6 +45,8 @@ sectool-gui provides a GTK-based graphic
 %setup -q
 %patch1 -p1 -b .optflags
 %patch2 -p1 -b .pk1
+%patch3 -p1 -b .policykit
+%patch4 -p1 -b .dbus
 
 %build
 make %{?_smp_mflags}
@@ -112,6 +116,9 @@ rm -rf $RPM_BUILD_ROOT
 
 
 %changelog
+* Wed Mar 10 2010 Maros Barabas <mbarabas at redhat.com> - 0.9.4-5
+- added patches for PolicyKit and dBus bugs
+
 * Sat Jan  2 2010 Tomas Mraz <tmraz at redhat.com> - 0.9.4-4
 - rebuilt with new librpm
 



More information about the scm-commits mailing list