# # Device Type Snapon # # This snapon adds a field which reports the device type, calculated from the user-agent # device_type = { label = "$lang_admin.snapons.device_type.label" comment = "$lang_admin.snapons.device_type.comment" config_snapon_category = "" parameters = { user_agent_field = { parameter_value = "user_agent" validation_type = "string" form_element_label = "$lang_admin.snapons.device_type.parameters.user_agent_field.form_element_label" form_element_type = "select" select_options_source = "log_fields" description = "" } # user_agent_field device_type_field_name = { parameter_value = "{=capitalize(expand(lang_stats.field_labels.device_type))=}" validation_type = "field_label" validate_field_label_for = { database_fields = true report_fields = true } form_element_label = "$lang_admin.snapons.device_type.parameters.field_name.form_element_label" form_element_type = "text" form_element_width = "380" description = "$lang_admin.snapons.device_type.parameters.field_name.description" } # device_type_field_name } # parameters parameters_form = { group_1 = { description = "$lang_admin.snapons.device_type.parameters_form.group_1.description" parameters = { user_agent_field = true device_type_field_name = true } # parameters } # group 1 } # parameters_form attach_operations = { # Add log field add_log_fields = { type = "add_log_fields" fields = { device_type = "" } # fields } # add_log_fields # Add log filter add_log_filters = { type = "add_log_filters" filters = { compute_device_type = { label = "Compute device type" # LM comment = "This computes the device type" # LM value = ` if (matches_regular_expression({= @parameters{'user_agent_field'}{'parameter_value'} =}, '(iP(od|hone|ad)|Android|Windows CE|Symbian|Opera Mini)')) then {= @parameters{'device_type_field_name'}{'final_node_name'} =} = $1; else if (matches_regular_expression({= @parameters{'user_agent_field'}{'parameter_value'} =}, '(Windows|Linux|SunOS)')) then {= @parameters{'device_type_field_name'}{'final_node_name'} =} = $1; else if (matches_regular_expression({= @parameters{'user_agent_field'}{'parameter_value'} =}, '(Macintosh|Mac OS)')) then {= @parameters{'device_type_field_name'}{'final_node_name'} =} = "Macintosh"; else if (matches_regular_expression({= @parameters{'user_agent_field'}{'parameter_value'} =}, '(Googlebot|Baiduspider|bingbot|Yahoo! Slurp|YandexBot|Ezooms|msnbot|Ocelli|[Bb]ot|[R]obot|[Ss]pider)')) then {= @parameters{'device_type_field_name'}{'final_node_name'} =} = "Spider"; else {= @parameters{'device_type_field_name'}{'final_node_name'} =} = "Unknown"; ` } # compute_device_type } # filters } # add_log_filters # Add database field add_database_fields = { type = "add_database_fields" fields = { device_type = "" } # fields } # add_database_fields # Add report fields add_report_fields = { type = "add_report_fields" fields = { device_type = "" } # fields } # add_report_fields # When attaching: Add the reports. # Disabled because this is done automatically by Create Profile Wizard. # add_reports = { # # type = "add_reports" # # reports = { # # device_type_snapon_report = { # label = "$lang_admin.snapons.device_type.report_label" # report_elements = { # device_type_snapon_report = { # label = "$lang_admin.snapons.device_type.report_label" # type = "table" # sort_by = "MAIN_SORT_FIELD" # Sort this report by the main sort field, whatever that may be # columns = { # device_type.report_field = "device_type" ## device_type.report_field = "{= @parameters{'device_type_field_name'}{'final_node_name'} =}" # } # columns # } # entry_pages # } # report_elements # } # device_type_snapon_report # } # reports # } # add_reports } # attach_operations } # device_type