Implementation of the blogspam.net server in golang
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
blacklist.d
.gitignore
.travis.yml
LICENSE
Makefile
README.md
check-blacklisted-fields.go
check-blacklisted-fields_test.go
check-dronebl.go
check-dronebl_test.go
check-example.go
check-example_test.go
check-ip.go
check-ip_test.go
check-length.go
check-length_test.go
check-link-repetition.go
check-link-repetition_test.go
check-lotsaurls.go
check-lotsaurls_test.go
check-mandatory.go
check-mandatory_test.go
check-multilinks.go
check-multilinks_test.go
check-mx.go
check-mx_test.go
check-name.go
check-name_test.go
check-sfs.go
check-sfs_test.go
check-size.go
check-size_test.go
check-surbl.go
check-surbl_test.go
main.go
main_test.go

README.md

Travis CI Go Report Card license

Golang BlogSpam Server

The BlogSpam.net service presents an API which allows incoming blog/forum comments to be tested for SPAM in real-time.

This repository contains an implementation of the API in golang, which allows you to run your own instance of the service, this superceeds the previous implementation in node.js.

Overview

The service presents a simple API over HTTP. There are only a small number of end-points:

  • POST /
    • Test the incoming submission for SPAM.
  • POST /stats
    • Retrieve the per-site SPAM/HAM statistics
  • GET /global-stats
    • Retrieve global SPAM/HAM stats.
  • GET /plugins
    • Retrieve the list of plugins.
  • POST /classify
    • Retrain a comment.

These endpoints, and the parameters they require, are documented upon the website:

Plugin Implementation

Although we refer to them as "plugins" the individual tests which are applied to incoming submissions are all in-process and hardwired - there is nothing dynamic about them.

Each plugin has a name, and an order, and each is invoked in turn upon the incoming submission. If any single plugin determines an incoming comment is SPAM then it is rejected, similarly any single plugin may decided a comment is definitely-HAM. Otherwise processing continues until all plugins have been invoked.

Installation

Providing you have a working golang environment you can install and launch like so:

$ go get github.com/BlogSpam-Net/blogspam-api
$ blogspam-api -host 127.0.0.1 -port 9999 -redis localhost:6379

As hinted in the command-line arguments you'll want to install redis upon the local-host, but otherwise there is no configuration or setup required.

Steve