!C99Shell v. 1.0 pre-release build #16!

Software: Apache/2.0.54 (Fedora). PHP/5.0.4 

uname -a: Linux mina-info.me 2.6.17-1.2142_FC4smp #1 SMP Tue Jul 11 22:57:02 EDT 2006 i686 

uid=48(apache) gid=48(apache) groups=48(apache)
context=system_u:system_r:httpd_sys_script_t
 

Safe-mode: OFF (not secure)

/usr/share/rhn/up2date_client/   drwxr-xr-x
Free 3.84 GB of 27.03 GB (14.19%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     rhnregGui.py (34.86 KB)      -rwxr-xr-x
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#!/usr/bin/python

# this is a module containing classes for the registration related windows in
# gui.py. The code is split up so we can reuse it in the firstboot modules

import sys
sys.path.insert(0, "/usr/share/rhn/up2date_client/")
sys.path.insert(1, "/usr/share/rhn")

import string
import socket

import gtk
import gnome, gnome.ui
# XXX: why is this import necessary? We use only gtk.glade in the code...
from gtk import glade
import gobject

from rhpl.translate import _, N_
from rhpl import translate
translate.textdomain("up2date")
gtk.glade.bindtextdomain ("up2date")
from rhn import rpclib

import rhnreg
import up2dateErrors
import hardware
import messageWindow
import progress
import rpmUtils
import up2dateAuth
import rhnChannel
import up2dateUtils
import config
import configdlg
import up2dateLog
import sourcesConfig



gladefile = "/usr/share/rhn/up2date_client/rh_register.glade"

# this we need to carry between screen, so stash at module scope

global username, password, email, useExisting, newAccount, productInfo
username = None
password = None
email = None
useExisting = None
newAccount = None
productInfo = None


#caps = rhnreg.getCaps()

# detect if were talking to RHN or not, needed so that
# the modules can tell firstboot not to run in that case.
def useRHN():
    useRhn = 0
    sources = sourcesConfig.getSources()
    for source in sources:
        if source['type'] == "up2date":
            useRhn = 1
    return useRhn

    

class LoginPage:
    def __init__(self):
        self.loginXml = gtk.glade.XML(gladefile,
                                      "initialLoginWindowVbox", domain="up2date")
        


        self.loginXml.signal_autoconnect (
            { "onNewAccountButtonToggled": self.loginPageOnCreateNewAccountButtonToggled,
              "onUseExistingAccountButtonToggled": self.loginPageOnCreateNewAccountButtonToggled,
              "onOptOutButtonToggled" : self.loginPageOnCreateNewAccountButtonToggled,
              "onPrivacyButtonClicked" : self.showPrivacyDialog,
              "onNetworkConfigButtonClicked" : self.showNetworkConfigDialog,
              })

    def loginPagePrepareVbox(self):
        loginWindowVbox = self.loginXml.get_widget("initialLoginWindowVbox")
        vbox = self.xml.get_widget("loginPageVbox")

        return vbox

    def getCaps(self):
        caps = rhnreg.getCaps()

    # onLoginPagePrepare will need to call this
    def loginPagePrepare(self):

        loginWindowVbox = self.loginXml.get_widget("initialLoginWindowVbox")
        # so we reset to this when coming from the optOut confirm window
        self.loginXml.get_widget("useExistingAccountButton").set_active(gtk.TRUE)

        self.optOut = 0
        self.newAccount = 0
        self.useExisting = 1

        return loginWindowVbox

    def loginPageVerify(self):
        self.loginPw = self.loginXml.get_widget("loginPasswordEntry")
        self.loginUname = self.loginXml.get_widget("loginUserEntry")

        global username, password
        username = self.loginUname.get_text()
        password = self.loginPw.get_text()
        useExistingButton = self.loginXml.get_widget("useExistingAccountButton")
        newAccountButton = self.loginXml.get_widget("newAccountButton")
        optOutButton = self.loginXml.get_widget("optOutButton")

        global useExisting, newAccount
        useExisting = useExistingButton.get_active()
        newAccount = newAccountButton.get_active()
        self.optOut = optOutButton.get_active()
        # FIXME: needs
        if self.newAccount:
            self.loginPageOnNewAccount()
            return False

        if self.optOut:
            self.optOut = 1
            self.loginPageOnOptOut()
            return False

        # validate / check user name
        if self.loginUname.get_text() == "":
            # we assume someone else creates this method...
            self.setArrowCursor()
            dlg = messageWindow.ErrorDialog(_("You must enter a user name."))
            self.loginUname.grab_focus()
            return True

        if self.loginPw.get_text() == "":
            self.setArrowCursor()
            dlg = messageWindow.ErrorDialog(_("You must enter and verify a password."))
            self.loginPw.grab_focus()
            return True

    def loginPageApply(self):
        # get the caps info before we show the activastion page which needs the
        # caps. _but_ we need to do this after we configure the network...
        
        self.getCaps()

        self.alreadyRegistered = 1
        try:
            self.alreadyRegistered = rhnreg.reserveUser(self.loginUname.get_text(),
                                                        self.loginPw.get_text())

        except up2dateErrors.ValidationError, e:
            self.setArrowCursor()
            print e.errmsg
            dlg = messageWindow.ErrorDialog(messageWindow.wrap_text(_("The server indicated an error:\n") + e.errmsg))
            self.loginUname.grab_focus()
            return gtk.TRUE
        except up2dateErrors.CommunicationError, e:
            self.setArrowCursor()
            print e.errmsg
            self.fatalError(_("There was an error communicating with the registration server.  The message was:\n") + e.errmsg)
        if self.alreadyRegistered == 0:
            # this account doesnt exist
            self.setArrowCursor()
            errmesg = _("That user account and password is not valid\n")
            dlg = messageWindow.ErrorDialog(messageWindow.wrap_text(errmesg))
            newAccountButton = self.loginXml.get_widget("newAccountButton")
            newAccountButton.set_active(gtk.TRUE)
            return gtk.TRUE
                                            
            
        return gtk.FALSE
    
    # FIXME: this should be shared with the stuff up2date/gui.py uses
    # maybe in up2date/gui_shared.py ?
    def loginPageOnCreateNewAccountButtonToggled(self, button):

        useExistingButton = self.loginXml.get_widget("useExistingAccountButton")
        newAccountButton = self.loginXml.get_widget("newAccountButton")
        optOutButton = self.loginXml.get_widget("optOutButton")

        self.useExisting = useExistingButton.get_active()
        self.newAccount = newAccountButton.get_active()
        self.optOut = optOutButton.get_active()

        if self.useExisting:
            self.loginXml.get_widget("loginUserEntry").set_sensitive(gtk.TRUE)
            self.loginXml.get_widget("loginPasswordEntry").set_sensitive(gtk.TRUE)
            self.loginXml.get_widget("loginPasswordEntryLabel").set_sensitive(gtk.TRUE)
            self.loginXml.get_widget("loginUserEntryLabel").set_sensitive(gtk.TRUE)

        if self.newAccount:
            self.loginXml.get_widget("loginUserEntry").set_sensitive(gtk.FALSE)
            self.loginXml.get_widget("loginPasswordEntry").set_sensitive(gtk.FALSE)
            self.loginXml.get_widget("loginPasswordEntryLabel").set_sensitive(gtk.FALSE)
            self.loginXml.get_widget("loginUserEntryLabel").set_sensitive(gtk.FALSE)

    def showPrivacyDialog(self, button):
        priv = PrivacyDialog()

    def showNetworkConfigDialog(self, button):
        cfg = configdlg.Gui(firstboot=1)




class OptOutPage:
    def __init__(self):
        self.optOutXml = gtk.glade.XML(gladefile,
                                       "optOutWindowVbox", domain="up2date")
        
        self.optOutXml.signal_autoconnect(
            { "onOptInButtonToggled" : self.optOutPageOnOptInButtonToggled})

    def optOutPagePrepareVbox(self):
        loginWindowVbox = self.loginXml.get_widget("optOutWindowVbox")
        vbox = self.xml.get_widget("optOutPageVbox")

        return vbox

    def optOutPageOnOptInButtonToggled(self, button):
        optInButton = self.optOutXml.get_widget("OptInButton")
        optOutButton = self.optOutXml.get_widget("OptOutButton")

        self.optInReally = optInButton.get_active()
        self.optOutReally = optOutButton.get_active()
        
    def optOutPagePrepare(self):
        optOutWindowVbox = self.optOutXml.get_widget("optOutWindowVbox")        
        self.optInReally = 1
        self.optOutReally = 0

        return optOutWindowVbox

    def optOutPageVerify(self):
        pass

    def optOutPageApply(self):
        if self.optInReally:
            self.optOutPageOptIn()

        if self.optOutReally:
            self.optOutPageOptOut()

        return gtk.TRUE
        

class ActivatePage:
    useExisting = None
    newAccount = None
    def __init__(self):
        self.activateXml = gtk.glade.XML(gladefile,
                                         "activateWindowVbox", domain="up2date")
        
        self.activateXml.signal_autoconnect (
            
            { "onActivateExistingSubscriptionButtonToggled" : self.activatePageOnActivateExistingSubscriptionButtonToggled,
              "onHardwareDetailButtonClicked" : self.showHardwareDialog,
              "onPackageDetailButtonClicked" : self.showPackageDialog,
              })
        self.initProfile = None
        # we have to do some fb specific magic, so this
        # tells us if were running in firstboot or not
        self.fb = None
        self.cfg = config.initUp2dateConfig()
        self.activationNoPackages = None
        self.regNum = None
        self.noChannels = None
        self.serviceNotEnabled = None



    def getRemaining(self):
        global username, password, newAccount

        # if its a new user (aka, username is reserved but not registered)
        # this call will fail, so skip it on the case of new user. Since
        # its a new user, were going to assume they have no entitlements
        if newAccount:
            subs = 0
            return subs
        
        # if the server doesnt support this call, assume they
        # can use an entitlement (-1 == unlimited subs)
        if self.cfg['supportsRemainingSubscriptions']:
            try:
                subs = rhnreg.getRemainingSubscriptions(username, password,
                                                        up2dateUtils.getArch(),
                                                        up2dateUtils.getVersion())
            except rpclib.Fault, f:
                if abs(f.faultCode) == 2:
                    error = f.faultString
                    dlg = messageWindow.ErrorDialog("%s" % error)
                    return True
               
                elif abs(f.faultCode) == 3:
                    error = f.faultString
                    dlg = messageWindow.ErrorDialog("%s" % error)
                    return True

                elif abs(f.faultCode) == 19:
                    # uh, yeah, this is a work around for now. The
                    # server needs to be more fine grained on why it
                    # throws this error
                    return 0
#                    error = f.faultString
#                    dlg = messageWindow.ErrorDialog("%s" % error)
#                    return True
                raise
                
        else:
            subs = -1
        return subs

    # we cant do this on module load because there might be a valid interface
    # but zero connectivity
    def getHardware(self):
        try:
            self.hardware = hardware.Hardware()
        except:
            print _("Error running hardware profile")
        
    def updateSubscriptions(self):
        self.subs = self.getRemaining()
        if int(self.subs) != 0:
            button = self.activateXml.get_widget("activateExistingSubscriptionButton")
             #print "button: %s" % dir(button)
            button.set_label(_("""Use one of my existing, active subscriptions."""))

    def populateProfile(self):
        if not self.initProfile:
            profileName = None
            hostname = None
            if self.hardware:
                for hw in self.hardware:
                    if hw['class'] == 'NETINFO':
                        hostname = hw.get('hostname')
                        ipaddr = hw.get('ipaddr')
           
        # the check against "unknown" is a bit lame, but it's
        # the minimal change to fix #144704
            if hostname and (hostname != "unknown"):
                profileName = hostname
            else:
                if ipaddr:
                    profileName = ipaddr

            if profileName:
                self.activateXml.get_widget("systemNameEntry").set_text(profileName)
            else:
                profileName = "unknown"
                
            self.initProfile = gtk.TRUE
            self.setArrowCursor()
        
        # we refresh the page as were going though the dialog, after the inital
        # creation from "setupScreen". The reason we have to do this is that
        # username/password isnt known the first time activatePagePrepare is ran
    def activatePagePrepare(self):
        activateVbox = self.activateXml.get_widget("activateWindowVbox")

        # this is a kluge... firstboot initializes all the screens at once,
        # while register inits them as they are shown. So in this case, for
        # firstboot, we dont run updateSubscriptions at init (since the info
        # it needs doesnt exist yet. But for rhn_register, we run it at init
        # we use the fact that firstboot screens have to have "moduleName" defined
        # and that rhn_register doesnt...
        if not hasattr(self, "moduleName"):
            self.updateSubscriptions()
        # part of fix for #144704
        self.getHardware()
        self.populateProfile()

        return activateVbox

    def activatePageOnActivateExistingSubscriptionButtonToggled(self, button):

        activateExistingSubscriptionButton = self.activateXml.get_widget("activateExistingSubscriptionButton")
        useRegistrationNumberButton = self.activateXml.get_widget("useRegistrationNumberButton")

        self.activateExistingSubscription = activateExistingSubscriptionButton.get_active()
        
        self.useRegistrationNumber = useRegistrationNumberButton.get_active()

        if self.activateExistingSubscription:
            self.activateXml.get_widget("registrationNumberLabel").set_sensitive(gtk.FALSE)
            self.activateXml.get_widget("registrationNumberEntry").set_sensitive(gtk.FALSE)
            self.activateXml.get_widget("registrationNumberEntry").set_text("")
            self.regNum = None
            
        if self.useRegistrationNumber:
            self.activateXml.get_widget("registrationNumberLabel").set_sensitive(gtk.TRUE)
            self.activateXml.get_widget("registrationNumberEntry").set_sensitive(gtk.TRUE)

    def activatePageVerify(self):
        self.useRegistrationNumber = None
        systemNameEntry = self.activateXml.get_widget("systemNameEntry")
        self.regNumEntry = self.activateXml.get_widget("registrationNumberEntry")

        activateExistingSubscriptionButton = self.activateXml.get_widget("activateExistingSubscriptionButton")
        useRegistrationNumberButton = self.activateXml.get_widget("useRegistrationNumberButton")
        sendHardwareButton = self.activateXml.get_widget("sendHardwareButton")
        sendPackageListButton = self.activateXml.get_widget("sendPackageListButton")

        self.sendHardware = sendHardwareButton.get_active()
        self.sendPackages = sendPackageListButton.get_active()
        self.activateExisting = activateExistingSubscriptionButton.get_active()
        self.newActivation = useRegistrationNumberButton.get_active()

        if systemNameEntry.get_text() == "":
            dlg = messageWindow.ErrorDialog(_("You must choose a name for this profile."))
            systemNameEntry.grab_focus()
            return True

        if self.activateExisting:
            # FIXME: spec doesnt mention much about what to do if they dont
            # have compatible entitlements
            pass

        if self.newActivation:
            if self.regNumEntry.get_text() == "":
                dlg = messageWindow.ErrorDialog(_("You must enter a registration number."))
                self.regNumEntry.grab_focus()
                return True

            self.regNum = self.regNumEntry.get_text()

        if not self.sendPackages:
            self.activationNoPackages = 1

        return False

    def __updateContactInfo(self, newAccount, productInfo, uname, password, pwin):
        try:
            if newAccount:
                rhnreg.updateContactInfo(uname, password, productInfo)
        except up2dateErrors.CommunicationError, e:
            pwin.hide()
            self.fatalError(_("Problem registering personal information:\n") + e.errmsg)
        except:
            self.setArrowCursor()
            pwin.hide()
            dlg = messageWindow.ErrorDialog(_("Problem registering personal information"))
            return True
        return False   
        

    def __registerProduct(self, newAccount, productInfo, pwin):
        try:
            if newAccount:
                rhnreg.registerProduct(self.systemId, productInfo, self.oemInfo)
        except up2dateErrors.CommunicationError, e:
            pwin.hide()
            self.fatalError(_("Problem registering personal information:\n") + e.errmsg)
        except:
            self.setArrowCursor()
            pwin.hide()
            dlg = messageWindow.ErrorDialog(_("Problem registering personal information"))
            return True
        return False


    def activatePageApply(self):
        self.setBusyCursor()

        pwin = progress.Progress()
        pwin.setLabel(_("Sending your profile information to Red Hat Network.  Please wait."))

        self.systemId = None
        global newAccount, useExisting, email, username, password
        other = None
        if self.fb:
            uname = username
            passwd = password
            if useExisting:
                emailaddress = ""
            else:
                emailaddress = email
        else:
            if self.useExisting:
                uname = self.loginXml.get_widget("loginUserEntry").get_text()
                passwd = self.loginXml.get_widget("loginPasswordEntry").get_text()
                emailaddress = ""
        

            if self.newAccount:
                uname = self.newAccountXml.get_widget("newAccountUserEntry").get_text()
                passwd = self.newAccountXml.get_widget("newAccountPasswordEntry").get_text()
                emailaddress = self.newAccountXml.get_widget("newAccountEmailEntry").get_text()
            
        if self.regNum:
            other = {'registrationNumber' : self.regNum}

        profileName  = self.activateXml.get_widget("systemNameEntry").get_text()

        # fixme: make these a class singleton?
        
        # legacy cruft
        try:
            if useExisting:
                rhnreg.registerUser(uname, passwd)
            else:
                rhnreg.registerUser(uname, passwd, emailaddress)
        except up2dateErrors.CommunicationError, e:
            pwin.hide()
            self.fatalError(_("Problem registering user name:\n") + e.errmsg)
        except:
            self.setArrowCursor()
            pwin.hide()
            dlg = messageWindow.ErrorDialog(_("Problem registering username."))
            return True

        pwin.setProgress(1, 6)
        
        try:
            self.systemId = rhnreg.registerSystem(uname, passwd, profileName, other=other)
        except up2dateErrors.CommunicationError, e:
            pwin.hide()
            self.fatalError(_("Problem registering system:\n") + e.errmsg)
        except up2dateErrors.RhnUuidUniquenessError, e:
            pwin.hide()
            self.fatalError(_("Problem registering system:\n") + e.errmsg)
        except up2dateErrors.InvalidProductRegistrationError, e:
            pwin.hide()
            dlg = messageWindow.ErrorDialog(_("The subscription number [ %s ] provided is not a valid subscription number." %
                                              other['registrationNumber']))
            self.regNumEntry.grab_focus()
            return True
        except:
            self.setArrowCursor()
            pwin.hide()
            dlg = messageWindow.ErrorDialog(_("Problem registering system."))
            return True

        pwin.setProgress(2,6)

        # write the system id out.
        if self.systemId:
            if not rhnreg.writeSystemId(self.systemId):
                self.setArrowCursor()
                pwin.hide()
                dlg = messageWindow.ErrorDialog(_("Problem writing out system id to disk."))
                return True
        else:
            self.setArrowCursor()
            pwin.hide()
            dlg = messageWindow.ErrorDialog(_("There was a problem registering this system."))
            return True

        # incorporate the info from the oemInfoFile as well
        self.oemInfo = rhnreg.getOemInfo()

        global productInfo
        if self.cfg['supportsUpdateContactInfo']:
            ret = self.__updateContactInfo(newAccount, productInfo, uname, password, pwin)
        else:
            ret = self.__registerProduct(newAccount, productInfo, pwin)
            
        if ret:
            return ret
            
        pwin.setProgress(3, 6)
        # maybe upload hardware profile
        if self.sendHardware:
            try:
                rhnreg.sendHardware(self.systemId, self.hardware)
            except up2dateErrors.CommunicationError, e:
                pwin.hide()
                self.fatalError(_("Problem sending hardware profile:\n") + e.errmsg)
            except:
                self.setArrowCursor()
                pwin.hide()
                dlg = messageWindow.ErrorDialog(_("Problem sending hardware profile."))
                return True
        pwin.setProgress(4, 6)

        if self.sendPackages:
            # interesting...
            getInfo = 0
#            if self.cfg['supportsExtendedPackageProfile']
            #FIXME
            getInfo = 1

            packageList = rpmUtils.getInstalledPackageList(progressCallback = lambda amount,
                                                           total: gtk.mainiteration(gtk.FALSE),
                                                           getInfo=getInfo)
            selection = []
            # FIXME
            selectedPackages = packageList
##            for row in range(self.regPackageArea.n_rows):
##                rowData = self.regPackageArea.get_row_data(row)
##                if rowData[0] == 1:
##                    selection.append(rowData[1])
##            print "gh270"
##            selectedPackages = []
##            for pkg in packageList:
##                if pkg[0] in selection:
##                    selectedPackages.append(pkg)
            try:
                rhnreg.sendPackages(self.systemId, selectedPackages)
            except up2dateErrors.CommunicationError, e:
                pwin.hide()
                self.fatalError(_("Problem sending packages:\n") + e.errmsg)
            except:
                self.setArrowCursor()
                pwin.hide()
                dlg = messageWindow.ErrorDialog(_("Problem sending packages."))
                return True


        rhnreg.startRhnsd()
        pwin.setProgress(5, 6)


        li = None
        try:
            li = up2dateAuth.updateLoginInfo()
        except rpclib.Fault, f:
            if f.faultCode == -31:
                self.serviceNotEnabled = 1
            else:
                self.fatalError(f.faultString,wrap=0)
                return True

        if li:
            # see if we have any active channels
            if li['X-RHN-Auth-Channels'] == []:
                # no channels subscribe
                self.noChannels = 1
            
        pwin.setProgress(6,6)
        pwin.hide()
        rhnChannel.selected_channels = None
        self.setArrowCursor()

        return False
        
        #FIXME: finish message hackery

    def showHardwareDialog(self, button):
        hdware = HardwareDialog()

    def showPackageDialog(self, button):
        pkgDlg = PackageDialog()
        
class NewAccountPage:
    def __init__(self):
        self.newAccountXml = gtk.glade.XML(gladefile,
                                           "newAccountWindowVbox", domain="up2date")


        self.newAccountXml.signal_autoconnect (
            { "onPrivacyButton2Clicked" : self.showPrivacyDialog,
              "onCountryComboEntryChanged" : self.countryChanged,
              })
        
    def newAccountPagePrepare(self):
        newAccountVbox = self.newAccountXml.get_widget("newAccountWindowVbox")
        return newAccountVbox

    def newAccountPageVerify(self):
        self.pwEntry = self.newAccountXml.get_widget("newAccountPasswordEntry")
        self.pwConfirmEntry = self.newAccountXml.get_widget("newAccountPasswordConfirmEntry")
        self.unameEntry = self.newAccountXml.get_widget("newAccountUserEntry")
        self.emailEntry = self.newAccountXml.get_widget("newAccountEmailEntry")
        self.firstNameEntry = self.newAccountXml.get_widget("firstNameEntry")
        self.lastNameEntry = self.newAccountXml.get_widget("lastNameEntry")
        self.address1Entry =  self.newAccountXml.get_widget("address1Entry")
        self.address2Entry = self.newAccountXml.get_widget("address2Entry")
        self.cityEntry = self.newAccountXml.get_widget("cityEntry")
        self.zipEntry = self.newAccountXml.get_widget("zipEntry")
        self.companyEntry = self.newAccountXml.get_widget("companyEntry")
        self.stateComboEntry = self.newAccountXml.get_widget("stateCombo").entry
        self.countryComboEntry = self.newAccountXml.get_widget("countryCombo").entry
        

        global username, email, password

        if self.unameEntry.get_text() == "":
            self.setArrowCursor()
            dlg = messageWindow.ErrorDialog(_("You must enter a user name."))
            self.unameEntry.grab_focus()
            return True

        if len(self.unameEntry.get_text()) < 5:
            self.setArrowCursor()
            dlg = messageWindow.ErrorDialog(_("User names must be at least 5 characters long"))
            self.unameEntry.grab_focus()
            return True

        if self.pwEntry.get_text() == "":
            self.setArrowCursor()
            dlg = messageWindow.ErrorDialog(_("You must enter and verify a password."))
            self.pwEntry.grab_focus()
            return True

        if len(self.pwEntry.get_text()) < 5:
            self.setArrowCursor()
            dlg = messageWindow.ErrorDialog(_("Passwords must be at least 5 characters long"))
            self.pwEntry.grab_focus()
            return True

        if self.pwConfirmEntry.get_text() == "":
            self.setArrowCursor()
            dlg = messageWindow.ErrorDialog(_("You must enter and verify a password."))
           self.pwConfirmEntry.grab_focus()
            return True

        if self.emailEntry.get_text() == "":
            self.setArrowCursor()
            dlg = messageWindow.ErrorDialog(_("You must enter an email address."))
            self.emailEntry.grab_focus()
            return True

        if not self.pwEntry.get_text() ==  self.pwConfirmEntry.get_text():
            self.setArrowCursor()
            dlg = messageWindow.WarningDialog(_("The two passwords you entered do not match.\nPlease re-type the second password."))
            self.pwConfirmEntry.set_text("")
            self.pwConfirmEntry.grab_focus()
            return True
        
        # verify they gave an email address
        if not rhnreg.validateEmail(self.emailEntry.get_text()):
            self.setArrowCursor()
            dlg = messageWindow.ErrorDialog(_("You must enter a valid e-mail address."))
#            self.emailEntry.set_text("")
            self.emailEntry.grab_focus()
            return True

        if self.firstNameEntry.get_text() == "":
            self.setArrowCursor()
            dlg = messageWindow.ErrorDialog(_("You must enter your first name."))
            self.firstNameEntry.grab_focus()
            return True

        if self.lastNameEntry.get_text() == "":
            self.setArrowCursor()
            dlg = messageWindow.ErrorDialog(_("You must enter your last name."))
            self.lastNameEntry.grab_focus()
            return True

        if self.address1Entry.get_text() == "":
            self.setArrowCursor()
            dlg = messageWindow.ErrorDialog(_("You must enter your address."))
            self.address1Entry.grab_focus()
            return True

        if self.cityEntry.get_text() == "":
            self.setArrowCursor()
            dlg = messageWindow.ErrorDialog(_("You must enter your city."))
            self.cityEntry.grab_focus()
            return True

        if self.zipEntry.get_text() == "":
            self.setArrowCursor()
            dlg = messageWindow.ErrorDialog(_("You must enter your zip/postal code."))
            self.zipEntry.grab_focus()
            return True

        username = self.unameEntry.get_text()
        password = self.pwEntry.get_text()
        email = self.emailEntry.get_text()
        
    def getCaps(self):
        caps = rhnreg.getCaps()
        
    def newAccountPageApply(self):
        # FIXME: move to apply

        caps = self.getCaps()
        global username, password, productInfo
        productInfo = {}
        try:
            self.alreadyRegistered = rhnreg.reserveUser(username,
                                                        password)
        except up2dateErrors.ValidationError, e:
            self.setArrowCursor()
            dlg = messageWindow.ErrorDialog(messageWindow.wrap_text(_("The server indicated an error:\n") + e.errmsg))
            self.unameEntry.grab_focus()
            return True
        except up2dateErrors.CommunicationError, e:
            self.setArrowCursor()
            self.fatalError(_("There was an error communicating with the registration server.  The message was:\n") + e.errmsg)
        productInfo['first_name'] = self.firstNameEntry.get_text()
        productInfo['last_name'] = self.lastNameEntry.get_text()
        productInfo['company'] = self.companyEntry.get_text()
        productInfo['address1'] = self.address1Entry.get_text()
        productInfo['address2'] = self.address2Entry.get_text()
        productInfo['city'] = self.cityEntry.get_text()
        productInfo['state'] = self.stateComboEntry.get_text()
        productInfo['country'] = self.countryComboEntry.get_text()
        productInfo['zip'] = self.zipEntry.get_text()
        productInfo['contact_email'] = self.newAccountXml.get_widget("contactOptInButton").get_active()

        self.newAccount = 1
        self.setArrowCursor()

        return False

    def showPrivacyDialog(self, button):
        priv = PrivacyDialog()

    def countryChanged(self, entry):
        country = entry.get_text()
        if country not in [_("United States"), _("Canada")]:
            stateCombo = self.newAccountXml.get_widget("stateCombo").entry
            stateCombo.set_text("")
            

class PrivacyDialog:
    def __init__(self):
        self.privXml = gtk.glade.XML(
            gladefile,
            "privacyDialog", domain="up2date")
        self.dlg = self.privXml.get_widget("privacyDialog")

        self.privXml.get_widget("okButton").connect("clicked", self.finish)

                                                                                
        privacyArea = self.privXml.get_widget("privacyArea")
        #privacyArea.delete_text(0, privacyArea.get_length())
        try:
            text = rhnreg.privacyText()
        except up2dateErrors.CommunicationError, e:
            self.mainWin.hide()
            self.fatalError(_("Fatal error retrieving privacy statement:\n") + e.errmsg)
            
        buffer = gtk.TextBuffer(None)
        buffer.set_text(text)
                                                                                
        privacyArea.set_buffer(buffer)


    def finish(self, button):
        self.dlg.hide()
        self.rc = 1


class HardwareDialog:
    def __init__(self):
        self.hwXml = gtk.glade.XML(
            gladefile,
            "hardwareDialog", domain="up2date")
        self.dlg = self.hwXml.get_widget("hardwareDialog")
        
        self.hwXml.get_widget("okButton").connect("clicked", self.finish)
        self.populateHardware()

    def populateHardware(self):
        # Read all hardware in
        self.hardware = hardware.Hardware()
            
        for hw in self.hardware:
            if hw['class'] == 'CPU':
                label = self.hwXml.get_widget("cpuLabel")
                label.set_text(hw['model'])
                label = self.hwXml.get_widget("speedLabel")
                label.set_text(_("%d MHz") % hw['speed'])
            elif hw['class'] == 'MEMORY':
                label = self.hwXml.get_widget("ramLabel")
                try:
                    label.set_text(_("%s megabytes") % hw['ram'])
                except:
                    pass
            elif hw['class'] == 'NETINFO':
                label = self.hwXml.get_widget("hostnameLabel")
                try:
                    label.set_text(hw['hostname'])
                except:
                    pass
                label = self.hwXml.get_widget("ipLabel")
                try:
                    label.set_text(hw['ipaddr'])
                except:
                    pass


        label = self.hwXml.get_widget("versionLabel")
        try:
            distversion = up2dateUtils.getVersion()
        except up2dateErrors.RpmError, e:
            self.fatalError(e.errmsg)
            
        label.set_text(distversion)
                                                                                
    def finish(self, button):
        self.dlg.hide()
        self.rc = 1


class PackageDialog:
    def __init__(self):

        self.getPackageList()

        self.swXml = gtk.glade.XML(
            gladefile,
            "packageDialog", domain="up2date")
        self.dlg = self.swXml.get_widget("packageDialog")
        
        self.swXml.get_widget("okButton").connect("clicked", self.finish)

        self.createTree()
        
        self.populatePackages()

    def createTree(self):
        # name-version-release, arch
        self.packageStore = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING)
        self.packageStore.set_sort_column_id(1, gtk.SORT_ASCENDING)
        self.packageTreeView = self.swXml.get_widget("packageTreeView")
        self.packageTreeView.set_model(self.packageStore)
        
        self.packageTreeView.set_rules_hint(gtk.TRUE)

        col = gtk.TreeViewColumn(_("Package"), gtk.CellRendererText(), text=0)
        col.set_sort_column_id(0)
        self.packageTreeView.append_column(col)

        col = gtk.TreeViewColumn(_("Arch"), gtk.CellRendererText(), text=1)
        col.set_sort_column_id(1)
        self.packageTreeView.append_column(col)

    def getPackageList(self):
        pwin = progress.Progress()
        pwin.setLabel(_("Building a list of RPM packages installed on your system.  Please wait."))

        self.packageDialogPackages = rpmUtils.getInstalledPackageList(progressCallback = pwin.setProgress, getArch=1)
        pwin.hide()


    def populatePackages(self):
        self.packageStore.clear()
        
        for package in self.packageDialogPackages:
            nvr = "%s-%s-%s" % (package[0], package[1], package[2])
            arch = package[4]
            iter = self.packageStore.append()
            self.packageStore.set_value(iter, 0, nvr)
            self.packageStore.set_value(iter, 1, arch)
    
    def finish(self, button):
        self.dlg.hide()
        self.rc = 1

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 1.0 pre-release build #16 powered by Captain Crunch Security Team | http://ccteam.ru | Generation time: 0.0055 ]--