[1621] in Moira
part 3: blanche changes
daemon@ATHENA.MIT.EDU (Garry Zacheiss)
Sun Aug 6 05:11:10 2000
Message-Id: <200008060911.FAA06134@alice-whacker.mit.edu>
To: moiradev@MIT.EDU
Date: Sun, 06 Aug 2000 05:11:08 -0400
From: Garry Zacheiss <zacheiss@MIT.EDU>
In the same vein as my previous patch, this time for blanche.
Garry
Index: blanche.c
===================================================================
RCS file: /afs/athena.mit.edu/astaff/project/moiradev/repository/moira/clients/blanche/blanche.c,v
retrieving revision 1.47
diff -c -r1.47 blanche.c
*** blanche.c 2000/07/16 23:02:31 1.47
--- blanche.c 2000/08/06 06:46:44
***************
*** 612,622 ****
break;
}
case M_STRING:
! if (memberstruct->type == M_ANY &&
! !strchr(memberstruct->name, '@') &&
! !strchr(memberstruct->name, '!') &&
! !strchr(memberstruct->name, '%'))
{
/* if user is trying to add something which isn't a
remote string, or a list, or a user, and didn't
explicitly specify `STRING:', it's probably a typo */
--- 612,626 ----
break;
}
case M_STRING:
! status = mrcl_validate_string_member(memberstruct->name);
! if (status == MRCL_REJECT)
{
+ mrcl_com_err(whoami);
+ success = 0;
+ break;
+ }
+ else if (memberstruct->type == M_ANY && status != MR_SUCCESS)
+ {
/* if user is trying to add something which isn't a
remote string, or a list, or a user, and didn't
explicitly specify `STRING:', it's probably a typo */
***************
*** 638,643 ****
--- 642,650 ----
break;
case M_KERBEROS:
membervec[1] = "KERBEROS";
+ status = mrcl_validate_kerberos_member(membervec[2], &membervec[2]);
+ if (mrcl_get_message())
+ mrcl_com_err(whoami);
status = mr_query("add_tagged_member_to_list", 4, membervec,
NULL, NULL);
if (status != MR_SUCCESS)
***************
*** 646,651 ****
--- 653,659 ----
memberstruct->name, listname);
success = 0;
}
+ free(membervec[2]);
}
}
***************
*** 734,739 ****
--- 742,763 ----
membervec[1] = "KERBEROS";
status = mr_query("delete_member_from_list", 3, membervec,
NULL, NULL);
+ if (status == MR_STRING || status == MR_NO_MATCH)
+ {
+ /* Try canonicalizing the Kerberos principal and trying
+ * again. If we succeed, print the message from mrcl.
+ * Otherwise, just pretend we never did this and print
+ * the original error message.
+ */
+ mrcl_validate_kerberos_member(membervec[2], &membervec[2]);
+ if (mrcl_get_message())
+ {
+ if (mr_query("delete_member_from_list", 3, membervec,
+ NULL, NULL) == MR_SUCCESS)
+ mrcl_com_err(whoami);
+ status = MR_SUCCESS;
+ }
+ }
if (status != MR_SUCCESS)
{
com_err(whoami, status, "while deleting member %s from %s",
***************
*** 806,811 ****
--- 830,851 ----
membervec[1] = "KERBEROS";
status = mr_query("tag_member_of_list", 4, membervec,
NULL, NULL);
+ if (status == MR_STRING || status == MR_NO_MATCH)
+ {
+ /* Try canonicalizing the Kerberos principal and trying
+ * again. If we succeed, print the message from mrcl.
+ * Otherwise, just pretend we never did this and print
+ * the original error message.
+ */
+ mrcl_validate_kerberos_member(membervec[2], &membervec[2]);
+ if (mrcl_get_message())
+ {
+ if (mr_query("tag_member_of_list", 4, membervec,
+ NULL, NULL) == MR_SUCCESS)
+ mrcl_com_err(whoami);
+ status = MR_SUCCESS;
+ }
+ }
if (status != MR_SUCCESS)
{
com_err(whoami, status, "while changing tag on member %s of %s",
***************
*** 814,820 ****
}
}
}
-
/* Display the members of the list now, if requested */
if (memberflg)
--- 854,859 ----