# 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

# 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)"
