From 34e8a50e5a71ab0d31bd0c5375a84d3b3ecf61e9 Mon Sep 17 00:00:00 2001 From: Andreas Schneider Date: Thu, 27 Jan 2011 18:06:16 +0100 Subject: s3-util: Moved eventlog_add_source to admin util. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This function is only used in the admin util. Signed-off-by: Günther Deschner --- source3/registry/reg_eventlog.c | 201 ---------------------------------------- source3/registry/reg_eventlog.h | 2 - 2 files changed, 203 deletions(-) (limited to 'source3/registry') diff --git a/source3/registry/reg_eventlog.c b/source3/registry/reg_eventlog.c index 6bedf4635e..74b3ed43b7 100644 --- a/source3/registry/reg_eventlog.c +++ b/source3/registry/reg_eventlog.c @@ -184,204 +184,3 @@ bool eventlog_init_keys(void) return true; } - -/********************************************************************* - for an eventlog, add in a source name. If the eventlog doesn't - exist (not in the list) do nothing. If a source for the log - already exists, change the information (remove, replace) -*********************************************************************/ - -bool eventlog_add_source( const char *eventlog, const char *sourcename, - const char *messagefile ) -{ - /* Find all of the eventlogs, add keys for each of them */ - /* need to add to the value KEY_EVENTLOG//Sources string (Creating if necessary) - need to add KEY of source to KEY_EVENTLOG// */ - - const char **elogs = lp_eventlog_list( ); - const char **wrklist, **wp; - char *evtlogpath = NULL; - struct regsubkey_ctr *subkeys; - struct regval_ctr *values; - struct regval_blob *rval; - int ii = 0; - bool already_in; - int i; - int numsources = 0; - TALLOC_CTX *ctx = talloc_tos(); - WERROR werr; - DATA_BLOB blob; - - if (!elogs) { - return False; - } - - for ( i = 0; elogs[i]; i++ ) { - if ( strequal( elogs[i], eventlog ) ) - break; - } - - if ( !elogs[i] ) { - DEBUG( 0, - ( "Eventlog [%s] not found in list of valid event logs\n", - eventlog ) ); - return false; /* invalid named passed in */ - } - - /* have to assume that the evenlog key itself exists at this point */ - /* add in a key of [sourcename] under the eventlog key */ - - /* todo add to Sources */ - - werr = regval_ctr_init(ctx, &values); - if(!W_ERROR_IS_OK(werr)) { - DEBUG( 0, ( "talloc() failure!\n" )); - return false; - } - - evtlogpath = talloc_asprintf(ctx, "%s\\%s", KEY_EVENTLOG, eventlog); - if (!evtlogpath) { - TALLOC_FREE(values); - return false; - } - - regdb_fetch_values( evtlogpath, values ); - - - if ( !( rval = regval_ctr_getvalue( values, "Sources" ) ) ) { - DEBUG( 0, ( "No Sources value for [%s]!\n", eventlog ) ); - return False; - } - /* perhaps this adding a new string to a multi_sz should be a fn? */ - /* check to see if it's there already */ - - if ( regval_type(rval) != REG_MULTI_SZ ) { - DEBUG( 0, - ( "Wrong type for Sources, should be REG_MULTI_SZ\n" ) ); - return False; - } - /* convert to a 'regulah' chars to do some comparisons */ - - already_in = False; - wrklist = NULL; - dump_data(1, regval_data_p(rval), regval_size(rval)); - - blob = data_blob_const(regval_data_p(rval), regval_size(rval)); - if (!pull_reg_multi_sz(talloc_tos(), &blob, &wrklist)) { - return false; - } - - for (ii=0; wrklist[ii]; ii++) { - numsources++; - } - - if (numsources > 0) { - /* see if it's in there already */ - wp = wrklist; - - while (wp && *wp ) { - if ( strequal( *wp, sourcename ) ) { - DEBUG( 5, - ( "Source name [%s] already in list for [%s] \n", - sourcename, eventlog ) ); - already_in = True; - break; - } - wp++; - } - } else { - DEBUG( 3, - ( "Nothing in the sources list, this might be a problem\n" ) ); - } - - wp = wrklist; - - if ( !already_in ) { - /* make a new list with an additional entry; copy values, add another */ - wp = TALLOC_ARRAY(ctx, const char *, numsources + 2 ); - - if ( !wp ) { - DEBUG( 0, ( "talloc() failed \n" ) ); - return False; - } - memcpy( wp, wrklist, sizeof( char * ) * numsources ); - *( wp + numsources ) = ( char * ) sourcename; - *( wp + numsources + 1 ) = NULL; - if (!push_reg_multi_sz(ctx, &blob, wp)) { - return false; - } - dump_data( 1, blob.data, blob.length); - regval_ctr_addvalue( values, "Sources", REG_MULTI_SZ, - blob.data, blob.length); - regdb_store_values( evtlogpath, values ); - data_blob_free(&blob); - } else { - DEBUG( 3, - ( "Source name [%s] found in existing list of sources\n", - sourcename ) ); - } - TALLOC_FREE(values); - TALLOC_FREE(wrklist); /* */ - - werr = regsubkey_ctr_init(ctx, &subkeys); - if (!W_ERROR_IS_OK(werr)) { - DEBUG( 0, ( "talloc() failure!\n" ) ); - return False; - } - TALLOC_FREE(evtlogpath); - evtlogpath = talloc_asprintf(ctx, "%s\\%s", KEY_EVENTLOG, eventlog ); - if (!evtlogpath) { - TALLOC_FREE(subkeys); - return false; - } - - regdb_fetch_keys( evtlogpath, subkeys ); - - if ( !regsubkey_ctr_key_exists( subkeys, sourcename ) ) { - DEBUG( 5, - ( " Source name [%s] for eventlog [%s] didn't exist, adding \n", - sourcename, eventlog ) ); - regsubkey_ctr_addkey( subkeys, sourcename ); - if ( !regdb_store_keys( evtlogpath, subkeys ) ) - return False; - } - TALLOC_FREE(subkeys); - - /* at this point KEY_EVENTLOG// key is in there. Now need to add EventMessageFile */ - - /* now allocate room for the source's subkeys */ - - werr = regsubkey_ctr_init(ctx, &subkeys); - if (!W_ERROR_IS_OK(werr)) { - DEBUG( 0, ( "talloc() failure!\n" ) ); - return False; - } - TALLOC_FREE(evtlogpath); - evtlogpath = talloc_asprintf(ctx, "%s\\%s\\%s", - KEY_EVENTLOG, eventlog, sourcename); - if (!evtlogpath) { - TALLOC_FREE(subkeys); - return false; - } - - regdb_fetch_keys( evtlogpath, subkeys ); - - /* now add the values to the KEY_EVENTLOG/Application form key */ - werr = regval_ctr_init(ctx, &values); - if (!W_ERROR_IS_OK(werr)) { - DEBUG( 0, ( "talloc() failure!\n" ) ); - return False; - } - DEBUG( 5, - ( "Storing EventMessageFile [%s] to eventlog path of [%s]\n", - messagefile, evtlogpath ) ); - - regdb_fetch_values( evtlogpath, values ); - - regval_ctr_addvalue_sz(values, "EventMessageFile", messagefile); - regdb_store_values( evtlogpath, values ); - - TALLOC_FREE(values); - - return True; -} diff --git a/source3/registry/reg_eventlog.h b/source3/registry/reg_eventlog.h index 69f2f99aad..d4e13c73ee 100644 --- a/source3/registry/reg_eventlog.h +++ b/source3/registry/reg_eventlog.h @@ -23,7 +23,5 @@ #define _REG_EVENTLOG_H bool eventlog_init_keys(void); -bool eventlog_add_source( const char *eventlog, const char *sourcename, - const char *messagefile ); #endif /* _REG_EVENTLOG_H */ -- cgit