# # Worm Snapon # # This snapon adds a worm field and report, based on the rules in worms.cfg being applied to a URL # worm = { label = "$lang_admin.snapons.worm.label" comment = "$lang_admin.snapons.worm.comment" config_snapon_category = "" version = "1.1.2" # 2012-08-07 - GMF - 1.0 - Initial creation # 2012-08-14 - 1.1 - GMF - Added page_views filter # 2013-05-01 - 1.1.1 - GMF - Fixed field name reference # 2013-08-13 - 1.1.2 - GMF - Changed literal "(not a worm)" to lang_stats.item_descriptions.no_worm (so it works if the language changes) parameters = { url_field = { parameter_value = "url" validation_type = "string" form_element_label = "$lang_admin.snapons.worm.parameters.url_field.form_element_label" form_element_type = "select" select_options_source = "database_fields" description = "" } # url_field worm_field_name = { parameter_value = "{=capitalize(expand(lang_stats.field_labels.worm))=}" final_node_name = "worm" validation_type = "field_label" validate_field_label_for = { database_fields = true report_fields = true } form_element_label = "$lang_admin.snapons.worm.parameters.worm_field_name.form_element_label" form_element_type = "text" form_element_width = "380" description = "" } # worm_field_name page_views_field = { parameter_value = "none" validation_type = "string" form_element_label = "$lang_admin.snapons.user_agent_analysis.parameters.page_views_field.form_element_label" form_element_type = "select" select_options_source = "database_fields" description = "" } # page_views_field } # parameters parameters_form = { group_1 = { description = "$lang_admin.snapons.worm.parameters_form.group_1.description" parameters = { url_field = true worm_field_name = true page_views_field = true } # parameters } # group 1 } # parameters_form attach_operations = { # Add a log field for worm. We don't actually use this log field for parsing, but we need it to specify the hierarchical structure of the database field. add_log_fields = { type = "add_log_fields" fields = { "{= @parameters{'worm_field_name'}{'final_node_name'} =}" = "" } # fields } # add_log_fields # Add database field add_database_fields = { type = "add_database_fields" fields = { "{= @parameters{'worm_field_name'}{'final_node_name'} =}" = "" } # fields } # add_database_fields # Add a log filter to compute the geo worm add_worm_log_filter = { type = "add_log_filters" filters = { "{= @parameters{'worm_field_name'}{'final_node_name'} =}" = { label = "compute worm" comment = "Compute worm from {= @parameters{'url_field'}{'parameter_value'} =}" value = `{= @parameters{'worm_field_name'}{'final_node_name'} =} = get_worm_from_url({= @parameters{'url_field'}{'parameter_value'} =});` } # {= @parameters{'worm_field_name'}{'final_node_name'} =} set_page_for_worm = { label = "$lang_admin.log_filters.set_page_for_worm_label" comment = "$lang_admin.log_filters.set_page_for_worm_comment" value = `if ({= @parameters{'worm_field_name'}{'final_node_name'} =} ne lang_stats.item_descriptions.no_worm) then {= @parameters{'url_field'}{'parameter_value'} =} = '(worm)';` } # set_page_for_worm set_page_views_for_worm = { label = "Set page views for worm" comment = "This sets the page views to 0, for worm traffic" value = ` if (!starts_with(wsp_worm, '(')) then page_views = 0; ` } # set_page_views_for_worm } # filters } # add_worm_log_filter # Add xref group add_xref_groups = { type = "add_xref_groups" xref_groups = { "{= @parameters{'worm_field_name'}{'final_node_name'} =}" = { use_flat_table = false fields = { "{= @parameters{'worm_field_name'}{'final_node_name'} =}" = "" } # fields add_all_aggregating_fields = true } # worm } # xref_groups } # add_xref_groups # Add report fields add_report_fields = { type = "add_report_fields" fields = { "{= @parameters{'worm_field_name'}{'final_node_name'} =}" = "" } # fields } # add_report_fields # When attaching: Add the reports. add_reports = { type = "add_reports" reports = { "{= @parameters{'worm_field_name'}{'final_node_name'} =}" = { label = "{=capitalize(pluralize(expand(lang_stats.field_labels.worm)))=}" report_elements = { "{= @parameters{'worm_field_name'}{'final_node_name'} =}" = { label = "{=capitalize(pluralize(expand(lang_stats.field_labels.worm)))=}" type = "table" sort_by = "MAIN_SORT_FIELD" # Sort this report by the main sort field, whatever that may be columns = { worm.report_field = "{= @parameters{'worm_field_name'}{'final_node_name'} =}" } # columns add_all_aggregating_columns = true } # worm } # report_elements } # worm } # reports reports_menu = { visitor_demographics_group = { label = "{=expand(lang_stats.menu.groups.visitor_demographics_group)=}" items = { "{= @parameters{'worm_field_name'}{'final_node_name'} =}" = { label = "{=capitalize(pluralize(expand(lang_stats.field_labels.worm)))=}" report = "{= @parameters{'worm_field_name'}{'final_node_name'} =}" } # worm } # items } # visitor_demographics_group } # reports_menu } # add_reports } # attach_operations } # worm