X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=common-src%2Famxml.c;h=28b88aeea27b57fdc424913c7f05dfbe42a5959b;hb=cd0b924f27312d57bd42f6c4fae2b795139e2d0b;hp=bf7195ac51b885b012e2d54713959cd82036f1f2;hpb=011a59f5a54864108a16af570a6b287410597cc2;p=debian%2Famanda diff --git a/common-src/amxml.c b/common-src/amxml.c index bf7195a..28b88ae 100644 --- a/common-src/amxml.c +++ b/common-src/amxml.c @@ -94,6 +94,7 @@ free_dle( amfree(dle->srv_decrypt_opt); amfree(dle->clnt_decrypt_opt); amfree(dle->auth); + amfree(dle->application_client_name); free_sl(dle->exclude_file); free_sl(dle->exclude_list); free_sl(dle->include_file); @@ -114,6 +115,7 @@ free_script_data( script_t *script) { amfree(script->plugin); + amfree(script->client_name); if (script->property) g_hash_table_destroy(script->property); } @@ -151,6 +153,7 @@ init_dle( dle->scriptlist = NULL; dle->data_path = DATA_PATH_AMANDA; dle->directtcp_list = NULL; + dle->application_client_name = NULL; dle->next = NULL; } @@ -428,6 +431,7 @@ amstart_element( data_user->script->execute_on = 0; data_user->script->execute_where = ES_CLIENT; data_user->script->property = NULL; + data_user->script->client_name = NULL; data_user->script->result = NULL; data_user->has_plugin = 0; } else if (strcmp(element_name, "execute_on") == 0) { @@ -438,6 +442,7 @@ amstart_element( "XML: Invalid %s element", element_name); return; } + } else if (strcmp(element_name, "client_name") == 0) { } else { g_set_error(gerror, G_MARKUP_ERROR, G_MARKUP_ERROR_INVALID_CONTENT, "XML: Invalid %s element", element_name); @@ -879,26 +884,38 @@ amtext( sep = strchr(tt1,','); if (sep) *sep = '\0'; - if (strcmp(tt1,"PRE-DLE-AMCHECK") == 0) + if (strcmp(tt1,"PRE-AMCHECK") == 0) + data_user->script->execute_on |= EXECUTE_ON_PRE_AMCHECK; + else if (strcmp(tt1,"PRE-DLE-AMCHECK") == 0) data_user->script->execute_on |= EXECUTE_ON_PRE_DLE_AMCHECK; else if (strcmp(tt1,"PRE-HOST-AMCHECK") == 0) data_user->script->execute_on |= EXECUTE_ON_PRE_HOST_AMCHECK; + else if (strcmp(tt1,"POST-AMCHECK") == 0) + data_user->script->execute_on |= EXECUTE_ON_POST_AMCHECK; else if (strcmp(tt1,"POST-DLE-AMCHECK") == 0) data_user->script->execute_on |= EXECUTE_ON_POST_DLE_AMCHECK; else if (strcmp(tt1,"POST-HOST-AMCHECK") == 0) data_user->script->execute_on |= EXECUTE_ON_POST_HOST_AMCHECK; + else if (strcmp(tt1,"PRE-ESTIMATE") == 0) + data_user->script->execute_on |= EXECUTE_ON_PRE_ESTIMATE; else if (strcmp(tt1,"PRE-DLE-ESTIMATE") == 0) data_user->script->execute_on |= EXECUTE_ON_PRE_DLE_ESTIMATE; else if (strcmp(tt1,"PRE-HOST-ESTIMATE") == 0) data_user->script->execute_on |= EXECUTE_ON_PRE_HOST_ESTIMATE; + else if (strcmp(tt1,"POST-ESTIMATE") == 0) + data_user->script->execute_on |= EXECUTE_ON_POST_ESTIMATE; else if (strcmp(tt1,"POST-DLE-ESTIMATE") == 0) data_user->script->execute_on |= EXECUTE_ON_POST_DLE_ESTIMATE; else if (strcmp(tt1,"POST-HOST-ESTIMATE") == 0) data_user->script->execute_on |= EXECUTE_ON_POST_HOST_ESTIMATE; + else if (strcmp(tt1,"PRE-BACKUP") == 0) + data_user->script->execute_on |= EXECUTE_ON_PRE_BACKUP; else if (strcmp(tt1,"PRE-DLE-BACKUP") == 0) data_user->script->execute_on |= EXECUTE_ON_PRE_DLE_BACKUP; else if (strcmp(tt1,"PRE-HOST-BACKUP") == 0) data_user->script->execute_on |= EXECUTE_ON_PRE_HOST_BACKUP; + else if (strcmp(tt1,"POST-BACKUP") == 0) + data_user->script->execute_on |= EXECUTE_ON_POST_BACKUP; else if (strcmp(tt1,"POST-DLE-BACKUP") == 0) data_user->script->execute_on |= EXECUTE_ON_POST_DLE_BACKUP; else if (strcmp(tt1,"POST-HOST-BACKUP") == 0) @@ -938,6 +955,21 @@ amtext( amfree(tt); } else if(strcmp(last_element_name, "directtcp") == 0) { dle->directtcp_list = g_slist_append(dle->directtcp_list, tt); + } else if(strcmp(last_element_name, "client_name") == 0) { + last_element2 = g_slist_nth(data_user->element_names, 1); + if (!last_element2) { + error("Invalid client_name text"); + } + last_element2_name = last_element2->data; + if (strcmp(last_element2_name, "backup-program") == 0) { + dle->application_client_name = tt; +g_debug("set dle->application_client_name: %s", dle->application_client_name); + } else if (strcmp(last_element2_name, "script") == 0) { + data_user->script->client_name = tt; +g_debug("set data_user->script->client_name: %s", data_user->script->client_name); + } else { + error("client_name outside of script or backup-program"); + } } else { g_set_error(gerror, G_MARKUP_ERROR, G_MARKUP_ERROR_INVALID_CONTENT, "XML: amtext not defined for '%s'", last_element_name);