[26208] in Source-Commits
/svn/athena r25455 - in trunk/third/moira: clients/chpobox clients/eunice clients/moira db debian gen incremental/ldap reg_svr regtape server
daemon@ATHENA.MIT.EDU (Jonathan D Reed)
Wed Feb 29 15:24:50 2012
Date: Wed, 29 Feb 2012 15:24:48 -0500
From: Jonathan D Reed <jdreed@MIT.EDU>
Message-Id: <201202292024.q1TKOmFU009642@drugstore.mit.edu>
To: source-commits@MIT.EDU
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Author: jdreed
Date: 2012-02-29 15:24:47 -0500 (Wed, 29 Feb 2012)
New Revision: 25455
Added:
trunk/third/moira/gen/printer-list.gen
Removed:
trunk/third/moira/gen/cups-cluster.pc
trunk/third/moira/gen/cups-cluster.sh
trunk/third/moira/gen/install_dirs
trunk/third/moira/gen/install_quotas
trunk/third/moira/gen/nagios-printers.gen
trunk/third/moira/gen/nagios-printers.sh
trunk/third/moira/gen/nagios-wsh.gen
trunk/third/moira/gen/nagios-wsh.sh
trunk/third/moira/gen/nfs.pc
trunk/third/moira/gen/nfs.sh
trunk/third/moira/gen/zero_quotas
Modified:
trunk/third/moira/clients/chpobox/chpobox.c
trunk/third/moira/clients/eunice/eunice.c
trunk/third/moira/clients/moira/printer.c
trunk/third/moira/db/schema.sql
trunk/third/moira/debian/changelog
trunk/third/moira/gen/Makefile.in
trunk/third/moira/gen/dhcp.pc
trunk/third/moira/gen/dhcp.sh
trunk/third/moira/gen/directory.pc
trunk/third/moira/gen/nagios-cluster.gen
trunk/third/moira/gen/spwatch.gen
trunk/third/moira/gen/warehouse-lists.pc
trunk/third/moira/incremental/ldap/winad.c
trunk/third/moira/reg_svr/errors
trunk/third/moira/reg_svr/reg_svr.pc
trunk/third/moira/regtape/staff.pc
trunk/third/moira/regtape/student.pc
trunk/third/moira/server/increment.pc
trunk/third/moira/server/qsetup.pc
trunk/third/moira/server/queries2.c
Log:
In moira:
* Re-snapshot moira at r4073 to pick up new changes to clients; the
eunice issue described in the previous entry is no longer relevant
Modified: trunk/third/moira/clients/chpobox/chpobox.c
===================================================================
--- trunk/third/moira/clients/chpobox/chpobox.c 2012-02-17 19:10:33 UTC (rev 25454)
+++ trunk/third/moira/clients/chpobox/chpobox.c 2012-02-29 20:24:47 UTC (rev 25455)
@@ -1,4 +1,4 @@
-/* $Id: chpobox.c 3956 2010-01-05 20:56:56Z zacheiss $
+/* $Id: chpobox.c 4073 2012-02-28 17:02:47Z zacheiss $
*
* Talk to the Moira database to change a person's home mail machine. This may
* be an Athena machine, or a completely arbitrary address.
@@ -38,7 +38,7 @@
#define argis(a, b) (!strcmp(*arg + 1, a) || !strcmp(*arg + 1, b))
-RCSID("$HeadURL: svn+ssh://svn.mit.edu/moira/trunk/moira/clients/chpobox/chpobox.c $ $Id: chpobox.c 3956 2010-01-05 20:56:56Z zacheiss $");
+RCSID("$HeadURL: svn+ssh://svn.mit.edu/moira/trunk/moira/clients/chpobox/chpobox.c $ $Id: chpobox.c 4073 2012-02-28 17:02:47Z zacheiss $");
int get_pobox(int argc, char **argv, void *callarg);
void usage(void);
@@ -63,7 +63,7 @@
else
whoami++;
- if (argc > 5)
+ if (argc > 7)
usage();
while (++arg - argv < argc)
Modified: trunk/third/moira/clients/eunice/eunice.c
===================================================================
--- trunk/third/moira/clients/eunice/eunice.c 2012-02-17 19:10:33 UTC (rev 25454)
+++ trunk/third/moira/clients/eunice/eunice.c 2012-02-29 20:24:47 UTC (rev 25455)
@@ -1,4 +1,4 @@
-/* $Id: eunice.c 3977 2010-02-12 21:12:04Z zacheiss $
+/* $Id: eunice.c 4051 2011-09-08 18:46:37Z zacheiss $
*
* Command line oriented Moira print queue tool.
*
@@ -21,13 +21,18 @@
#include <stdlib.h>
#include <string.h>
-RCSID("$HeadURL: svn+ssh://svn.mit.edu/moira/trunk/moira/clients/eunice/eunice.c $ $Id: eunice.c 3977 2010-02-12 21:12:04Z zacheiss $");
+RCSID("$HeadURL: svn+ssh://svn.mit.edu/moira/trunk/moira/clients/eunice/eunice.c $ $Id: eunice.c 4051 2011-09-08 18:46:37Z zacheiss $");
struct member {
int type;
char *name, *tag;
};
+struct string_list {
+ char *string;
+ struct string_list *next;
+};
+
const char *deflogserver = "WSLOGGER.MIT.EDU";
/* legacy variables that we need to set regardless */
@@ -39,36 +44,40 @@
/* flags from command line */
int info_flag, verbose, noauth, duplex_default, hold_default;
-int create_flag, setmac, delete_flag, rename_flag, ka, banner, update_flag;
+int create_flag, delete_flag, rename_flag, ka, banner, update_flag, update_hwaddr_flag;
char *lpracl, *lpcacl, *report_list;
char *contact, *newname, *printserver, *type, *hwtype, *mac, *hostname, *queuename;
char *duplexname, *logserver, *location, *realname, *pr_status;
char *queuename, *whoami, *testqueue;
+struct string_list *hwaddr_add_queue, *hwaddr_remove_queue;
+
void usage(char **argv);
int show_printer_info(char *queuename);
int save_printer_info(int argc, char **argv, void *hint);
-int save_hwaddr(int argc, char **argv, void *hint);
+int show_hwaddrs(int argc, char **argv, void *hint);
void recursive_display_list_members(void);
char *get_username(void);
int wrap_mr_query(char *handle, int argc, char **argv,
int (*callback)(int, char **, void *), void *callarg);
void print_query(char *query_name, int argc, char **argv);
int CountArgs(char **info);
+struct string_list *add_to_string_list(struct string_list *old_list, char *s);
static char *states[] = {
"Reserved (0)",
"Active (1)",
- "None (2)",
- "Deleted (3)"
+ "Active, No IP ACL (2)",
+ "Deleted (3)",
+ "Active, BOOTP only (4)"
};
static char *PrnState(int state)
{
static char buf[BUFSIZ];
- if (state < 0 || state > 3)
+ if (state < 0 || state > 4)
{
sprintf(buf, "Unknown (%d)", state);
return buf;
@@ -89,13 +98,13 @@
/* clear all flags & lists */
i = info_flag = verbose = noauth = 0;
- setmac = create_flag = delete_flag = update_flag = 0;
+ create_flag = delete_flag = update_flag = update_hwaddr_flag = 0;
ka = duplex_default = hold_default = banner = -1;
location = lpracl = lpcacl = report_list = pr_status = NULL;
logserver = duplexname = realname = newname = printserver = type = hwtype = mac = hostname = NULL;
+ hwaddr_add_queue = hwaddr_remove_queue = NULL;
+ contact = NULL;
-
- contact = NULL;
whoami = argv[0];
success = 1;
@@ -285,17 +294,28 @@
else
usage(argv);
}
- else if (argis("m", "mac"))
+ else if (argis("ahw", "addhwaddr"))
{
if (arg - argv < argc - 1)
{
++arg;
- setmac++;
- mac = *arg;
+ hwaddr_add_queue=add_to_string_list(hwaddr_add_queue, *arg);
}
else
usage(argv);
+ update_hwaddr_flag++;
}
+ else if (argis("dhw", "delhwaddr"))
+ {
+ if (arg - argv < argc - 1)
+ {
+ ++arg;
+ hwaddr_remove_queue=add_to_string_list(hwaddr_remove_queue, *arg);
+ }
+ else
+ usage(argv);
+ update_hwaddr_flag++;
+ }
else if (argis("b", "banner"))
{
update_flag++;
@@ -352,7 +372,7 @@
usage(argv);
- if (!update_flag && !rename_flag && !delete_flag && !create_flag && !setmac)
+ if (!update_flag && !rename_flag && !delete_flag && !create_flag && !update_hwaddr_flag)
info_flag++;
/* fire up Moira */
@@ -582,25 +602,68 @@
if (info_flag)
show_printer_info(queuename);
- if (setmac)
- {
- status = wrap_mr_query("get_printer", 1, &queuename, save_printer_info, pargv);
+ /* add hwaddrs if necessary */
+ if (hwaddr_add_queue) {
+ struct string_list *q = hwaddr_add_queue;
+
+ status = wrap_mr_query("get_printer", 1, &queuename, save_printer_info, pargv);
+ if (status)
+ {
+ com_err(whoami, status, "while getting printer information");
+ exit(1);
+ }
+
+ if (hostname == NULL)
+ uargv[0] = pargv[PRN_HOSTNAME + 1];
+ else
+ uargv[0] = hostname;
+
+ while(q) {
+
+ uargv[1] = q->string;
+
+ status = wrap_mr_query("add_host_hwaddr", 2, uargv, NULL, NULL);
if (status)
{
- com_err(whoami, status, "while getting printer information");
+ com_err(whoami, status, "while adding host hardware address");
exit(1);
}
- if (hostname == NULL)
- uargv[0] = (char *) strdup (pargv[PRN_HOSTNAME + 1]);
- else
- uargv[0] = (char *) strdup (hostname);
- uargv[1] = (char *) strdup (mac);
- if ((status = wrap_mr_query("update_host_hwaddr", 2, uargv, NULL, NULL)))
- com_err(whoami, status, "updating ethernet address.");
+ q = q->next;
}
+ }
+ /* delete hwaddrs if necessary */
+ if (hwaddr_remove_queue) {
+ struct string_list *q = hwaddr_remove_queue;
+ status = wrap_mr_query("get_printer", 1, &queuename, save_printer_info, pargv);
+ if (status)
+ {
+ com_err(whoami, status, "while getting printer information");
+ exit(1);
+ }
+
+ if (hostname == NULL)
+ uargv[0] = pargv[PRN_HOSTNAME + 1];
+ else
+ uargv[0] = hostname;
+
+ while(q) {
+
+ uargv[1] = q->string;
+
+ status = wrap_mr_query("delete_host_hwaddr", 2, uargv, NULL, NULL);
+ if (status)
+ {
+ com_err(whoami, status, "while deleting host hardware address");
+ exit(1);
+ }
+
+ q = q->next;
+ }
+ }
+
if (delete_flag)
{
status = wrap_mr_query("delete_printer", 1, &queuename,
@@ -624,48 +687,59 @@
#define USAGE_OPTIONS_FORMAT " %-39s%s\n"
fprintf(stderr, "Usage: %s queue [options]\n", argv[0]);
fprintf(stderr, "Options are\n");
- fprintf(stderr, USAGE_OPTIONS_FORMAT, "-v | -verbose",
+ fprintf(stderr, USAGE_OPTIONS_FORMAT, "-v | -verbose",
"-C | -create");
- fprintf(stderr, USAGE_OPTIONS_FORMAT, "-D | -delete",
+ fprintf(stderr, USAGE_OPTIONS_FORMAT, "-D | -delete",
"-R | -rename newname");
- fprintf(stderr, USAGE_OPTIONS_FORMAT, "-i | -info",
+ fprintf(stderr, USAGE_OPTIONS_FORMAT, "-i | -info",
"-L | -location location");
- fprintf(stderr, USAGE_OPTIONS_FORMAT, "-H | -hostname host",
+ fprintf(stderr, USAGE_OPTIONS_FORMAT, "-H | -hostname host",
"-c | -contact contact");
- fprintf(stderr, USAGE_OPTIONS_FORMAT, "-r | -remotename name",
+ fprintf(stderr, USAGE_OPTIONS_FORMAT, "-r | -remotename name",
"-T | -type printer_type");
- fprintf(stderr, USAGE_OPTIONS_FORMAT, "-M | -model model",
+ fprintf(stderr, USAGE_OPTIONS_FORMAT, "-M | -model model",
"-s | -printserver print_server");
- fprintf(stderr, USAGE_OPTIONS_FORMAT, "-K | -kerbauth",
+ fprintf(stderr, USAGE_OPTIONS_FORMAT, "-K | -kerbauth",
"-b | -banner");
- fprintf(stderr, USAGE_OPTIONS_FORMAT, "-NK | -nokerbauth",
+ fprintf(stderr, USAGE_OPTIONS_FORMAT, "-NK | -nokerbauth",
"-nb | -nobanner");
- fprintf(stderr, USAGE_OPTIONS_FORMAT, "-DD | -duplexdefault",
- "-HD | -holddefault");
- fprintf(stderr, USAGE_OPTIONS_FORMAT, "-ND | -noduplexdefault",
- "-NH | -noholddefault");
- fprintf(stderr, USAGE_OPTIONS_FORMAT, "-S | -status status",
- "-rl | -reportlist list");
- fprintf(stderr, USAGE_OPTIONS_FORMAT, "-l | -lpcacl list",
+ fprintf(stderr, USAGE_OPTIONS_FORMAT, "-DD | -duplexdefault",
+ "-HD | -holddefault");
+ fprintf(stderr, USAGE_OPTIONS_FORMAT, "-ND | -noduplexdefault",
+ "-NH | -noholddefault");
+ fprintf(stderr, USAGE_OPTIONS_FORMAT, "-S | -status status",
+ "-rl | -reportlist list");
+ fprintf(stderr, USAGE_OPTIONS_FORMAT, "-l | -lpcacl list",
"-ac | -lpracl list");
- fprintf(stderr, USAGE_OPTIONS_FORMAT, "-d | -duplex name",
+ fprintf(stderr, USAGE_OPTIONS_FORMAT, "-d | -duplex name",
"-n | -noauth");
- fprintf(stderr, USAGE_OPTIONS_FORMAT, "-m | -mac hwaddr",
- "-db | -database host[:port]");
+ fprintf(stderr, USAGE_OPTIONS_FORMAT, "-ahw | -addhwaddr hwaddr",
+ "-dhw | -delhwaddr hwaddr");
+ fprintf(stderr, " %-39s\n" , "-db | -database host[:port]");
exit(1);
}
+static int show_has_hwaddrs;
+
+int show_hwaddrs(int argc, char **argv, void *hint)
+{
+ if(!show_has_hwaddrs++)
+ printf("Hardware Addresses: %s", argv[1]);
+ else
+ printf(", %s", argv[1]);
+
+ return MR_CONT;
+}
+
int show_printer_info(char *queuename)
{
- char hwaddr[20];
char *pargv[PRN_END + 1];
int status, banner, i;
+ struct mqelem *elem = NULL;
for (i = 0; i < PRN_END + 1; i++)
pargv[i] = NULL;
- memset (hwaddr,'\0',sizeof(hwaddr));
-
status = wrap_mr_query("get_printer", 1, &queuename, save_printer_info, pargv);
if (status)
{
@@ -673,23 +747,30 @@
exit (1);
}
- status = wrap_mr_query("get_host_hwaddr", 1, &pargv[PRN_HOSTNAME + 1],
- save_hwaddr, &hwaddr);
-
- if (status)
- sprintf (hwaddr,"none");
-
banner = atoi(pargv[PRN_BANNER + 1]);
- printf("Printer: %-18s Duplex queue: %-18s\n", pargv[PRN_NAME + 1],
- *pargv[PRN_DUPLEXNAME + 1] ? pargv[PRN_DUPLEXNAME + 1] : "[none]");
- printf("Status: %-10s\n", PrnState(atoi(pargv[PRN_STATUS + 1])));
+ printf("Printer: %-18s Duplex queue: %-17s Status: %-10s\n", pargv[PRN_NAME + 1],
+ *pargv[PRN_DUPLEXNAME + 1] ? pargv[PRN_DUPLEXNAME + 1] : "[none]",
+ PrnState(atoi(pargv[PRN_STATUS + 1])));
printf("Duplex by Default: %-8s Hold by Default: %-18s\n",
atoi(pargv[PRN_DUPLEXDEFAULT + 1]) ? "yes" : "no",
atoi(pargv[PRN_HOLDDEFAULT + 1]) ? "yes" : "no");
- printf("Type: %-10s Hardware type: %-10s Hardware address: %s\n",
- pargv[PRN_TYPE + 1], pargv[PRN_HWTYPE + 1], hwaddr);
+ printf("Type: %-10s Hardware type: %-10s\n",
+ pargv[PRN_TYPE + 1], pargv[PRN_HWTYPE + 1]);
printf("Printer hostname: %s\n", pargv[PRN_HOSTNAME + 1]);
+
+ show_has_hwaddrs = 0;
+ status = wrap_mr_query("get_host_hwaddr_mapping", 1, &pargv[PRN_HOSTNAME + 1], show_hwaddrs, &elem);
+ if (status)
+ {
+ if (status != MR_NO_MATCH)
+ com_err(whoami, status, "while getting hardware addresses");
+ else
+ printf("Hardware Addresses: none\n");
+ }
+ else
+ printf("\n");
+
printf("Printer log host: %s\n", pargv[PRN_LOGHOST + 1]);
printf("Spool host: %s\n", pargv[PRN_RM + 1]);
printf("Remote Printer Name: %-10s Banner page: %s\n", pargv[PRN_RP + 1],
@@ -719,13 +800,6 @@
return MR_CONT;
}
-int save_hwaddr(int argc, char **argv, void *hint)
-{
- char *p = hint;
- strcpy(p,argv[0]);
- return MR_CONT;
-}
-
int wrap_mr_query(char *handle, int argc, char **argv,
int (*callback)(int, char **, void *), void *callarg)
{
@@ -785,3 +859,13 @@
return number;
}
+
+struct string_list *add_to_string_list(struct string_list *old_list, char *s) {
+ struct string_list *new_list;
+
+ new_list = (struct string_list *)malloc(sizeof(struct string_list *));
+ new_list->next = old_list;
+ new_list->string = s;
+
+ return new_list;
+}
Modified: trunk/third/moira/clients/moira/printer.c
===================================================================
--- trunk/third/moira/clients/moira/printer.c 2012-02-17 19:10:33 UTC (rev 25454)
+++ trunk/third/moira/clients/moira/printer.c 2012-02-29 20:24:47 UTC (rev 25455)
@@ -1,4 +1,4 @@
-/* $Id: printer.c 4030 2011-03-04 21:01:14Z zacheiss $
+/* $Id: printer.c 4051 2011-09-08 18:46:37Z zacheiss $
*
* This is the file printer.c for the Moira Client, which allows users
* to quickly and easily maintain most parts of the Moira database.
@@ -23,7 +23,7 @@
#include <stdlib.h>
#include <string.h>
-RCSID("$HeadURL: svn+ssh://svn.mit.edu/moira/trunk/moira/clients/moira/printer.c $ $Id: printer.c 4030 2011-03-04 21:01:14Z zacheiss $");
+RCSID("$HeadURL: svn+ssh://svn.mit.edu/moira/trunk/moira/clients/moira/printer.c $ $Id: printer.c 4051 2011-09-08 18:46:37Z zacheiss $");
void RealDeletePrn(char **info, Bool one_item);
void ChangePrn(char **info, Bool one_item);
@@ -48,14 +48,15 @@
"Reserved (0)",
"Active (1)",
"Active, No IP ACL (2)",
- "Deleted (3)"
+ "Deleted (3)",
+ "Active, BOOTP only (4)"
};
static char *PrnState(int state)
{
static char buf[BUFSIZ];
- if (state < 0 || state > 3)
+ if (state < 0 || state > 4)
{
sprintf(buf, "Unknown (%d)", state);
return buf;
Modified: trunk/third/moira/db/schema.sql
===================================================================
--- trunk/third/moira/db/schema.sql 2012-02-17 19:10:33 UTC (rev 25454)
+++ trunk/third/moira/db/schema.sql 2012-02-29 20:24:47 UTC (rev 25455)
@@ -45,7 +45,7 @@
sigwho INTEGER DEFAULT 0 NOT NULL,
signature VARCHAR(68) DEFAULT CHR(0) NOT NULL,
secure INTEGER DEFAULT 0 NOT NULL,
- pin VARCHAR(10) DEFAULT CHR(0) NOT NULL,
+ pin VARCHAR(20) DEFAULT CHR(0) NOT NULL,
reservations VARCHAR(10) DEFAULT CHR(0) NOT NULL,
flag INTEGER DEFAULT 0 NOT NULL,
created DATE DEFAULT SYSDATE NOT NULL,
@@ -81,7 +81,7 @@
statuschange DATE DEFAULT SYSDATE NOT NULL,
snet_id INTEGER DEFAULT 0 NOT NULL,
address VARCHAR(16) DEFAULT CHR(0) NOT NULL,
- hwaddr VARCHAR(12) DEFAULT CHR(0) NOT NULL,
+ unusedhwaddr VARCHAR(12) DEFAULT CHR(0) NOT NULL,
owner_type VARCHAR(8) DEFAULT CHR(0) NOT NULL,
owner_id INTEGER DEFAULT 0 NOT NULL,
acomment INTEGER DEFAULT 0 NOT NULL,
Modified: trunk/third/moira/debian/changelog
===================================================================
--- trunk/third/moira/debian/changelog 2012-02-17 19:10:33 UTC (rev 25454)
+++ trunk/third/moira/debian/changelog 2012-02-29 20:24:47 UTC (rev 25455)
@@ -1,3 +1,10 @@
+debathena-moira (4.0.0-r4073-0debathena1) unstable; urgency=low
+
+ * Re-snapshot moira at r4073 to pick up new changes to clients; the
+ eunice issue described in the previous entry is no longer relevant
+
+ -- Jonathan Reed <jdreed@mit.edu> Wed, 29 Feb 2012 15:24:32 -0500
+
debathena-moira (4.0.0-r4048-0debathena2) unstable; urgency=low
* Revert eunice.c to Moira r3998 / Debathena r24319 because the
Modified: trunk/third/moira/gen/Makefile.in
===================================================================
--- trunk/third/moira/gen/Makefile.in 2012-02-17 19:10:33 UTC (rev 25454)
+++ trunk/third/moira/gen/Makefile.in 2012-02-29 20:24:47 UTC (rev 25455)
@@ -1,4 +1,4 @@
-# $Id: Makefile.in 4040 2011-06-15 21:51:11Z zacheiss $
+# $Id: Makefile.in 4070 2012-02-02 23:09:55Z zacheiss $
SHELL=/bin/sh
@SET_MAKE@
@@ -32,28 +32,26 @@
LIB_CFILES=genacl.c
LIB_TARGET=libdcm.a
-OBJS= acl.lo confluence.lo cups-print.lo cups-cluster.lo dhcp.lo directory.lo events.lo \
- hesiod.lo hosts.lo mailhub.lo ndb.lo network.lo nfs.lo pobox.lo \
+OBJS= acl.lo confluence.lo cups-print.lo dhcp.lo directory.lo events.lo \
+ hesiod.lo hosts.lo mailhub.lo ndb.lo network.lo pobox.lo \
postoffice.lo print.lo warehouse-lists.lo winad.lo www.lo zephyr.lo
-CFILES= acl.c confluence.c cups-print.c cups-cluster.c dhcp.c directory.c events.c \
- hesiod.c hosts.c mailhub.c ndb.c network.c nfs.c pobox.c \
+CFILES= acl.c confluence.c cups-print.c dhcp.c directory.c events.c \
+ hesiod.c hosts.c mailhub.c ndb.c network.c pobox.c \
postoffice.c print.c warehouse-lists.c winad.c www.c zephyr.c
-TARGET= acl.gen confluence.gen cups-print.gen cups-cluster.gen dhcp.gen directory.gen \
+TARGET= acl.gen confluence.gen cups-print.gen dhcp.gen directory.gen \
events.gen hesiod.gen hosts.gen mailhub.gen ndb.gen \
- network.gen nfs.gen pobox.gen postoffice.gen print.gen \
+ network.gen pobox.gen postoffice.gen print.gen \
warehouse-lists.gen winad.gen www.gen zephyr.gen
SCRIPTS=access.gen access.sh acl.sh aliases.sh asa-db.gen ca.gen calendar.gen \
- cups-print.sh cups-cluster.sh dhcp.sh events.sh hesiod.sh ip-billing.gen \
+ cups-print.sh dhcp.sh events.sh hesiod.sh ip-billing.gen \
ip-billing.sh ldap.gen mailhosts.gen mailhub.sh mailman.gen mailman.sh \
nagios-cluster.gen nagios-cluster.sh nagios-colo.gen nagios-colo.sh \
- nagios-printers.gen nagios-printers.sh nagios-wsh.gen nagios-wsh.sh \
- ndb.sh nfs.sh null.sh postoffice.sh print.sh print-accounting.gen sapprint.gen \
- sapprint.sh spwatch.gen tsm.gen tsm.sh ua-elect.gen warehouse.gen warehouse.sh \
- winstats.gen winstats.sh www.sh zephyr.sh install_dirs \
- install_quotas zero_quotas
+ ndb.sh null.sh postoffice.sh print.sh print-accounting.gen printer-list.gen \
+ sapprint.gen sapprint.sh spwatch.gen tsm.gen tsm.sh ua-elect.gen warehouse.gen \
+ warehouse.sh winstats.gen winstats.sh www.sh zephyr.sh
.SUFFIXES: .pc .gen .lo
@@ -87,9 +85,6 @@
hosts.gen: hosts.lo libdcm.a $(MR_LIBDEP)
$(LIBTOOL) --mode=link $(CC) -static -o $@ $(LDFLAGS) hosts.lo libdcm.a $(SQL_LIBS) $(LIBS)
-nfs.gen: nfs.lo libdcm.a $(MR_LIBDEP)
- $(LIBTOOL) --mode=link $(CC) -static -o $@ $(LDFLAGS) nfs.lo libdcm.a $(SQL_LIBS) $(LIBS)
-
dhcp.gen: dhcp.lo libdcm.a $(MR_LIBDEP)
$(LIBTOOL) --mode=link $(CC) -static -o $@ $(LDFLAGS) dhcp.lo libdcm.a $(SQL_LIBS) $(LIBS)
@@ -140,6 +135,3 @@
cups-print.gen: cups-print.lo libdcm.a $(MR_LIBDEP)
$(LIBTOOL) --mode=link $(CC) -static -o $@ $(LDFLAGS) cups-print.lo libdcm.a $(SQL_LIBS) $(LIBS)
-
-cups-cluster.gen: cups-cluster.lo libdcm.a $(MR_LIBDEP)
- $(LIBTOOL) --mode=link $(CC) -static -o $@ $(LDFLAGS) cups-cluster.lo libdcm.a $(SQL_LIBS) $(LIBS)
Modified: trunk/third/moira/gen/dhcp.pc
===================================================================
--- trunk/third/moira/gen/dhcp.pc 2012-02-17 19:10:33 UTC (rev 25454)
+++ trunk/third/moira/gen/dhcp.pc 2012-02-29 20:24:47 UTC (rev 25455)
@@ -1,4 +1,4 @@
-/* $Id: dhcp.pc 4032 2011-03-15 16:32:48Z zacheiss $
+/* $Id: dhcp.pc 4051 2011-09-08 18:46:37Z zacheiss $
*
* This generates the dhcpd.conf.print and associated files.
*
@@ -24,7 +24,7 @@
EXEC SQL INCLUDE sqlca;
-RCSID("$HeadURL: svn+ssh://svn.mit.edu/moira/trunk/moira/gen/dhcp.pc $ $Id: dhcp.pc 4032 2011-03-15 16:32:48Z zacheiss $");
+RCSID("$HeadURL: svn+ssh://svn.mit.edu/moira/trunk/moira/gen/dhcp.pc $ $Id: dhcp.pc 4051 2011-09-08 18:46:37Z zacheiss $");
char *whoami = "dhcp.gen";
char *db = "moira/moira";
@@ -105,7 +105,7 @@
FROM printers pr, machine m, machine m2, hwaddrmap hw
WHERE pr.type != 'ALIAS' AND pr.mach_id != 0
AND pr.mach_id = m.mach_id AND m.mach_id = hw.mach_id AND m.status != 3
- AND pr.loghost = m2.mach_id AND (pr.status = 1 OR pr.status = 2)
+ AND pr.loghost = m2.mach_id AND (pr.status = 1 OR pr.status = 2 OR pr.status = 4)
ORDER BY hw.hwaddr, m.name;
EXEC SQL OPEN csr_boot;
while (1)
@@ -167,7 +167,7 @@
WHERE pr.hwtype LIKE 'HP%' AND pr.mach_id != 0
AND pr.mach_id = m.mach_id AND m.mach_id = hw.mach_id AND m.status != 3
AND pr.rm = m2.mach_id AND pr.loghost = m3.mach_id AND pr.type != 'ALIAS'
- AND (pr.status = 1 OR pr.status = 2);
+ AND (pr.status = 1 OR pr.status = 2 OR pr.status = 4);
EXEC SQL OPEN csr_boot2;
while (1)
{
@@ -205,7 +205,7 @@
fprintf(out, "trap-dest: %s\n", logaddr);
/* Don't output any allow: lines for status 2 printers; they should be unrestricted. */
- if (status == 1)
+ if (status == 1 || status == 4)
{
if (*logaddr)
fprintf(out, "allow: %s\n", logaddr);
Modified: trunk/third/moira/gen/dhcp.sh
===================================================================
--- trunk/third/moira/gen/dhcp.sh 2012-02-17 19:10:33 UTC (rev 25454)
+++ trunk/third/moira/gen/dhcp.sh 2012-02-29 20:24:47 UTC (rev 25455)
@@ -1,5 +1,5 @@
#! /bin/sh
-# $Id: dhcp.sh 3956 2010-01-05 20:56:56Z zacheiss $
+# $Id: dhcp.sh 4058 2011-11-16 21:32:41Z zacheiss $
if [ -d /var/athena ] && [ -w /var/athena ]; then
exec >/var/athena/moira_update.log 2>&1
@@ -20,6 +20,7 @@
BOOTFOOT=/var/boot/dhcpd.conf.foot
BOOTFILE=/var/boot/dhcpd.conf
PSWDFILE=/var/boot/hp.add
+ACLFILE=/var/boot/ip-acl.add
# Alert if the tar file or other needed files do not exist
test -r $TARFILE || exit $MR_MISSINGFILE
@@ -32,6 +33,10 @@
# Append passwords, etc., to the new files
for f in `find /var/boot/hp -name \*.new -print`; do
+ grep '^allow:' $f >/dev/null 2>&1
+ if [ $? = 0 ]; then
+ cat $ACLFILE >> $f
+ fi
cat $PSWDFILE >> $f
mv $f /var/boot/hp/`basename $f .new`
done
Modified: trunk/third/moira/gen/directory.pc
===================================================================
--- trunk/third/moira/gen/directory.pc 2012-02-17 19:10:33 UTC (rev 25454)
+++ trunk/third/moira/gen/directory.pc 2012-02-29 20:24:47 UTC (rev 25455)
@@ -1,4 +1,4 @@
-/* $Id: directory.pc 4042 2011-06-28 15:57:24Z zacheiss $
+/* $Id: directory.pc 4061 2011-12-07 20:33:13Z zacheiss $
*
* This generates a master /etc/passwd containing all active (status != 0)
* accounts.
@@ -20,7 +20,7 @@
EXEC SQL INCLUDE sqlca;
-RCSID("$HeadURL: svn+ssh://svn.mit.edu/moira/trunk/moira/gen/directory.pc $ $Id: directory.pc 4042 2011-06-28 15:57:24Z zacheiss $");
+RCSID("$HeadURL: svn+ssh://svn.mit.edu/moira/trunk/moira/gen/directory.pc $ $Id: directory.pc 4061 2011-12-07 20:33:13Z zacheiss $");
char *whoami = "directory.gen";
char *db = "moira/moira";
@@ -64,7 +64,8 @@
login, last, first, middle, office_addr, office_phone,
home_addr, home_phone, clearid, type
FROM users WHERE status = 1 AND type != 'SYSTEM' AND type != 'STAFF'
- AND type != 'TEST' AND type != 'REGTEST' AND type != 'SHARED' AND type NOT LIKE 'GUES%';
+ AND type != 'TEST' AND type != 'REGTEST' AND type != 'SHARED'
+ AND type != 'MGMT' AND type != 'DOOMED' AND type NOT LIKE 'GUES%';
EXEC SQL OPEN x;
while (1)
{
Modified: trunk/third/moira/gen/nagios-cluster.gen
===================================================================
--- trunk/third/moira/gen/nagios-cluster.gen 2012-02-17 19:10:33 UTC (rev 25454)
+++ trunk/third/moira/gen/nagios-cluster.gen 2012-02-29 20:24:47 UTC (rev 25455)
@@ -1,6 +1,6 @@
#!/moira/bin/perl -Tw
-# $Id: nagios-cluster.gen 4047 2011-08-22 21:04:03Z jweiss $
+# $Id: nagios-cluster.gen 4054 2011-10-02 15:55:43Z zacheiss $
# The following exit codes are defined and MUST BE CONSISTENT with the
# error codes the library uses:
$MR_DBMS_ERR = 47836421;
@@ -116,8 +116,9 @@
print OUT "\n### Printers\n\n";
$sth0 = $dbh->prepare("SELECT UNIQUE m.name FROM machine m, printers p " .
- "WHERE (p.type = 'DORM' OR p.type ='CLUSTER') " .
- "AND p.mach_id = m.mach_id AND m.status=1")
+ "WHERE (p.type = 'DORM' OR p.type ='CLUSTER') " .
+ "AND p.mach_id = m.mach_id AND m.status=1 " .
+ "AND (p.status = 1 OR p.status = 4)")
|| exit $MR_DBMS_ERR;
$sth0->execute || exit $MR_DBMS_ERR;
@@ -147,6 +148,12 @@
use hpjd-service
}
+define service{
+ host_name $name
+ contact_groups noone
+ use ipacl-service
+ }
+
END
}
Added: trunk/third/moira/gen/printer-list.gen
===================================================================
--- trunk/third/moira/gen/printer-list.gen (rev 0)
+++ trunk/third/moira/gen/printer-list.gen 2012-02-29 20:24:47 UTC (rev 25455)
@@ -0,0 +1,35 @@
+#!/moira/bin/perl -Tw
+
+# $Id: nagios-cluster.gen 4047 2011-08-22 21:04:03Z jweiss $
+# The following exit codes are defined and MUST BE CONSISTENT with the
+# error codes the library uses:
+$MR_DBMS_ERR = 47836421;
+$MR_OCONFIG = 47836460;
+
+$outfile = '/moira/dcm/printer-list.out';
+
+use DBI;
+
+umask 022;
+open(OUT, ">$outfile") || exit $MR_OCONFIG;
+
+$dbh = DBI->connect("dbi:Oracle:moira", "moira", "moira")
+ || exit $MR_DBMS_ERR;
+
+$sth0 = $dbh->prepare("SELECT UNIQUE m.name FROM machine m, printers p " .
+ "WHERE (p.type = 'DORM' OR p.type ='CLUSTER') " .
+ "AND p.mach_id = m.mach_id AND m.status=1 " .
+ "AND (p.status=4 OR p.status=1)")
+ || exit $MR_DBMS_ERR;
+
+$sth0->execute || exit $MR_DBMS_ERR;
+
+while (($name) = $sth0->fetchrow_array) {
+ next if $name eq "[NONE]";
+ print OUT "$name\n";
+}
+
+close(OUT);
+$dbh->disconnect;
+
+exit 0;
Property changes on: trunk/third/moira/gen/printer-list.gen
___________________________________________________________________
Added: svn:executable
+ *
Modified: trunk/third/moira/gen/spwatch.gen
===================================================================
--- trunk/third/moira/gen/spwatch.gen 2012-02-17 19:10:33 UTC (rev 25454)
+++ trunk/third/moira/gen/spwatch.gen 2012-02-29 20:24:47 UTC (rev 25455)
@@ -1,5 +1,5 @@
#!/moira/bin/perl -Tw
-# $Id: spwatch.gen 4030 2011-03-04 21:01:14Z zacheiss $
+# $Id: spwatch.gen 4051 2011-09-08 18:46:37Z zacheiss $
#
# The following exit codes are defined and MUST BE CONSISTENT with the
# error codes the library uses:
@@ -15,7 +15,7 @@
$sth = $dbh->prepare("SELECT m.name FROM printers p, ".
"machine m WHERE p.type = 'SAP' AND p.mach_id = ".
- "m.mach_id AND (p.status = 1 OR p.status = 2) AND m.status != 3 " .
+ "m.mach_id AND (p.status = 1 OR p.status = 2 OR p.status = 4) AND m.status != 3 " .
"ORDER BY m.name") || exit $MR_DBMS_ERR;
$sth->execute || exit $MR_DBMS_ERR;
Modified: trunk/third/moira/gen/warehouse-lists.pc
===================================================================
--- trunk/third/moira/gen/warehouse-lists.pc 2012-02-17 19:10:33 UTC (rev 25454)
+++ trunk/third/moira/gen/warehouse-lists.pc 2012-02-29 20:24:47 UTC (rev 25455)
@@ -1,4 +1,4 @@
-/* $Id: warehouse-lists.pc 3956 2010-01-05 20:56:56Z zacheiss $
+/* $Id: warehouse-lists.pc 4052 2011-09-19 14:56:35Z zacheiss $
*
* (c) Copyright 2008 by the Massachusetts Institute of Technology.
*/
@@ -92,20 +92,30 @@
{
EXEC SQL BEGIN DECLARE SECTION;
char *l = list;
- int lid = id;
+ int lid = id, count;
char acl_type[LIST_ACL_TYPE_SIZE], modtime[LIST_MODTIME_SIZE];
char acl_name[STRINGS_STRING_SIZE], login[USERS_LOGIN_SIZE];
- char principal[STRINGS_STRING_SIZE];
- int acl_id;
+ char principal[STRINGS_STRING_SIZE], description[LIST_DESCRIPTION_SIZE];
+ int acl_id, active, maillist, grouplist, nfsgroup, publicflg, hidden;
EXEC SQL END DECLARE SECTION;
char *maybecomma = "";
- EXEC SQL SELECT acl_type, acl_id, modtime INTO :acl_type, :acl_id, :modtime
+ EXEC SQL SELECT acl_type, acl_id, modtime, active, maillist,
+ grouplist, nfsgroup, publicflg, hidden, description INTO :acl_type,
+ :acl_id, :modtime, :active, :maillist, :grouplist, :nfsgroup,
+ :publicflg, :hidden, :description
FROM list WHERE list_id = :lid;
-
+
strtrim(acl_type);
strtrim(modtime);
-
+ strtrim(description);
+
+ for (count = 0; count < strlen(description); count++)
+ {
+ if (description[count] == '|')
+ description[count] = '-';
+ }
+
strcpy(acl_name, "NONE");
if (strcmp(acl_type, "LIST") == 0)
EXEC SQL SELECT name into :acl_name FROM list WHERE list_id = :acl_id;
@@ -115,7 +125,8 @@
EXEC SQL SELECT string into :acl_name FROM strings WHERE string_id = :acl_id;
strtrim(acl_name);
- fprintf(out, "%s|%s|%s|", list, acl_type, acl_name);
+ fprintf(out, "%s|%s|%s|%d|%d|%d|%d|%d|%d|%s|", list, acl_type,
+ acl_name, active, maillist, grouplist, nfsgroup, publicflg, hidden, description);
EXEC SQL DECLARE u_cursor CURSOR FOR
SELECT UNIQUE u.login FROM users u, imembers i, list l
Modified: trunk/third/moira/incremental/ldap/winad.c
===================================================================
--- trunk/third/moira/incremental/ldap/winad.c 2012-02-17 19:10:33 UTC (rev 25454)
+++ trunk/third/moira/incremental/ldap/winad.c 2012-02-29 20:24:47 UTC (rev 25455)
@@ -1,4 +1,4 @@
-/* $HeadURL: svn+ssh://svn.mit.edu/moira/trunk/moira/incremental/ldap/winad.c $ $Id: winad.c 4020 2010-09-02 13:46:09Z zacheiss $ */
+/* $HeadURL: svn+ssh://svn.mit.edu/moira/trunk/moira/incremental/ldap/winad.c $ $Id: winad.c 4062 2011-12-07 21:07:25Z zacheiss $ */
/* ldap.incr arguments example
*
* arguments when moira creates the account - ignored by ldap.incr since the
@@ -360,13 +360,17 @@
CN=Massachusetts Institute of Technology,CN=Microsoft Exchange,\
CN=Services,CN=Configuration,"
-#define ALL_ADDRESS_LIST_PREFIX "CN=All Users,CN=All Address Lists,\
+#define ALL_USERS_ADDRESS_LIST_PREFIX "CN=All Users,CN=All Address Lists,\
CN=Address Lists Container,CN=Massachusetts Institute of Technology,\
CN=Microsoft Exchange,CN=Services,CN=Configuration,"
#define X500_PREFIX "X500:/o=Massachusetts Institute of Technology/\
ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients"
+#define RBAC_POLICY_PREFIX "CN=Default Role Assignment Policy,\
+CN=Policies,CN=RBAC,CN=Massachusetts Institute of Technology,\
+CN=Microsoft Exchange,CN=Services,CN=Configuration,"
+
#define ADD_ATTR(t, v, o) \
mods[n] = malloc(sizeof(LDAPMod)); \
mods[n]->mod_op = o; \
@@ -391,6 +395,7 @@
#define SET_PASSWORD "SET_PASSWORD:"
#define EXCHANGE "EXCHANGE:"
#define REALM "REALM:"
+#define UPDATE_NAME_INFO "UPDATE_NAME_INFO:"
#define ACTIVE_DIRECTORY "ACTIVE_DIRECTORY:"
#define PORT "PORT:"
#define PROCESS_MACHINE_CONTAINER "PROCESS_MACHINE_CONTAINER:"
@@ -441,6 +446,7 @@
int GroupPopulateDelete = 0;
int group_members = 0;
int max_group_members = 0;
+int update_name_info = 1;
struct sockaddr_in kdc_server;
int kdc_socket;
@@ -3339,7 +3345,7 @@
LDAP_MOD_REPLACE);
ADD_ATTR("showInAddressBook", address_book_v, LDAP_MOD_REPLACE);
} else {
- hide_address_lists_v[0] = NULL;
+ hide_address_lists_v[0] = "FALSE";
ADD_ATTR("msExchHideFromAddressLists", hide_address_lists_v,
LDAP_MOD_REPLACE);
}
@@ -4140,6 +4146,7 @@
char *homeMDB_v[] = {NULL, NULL};
char *homeServerName_v[] = {NULL, NULL};
char *query_base_dn_v[] = {NULL, NULL};
+ char *rbac_policy_link_v[] = {NULL, NULL};
char *mail_nickname_v[] = {NULL, NULL};
char *mdbUseDefaults_v[] = {NULL, NULL};
char userAccountControlStr[80];
@@ -4163,6 +4170,11 @@
char principal[256];
char status[256];
char query_base_dn[256];
+ char rbac_policy_link[256];
+ char mit_address_list[256];
+ char global_address_list[256];
+ char email_address_list[256];
+ char all_users_address_list[256];
char acBERBuf[N_SD_BER_BYTES];
LDAPControl sControl = {"1.2.840.113556.1.4.801",
{ N_SD_BER_BYTES, acBERBuf },
@@ -4204,6 +4216,19 @@
sprintf(query_base_dn, "%s%s", ADDRESS_LIST_PREFIX, dn_path);
query_base_dn_v[0] = query_base_dn;
+ sprintf(rbac_policy_link, "%s%s", RBAC_POLICY_PREFIX, dn_path);
+ rbac_policy_link_v[0] = rbac_policy_link;
+
+ sprintf(mit_address_list, "%s%s", ADDRESS_LIST_PREFIX, dn_path);
+ address_book_v[0] = mit_address_list;
+ sprintf(global_address_list, "%s%s", GLOBAL_ADDRESS_LIST_PREFIX, dn_path);
+ address_book_v[1] = global_address_list;
+ sprintf(email_address_list, "%s%s", EMAIL_ADDRESS_LIST_PREFIX, dn_path);
+ address_book_v[2] = email_address_list;
+ sprintf(all_users_address_list, "%s%s", ALL_USERS_ADDRESS_LIST_PREFIX,
+ dn_path);
+ address_book_v[3] = all_users_address_list;
+
mail_nickname_v[0] = user_name;
memset(mail, '\0', sizeof(mail));
@@ -4320,10 +4345,13 @@
homeServerName_v[0] = homeServerName;
n = 0;
- hide_address_lists_v[0] = "FALSE";
+ hide_address_lists_v[0] = "FALSE";
ADD_ATTR("msExchHideFromAddressLists", hide_address_lists_v,
LDAP_MOD_ADD);
ADD_ATTR("msExchQueryBaseDN", query_base_dn_v, LDAP_MOD_REPLACE);
+ ADD_ATTR("msExchRBACPolicyLink", rbac_policy_link_v,
+ LDAP_MOD_REPLACE);
+ ADD_ATTR("showInAddressBook", address_book_v, LDAP_MOD_REPLACE);
ADD_ATTR("mailNickName", mail_nickname_v, LDAP_MOD_ADD);
ADD_ATTR("homeMDB", homeMDB_v, LDAP_MOD_ADD);
mdbUseDefaults_v[0] = "TRUE";
@@ -4560,12 +4588,15 @@
strcat(displayName, last);
}
- if(strlen(displayName))
- rc = attribute_update(ldap_handle, distinguished_name, displayName,
- "displayName", user_name);
- else
- rc = attribute_update(ldap_handle, distinguished_name, user_name,
- "displayName", user_name);
+ if(update_name_info)
+ {
+ if(strlen(displayName))
+ rc = attribute_update(ldap_handle, distinguished_name, displayName,
+ "displayName", user_name);
+ else
+ rc = attribute_update(ldap_handle, distinguished_name, user_name,
+ "displayName", user_name);
+ }
if(!ActiveDirectory)
{
@@ -4583,27 +4614,30 @@
"eduPersonNickname", user_name);
}
- if(strlen(first))
- rc = attribute_update(ldap_handle, distinguished_name, first,
- "givenName", user_name);
- else
- rc = attribute_update(ldap_handle, distinguished_name, "",
- "givenName", user_name);
-
- if(strlen(middle) == 1)
- rc = attribute_update(ldap_handle, distinguished_name, middle,
- "initials", user_name);
- else
- rc = attribute_update(ldap_handle, distinguished_name, "",
- "initials", user_name);
+ if(update_name_info)
+ {
+ if(strlen(first))
+ rc = attribute_update(ldap_handle, distinguished_name, first,
+ "givenName", user_name);
+ else
+ rc = attribute_update(ldap_handle, distinguished_name, "",
+ "givenName", user_name);
+
+ if(strlen(middle) == 1)
+ rc = attribute_update(ldap_handle, distinguished_name, middle,
+ "initials", user_name);
+ else
+ rc = attribute_update(ldap_handle, distinguished_name, "",
+ "initials", user_name);
+
+ if(strlen(last))
+ rc = attribute_update(ldap_handle, distinguished_name, last,
+ "sn", user_name);
+ else
+ rc = attribute_update(ldap_handle, distinguished_name, "",
+ "sn", user_name);
+ }
- if(strlen(last))
- rc = attribute_update(ldap_handle, distinguished_name, last,
- "sn", user_name);
- else
- rc = attribute_update(ldap_handle, distinguished_name, "",
- "sn", user_name);
-
if(ActiveDirectory)
{
rc = attribute_update(ldap_handle, distinguished_name, Uid, "uid",
@@ -4664,7 +4698,7 @@
{
if (Exchange)
{
- hide_address_lists_v[0] = NULL;
+ hide_address_lists_v[0] = "FALSE";
ADD_ATTR("msExchHideFromAddressLists", hide_address_lists_v,
LDAP_MOD_REPLACE);
}
@@ -5020,6 +5054,11 @@
char proxy_address[256];
char mail_nickname[256];
char query_base_dn[256];
+ char rbac_policy_link[256];
+ char mit_address_list[256];
+ char global_address_list[256];
+ char email_address_list[256];
+ char all_users_address_list[256];
char displayName[256];
char address_book[1024];
char alt_recipient[256];
@@ -5059,6 +5098,7 @@
char *proxy_address_v[] = {NULL, NULL};
char *mail_nickname_v[] = {NULL, NULL};
char *query_base_dn_v[] = {NULL, NULL};
+ char *rbac_policy_link_v[] = {NULL, NULL};
char *address_book_v[] = {NULL, NULL, NULL, NULL, NULL};
char *homeMDB_v[] = {NULL, NULL};
char *homeServerName_v[] = {NULL, NULL};
@@ -5129,6 +5169,11 @@
memset(WinProfileDir, '\0', sizeof(WinProfileDir));
memset(displayName, '\0', sizeof(displayName));
memset(query_base_dn, '\0', sizeof(query_base_dn));
+ memset(rbac_policy_link, '\0', sizeof(rbac_policy_link));
+ memset(mit_address_list, '\0', sizeof(mit_address_list));
+ memset(global_address_list, '\0', sizeof(global_address_list));
+ memset(email_address_list, '\0', sizeof(email_address_list));
+ memset(all_users_address_list, '\0', sizeof(all_users_address_list));
memset(filesys_name, '\0', sizeof(filesys_name));
strcpy(WinHomeDir, av[U_WINHOMEDIR]);
strcpy(WinProfileDir, av[U_WINPROFILEDIR]);
@@ -5206,6 +5251,18 @@
sprintf(contact_mail, "%s@mit.edu", user_name);
sprintf(query_base_dn, "%s%s", ADDRESS_LIST_PREFIX, call_args[1]);
query_base_dn_v[0] = query_base_dn;
+ sprintf(rbac_policy_link, "%s%s", RBAC_POLICY_PREFIX, call_args[1]);
+ rbac_policy_link_v[0] = rbac_policy_link;
+ sprintf(mit_address_list, "%s%s", ADDRESS_LIST_PREFIX, call_args[1]);
+ address_book_v[0] = mit_address_list;
+ sprintf(global_address_list, "%s%s", GLOBAL_ADDRESS_LIST_PREFIX,
+ call_args[1]);
+ address_book_v[1] = global_address_list;
+ sprintf(email_address_list, "%s%s", EMAIL_ADDRESS_LIST_PREFIX, call_args[1]);
+ address_book_v[2] = email_address_list;
+ sprintf(all_users_address_list, "%s%s", ALL_USERS_ADDRESS_LIST_PREFIX,
+ call_args[1]);
+ address_book_v[3] = all_users_address_list;
sprintf(alt_recipient, "cn=%s@exchange-forwarding.mit.edu,%s,%s", user_name,
contact_ou, call_args[1]);
sprintf(search_string, "@%s", uppercase(ldap_domain));
@@ -5269,6 +5326,8 @@
}
ADD_ATTR("msExchQueryBaseDN", query_base_dn_v, LDAP_MOD_ADD);
+ ADD_ATTR("msExchRBACPolicyLink", rbac_policy_link_v, LDAP_MOD_ADD);
+ ADD_ATTR("showInAddressBook", address_book_v, LDAP_MOD_ADD);
ADD_ATTR("mailNickName", mail_nickname_v, LDAP_MOD_ADD);
ADD_ATTR("homeMDB", homeMDB_v, LDAP_MOD_ADD);
mdbUseDefaults_v[0] = "TRUE";
@@ -5936,7 +5995,7 @@
static int illegalchars[] = {
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* ^@ - ^O */
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* ^P - ^_ */
- 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, /* SPACE - / */
+ 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, /* SPACE - / */
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, /* 0 - ? */
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* @ - O */
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, /* P - _ */
@@ -9002,6 +9061,17 @@
max_group_members = atoi(temp1);
}
}
+ else if(!strncmp(temp, UPDATE_NAME_INFO,
+ strlen(UPDATE_NAME_INFO)))
+ {
+ if(strlen(temp) > (strlen(UPDATE_NAME_INFO)))
+ {
+ strcpy(temp1, &temp[strlen(UPDATE_NAME_INFO)]);
+ StringTrim(temp1);
+ if (!strcasecmp(temp1, "NO"))
+ update_name_info = 0;
+ }
+ }
else
{
if (strlen(ldap_domain) != 0)
@@ -9166,6 +9236,9 @@
char sub_filter[1024];
char search_path[1024];
char range[1024];
+ char *owningServerName;
+ char *legacyExchangeDN;
+ char temp[1024];
char *attr_array[3];
char *s;
int homeMDB_count = -1;
@@ -9205,9 +9278,13 @@
while(gPtr) {
if (((s = strstr(gPtr->dn, "Public")) != (char *) NULL) ||
+ ((s = strstr(gPtr->dn, "public")) != (char *) NULL) ||
((s = strstr(gPtr->dn, "Recover")) != (char *) NULL) ||
+ ((s = strstr(gPtr->dn, "recover")) != (char *) NULL) ||
((s = strstr(gPtr->dn, "Reserve")) != (char *) NULL) ||
- ((s = strstr(gPtr->dn, "PF")) != (char *) NULL))
+ ((s = strstr(gPtr->dn, "reserve")) != (char *) NULL) ||
+ ((s = strstr(gPtr->dn, "PF")) != (char *) NULL) ||
+ ((s = strstr(gPtr->dn, "pf")) != (char *) NULL))
{
gPtr = gPtr->next;
continue;
@@ -9309,15 +9386,53 @@
if(group_count)
{
- *homeServerName = strdup(group_base->value);
- if((s = strrchr(*homeServerName, '/')) != (char *) NULL)
+ legacyExchangeDN = strdup(group_base->value);
+ if((s = strrchr(legacyExchangeDN, '/')) != (char *) NULL)
{
*s = '\0';
}
+
+ if((s = strrchr(legacyExchangeDN, '/')) != (char *) NULL)
+ {
+ *s = '\0';
+ }
}
linklist_free(group_base);
+ /* Ok now we need to lookup the owning server as in Exchange 2010 as this
+ is now handled differently.
+ */
+
+ attr_array[0] = "msExchOwningServer";
+ attr_array[1] = NULL;
+
+ group_count = 0;
+ group_base = NULL;
+
+ if ((rc = linklist_build(ldap_handle, *homeMDB, filter,
+ attr_array, &group_base,
+ &group_count,
+ LDAP_SCOPE_SUBTREE)) != 0)
+ {
+ com_err(whoami, 0, "Unable to find msExchHomeServerName %s",
+ ldap_err2string(rc));
+ return(rc);
+ }
+
+ if(group_count)
+ {
+ owningServerName = strdup(group_base->value);
+ if((s = strchr(owningServerName, ',')) != (char *) NULL)
+ {
+ *s = '\0';
+ }
+ }
+
+ sprintf(temp, "%s/%s", legacyExchangeDN, owningServerName);
+ *homeServerName = strdup(temp);
+ linklist_free(group_base);
+
return(rc);
}
@@ -9353,10 +9468,6 @@
int i = 0;
int spaces = 0;
- if(ActiveDirectory) {
- return strdup(s);
- }
-
memset(string, '\0', sizeof(string));
q = s;
Modified: trunk/third/moira/reg_svr/errors
===================================================================
--- trunk/third/moira/reg_svr/errors 2012-02-17 19:10:33 UTC (rev 25454)
+++ trunk/third/moira/reg_svr/errors 2012-02-29 20:24:47 UTC (rev 25455)
@@ -3,14 +3,14 @@
to continue. The error is: "%s".
Please try again later. If this problem persists, contact the Athena
-User Accounts Office in N42-105A, x3-1325.
+User Accounts Office at 617-253-1325 or accounts@mit.edu.
# 2 PROTOCOL_ERROR
A protocol error has occurred, and the registration applet is unable
to continue. This may indicate that you are using an out-of-date
version of the registration applet.
If you are unable to fix this problem, contact the Athena User
-Accounts Office in N42-105A, x3-1325.
+Accounts Office at 617-253-1325 or accounts@mit.edu.
# 3 DATABASE_CLOSED
Sorry, it appears that the Moira database (which is needed for account
registration) is currently closed. Please try again later.
@@ -20,7 +20,7 @@
out-of-date version of the registration applet.
If you are unable to fix this problem, contact the Athena User
-Accounts Office in N42-105A, x3-1325.
+Accounts Office at 617-253-1325 or accounts@mit.edu.
# 5 NOT_FOUND_IN_DATABASE
The registration server was unable to locate you in the accounts
database. Please make sure you typed in your name and MIT ID number
@@ -28,23 +28,23 @@
If you are a new staff member, this may mean that you have not been
entered into the database yet. Try again tomorrow. If this problem
-persists, contact the Athena User Accounts Office in N42-105A,
-x3-1325.
+persists, contact the Athena User Accounts Office at 617-253-1325 or
+accounts@mit.edu.
# 6 ALREADY_REGISTERED
You have already registered for an account. The username you selected
is "%s".
If you don't remember your password, or you do not think that this is
-your account, contact the Athena User Accounts Office in N42-105A,
-x3-1325.
+your account, contact the Athena User Accounts Office at 617-253-1325 or
+accounts@mit.edu.
# 7 ACCOUNT_DELETED
Your account, "%s", has been deactivated, and you are not listed as
eligible for another account. If you have any questions, contact
-the Athena User Accounts Office in N42-105A, x3-1325.
+the Athena User Accounts Office at 617-253-1325 or accounts@mit.edu.
# 8 NOT_ELIGIBLE
You were found in the database, but are listed as ineligible for an
account. If you have any questions, contact the Athena User Accounts
-Office in N42-105A, x3-1325.
+Office at 617-253-1325 or accounts@mit.edu.
# 9 FOUND
OK. I've found you in the database: %s, account class %s.
# 10 FORCED_USERNAME
@@ -57,7 +57,7 @@
If you have lost your Athena Account Coupon, you will need to
get a new one, by going to either the Student Services Center in
-Building 11, or the Athena User Accounts Office in N42-105A, x3-1325.
+Building 11, or the Athena User Accounts Office at 617-253-1325 or accounts@mit.edu.
# 12 BAD_USERNAME
"%s" is not a valid username. Your username must be between %d and %d
characters long, must start with a lowercase letter, and must consist
@@ -69,7 +69,7 @@
Oops. Your account was reserved with the username "%s", but that
username is already taken. You will not be able to register your
account until this problem is resolved. Please contact the Athena User
-Accounts Office in N42-105A, x3-1325.
+Accounts Office at 617-253-1325 or accounts@mit.edu.
# 15 USERNAME_OK
OK. I've reserved the username "%s" for you.
# 16 PASSWORD_SHORT
@@ -85,13 +85,16 @@
and password with the Kerberos server. The error was: "%s".
Please try again later. If this problem persists, contact the Athena
-User Accounts Office in N42-105A, x3-1325.
+User Accounts Office at 617-253-1325 or accounts@mit.edu.
# 20 DONE
Your account has been registered and will become active later tonight.
You should be able to log in by tomorrow morning using your Kerberos
username (%s) and the password you chose.
+SAPweb Self-Service access (including employee benefits enrollment) will
+be available after 48 hours.
+
MIT's central email service is in transition.
Please note: To access your email account via a web browser (Firefox,
Modified: trunk/third/moira/reg_svr/reg_svr.pc
===================================================================
--- trunk/third/moira/reg_svr/reg_svr.pc 2012-02-17 19:10:33 UTC (rev 25454)
+++ trunk/third/moira/reg_svr/reg_svr.pc 2012-02-29 20:24:47 UTC (rev 25455)
@@ -1,4 +1,4 @@
-/* $Id: reg_svr.pc 3960 2010-01-06 06:20:48Z zacheiss $
+/* $Id: reg_svr.pc 4071 2012-02-03 18:02:54Z zacheiss $
*
* Server for user registration with Moira and Kerberos.
*
@@ -39,7 +39,7 @@
EXEC SQL INCLUDE sqlca;
-RCSID("$HeadURL: svn+ssh://svn.mit.edu/moira/trunk/moira/reg_svr/reg_svr.pc $ $Id: reg_svr.pc 3960 2010-01-06 06:20:48Z zacheiss $");
+RCSID("$HeadURL: svn+ssh://svn.mit.edu/moira/trunk/moira/reg_svr/reg_svr.pc $ $Id: reg_svr.pc 4071 2012-02-03 18:02:54Z zacheiss $");
char *whoami, *hostname, *shorthostname;
@@ -656,7 +656,10 @@
if (status == MR_SUCCESS)
{
if (rc->user_status == US_NO_LOGIN_YET_KERBEROS_ONLY)
- EXEC SQL UPDATE users SET login = :login WHERE unix_uid = :rc->uid;
+ {
+ EXEC SQL UPDATE users SET login = :login WHERE unix_uid = :rc->uid;
+ EXEC SQL COMMIT WORK;
+ }
else
status = register_user(rc->uid, login);
}
Modified: trunk/third/moira/regtape/staff.pc
===================================================================
--- trunk/third/moira/regtape/staff.pc 2012-02-17 19:10:33 UTC (rev 25454)
+++ trunk/third/moira/regtape/staff.pc 2012-02-29 20:24:47 UTC (rev 25455)
@@ -1,4 +1,4 @@
-/* $Id: staff.pc 4046 2011-08-18 18:46:48Z zacheiss $
+/* $Id: staff.pc 4066 2012-01-19 21:44:57Z zacheiss $
*
* Load data into Moira from Personnel Office data file
*
@@ -19,7 +19,7 @@
EXEC SQL INCLUDE sqlca;
-RCSID("$HeadURL: svn+ssh://svn.mit.edu/moira/trunk/moira/regtape/staff.pc $ $Id: staff.pc 4046 2011-08-18 18:46:48Z zacheiss $");
+RCSID("$HeadURL: svn+ssh://svn.mit.edu/moira/trunk/moira/regtape/staff.pc $ $Id: staff.pc 4066 2012-01-19 21:44:57Z zacheiss $");
/* File format is:
*
@@ -246,7 +246,7 @@
!strstr(uppercase(e.xtitle), "PROFESSION")) ||
strstr(uppercase(e.xtitle), "LECTURE"))
e.type = "FACULTY";
- if (!strcmp(e.dept, "LINCOLN LAB"))
+ if (strstr(uppercase(e.dept), "LINCOLN LAB"))
e.type = "LINCOLN";
FixCase(e.dept);
Modified: trunk/third/moira/regtape/student.pc
===================================================================
--- trunk/third/moira/regtape/student.pc 2012-02-17 19:10:33 UTC (rev 25454)
+++ trunk/third/moira/regtape/student.pc 2012-02-29 20:24:47 UTC (rev 25455)
@@ -21,7 +21,7 @@
EXEC SQL INCLUDE sqlca;
-RCSID("$HeadURL: svn+ssh://svn.mit.edu/moira/trunk/moira/regtape/student.pc $ $Id: student.pc 4046 2011-08-18 18:46:48Z zacheiss $");
+RCSID("$HeadURL: svn+ssh://svn.mit.edu/moira/trunk/moira/regtape/student.pc $ $Id: student.pc 4060 2011-12-01 19:50:15Z zacheiss $");
/* File format is:
@@ -138,9 +138,12 @@
while ((e = get_next_entry(in)))
{
- /* Don't require secure registration for cross-registered students. */
- if (!strcmp(e->reg_type, "Cross-Registered"))
- process_entry(e, 0);
+ /* Don't require secure registration for cross-registered or
+ * special students.
+ */
+ if (!strcmp(e->reg_type, "Cross-Registered") ||
+ !strcmp(e->reg_type, "Special"))
+ process_entry(e, 0);
else
process_entry(e, 1);
EXEC SQL COMMIT WORK;
Modified: trunk/third/moira/server/increment.pc
===================================================================
--- trunk/third/moira/server/increment.pc 2012-02-17 19:10:33 UTC (rev 25454)
+++ trunk/third/moira/server/increment.pc 2012-02-29 20:24:47 UTC (rev 25455)
@@ -1,4 +1,4 @@
-/* $Id: increment.pc 4021 2010-09-02 15:07:00Z zacheiss $
+/* $Id: increment.pc 4068 2012-02-02 21:31:10Z zacheiss $
*
* Deal with incremental updates
*
@@ -21,7 +21,7 @@
EXEC SQL INCLUDE sqlca;
-RCSID("$HeadURL: svn+ssh://svn.mit.edu/moira/trunk/moira/server/increment.pc $ $Id: increment.pc 4021 2010-09-02 15:07:00Z zacheiss $");
+RCSID("$HeadURL: svn+ssh://svn.mit.edu/moira/trunk/moira/server/increment.pc $ $Id: increment.pc 4068 2012-02-02 21:31:10Z zacheiss $");
extern char *whoami;
extern char *table_name[];
@@ -31,7 +31,7 @@
int inc_running = 0;
time_t inc_started;
-#define MAXARGC 16
+#define MAXARGC 20
EXEC SQL WHENEVER SQLERROR DO dbmserr();
@@ -105,10 +105,10 @@
case MACHINE_TABLE:
sprintf(stmt_buf, "SELECT m.name, m.mach_id, m.vendor, m.model, m.os, m.location, "
"m.contact, m.billing_contact, m.account_number, m.status, m.address,"
- "m.owner_type, m.owner_id, m.acomment, m.ocomment FROM machine m "
+ "m.owner_type, m.owner_id, m.acomment, m.ocomment, m.snet_id FROM machine m "
"WHERE %s", qual);
dosql(before);
- beforec = 15;
+ beforec = 16;
name = xmalloc(0);
id = atoi(before[12]);
if (!strncmp(before[11], "USER", 4))
@@ -132,6 +132,9 @@
id = atoi(before[14]);
id_to_name(id, STRINGS_TABLE, &name);
strcpy(before[14], name);
+ id = atoi(before[15]);
+ id_to_name(id, SUBNET_TABLE, &name);
+ strcpy(before[15], name);
break;
case HOSTALIAS_TABLE:
strcpy(before[0], argv[0]);
@@ -324,10 +327,10 @@
case MACHINE_TABLE:
sprintf(stmt_buf, "SELECT m.name, m.mach_id, m.vendor, m.model, m.os, m.location, "
"m.contact, m.billing_contact, m.account_number, m.status, m.address,"
- "m.owner_type, m.owner_id, m.acomment, m.ocomment FROM machine m "
+ "m.owner_type, m.owner_id, m.acomment, m.ocomment, m.snet_id FROM machine m "
"WHERE %s", qual);
dosql(after);
- afterc = 15;
+ afterc = 16;
name = xmalloc(0);
id = atoi(after[12]);
if (!strncmp(after[11], "USER", 4))
@@ -351,6 +354,9 @@
id = atoi(after[14]);
id_to_name(id, STRINGS_TABLE, &name);
strcpy(after[14], name);
+ id = atoi(after[15]);
+ id_to_name(id, SUBNET_TABLE, &name);
+ strcpy(after[15], name);
break;
case HOSTALIAS_TABLE:
strcpy(after[0], argv[0]);
Modified: trunk/third/moira/server/qsetup.pc
===================================================================
--- trunk/third/moira/server/qsetup.pc 2012-02-17 19:10:33 UTC (rev 25454)
+++ trunk/third/moira/server/qsetup.pc 2012-02-29 20:24:47 UTC (rev 25455)
@@ -1,4 +1,4 @@
-/* $Id: qsetup.pc 4011 2010-07-06 15:55:47Z zacheiss $
+/* $Id: qsetup.pc 4063 2012-01-04 17:37:23Z zacheiss $
*
* Query setup routines
*
@@ -21,7 +21,7 @@
EXEC SQL INCLUDE sqlca;
-RCSID("$HeadURL: svn+ssh://svn.mit.edu/moira/trunk/moira/server/qsetup.pc $ $Id: qsetup.pc 4011 2010-07-06 15:55:47Z zacheiss $");
+RCSID("$HeadURL: svn+ssh://svn.mit.edu/moira/trunk/moira/server/qsetup.pc $ $Id: qsetup.pc 4063 2012-01-04 17:37:23Z zacheiss $");
extern char *whoami;
extern int dbms_errno, mr_errcode;
@@ -380,7 +380,7 @@
static int badlistchars[] = {
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* ^@ - ^O */
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* ^P - ^_ */
- 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, /* SPACE - / */
+ 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, /* SPACE - / */
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, /* 0 - ? */
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* @ - O */
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, /* P - _ */
Modified: trunk/third/moira/server/queries2.c
===================================================================
--- trunk/third/moira/server/queries2.c 2012-02-17 19:10:33 UTC (rev 25454)
+++ trunk/third/moira/server/queries2.c 2012-02-29 20:24:47 UTC (rev 25455)
@@ -1,4 +1,4 @@
-/* $Id: queries2.c 4001 2010-04-21 20:38:45Z zacheiss $
+/* $Id: queries2.c 4072 2012-02-08 19:57:50Z zacheiss $
*
* This file defines the query dispatch table
*
@@ -13,7 +13,7 @@
#include "mr_et.h"
-RCSID("$HeadURL: svn+ssh://svn.mit.edu/moira/trunk/moira/server/queries2.c $ $Id: queries2.c 4001 2010-04-21 20:38:45Z zacheiss $");
+RCSID("$HeadURL: svn+ssh://svn.mit.edu/moira/trunk/moira/server/queries2.c $ $Id: queries2.c 4072 2012-02-08 19:57:50Z zacheiss $");
/* VALOBJS
* These are commonly used validation objects, defined here so that they
@@ -5440,7 +5440,7 @@
USERS_TABLE,
0,
gurv_fields,
- 2,
+ 1,
0,
1,
NULL,