]> andersk Git - moira.git/commitdiff
Call update_user_status moira query to change status to 1, rather than
authorzacheiss <zacheiss>
Fri, 19 Jun 2009 02:18:47 +0000 (02:18 +0000)
committerzacheiss <zacheiss>
Fri, 19 Jun 2009 02:18:47 +0000 (02:18 +0000)
doing it via SQL, so we trigger an incremental.

reg_svr/reg_svr.pc

index 7bdb69711f15aa9004e83cdde1c04d0015b8a369..947a42975f6b8efc344f282de4682456dd36c5fb 100644 (file)
@@ -47,6 +47,7 @@ char *find_usernames(char *first, char *middle, char *last);
 int check_username_available(char *username);
 void fixname(char *name);
 int register_user(int uid, char *username);
+int update_user_status(char *username, int account_status);
 void mr_com_err(const char *whoami, long code, const char *fmt, va_list pvar);
 void sigshut(int);
 
@@ -776,10 +777,16 @@ void PSWD(reg_client *rc, int argc, char **argv)
     }
   
   if (rc->user_status == US_NO_LOGIN_YET_KERBEROS_ONLY)
-    EXEC SQL UPDATE users SET status = 9 WHERE login = :login;
+    status = update_user_status(rc->username, US_REGISTERED_KERBEROS_ONLY);
   else
-    EXEC SQL UPDATE users SET status = 1 WHERE login = :login;
-  EXEC SQL COMMIT;
+    status = update_user_status(rc->username, US_REGISTERED);
+
+  if (status)
+    {
+      reply(rc, INTERNAL_ERROR, "INIT", "c", NULL,
+           error_message(status));
+      return;
+    }
 
   EXEC SQL SELECT potype INTO :potype FROM users WHERE login = :login;
   if (!strcmp(potype, "EXCHANGE"))
@@ -792,6 +799,40 @@ void QUIT(reg_client *rc, int argc, char **argv)
 {
 }
 
+/* Update a user's status in Moira */
+int update_user_status(char *username, int account_status)
+{
+  char statusbuf[2], *qargv[2], *motd = NULL;
+  long status;
+
+  status = mr_connect(hostname);
+  if (status)
+    return status;
+
+  status = mr_motd(&motd);
+  if (status || motd)
+    {
+      mr_disconnect();
+      return MR_DOWN;
+    }
+
+  status = mr_krb5_auth("reg_svr");
+  if (status)
+    {
+      com_err(whoami, status, "authenticating to moira");
+      mr_disconnect();
+      return MR_INTERNAL;
+    }
+
+  sprintf(statusbuf, "%d", account_status);
+  qargv[0] = username;
+  qargv[1] = statusbuf;
+
+  status = mr_query("update_user_status", 2, qargv, NULL, NULL);
+  mr_disconnect();
+  return status;
+}
+
 /* Register a user in Moira */
 int register_user(int uid, char *username)
 {
This page took 0.04884 seconds and 5 git commands to generate.