WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] Re: [PATCH][Take 2] VNC authentification

To: Masami Watanabe <masami.watanabe@xxxxxxxxxxxxxx>
Subject: [Xen-devel] Re: [PATCH][Take 2] VNC authentification
From: "Daniel P. Berrange" <berrange@xxxxxxxxxx>
Date: Fri, 29 Sep 2006 23:11:45 +0100
Cc: Ian Pratt <m+Ian.Pratt@xxxxxxxxxxxx>, Anthony Liguori <aliguori@xxxxxxxxxx>, xen-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: Fri, 29 Sep 2006 15:12:20 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
In-reply-to: <JX200609291747343.1765484@xxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <3AAA99889D105740BE010EB6D5A5A3B202A3D2@xxxxxxxxxxxxxxxxxxxxxxxxxx> <JX200609291747343.1765484@xxxxxxxxxxxxxx>
Reply-to: "Daniel P. Berrange" <berrange@xxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mutt/1.4.1i
On Fri, Sep 29, 2006 at 05:47:34PM +0900, Masami Watanabe wrote:
> Hi,
> 
> This is take 2 on VNC authentification.
> 
> The specification is as mentioned at
> http://lists.xensource.com/archives/html/xen-devel/2006-09/msg00666.html
> The difference is follows.
> - correction that passes information through xenstore.
> - after information is read, qemu deletes information on xenstore.

This patch doesn't compile because it is calling functions before
they are even defined & the implicit definition this results in does
not match the actual definition later

xen-3.0.3-testing-11633/tools/ioemu/vnc.c: In function 'protocol_version':
xen-3.0.3-testing-11633/tools/ioemu/vnc.c:1225: warning: implicit declaration 
of function 'vnc_auth'
xen-3.0.3-testing-11633/tools/ioemu/vnc.c: In function 'protocol_response':
xen-3.0.3-testing-11633/tools/ioemu/vnc.c:1250: warning: implicit declaration 
of function 'base64decode'
xen-3.0.3-testing-11633/tools/ioemu/vnc.c: At top level:
xen-3.0.3-testing-11633/tools/ioemu/vnc.c:1399: error: static declaration of 
'vnc_auth' follows non-static declaration
xen-3.0.3-testing-11633/tools/ioemu/vnc.c:1225: error: previous implicit 
declaration of 'vnc_auth' was here
xen-3.0.3-testing-11633/tools/ioemu/vnc.c: In function 'vnc_auth':
xen-3.0.3-testing-11633/tools/ioemu/vnc.c:1417: warning: implicit declaration 
of function 'make_challenge'
xen-3.0.3-testing-11633/tools/ioemu/vnc.c: At top level:
xen-3.0.3-testing-11633/tools/ioemu/vnc.c:1429: error: static declaration of 
'make_challenge' follows non-static declaration
xen-3.0.3-testing-11633/tools/ioemu/vnc.c:1417: error: previous implicit 
declaration of 'make_challenge' was here
xen-3.0.3-testing-11633/tools/ioemu/vnc.c:1461: error: static declaration of 
'base64decode' follows non-static declaration
xen-3.0.3-testing-11633/tools/ioemu/vnc.c:1250: error: previous implicit 
declaration of 'base64decode' was here


> diff -r 1d0e75523636 tools/python/xen/xend/XendRoot.py
> --- a/tools/python/xen/xend/XendRoot.py Wed Sep 27 17:49:22 2006 +0100
> +++ b/tools/python/xen/xend/XendRoot.py Fri Sep 29 15:46:03 2006 +0900
> @@ -95,6 +95,8 @@ class XendRoot:
>      dom0_min_mem_default = '0'
>  
>      dom0_vcpus_default = '0'
> +
> +    vncpasswd_default = '#None#'

Why not just use the proper Python None value ?



> diff -r 1d0e75523636 tools/python/xen/xend/XendDomainInfo.py
> --- a/tools/python/xen/xend/XendDomainInfo.py   Wed Sep 27 17:49:22 2006 +0100
> +++ b/tools/python/xen/xend/XendDomainInfo.py   Fri Sep 29 15:46:03 2006 +0900
> @@ -391,6 +391,9 @@ def parseConfig(config):
>          else:
>              log.warn("Ignoring malformed and deprecated config option "
>                       "restart = %s", restart)
> +
> +    result['image'].append(
> +        ['vncpasswd_default', xroot.get_vncpasswd_default()])

Why put the system default password into the guest's config record here,
only to remove it again later on. The XendRoot object is a singleton, so
better to just call 'get_vncpasswd_default' when you need it later.... 


> diff -r 1d0e75523636 tools/python/xen/xend/image.py
> --- a/tools/python/xen/xend/image.py    Wed Sep 27 17:49:22 2006 +0100
> +++ b/tools/python/xen/xend/image.py    Fri Sep 29 15:46:03 2006 +0900
> @@ -348,8 +348,20 @@ class HVMImageHandler(ImageHandler):
>          sdl = sxp.child_value(config, 'sdl')
>          ret = []
>          nographic = sxp.child_value(config, 'nographic')
> +
> +        # get password from xend-config(if password omitted, '#None#')
> +        vncpasswd_default = sxp.child_value(config,
> +                                            'vncpasswd_default')

Just call

    vncpassword_default = xen.xend.XendRoot.instance().get_vncpasswd_default()

Then there is no need to keep 'vncpasswd_default' in the guest's sxp at all.

> +        # get password from VM config(if password omitted, None)
> +        vncpasswd_vmconfig = sxp.child_value(config, 'vncpasswd')
> +        vncpasswd = vncpasswd_vmconfig
> +
>          if nographic:
>              ret.append('-nographic')
> +            # remove password
> +            if vncpasswd_vmconfig:
> +                config.remove(['vncpasswd', vncpasswd_vmconfig])
> +            del config[config.index(['vncpasswd_default', 
> vncpasswd_default])]
>              return ret
>          if vnc:
>              vncdisplay = sxp.child_value(config, 'vncdisplay',
> @@ -358,6 +370,19 @@ class HVMImageHandler(ImageHandler):
>              vncunused = sxp.child_value(config, 'vncunused')
>              if vncunused:
>                  ret += ['-vncunused']
> +            # password check
> +            if vncpasswd is None:
> +                if vncpasswd_default=='#None#':
> +                    raise VmError('vncpasswd is not setuped in VMconfig and 
> xend-config.')
> +                else:
> +                    vncpasswd = vncpasswd_default

This should just do  'if vncpasswd_default is None', rather than use some
magic string value '#None#'

> +            if vncpasswd!='':
> +                self.vm.storeVm("vncpasswd", vncpasswd)
> +
> +        # remove password
> +        config.remove(['vncpasswd', vncpasswd_vmconfig])
> +        del config[config.index(['vncpasswd_default', vncpasswd_default])]
> +
>          return ret
>  
>      def createDeviceModel(self):

See comment above about not storing 'vncpasswd_default' in this object 
at all.


Regards,
Dan.
-- 
|=- Red Hat, Engineering, Emerging Technologies, Boston.  +1 978 392 2496 -=|
|=-           Perl modules: http://search.cpan.org/~danberr/              -=|
|=-               Projects: http://freshmeat.net/~danielpb/               -=|
|=-  GnuPG: 7D3B9505   F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505  -=| 

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel