Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP1:GA
xen.4507
change-vnc-passwd.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File change-vnc-passwd.patch of Package xen.4507
Add support of change-vnc-password while vm is running. Signed-off-by: Chunyan Liu <cyliu@novell.com> --- tools/python/xen/xend/XendDomainInfo.py | 14 ++++++++++++++ tools/python/xen/xend/server/XMLRPCServer.py | 2 +- tools/python/xen/xm/main.py | 12 ++++++++++++ tools/qemu-xen-traditional-dir-remote/vl.c | 2 +- tools/qemu-xen-traditional-dir-remote/vnc.c | 1 + tools/qemu-xen-traditional-dir-remote/xenstore.c | 14 ++++++++++++++ 6 files changed, 43 insertions(+), 2 deletions(-) Index: xen-4.4.4-testing/tools/python/xen/xend/XendDomainInfo.py =================================================================== --- xen-4.4.4-testing.orig/tools/python/xen/xend/XendDomainInfo.py +++ xen-4.4.4-testing/tools/python/xen/xend/XendDomainInfo.py @@ -1665,6 +1665,20 @@ class XendDomainInfo: vfb_ctrl.reconfigureDevice(0, dev_info) break + def chgvncpasswd(self, passwd): + if self._stateGet() != DOM_STATE_HALTED: + path = '/local/domain/0/backend/vfb/%u/0/' % self.getDomid() + xstransact.Write(path, 'vncpasswd', passwd) + self.image.signalDeviceModel("chgvncpasswd", "vncpasswdchged") + + for dev_uuid, (dev_type, dev_info) in self.info['devices'].items(): + if dev_type == 'vfb': + dev_info['vncpasswd'] = passwd + dev_info['other_config']['vncpasswd'] = passwd + self.info.device_update(dev_uuid, cfg_xenapi = dev_info) + break + xen.xend.XendDomain.instance().managed_config_save(self) + # # Function to update xenstore /vm/* # Index: xen-4.4.4-testing/tools/python/xen/xend/server/XMLRPCServer.py =================================================================== --- xen-4.4.4-testing.orig/tools/python/xen/xend/server/XMLRPCServer.py +++ xen-4.4.4-testing/tools/python/xen/xend/server/XMLRPCServer.py @@ -95,7 +95,7 @@ methods = ['device_create', 'device_conf 'destroyDevice','getDeviceSxprs', 'setMemoryTarget', 'setName', 'setVCpuCount', 'shutdown', 'send_sysrq', 'getVCPUInfo', 'waitForDevices', - 'getRestartCount', 'getBlockDeviceClass'] + 'getRestartCount', 'getBlockDeviceClass', 'chgvncpasswd'] exclude = ['domain_create', 'domain_restore'] Index: xen-4.4.4-testing/tools/python/xen/xm/main.py =================================================================== --- xen-4.4.4-testing.orig/tools/python/xen/xm/main.py +++ xen-4.4.4-testing/tools/python/xen/xm/main.py @@ -21,6 +21,7 @@ """Grand unified management application for Xen. """ +import getpass import atexit import cmd import os @@ -280,6 +281,9 @@ SUBCOMMAND_HELP = { 'getenforce' : ('', 'Returns the current enforcing mode for the Flask XSM module (Enforcing,Permissive)'), 'setenforce' : ('[ (Enforcing|1) | (Permissive|0) ]', 'Modifies the current enforcing mode for the Flask XSM module'), + #change vnc password + 'change-vnc-passwd' : ('<Domain>',\ + 'Change vnc password'), } SUBCOMMAND_OPTIONS = { @@ -404,6 +408,7 @@ common_commands = [ "usb-del", "domstate", "vcpu-set", + "change-vnc-passwd", ] domain_commands = [ @@ -441,6 +446,7 @@ domain_commands = [ "vcpu-list", "vcpu-pin", "vcpu-set", + "change-vnc-passwd", ] host_commands = [ @@ -3751,6 +3757,10 @@ def xm_cpupool_migrate(args): else: server.xend.cpu_pool.migrate(domname, poolname) +def xm_chgvncpasswd(args): + arg_check(args, "change-vnc-passwd", 1) + pwd = getpass.getpass("Enter new password: ") + server.xend.domain.chgvncpasswd(args[0], pwd) commands = { "shell": xm_shell, @@ -3857,6 +3867,8 @@ commands = { "usb-del": xm_usb_del, #domstate "domstate": xm_domstate, + #change vnc password: + "change-vnc-passwd": xm_chgvncpasswd, } ## The commands supported by a separate argument parser in xend.xm. Index: xen-4.4.4-testing/tools/qemu-xen-traditional-dir-remote/vl.c =================================================================== --- xen-4.4.4-testing.orig/tools/qemu-xen-traditional-dir-remote/vl.c +++ xen-4.4.4-testing/tools/qemu-xen-traditional-dir-remote/vl.c @@ -201,7 +201,7 @@ DriveInfo drives_table[MAX_DRIVES+1]; int nb_drives; enum vga_retrace_method vga_retrace_method = VGA_RETRACE_DUMB; int vga_ram_size; -static DisplayState *display_state; +DisplayState *display_state; int nographic; static int curses; static int sdl; Index: xen-4.4.4-testing/tools/qemu-xen-traditional-dir-remote/vnc.c =================================================================== --- xen-4.4.4-testing.orig/tools/qemu-xen-traditional-dir-remote/vnc.c +++ xen-4.4.4-testing/tools/qemu-xen-traditional-dir-remote/vnc.c @@ -2616,6 +2616,7 @@ int vnc_display_password(DisplayState *d if (password && password[0]) { if (!(vs->password = qemu_strdup(password))) return -1; + vs->auth = VNC_AUTH_VNC; } return 0; Index: xen-4.4.4-testing/tools/qemu-xen-traditional-dir-remote/xenstore.c =================================================================== --- xen-4.4.4-testing.orig/tools/qemu-xen-traditional-dir-remote/xenstore.c +++ xen-4.4.4-testing/tools/qemu-xen-traditional-dir-remote/xenstore.c @@ -25,6 +25,7 @@ #include "qemu-xen.h" #include "xen_backend.h" +extern DisplayState *display_state; struct xs_handle *xsh = NULL; static char *media_filename[MAX_DRIVES+1]; static QEMUTimer *insert_timer = NULL; @@ -897,6 +898,19 @@ static void xenstore_process_dm_command_ } else if (!strncmp(command, "continue", len)) { fprintf(logfile, "dm-command: continue after state save\n"); xen_pause_requested = 0; + } else if (!strncmp(command, "chgvncpasswd", len)) { + fprintf(logfile, "dm-command: change vnc passwd\n"); + if (pasprintf(&path, + "/local/domain/0/backend/vfb/%u/0/vncpasswd", domid) == -1) { + fprintf(logfile, "out of memory reading dm command parameter\n"); + goto out; + } + par = xs_read(xsh, XBT_NULL, path, &len); + if (!par) + goto out; + if (vnc_display_password(display_state, par) == 0) + xenstore_record_dm_state("vncpasswdchged"); + free(par); } else if (!strncmp(command, "usb-add", len)) { fprintf(logfile, "dm-command: usb-add a usb device\n"); if (pasprintf(&path,
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor