Skip to content
Snippets Groups Projects
Commit 3ab037d5 authored by rswindell's avatar rswindell
Browse files

Ctrl directory can now be passed on the command-line.

Now supports setting flags, exemptions, and restrictions on the command-line.
Now checks that the user name doesn't already exist before creating.
parent 5f29344a
Branches
Tags
No related merge requests found
...@@ -57,7 +57,7 @@ int lprintf(char *fmat, ...) ...@@ -57,7 +57,7 @@ int lprintf(char *fmat, ...)
} }
char *usage="\nusage: makeuser name [-param value] [...]\n" char *usage="\nusage: makeuser [ctrl_dir] name [-param value] [...]\n"
"\nparams:\n" "\nparams:\n"
"\t-P\tPassword\n" "\t-P\tPassword\n"
"\t-R\tReal name\n" "\t-R\tReal name\n"
...@@ -70,6 +70,9 @@ char *usage="\nusage: makeuser name [-param value] [...]\n" ...@@ -70,6 +70,9 @@ char *usage="\nusage: makeuser name [-param value] [...]\n"
"\t-L\tLocation (city, state)\n" "\t-L\tLocation (city, state)\n"
"\t-Z\tZip/Postal code\n" "\t-Z\tZip/Postal code\n"
"\t-S\tSecurity level\n" "\t-S\tSecurity level\n"
"\t-F#\tFlag set #\n"
"\t-FE\tExemption flags\n"
"\t-FR\tRestriction flags\n"
"\t-E\tExpiration days\n" "\t-E\tExpiration days\n"
"\t-C\tComment\n" "\t-C\tComment\n"
"\nNOTE: multi-word user name and param values must be enclosed in \"quotes\"\n" "\nNOTE: multi-word user name and param values must be enclosed in \"quotes\"\n"
...@@ -84,6 +87,7 @@ int main(int argc, char **argv) ...@@ -84,6 +87,7 @@ int main(int argc, char **argv)
char error[512]; char error[512];
char revision[16]; char revision[16];
int i; int i;
int first_arg=1;
time_t now; time_t now;
user_t user; user_t user;
...@@ -99,7 +103,10 @@ int main(int argc, char **argv) ...@@ -99,7 +103,10 @@ int main(int argc, char **argv)
return(1); return(1);
} }
p=getenv("SBBSCTRL"); if(strcspn(argv[first_arg],"/\\")!=strlen(argv[first_arg]))
p=argv[first_arg++];
else
p=getenv("SBBSCTRL");
if(p==NULL) { if(p==NULL) {
printf("\nSBBSCTRL environment variable not set.\n"); printf("\nSBBSCTRL environment variable not set.\n");
printf("\nExample: SET SBBSCTRL=/sbbs/ctrl\n"); printf("\nExample: SET SBBSCTRL=/sbbs/ctrl\n");
...@@ -165,7 +172,7 @@ int main(int argc, char **argv) ...@@ -165,7 +172,7 @@ int main(int argc, char **argv)
if(scfg.new_expire) if(scfg.new_expire)
user.expire=now+((long)scfg.new_expire*24L*60L*60L); user.expire=now+((long)scfg.new_expire*24L*60L*60L);
for(i=1;i<argc;i++) { for(i=first_arg;i<argc;i++) {
if(argv[i][0]=='-') { if(argv[i][0]=='-') {
switch(toupper(argv[i++][1])) { switch(toupper(argv[i++][1])) {
case 'A': case 'A':
...@@ -183,6 +190,31 @@ int main(int argc, char **argv) ...@@ -183,6 +190,31 @@ int main(int argc, char **argv)
case 'E': case 'E':
user.expire=now+((long)atoi(argv[i])*24L*60L*60L); user.expire=now+((long)atoi(argv[i])*24L*60L*60L);
break; break;
case 'F':
switch(toupper(argv[i-1][2])) {
case '1':
user.flags1=aftol(argv[i]);
break;
case '2':
user.flags2=aftol(argv[i]);
break;
case '3':
user.flags3=aftol(argv[i]);
break;
case '4':
user.flags4=aftol(argv[i]);
break;
case 'E':
user.exempt=aftol(argv[i]);
break;
case 'R':
user.rest=aftol(argv[i]);
break;
default:
printf("%s",usage);
return(1);
}
break;
case 'G': case 'G':
user.sex=toupper(argv[i][0]); user.sex=toupper(argv[i][0]);
break; break;
...@@ -222,6 +254,11 @@ int main(int argc, char **argv) ...@@ -222,6 +254,11 @@ int main(int argc, char **argv)
return(1); return(1);
} }
if((i=matchuser(&scfg,user.alias,FALSE))!=0) {
printf("!User (%s #%d) already exists\n",user.alias,i);
return(2);
}
if(user.handle[0]==0) if(user.handle[0]==0)
SAFECOPY(user.handle,user.alias); SAFECOPY(user.handle,user.alias);
if(user.name[0]==0) if(user.name[0]==0)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment