# Copyright (c) 2010 Flowerfire, Inc. All Rights Reserved. gene6_ftp_w3c = { plugin_version = "1.1" # Plugin Version info # 2007-03-13 : gas : 1.0 : new format # 2007-07-24 : gas : 1.1 : added support for DELE, RNTO and RNFR lines # 2009-01-23 - KBB - 1.1 - Changed name from gene6_ftp to give that name to a non-w3c format # and cleaned up formatting for readability. # 2010-10-01 - MSG - 1.2 - Edited info lines. info.1.manfacturer = "Gene6 SARL" info.1.device = "FTP Server (W3C)" info.1.version.1 = "3.8" # build 34 # The name of the log format log.format.format_label = "Gene6 FTP W3C Log Format" 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 = "#Software: Gene6 FTP Server" # The format of dates and times in this log log.format.date_format = "auto" log.format.time_format = "auto" # Format: parse_only_with_filters ( true | false ) log.format.parse_only_with_filters = "true" log.fields = { date.type = "date" time.type = "time" c_ip.type = "host" cs_username = "" cs_method = "" cs_uri_stem = "" sc_status = "" sc_bytes.type = "size" cs_bytes.type = "size" time_taken = "" } # log.filters # Log Filters log.filters = { mark_entry = { label = '$lang_admin.log_filters.mark_entry_label' comment = '$lang_admin.log_filters.mark_entry_comment' value = 'events = 1;' } # mark_entry } # log.filters log.parsing_filters.parse = ` # first check if this is a sent/created line if (matches_regular_expression(current_log_line(), '^([-0-9]+) ([0-9:]+) ([^ ]+) ([^ ]+) \\[([0-9]+)\\](sent|created|DELE|RNTO|RNFR) ([^ ]+) ([0-9]+) ([0-9]+) ([0-9]+) ([0-9]+)$')) then ( v.action = $6; if (v.action eq 'sent') then ( set_collected_field('', 'date', $1); set_collected_field('', 'time', $2); set_collected_field('', 'c_ip', $3); set_collected_field('', 'cs_username', $4); v.key = $5; set_collected_field('', 'cs_method', v.action); set_collected_field('', 'cs_uri_stem', $7); set_collected_field('', 'sc_status', $8); set_collected_field('', 'sc_bytes', $9); set_collected_field('', 'cs_bytes', $10); set_collected_field('', 'time_taken', $11); set_collected_field('', 'downloads', 1); accept_collected_entry('', false); ); else if (v.action eq 'created') then ( set_collected_field('', 'date, ', $1); set_collected_field('', 'time', $2); set_collected_field('', 'c_ip', $3); set_collected_field('', 'cs_username', $4); v.key = $5; set_collected_field('', 'cs_method', v.action); set_collected_field('', 'cs_uri_stem', $7); set_collected_field('', 'sc_status', $8); set_collected_field('', 'sc_bytes', $9); set_collected_field('', 'cs_bytes', $10); set_collected_field('', 'time_taken', $11); set_collected_field('', 'uploads', 1); accept_collected_entry('', false); ); else if (v.action eq 'DELE') then ( set_collected_field('', 'date, ', $1); set_collected_field('', 'time', $2); set_collected_field('', 'c_ip', $3); set_collected_field('', 'cs_username', $4); v.key = $5; set_collected_field('', 'cs_method', v.action); set_collected_field('', 'cs_uri_stem', $7); set_collected_field('', 'sc_status', $8); set_collected_field('', 'sc_bytes', $9); set_collected_field('', 'cs_bytes', $10); set_collected_field('', 'time_taken', $11); accept_collected_entry('', false); ); else if (v.action eq 'RNTO') then ( set_collected_field('', 'date, ', $1); set_collected_field('', 'time', $2); set_collected_field('', 'c_ip', $3); set_collected_field('', 'cs_username', $4); v.key = $5; set_collected_field('', 'cs_method', v.action); set_collected_field('', 'cs_uri_stem', $7); set_collected_field('', 'sc_status', $8); set_collected_field('', 'sc_bytes', $9); set_collected_field('', 'cs_bytes', $10); set_collected_field('', 'time_taken', $11); accept_collected_entry('', false); ); else if (v.action eq 'RNFR') then ( set_collected_field('', 'date, ', $1); set_collected_field('', 'time', $2); set_collected_field('', 'c_ip', $3); set_collected_field('', 'cs_username', $4); v.key = $5; set_collected_field('', 'cs_method', v.action); set_collected_field('', 'cs_uri_stem', $7); set_collected_field('', 'sc_status', $8); set_collected_field('', 'sc_bytes', $9); set_collected_field('', 'cs_bytes', $10); set_collected_field('', 'time_taken', $11); accept_collected_entry('', false); ); ); #else echo(current_log_line()); ` # log.parsing_filters.parse database.numerical_fields = { events = { label = "$lang_stats.field_labels.events" default = true requires_log_field = false type = "int" display_format_type = "integer" entries_field = true } # events downloads = { label = "$lang_stats.field_labels.downloads" default = true requires_log_field = false type = "int" display_format_type = "integer" entries_field = false } # downloads uploads = { label = "$lang_stats.field_labels.uploads" default = true requires_log_field = false type = "int" display_format_type = "integer" entries_field = false } # uploads sc_bytes = { label = "$lang_stats.field_labels.sc_bytes" default = false log_field = "sc_bytes" requires_log_field = true type = "float" display_format_type = "bandwidth" } cs_bytes = { label = "$lang_stats.field_labels.cs_bytes" default = false log_field = "cs_bytes" requires_log_field = true type = "float" display_format_type = "bandwidth" } time_taken = { label = $lang_stats.field_labels.time_taken default = false requires_log_field = true type = float display_format_type = duration_milliseconds } # time_taken } # database.numerical_fields create_profile_wizard_options = { # How the reports should be grouped in the report menu report_groups = { date_time_group = "" } # report_groups } # create_profile_wizard_options } # gene6_ftp_w3c