Commit Graph

117 Commits

Author SHA1 Message Date
Alexandre Alapetite
c79c7640a2 API return OK for an empty request (#2855)
Fix https://framateam.org/freshrss/pl/yozcezrnufno9eut3173d4wpry
2020-03-30 19:17:12 +02:00
Alexandre Alapetite
cb4d009ebb GReader API consistent default category (#2840)
* GReader API consistent default category

#Fix https://github.com/FreshRSS/FreshRSS/issues/2839

* Also for subscription/list
2020-03-28 12:35:21 +01:00
Alexandre Alapetite
e7c5b03a4d GReader remove unsused parameter (#2816) 2020-02-29 22:30:19 +01:00
Alexandre Alapetite
0f94402b7e Better performance with yield (#2588)
* Better performance with yield

Largely decrease the time to first byte, and reduced memory consumtion.
Before, we used to make several copies in memory of the whole list of
articles before sending them to the client. Now streamed as they are
processed.

* Travis
2020-02-29 18:19:09 +01:00
Julien-Pierre Avérous
01576e6317 [API, extension] Use 'dateAdded()' to forge 'crawlTimeMsec' & 'timestampUsec' field in greader API. (#2773)
- Add the ability to customize 'dateAdded()', so an extension can change it if needed.
2020-01-18 11:58:46 +01:00
Julien-Pierre Avérous
9819a72293 Pass the entries to 'entry_before_display' extension hook (#2763)
* Pass the entries to 'entry_before_display' extension hook. - #2762

* Fix code-style.

* - Fix 'Whitespace found at end of line'.

Co-authored-by: Frans de Jonge <fransdejonge@gmail.com>
2020-01-16 13:02:05 +01:00
Marien Fressinaud
03ddcf0772 fix: Fix undefined function _t on WebSub (#2743)
I published an article via WebSub, but I never received it. So I checked
my logs to find why and I found the following stacktrace:

```
29/Dec/2019:15:58:32 +0000 "POST /api/pshb.php" 500
NOTICE: PHP message: PHP Fatal error:  Uncaught Error: Call to undefined function _t() in /path/app/Models/Category.php:83
Stack trace:
/path/app/Models/CategoryDAO.php(417): FreshRSS_Category->_id(1)
/path/app/Models/CategoryDAO.php(192): FreshRSS_CategoryDAO::daoToCategory(Array)
/path/app/Models/Feed.php(466): FreshRSS_CategoryDAO->searchById('1')
/path/app/Controllers/feedController.php(416): FreshRSS_Feed->cleanOldEntries()
/path/p/api/pshb.php(141): FreshRSS_feed_Controller::actualizeFeed(0, 'https://flus.io...', false, Object(SimplePie))
{main}
  thrown in /path/app/Models/Category.php on line 83
```

The `_t` function should be loaded with the Minz_Translate class, but
the latter isn't initialized on WebSub endpoint.

In my opinion, we should not have to care about this kind of detail of
implementation and it reveals a deeper architectural misconception, but
for now the fix should be enough. It’s quite difficult to reproduce
locally though.
2019-12-29 18:00:06 +01:00
Alexandre Alapetite
6a317d876c API 64-bit ID as string (#2621)
Fix https://github.com/FreshRSS/FreshRSS/issues/2620
2019-11-02 00:46:58 +01:00
Alexandre Alapetite
b20fddc330 Fix API i18n (#2565)
Fix https://github.com/FreshRSS/FreshRSS/issues/2564
2019-10-09 23:37:47 +02:00
Alexandre Alapetite
ef00513a81 Quick fix: API PDO visibility bug (#2545)
Introduced in https://github.com/FreshRSS/FreshRSS/pull/2522
2019-09-29 17:55:08 +02:00
Alexandre Alapetite
e3e5954394 PDO refactoring for code simplification (#2522)
* PDO refactor

* Automatic prefix when using the syntax `_tableName`
* Uniformity: MySQL is now PDO::ATTR_EMULATE_PREPARES = false just like SQLite and PostgreSQL, with consequences such as only one statement per query
* Use PDO methods exec(), query(), prepare() + execute() in a more efficient way
* Remove auto-update SQL code for versions older than FreshRSS 1.5 (3 years old)
* The name of the default category is set in PHP instead of in the DB (simplies SQL and allows changing the name according to the FreshRSS language)
* Rename `->bd` to `->pdo` (less of a frenshism, and more informative)
* Fix some requests, which were not compatible with MySQL prepared statements

* Whitespace

* Fix syntax for PostgreSQL sequences

+ MySQL install

* Minor formatting

* Fix lastInsertId for PostgreSQL

* Use PHP 5.6+ const

Take advantage of https://github.com/FreshRSS/FreshRSS/pull/2527
https://www.php.net/manual/en/migration56.new-features.php

* A bit of forgotten PHP 5.6 simplification for cURL

* Forgotten $s

* Mini fix custom user config

https://github.com/FreshRSS/FreshRSS/pull/2490/files#r326290346

* More work on install.php but not finished

* install.php working

* More cleaning of PDO in install

* Even more simplification

Take advantage of PDO->exec() to run multiple statements

* Disallow changing the name of the default category

https://github.com/FreshRSS/FreshRSS/pull/2522#discussion_r326967724
2019-09-29 16:22:50 +02:00
Alexandre Alapetite
28ab89146b API Reeder compatibility (#2526)
https://github.com/FreshRSS/FreshRSS/issues/2513
2019-09-18 13:03:53 +02:00
Alexandre Alapetite
fd33d92d41 Require PHP 5.5+ (#2495)
* Require PHP 5.5+

https://github.com/FreshRSS/FreshRSS/issues/2469#issuecomment-522255093
I think it would be reasonable to require PHP 5.5+ for the core of
FreshRSS after all.

As Frenzie said, WordPress currently requires PHP 5.6.20+, and it is the
most popular PHP application.

We would loose about 20% of the PHP servers according to
https://w3techs.com/technologies/details/pl-php/5/all but I expect this
number to drop fast after the release of CentOS 8 (CentOS accounts for
17% of Linux servers
https://w3techs.com/technologies/details/os-linux/all/all ).

Distributions:
* no impact on Ubuntu, Fedora, Alpine, OpenWRT, FreeBSD, OpenSuze,
Mageia, as all active versions have PHP > 7
* no impact on OpenSuze, Synology, as all active versions have PHP > 5.5
* we drop Debian 8 Jessie (-2020) - we keep supporting Debian 9 Stretch
(2017-06) - current is Debian 10 Buster
* we drop Red Hat 7 (-2024) - we keep supporting RHEL 8 (2019-05)
* we drop CentOS 7 (-2024) - we will support CentOS 8 (to be released
soonish)

When dropping older versions, I can better like when it is for a good
reason, and there is actually one with PHP 5.5, namely generators
(yield) https://php.net/language.generators.overview which I consider
using.

* Version note for JSON.php

* hex2bin

* Update .travis.yml

Co-Authored-By: Frans de Jonge <fransdejonge@gmail.com>
2019-08-20 14:55:43 +02:00
Nick Cross
1aa2af9752 Issue #2446 : Fix passing authentication headers (#2449)
* Issue #2446 : Fix passing authentication headers. Use CGIPassAuth is version is high enough

* Issue #2446 : Remove CGIPassAuth due to potential issues with AllowOverride rights.

* Tabs
2019-07-20 23:23:24 +02:00
Alexandre Alapetite
037c385947 Fix API remove category (#2412)
Fix https://github.com/FreshRSS/FreshRSS/issues/2411
2019-06-16 18:59:50 +02:00
Alexandre Alapetite
d26a49bc66 Fix API minor code syntax warning (#2362)
https://github.com/FreshRSS/FreshRSS/issues/2359#issuecomment-480620713
2019-04-07 21:50:26 +02:00
Alexandre Alapetite
cb00eafba0 Fever remove semicolomn from author (#2283)
https://github.com/FreshRSS/FreshRSS/issues/2281
2019-03-19 20:08:56 +01:00
Alexandre Alapetite
69eb651d56 Minor Unicode changes 2019-02-05 09:36:39 +01:00
Alexandre Alapetite
ce62ce0ebd Fever API encoding of special chars
https://github.com/FreshRSS/FreshRSS/issues/2241
2019-02-05 09:30:18 +01:00
Alexandre Alapetite
65602ab193 Case insensitive Authorization
https://github.com/FreshRSS/FreshRSS/issues/2233
2019-01-31 23:00:29 +01:00
Alexandre Alapetite
20223b8b01 Automatic API test (#2207)
* Automatic API test

Easier for end-user, smarter, and the guess testing of greader
authorization token was not reliable.

* Travis + minor
2019-01-05 12:33:18 +01:00
Alexandre Alapetite
a6623b7b2f Apache performance (#2202)
* Apache performance
API: Use SetEnvIf if available and fallback to RewriteRule
Docker: Disable unused modules.
Docker: Hard-include .htaccess to avoid having to scan for changes in
that file.
Docker: Disable security check of symlinks, which we do not use ayway.

* Apache readme

* Docker/Apache tuning
Run cron job with correct www-data user instead of root
Remove PHP GMP module uneeded for 64-bit Docker image
Add option to mount custom .htaccess for HTTP authentication
Re-add Apache module for HTTP authentication
Move Alpine-specific instructions to Docker file (instead of Apache
conf) to make it easier to have other base images than Alpine
2019-01-02 21:36:33 +01:00
Alexandre Alapetite
512d047f02 Update naming to WebSub (#2184)
Instead of PubSubHubbub / PuSH
2018-12-16 17:02:03 +01:00
Alexandre Alapetite
75a0b12c72 Documentation Vienna (#2126)
* Documentation Vienna / Open Reader

https://github.com/FreshRSS/FreshRSS/issues/2091
https://github.com/FreshRSS/FreshRSS/pull/2093
https://github.com/ViennaRSS/vienna-rss/issues/1197

* Remove references to Open Reader API for now
2018-12-16 14:43:32 +01:00
Alexandre Alapetite
0fce9892ff API encoding tuning (#2120)
Use only minimal XML->Unicode encoding for articles title.
Follow-up of https://github.com/FreshRSS/FreshRSS/pull/2093
2018-11-12 09:03:20 +01:00
Alexandre Alapetite
b672fc190d Tweaks for Vienna RSS (#2093)
* Tweaks for Vienna RSS

https://github.com/FreshRSS/FreshRSS/issues/2091
https://github.com/ViennaRSS/vienna-rss/issues/1197

* Fix get feed by URL

* Fix get item ids returning starred elements

* API add item ids by feed URL

* Add API filter `it`

https://feedhq.readthedocs.io/en/latest/api/reference.html#stream-items-ids

* API add `nt=` filter + refactoring

* No ; prefix for author

https://github.com/FreshRSS/FreshRSS/issues/2091#issuecomment-435562495

* Add id long form prefix and accept short id form

https://github.com/FreshRSS/FreshRSS/issues/2091#issuecomment-435631259

* Fix quote problem

https://github.com/FreshRSS/FreshRSS/issues/2091#issuecomment-435683930

* Isolate bug fix for News+

https://github.com/FreshRSS/FreshRSS/issues/2091#issuecomment-435687041

* Rework encoding conventions

https://github.com/FreshRSS/FreshRSS/issues/2091#issuecomment-437441834

* Unicode escaping alternative

Alternative approach to encode XML special characters and other
problematic characters into their Unicode fullwidth version when we
cannot use HTML-encoding because clients disagree wether they should
HTML-decode or not.
https://github.com/FreshRSS/FreshRSS/issues/2091#issuecomment-436059559
2018-11-11 17:31:50 +01:00
Alexandre Alapetite
a1dc5ada67 Add Fever API debug (#2063)
* Add Fever API debug

https://github.com/FreshRSS/FreshRSS/issues/2043

* Default without debug logging
2018-10-24 13:17:28 +02:00
Alexandre Alapetite
ee902ee7c4 Minor Google Reader API comment 2018-10-13 16:41:05 +02:00
Alexandre Alapetite
8ee8a573f1 Custom labels (#2027)
* First draft of custom tags

https://github.com/FreshRSS/FreshRSS/issues/928
https://github.com/FreshRSS/FreshRSS/issues/1367

* SMALLINT to BIGINT for id_entry

And uppercase SQL types

* Fix layout for unreads

* Start UI menu

* Change menu order

* Clean database helpers

https://github.com/FreshRSS/FreshRSS/pull/2027#discussion_r217971535

* Travis rules do not understand PostgreSQL constants

Grrr

* Tag controller + UI

* Add column attributes to tags

* Use only favicon for now, for label

* Fix styling for different themes

* Constant for maximum InnoDB index length in Unicode

https://github.com/FreshRSS/FreshRSS/pull/2027#discussion_r219052200
(I would have personnally prefered keeping the readability of a real
value instead of a constant, in this case of many SQL fields)

* Use FreshRSS_Factory::createCategoryDao

* Add view of all articles containing any tag

* Fix search in tags

* Mark as read tags

* Partial auto-update unread tags

* More auto update tag unreads

* Add tag deletion

* Do not purge tagged articles

* Minor comment

* Fix SQLite and UI bug

* Google Reader API support for user tags

Add SQL check that tag names must be distinct from category names

* whitespace

* Add missing API for EasyRSS

* Compatibility SQLite

Problematic parentheses

* Add SQL DISTINCT for cases with multiple tags

* Fix for PostgreSQL

PostgreSQL needs some additional type hint to avoid "could not determine
data type of parameter $1"

http://www.postgresql-archive.org/Could-not-determine-data-type-of-parameter-1-tp2171092p2171094.html
2018-09-29 20:47:17 +02:00
Alexandre Alapetite
b323ed0846 Improve authors (#2025)
* Links for authors and multiple authors

Favour ';' as a separator instead of ',' to better cope with
multi-author scientific articles.
Follow-up of https://github.com/FreshRSS/FreshRSS/pull/1997 ,
https://github.com/FreshRSS/FreshRSS/issues/1968,
https://github.com/FreshRSS/FreshRSS/pull/2023

* Change i18n authors

* Update layout

* Unicode-compatible search

Example for `author:Loïc`

* author <em> styling

* Final details

* Minor spacing
2018-09-16 10:46:27 +02:00
Alexandre Alapetite
763ceff7ca FeverAPI 32-bit fixes (#1964)
* FeverAPI 32-bit fixes

https://github.com/FreshRSS/FreshRSS/issues/1962

* Small fixes

https://github.com/FreshRSS/FreshRSS/pull/1964#discussion_r204213613
2018-07-23 22:50:16 +02:00
Alexandre Alapetite
82ac9454dd Fix check username in API (#1957)
* Fix check username in API

Fix https://github.com/FreshRSS/FreshRSS/issues/1955

* Changelog 1955

https://github.com/FreshRSS/FreshRSS/issues/1955
https://github.com/FreshRSS/FreshRSS/pull/1957
2018-07-08 11:22:51 +02:00
Alexandre Alapetite
031acde003 Fix extension hook for updated articles (#1932)
* Fix extension hook for updated articles

https://github.com/FreshRSS/FreshRSS/issues/1926

* Enable extensions during PubSubHubbub

* A little array protection

* Changelog 1926

https://github.com/FreshRSS/FreshRSS/issues/1926
https://github.com/FreshRSS/FreshRSS/pull/1932

* Add null check
2018-06-13 09:27:02 +02:00
Alexandre Alapetite
c0f2df3ef0 Fever fixes (#1931)
* Fever fixes

Was hardcoded for MySQL. Bug in "before" parameter. Bug in mark all as
read.

* Fix construct

* Changelog 1930

https://github.com/FreshRSS/FreshRSS/issues/193
https://github.com/FreshRSS/FreshRSS/pull/1931
2018-06-12 21:11:43 +02:00
Alexandre Alapetite
e4775bf30d Fever API: Log messages for wrong credendials (#1910) 2018-06-01 23:20:29 +02:00
Kevin Papst
8f1bad60d0 Add Fever API and user documentation (#1836)
* added fever api and documentation

* spaces to tabs

* fixed code format

* added links

* added utf8 to header

* removed XML support

* removed before check, as we have to convert it afterwards

* added sandboxed setting (currently disabled)
added support for extensions using entry_before_display

* listFeedsOrderUpdate LIMIT

https://github.com/FreshRSS/FreshRSS/pull/1836/files#r175287881

* removed custom sql by using FreshRSS_FeedDAO::listFeedsOrderUpdate()

* fixed mark all as read

* replaced custom sql for getUnread() and getStarred() with dao functions

* removed sanitization functions

* Rework fever login

* Fix config bug

Plus documentation

* Fix array syntax

For compatibility with PHP 5.3

* Disable cookies and session for API

* Fix currentUser

* added response header and error log

* adjusted phpdoc to match new authentication

* Mechanism to delete old keys

* replace PHP_INT_MAX with zero to disable limit

* replace method_exists with check for explicit methods

* removed Press support and smaller refactoring + updated docu

* Rewrite bindParamArray

Avoid one of the SQL injection risks

* Docs and readme

* Fix API link

* Simplify reverse key check

Using userConfig
2018-05-24 21:53:47 +02:00
Alexandre Alapetite
84d891f8cf Light Boolean search implementation (#1828)
* Light Boolean search implementation

"Hello intitle:World OR date:P1D example"
https://github.com/FreshRSS/FreshRSS/issues/879

* Doc Boolean search

* Doc typos
2018-03-14 17:20:41 +01:00
Alexandre Alapetite
cb1c788c8a Fix API bug with EasyRSS (#1800)
Regression in FreshRSS 1.10.0
https://github.com/FreshRSS/FreshRSS/issues/1799
2018-02-28 09:29:09 +01:00
Alexandre Alapetite
c79b8fb46e Fix commented Minz_Log::debug (#1788)
Move Minz_Log::debug() examples after the Minz_Configuration::register()
2018-02-16 11:14:23 +01:00
Alexandre Alapetite
79f8b440d1 API /reader/api/0/stream/items/contents (#1774)
* API /reader/api/0/stream/items/contents

For FeedMe

* Fix continuation

* Continuation in stream/items/ids

* Fix multiple continuations

* Allow empty POST tokens

For FeedMe.
This token is not used by e.g. The Old Reader API.
There is the Authorization header anyway.
TODO: Check security consequences

* API compatibility FeedMe: add/remove feed

FeedMe uses GET for some parameters typically given by POST

* A bit of sanitization

* Links to FeedMe

* API favicons more robust when base_url is not set

* Changelog FeedMe
2018-02-08 20:11:05 +01:00
Alexis Degrugillier
8c2113f9e6 Add mute strategy configuration (#1750) 2018-01-01 20:34:06 +01:00
Alexandre Alapetite
52d0988655 Use __DIR__ for relative include and require
For uniformity, and to avoid having PHP searching in include_path.
http://php.net/manual/function.include.php
https://github.com/FreshRSS/FreshRSS/pull/1715
https://github.com/FreshRSS/FreshRSS/pull/1711#issuecomment-350581350
2017-12-11 21:11:34 +01:00
Alexandre Alapetite
b1c317a253 Log rotation, use Minz_Log, new log constants
ADMIN_LOG, API_LOG, PSHB_LOG
2017-12-10 21:58:24 +01:00
Alexandre Alapetite
07fa243bf2 Fix link encoding in API (#1686)
https://github.com/FreshRSS/FreshRSS/issues/1683
https://github.com/Alkarex/EasyRSS/issues/35
2017-11-11 12:21:41 +01:00
Alexandre Alapetite
92a1bf3917 Update some HTTP links (doc, HTTPS) (#1641)
https://github.com/FreshRSS/FreshRSS/issues/1605
2017-09-26 22:20:25 +02:00
Frans de Jonge
4e174ed9dd [ci] Add Travis (#1619)
* [ci] Add Travis

* Exclude some libs

* Semi-auto whitespace fixes

* line length in SQLite

* Exclude tests from line length

* Feed.php line length

* Feed.php: get rid of unnecessary concat

* Feed.php: line length

* bootstrap.php: no newline at end of file

* Allow concatenating across multiple lines

* Add Travis badge

* do-install line length

* update-or-create-user line length

* cli/create-user line length

* tests/app/Models/SearchTest.php fix indentation

* tests/app/Models/UserQueryTest.php fix indentation

* tests/app/Models/CategoryTest.php fix indentation

* [fix] PHP 5.3 on precise

* cli/do-install no spaces

* cli/list-users line length

* cli/reconfigure line length

* empty catch statements

* api/index line length nonsense

* spaces before semicolon

* app/Models/EntryDAO bunch of indentation

* extra blank lines

* spaces before comma in function call

* testing tabwidth

* increase to 10

* comment out tabwidth line

* try older phpcs version 3.0.0RC4

* line length exception for app/install.php

* proper spaces

* stray spaces in i18n

* Minz/ModelPdo line length

* Minz whitespace

* greader line length

* greader elseif placement

* app/Models/Feed.php spacing in function argument

* ignore php 5.3

* app/Models/ConfigurationSetter.php stray whitespace

* EntryDAOSQLite line length

* I vote for higher max line length =P

* ignore SQL

* remove classname complaint

* line length/more legible SQL

* ignore line length nonsense

* greader line length

* feedController issues

* uppercase TRUE, FALSE, NULL

* revert

* importExportController lowercase null

* Share.php default value not necessary because ! is_array () a few lines down

* CategoryDAO constants should be UPPERCASE

* EntryDAO reduce line length

* contentious autofix

* Allow failures on all versions of PHP except 7.1 because reasons
2017-09-22 12:13:46 +02:00
Alexandre Alapetite
46c31a75d7 Fix timestamp format with PostgreSQL for EasyRSS
https://github.com/Alkarex/EasyRSS/issues/31
2017-07-23 11:51:46 +02:00
Alexandre Alapetite
16b269f33d Merge pull request #1594 from sandfoxme/patch-1
Fix Illegal String Offset warning (PHP 7.1) in greader.php
2017-07-13 14:24:01 +02:00
Anton Smirnov
78ca4341d1 Use PHP <= 5.3 array syntax in greader.php fix 2017-07-13 14:34:01 +03:00
Anton Smirnov
93fa066298 Fix Illegal String Offset warning (PHP 7.1) in greader.php 2017-07-12 18:58:12 +03:00