|
3 years ago | |
---|---|---|
dist | 3 years ago | |
lib | 3 years ago | |
locale | 3 years ago | |
sql/SQLite3 | 3 years ago | |
tests | 3 years ago | |
vendor-bin | 3 years ago | |
www/tt-rss/images | 3 years ago | |
.gitattributes | 3 years ago | |
.gitignore | 3 years ago | |
.php_cs.dist | 3 years ago | |
AUTHORS | 3 years ago | |
CHANGELOG | 3 years ago | |
CONTRIBUTING.md | 3 years ago | |
LICENSE | 3 years ago | |
README.md | 3 years ago | |
RoboFile.php | 3 years ago | |
UPGRADING | 3 years ago | |
arsse.php | 3 years ago | |
composer.json | 3 years ago | |
composer.lock | 3 years ago | |
phpdoc.dist.xml | 3 years ago | |
robo | 3 years ago | |
robo.bat | 3 years ago |
The Arsse is a news aggregator server which implements multiple synchronization protocols, including version 1.2 of NextCloud News' protocol and the Tiny Tiny RSS protocol (details below). Unlike most other aggregator servers, The Arsse does not include a Web front-end (though one is planned as a separate project), and it relies on existing protocols to maximize compatibility with existing clients.
At present the software should be considered in an "alpha" state: though its core subsystems are covered by unit tests and should be free of major bugs, not everything has been rigorously tested. Additionally, many features one would expect from other similar software have yet to be implemented. Areas of future work include:
The Arsse has the following requirements:
At present, installation of The Arsse is rather manual. We hope to improve this in the future, but for now the steps below should help get you started. The instructions and configuration samples assume you will be using Ubuntu 16.04 (or equivalent Debian) and Nginx; we hope to expand official support for different configurations in the future as well.
/usr/share
/usr/share/arsse/config.php
using config.defaults.php
as a guide. The file you create only needs to contain non-default settings. The userPreAuth
setting may be of particular interest/usr/share/arsse/dist/arsse.service
to /lib/systemd/system
sudo systemctl enable arsse
sudo systemctl start arsse
Sample configuration parameters for Nginx can be found in arsse/dist/nginx.conf
and arsse/dist/nginx-fcgi.conf
; the samples assume a server group has already been defined for PHP. How to configure an Nginx service to use PHP and install the required PHP extensions is beyond the scope of this document, however.
The Arsse currently includes a user add <username> [<password>]
console command to add users to the database; other user management tasks require manual database edits. Alternatively, if the Web server is configured to handle authentication, you may set the configuration option userPreAuth
to true
and The Arsse will defer to the server and automatically add any missing users as it encounters them.
If installing from the Git repository rather than a download package, you will need to follow extra steps before the instructions in the section above.
First, you must install Composer to fetch required PHP libraries. Once Composer is installed, dependencies may be downloaded with the following command:
php composer.phar install -o --no-dev --no-scripts
Second, you may wish to create an example configuration file using the following command:
php ./arsse.php conf save-defaults "./config.defaults.php"
The Arsse is made available under the permissive MIT license. See the LICENSE
and AUTHORS
files included with the distribution or source code for exact legal text and copyright holders. Dependencies included in the distribution may be governed by other licenses.
Please refer to CONTRIBUTING.md
for guidelines on contributing code to The Arsse.
The Arsse does not guarantee it will handle type casting of input in the same way as reference implementations for its supported protocols. As a general rule, clients should endeavour to send only correct input.
The Arsse does, however, guarantee output to be of the same type. If it is not, this is a bug and should be reported.
The Arsse makes use of the picoFeed newsfeed parsing library to sanitize article content. The exact sanitization parameters may differ from those of reference implementations for protocols The Arsse supports.
As a general rule, The Arsse should yield the same output as the reference implementation for all valid inputs (otherwise you've found a bug), but there are exception, either because the NextCloud News (hereafter "NCN") protocol description is at times ambiguous or incomplete, or because implementation details necessitate it differ; this section along with the General section above detail these differences.
userId
parameter: feeds in The Arsse are deduplicated, and have no owner/feeds/all
route lists only feeds which should be checked for updates, and it also returns all userId
attributes as empty strings: feeds in The Arsse are deduplicated, and have no ownerlastLoginTimestamp
attribute of the user metadata is always the current time: The Arsse's implementation of the protocol is fully statelessnewestItemId
provided; The Arsse returns 422
422
422
in cases of rejectionAs a general rule, The Arsse should yield the same output as the reference implementation for all valid inputs (otherwise you've found a bug), but there are exception, either because the Tiny Tiny RSS (hereafter "TTRSS") protocol description is incomplete, erroneous, or out of date, or because TTRSS itself is buggy, or because implementation details necessitate The Arsse differ; this section along with the General section above detail these differences.
The Arsse supports both the set of extensions to the TTRSS protocol defined by FeedReader, as well as the getCompactHeadlines
operation defined by News+.
We are not aware of any other extensions to the TTRSS protocol. If you know of any more, please let us know.
getPref
operation is not implemented; it returns UNKNOWN_METHOD
shareToPublished
operation is not implemented; it returns UNKNOWN_METHOD
updateArticle
operation is not implemented and will gracefully failsearch
parameter of the getHeadlines
operation is not implemented; the operation will proceed as if no search string were specifiedsanitize
, force_update
, and has_sandbox
parameters of the getHeadlines
operation are ignoredfeed_id
values for the getCompactHeadlines
operation are not supported and will yield an INCORRECT_USAGE
errorNOT_LOGGED_IN
error; The Arsse returns a non-standard MALFORMED_INPUT
error insteadsubscribeToFeed
processing normally produces an error; The Arsse instead chooses the first feed it findssetArticleLabel
operation with an invalid label normally silently fails; The Arsse returns an INVALID_USAGE
error instead"0"
getHeadlines
operation normally uses custom sorting for "special" feeds; The Arsse's default sort order is equivalent to feed_dates
for all feedsgetCounters
operation normally omits members with zero unread; The Arsse includes everything to appease some clientssetArticleLabel
operation; The Arsse returns a correct count in all cases-3
when providing the getHeadlines
operation with category ID -3
; The Arsse retuns the correct resultslimit
or skip
together with unread_only
for the getFeeds
operation as it produces unpredictable results; The Arsse produces predictable resultsview_mode
parameter of the getHeadlines
operation is out of date; The Arsse matches the actual implementation and supports the undocumented published
and has_note
valuessearch_mode
parameter for the getHeadlines
operation, but this seems to be ignored; The Arsse does not implement itoutput_mode
parameter for the getCounters
operation, but this seems to be ignored; The Arsse does not implement itgetCompactHeadlines
operation states the default value for limit
is 20, but the reference implementation defaults to unlimited; The Arsse also defaults to unlimited