dom0/dispvm: enable use of default_user setting for DispVM (#577)
This commit is contained in:
parent
d3f1860bd0
commit
f47f8e7c8f
@ -68,6 +68,7 @@ class QfileDaemonDvm:
|
|||||||
retcode = subprocess.call(['/usr/lib/qubes/qubes_restore',
|
retcode = subprocess.call(['/usr/lib/qubes/qubes_restore',
|
||||||
current_savefile,
|
current_savefile,
|
||||||
current_dvm_conf,
|
current_dvm_conf,
|
||||||
|
'-u', str(vm.default_user),
|
||||||
'-c', label.color,
|
'-c', label.color,
|
||||||
'-i', label.icon,
|
'-i', label.icon,
|
||||||
'-l', str(label.index)])
|
'-l', str(label.index)])
|
||||||
|
@ -139,7 +139,7 @@ void preload_cache(int fd)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void start_rexec(int domid)
|
void start_rexec(int domid, char *default_user)
|
||||||
{
|
{
|
||||||
int pid, status;
|
int pid, status;
|
||||||
char dstr[40];
|
char dstr[40];
|
||||||
@ -150,7 +150,7 @@ void start_rexec(int domid)
|
|||||||
exit(1);
|
exit(1);
|
||||||
case 0:
|
case 0:
|
||||||
execl("/usr/lib/qubes/qrexec_daemon", "qrexec_daemon",
|
execl("/usr/lib/qubes/qrexec_daemon", "qrexec_daemon",
|
||||||
dstr, NULL);
|
dstr, default_user, NULL);
|
||||||
perror("execl");
|
perror("execl");
|
||||||
exit(1);
|
exit(1);
|
||||||
default:;
|
default:;
|
||||||
@ -171,9 +171,9 @@ void start_guid(int domid, int argc, char **argv)
|
|||||||
guid_args[0] = "qubes_guid";
|
guid_args[0] = "qubes_guid";
|
||||||
guid_args[1] = "-d";
|
guid_args[1] = "-d";
|
||||||
guid_args[2] = dstr;
|
guid_args[2] = dstr;
|
||||||
for (i = 3; i < argc; i++)
|
for (i = 0; i < argc; i++)
|
||||||
guid_args[i] = argv[i];
|
guid_args[i+3] = argv[i];
|
||||||
guid_args[argc] = NULL;
|
guid_args[argc+3] = NULL;
|
||||||
execv("/usr/bin/qubes_guid", guid_args);
|
execv("/usr/bin/qubes_guid", guid_args);
|
||||||
perror("execv");
|
perror("execv");
|
||||||
}
|
}
|
||||||
@ -434,9 +434,11 @@ int main(int argc, char **argv)
|
|||||||
FILE *conf;
|
FILE *conf;
|
||||||
char *name;
|
char *name;
|
||||||
char confname[256];
|
char confname[256];
|
||||||
|
char *default_user = NULL;
|
||||||
|
int guid_args_start = 3;
|
||||||
if (argc < 3) {
|
if (argc < 3) {
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"usage: %s savefile conf_templ [guid args] \n", argv[0]);
|
"usage: %s savefile conf_templ [-u default_user] [guid args] \n", argv[0]);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
redirect_stderr();
|
redirect_stderr();
|
||||||
@ -448,6 +450,10 @@ int main(int argc, char **argv)
|
|||||||
perror("fopen vm conf");
|
perror("fopen vm conf");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
if (argc > 4 && strcmp(argv[3], "-u")==0) {
|
||||||
|
default_user = argv[4];
|
||||||
|
guid_args_start += 2;
|
||||||
|
}
|
||||||
dispid = get_next_disposable_id();
|
dispid = get_next_disposable_id();
|
||||||
name = get_vmname_from_savefile(conf_templ);
|
name = get_vmname_from_savefile(conf_templ);
|
||||||
netvm_id = get_netvm_id_from_name(name);
|
netvm_id = get_netvm_id_from_name(name);
|
||||||
@ -472,7 +478,7 @@ int main(int argc, char **argv)
|
|||||||
setup_xenstore(netvm_id, domid, dispid, name);
|
setup_xenstore(netvm_id, domid, dispid, name);
|
||||||
fprintf(stderr, "time=%s, starting qubes_guid\n", gettime());
|
fprintf(stderr, "time=%s, starting qubes_guid\n", gettime());
|
||||||
rm_fast_flag();
|
rm_fast_flag();
|
||||||
start_rexec(domid);
|
start_rexec(domid, default_user);
|
||||||
start_guid(domid, argc, argv);
|
start_guid(domid, argc-guid_args_start, argv+guid_args_start);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user