# Copyright (c) 2010 Flowerfire, Inc. All Rights Reserved. apache_custom = { plugin_version = "1.5.2" info.1.manufacturer = "Apache" info.1.device = "Custom (Use with your format string)" info.1.version.1 = "" # unknowndate - 1.0 - ??? - original implementation # 21/May/2006 - 1.1 - GMF - added support for content_length, uri, and source_ip fields # 2006-11-10 - 1.2 - GMF - Added "visitors per download" calculation (commented out by default) # 2007-10-09 - 1.3 - KBB - Added new derived fields to groups # 2008-06-09 - 1.4 - KBB - Added support for the case where the page value is in the uri_stem field. # 2008-09-03 - 1.5 - GMF - Added support for numerical reporting of the time_taken (%D) field. # 2010-10-11 - 1.5.1 - MSG - Edited info lines. # 2012-02-07 - 1.5.2 - GMF - Added support for numerical reporting of the content_bytes (%B) field # The name of the log format log.format.format_label = "Apache Custom Log Format" log.miscellaneous.log_data_type = "apache_custom" log.miscellaneous.log_format_type = "web_server" # The log is in this format if any of the first ten lines match this regular expression log.format.autodetect_regular_expression = "this format cannot be autodetected" # Treat fields surrounded by square brackets (e.g. the date/time field) as a single quoted field. log.format.treat_brackets_as_quotes = "true" log.format.common_log_format = "true" # The format of dates and times in this log log.format.date_format = "dd/mmm/yyyy:hh:mm:ss" log.format.time_format = "dd/mmm/yyyy:hh:mm:ss" # Log fields log.fields = { # date = { # label = "$lang_stats.field_labels.date" # type = "date" # index = 0 # subindex = 0 # hierarchy_dividers = "" # left_to_right = false # leading_divider = "false" # } # date # # time = { # label = "$lang_stats.field_labels.time" # type = "time" # index = 0 # subindex = 0 # hierarchy_dividers = "" # left_to_right = false # leading_divider = "false" # } # time duration = "" } # log.fields # # Database fields # database.fields = { # # date_time = { # label = "$lang_stats.field_labels.date_time" # log_field = "date_time" # type = "string" # suppress_top = 0 # suppress_bottom = 3 # display_format_type = "date_time" # } # date_time # # day_of_week = { # label = "$lang_stats.field_labels.day_of_week" # log_field = "day_of_week" # type = "string" # suppress_top = 0 # suppress_bottom = 2 # display_format_type = "day_of_week" # } # day_of_week # # hour_of_day = { # label = "$lang_stats.field_labels.hour_of_day" # log_field = "hour_of_day" # type = "string" # suppress_top = 0 # suppress_bottom = 2 # display_format_type = "hour_of_day" # } # hour_of_day # # page = { # label = "$lang_stats.field_labels.page" # log_field = "page" # type = "string" # suppress_top = 0 # suppress_bottom = 9 # display_format_type = "page" # } # page # # file_type = { # label = "$lang_stats.field_labels.file_type" # log_field = "file_type" # type = "string" # suppress_top = 0 # suppress_bottom = 2 # } # file_type # # worm = { # label = "$lang_stats.field_labels.worm" # log_field = "worm" # type = "string" # suppress_top = 0 # suppress_bottom = 2 # } # worm # # screen_dimensions = { # label = "$lang_stats.field_labels.screen_dimensions" # log_field = "screen_dimensions" # type = "string" # suppress_top = 0 # suppress_bottom = 2 # } # screen_dimensions # # screen_depth = { # label = "$lang_stats.field_labels.screen_depth" # log_field = "screen_depth" # type = "string" # suppress_top = 0 # suppress_bottom = 2 # } # screen_depth # # hostname = { # label = "$lang_stats.field_labels.hostname" # log_field = "hostname" # type = "string" # suppress_top = 0 # suppress_bottom = 2 # display_format_type = "hostname" # } # hostname # # domain_description = { # label = "$lang_stats.field_labels.domain_description" # log_field = "domain_description" # type = "string" # suppress_top = 0 # suppress_bottom = 2 # } # domain_description # # location = { # label = "$lang_stats.field_labels.location" # log_field = "location" # type = "string" # suppress_top = 0 # suppress_bottom = 3 # } # location # # referrer = { # label = "$lang_stats.field_labels.referrer" # log_field = "referrer" # type = "string" # suppress_top = 1 # suppress_bottom = 3 # } # referrer # # referrer_description = { # label = "$lang_stats.field_labels.referrer_description" # log_field = "referrer_description" # type = "string" # suppress_top = 0 # suppress_bottom = 2 # } # referrer_description # # search_engine = { # label = "$lang_stats.field_labels.search_engine" # log_field = "search_engine" # type = "string" # suppress_top = 0 # suppress_bottom = 2 # } # search_engine # # search_phrase = { # label = "$lang_stats.field_labels.search_phrase" # log_field = "search_phrase" # type = "string" # suppress_top = 0 # suppress_bottom = 2 # } # search_phrase # # web_browser = { # label = "$lang_stats.field_labels.web_browser" # log_field = "web_browser" # type = "string" # suppress_top = 0 # suppress_bottom = 2 # } # web_browser # # operating_system = { # label = "$lang_stats.field_labels.operating_system" # log_field = "operating_system" # type = "string" # suppress_top = 0 # suppress_bottom = 2 # } # operating_system # # spider = { # label = "$lang_stats.field_labels.spider" # log_field = "spider" # type = "string" # suppress_top = 0 # suppress_bottom = 2 # } # spider # # cookie = { # label = "$lang_stats.field_labels.cookie" # log_field = "cookie" # type = "string" # suppress_top = 0 # suppress_bottom = 2 # } # cookie # # server_domain = { # label = "$lang_stats.field_labels.server_domain" # log_field = "server_domain" # type = "string" # suppress_top = 0 # suppress_bottom = 2 # } # server_domain # # authenticated_user = { # label = "$lang_stats.field_labels.authenticated_user" # log_field = "authenticated_user" # type = "string" # suppress_top = 0 # suppress_bottom = 2 # } # authenticated_user # # server_response = { # label = "$lang_stats.field_labels.server_response" # log_field = "server_response" # type = "string" # suppress_top = 0 # suppress_bottom = 2 # } # server_response # # } # database.fields # Get search engine and search phrase information from the referrer field (before it gets simplified). log.parsing_filters.compute_se_sp = { value = `if (get_search_engine_info(referrer)) then ( search_engine = volatile.search_engine; search_phrase = volatile.search_phrase; ); ` requires_fields = { referrer = true } } # Get web browser, operating system, web browser, and spider information from the user-agent field. log.parsing_filters.derive_from_user_agent = { value = `get_user_agent_info(replace_all(agent, '+', ' ')); web_browser = volatile.web_browser; operating_system = volatile.operating_system; spider = volatile.spider; ` requires_fields = { agent = true } } # Log Filters log.filters = { # This can be uncommented, along with the "downloads" and "visitors_per_download" numerical fields, to add a "visitors per download" column to every table. # count_downloads = `if (contains(page, 'base.php')) then downloads = 1;` simplify_referrer = { label = "$lang_admin.log_filters.simplify_referrer_label" comment = "$lang_admin.log_filters.simplify_referrer_comment" value = "if (referrer eq '-') then referrer = '(no referrer)' else if (matches_regular_expression(referrer, '^([^:]+://[^/]+/)')) then referrer = $1 . '(omitted)'" requires_fields = { referrer = true } } # simplify_referrer internal_referrer = { label = "$lang_admin.log_filters.internal_referrer_label" comment = "$lang_admin.log_filters.internal_referrer_comment" value = "if (contains(referrer, 'mydomain.com/')) then referrer = '(internal referrer)';" disabled = true requires_fields = { referrer = true } } # internal_referrer not_authenticated = { label = "$lang_admin.log_filters.not_authenticated_label" comment = "$lang_admin.log_filters.not_authenticated_comment" value = "if (authenticated_user eq '-') then authenticated_user = '(not authenticated)';" requires_fields = { authenticated_user = true } } # not_authenticated 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 (starts_with(worm, '(')) then '' else page = '(worm)';" requires_fields = { page = true worm = true } } # set_page_for_worm remove_query = { label = "$lang_admin.log_filters.remove_query_label" comment = "$lang_admin.log_filters.remove_query_comment" value = "if (contains(page, '?')) then page = substr(page, 0, index(page, '?') + 1) . '(parameters)';" requires_fields = { page = true } } # remove_query remove_query_from_uri_stem = { label = "$lang_admin.log_filters.remove_query_label" comment = "$lang_admin.log_filters.remove_query_comment" value = "if (contains(uri_stem, '?')) then uri_stem = substr(uri_stem, 0, index(uri_stem, '?') + 1) . '(parameters)';" requires_fields = { uri_stem = true } } # remove_query_from_uri_stem detect_page_views = { label = '$lang_admin.log_filters.detect_page_views_label' comment = '$lang_admin.log_filters.detect_page_views_comment' value = "if ((file_type eq 'JPEG') or (file_type eq 'JPG') or (file_type eq 'GIF') or (file_type eq 'ICO') or (file_type eq 'PNG') or (file_type eq 'CSS') or (file_type eq 'SWF') or (file_type eq 'JS')) then page_views = 0; else page_views = 1;" requires_fields = { file_type = true } } # detect_page_views strip_non_page_views = { label = '$lang_admin.log_filters.strip_non_page_views_label' comment = '$lang_admin.log_filters.strip_non_page_views_comment' value = "if (page_views == 0) then page = substr(page, 0, last_index(page, '/') + 1) . '(nonpage)';" requires_fields = { page = true } } # strip_non_page_views mark_entry = { label = '$lang_admin.log_filters.mark_entry_label' comment = '$lang_admin.log_filters.mark_entry_comment' value = 'hits = 1;' } # mark_entry } # log.filters # log.fields = { # hostname = { # label = "$lang_stats.field_labels.hostname" # type = "host" # index = "0" # subindex = "0" # hierarchy_dividers = "." # left_to_right = "false" # leading_divider = "false" # } # hostname # server_domain = { # label = "$lang_stats.field_labels.server_domain" # type = "flat" # index = "0" # subindex = "0" # } # server_domain # authenticated_user = { # label = "$lang_stats.field_labels.authenticated_user" # type = "flat" # index = "0" # subindex = "0" # } # authenticated_user # date_time = { # label = "$lang_stats.field_labels.date_time" # type = "date_time" # index = "0" # subindex = "1" # hierarchy_dividers = "" # left_to_right = "false" # leading_divider = "false" # } # date_time # operation = { # label = "$lang_stats.field_labels.operation" # type = "flat" # index = "0" # subindex = "1" # } # operation # page = { # label = "$lang_stats.field_labels.page" # type = "page" # index = "0" # subindex = "2" # hierarchy_dividers = "/?" # left_to_right = "true" # leading_divider = "true" # } # page # protocol = { # label = "$lang_stats.field_labels.protocol" # type = "flat" # index = "0" # subindex = "3" # } # protocol # server_response = { # label = "$lang_stats.field_labels.server_response" # type = "response" # index = "0" # subindex = "0" # hierarchy_dividers = "" # left_to_right = "false" # leading_divider = "false" # } # server_response # size = { # label = "$lang_stats.field_labels.size" # type = "size" # index = "0" # subindex = "0" # hierarchy_dividers = "" # left_to_right = "false" # leading_divider = "false" # } # size # referrer = { # label = "$lang_stats.field_labels.referrer" # type = "URL" # index = "0" # subindex = "0" # hierarchy_dividers = "/?" # left_to_right = "true" # leading_divider = "false" # } # referrer # agent = { # label = "$lang_stats.field_labels.agent" # type = "agent" # index = "0" # subindex = "0" # hierarchy_dividers = "" # left_to_right = "false" # leading_divider = "false" # } # agent # cookie = { # label = "$lang_stats.field_labels.cookie" # type = "flat" # index = "0" # subindex = "0" # hierarchy_dividers = "" # left_to_right = "false" # leading_divider = "false" # } # agent # } # log.fields log.field_options = { sessions_page_field = "page" sessions_visitor_id_field = "hostname" sessions_event_field = "page_views" } # log.field_options database.numerical_fields = { hits = { label = "$lang_stats.field_labels.hits" default = false requires_log_field = false type = "int" display_format_type = "integer" entries_field = true } # hits page_views = { label = "$lang_stats.field_labels.page_views" default = true requires_log_field = false type = "int" display_format_type = "integer" } # page_views visitors = { label = "$lang_stats.field_labels.visitors" default = false requires_log_field = true log_field = "hostname" type = "unique" display_format_type = "integer" } # visitors bytes = { label = "$lang_stats.field_labels.bytes" default = false requires_log_field = true log_field = "bytes" type = "int" integer_bits = 64 display_format_type = "bandwidth" } # bytes bytes_sent = { label = "$lang_stats.field_labels.bytes_sent" default = false requires_log_field = true log_field = "bytes_sent" type = "int" integer_bits = 64 display_format_type = "bandwidth" } # bytes_sent bytes_received = { label = "$lang_stats.field_labels.bytes_received" default = false requires_log_field = true log_field = "bytes_received" type = "int" integer_bits = 64 display_format_type = "bandwidth" } # bytes_received content_bytes = { default = false requires_log_field = true type = "int" integer_bits = 64 display_format_type = "bandwidth" } # content_bytes duration = { label = "$lang_stats.field_labels.duration" default = false requires_log_field = true type = "int" integer_bits = 64 display_format_type = "duration_compact" } # duration time_taken = { label = "$lang_stats.field_labels.time_taken" default = false requires_log_field = true type = "int" integer_bits = 64 display_format_type = "duration_microseconds" } # time_taken average_duration = { label = "$lang_stats.field_labels.average $lang_stats.field_labels.duration" default = false log_field = "duration" requires_log_field = false type = "int" integer_bits = 64 aggregation_method = "average" average_denominator_field = "hits" display_format_type = "duration_compact" } # average_duration content_length = { label = "$lang_stats.field_labels.content_length" default = false requires_log_field = true log_field = "content_length" type = "int" integer_bits = 64 display_format_type = "bandwidth" } # content_length # These fields can be uncommented, along with the log filter that sets downloads, to add a "visitors per download" column to every table. # downloads = { # requires_log_field = false # } # visitors_per_download = { # requires_log_field = false # type = "float" # display_format_type = "float" # expression = `if (cell_by_name(row_number, 'downloads') == 0) then 'n/a' else ((1.0 * cell_by_name(row_number, 'visitors')) / (1.0 * cell_by_name(row_number, 'downloads')))` # } } # database.numerical_fields create_profile_wizard_options = { date_time_tracking = true ######### START OF FINAL_STEP CODE final_step = ` include "templates.admin.profiles.setup_reports_util"; string profile = "profiles." . volatile.new_profile_name; # Start with the standard reports based on remaining DB fields add_standard_reports(profile); # Delete the visitors_per_download column from log_detail; there's no visitors column there, so there can't be visitors_per_download if (node_exists(profile . ".statistics.reports.log_detail.report_elements.log_detail.columns.visitors_per_download")) then delete_node(profile . ".statistics.reports.log_detail.report_elements.log_detail.columns.visitors_per_download"); ` ######## END OF FINAL_STEP CODE # How the reports should be grouped in the report menu report_groups = { date_time_group = "" content_group = { page = true file_type = true uri = true uri_stem = true } visitor_demographics_group = { hostname = true source_ip = true domain_description = true location = true authenticated_user = true organization = true domain = true isp = true } visitor_systems_group = { screen_dimensions = true screen_depth = true web_browser = true operating_system = true } referrer_group = { referrer = true referrer_description = true search_engine = true search_phrase = true search_phrase_by_search_engine = true } other_group = { worm = true spider = true server_domain = true server_hostname = true server_response = true cookie = true client_id = true operation = true protocol = true process_id = true } } # report_groups } # create_profile_wizard_options } # apache_custom