Không có mô tả

Steve Kemp c0dd51908f Fix the broken CI process 10 tháng trước cách đây
.github c0dd51908f Fix the broken CI process 10 tháng trước cách đây
webhook 7637f9b0c2 Initial import 6 năm trước cách đây
LICENSE 7637f9b0c2 Initial import 6 năm trước cách đây
README.md ea71e09d03 Document installation in the new world of go modules 5 năm trước cách đây
go.mod 6645b0ad26 Bumped dependencies, and resolved a single linter warning 1 năm trước cách đây
go.sum 6645b0ad26 Bumped dependencies, and resolved a single linter warning 1 năm trước cách đây
rss2hook.go be9505e8ac update regex to allow for urls with equal signs 10 tháng trước cách đây
sample.cfg 7637f9b0c2 Initial import 6 năm trước cách đây

README.md

Go Report Card license Release

RSS2Hook

This project is a self-hosted utility which will make HTTP POST requests to remote web-hooks when new items appear in an RSS feed.

Rational

I have a couple of webhooks in-place already which will take incoming HTTP submissions and "do stuff" with them, for example:

  • Posting to my alerting system.
    • Which is called purppura and is pretty neat.
  • Posting to IRC.
    • IRC was mattermost before slack before born.

I also have a bunch of RSS feeds that I follow, typically these include github releases of projects. For example my git-host runs gitbucket so I subscribe to the release feed of that, to ensure I'm always up to date:

Installation

There are two ways to install this project from source, which depend on the version of the go version you're using.

If you prefer you can fetch a binary from our release page. Currently there is only a binary for Linux (amd64) due to the use of cgo in our dependencies.

Build without Go Modules (Go before 1.11)

go get -u github.com/skx/rss2hook

Build with Go Modules (Go 1.11 or higher)

git clone https://github.com/skx/rss2hook ;# make sure to clone outside of GOPATH
cd rss2hook
go install

Setup

There are two parts to the setup:

  • Configure the list of feeds and the corresponding hooks to POST to.
  • Ensure the program is running.

For the first create a configuration-file like so:

http://example.com/feed.rss = https://webhook.example.com/notify/me

(There is a sample configuration file sample.cfg which will demonstrate this more verbosely.)

You can use your favourite supervision tool to launch the deamon, but you can test interactively like so:

 $ rss2hook -config ./sample.cfg

Sample Webhook Receiver

There is a simple webserver located beneath webhook/ which will listen upon http://localhost:8080, and dump any POST submission to the console.

You can launch it like so:

 cd webhook/
 go run webhook.go

Testing it via curl would look like this:

  $ curl --header "Content-Type: application/json"  \
  --request POST \
  --data '{"username":"blah","password":"blah"}' \
  http://localhost:8080/

The sample.cfg file will POST to this end-point so you can see how things work:

$ rss2hook --config=sample.cfg

Implementation Notes

  • By default the server will poll all configured feeds immediately upon startup.
    • It will look for changes every five minutes.
  • To ensure items are only announced once state is kept on the filesystem.
    • Beneath the directory ~/.rss2hook/seen/.
  • Feed items are submitted to the webhook as JSON.

Github Setup

This repository is configured to run tests upon every commit, and when pull-requests are created/updated. The testing is carried out via .github/run-tests.sh which is used by the github-action-tester action.

Releases are automated in a similar fashion via .github/build, and the github-action-publish-binaries action.

Steve