Ack. Martin Gracik <mgracik@xxxxxxxxxx> wrote: > New XVNC does not support changing of SecurityTypes when > it is already running with vncconfig. So we have to solve > all the password stuff first, and then run the XVNC with > either None or VncAuth. > --- > pyanaconda/vnc.py | 65 ++++++++++++++++++++++------------------------------- > 1 files changed, 27 insertions(+), 38 deletions(-) > > diff --git a/pyanaconda/vnc.py b/pyanaconda/vnc.py > index 887df9f..47e42eb 100644 > --- a/pyanaconda/vnc.py > +++ b/pyanaconda/vnc.py > @@ -29,6 +29,7 @@ import isys > import product > import socket > import subprocess > +import iutil > > import gettext > _ = lambda x: gettext.ldgettext("anaconda", x) > @@ -76,24 +77,19 @@ class VncServer: > self.password="" > > def setVNCPassword(self): > - """Change the vnc server password. Output to file. """ > + """Set the vnc server password. Output to file. """ > > - if len(self.password) == 0: > - self.setVNCParam("SecurityTypes", "None") > - self.setVNCParam("rfbauth","0") > - return > + r, w = os.pipe() > + os.write(w, "%s\n" % self.password) > > - # If there is a password the SecurityTypes = VncAuth for all connections. > - self.setVNCParam("SecurityTypes", "VncAuth") > - self.setVNCParam("rfbauth",self.pw_file) > + # the -f option makes sure vncpasswd does not ask for the password again > + rc = iutil.execWithRedirect("vncpasswd", ["-f"], > + stdin=r, stdout=self.pw_file) > > - # password input combination. > - pwinput = "%s\n%s\n" % (self.password, self.password) > - vnccommand = [self.root+"/usr/bin/vncpasswd", self.pw_file] > - vncpswdo = subprocess.Popen(vnccommand, stdin=subprocess.PIPE, stdout=subprocess.PIPE)# We pipe the output > - # so the user does not see it. > - (out, err) = vncpswdo.communicate(input=pwinput) > - return vncpswdo.returncode > + os.close(r) > + os.close(w) > + > + return rc > > def initialize(self): > """Here is were all the relative vars get initialized. """ > @@ -144,16 +140,6 @@ class VncServer: > % {'productName': product.productName, > 'productVersion': product.productVersion} > > - def setVNCParam(self, param, value): > - """Set a parameter in the Xvnc server. > - > - Possible values for param and value. param=(values) > - SecurityTypes=(VncAuth,None) > - """ > - vncconfigcommand = [self.root+"/usr/bin/vncconfig", "-display", ":%s"%self.display , "-set" , "%s=%s" %(param, value)] > - vncconfo = subprocess.Popen(vncconfigcommand)# we dont want output > - return vncconfo.returncode > - > def openlogfile(self): > try: > fd = os.open(self.log_file, os.O_RDWR | os.O_CREAT) > @@ -211,13 +197,25 @@ class VncServer: > # Lets call it from here for now. > self.initialize() > > - # Lets start the xvnc regardless of vncconnecthost and password. > - # We can change the configuration on the fly later. > - xvnccommand = [ self.root + "/usr/bin/Xvnc", ":%s" % self.display, "-nevershared", > + if self.password and len(self.password) < 6: > + self.changeVNCPasswdWindow() > + > + if not self.password: > + SecurityTypes = "None" > + rfbauth = "0" > + else: > + SecurityTypes = "VncAuth" > + rfbauth = self.pw_file > + # Create the password file. > + rc = self.setVNCPassword() > + > + # Lets start the xvnc. > + xvnccommand = [ "Xvnc", ":%s" % self.display, "-nevershared", > "-depth", "16", "-br", > "IdleTimeout=0", "-auth", "/dev/null", "-once", > "DisconnectClients=false", "desktop=%s" % (self.desktop,), > - "SecurityTypes=None"] > + "SecurityTypes=%s" % SecurityTypes, "rfbauth=%s" % rfbauth ] > + > try: > xvncp = subprocess.Popen(xvnccommand, stdout=self.openlogfile(), stderr=subprocess.STDOUT) > except OSError: > @@ -233,15 +231,6 @@ class VncServer: > else: > self.log.info(_("The VNC server is now running.")) > > - # Lets look at the password stuff > - if self.password == "": > - pass > - elif len(self.password) < 6: > - self.changeVNCPasswdWindow() > - > - # Create the password file. > - self.setVNCPassword() > - > # Lets tell the user what we are going to do. > if self.vncconnecthost != "": > self.log.warning(_("\n\nYou chose to connect to a listening vncviewer. \n" > -- > 1.7.3.2 > > _______________________________________________ > Anaconda-devel-list mailing list > Anaconda-devel-list@xxxxxxxxxx > https://www.redhat.com/mailman/listinfo/anaconda-devel-list -- David Cantrell <dcantrell@xxxxxxxxxx> Supervisor, Installer Engineering Team Red Hat, Inc. | Honolulu, HI | UTC-10 _______________________________________________ Anaconda-devel-list mailing list Anaconda-devel-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/anaconda-devel-list