]> andersk Git - moira.git/blobdiff - reg_svr/reg_svr.c
handle encrypted IDs
[moira.git] / reg_svr / reg_svr.c
index cc016a8b2dc750927c2727b1d2792be910f5e10b..f872f0781e52afb7fbd1cbfb0486b6fb17490915 100644 (file)
@@ -275,7 +275,7 @@ int db_callproc(argc,argv,queue)
     {
        critical_alert
            (FAIL_INST,
-            "Wrong number of arguments returned from get_user_by_name.");
+            "Wrong number of arguments returned from get_user_account_by_name.");
        status = MR_ABORT;
     }
     else
@@ -322,7 +322,7 @@ int find_user(message)
     if (status == SUCCESS)
     {
        /* Get ready to make an Moira query */
-       q_name = "get_user_by_name";
+       q_name = "get_user_account_by_name";
        q_argc = GUBN_ARGS;     /* #defined in this routine */
        q_argv[0] = message->first;
        q_argv[1] = message->last;
@@ -779,6 +779,7 @@ char **argv;
 char **qargv;
 {
     int status = SUCCESS;
+    int  i;
 
     if (argc != U_END) {
        critical_alert(FAIL_INST,
@@ -786,14 +787,8 @@ char **qargv;
        status = MR_ABORT;
     } else {
        qargv[U_NAME] = strsave(argv[U_NAME]);
-       qargv[U_UID+1] = strsave(argv[U_UID]);
-       qargv[U_SHELL+1] = strsave(argv[U_SHELL]);
-       qargv[U_LAST+1] = strsave(argv[U_LAST]);
-       qargv[U_FIRST+1] = strsave(argv[U_FIRST]);
-       qargv[U_MIDDLE+1] = strsave(argv[U_MIDDLE]);
-       qargv[U_STATE+1] = strsave(argv[U_STATE]);
-       qargv[U_MITID+1] = strsave(argv[U_MITID]);
-       qargv[U_CLASS+1] = strsave(argv[U_CLASS]);
+       for (i = 1; i < U_MODTIME; i++)
+         qargv[i+1] = strsave(argv[i]);
        qargv[U_MODTIME+1] = NULL;
     }
     return(status);
@@ -849,14 +844,15 @@ char *retval;
        /* Now that we have a valid user with a valid login... */
 
        q_argv[0] = message->db.uid;
-       status = mr_query("get_user_by_uid", 1, q_argv, getuserinfo, q_argv);
+       status = mr_query("get_user_account_by_uid", 1, q_argv,
+                         getuserinfo, q_argv);
        if (status != SUCCESS) {
            com_err(whoami, status, " while getting user info");
            return(status);
        }
        q_argv[U_NAME+1] = login;
        q_argv[U_STATE+1] = "7";
-       status = mr_query("update_user", U_MODTIME+1, q_argv,
+       status = mr_query("update_user_account", U_MODTIME+1, q_argv,
                           null_callproc, NULL);
        switch (status)
        {
@@ -870,7 +866,7 @@ char *retval;
            status = UREG_MISC_ERROR;
            break;
          default:
-           critical_alert(FAIL_INST,"%s returned from update_user.",
+           critical_alert(FAIL_INST,"%s returned from update_user_account.",
                           error_message(status));
            status = UREG_MISC_ERROR;
            break;
@@ -935,7 +931,7 @@ char *retval;
        com_err(whoami, status, " while getting user info");
        return(status);
     }
-    if (atoi(argv[U_SECURE]))
+    if (atoi(argv[U_SECURE + 1]))
       return UREG_ALREADY_REGISTERED;
     return SUCCESS;
 }
@@ -1022,9 +1018,15 @@ char *retval;
 #endif
 
     if (strcmp(id, argv[U_MITID + 1])) {
-       status = UREG_USER_NOT_FOUND;
-       com_err(whoami, status, "IDs mismatch: %s, %s", id, argv[U_MITID + 1]);
-       return status;
+       char buf[32];
+
+       EncryptID(buf, id, argv[U_FIRST+1], argv[U_LAST+1]);
+       if (strcmp(buf, argv[U_MITID + 1])) {
+           status = UREG_USER_NOT_FOUND;
+           com_err(whoami, status, "IDs mismatch: %s (%s), %s", id, buf,
+                   argv[U_MITID + 1]);
+           return status;
+       }
     }
 
     /* now do actual password setting stuff */
@@ -1042,7 +1044,7 @@ char *retval;
     kv.key_low = htonl(lkey[0]);
     kv.key_high = htonl(lkey[1]);
     strcpy(kv.name, message->first);
-    strcpy(kv.instance, "secure");
+    strcpy(kv.instance, "extra");
 
     if ((status = kadm_add(&kv)) != KADM_SUCCESS) {
        com_err(whoami, status, " while creating kerberos principal");
This page took 0.909834 seconds and 4 git commands to generate.