kasmvncpasswd: Add delete support

This commit is contained in:
Lauri Kasanen 2020-10-12 13:34:18 +03:00
parent 896950ea13
commit 30b9a82c08
2 changed files with 25 additions and 3 deletions

View File

@ -99,6 +99,9 @@ void writekasmpasswd(const char path[], const struct kasmpasswd_t *set) {
unsigned i; unsigned i;
for (i = 0; i < set->num; i++) { for (i = 0; i < set->num; i++) {
if (!set->entries[i].user[0])
continue;
fprintf(f, "%s:%s:%s\n", fprintf(f, "%s:%s:%s\n",
set->entries[i].user, set->entries[i].user,
set->entries[i].password, set->entries[i].password,

View File

@ -33,10 +33,11 @@
static void usage(const char *prog) static void usage(const char *prog)
{ {
fprintf(stderr, "Usage: %s -u username [-wno] [file]\n" fprintf(stderr, "Usage: %s -u username [-wnod] [file]\n"
"-w Write permission\n" "-w Write permission\n"
"-o Owner\n" "-o Owner\n"
"-n Don't change password, change permissions only\n" "-n Don't change password, change permissions only\n"
"-d Delete this user\n"
"\n" "\n"
"The file is updated atomically.\n", prog); "The file is updated atomically.\n", prog);
exit(1); exit(1);
@ -106,10 +107,10 @@ int main(int argc, char** argv)
{ {
const char *fname = NULL; const char *fname = NULL;
const char *user = NULL; const char *user = NULL;
const char args[] = "u:wno"; const char args[] = "u:wnod";
int opt; int opt;
unsigned char nopass = 0, writer = 0, owner = 0; unsigned char nopass = 0, writer = 0, owner = 0, deleting = 0;
while ((opt = getopt(argc, argv, args)) != -1) { while ((opt = getopt(argc, argv, args)) != -1) {
switch (opt) { switch (opt) {
@ -129,12 +130,18 @@ int main(int argc, char** argv)
case 'o': case 'o':
owner = 1; owner = 1;
break; break;
case 'd':
deleting = 1;
break;
default: default:
usage(argv[0]); usage(argv[0]);
break; break;
} }
} }
if (deleting && (nopass || writer || owner))
usage(argv[0]);
if (!user) if (!user)
usage(argv[0]); usage(argv[0]);
@ -166,6 +173,18 @@ int main(int argc, char** argv)
} }
fprintf(stderr, "No user named %s found\n", user); fprintf(stderr, "No user named %s found\n", user);
return 1; return 1;
} else if (deleting) {
for (i = 0; i < set->num; i++) {
if (!strcmp(set->entries[i].user, user)) {
set->entries[i].user[0] = '\0';
writekasmpasswd(fname, set);
return 0;
}
}
fprintf(stderr, "No user named %s found\n", user);
return 1;
} else { } else {
const char *encrypted = readpassword(); const char *encrypted = readpassword();
for (i = 0; i < set->num; i++) { for (i = 0; i < set->num; i++) {