[1621] in Moira

home help back first fref pref prev next nref lref last post

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 ----

home help back first fref pref prev next nref lref last post