From 233fee2c2909effe7f05dd1570480c262f6c7724 Mon Sep 17 00:00:00 2001 From: alexhudson Date: Mon, 28 Jan 2008 18:53:06 +0000 Subject: [PATCH] Remove mdbtool and some last cruft --- Makefile.am | 7 - src/apps/mdbtool/Bongo.rules | 17 - src/apps/mdbtool/Makefile.am | 17 - src/apps/mdbtool/mdbtool.c | 1219 ---------------------------------- 4 files changed, 1260 deletions(-) delete mode 100644 src/apps/mdbtool/Bongo.rules delete mode 100644 src/apps/mdbtool/Makefile.am delete mode 100644 src/apps/mdbtool/mdbtool.c diff --git a/Makefile.am b/Makefile.am index 8b4ab8f..d16358b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -90,10 +90,6 @@ clean: clean-recursive # src/agents/mailprox # src/agents/rules -# src/libs/mdb -# src/libs/mdb-file -# src/libs/mdb-xldap - include_subdirs = \ include \ src/libs/xpl \ @@ -155,9 +151,6 @@ include src/libs/bongoutil/tests/Bongo.rules include src/libs/connio/Bongo.rules include src/libs/connio/tests/Bongo.rules include src/libs/json/Bongo.rules -#include src/libs/mdb/Bongo.rules -#include src/libs/mdb-file/Bongo.rules -#include src/libs/mdb-xldap/Bongo.rules include src/libs/logger/Bongo.rules include src/libs/streamio/Bongo.rules include src/libs/streamio/codec/Bongo.rules diff --git a/src/apps/mdbtool/Bongo.rules b/src/apps/mdbtool/Bongo.rules deleted file mode 100644 index aec81eb..0000000 --- a/src/apps/mdbtool/Bongo.rules +++ /dev/null @@ -1,17 +0,0 @@ -# -*- Makefile -*- -sbin_PROGRAMS += mdbtool - -mdbtool_SOURCES := \ - src/apps/mdbtool/mdbtool.c - -mdbtool_LDADD := \ - libbongomdb.la \ - libbongomemmgr.la \ - libbongoconnio.la \ - $(PTHREAD_LIBS) \ - $(ALL_LIBS) - -src/apps/mdbtool/all: mdbtool -src/apps/mdbtool/clean: clean -src/apps/mdbtool/install: - @cd $(top_builddir) && $(MAKE) $(MFLAGS) sbin_PROGRAMS=mdbtool install-sbinPROGRAMS diff --git a/src/apps/mdbtool/Makefile.am b/src/apps/mdbtool/Makefile.am deleted file mode 100644 index 8830401..0000000 --- a/src/apps/mdbtool/Makefile.am +++ /dev/null @@ -1,17 +0,0 @@ -# -*- Makefile -*- -# -# Do not edit! -# -# (unless this is Makefile.am.subdir) -# -# This file is a copy of the toplevel Makefile.am.subdir. If changes -# need to be made, edit that file, and make update-makefiles, and -# check the new files in. -# -# This is a skeletal automake file. The real automake fules for -# building the targets for this directory can be found in the -# Bongo.rules file. This file is simply here so that 'make all' can -# work in each subdirectory. - -all clean install: - @cd $(top_builddir) && $(MAKE) $(MFLAGS) $(subdir)/$@ diff --git a/src/apps/mdbtool/mdbtool.c b/src/apps/mdbtool/mdbtool.c deleted file mode 100644 index 4ca82d3..0000000 --- a/src/apps/mdbtool/mdbtool.c +++ /dev/null @@ -1,1219 +0,0 @@ -/**************************************************************************** - * - * Copyright (c) 2001 Novell, Inc. All Rights Reserved. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public License - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, contact Novell, Inc. - * - * To contact Novell about this file by physical or electronic mail, you - * may find current contact information at www.novell.com. - * - ****************************************************************************/ - -#include "config.h" -#include -#include -#include -#include -#include -#include -#include -#include - -#define EXT_USAGE_MSG "Usage: mdbtool [options] \n\n"\ -"Options:\n"\ -"-h, --help Display this message\n"\ -"-p, --password Password for authentication\n"\ -"-u, --username Username for authentication\n\n"\ -"Commands:\n"\ -"getbasedn\n"\ -"getattrs \n"\ -"getdnattrs \n"\ -"addattr \n"\ -"setattr \n"\ -"addobject [attr1=value1 attr2=...]\n"\ -"delobject [true|false]\n"\ -"listobjects \n"\ -"setpassword \n"\ -"verifypassword \n"\ -"isobject \n"\ -"defattr [opt1=val1 opt2=...]\n"\ -"defclass [opt1=val1 opt2=...]\n"\ -"defclassattr \n"\ -"delattrdef \n"\ -"delclassdef \n"\ -"grantobj [opt1=val1 opt2=...]\n"\ -"grantattr [opt1=val1 opt2=...]\n"\ -"gethostipaddr\n" - -struct dict { - void *next; - unsigned char *key; - unsigned char *value; -}; - -void DumpAttr(MDBHandle *handle, MDBValueStruct *vs, - const unsigned char *object); -BOOL GetBaseDN(MDBHandle *h); -BOOL GetAttr(MDBHandle *h, char **argv, int argc, int next_arg); -BOOL GetDnAttr(MDBHandle *h, char **argv, int argc, int next_arg); -BOOL AddAttr(MDBHandle *h, char **argv, int argc, int next_arg); -BOOL SetAttr(MDBHandle *h, char **argv, int argc, int next_arg); -BOOL AddObject(MDBHandle *h, char **argv, int argc, int next_arg); -BOOL IsObject(MDBHandle *h, char **argv, int argc, int next_arg); -BOOL ListObjects(MDBHandle *h, char **argv, int argc, int next_arg); -BOOL SetPassword(MDBHandle *h, char **argv, int argc, int next_arg); -BOOL VerifyPassword(MDBHandle *h, char **argv, int argc, int next_arg); -BOOL DelObject(MDBHandle *h, char **argv, int argc, int next_arg); -BOOL DefAttr(MDBHandle *h, char **argv, int argc, int next_arg); -BOOL DefClass(MDBHandle *h, char **argv, int argc, int next_arg); -BOOL DefClassAttr(MDBHandle *h, char **argv, int argc, int next_arg); -BOOL DelAttrDef(MDBHandle *h, char **argv, int argc, int next_arg); -BOOL DelClassDef(MDBHandle *h, char **argv, int argc, int next_arg); -BOOL GrantObj(MDBHandle *h, char **argv, int argc, int next_arg); -BOOL GrantAttr(MDBHandle *h, char **argv, int argc, int next_arg); -BOOL GetHostIpAddr(void); -struct dict *GetDict(char *list[], int items); -void FreeDict(struct dict *d); - -int -main(int argc, char *argv[]) -{ - char *command = NULL; - unsigned char *auth_username = NULL; - unsigned char *auth_password = NULL; - MDBHandle *h = NULL; - int next_arg = 1; - BOOL result = TRUE; - - /* parse options */ - while (next_arg < argc && argv[next_arg][0] == '-') { - if (!strcmp(argv[next_arg], "-h") || - !strcmp(argv[next_arg], "--help")) { - printf(EXT_USAGE_MSG); - return 1; - } else if (!strcmp(argv[next_arg], "-u") || - !strcmp(argv[next_arg], "--username")) { - if (next_arg + 1 < argc) { - auth_username = argv[++next_arg]; - } else { - printf("mdbtool: Username must follow --username flag.\n"); - return 1; - } - } else if (!strcmp(argv[next_arg], "-p") || - !strcmp(argv[next_arg], "--password")) { - if (next_arg + 1 < argc) { - auth_password = argv[++next_arg]; - } else { - printf("mdbtool: Password must follow --password flag.\n"); - return 1; - } - } else { - printf("mdbtool: Unrecognized option: %s\n", argv[next_arg]); - return 1; - } - - next_arg++; - } - - if (next_arg > (argc - 1)) { - printf("mdbtool: No command specified (--help for command list).\n"); - return 1; - } - - command = argv[next_arg++]; - - /* MDB-FILE uses the memory manager. Otherwise we don't need this. */ - if (!MemoryManagerOpen("mdbtool")) { - printf("ERROR: Could not initialize memory manager\n"); - return 2; - } - - if (!MDBInit()) { - printf("ERROR: Could not initialise MDB\n"); - MemoryManagerClose("mdbtool"); - return 2; - } - - h = MDBAuthenticate((unsigned char*) "Bongo", auth_username, auth_password); - - if (h == NULL) { - printf("ERROR: Could not authenticate to MDB\n"); - MDBShutdown(); - MemoryManagerClose("mdbtool"); - return 2; - } - - if (!strcmp(command, "getbasedn")) { - result = GetBaseDN(h); - } else if (!strcmp(command, "getattrs")) { - result = GetAttr(h, argv, argc, next_arg); - } else if (!strcmp(command, "getdnattrs")) { - result = GetDnAttr(h, argv, argc, next_arg); - } else if (!strcmp(command, "addattr")) { - result = AddAttr(h, argv, argc, next_arg); - } else if (!strcmp(command, "setattr")) { - result = SetAttr(h, argv, argc, next_arg); - } else if (!strcmp(command, "addobject")) { - result = AddObject(h, argv, argc, next_arg); - } else if (!strcmp(command, "delobject")) { - result = DelObject(h, argv, argc, next_arg); - } else if (!strcmp(command, "listobjects")) { - result = ListObjects(h, argv, argc, next_arg); - } else if (!strcmp(command, "setpassword")) { - result = SetPassword(h, argv, argc, next_arg); - } else if (!strcmp(command, "verifypassword")) { - result = VerifyPassword(h, argv, argc, next_arg); - } else if (!strcmp(command, "isobject")) { - result = IsObject(h, argv, argc, next_arg); - } else if (!strcmp(command, "defattr")) { - result = DefAttr(h, argv, argc, next_arg); - } else if (!strcmp(command, "defclass")) { - result = DefClass(h, argv, argc, next_arg); - } else if (!strcmp(command, "defclassattr")) { - result = DefClassAttr(h, argv, argc, next_arg); - } else if (!strcmp(command, "delattrdef")) { - result = DelAttrDef(h, argv, argc, next_arg); - } else if (!strcmp(command, "delclassdef")) { - result = DelClassDef(h, argv, argc, next_arg); - } else if (!strcmp(command, "grantobj")) { - result = GrantObj(h, argv, argc, next_arg); - } else if (!strcmp(command, "grantattr")) { - result = GrantAttr(h, argv, argc, next_arg); - } else if (!strcmp(command, "gethostipaddr")) { - result = GetHostIpAddr(); - } else { - printf("mdbtool: Unknown command: %s\n", command); - result = FALSE; - } - - MDBRelease(h); - MDBShutdown(); - MemoryManagerClose("mdbtool"); - return (result == FALSE); -} - -BOOL -GetBaseDN(MDBHandle *h) -{ - MDBValueStruct *vs = NULL; - BOOL result = TRUE; - - if ((vs = MDBCreateValueStruct(h, NULL))) { - printf("%s\n", MDBGetBaseDN(vs)); - MDBDestroyValueStruct(vs); - result = TRUE; - } else { - printf("ERROR: Could not allocate MDB resources.\n"); - result = FALSE; - } - - return result; -} - -BOOL -GetAttr(MDBHandle *h, char **argv, int argc, int next_arg) -{ - unsigned char *object = NULL; - unsigned char *attrname = NULL; - MDBValueStruct *vs = NULL; - int i, l; - BOOL result = TRUE; - - if (next_arg > (argc - 2)) { - printf("Usage: mdbtool getattrs \n"); - return FALSE; - } - - object = (unsigned char *) argv[next_arg++]; - attrname = (unsigned char *) argv[next_arg++]; - - if ((vs = MDBCreateValueStruct(h, NULL))) { - if ((l = MDBRead(object, attrname, vs))) { - for (i = 0; i < l; i++) { - printf ("%s\n", vs->Value[i]); - } - } else { - printf("mdbtool: Could not retrieve value or attribute does not " - "exist.\n"); - result = FALSE; - } - - MDBDestroyValueStruct(vs); - } else { - printf("ERROR: Could not allocate MDB resources.\n"); - result = FALSE; - } - - return result; -} - -BOOL -GetDnAttr(MDBHandle *h, char **argv, int argc, int next_arg) -{ - unsigned char *object = NULL; - unsigned char *attrname = NULL; - MDBValueStruct *vs = NULL; - int i, l; - BOOL result = TRUE; - - if (next_arg > (argc - 2)) { - printf("Usage: mdbtool getdnattrs \n"); - return FALSE; - } - - object = (unsigned char *) argv[next_arg++]; - attrname = (unsigned char *) argv[next_arg++]; - - if ((vs = MDBCreateValueStruct(h, NULL))) { - if ((l = MDBReadDN(object, attrname, vs))) { - for (i = 0; i < l; i++) { - printf ("%s\n", vs->Value[i]); - } - } else { - printf("mdbtool: Could not retrieve value or attribute does not " - "exist.\n"); - result = FALSE; - } - - MDBDestroyValueStruct(vs); - } else { - printf("ERROR: Could not allocate MDB resources.\n"); - result = FALSE; - } - - return result; -} - -BOOL -AddAttr(MDBHandle *h, char **argv, int argc, int next_arg) -{ - char *object = NULL; - char *attrname = NULL; - char *value = NULL; - MDBValueStruct *vs; - BOOL result = TRUE; - - if (next_arg > (argc - 3)) { - printf("Usage: mdbtool addattr \n"); - return FALSE; - } - - object = (unsigned char *) argv[next_arg++]; - attrname = (unsigned char *) argv[next_arg++]; - value = (unsigned char *) argv[next_arg++]; - - if ((vs = MDBCreateValueStruct(h, NULL))) { - if (strchr(value, '\\')) { - result = MDBAddDN(object, attrname, value, vs); - } else { - result = MDBAdd(object, attrname, value, vs); - } - - if (!result) { - printf("mdbtool: Could not add attribute value.\n"); - } - - MDBDestroyValueStruct(vs); - } else { - printf("ERROR: Could not allocate MDB resources.\n"); - result = FALSE; - } - - return result; -} - -BOOL -SetAttr(MDBHandle *h, char **argv, int argc, int next_arg) -{ - unsigned char *object = NULL; - unsigned char *attrname = NULL; - unsigned char *value = NULL; - MDBValueStruct *vs = NULL; - BOOL result = TRUE; - - if (next_arg > (argc - 3)) { - printf("Usage: mdbtool setattr \n"); - return FALSE; - } - - object = (unsigned char *) argv[next_arg++]; - attrname = (unsigned char *) argv[next_arg++]; - value = (unsigned char *) argv[next_arg++]; - - if ((vs = MDBCreateValueStruct(h, NULL))) { - if (MDBAddValue(value, vs)) { - if (strchr(value, '\\')) { - result = MDBWriteDN(object, attrname, vs); - } else { - result = MDBWrite(object, attrname, vs); - } - } - - if (!result) { - printf("mdbtool: Could not set attribute value.\n"); - } - - MDBDestroyValueStruct(vs); - } else { - printf("ERROR: Could not allocate MDB resources.\n"); - result = FALSE; - } - - return result; -} - -BOOL -AddObject(MDBHandle *h, char **argv, int argc, int next_arg) -{ - unsigned char *object = NULL; - unsigned char *class = NULL; - struct dict *attrs = NULL; - struct dict *attr = NULL; - MDBValueStruct *attvs = NULL; - MDBValueStruct *valvs = NULL; - MDBValueStruct *vs = NULL; - BOOL result = TRUE; - - if (next_arg > (argc - 2)) { - printf("Usage: mdbtool addobject [attr1=value1 " - "attr2=...]\n"); - return FALSE; - } - - object = (unsigned char *) argv[next_arg++]; - class = (unsigned char *) argv[next_arg++]; - attrs = GetDict(&argv[next_arg], argc - next_arg); - attr = attrs; - - attvs = MDBCreateValueStruct(h, NULL); - valvs = MDBCreateValueStruct(h, NULL); - vs = MDBCreateValueStruct(h, NULL); - - if (attvs && valvs && vs) { - while (attr) { - if (attr->key && attr->value) { - if (strchr(attr->value, '\\')) { - MDBAddDNAttribute(attr->key, attr->value, attvs, valvs); - } else { - MDBAddStringAttribute(attr->key, attr->value, attvs, valvs); - } - } - - /* Not sure how to check for errors with the above macros - if (!result) { - printf("ERROR: Could not add attribute.\n"); - break; - } - */ - - attr = attr->next; - } - - if (result) { - result = MDBCreateObject(object, class, attvs, valvs, vs); - - if (!result) { - printf("mdbtool: Could not create object.\n"); - } - } - - MDBDestroyValueStruct(vs); - MDBDestroyValueStruct(valvs); - MDBDestroyValueStruct(attvs); - } else { - printf("ERROR: Could not allocate MDB resources.\n"); - result = FALSE; - } - - FreeDict(attrs); - return result; -} - -BOOL -SetPassword(MDBHandle *h, char **argv, int argc, int next_arg) -{ - unsigned char *object = NULL; - unsigned char *password = NULL; - unsigned char *arg_ptr = NULL; - int next_char = 0; - int char_count = 0; - MDBValueStruct *vs = NULL; - BOOL result = TRUE; - FILE *pwfile = NULL; - - if (next_arg > (argc - 2)) { - printf("Usage: mdbtool setpassword \n"); - return FALSE; - } - - object = (unsigned char *) argv[next_arg++]; - arg_ptr = (unsigned char *) argv[next_arg++]; - - if (!strcmp(arg_ptr, "-f") && next_arg < argc) { - arg_ptr = (unsigned char *) argv[next_arg++]; - - if ((pwfile = fopen(arg_ptr, "r"))) { - if ((password = malloc(128))) { - while ((next_char = fgetc(pwfile)) != EOF && char_count < 128) { - password[char_count++] = next_char; - } - - if (next_char != EOF) { - printf("ERROR: Password file too long (128 bytes max).\n"); - result = FALSE; - } - } else { - printf("ERROR: Could not allocate memory for password.\n"); - result = FALSE; - } - - fclose(pwfile); - } else { - printf("ERROR: Could not open password file.\n"); - result = FALSE; - } - } else { - password = arg_ptr; - arg_ptr = NULL; - } - - if (result) { - if ((vs = MDBCreateValueStruct(h, NULL))) { - result = MDBChangePasswordEx(object, NULL, password, vs); - - if (!result) { - printf("mdbtool: Could not set password.\n"); - } - - MDBDestroyValueStruct(vs); - } else { - printf("ERROR: Could not allocate MDB resources.\n"); - result = FALSE; - } - } - - if (arg_ptr && password) { - free(password); - } - - return result; -} - -BOOL -VerifyPassword(MDBHandle *h, char **argv, int argc, int next_arg) -{ - unsigned char *object = NULL; - unsigned char *password = NULL; - MDBValueStruct *vs = NULL; - BOOL result = TRUE; - - if (next_arg > (argc - 2)) { - printf("Usage: mdbtool verifypassword \n"); - return FALSE; - } - - object = (unsigned char *) argv[next_arg++]; - password = (unsigned char *) argv[next_arg++]; - - if ((vs = MDBCreateValueStruct(h, NULL))) { - if (!(result = MDBVerifyPassword(object, password, vs))) { - printf("Could not verify password.\n"); - } - - MDBDestroyValueStruct(vs); - } else { - printf("ERROR: Could not allocate MDB resources.\n"); - result = FALSE; - } - - return result; -} - -BOOL -IsObject(MDBHandle *h, char **argv, int argc, int next_arg) -{ - unsigned char *object = NULL; - MDBValueStruct *vs = NULL; - BOOL result = TRUE; - - if (next_arg > (argc - 1)) { - printf("Usage: mdbtool isobject \n"); - return FALSE; - } - - object = (unsigned char *) argv[next_arg++]; - - if ((vs = MDBCreateValueStruct(h, NULL))) { - if (MDBIsObject(object, vs)) { - printf("%s\n", object); - } - - MDBDestroyValueStruct(vs); - } else { - printf("ERROR: Could not allocate MDB resources.\n"); - result = FALSE; - } - - return result; -} - -BOOL -DelObject(MDBHandle *h, char **argv, int argc, int next_arg) -{ - unsigned char *object = NULL; - unsigned char *rec_arg = NULL; - MDBValueStruct *vs = NULL; - BOOL recursive = FALSE; - BOOL result = TRUE; - - if (next_arg > (argc - 1)) { - printf("Usage: mdbtool delobject [true|false]\n"); - return FALSE; - } - - object = (unsigned char *) argv[next_arg++]; - - if (next_arg < argc) { - rec_arg = (unsigned char *) argv[next_arg++]; - - if (!strcasecmp(rec_arg, "true")) { - recursive = TRUE; - } else if (strcasecmp(rec_arg, "false")) { - printf("mdbtool: Unrecognized option: %s\n", rec_arg); - result = FALSE; - } - } - - if (result) { - if ((vs = MDBCreateValueStruct(h, NULL))) { - result = MDBDeleteObject(object, recursive, vs); - - if (!result) { - printf("mdbtool: Could not delete object\n"); - } - - MDBDestroyValueStruct(vs); - } else { - printf("ERROR: Could not allocate MDB resources.\n"); - result = FALSE; - } - } - - return result; -} - -BOOL -ListObjects(MDBHandle *h, char **argv, int argc, int next_arg) -{ - unsigned char *object = NULL; - MDBValueStruct *vs = NULL; - BOOL result = TRUE; - int i, count; - - if (next_arg > (argc - 1)) { - printf("Usage: mdbtool listobjects \n"); - return FALSE; - } - - object = (unsigned char *) argv[next_arg++]; - - if ((vs = MDBCreateValueStruct(h, NULL))) { - if (count = MDBEnumerateObjects(object, NULL, NULL, vs)) { - for (i = 0; i < count; i++) { - printf("%s\n", vs->Value[i]); - } - } - - MDBDestroyValueStruct(vs); - } else { - printf("ERROR: Could not allocate MDB resources.\n"); - result = FALSE; - } - - return result; -} - -BOOL -DefAttr(MDBHandle *h, char **argv, int argc, int next_arg) -{ - unsigned char *attrname = NULL; - unsigned char *asn1 = NULL; - unsigned long type = MDB_ATTR_SYN_STRING; - BOOL single = FALSE; - BOOL sync = FALSE; - BOOL public = FALSE; - MDBValueStruct *vs = NULL; - struct dict *attrs = NULL; - struct dict *attr = NULL; - BOOL result = TRUE; - - if (next_arg > (argc - 2)) { - printf("Usage: mdbtool defattr [opt1=val1 " - "opt2=...]\n"); - return FALSE; - } - - attrname = (unsigned char *) argv[next_arg++]; - asn1 = (unsigned char *) argv[next_arg++]; - attrs = GetDict(&argv[next_arg], argc - next_arg); - attr = attrs; - - while (result && attr) { - if (attr->key && attr->value) { - if (!strcmp(attr->key, "type")) { - if (!strcasecmp(attr->value, "dn")) { - type = MDB_ATTR_SYN_DIST_NAME; - } else if (strcasecmp(attr->value, "string")) { - printf("mdbtool: Option 'type' invalid (must be 'string' " - "or 'dn').\n"); - result = FALSE; - } - } else if (!strcmp(attr->key, "singleval")) { - if (!strcasecmp(attr->value, "true")) { - single = TRUE; - } else if (strcasecmp(attr->value, "false")) { - printf("mdbtool: Option 'singleval' invalid (must be " - "'true' or 'false').\n"); - result = FALSE; - } - } else if (!strcmp(attr->key, "immsync")) { - if (!strcasecmp(attr->value, "true")) { - sync = TRUE; - } else if (strcasecmp(attr->value, "false")) { - printf("mdbtool: Option 'immsync' invalid (must be 'true' " - "or 'false').\n"); - result = FALSE; - } - } else if (!strcmp(attr->key, "public")) { - if (!strcasecmp(attr->value, "true")) { - public = TRUE; - } else if (strcasecmp(attr->value, "false")) { - printf("mdbtool: Option 'public' invalid (must be 'true' " - "or 'false').\n"); - result = FALSE; - } - } else { - printf("mdbtool: Unsupported option '%s'\n", attr->key); - result = FALSE; - } - } - - attr = attr->next; - } - - if (result) { - if ((vs = MDBCreateValueStruct(h, NULL))) { - result = MDBDefineAttribute(attrname, asn1, type, single, sync, - public, vs); - - if (!result) { - printf("mdbtool: Could not define attribute.\n"); - } - - MDBDestroyValueStruct(vs); - } else { - printf("ERROR: Could not allocate MDB resources.\n"); - result = FALSE; - } - } - - FreeDict(attrs); - return result; -} - -BOOL -DefClass(MDBHandle *h, char **argv, int argc, int next_arg) -{ - unsigned char *classname = NULL; - unsigned char *asn1 = NULL; - //unsigned char *superclass = NULL; - unsigned char *naming = NULL; - BOOL container = FALSE; - struct dict *attrs = NULL; - struct dict *attr = NULL; - MDBValueStruct *vs = NULL; - MDBValueStruct *supervs = NULL; - MDBValueStruct *contvs = NULL; - MDBValueStruct *namvs = NULL; - MDBValueStruct *mandvs = NULL; - MDBValueStruct *optvs = NULL; - BOOL result = TRUE; - char *nptr = NULL; - char *tptr = NULL; - - if (next_arg > (argc - 2)) { - printf("Usage: mdbtool defclass [opt1=val1 " - "opt2=...]\n"); - return FALSE; - } - - classname = (unsigned char *) argv[next_arg++]; - asn1 = (unsigned char *) argv[next_arg++]; - attrs = GetDict(&argv[next_arg], argc - next_arg); - attr = attrs; - - vs = MDBCreateValueStruct(h, NULL); - supervs = MDBCreateValueStruct(h, NULL); - contvs = MDBCreateValueStruct(h, NULL); - namvs = MDBCreateValueStruct(h, NULL); - mandvs = MDBCreateValueStruct(h, NULL); - optvs = MDBCreateValueStruct(h, NULL); - - if (vs && supervs && contvs && namvs && mandvs && optvs) { - while (result && attr) { - if (attr->key && attr->value) { - if (!strcmp(attr->key, "container")) { - if (!strcasecmp(attr->value, "true")) { - container = TRUE; - } else if (strcasecmp(attr->value, "false")) { - printf("mdbtool: Option 'container' invalid (must be " - "'true' or 'false').\n"); - result = FALSE; - } - } else if (!strcmp(attr->key, "superclasses")) { - nptr = attr->value; - tptr = attr->value; - - while (result && (nptr = strchr(nptr, ','))) { - *nptr++ = '\0'; - result = MDBAddValue(tptr, supervs); - tptr = nptr; - } - - result = MDBAddValue(tptr, supervs); - } else if (!strcmp(attr->key, "containers")) { - nptr = attr->value; - tptr = attr->value; - - while (result && (nptr = strchr(nptr, ','))) { - *nptr++ = '\0'; - result = MDBAddValue(tptr, contvs); - tptr = nptr; - } - - result = MDBAddValue(tptr, contvs); - } else if (!strcmp(attr->key, "naming")) { - naming = attr->value; - } else if (!strcmp(attr->key, "requires")) { - nptr = attr->value; - tptr = attr->value; - - while (result && (nptr = strchr(nptr, ','))) { - *nptr++ = '\0'; - result = MDBAddValue(tptr, mandvs); - tptr = nptr; - } - - result = MDBAddValue(tptr, mandvs); - } else if (!strcmp(attr->key, "allows")) { - nptr = attr->value; - tptr = attr->value; - - while (result && (nptr = strchr(nptr, ','))) { - *nptr++ = '\0'; - result = MDBAddValue(tptr, optvs); - tptr = nptr; - } - - result = MDBAddValue(tptr, optvs); - } else { - printf("mdbtool: Unknown option: %s\n", attr->key); - result = FALSE; - } - - attr = attr->next; - } - } - - if (result) { - //if (superclass) { - if (supervs->Used > 0) { - //result = MDBAddValue(superclass, supervs); - - if (result && naming) { - result = MDBAddValue(naming, namvs); - } - - if (result) { - result = MDBDefineClass(classname, asn1, container, - supervs, contvs, namvs, mandvs, optvs, vs); - - if (!result) { - printf("mdbtool: Could not define class.\n"); - } - } else { - printf("ERROR: Could not add definition data.\n"); - } - } else { - printf("mdbtool: Option 'superclasses' is required.\n"); - result = FALSE; - } - } - - MDBDestroyValueStruct(supervs); - MDBDestroyValueStruct(contvs); - MDBDestroyValueStruct(namvs); - MDBDestroyValueStruct(mandvs); - MDBDestroyValueStruct(optvs); - } else { - printf("ERROR: Could not allocate MDB resources.\n"); - result = FALSE; - } - - FreeDict(attrs); - return result; -} - -BOOL -DefClassAttr(MDBHandle *h, char **argv, int argc, int next_arg) -{ - unsigned char *classname = NULL; - unsigned char *attrname = NULL; - MDBValueStruct *vs = NULL; - BOOL result = TRUE; - - if (next_arg > (argc - 2)) { - printf("Usage: mdbtool defclassattr \n"); - return FALSE; - } - - classname = (unsigned char *) argv[next_arg++]; - attrname = (unsigned char *) argv[next_arg++]; - - if ((vs = MDBCreateValueStruct(h, NULL))) { - result = MDBAddAttribute(attrname, classname, vs); - - if (!result) { - printf("mdbtool: Could not add attribute to class.\n"); - } - - MDBDestroyValueStruct(vs); - } else { - printf("ERROR: Could not allocate MDB resources.\n"); - result = FALSE; - } - - return result; -} - -BOOL -DelAttrDef(MDBHandle *h, char **argv, int argc, int next_arg) -{ - unsigned char *attrname = NULL; - MDBValueStruct *vs = NULL; - BOOL result = TRUE; - - if (next_arg > (argc - 1)) { - printf("Usage: mdbtool delattrdef \n"); - return FALSE; - } - - attrname = (unsigned char *) argv[next_arg++]; - - if ((vs = MDBCreateValueStruct(h, NULL))) { - result = MDBUndefineAttribute(attrname, vs); - - if (!result) { - printf("mdbtool: Could not remove attribute definition.\n"); - } - - MDBDestroyValueStruct(vs); - } else { - printf("ERROR: Could not allocate MDB resources.\n"); - result = FALSE; - } - - return result; -} - -BOOL -DelClassDef(MDBHandle *h, char **argv, int argc, int next_arg) -{ - unsigned char *classname = NULL; - MDBValueStruct *vs = NULL; - BOOL result = TRUE; - - if (next_arg > (argc - 1)) { - printf("Usage: mdbtool delclassdef \n"); - return FALSE; - } - - classname = (unsigned char *) argv[next_arg++]; - - if ((vs = MDBCreateValueStruct(h, NULL))) { - result = MDBUndefineClass(classname, vs); - - if (!result) { - printf("mdbtool: Could not remove class definition.\n"); - } - - MDBDestroyValueStruct(vs); - } else { - printf("ERROR: Could not allocate MDB resources.\n"); - result = FALSE; - } - - return result; -} - -BOOL -GrantObj(MDBHandle *h, char **argv, int argc, int next_arg) -{ - unsigned char *object = NULL; - unsigned char *trustee = NULL; - BOOL read = FALSE; - BOOL write = FALSE; - BOOL delete = FALSE; - BOOL rename = FALSE; - BOOL admin = FALSE; - MDBValueStruct *vs = NULL; - struct dict *attrs = NULL; - struct dict *attr = NULL; - BOOL result = TRUE; - - if (next_arg > (argc - 2)) { - printf("Usage mdbtool grantobj [opt1=val1 " - "opt2=...]\n"); - return FALSE; - } - - object = (unsigned char *) argv[next_arg++]; - trustee = (unsigned char *) argv[next_arg++]; - - attrs = GetDict(&argv[next_arg], argc - next_arg); - attr = attrs; - - while (result && attr) { - if (attr->key && attr->value) { - if (!strcmp(attr->key, "read")) { - if (!strcasecmp(attr->value, "true")) { - read = TRUE; - } else if (strcasecmp(attr->value, "false")) { - printf("mdbtool: Option 'read' invalid (must be 'true' " - "or 'false').\n"); - result = FALSE; - } - } else if (!strcmp(attr->key, "write")) { - if (!strcasecmp(attr->value, "true")) { - write = TRUE; - } else if (strcasecmp(attr->value, "false")) { - printf("mdbtool: Option 'write' invalid (must be 'true' " - "or 'false').\n"); - result = FALSE; - } - } else if (!strcmp(attr->key, "delete")) { - if (!strcasecmp(attr->value, "true")) { - delete = TRUE; - } else if (strcasecmp(attr->value, "false")) { - printf("mdbtool: Option 'delete' invalid (must be 'true' " - "or 'false').\n"); - result = FALSE; - } - } else if (!strcmp(attr->key, "rename")) { - if (!strcasecmp(attr->value, "true")) { - rename = TRUE; - } else if (strcasecmp(attr->value, "false")) { - printf("mdbtool: Option 'rename' invalid (must be 'true' " - "or 'false').\n"); - result = FALSE; - } - } else if (!strcmp(attr->key, "admin")) { - if (!strcasecmp(attr->value, "true")) { - admin = TRUE; - } else if (strcasecmp(attr->value, "false")) { - printf("mdbtool: Option 'admin' invalid (must be 'true' " - "or 'false').\n"); - result = FALSE; - } - } else { - printf("mdbtool: Unknown option: %s\n", attr->key); - result = FALSE; - } - } - - attr = attr->next; - } - - if (result) { - if ((vs = MDBCreateValueStruct(h, NULL))) { - result = MDBGrantObjectRights(object, trustee, read, write, - delete, rename, admin, vs); - - if (!result) { - printf("mdbtool: Could not grant access rights.\n"); - } - } else { - printf("ERROR: Could not allocate MDB resources.\n"); - result = FALSE; - } - } - - FreeDict(attrs); - return result; -} - -BOOL -GrantAttr(MDBHandle *h, char **argv, int argc, int next_arg) -{ - unsigned char *object = NULL; - unsigned char *attrname = NULL; - unsigned char *trustee = NULL; - BOOL read = FALSE; - BOOL write = FALSE; - BOOL admin = FALSE; - MDBValueStruct *vs = NULL; - struct dict *attrs = NULL; - struct dict *attr = NULL; - BOOL result = TRUE; - - if (next_arg > (argc - 3)) { - printf("Usage mdbtool grantattr " - "[opt1=val1 opt2=...]\n"); - return FALSE; - } - - object = (unsigned char *) argv[next_arg++]; - attrname = (unsigned char *) argv[next_arg++]; - trustee = (unsigned char *) argv[next_arg++]; - - /* Requires quotes or an escape char on the command line */ - if (!strcmp(attrname, "*")) { - attrname = NULL; - } - - attrs = GetDict(&argv[next_arg], argc - next_arg); - attr = attrs; - - while (result && attr) { - if (attr->key && attr->value) { - if (!strcmp(attr->key, "read")) { - if (!strcasecmp(attr->value, "true")) { - read = TRUE; - } else if (strcasecmp(attr->value, "false")) { - printf("mdbtool: Option 'read' invalid (must be 'true' " - "or 'false').\n"); - result = FALSE; - } - } else if (!strcmp(attr->key, "write")) { - if (!strcasecmp(attr->value, "true")) { - write = TRUE; - } else if (strcasecmp(attr->value, "false")) { - printf("mdbtool: Option 'write' invalid (must be 'true' " - "or 'false').\n"); - result = FALSE; - } - } else if (!strcmp(attr->key, "admin")) { - if (!strcasecmp(attr->value, "true")) { - admin = TRUE; - } else if (strcasecmp(attr->value, "false")) { - printf("mdbtool: Option 'admin' invalid (must be 'true' " - "or 'false').\n"); - result = FALSE; - } - } else { - printf("mdbtool: Unknown option: %s\n", attr->key); - result = FALSE; - } - } - - attr = attr->next; - } - - if (result) { - if ((vs = MDBCreateValueStruct(h, NULL))) { - result = MDBGrantAttributeRights(object, attrname, trustee, read, - write, admin, vs); - - if (!result) { - printf("mdbtool: Could not grant access rights.\n"); - } - } else { - printf("ERROR: Could not allocate MDB resources.\n"); - result = FALSE; - } - } - - FreeDict(attrs); - return result; -} - -BOOL -GetHostIpAddr(void) -{ - struct in_addr addr; - - /* Maybe this shouldn't be in mdbtool, but bongosetup needs access to - the XplGetHostIPAddress() function for consistency with msgapi */ - addr.s_addr = XplGetHostIPAddress(); - printf("%d.%d.%d.%d\n", addr.s_net, addr.s_host, addr.s_lh, addr.s_impno); - - return TRUE; -} - -struct dict * -GetDict(char *list[], int items) -{ - struct dict *d; - char *item; - - if (items == 0) { - return NULL; - } - - item = list[0]; - - d = malloc(sizeof(struct dict)); - d->key = (unsigned char *) item; - d->value = (unsigned char *) strchr(item, '='); - *d->value = 0; - d->value++; - d->next = GetDict(&list[1], items - 1); - - return d; -} - -void -FreeDict(struct dict *d) -{ - struct dict *tmp; - - while (d != NULL) { - tmp = d; - d = d->next; - free(tmp); - } -} - -/* broken vv */ -void -DumpAttr(MDBHandle *handle, MDBValueStruct *vs, const unsigned char *object) -{ - /* MDBEnumStruct *e; */ - MDBValueStruct *v; - const unsigned char *attr = NULL; - - v = MDBCreateValueStruct(handle, object); - /*attr = MDBEnumerateAttributesEx(object, vs); FIXME: API */ - while(attr != NULL) { - long l = MDBRead(object, attr, v); - if (l != 0) { - long i; - for (i=0; iValue[i]); - } - } - /*attr = MDBEnumerateAttributesEx(object, vs);*/ - } - - MDBDestroyValueStruct(v); -}