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