@@ -244,49 +244,67 @@ def set_tlsPort(self, val):
244244 channel_playback_mode = _get_mode_prop (CHANNEL_TYPE_PLAYBACK )
245245 channel_record_mode = _get_mode_prop (CHANNEL_TYPE_RECORD )
246246
247+ def _build_xml (self , port = None , listen = None , keymap = None , passwd = None ,
248+ display = None , xauth = None , tlsPort = None , autoport = False ,
249+ passwdValidTo = None ):
250+
251+ doautoport = (autoport and (port == - 1 or tlsPort == - 1 ))
252+ portxml = (port != None and (" port='%d'" % port ) or "" )
253+ tlsportxml = (tlsPort != None and (" tlsPort='%d'" % tlsPort ) or "" )
254+ autoportxml = (doautoport and " autoport='yes'" or "" )
255+
256+ keymapxml = (keymap and (" keymap='%s'" % keymap ) or "" )
257+ listenxml = (listen and (" listen='%s'" % listen ) or "" )
258+ passwdxml = (passwd and (" passwd='%s'" % passwd ) or "" )
259+ passwdValidToxml = (passwdValidTo and
260+ ( "passwdValidTo='%s'" % passwdValidTo ) or "" )
261+
262+ xauthxml = (xauth and (" xauth='%s'" % xauth ) or "" )
263+ displayxml = (display and (" display='%s'" % display ) or "" )
264+
265+ #socketxml = (socket and (" socket='%s'" % socket) or "")
266+
267+ xml = (" " +
268+ "<graphics type='%s'" % self .type +
269+ portxml +
270+ tlsportxml +
271+ autoportxml +
272+ keymapxml +
273+ listenxml +
274+ passwdxml +
275+ passwdValidToxml +
276+ #socketxml +
277+ displayxml +
278+ xauthxml +
279+ "/>" )
280+ return xml
281+
247282 def _sdl_config (self ):
248283 if "DISPLAY" not in os .environ and not self .display :
249284 raise RuntimeError ("No DISPLAY environment variable set." )
250285
251286 disp = self .display or os .environ ["DISPLAY" ]
252287 xauth = self .xauth or os .path .expanduser ("~/.Xauthority" )
253288
254- return """ <graphics type='sdl' display='%s' xauth='%s'/>""" % \
255- (disp , xauth )
289+ return self ._build_xml (display = disp , xauth = xauth )
290+
291+ def _spice_config (self ):
292+ return self ._build_xml (port = self .port , keymap = self .keymap ,
293+ passwd = self .passwd , listen = self .listen ,
294+ tlsPort = self .tlsPort , autoport = True ,
295+ passwdValidTo = self .passwdValidTo )
296+
297+ def _vnc_config (self ):
298+ return self ._build_xml (port = self .port , keymap = self .keymap ,
299+ passwd = self .passwd , listen = self .listen ,
300+ passwdValidTo = self .passwdValidTo )
256301
257302 def _get_xml_config (self ):
258303 if self ._type == self .TYPE_SDL :
259304 return self ._sdl_config ()
260-
261- if self ._type not in [self .TYPE_VNC , self .TYPE_SPICE ]:
262- raise ValueError (_ ("Unknown graphics type %r" % self ._type ))
263-
264- tlsportxml = ""
265- autoportxml = ""
266- keymapxml = ""
267- listenxml = ""
268- passwdxml = ""
269- passwdValidToxml = ""
270305 if self ._type == self .TYPE_SPICE :
271- if self ._port == - 1 or self ._tlsPort == - 1 :
272- autoportxml = "autoport='yes'"
273- tlsportxml = " tlsPort='%(tlsPort)d' " % { "tlsPort" : self ._tlsPort }
274- if self .keymap :
275- keymapxml = " keymap='%s'" % self .keymap
276- if self .listen :
277- listenxml = " listen='%s'" % self .listen
278- if self .passwd :
279- passwdxml = " passwd='%s'" % self .passwd
280- if self .passwdValidTo :
281- passwdValidToxml = " passwdValidTo='%s'" % self .passwdValidTo
282-
283- xml = " <graphics type='%(type)s' " % { "type" : self ._type } + \
284- "port='%(port)d'" % { "port" : self ._port } + \
285- "%(tlsport)s" % { "tlsport" : tlsportxml } + \
286- "%(autoport)s" % { "autoport" : autoportxml } + \
287- "%(keymapxml)s" % { "keymapxml" : keymapxml } + \
288- "%(listenxml)s" % { "listenxml" : listenxml } + \
289- "%(passwdxml)s" % { "passwdxml" : passwdxml } + \
290- "%(passwdValidToxml)s" % { "passwdValidToxml" : passwdValidToxml } + \
291- "/>"
292- return xml
306+ return self ._spice_config ()
307+ if self ._type == self .TYPE_VNC :
308+ return self ._vnc_config ()
309+ else :
310+ raise ValueError (_ ("Unknown graphics type" ))
0 commit comments