7e8e6f0
diff -up system-config-rootpassword-1.99.6/src/passwordDialog.py.python3 system-config-rootpassword-1.99.6/src/passwordDialog.py
7e8e6f0
--- system-config-rootpassword-1.99.6/src/passwordDialog.py.python3	2009-09-14 13:16:11.000000000 +0200
7e8e6f0
+++ system-config-rootpassword-1.99.6/src/passwordDialog.py	2019-11-19 13:18:47.765718065 +0100
7e8e6f0
@@ -23,10 +23,12 @@
7e8e6f0
 #
7e8e6f0
 
7e8e6f0
 import string
7e8e6f0
-import gtk
7e8e6f0
-import gobject
7e8e6f0
+import gi
7e8e6f0
+gi.require_version('Gtk', '3.0')
7e8e6f0
+gi.require_version('Gdk', '3.0')
7e8e6f0
+from gi.repository import Gtk,Gdk
7e8e6f0
 import libuser
7e8e6f0
-import cracklib
7e8e6f0
+import pwquality
7e8e6f0
 import sys
7e8e6f0
 sys.path.append('/usr/share/system-config-rootpassword')
7e8e6f0
 
7e8e6f0
@@ -34,99 +36,99 @@ sys.path.append('/usr/share/system-confi
7e8e6f0
 ## I18N
7e8e6f0
 ## 
7e8e6f0
 import gettext
7e8e6f0
-_ = lambda x: gettext.ldgettext("system-config-rootpassword", x)
7e8e6f0
-N_ = lambda x: x
7e8e6f0
+t = gettext.translation("system-config-rootpassword", fallback=True)
7e8e6f0
+_ = t.gettext
7e8e6f0
 
7e8e6f0
 ##
7e8e6f0
 ## Icon for windows
7e8e6f0
 ##
7e8e6f0
 
7e8e6f0
 iconPixbuf = None      
7e8e6f0
-try:
7e8e6f0
-    iconPixbuf = gtk.gdk.pixbuf_new_from_file("/usr/share/system-config-rootpassword/pixmaps/system-config-rootpassword.png")
7e8e6f0
-except:
7e8e6f0
-    pass
7e8e6f0
+img = Gtk.Image()
7e8e6f0
+img.set_from_file("/usr/share/system-config-rootpassword/pixmaps/system-config-rootpassword.png")
7e8e6f0
+iconPixbuf = img.get_pixbuf()
7e8e6f0
 
7e8e6f0
 class childWindow:
7e8e6f0
     #You must specify a runPriority for the order in which you wish your module to run
7e8e6f0
     runPriority = 40
7e8e6f0
-    moduleName = _("Root Password")
7e8e6f0
+    moduleName = str(_("Root Password"))
7e8e6f0
     moduleClass = "reconfig"
7e8e6f0
     commentTag = _("Change the root password for the system")
7e8e6f0
 
7e8e6f0
     def destroy(self, args):
7e8e6f0
-        gtk.main_quit()
7e8e6f0
+        Gtk.main_quit()
7e8e6f0
     
7e8e6f0
     def __init__(self, user=None):
7e8e6f0
         self.admin = libuser.ADMIN()
7e8e6f0
         self.user = user
7e8e6f0
         self.doDebug = None
7e8e6f0
-        self.mainWindow = gtk.Window()
7e8e6f0
+        self.mainWindow = Gtk.Window()
7e8e6f0
         self.mainWindow.connect("destroy", self.destroy)
7e8e6f0
-        self.mainWindow.set_position(gtk.WIN_POS_CENTER)
7e8e6f0
+        self.mainWindow.set_position(Gtk.WindowPosition.CENTER)
7e8e6f0
         self.mainWindow.set_icon(iconPixbuf)
7e8e6f0
         self.mainWindow.set_border_width(10)
7e8e6f0
         self.mainWindow.set_resizable(False)
7e8e6f0
-        self.toplevel = gtk.VBox(False)
7e8e6f0
-        self.mainVBox = gtk.VBox(False)
7e8e6f0
-        self.iconBox = gtk.HBox()
7e8e6f0
-        self.passwordEntry = gtk.Entry()
7e8e6f0
+        self.toplevel = Gtk.VBox(False)
7e8e6f0
+        self.mainVBox = Gtk.VBox(False)
7e8e6f0
+        self.iconBox = Gtk.HBox()
7e8e6f0
+        self.passwordEntry = Gtk.Entry()
7e8e6f0
         self.passwordEntry.set_visibility(False)
7e8e6f0
-        self.confirmEntry = gtk.Entry()
7e8e6f0
+        self.confirmEntry = Gtk.Entry()
7e8e6f0
         self.confirmEntry.set_visibility(False)
7e8e6f0
-        self.okButton = gtk.Button('_Change root password')
7e8e6f0
-        self.cancelButton = gtk.Button(stock='gtk-cancel')
7e8e6f0
-        self.securityBar = gtk.ProgressBar(adjustment=None)
7e8e6f0
-        self.securityTooltips = gtk.Tooltips()
7e8e6f0
+        self.okButton = Gtk.Button(_('OK'))
7e8e6f0
+        self.cancelButton = Gtk.Button(_('Cancel'))
7e8e6f0
+        self.securityBar = Gtk.ProgressBar()
7e8e6f0
+        self.securityBar.set_show_text(True)
7e8e6f0
 
7e8e6f0
         p = None
7e8e6f0
         self.icon = None
7e8e6f0
-        try:
7e8e6f0
-            p = gtk.gdk.pixbuf_new_from_file("../pixmaps/system-config-rootpassword.png")
7e8e6f0
-        except:
7e8e6f0
-            try:
7e8e6f0
-                p = gtk.gdk.pixbuf_new_from_file("/usr/share/system-config-rootpassword/pixmaps/system-config-rootpassword.png")
7e8e6f0
-            except:
7e8e6f0
-                print "no image found"
7e8e6f0
-                pass
7e8e6f0
-
7e8e6f0
-        if p:
7e8e6f0
-            self.icon = gtk.Image()
7e8e6f0
+        img = Gtk.Image()
7e8e6f0
+        img.set_from_file("../pixmaps/system-config-rootpassword.png")
7e8e6f0
+        p = img.get_pixbuf()
7e8e6f0
+        if p == None:
7e8e6f0
+            img.set_from_file("/usr/share/system-config-rootpassword/pixmaps/system-config-rootpassword.png")
7e8e6f0
+            p=img.get_pixbuf()
7e8e6f0
+        if p == None:
7e8e6f0
+            print("no image found")
7e8e6f0
+        else:
7e8e6f0
+            self.icon = Gtk.Image()
7e8e6f0
             self.icon.set_from_pixbuf(p)
7e8e6f0
 
7e8e6f0
-        self.title = gtk.Label(_("Root Password"))
7e8e6f0
-        self.title.modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse ("white"))
7e8e6f0
+        self.title = Gtk.Label(_("Root Password"))
7e8e6f0
+        color = Gdk.RGBA()
7e8e6f0
+        color.parse("white")
7e8e6f0
+        self.title.override_color(Gtk.StateType.NORMAL,color)
7e8e6f0
 
