Loading hmp-commands.hx +1 −2 Original line number Diff line number Diff line Loading @@ -1219,8 +1219,7 @@ ETEXI .args_type = "protocol:s,password:s,connected:s?", .params = "protocol password action-if-connected", .help = "set spice/vnc password", .user_print = monitor_user_noop, .mhandler.cmd_new = set_password, .mhandler.cmd = hmp_set_password, }, STEXI Loading hmp.c +11 −0 Original line number Diff line number Diff line Loading @@ -681,3 +681,14 @@ void hmp_migrate_set_speed(Monitor *mon, const QDict *qdict) int64_t value = qdict_get_int(qdict, "value"); qmp_migrate_set_speed(value, NULL); } void hmp_set_password(Monitor *mon, const QDict *qdict) { const char *protocol = qdict_get_str(qdict, "protocol"); const char *password = qdict_get_str(qdict, "password"); const char *connected = qdict_get_try_str(qdict, "connected"); Error *err = NULL; qmp_set_password(protocol, password, !!connected, connected, &err); hmp_handle_error(mon, &err); } hmp.h +1 −0 Original line number Diff line number Diff line Loading @@ -49,5 +49,6 @@ void hmp_snapshot_blkdev(Monitor *mon, const QDict *qdict); void hmp_migrate_cancel(Monitor *mon, const QDict *qdict); void hmp_migrate_set_downtime(Monitor *mon, const QDict *qdict); void hmp_migrate_set_speed(Monitor *mon, const QDict *qdict); void hmp_set_password(Monitor *mon, const QDict *qdict); #endif monitor.c +0 −57 Original line number Diff line number Diff line Loading @@ -884,63 +884,6 @@ static int do_change(Monitor *mon, const QDict *qdict, QObject **ret_data) return ret; } static int set_password(Monitor *mon, const QDict *qdict, QObject **ret_data) { const char *protocol = qdict_get_str(qdict, "protocol"); const char *password = qdict_get_str(qdict, "password"); const char *connected = qdict_get_try_str(qdict, "connected"); int disconnect_if_connected = 0; int fail_if_connected = 0; int rc; if (connected) { if (strcmp(connected, "fail") == 0) { fail_if_connected = 1; } else if (strcmp(connected, "disconnect") == 0) { disconnect_if_connected = 1; } else if (strcmp(connected, "keep") == 0) { /* nothing */ } else { qerror_report(QERR_INVALID_PARAMETER, "connected"); return -1; } } if (strcmp(protocol, "spice") == 0) { if (!using_spice) { /* correct one? spice isn't a device ,,, */ qerror_report(QERR_DEVICE_NOT_ACTIVE, "spice"); return -1; } rc = qemu_spice_set_passwd(password, fail_if_connected, disconnect_if_connected); if (rc != 0) { qerror_report(QERR_SET_PASSWD_FAILED); return -1; } return 0; } if (strcmp(protocol, "vnc") == 0) { if (fail_if_connected || disconnect_if_connected) { /* vnc supports "connected=keep" only */ qerror_report(QERR_INVALID_PARAMETER, "connected"); return -1; } /* Note that setting an empty password will not disable login through * this interface. */ rc = vnc_display_password(NULL, password); if (rc < 0) { qerror_report(QERR_SET_PASSWD_FAILED); return -1; } return 0; } qerror_report(QERR_INVALID_PARAMETER, "protocol"); return -1; } static int expire_password(Monitor *mon, const QDict *qdict, QObject **ret_data) { const char *protocol = qdict_get_str(qdict, "protocol"); Loading qapi-schema.json +29 −0 Original line number Diff line number Diff line Loading @@ -1275,3 +1275,32 @@ { 'command': 'qom-set', 'data': { 'path': 'str', 'property': 'str', 'value': 'visitor' }, 'gen': 'no' } ## # @set_password: # # Sets the password of a remote display session. # # @protocol: `vnc' to modify the VNC server password # `spice' to modify the Spice server password # # @password: the new password # # @connected: #optional how to handle existing clients when changing the # password. If nothing is specified, defaults to `keep' # `fail' to fail the command if clients are connected # `disconnect' to disconnect existing clients # `keep' to maintain existing clients # # Returns: Nothing on success # If Spice is not enabled, DeviceNotFound # If @protocol does not support connected, InvalidParameter # If @protocol is invalid, InvalidParameter # If any other error occurs, SetPasswdFailed # # Notes: If VNC is not enabled, SetPasswdFailed is returned. # # Since: 0.14.0 ## { 'command': 'set_password', 'data': {'protocol': 'str', 'password': 'str', '*connected': 'str'} } Loading
hmp-commands.hx +1 −2 Original line number Diff line number Diff line Loading @@ -1219,8 +1219,7 @@ ETEXI .args_type = "protocol:s,password:s,connected:s?", .params = "protocol password action-if-connected", .help = "set spice/vnc password", .user_print = monitor_user_noop, .mhandler.cmd_new = set_password, .mhandler.cmd = hmp_set_password, }, STEXI Loading
hmp.c +11 −0 Original line number Diff line number Diff line Loading @@ -681,3 +681,14 @@ void hmp_migrate_set_speed(Monitor *mon, const QDict *qdict) int64_t value = qdict_get_int(qdict, "value"); qmp_migrate_set_speed(value, NULL); } void hmp_set_password(Monitor *mon, const QDict *qdict) { const char *protocol = qdict_get_str(qdict, "protocol"); const char *password = qdict_get_str(qdict, "password"); const char *connected = qdict_get_try_str(qdict, "connected"); Error *err = NULL; qmp_set_password(protocol, password, !!connected, connected, &err); hmp_handle_error(mon, &err); }
hmp.h +1 −0 Original line number Diff line number Diff line Loading @@ -49,5 +49,6 @@ void hmp_snapshot_blkdev(Monitor *mon, const QDict *qdict); void hmp_migrate_cancel(Monitor *mon, const QDict *qdict); void hmp_migrate_set_downtime(Monitor *mon, const QDict *qdict); void hmp_migrate_set_speed(Monitor *mon, const QDict *qdict); void hmp_set_password(Monitor *mon, const QDict *qdict); #endif
monitor.c +0 −57 Original line number Diff line number Diff line Loading @@ -884,63 +884,6 @@ static int do_change(Monitor *mon, const QDict *qdict, QObject **ret_data) return ret; } static int set_password(Monitor *mon, const QDict *qdict, QObject **ret_data) { const char *protocol = qdict_get_str(qdict, "protocol"); const char *password = qdict_get_str(qdict, "password"); const char *connected = qdict_get_try_str(qdict, "connected"); int disconnect_if_connected = 0; int fail_if_connected = 0; int rc; if (connected) { if (strcmp(connected, "fail") == 0) { fail_if_connected = 1; } else if (strcmp(connected, "disconnect") == 0) { disconnect_if_connected = 1; } else if (strcmp(connected, "keep") == 0) { /* nothing */ } else { qerror_report(QERR_INVALID_PARAMETER, "connected"); return -1; } } if (strcmp(protocol, "spice") == 0) { if (!using_spice) { /* correct one? spice isn't a device ,,, */ qerror_report(QERR_DEVICE_NOT_ACTIVE, "spice"); return -1; } rc = qemu_spice_set_passwd(password, fail_if_connected, disconnect_if_connected); if (rc != 0) { qerror_report(QERR_SET_PASSWD_FAILED); return -1; } return 0; } if (strcmp(protocol, "vnc") == 0) { if (fail_if_connected || disconnect_if_connected) { /* vnc supports "connected=keep" only */ qerror_report(QERR_INVALID_PARAMETER, "connected"); return -1; } /* Note that setting an empty password will not disable login through * this interface. */ rc = vnc_display_password(NULL, password); if (rc < 0) { qerror_report(QERR_SET_PASSWD_FAILED); return -1; } return 0; } qerror_report(QERR_INVALID_PARAMETER, "protocol"); return -1; } static int expire_password(Monitor *mon, const QDict *qdict, QObject **ret_data) { const char *protocol = qdict_get_str(qdict, "protocol"); Loading
qapi-schema.json +29 −0 Original line number Diff line number Diff line Loading @@ -1275,3 +1275,32 @@ { 'command': 'qom-set', 'data': { 'path': 'str', 'property': 'str', 'value': 'visitor' }, 'gen': 'no' } ## # @set_password: # # Sets the password of a remote display session. # # @protocol: `vnc' to modify the VNC server password # `spice' to modify the Spice server password # # @password: the new password # # @connected: #optional how to handle existing clients when changing the # password. If nothing is specified, defaults to `keep' # `fail' to fail the command if clients are connected # `disconnect' to disconnect existing clients # `keep' to maintain existing clients # # Returns: Nothing on success # If Spice is not enabled, DeviceNotFound # If @protocol does not support connected, InvalidParameter # If @protocol is invalid, InvalidParameter # If any other error occurs, SetPasswdFailed # # Notes: If VNC is not enabled, SetPasswdFailed is returned. # # Since: 0.14.0 ## { 'command': 'set_password', 'data': {'protocol': 'str', 'password': 'str', '*connected': 'str'} }