bulletproof_g6_ftpmmddyy = { # The name of the log format log.format.format_label = "Bulletproof/G6 FTP Log Format (mm/dd/yy dates)" log.miscellaneous.log_data_type = "ftp" log.miscellaneous.log_format_type = "ftp_server" # The log is in this format if any of the first ten lines match this regular expression log.format.autodetect_regular_expression = "^\\([0-9]*\\) [0-9][0-9]*/[0-9][0-9]*/[0-9][0-9] [0-9][0-9]*:[0-9][0-9]:[0-9][0-9] [AP]M [^ ]* .* \\([^)]*\\) > " # An entry in this log is called a "transfer" in the statistics (not a "hit") statistics.miscellaneous.entry_name = "transfers" # The format of dates and times in this log log.format.date_format = "m/d/yy" log.format.time_format = "h:mm:ss AM/PM" # All log field parsing will be done using the parsing filters log.format.parse_only_with_filters = "true" # 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 hostname = { label = "$lang_stats.field_labels.hostname" type = "host" index = 0 subindex = 0 hierarchy_dividers = "." left_to_right = false leading_divider = "false" } # hostname server_ip = { label = "$lang_stats.field_labels.server_ip" type = "flat" index = 0 subindex = 0 } # server_ip authenticated_user = { label = "$lang_stats.field_labels.authenticated_user" type = "flat" index = 0 subindex = 0 } # authenticated_user file = { label = "$lang_stats.field_labels.file" type = "page" index = 0 subindex = 0 hierarchy_dividers = "/?" left_to_right = true leading_divider = "true" } # file direction = { label = "$lang_stats.field_labels.direction" type = "flat" index = 0 subindex = 0 } # direction size = { label = "$lang_stats.field_labels.size" type = "size" index = 0 subindex = 0 hierarchy_dividers = "" left_to_right = false leading_divider = "false" } # size } # log.fields # # Log Parsing Filters log.parsing_filters = { # Process the server IP 1 = { label = "1" comment = "" value = "collect_fields_using_regexp('\\\\(([0-9]*)\\\\) .* connected to ip : (.*)$', '*KEY*,server_ip')" } # 1 # Get header information from finished lines 2 = { label = "2" comment = "" value = "collect_fields_using_regexp('^\\\\(([0-9]*)\\\\) ([0-9][0-9]*/[0-9][0-9]*/[0-9][0-9]) ([0-9][0-9]*:[0-9][0-9]:[0-9][0-9] [AP]M) [^ ]* (.*) \\\\(([^)]*)\\\\) > finished ', '*KEY*,date,time,user,hostname')" } # 2 # Process "finished downloading" and "finished uploading" lines. 3 = { label = "3" comment = "" value = "collect_fields_using_regexp('^\\\\(([0-9]+)\\\\) .* > finished (download|upload)ing \\'([^\\']+)\\' ', '*KEY*,direction,file')" } # 3 # Get KB information when available. This gets the size field as mm.bbb kilobytes; the filter below removes the decimal point. 4 = { label = "4" comment = "" value = "collect_fields_using_regexp('\\\\(([0-9]*)\\\\) .* \\\\([0-9:]+ - ([0-9]+\\\\.[0-9][0-9][0-9]) KB ', '*KEY*,size')" } # 4 # Get bytes information when available 5 = { label = "5" comment = "" value = "collect_fields_using_regexp('\\\\(([0-9]*)\\\\) .* \\\\(([0-9]+) bytes\\\\).$', '*KEY*,size')" } # 5 # Accept the log entry when we see a finished downloading line 6 = { label = "6" comment = "" value = "accept_collected_entry_using_regexp('^\\\\(([0-9]*)\\\\).*finished (upload|download)ing ', false)" } # 6 } # log.parsing_filters # 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 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 direction = { label = "$lang_stats.field_labels.direction" log_field = "direction" type = "string" suppress_top = 0 suppress_bottom = 2 } # direction authenticated_user = { label = "$lang_stats.field_labels.authenticated_user" log_field = "authenticated_user" type = "string" suppress_top = 0 suppress_bottom = 2 } # authenticated_user file = { label = "$lang_stats.field_labels.file" log_field = "file" type = "string" suppress_top = 0 suppress_bottom = 9 } # file file_type = { label = "$lang_stats.field_labels.file_type" log_field = "file_type" type = "string" suppress_top = 0 suppress_bottom = 2 } # file_type server_ip = { label = "$lang_stats.field_labels.server_ip" log_field = "server_ip" type = "string" suppress_top = 0 suppress_bottom = 2 } # server_ip } # database.fields # Log Filters log.filters = { 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)';" } # not_authenticated # This filter converts \ to / in the file field 1 = { label = "1" comment = "" value = "file = replace_all(file, '\\\\', '/');" } # 1 # This filter deletes . from the size field, in case we got it as nn.mmm KB. # In that case, it becomes nnmmm bytes, which is correct if 1kb=1000b. 2 = { label = "2" comment = "" value = "size = replace_first(size, '.', '');" } # 2 mark_entry = { label = '$lang_admin.log_filters.mark_entry_label' comment = '$lang_admin.log_filters.mark_entry_comment' value = 'transfers = 1;' } # mark_entry } # log.filters database.numerical_fields = { transfers = { label = "$lang_stats.field_labels.transfers" default = true requires_log_field = false type = "int" display_format_type = "integer" entries_field = true } # transfers size = { label = "$lang_stats.field_labels.size" default = false requires_log_field = true log_field = "size" type = "float" display_format_type = "bandwidth" } # size } # database.numerical_fields create_profile_wizard_options = { date_time_tracking = true host_tracking = true # How the reports should be grouped in the report menu report_groups = { date_time_group = "" day_of_week = true hour_of_day = true hostname = true domain_description = true location = true direction = true authenticated_user = true file = true file_type = true server_ip = true } # report_groups } # create_profile_wizard_options not_supported = { pageviews = true visitors = true sessions = true } # not_supported } # bulletproof_g6_ftpmmddyy