# Port for Aardvark to listen on
port: 1729

# Which backend to proxy to if request is kosher
proxy_url: "http://localhost:8080/"

# Default IP forward header from httpd
ipheader: x-forwarded-for

# This is the text of the 403 response if a request is blocked
spam_response: "Your request has been blocked. If you feel this is in error, please let us know at: abuse@infra.apache.org"

# Debug prints for ...debug. disabled by default
debug: false


##############################
# The actual spam scan rules #
##############################

# When using the naïve spam corpus for form data, this threshold causes a block.
# 0 is considered perfectly sane ham, 50 is bordering on spam, 100 is definitely spam
enable_naive_scan: true
naive_spam_threshold: 60

# These automatically cause a ban
spamurls:
    - "/jira/rest/api/.+/issue/AAR-\\d+/comment"

# Don't run spam check here...
ignoreurls:
    - "AttachTemporaryFile"

# Match any of these to banninate
postmatches:
    - "mobilestrikehacktools"
    - "monsterlegendshackx"
    - "router customer service"
    - "router customer support"
    - "customer service number"
    - "customer care phone"
    - "\\b(https?[:/%32AF]*\\S*essay\\S*)\\b"
    - "escorts"
    - "solitairetimes"
    - "myspades"
    - "myeuchre"
    - "ringtone"
    - "keywords INNER JOIN keyworddefs ON keywords.keywordid"
    - "\\b(https?[:/%32AF]*\\S*resume\\S*)\\b"
    - "\\b(https?[:/%32AF]*\\S*800support\\S*)\\b"
    - "drzafarsaifi"
    - "\\b(https?[:/%32AF]*\\S*dissertation\\S*)\\b"
    - "\\b(https?[:/%32AF]*\\S*assignment\\S*)\\b"
    - "assignmenthelp"
    - "paperwriting"
    - "bestdiss"
    - "besttempmail"
    - "eventeca"
    - "ngaydem"
    - "moneyprinters"
    - "free[- ]watch.+?listen"
    - "https://tvvslivenba.co/"

# Match multiple of these to ban
multimatch:
    auxiliary:
        - "p.?h.?o.?n.?e"
        - "s.?u.?p.?p.?o.?r.?t"
    required:
        - "(1[-.\\s]+\\d\\d\\d[-.\\s]+\\d\\d\\d[-.\\s]+\\d\\d\\d\\d)"
