package module
v0.0.0-...-8ddca92 Latest Latest

This package is not in the latest version of its module.

Go to latest
Published: Jul 4, 2023 License: LGPL-3.0 Imports: 18 Imported by: 0



readeef is a self-hosted feed aggregator. Similar to Google Reader, but on your own server.

For a more detailed description, click here. Some screenshots may also be had on this page

Quick start

readeef is written in Go, and as of October 2017, requires at least version 1.8 of the language. The currently supported databases are PostgreSQL, and SQLite. SQLite support is only built if CGO is enabled. The later is not recommended, as locking problems will occur.

A single binary may be built from the sources. It current contains three subcommands, one for starting the server, one for rebuinding the search index (while the server is stopped), and an administrative command, for manipulating users. Since readeef can use bleve for FTS capabilities, bleve-specific tags (e.g.: libstemmer, cld2, etc) should be passed here.

go build

Unless you are using SQLite, readeef will need to be configured as well. readeef uses TOML for configuration. A minimal configuration file might be something like this:

    driver = "postgres"
    connect = "host=/var/run/postgresql user=postgresuser dbname=readeefdbname"

You may provide the standalone server with a config files. The default server configuration is documented in under the variable: DefaultCfg.

./readeef -config $CONFIG_FILE server

The source comes with an embedded UI using angular 4. A different UI may be provided by providing a path to it via the following configuration directive:

[ui] path = "/path/to/a/different/ui"

All three subcommands come with a comprehensive usage text:

readeef search-index --help

Adding a user

As a first step, you might want to add a new user to the system, using the 'user-admin' subcommand:

readeef -config $CONFIG_PATH user-admin add $USER_LOGIN $USER_PASS

Turning a user into an admin

You might then want to turn that user into an administrator:

./readeef -config $CONFIG_FILE user-admin set $USER_LOGIN admin true

"But I just want to try it"

# Install the server in $GOPATH/.bin/
go get
# Run it using the default settings
readeef server

The server will run on port 8080, and you may login using the user 'admin' and password 'admin', using SQLite (if CGO is enabled)




This section is empty.


View Source
var (
	ErrNotConfigured = errors.New("Hubbub callback URL is not set")
	ErrNoFeedHubLink = errors.New("Feed does not contain a hub link")
	ErrSubscribed    = errors.New("Feed already subscribed")
	ErrNotSubscribed = errors.New("Feed is not subscribed")
View Source
var (
	ErrNoFeed = errors.New("Feed not found")


func NewFileSystem

func NewFileSystem() (http.FileSystem, error)

NewFileSystem creates a new filesystem with pre-filled binary data.

func NewTimeoutClient

func NewTimeoutClient(connectTimeout time.Duration, readWriteTimeout time.Duration) *http.Client

func TimeoutDialer

func TimeoutDialer(ct time.Duration, rwt time.Duration) func(net, addr string) (c net.Conn, err error)


type FeedManager

type FeedManager struct {
	// contains filtered or unexported fields

func NewFeedManager

func NewFeedManager(repo repo.Feed, c config.Config, l log.Log) *FeedManager

func (*FeedManager) AddFeed

func (fm *FeedManager) AddFeed(feed content.Feed)
func (fm *FeedManager) AddFeedByLink(link string) (content.Feed, error)

func (*FeedManager) AddFeedProcessor

func (fm *FeedManager) AddFeedProcessor(p processor.Feed)

func (*FeedManager) DiscoverFeeds

func (fm *FeedManager) DiscoverFeeds(link string) ([]content.Feed, error)

func (*FeedManager) RemoveFeed

func (fm *FeedManager) RemoveFeed(feed content.Feed)
func (fm *FeedManager) RemoveFeedByLink(link string) (content.Feed, error)

func (*FeedManager) SetHubbub

func (fm *FeedManager) SetHubbub(hubbub *Hubbub)

func (*FeedManager) Start

func (fm *FeedManager) Start(ctx context.Context) error

type Hubbub

type Hubbub struct {
	// contains filtered or unexported fields

func NewHubbub

func NewHubbub(
	service repo.Service,
	c config.Config,
	l log.Log,
	endpoint string,
	feedManager *FeedManager,
) *Hubbub

func (*Hubbub) InitSubscriptions

func (h *Hubbub) InitSubscriptions() error

func (*Hubbub) Subscribe

func (h *Hubbub) Subscribe(f content.Feed) error

func (*Hubbub) Unsubscribe

func (h *Hubbub) Unsubscribe(f content.Feed) error

type SubscriptionError

type SubscriptionError struct {
	Subscription content.Subscription
	// contains filtered or unexported fields


Path Synopsis
Package mock_repo is a generated GoMock package.
Package mock_repo is a generated GoMock package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL