[1862] in Moira
reg_svr: make reserved usernames work
daemon@ATHENA.MIT.EDU (Garry Zacheiss)
Sun Sep 2 16:30:30 2001
Message-Id: <200109022030.QAA04706@riff-raff.mit.edu>
To: moiradev@MIT.EDU
Date: Sun, 02 Sep 2001 16:30:29 -0400
From: Garry Zacheiss <zacheiss@MIT.EDU>
Currently, when you create a registerable account with a
prechosen username, registering such an account makes you go from RIFO
to PSWD, bypassing LOGN, which is the only place register_user() is ever
called.
This patch makes us call it in RIFO() for the reserved username
case.
I'll need to deploy this to complete the Lincoln Labs project
I'm working with tregan on.
Garry
Index: reg_svr.pc
===================================================================
RCS file: /afs/athena.mit.edu/astaff/project/moiradev/repository/moira/reg_svr/reg_svr.pc,v
retrieving revision 1.7
diff -u -r1.7 reg_svr.pc
--- reg_svr.pc 2000/08/13 04:06:41 1.7
+++ reg_svr.pc 2001/09/02 20:15:06
@@ -420,7 +420,28 @@
else if (!rc->username)
reply(rc, FOUND, "GETL", "c", rc->suggestions, fullname, class);
else
- reply(rc, FORCED_USERNAME, "GETP", "c", NULL, rc->username);
+ {
+ status = check_kerberos(login);
+ if (status == MR_SUCCESS)
+ status = register_user(rc->uid, login);
+ if (status == MR_IN_USE)
+ {
+ reply(rc, RESERVED_USERNAME_UNAVAILABLE, "INIT", "c", NULL,
+ rc->username);
+ return;
+ }
+ else if (status == MR_DOWN)
+ {
+ reply(rc, DATABASE_CLOSED, "INIT", "c", NULL);
+ return;
+ }
+ else if (status != MR_SUCCESS)
+ {
+ reply(rc, INTERNAL_ERROR, "INIT", "c", NULL, error_message(status));
+ return;
+ }
+ reply(rc, FORCED_USERNAME, "GETP", "c", NULL, rc->username);
+ }
}
void SWRD(reg_client *rc, int argc, char **argv)