7e8e6f0
         if self.user == None:
7e8e6f0
             #If no user was passed in, assume that we're chaning the root password
7e8e6f0
-            self.msgLabel = gtk.Label(_("You can change the root password by filling \nthe following fields:"))
7e8e6f0
+            self.msgLabel = Gtk.Label(_("You can change the root password by filling \nthe following fields:"))
7e8e6f0
             self.user = "root"
7e8e6f0
         else:
7e8e6f0
-            self.msgLabel = gtk.Label(_("Please set the password for %s.") % self.user)
7e8e6f0
+            self.msgLabel = Gtk.Label(_("Please set the password for %s.") % self.user)
7e8e6f0
         self.msgLabel.set_line_wrap(False)
7e8e6f0
         self.msgLabel.set_alignment(0.0, 0.5)
7e8e6f0
 
7e8e6f0
-        self.table = gtk.Table(2, 2)
7e8e6f0
-        label = gtk.Label(_("New Root Password:"))
7e8e6f0
+        self.table = Gtk.Table(2, 2)
7e8e6f0
+        label = Gtk.Label(_("New Root Password:"))
7e8e6f0
         label.set_alignment(0.0, 0.5)
7e8e6f0
-        self.table.attach(label, 0, 1, 0, 1, gtk.FILL)
7e8e6f0
-        self.table.attach(self.passwordEntry, 1, 2, 0, 1, gtk.SHRINK, gtk.FILL, 5, 5)
7e8e6f0
-        label = gtk.Label(_("Confirm Root Password:"))
7e8e6f0
+        self.table.attach(label, 0, 1, 0, 1)
7e8e6f0
+        self.table.attach(self.passwordEntry, 1, 2, 0, 1)
7e8e6f0
+        label = Gtk.Label(_("Confirm Root Password:"))
7e8e6f0
         label.set_alignment(0.0, 0.5)
7e8e6f0
-        self.table.attach(label, 0, 1, 1, 2, gtk.FILL)
7e8e6f0
-        self.table.attach(self.confirmEntry, 1, 2, 1, 2, gtk.SHRINK, gtk.FILL, 5, 5)
7e8e6f0
+        self.table.attach(label, 0, 1, 1, 2)
7e8e6f0
+        self.table.attach(self.confirmEntry, 1, 2, 1, 2)
7e8e6f0
 
7e8e6f0
     def okClicked(self, *args):
7e8e6f0
         result = self.apply()
7e8e6f0
         if result == 0:
7e8e6f0
-            gtk.main_quit()
7e8e6f0
+            Gtk.main_quit()
7e8e6f0
 
7e8e6f0
     def apply(self, *args):
7e8e6f0
         passwd1 = self.passwordEntry.get_text()
7e8e6f0
         passwd2 = self.confirmEntry.get_text()
7e8e6f0
 
7e8e6f0
         if self.doDebug:
7e8e6f0
-            print "don't change root password in debug mode"
7e8e6f0
+            print("don't change root password in debug mode")
7e8e6f0
             return 0
7e8e6f0
 
7e8e6f0
         #if (len(passwd1) < 6) or (len(passwd2) < 6):
7e8e6f0
@@ -136,12 +138,12 @@ class childWindow:
7e8e6f0
 	#	self.grabFocus()
7e8e6f0
         #   	return None
7e8e6f0
 
7e8e6f0
-	elif passwd1 != passwd2:
7e8e6f0
-		self.msgLabel.set_text("The two fields did not match. Please try \nagain:")
7e8e6f0
-		self.passwordEntry.set_text("")
7e8e6f0
-		self.confirmEntry.set_text("")
7e8e6f0
-		self.grabFocus()
7e8e6f0
-		return None
7e8e6f0
+        elif passwd1 != passwd2:
7e8e6f0
+                self.msgLabel.set_text("The two fields did not match. Please try \nagain:")
7e8e6f0
+                self.passwordEntry.set_text("")
7e8e6f0
+                self.confirmEntry.set_text("")
7e8e6f0
+                self.grabFocus()
7e8e6f0
+                return None
7e8e6f0
 
7e8e6f0
 
7e8e6f0
         if self.doDebug:
7e8e6f0
@@ -152,7 +154,7 @@ class childWindow:
7e8e6f0
         return 0
7e8e6f0
 
7e8e6f0
     def setKickstartData(self, kickstartData):
7e8e6f0
-        print "in setKickstartData"
7e8e6f0
+        print("in setKickstartData")
7e8e6f0
         #Get the lang from the list of languages
7e8e6f0
         return 0
7e8e6f0
 
7e8e6f0
@@ -163,7 +165,7 @@ class childWindow:
7e8e6f0
     def launch(self, doDebug = None):
7e8e6f0
         self.doDebug = doDebug
7e8e6f0
 
7e8e6f0
-        self.internalVBox = gtk.VBox(False, 10)
7e8e6f0
+        self.internalVBox = Gtk.VBox(False, 10)
7e8e6f0
         self.internalVBox.set_border_width(10)
7e8e6f0
 
7e8e6f0
         self.msgLabel.set_size_request(500, -1)
7e8e6f0
@@ -185,17 +187,19 @@ class childWindow:
7e8e6f0
                 test = ((length_password/16.0)<= 1.0) and (length_password/16.0) or 1.0
7e8e6f0
         strength = None
7e8e6f0
         try:
7e8e6f0
-            cracklib.FascistCheck(self.passwordEntry.get_text())
7e8e6f0
-        except ValueError as e:
7e8e6f0
-            strength = e.message
7e8e6f0
+            settings = pwquality.PWQSettings()
7e8e6f0
+            settings.read_config()
7e8e6f0
+            settings.check(self.passwordEntry.get_text())
7e8e6f0
+        except pwquality.PWQError as e:
7e8e6f0
+            strength = e.args[1]
7e8e6f0
         if (strength == None):
