"Daniel P. Berrange" <berrange(a)redhat.com> wrote:
This patch adds support for using the monitor interface to set the
VNC
password
(qemu) change vnc password
Password: ********
A minor tricky thing is that we can't just send the command and password
all in one go, we must wait for the 'Password' prompt before sending the
password.
When doing this I noticed that virsh dumpxml has no way to request a
secure XML dump (required to see the password element), nor did the
virsh edit command set the SECURE or INACTIVE flags when changing
the XML.
qemu_conf.c | 45 ++++++++++++-----------
qemu_driver.c | 112 ++++++++++++++++++++++++++++++++++++++++++++--------------
As you suggested, here's a test of the command-line/xml-processing part:
A couple minor things I'm going to change eventually:
1) The name of every file in the qemuxml2argvdata/ directory
starts with qemuxml2argv. I'm going to remove those suffixes
and adjust the few callers.
2) Currently, each test case (pair of .args, .xml files) is checked
in separately, giving no clue as to how similar the inputs of one
test may be to another. Seeing such relationships would make
it easier to add new tests.
For example in this case, I've just added `, passwd="123456"'
to the <graphics.../> line in the existing vnc-passwd.xml file:
$ sed '/<graphics/s,/, passwd="123456"/,'
qemuxml2argv-graphics-vnc.xml \
| diff -u - qemuxml2argv-vnc-passwd.xml
- <graphics type='vnc' ... listen='127.0.0.1'/>
+ <graphics type='vnc' ... listen='127.0.0.1'
passwd="123456"/>
and appended ",password" to its .args file:
$ sed 's/:3$/:3,password/' qemuxml2argv-graphics-vnc.args \
| diff -u - qemuxml2argv-vnc-passwd.args
-LC_ALL=C ... -vnc 127.0.0.1:3
+LC_ALL=C ... -vnc 127.0.0.1:3,password
From ab770e0becc5b13cbd59f0f1219bb719f29e20d5 Mon Sep 17 00:00:00 2001
From: Jim Meyering <meyering(a)redhat.com>
Date: Wed, 21 Jan 2009 17:22:59 +0100
Subject: [PATCH] tests: add an qemu/argv test for the new vnc-passwd feature
* tests/qemuxml2argvtest.c (mymain): Run the new test.
* tests/qemuxml2argvdata/qemuxml2argv-vnc-passwd.xml: New file.
* tests/qemuxml2argvdata/qemuxml2argv-vnc-passwd.args: Likewise.
---
.../qemuxml2argvdata/qemuxml2argv-vnc-passwd.args | 1 +
tests/qemuxml2argvdata/qemuxml2argv-vnc-passwd.xml | 24 ++++++++++++++++++++
tests/qemuxml2argvtest.c | 2 +
3 files changed, 27 insertions(+), 0 deletions(-)
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-vnc-passwd.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-vnc-passwd.xml
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-vnc-passwd.args
b/tests/qemuxml2argvdata/qemuxml2argv-vnc-passwd.args
new file mode 100644
index 0000000..30cc17b
--- /dev/null
+++ b/tests/qemuxml2argvdata/qemuxml2argv-vnc-passwd.args
@@ -0,0 +1 @@
+LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu -S -M pc -m 214
-smp 1 -monitor pty -pidfile /nowhere/QEMUGuest1.pid -no-acpi -boot c -hda
/dev/HostVG/QEMUGuest1 -net none -serial none -parallel none -usb -vnc
127.0.0.1:3,password
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-vnc-passwd.xml
b/tests/qemuxml2argvdata/qemuxml2argv-vnc-passwd.xml
new file mode 100644
index 0000000..da6ecf3
--- /dev/null
+++ b/tests/qemuxml2argvdata/qemuxml2argv-vnc-passwd.xml
@@ -0,0 +1,24 @@
+<domain type='qemu'>
+ <name>QEMUGuest1</name>
+ <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
+ <memory>219200</memory>
+ <currentMemory>219200</currentMemory>
+ <vcpu>1</vcpu>
+ <os>
+ <type arch='i686' machine='pc'>hvm</type>
+ <boot dev='hd'/>
+ </os>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ <emulator>/usr/bin/qemu</emulator>
+ <disk type='block' device='disk'>
+ <source dev='/dev/HostVG/QEMUGuest1'/>
+ <target dev='hda' bus='ide'/>
+ </disk>
+ <input type='mouse' bus='ps2'/>
+ <graphics type='vnc' port='5903' autoport='no'
listen='127.0.0.1' passwd="123456"/>
+ </devices>
+</domain>
diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
index 17684fd..5607ea0 100644
--- a/tests/qemuxml2argvtest.c
+++ b/tests/qemuxml2argvtest.c
@@ -226,6 +226,8 @@ mymain(int argc, char **argv)
DO_TEST("hostdev-pci-address", 0);
+ DO_TEST("vnc-passwd", 0);
+
virCapabilitiesFree(driver.caps);
return(ret==0 ? EXIT_SUCCESS : EXIT_FAILURE);
--
1.6.1.347.g0238