]> andersk Git - moira.git/blobdiff - reg_svr/reg_svr.c
added access_host() and access_ahal()
[moira.git] / reg_svr / reg_svr.c
index cc016a8b2dc750927c2727b1d2792be910f5e10b..60dd1006241068c2051b3a8eaa6c035c87f9e1c1 100644 (file)
@@ -64,6 +64,7 @@ main(argc,argv)
     init_ureg_err_tbl();
     init_krb_err_tbl();
     init_kadm_err_tbl();
+    initialize_gdss_error_table();
     
     /* Use com_err or output to stderr for all log messages. */    
 #ifdef DEBUG
@@ -275,7 +276,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 +323,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 +780,7 @@ char **argv;
 char **qargv;
 {
     int status = SUCCESS;
+    int  i;
 
     if (argc != U_END) {
        critical_alert(FAIL_INST,
@@ -786,14 +788,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 +845,16 @@ 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,
+       q_argv[U_SIGNATURE+1] = "";
+       status = mr_query("update_user_account", U_MODTIME+1, q_argv,
                           null_callproc, NULL);
        switch (status)
        {
@@ -864,13 +862,14 @@ char *retval;
            status = SUCCESS;
            break;
          case MR_IN_USE:
+         case MR_NOT_UNIQUE:
            status = UREG_LOGIN_USED;
            break;
          case MR_DEADLOCK:
            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 +934,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 +1021,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 +1047,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.035083 seconds and 4 git commands to generate.