# the fully qualified module or class of the application
#application='CollectorApp'

[resource]

    #+include ./common_resource.ini

    [[fs]]

        #+include ./common_fs.ini

        # the default dump field
        #dump_field=upload_file_minidump

        # the suffix used to identify a dump file
        #dump_file_suffix=.dump

        # a path to a file system
        #fs_root='./crashes'

        # the suffix used to identify a json file
        #json_file_suffix=.json

        # the suffix used to identify a gzipped json file
        #jsonz_file_suffix=.jsonz

        # the directory base name to use for the named radix tree storage
        #name_branch_base=name

        # umask to use for new files
        #umask=18

    [[logging]]

        +include ./common_logging.ini

        # logging level for the logging to stderr (10 - DEBUG, 20 - INFO, 30 - WARNING, 40 - ERROR, 50 - CRITICAL)
        #stderr_error_logging_level=10

        # python logging system format for logging to stderr
        #stderr_line_format_string={asctime} {levelname} - {threadName} - {message}

        # logging level for the log file (10 - DEBUG, 20 - INFO, 30 - WARNING, 40 - ERROR, 50 - CRITICAL)
        #syslog_error_logging_level=40

        # syslog facility string ("user", "local0", etc)
        #syslog_facility_string=user

        # syslog hostname
        #syslog_host=localhost

        # python logging system format for syslog entries
        #syslog_line_format_string=collector (pid {process}): {asctime} {levelname} - {threadName} - {message}

        # syslog port
        #syslog_port=514

    [[rabbitmq]]

        #+include ./common_rabbitmq.ini

        # delays in seconds between retries
        #backoff_delays='10, 30, 60, 120, 300'

        # toggle for using or ignoring the throttling flag
        #filter_on_legacy_processing='False'

        # the hostname of the RabbitMQ server
        # see "resource.rabbitmq.host" for the default or override it here
        #host=localhost

        # the port for the RabbitMQ server
        # see "resource.rabbitmq.port" for the default or override it here
        #port=5672

        # the name of priority crash queue name within RabbitMQ
        # see "resource.rabbitmq.priority_queue_name" for the default or override it here
        #priority_queue_name=socorro.priority

        # the class responsible for connecting to RabbitMQ
        #rabbitmq_class='socorro.external.rabbitmq.connection_context.ConnectionContextPooled'

        # a classname for the type of wrapper for RabbitMQ connections
        # see "resource.rabbitmq.rabbitmq_connection_wrapper_class" for the default or override it here
        #rabbitmq_connection_wrapper_class='socorro.external.rabbitmq.connection_context.Connection'

        # the user's RabbitMQ password
        # see "secrets.rabbitmq.rabbitmq_password" for the default or override it here
        #rabbitmq_password=guest

        # the name of the user within the RabbitMQ instance
        # see "secrets.rabbitmq.rabbitmq_user" for the default or override it here
        #rabbitmq_user=guest

        # the name of reprocessing crash queue name within RabbitMQ
        #reprocessing_queue_name=socorro.reprocessing

        # the name of the queue to recieve crashes
        #routing_key=socorro.reprocessing

        # the name of standard crash queue name within RabbitMQ
        # see "resource.rabbitmq.standard_queue_name" for the default or override it here
        #standard_queue_name=socorro.normal

        # a class that will manage transactions
        #transaction_executor_class='socorro.database.transaction_executor.TransactionExecutorWithInfiniteBackoff'

        # the name of the RabbitMQ virtual host
        # see "resource.rabbitmq.virtual_host" for the default or override it here
        #virtual_host=/

        # seconds between log during retries
        #wait_log_interval=10

    [[redactor]]

        #+include ./common_redactor.ini

        # a list of keys not allowed in a redacted processed crash
        # see "resource.redactor.forbidden_keys" for the default or override it here
        #forbidden_keys='url, email, user_id, exploitability,json_dump.sensitive,upload_file_minidump_flash1.json_dump.sensitive,upload_file_minidump_flash2.json_dump.sensitive,upload_file_minidump_browser.json_dump.sensitive'

        # the name of the class that implements a 'redact' method
        #redactor_class='socorro.external.crashstorage_base.Redactor'

[secrets]

    #+include ./common_secrets.ini

    [[rabbitmq]]

        #+include ./common_rabbitmq.ini

        # the user's RabbitMQ password
        #rabbitmq_password=guest

        # the name of the user within the RabbitMQ instance
        #rabbitmq_user=guest

[collector]

    # a boolean telling the collector to use a crash_id provided in the crash submission
    #accept_submitted_crash_id='False'

    # a boolean telling the collector to use a any legacy_processingflag submitted with the crash
    #accept_submitted_legacy_processing='False'

    # the name of the class that handles collection
    #collector_class='socorro.collector.wsgi_breakpad_collector.BreakpadCollector'

    # the name of the form field containing the raw dump
    #dump_field=upload_file_minidump

    # the prefix to return to the client in front of the OOID
    #dump_id_prefix=bp-

[logging]

    # logging level for the logging to stderr (10 - DEBUG, 20 - INFO, 30 - WARNING, 40 - ERROR, 50 - CRITICAL)
    # see "resource.logging.stderr_error_logging_level" for the default or override it here
    #stderr_error_logging_level=10

    # python logging system format for logging to stderr
    # see "resource.logging.stderr_line_format_string" for the default or override it here
    #stderr_line_format_string={asctime} {levelname} - {threadName} - {message}

    # logging level for the log file (10 - DEBUG, 20 - INFO, 30 - WARNING, 40 - ERROR, 50 - CRITICAL)
    # see "resource.logging.syslog_error_logging_level" for the default or override it here
    #syslog_error_logging_level=40

    # syslog facility string ("user", "local0", etc)
    # see "resource.logging.syslog_facility_string" for the default or override it here
    #syslog_facility_string=user

    # syslog hostname
    # see "resource.logging.syslog_host" for the default or override it here
    #syslog_host=localhost

    # python logging system format for syslog entries
    # see "resource.logging.syslog_line_format_string" for the default or override it here
    #syslog_line_format_string=collector (pid {process}): {asctime} {levelname} - {threadName} - {message}

    # syslog port
    # see "resource.logging.syslog_port" for the default or override it here
    #syslog_port=514

[storage]

    # the source storage class
    crashstorage_class='socorro.external.crashstorage_base.PolyCrashStorage'

    # a list of keys not allowed in a redacted processed crash
    # see "resource.redactor.forbidden_keys" for the default or override it here
    #forbidden_keys='url, email, user_id, exploitability,json_dump.sensitive,upload_file_minidump_flash1.json_dump.sensitive,upload_file_minidump_flash2.json_dump.sensitive,upload_file_minidump_browser.json_dump.sensitive'

    # the name of the class that implements a 'redact' method
    # see "resource.redactor.redactor_class" for the default or override it here
    #redactor_class='socorro.external.crashstorage_base.Redactor'

    # a comma delimited list of storage classes
    storage_classes='socorro.external.fs.crashstorage.FSLegacyRadixTreeStorage, socorro.external.ceph.crashstorage.BotoS3CrashStorage'

    [[storage0]]

        # None
        crashstorage_class='socorro.external.fs.crashstorage.FSLegacyRadixTreeStorage'

        # the default dump field
        # see "resource.fs.dump_field" for the default or override it here
        #dump_field=upload_file_minidump

        # the suffix used to identify a dump file
        # see "resource.fs.dump_file_suffix" for the default or override it here
        #dump_file_suffix=.dump

        # a list of keys not allowed in a redacted processed crash
        # see "resource.redactor.forbidden_keys" for the default or override it here
        #forbidden_keys='url, email, user_id, exploitability'

        # a path to a file system
        # see "resource.fs.fs_root" for the default or override it here
        #fs_root='./crashes'

        # the suffix used to identify a json file
        # see "resource.fs.json_file_suffix" for the default or override it here
        #json_file_suffix=.json

        # the suffix used to identify a gzipped json file
        # see "resource.fs.jsonz_file_suffix" for the default or override it here
        #jsonz_file_suffix=.jsonz

        # the directory base name to use for the named radix tree storage
        # see "resource.fs.name_branch_base" for the default or override it here
        #name_branch_base=name

        # the name of the class that implements a 'redact' method
        # see "resource.redactor.redactor_class" for the default or override it here
        #redactor_class='socorro.external.crashstorage_base.Redactor'

        # umask to use for new files
        # see "resource.fs.umask" for the default or override it here
        #umask=18

    [[storage1]]

        # AWS_ACCESS_KEY_ID
        access_key=''

        # delays in seconds between retries
        #backoff_delays='10, 30, 60, 120, 300'

        # How to organize the buckets (default: daily)
        #buckets=daily

        # None
        crashstorage_class='socorro.external.ceph.crashstorage.BotoS3CrashStorage'

        # a list of keys not allowed in a redacted processed crash
        # see "resource.redactor.forbidden_keys" for the default or override it here
        #forbidden_keys='url, email, user_id, exploitability,json_dump.sensitive,upload_file_minidump_flash1.json_dump.sensitive,upload_file_minidump_flash2.json_dump.sensitive,upload_file_minidump_browser.json_dump.sensitive'

        # The hostname of the S3 crash storage to submit to
        host=localhost

        # The hostname of the S3 crash storage to submit to
        port=38080

        # the name of the class that implements a 'redact' method
        # see "resource.redactor.redactor_class" for the default or override it here
        #redactor_class='socorro.external.crashstorage_base.Redactor'

        # AWS_SECRET_ACCESS_KEY
        secret_access_key=''

        # a class that will manage transactions
        #transaction_executor_class='socorro.database.transaction_executor.TransactionExecutorWithLimitedBackoff'

        # seconds between log during retries
        #wait_log_interval=10

[throttler]

    # ignore the Thottleable protocol
    #minimal_version_for_understanding_refusal='\'\'\'{"Firefox": "3.5.4"}\'\'\''

    # ignore the Thottleable protocol
    #never_discard='True'

    # the throttling rules
    #throttle_conditions='\'\'\'[(\'*\', \'lambda d: "HangID" in d\\n              and d.get("ProcessType", "browser") == "browser"\', None), (\'Comments\', \'lambda x: x\', 100), (\'ReleaseChannel\', \'lambda x: x in ("aurora", "beta", "esr")\', 100), (\'ReleaseChannel\', "lambda x: x.startswith(\'nightly\')", 100), (\'ProductName\', \'Firefox\', 10), (\'ProductName\', \'Fennec\', 100), (\'Version\', "re.compile(r\'\\\\..*?[a-zA-Z]+\')", 100), (\'ProductName\', \'lambda x: x[0] in "TSC"\', 100), (None, True, 0)]\'\'\''

    # the class that implements the throttling action
    #throttler_class='socorro.collector.throttler.LegacyThrottler'

[web_server]

    # the IP address from which to accept submissions
    #ip_address=127.0.0.1

    # the port to listen to for submissions
    #port=8882

    # a class implementing a wsgi web server
    #wsgi_server_class='socorro.webapi.servers.CherryPy'