7e8e6f0
             self.securityBar.set_text("Security Level: Strong")
7e8e6f0
             if (test < 0.8):
7e8e6f0
             	test = 0.8
7e8e6f0
             self.securityBar.set_fraction(test)
7e8e6f0
-            self.securityTooltips.set_tip(self.passwordEntry, "Good")
7e8e6f0
+            self.passwordEntry.set_tooltip_text("Good")
7e8e6f0
         else :
7e8e6f0
-            self.securityTooltips.set_tip(self.passwordEntry, strength)
7e8e6f0
+            self.passwordEntry.set_tooltip_text(str(strength))
7e8e6f0
             if (0.5 >= test ):
7e8e6f0
                 self.securityBar.set_text("Security Level: Weak")
7e8e6f0
                 self.securityBar.set_fraction(test)
7e8e6f0
@@ -215,28 +219,28 @@ class childWindow:
7e8e6f0
 
7e8e6f0
     def stand_alone(self):
7e8e6f0
         self.mainWindow.set_title(_("Root Password"))
7e8e6f0
-        bb = gtk.HButtonBox()
7e8e6f0
-        bb.set_layout(gtk.BUTTONBOX_END)
7e8e6f0
+        bb = Gtk.HButtonBox()
7e8e6f0
+        bb.set_layout(Gtk.ButtonBoxStyle.END)
7e8e6f0
         bb.set_spacing(5)    
7e8e6f0
         self.passwordEntry.connect("changed", self.activation)
7e8e6f0
         self.confirmEntry.connect("changed", self.activation)
7e8e6f0
         self.okButton.set_sensitive(False)
7e8e6f0
         self.okButton.connect("clicked", self.okClicked) 
7e8e6f0
         self.cancelButton.connect("clicked", self.destroy)  
7e8e6f0
-        self.securityTooltips.set_tip(self.passwordEntry, "Remember that your password should have at least 6 characters in length")            
7e8e6f0
+        self.passwordEntry.set_tooltip_text("Remember that your password should have at least 6 characters in length")            
7e8e6f0
         self.securityBar.set_fraction(0.0) 
7e8e6f0
         if self.icon:
7e8e6f0
-            self.iconBox.pack_start(self.icon, False)
7e8e6f0
-        self.iconBox.pack_start(self.msgLabel, False)
7e8e6f0
+            self.iconBox.pack_start(self.icon, False,0,0)
7e8e6f0
+        self.iconBox.pack_start(self.msgLabel, False,0,0)
7e8e6f0
         self.mainWindow.add(self.toplevel)
7e8e6f0
         self.mainVBox.set_spacing(5)
7e8e6f0
-        self.toplevel.pack_start(self.iconBox, False)
7e8e6f0
-        self.toplevel.pack_start(self.mainVBox, False)
7e8e6f0
-        self.mainVBox.pack_start(self.table, False)
7e8e6f0
-        self.mainVBox.pack_start(self.securityBar)
7e8e6f0
-        bb.pack_start(self.cancelButton)
7e8e6f0
-        bb.pack_start(self.okButton)
7e8e6f0
-        self.mainVBox.pack_start(bb, False)
7e8e6f0
+        self.toplevel.pack_start(self.iconBox, False,0,0)
7e8e6f0
+        self.toplevel.pack_start(self.mainVBox, False,0,0)
7e8e6f0
+        self.mainVBox.pack_start(self.table, False,0,0)
7e8e6f0
+        self.mainVBox.pack_start(self.securityBar,True,0,0)
7e8e6f0
+        bb.pack_start(self.cancelButton,True,0,0)
7e8e6f0
+        bb.pack_start(self.okButton,True,0,0)
7e8e6f0
+        self.mainVBox.pack_start(bb, False,0,0)
7e8e6f0
         self.mainWindow.show_all()
7e8e6f0
         self.passwordEntry.grab_focus()
7e8e6f0
-        gtk.main()
7e8e6f0
+        Gtk.main()
7e8e6f0
diff -up system-config-rootpassword-1.99.6/src/rootpassword_tui.py.python3 system-config-rootpassword-1.99.6/src/rootpassword_tui.py
7e8e6f0
--- system-config-rootpassword-1.99.6/src/rootpassword_tui.py.python3	2009-09-14 13:16:11.000000000 +0200
7e8e6f0
+++ system-config-rootpassword-1.99.6/src/rootpassword_tui.py	2019-11-19 13:18:56.744552866 +0100
7e8e6f0
@@ -16,7 +16,8 @@
7e8e6f0
 import libuser
