# # Geo Organization Snapon # # This snapon adds an Organization field and report, based on the GeoIP Organization database # geo_organization = { label = "$lang_admin.snapons.geo_organization.label" comment = "$lang_admin.snapons.geo_organization.comment" config_snapon_category = "" version = "1.0" # 2012-08-07 - GMF - 1.0 - Initial creation parameters = { ip_address_field = { parameter_value = "ip_address_unspecified" validation_type = "string" form_element_label = "$lang_admin.snapons.geo_organization.parameters.ip_address_field.form_element_label" form_element_type = "select" select_options_source = "database_fields" description = "" } # ip_address_field geo_organization_field_name = { parameter_value = "{=capitalize(expand(lang_stats.field_labels.organization))=}" final_node_name = "geo_organization" validation_type = "field_label" validate_field_label_for = { database_fields = true report_fields = true } form_element_label = "{=capitalize(expand(lang_stats.field_labels.organization_field_name))=}" form_element_type = "text" form_element_width = "380" description = "" } # geo_organization_field_name } # parameters parameters_form = { group_1 = { description = "$lang_admin.snapons.geo_organization.parameters_form.group_1.description" parameters = { ip_address_field = true geo_organization_field_name = true } # parameters } # group 1 } # parameters_form attach_operations = { # Add a log field for organization. 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 = { geo_organization = "" } # fields } # add_log_fields # Add database field add_database_fields = { type = "add_database_fields" fields = { geo_organization = "" } # fields } # add_database_fields # Add a database filter to compute the geo organization add_geo_organization_database_filter = { type = "add_database_filters" filters = { "{= @parameters{'geo_organization_field_name'}{'final_node_name'} =}" = { expression = `{= @parameters{'geo_organization_field_name'}{'final_node_name'} =} = query_geoip({= @parameters{'ip_address_field'}{'parameter_value'} =}, "organization");` } # {= @parameters{'geo_organization_field_name'}{'final_node_name'} =} } # filters } # add_geo_organization_database_filter # Add xref group add_xref_groups = { type = "add_xref_groups" xref_groups = { geo_organization = { use_flat_table = false fields = { geo_organization = "" } # fields add_all_aggregating_fields = true } # organization } # xref_groups } # add_xref_groups # Add report fields add_report_fields = { type = "add_report_fields" fields = { geo_organization = "" } # fields } # add_report_fields # When attaching: Add the reports. add_reports = { type = "add_reports" reports = { geo_organization = { label = "{=capitalize(pluralize(expand(lang_stats.field_labels.organization)))=}" report_elements = { geo_organization = { label = "{=capitalize(pluralize(expand(lang_stats.field_labels.organization)))=}" type = "table" sort_by = "MAIN_SORT_FIELD" # Sort this report by the main sort field, whatever that may be columns = { geo_organization.report_field = "geo_organization" } # columns add_all_aggregating_columns = true } # geo_organization } # report_elements } # geo_organization } # reports reports_menu = { visitor_demographics_group = { label = "{=expand(lang_stats.menu.groups.visitor_demographics_group)=}" items = { geo_organization = { label = "{=capitalize(pluralize(expand(lang_stats.field_labels.organization)))=}" report = "geo_organization" } # geo_organization } # items } # visitor_demographics_group } # reports_menu } # add_reports } # attach_operations } # geo_organization