[1620] in Moira
part 2: "moira" curses client changes
daemon@ATHENA.MIT.EDU (Garry Zacheiss)
Sun Aug 6 05:10:28 2000
Message-Id: <200008060910.FAA06129@alice-whacker.mit.edu>
To: moiradev@MIT.EDU
Date: Sun, 06 Aug 2000 05:10:26 -0400
From: Garry Zacheiss <zacheiss@MIT.EDU>
Changes to "moira" to use the STRING and KERBEROS entry
validation.
Garry
Index: lists.c
===================================================================
RCS file: /afs/athena.mit.edu/astaff/project/moiradev/repository/moira/clients/moira/lists.c,v
retrieving revision 1.40
diff -c -r1.40 lists.c
*** lists.c 2000/04/19 23:15:35 1.40
--- lists.c 2000/08/06 06:20:34
***************
*** 14,19 ****
--- 14,20 ----
#include <mit-copyright.h>
#include <moira.h>
+ #include <mrclient.h>
#include <moira_site.h>
#include "defs.h"
#include "f_defs.h"
***************
*** 652,686 ****
if (!strcmp(args[LM_TYPE], "STRING"))
{
! if ((p = strchr(args[LM_MEMBER], '@')))
{
! char *host = canonicalize_hostname(strdup(++p));
! mailhubs = GetTypeValues("mailhub");
! for (elem = mailhubs; elem; elem = elem->q_forw)
! {
! if (!strcasecmp(host, elem->q_data))
! {
! free(host);
! host = strdup(args[LM_MEMBER]);
! *(--p) = 0;
! sprintf(temp_buf, "String \"%s\" should be USER or LIST "
! "\"%s\" because it is a local name.", host,
! args[LM_MEMBER]);
! Put_message(temp_buf);
! free(args[LM_TYPE]);
! free(host);
! return DM_NORMAL;
! }
! }
! free(host);
! }
! else if (!strchr(args[LM_MEMBER], '!'))
! {
! Put_message("Member which is not a foreign mail address "
! "should not be type STRING.");
return DM_NORMAL;
}
}
if ((status = do_mr_query("add_member_to_list", CountArgs(args), args,
NULL, NULL)) != MR_SUCCESS)
--- 653,674 ----
if (!strcmp(args[LM_TYPE], "STRING"))
{
! if (mrcl_validate_string_member(args[LM_MEMBER]) != MRCL_SUCCESS)
{
! Put_message(mrcl_get_message());
return DM_NORMAL;
}
}
+ else if (!strcmp(args[LM_TYPE], "KERBEROS"))
+ {
+ char *canon;
+
+ mrcl_validate_kerberos_member(args[LM_MEMBER], &canon);
+ if (mrcl_get_message())
+ Put_message(mrcl_get_message());
+ free(args[LM_MEMBER]);
+ args[LM_MEMBER] = canon;
+ }
if ((status = do_mr_query("add_member_to_list", CountArgs(args), args,
NULL, NULL)) != MR_SUCCESS)
***************
*** 717,722 ****
--- 705,730 ----
{
if ((status = do_mr_query("delete_member_from_list", CountArgs(args),
args, NULL, NULL)))
+ {
+ if ((status == MR_STRING || status == MR_NO_MATCH) &&
+ !strcmp(args[LM_TYPE], "KERBEROS"))
+ {
+ char *canon;
+ mrcl_validate_kerberos_member(args[LM_MEMBER], &canon);
+ if (mrcl_get_message())
+ {
+ free(args[LM_MEMBER]);
+ args[LM_MEMBER] = canon;
+ if (do_mr_query("delete_member_from_list", CountArgs(args),
+ args, NULL, NULL) == MR_SUCCESS)
+ {
+ Put_message(mrcl_get_message());
+ status = MR_SUCCESS;
+ }
+ }
+ }
+ }
+ if (status)
com_err(program_name, status, " in DeleteMember");
else
Put_message("Deletion Completed.");