7e8e6f0
 from snack import *
7e8e6f0
 import gettext
7e8e6f0
-_ = lambda x: gettext.ldgettext("system-config-rootpassword", x)
7e8e6f0
+t = gettext.translation("system-config-rootpassword", fallback=True)
7e8e6f0
+_ = t.gettext
7e8e6f0
 
7e8e6f0
 
7e8e6f0
 class RootPasswordWindow:
7e8e6f0
@@ -45,7 +46,7 @@ class RootPasswordWindow:
7e8e6f0
         self.passgrid.setField (self.pwconfirm, 1, 1)
7e8e6f0
         self.toplevel.add (self.passgrid, 0, 1, (0, 0, 0, 1))
7e8e6f0
         
7e8e6f0
-        self.bb = ButtonBar (screen, [_("OK"),_("Cancel")])
7e8e6f0
+        self.bb = ButtonBar (screen, ((_("OK"),"ok"),(_("Cancel"), "cancel")))
7e8e6f0
         self.toplevel.add (self.bb, 0, 2, growx = 1)
7e8e6f0
 
7e8e6f0
     def run(self):
7e8e6f0
diff -up system-config-rootpassword-1.99.6/src/system-config-rootpassword.py.python3 system-config-rootpassword-1.99.6/src/system-config-rootpassword.py
7e8e6f0
--- system-config-rootpassword-1.99.6/src/system-config-rootpassword.py.python3	2009-09-14 13:16:11.000000000 +0200
7e8e6f0
+++ system-config-rootpassword-1.99.6/src/system-config-rootpassword.py	2019-11-19 13:19:28.579967156 +0100
7e8e6f0
@@ -31,15 +31,14 @@ if __name__ == "__main__":
7e8e6f0
 ## I18N
7e8e6f0
 ## 
7e8e6f0
 import gettext
7e8e6f0
-_ = lambda x: gettext.ldgettext("system-config-rootpassword", x)
7e8e6f0
-N_ = lambda x: x
7e8e6f0
+t = gettext.translation("system-config-rootpassword", fallback=True)
7e8e6f0
+_ = t.gettext
7e8e6f0
 
7e8e6f0
 def useTextMode():
7e8e6f0
 	import rootpassword_tui
7e8e6f0
 	app = rootpassword_tui.childWindow()
7e8e6f0
 
7e8e6f0
 def useGuiMode():
7e8e6f0
-	import gtk
7e8e6f0
 	import passwordDialog
7e8e6f0
 	app = passwordDialog.childWindow()
7e8e6f0
 	app.stand_alone()
7e8e6f0
@@ -62,7 +61,7 @@ else:
7e8e6f0
 	try:
7e8e6f0
 		useGuiMode()
7e8e6f0
 	except:
7e8e6f0
-		print _("Starting graphical mode failed.  Starting text mode instead.")
7e8e6f0
+		print(_("Starting graphical mode failed.  Starting text mode instead."))
7e8e6f0
 		import time
7e8e6f0
 		time.sleep(2)
7e8e6f0
 		useTextMode()
7e8e6f0
diff -up system-config-rootpassword-1.99.6/src/system-config-rootpassword.python3 system-config-rootpassword-1.99.6/src/system-config-rootpassword
7e8e6f0
--- system-config-rootpassword-1.99.6/src/system-config-rootpassword.python3	2007-11-21 12:00:42.000000000 +0100
7e8e6f0
+++ system-config-rootpassword-1.99.6/src/system-config-rootpassword	2019-11-19 13:08:27.545129150 +0100
7e8e6f0
@@ -1,4 +1,4 @@
7e8e6f0
 #!/bin/sh
7e8e6f0
 
7e8e6f0
 export PYTHONPATH=/usr/share/system-config-rootpassword
7e8e6f0
-/usr/bin/python2 /usr/share/system-config-rootpassword/system-config-rootpassword.py $*
7e8e6f0
+/usr/bin/python3 /usr/share/system-config-rootpassword/system-config-rootpassword.py $*