summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitlab-ci.yml44
-rw-r--r--api/index.php2
-rw-r--r--backend.php15
-rwxr-xr-xclasses/api.php12
-rwxr-xr-xclasses/article.php36
-rw-r--r--classes/auth/base.php6
-rw-r--r--classes/backend.php2
-rw-r--r--classes/digest.php2
-rwxr-xr-xclasses/feeditem/atom.php8
-rwxr-xr-xclasses/feeditem/common.php31
-rwxr-xr-xclasses/feeditem/rss.php8
-rwxr-xr-xclasses/feeds.php25
-rwxr-xr-xclasses/handler/public.php20
-rw-r--r--classes/iauthmodule.php2
-rwxr-xr-xclasses/logger/sql.php11
-rw-r--r--classes/pluginhandler.php5
-rwxr-xr-xclasses/pluginhost.php66
-rwxr-xr-xclasses/pref/feeds.php2
-rw-r--r--classes/pref/prefs.php266
-rwxr-xr-xclasses/rpc.php13
-rwxr-xr-xclasses/rssutils.php136
-rw-r--r--css/default.css20
-rw-r--r--css/default.css.map2
-rwxr-xr-xcss/tt-rss.less32
-rw-r--r--include/colors.php5
-rwxr-xr-xinclude/controls.php2
-rw-r--r--include/functions.php74
-rwxr-xr-xinclude/login_form.php9
-rw-r--r--include/version.php47
-rw-r--r--index.php22
-rwxr-xr-xinstall/index.php2
-rw-r--r--js/AppBase.js69
-rw-r--r--js/Article.js57
-rw-r--r--js/CommonDialogs.js2
-rw-r--r--js/Feeds.js20
-rwxr-xr-xjs/Headlines.js147
-rw-r--r--js/PrefHelpers.js44
-rwxr-xr-xjs/prefs.js29
-rw-r--r--js/tt-rss.js127
-rwxr-xr-xplugins/af_comics/filters/af_comics_comicpress.php33
-rwxr-xr-xplugins/af_comics/init.php23
-rw-r--r--[-rwxr-xr-x]plugins/af_proxy_http/init.php (renamed from plugins/af_zz_imgproxy/init.php)15
-rwxr-xr-xplugins/af_readability/init.php15
-rw-r--r--plugins/af_readability/vendor/andreskrey/Readability/Configuration.php26
-rw-r--r--plugins/af_readability/vendor/andreskrey/Readability/Nodes/DOM/DOMNodeList.php82
-rw-r--r--plugins/af_readability/vendor/andreskrey/Readability/Nodes/NodeTrait.php51
-rw-r--r--plugins/af_readability/vendor/andreskrey/Readability/Nodes/NodeUtility.php20
-rw-r--r--plugins/af_readability/vendor/andreskrey/Readability/Readability.php56
-rw-r--r--plugins/af_youtube_embed/init.php7
-rw-r--r--plugins/auth_internal/init.php205
-rw-r--r--prefs.php16
-rw-r--r--public.php15
-rw-r--r--schema/ttrss_schema_mysql.sql13
-rw-r--r--schema/ttrss_schema_pgsql.sql13
-rw-r--r--schema/versions/mysql/139.sql13
-rw-r--r--schema/versions/pgsql/139.sql13
-rw-r--r--templates/digest_template.txt1
-rw-r--r--templates/digest_template_html.txt4
-rw-r--r--templates/email_article_template.txt2
-rw-r--r--templates/mail_change_template.txt10
-rw-r--r--templates/otp_disabled_template.txt10
-rw-r--r--templates/password_change_template.txt10
-rw-r--r--templates/resetpass_link_template.txt3
-rw-r--r--templates/resetpass_template.txt9
-rw-r--r--tests/ApiTest.php256
-rw-r--r--themes/light.css2
-rw-r--r--themes/light.css.map1
-rw-r--r--themes/light.less1
-rw-r--r--themes/night.css20
-rw-r--r--themes/night.css.map2
-rw-r--r--themes/night_blue.css20
-rw-r--r--themes/night_blue.css.map2
-rw-r--r--utils/gitlab-ci/check-schema.sh5
-rw-r--r--utils/gitlab-ci/config-template.php207
-rw-r--r--utils/gitlab-ci/nginx-default81
-rw-r--r--utils/gitlab-ci/php-lint.sh5
-rw-r--r--utils/gitlab-ci/phpmd-ruleset.xml20
-rw-r--r--utils/gitlab-ci/phpmd.sh8
78 files changed, 1489 insertions, 1228 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
deleted file mode 100644
index cd5ecb0d4..000000000
--- a/.gitlab-ci.yml
+++ /dev/null
@@ -1,44 +0,0 @@
-phpmd:
- image: php:5.6
- when: manual
- script:
- - sh utils/gitlab-ci/php-lint.sh
- - curl -o /usr/bin/phpmd -L http://static.phpmd.org/php/2.6.0/phpmd.phar
- - chmod +x /usr/bin/phpmd
- - sh utils/gitlab-ci/phpmd.sh
-
-schema:
- image: fox/selenium-ci
- when: manual
- script:
- - /etc/init.d/postgresql start
- - /usr/local/sbin/init-database.sh
- - sh ./utils/gitlab-ci/check-schema.sh
-
-phpunit_basic:
- image: fox/selenium-ci
- when: manual
- script:
- - /etc/init.d/postgresql start
- - /usr/local/sbin/init-database.sh
- - sh ./utils/gitlab-ci/check-schema.sh
- - cp utils/gitlab-ci/config-template.php config.php
- - su -s /bin/bash www-data -c "php ./update.php --debug-feed 1"
- - wget -O /usr/bin/phpunit https://phar.phpunit.de/phpunit-5.7.phar
- - chmod +x /usr/bin/phpunit
- - phpunit tests/*.php
-
-phpunit_functional:
- image: fox/selenium-ci
- when: manual
- script:
- - /etc/init.d/postgresql start
- - /etc/init.d/nginx start
- - /etc/init.d/php5-fpm start
- - /usr/local/sbin/init-database.sh
- - sh ./utils/gitlab-ci/check-schema.sh
- - ln -s `pwd` ../../tt-rss
- - cp utils/gitlab-ci/config-template.php config.php
- - chmod -R 777 cache lock feed-icons
- - /usr/local/sbin/init-selenium.sh
- - phpunit tests/functional/*.php
diff --git a/api/index.php b/api/index.php
index 3fbf6bf57..363f2ae13 100644
--- a/api/index.php
+++ b/api/index.php
@@ -22,8 +22,6 @@
ini_set('session.use_cookies', 0);
ini_set("session.gc_maxlifetime", 86400);
- define('AUTH_DISABLE_OTP', true);
-
if (defined('ENABLE_GZIP_OUTPUT') && ENABLE_GZIP_OUTPUT &&
function_exists("ob_gzhandler")) {
diff --git a/backend.php b/backend.php
index b2eba083e..cb158f705 100644
--- a/backend.php
+++ b/backend.php
@@ -2,21 +2,6 @@
set_include_path(dirname(__FILE__) ."/include" . PATH_SEPARATOR .
get_include_path());
- /* remove ill effects of magic quotes */
-
- if (get_magic_quotes_gpc()) {
- function stripslashes_deep($value) {
- $value = is_array($value) ?
- array_map('stripslashes_deep', $value) : stripslashes($value);
- return $value;
- }
-
- $_POST = array_map('stripslashes_deep', $_POST);
- $_GET = array_map('stripslashes_deep', $_GET);
- $_COOKIE = array_map('stripslashes_deep', $_COOKIE);
- $_REQUEST = array_map('stripslashes_deep', $_REQUEST);
- }
-
$op = $_REQUEST["op"];
@$method = $_REQUEST['subop'] ? $_REQUEST['subop'] : $_REQUEST["method"];
diff --git a/classes/api.php b/classes/api.php
index 44c9841ce..6fb87d04f 100755
--- a/classes/api.php
+++ b/classes/api.php
@@ -74,10 +74,10 @@ class API extends Handler {
}
if (get_pref("ENABLE_API_ACCESS", $uid)) {
- if (authenticate_user($login, $password)) { // try login with normal password
+ if (authenticate_user($login, $password, false, Auth_Base::AUTH_SERVICE_API)) { // try login with normal password
$this->wrap(self::STATUS_OK, array("session_id" => session_id(),
"api_level" => self::API_LEVEL));
- } else if (authenticate_user($login, $password_base64)) { // else try with base64_decoded password
+ } else if (authenticate_user($login, $password_base64, false, Auth_Base::AUTH_SERVICE_API)) { // else try with base64_decoded password
$this->wrap(self::STATUS_OK, array("session_id" => session_id(),
"api_level" => self::API_LEVEL));
} else { // else we are not logged in
@@ -535,6 +535,7 @@ class API extends Handler {
/* Labels */
+ /* API only: -4 All feeds, including virtual feeds */
if ($cat_id == -4 || $cat_id == -2) {
$counters = Counters::getLabelCounters(true);
@@ -582,7 +583,7 @@ class API extends Handler {
if ($include_nested && $cat_id) {
$sth = $pdo->prepare("SELECT
id, title, order_id FROM ttrss_feed_categories
- WHERE parent_cat = ? AND owner_uid = ? ORDER BY id, title");
+ WHERE parent_cat = ? AND owner_uid = ? ORDER BY order_id, title");
$sth->execute([$cat_id, $_SESSION['uid']]);
@@ -611,12 +612,13 @@ class API extends Handler {
$limit_qpart = "";
}
+ /* API only: -3 All feeds, excluding virtual feeds (e.g. Labels and such) */
if ($cat_id == -4 || $cat_id == -3) {
$sth = $pdo->prepare("SELECT
id, feed_url, cat_id, title, order_id, ".
SUBSTRING_FOR_DATE."(last_updated,1,19) AS last_updated
FROM ttrss_feeds WHERE owner_uid = ?
- ORDER BY cat_id, title " . $limit_qpart);
+ ORDER BY order_id, title " . $limit_qpart);
$sth->execute([$_SESSION['uid']]);
} else {
@@ -627,7 +629,7 @@ class API extends Handler {
FROM ttrss_feeds WHERE
(cat_id = :cat OR (:cat = 0 AND cat_id IS NULL))
AND owner_uid = :uid
- ORDER BY cat_id, title " . $limit_qpart);
+ ORDER BY order_id, title " . $limit_qpart);
$sth->execute([":uid" => $_SESSION['uid'], ":cat" => $cat_id]);
}
diff --git a/classes/article.php b/classes/article.php
index 943528f2a..fc81838ed 100755
--- a/classes/article.php
+++ b/classes/article.php
@@ -305,19 +305,9 @@ class Article extends Handler_Protected {
post_int_id = ? AND owner_uid = ?");
$sth->execute([$int_id, $_SESSION['uid']]);
- foreach ($tags as $tag) {
- $tag = Article::sanitize_tag($tag);
-
- if (!Article::tag_is_valid($tag)) {
- continue;
- }
-
- if (preg_match("/^[0-9]*$/", $tag)) {
- continue;
- }
-
- // print "<!-- $id : $int_id : $tag -->";
+ $tags = FeedItem_Common::normalize_categories($tags);
+ foreach ($tags as $tag) {
if ($tag != '') {
$sth = $this->pdo->prepare("INSERT INTO ttrss_tags
(post_int_id, owner_uid, tag_name)
@@ -331,7 +321,6 @@ class Article extends Handler_Protected {
/* update tag cache */
- sort($tags_to_cache);
$tags_str = join(",", $tags_to_cache);
$sth = $this->pdo->prepare("UPDATE ttrss_user_entries
@@ -802,27 +791,6 @@ class Article extends Handler_Protected {
return $rv;
}
- static function sanitize_tag($tag) {
- $tag = trim($tag);
-
- $tag = mb_strtolower($tag, 'utf-8');
-
- $tag = preg_replace('/[,\'\"\+\>\<]/', "", $tag);
-
- if (DB_TYPE == "mysql") {
- $tag = preg_replace('/[\x{10000}-\x{10FFFF}]/u', "\xEF\xBF\xBD", $tag);
- }
-
- return $tag;
- }
-
- static function tag_is_valid($tag) {
- if (!$tag || is_numeric($tag) || mb_strlen($tag) > 250)
- return false;
-
- return true;
- }
-
static function get_article_image($enclosures, $content, $site_url) {
$article_image = "";
diff --git a/classes/auth/base.php b/classes/auth/base.php
index dbc77f8cd..4cbc23589 100644
--- a/classes/auth/base.php
+++ b/classes/auth/base.php
@@ -2,6 +2,8 @@
class Auth_Base {
private $pdo;
+ const AUTH_SERVICE_API = '_api';
+
function __construct() {
$this->pdo = Db::pdo();
}
@@ -9,14 +11,14 @@ class Auth_Base {
/**
* @SuppressWarnings(unused)
*/
- function check_password($owner_uid, $password) {
+ function check_password($owner_uid, $password, $service = '') {
return false;
}
/**
* @SuppressWarnings(unused)
*/
- function authenticate($login, $password) {
+ function authenticate($login, $password, $service = '') {
return false;
}
diff --git a/classes/backend.php b/classes/backend.php
index 5bd724728..122e28c65 100644
--- a/classes/backend.php
+++ b/classes/backend.php
@@ -88,7 +88,7 @@ class Backend extends Handler {
}
function help() {
- $topic = basename(clean($_REQUEST["topic"])); // only one for now
+ $topic = clean_filename($_REQUEST["topic"]); // only one for now
if ($topic == "main") {
$info = get_hotkeys_info();
diff --git a/classes/digest.php b/classes/digest.php
index f2533d160..c9e9f24e7 100644
--- a/classes/digest.php
+++ b/classes/digest.php
@@ -103,9 +103,11 @@ class Digest
$tpl->setVariable('CUR_DATE', date('Y/m/d', $local_ts));
$tpl->setVariable('CUR_TIME', date('G:i', $local_ts));
+ $tpl->setVariable('TTRSS_HOST', SELF_URL_PATH);
$tpl_t->setVariable('CUR_DATE', date('Y/m/d', $local_ts));
$tpl_t->setVariable('CUR_TIME', date('G:i', $local_ts));
+ $tpl_t->setVariable('TTRSS_HOST', SELF_URL_PATH);
$affected_ids = array();
diff --git a/classes/feeditem/atom.php b/classes/feeditem/atom.php
index a962b59f2..a03080981 100755
--- a/classes/feeditem/atom.php
+++ b/classes/feeditem/atom.php
@@ -103,20 +103,20 @@ class FeedItem_Atom extends FeedItem_Common {
function get_categories() {
$categories = $this->elem->getElementsByTagName("category");
- $cats = array();
+ $cats = [];
foreach ($categories as $cat) {
if ($cat->hasAttribute("term"))
- array_push($cats, trim($cat->getAttribute("term")));
+ array_push($cats, $cat->getAttribute("term"));
}
$categories = $this->xpath->query("dc:subject", $this->elem);
foreach ($categories as $cat) {
- array_push($cats, clean(trim($cat->nodeValue)));
+ array_push($cats, $cat->nodeValue);
}
- return $cats;
+ return $this->normalize_categories($cats);
}
function get_enclosures() {
diff --git a/classes/feeditem/common.php b/classes/feeditem/common.php
index 3193ed273..f208f4a48 100755
--- a/classes/feeditem/common.php
+++ b/classes/feeditem/common.php
@@ -162,4 +162,35 @@ abstract class FeedItem_Common extends FeedItem {
}
}
+ static function normalize_categories($cats) {
+
+ $tmp = [];
+
+ foreach ($cats as $rawcat) {
+ $tmp = array_merge($tmp, explode(",", $rawcat));
+ }
+
+ $tmp = array_map(function($srccat) {
+ $cat = clean(trim(mb_strtolower($srccat)));
+
+ // we don't support numeric tags
+ if (is_numeric($cat))
+ $cat = 't:' . $cat;
+
+ $cat = preg_replace('/[,\'\"]/', "", $cat);
+
+ if (DB_TYPE == "mysql") {
+ $cat = preg_replace('/[\x{10000}-\x{10FFFF}]/u', "\xEF\xBF\xBD", $cat);
+ }
+
+ if (mb_strlen($cat) > 250)
+ $cat = mb_substr($cat, 0, 250);
+
+ return $cat;
+ }, $tmp);
+
+ asort($tmp);
+
+ return array_unique($tmp);
+ }
}
diff --git a/classes/feeditem/rss.php b/classes/feeditem/rss.php
index 916c73ec4..1f7953c51 100755
--- a/classes/feeditem/rss.php
+++ b/classes/feeditem/rss.php
@@ -97,19 +97,19 @@ class FeedItem_RSS extends FeedItem_Common {
function get_categories() {
$categories = $this->elem->getElementsByTagName("category");
- $cats = array();
+ $cats = [];
foreach ($categories as $cat) {
- array_push($cats, trim($cat->nodeValue));
+ array_push($cats, $cat->nodeValue);
}
$categories = $this->xpath->query("dc:subject", $this->elem);
foreach ($categories as $cat) {
- array_push($cats, clean(trim($cat->nodeValue)));
+ array_push($cats, $cat->nodeValue);
}
- return $cats;
+ return $this->normalize_categories($cats);
}
function get_enclosures() {
diff --git a/classes/feeds.php b/classes/feeds.php
index b89f4e4ca..e1478a696 100755
--- a/classes/feeds.php
+++ b/classes/feeds.php
@@ -2,6 +2,8 @@
require_once "colors.php";
class Feeds extends Handler_Protected {
+ const NEVER_GROUP_FEEDS = [ -6, 0 ];
+ const NEVER_GROUP_BY_DATE = [ -2, -1, -3 ];
private $params;
@@ -49,7 +51,9 @@ class Feeds extends Handler_Protected {
if ($error)
$reply .= " <i title=\"" . htmlspecialchars($error) . "\" class='material-icons icon-error'>error</i>";
- $reply .= "</span></span>";
+ $reply .= "</span>";
+ $reply .= "<span id='feed_current_unread' style='display: none'></span>";
+ $reply .= "</span>";
$reply .= "<span class=\"right\">";
$reply .= "<span id='selected_prompt'></span>";
@@ -199,7 +203,8 @@ class Feeds extends Handler_Protected {
$qfh_ret = $this->queryFeedHeadlines($params);
}
- $vfeed_group_enabled = get_pref("VFEED_GROUP_BY_FEED") && $feed != -6;
+ $vfeed_group_enabled = get_pref("VFEED_GROUP_BY_FEED") &&
+ !(in_array($feed, Feeds::NEVER_GROUP_FEEDS) && !$cat_view);
$result = $qfh_ret[0]; // this could be either a PDO query result or a -1 if first id changed
$feed_title = $qfh_ret[1];
@@ -1438,7 +1443,7 @@ class Feeds extends Handler_Protected {
$start_ts = isset($params["start_ts"]) ? $params["start_ts"] : false;
$check_first_id = isset($params["check_first_id"]) ? $params["check_first_id"] : false;
$skip_first_id_check = isset($params["skip_first_id_check"]) ? $params["skip_first_id_check"] : false;
- $order_by = isset($params["order_by"]) ? $params["order_by"] : false;
+ //$order_by = isset($params["order_by"]) ? $params["order_by"] : false;
$ext_tables_part = "";
$limit_query_part = "";
@@ -1693,12 +1698,18 @@ class Feeds extends Handler_Protected {
if (is_numeric($feed)) {
// proper override_order applied above
if ($vfeed_query_part && !$ignore_vfeed_group && get_pref('VFEED_GROUP_BY_FEED', $owner_uid)) {
- $yyiw_desc = $order_by == "date_reverse" ? "" : "desc";
+
+ if (!(in_array($feed, Feeds::NEVER_GROUP_BY_DATE) && !$cat_view)) {
+ $yyiw_desc = $order_by == "date_reverse" ? "" : "desc";
+ $yyiw_order_qpart = "yyiw $yyiw_desc, ";
+ } else {
+ $yyiw_order_qpart = "";
+ }
if (!$override_order) {
- $order_by = "yyiw $yyiw_desc, ttrss_feeds.title, ".$order_by;
+ $order_by = "$yyiw_order_qpart ttrss_feeds.title, $order_by";
} else {
- $order_by = "yyiw $yyiw_desc, ttrss_feeds.title, ".$override_order;
+ $order_by = "$yyiw_order_qpart ttrss_feeds.title, $override_order";
}
}
@@ -1915,7 +1926,7 @@ class Feeds extends Handler_Protected {
$sum = 0;
for ($i = 0; $i < strlen($name); $i++) {
- $sum += ord($name{$i});
+ $sum += ord($name[$i]);
}
$sum %= count($colormap);
diff --git a/classes/handler/public.php b/classes/handler/public.php
index 06c01df57..b81fb03b8 100755
--- a/classes/handler/public.php
+++ b/classes/handler/public.php
@@ -509,7 +509,7 @@ class Handler_Public extends Handler {
<!DOCTYPE html>
<html>
<head>
- <title><?php echo __("Share with Tiny Tiny RSS") ?> ?></title>
+ <title><?php echo __("Share with Tiny Tiny RSS") ?></title>
<?php
echo stylesheet_tag("css/default.css");
echo javascript_tag("lib/prototype.js");
@@ -996,6 +996,7 @@ class Handler_Public extends Handler {
$tpl->setVariable('LOGIN', $login);
$tpl->setVariable('RESETPASS_LINK', $resetpass_link);
+ $tpl->setVariable('TTRSS_HOST', SELF_URL_PATH);
$tpl->addBlock('message');
@@ -1203,27 +1204,30 @@ class Handler_Public extends Handler {
public function pluginhandler() {
$host = new PluginHost();
- $plugin = basename(clean($_REQUEST["plugin"]));
+ $plugin_name = clean_filename($_REQUEST["plugin"]);
$method = clean($_REQUEST["pmethod"]);
- $host->load($plugin, PluginHost::KIND_USER, 0);
+ $host->load($plugin_name, PluginHost::KIND_USER, 0);
$host->load_data();
- $pclass = $host->get_plugin($plugin);
+ $plugin = $host->get_plugin($plugin_name);
- if ($pclass) {
- if (method_exists($pclass, $method)) {
- if ($pclass->is_public_method($method)) {
- $pclass->$method();
+ if ($plugin) {
+ if (method_exists($plugin, $method)) {
+ if ($plugin->is_public_method($method)) {
+ $plugin->$method();
} else {
+ user_error("PluginHandler[PUBLIC]: Requested private method '$method' of plugin '$plugin_name'.", E_USER_WARNING);
header("Content-Type: text/json");
print error_json(6);
}
} else {
+ user_error("PluginHandler[PUBLIC]: Requested unknown method '$method' of plugin '$plugin_name'.", E_USER_WARNING);
header("Content-Type: text/json");
print error_json(13);
}
} else {
+ user_error("PluginHandler[PUBLIC]: Requested method '$method' of unknown plugin '$plugin_name'.", E_USER_WARNING);
header("Content-Type: text/json");
print error_json(14);
}
diff --git a/classes/iauthmodule.php b/classes/iauthmodule.php
index 9ec674078..2d0c98709 100644
--- a/classes/iauthmodule.php
+++ b/classes/iauthmodule.php
@@ -1,4 +1,4 @@
<?php
interface IAuthModule {
- function authenticate($login, $password);
+ function authenticate($login, $password); // + optional third parameter: $service
}
diff --git a/classes/logger/sql.php b/classes/logger/sql.php
index 989539e5d..1b44b1e5f 100755
--- a/classes/logger/sql.php
+++ b/classes/logger/sql.php
@@ -15,6 +15,17 @@ class Logger_SQL {
// limit context length, DOMDocument dumps entire XML in here sometimes, which may be huge
$context = mb_substr($context, 0, 8192);
+ $server_params = [
+ "IP" => "REMOTE_ADDR",
+ "Request URI" => "REQUEST_URI",
+ "User agent" => "HTTP_USER_AGENT",
+ ];
+
+ foreach ($server_params as $n => $p) {
+ if (isset($_SERVER[$p]))
+ $context .= "\n$n: " . $_SERVER[$p];
+ }
+
// passed error message may contain invalid unicode characters, failing to insert an error here
// would break the execution entirely by generating an actual fatal error instead of a E_WARNING etc
$errstr = UConverter::transcode($errstr, 'UTF-8', 'UTF-8');
diff --git a/classes/pluginhandler.php b/classes/pluginhandler.php
index d10343e09..9682e440f 100644
--- a/classes/pluginhandler.php
+++ b/classes/pluginhandler.php
@@ -5,15 +5,18 @@ class PluginHandler extends Handler_Protected {
}
function catchall($method) {
- $plugin = PluginHost::getInstance()->get_plugin(clean($_REQUEST["plugin"]));
+ $plugin_name = clean($_REQUEST["plugin"]);
+ $plugin = PluginHost::getInstance()->get_plugin($plugin_name);
if ($plugin) {
if (method_exists($plugin, $method)) {
$plugin->$method();
} else {
+ user_error("PluginHandler: Requested unknown method '$method' of plugin '$plugin_name'.", E_USER_WARNING);
print error_json(13);
}
} else {
+ user_error("PluginHandler: Requested method '$method' of unknown plugin '$plugin_name'.", E_USER_WARNING);
print error_json(14);
}
}
diff --git a/classes/pluginhost.php b/classes/pluginhost.php
index d09ecca17..6158880f2 100755
--- a/classes/pluginhost.php
+++ b/classes/pluginhost.php
@@ -60,6 +60,8 @@ class PluginHost {
const HOOK_FILTER_TRIGGERED = 40;
const HOOK_GET_FULL_TEXT = 41;
const HOOK_ARTICLE_IMAGE = 42;
+ const HOOK_FEED_TREE = 43;
+ const HOOK_IFRAME_WHITELISTED = 44;
const KIND_ALL = 1;
const KIND_SYSTEM = 2;
@@ -128,28 +130,44 @@ class PluginHost {
}
}
- function add_hook($type, $sender) {
+ function add_hook($type, $sender, $priority = 50) {
+ $priority = (int) $priority;
+
if (!is_array($this->hooks[$type])) {
- $this->hooks[$type] = array();
+ $this->hooks[$type] = [];
+ }
+
+ if (!is_array($this->hooks[$type][$priority])) {
+ $this->hooks[$type][$priority] = [];
}
- array_push($this->hooks[$type], $sender);
+ array_push($this->hooks[$type][$priority], $sender);
+ ksort($this->hooks[$type]);
}
function del_hook($type, $sender) {
if (is_array($this->hooks[$type])) {
- $key = array_Search($sender, $this->hooks[$type]);
- if ($key !== FALSE) {
- unset($this->hooks[$type][$key]);
+ foreach (array_keys($this->hooks[$type]) as $prio) {
+ $key = array_search($sender, $this->hooks[$type][$prio]);
+
+ if ($key !== FALSE) {
+ unset($this->hooks[$type][$prio][$key]);
+ }
}
}
}
function get_hooks($type) {
if (isset($this->hooks[$type])) {
- return $this->hooks[$type];
+ $tmp = [];
+
+ foreach (array_keys($this->hooks[$type]) as $prio) {
+ $tmp = array_merge($tmp, $this->hooks[$type][$prio]);
+ }
+
+ return $tmp;
} else {
- return array();
+ return [];
}
}
function load_all($kind, $owner_uid = false, $skip_init = false) {
@@ -170,7 +188,7 @@ class PluginHost {
foreach ($plugins as $class) {
$class = trim($class);
- $class_file = strtolower(basename($class));
+ $class_file = strtolower(clean_filename($class));
if (!is_dir(__DIR__."/../plugins/$class_file") &&
!is_dir(__DIR__."/../plugins.local/$class_file")) continue;
@@ -475,4 +493,34 @@ class PluginHost {
function get_owner_uid() {
return $this->owner_uid;
}
+
+ // handled by classes/pluginhandler.php, requires valid session
+ function get_method_url($sender, $method, $params) {
+ return get_self_url_prefix() . "/backend.php?" .
+ http_build_query(
+ array_merge(
+ [
+ "op" => "pluginhandler",
+ "plugin" => strtolower(get_class($sender)),
+ "method" => $method
+ ],
+ $params));
+ }
+
+ // WARNING: endpoint in public.php, exposed to unauthenticated users
+ function get_public_method_url($sender, $method, $params) {
+ if ($sender->is_public_method($method)) {
+ return get_self_url_prefix() . "/public.php?" .
+ http_build_query(
+ array_merge(
+ [
+ "op" => "pluginhandler",
+ "plugin" => strtolower(get_class($sender)),
+ "pmethod" => $method
+ ],
+ $params));
+ } else {
+ user_error("get_public_method_url: requested method '$method' of '" . get_class($sender) . "' is private.");
+ }
+ }
}
diff --git a/classes/pref/feeds.php b/classes/pref/feeds.php
index c55affd77..f672a0375 100755
--- a/classes/pref/feeds.php
+++ b/classes/pref/feeds.php
@@ -312,7 +312,7 @@ class Pref_Feeds extends Handler_Protected {
array_push($root['items'], $feed);
}
- $root['param'] = vsprintf(_ngettext('(%d feed)', '(%d feeds)', count($cat['items'])), count($cat['items']));
+ $root['param'] = vsprintf(_ngettext('(%d feed)', '(%d feeds)', count($root['items'])), count($root['items']));
}
$fl = array();
diff --git a/classes/pref/prefs.php b/classes/pref/prefs.php
index e7e7a365e..4214ac6a8 100644
--- a/classes/pref/prefs.php
+++ b/classes/pref/prefs.php
@@ -118,10 +118,20 @@ class Pref_Prefs extends Handler_Protected {
function changepassword() {
+ if (defined('_TTRSS_DEMO_INSTANCE')) {
+ print "ERROR: ".format_error("Disabled in demo version.");
+ return;
+ }
+
$old_pw = clean($_POST["old_password"]);
$new_pw = clean($_POST["new_password"]);
$con_pw = clean($_POST["confirm_password"]);
+ if ($old_pw == $new_pw) {
+ print "ERROR: ".format_error("New password must be different from the old one.");
+ return;
+ }
+
if ($old_pw == "") {
print "ERROR: ".format_error("Old password cannot be blank.");
return;
@@ -194,6 +204,37 @@ class Pref_Prefs extends Handler_Protected {
$full_name = clean($_POST["full_name"]);
$active_uid = $_SESSION["uid"];
+ $sth = $this->pdo->prepare("SELECT email, login, full_name FROM ttrss_users WHERE id = ?");
+ $sth->execute([$active_uid]);
+
+ if ($row = $sth->fetch()) {
+ $old_email = $row["email"];
+
+ if ($old_email != $email) {
+ $mailer = new Mailer();
+
+ require_once "lib/MiniTemplator.class.php";
+
+ $tpl = new MiniTemplator;
+
+ $tpl->readTemplateFromFile("templates/mail_change_template.txt");
+
+ $tpl->setVariable('LOGIN', $row["login"]);
+ $tpl->setVariable('NEWMAIL', $email);
+ $tpl->setVariable('TTRSS_HOST', SELF_URL_PATH);
+
+ $tpl->addBlock('message');
+
+ $tpl->generateOutputToString($message);
+
+ $mailer->mail(["to_name" => $row["login"],
+ "to_address" => $row["email"],
+ "subject" => "[tt-rss] Mail address change notification",
+ "message" => $message]);
+
+ }
+ }
+
$sth = $this->pdo->prepare("UPDATE ttrss_users SET email = ?,
full_name = ? WHERE id = ?");
$sth->execute([$email, $full_name, $active_uid]);
@@ -359,6 +400,30 @@ class Pref_Prefs extends Handler_Protected {
print "</form>";
print "</div>"; # content pane
+
+ if ($_SESSION["auth_module"] == "auth_internal") {
+
+ print "<div dojoType='dijit.layout.ContentPane' title=\"" . __('App passwords') . "\">";
+
+ print_notice("You can create separate passwords for API clients. Using one is required if you enable OTP.");
+
+ print "<div id='app_passwords_holder'>";
+ $this->appPasswordList();
+ print "</div>";
+
+ print "<hr>";
+
+ print "<button style='float : left' class='alt-primary' dojoType='dijit.form.Button'
+ onclick=\"Helpers.AppPasswords.generate()\">" .
+ __('Generate new password') . "</button> ";
+
+ print "<button style='float : left' class='alt-danger' dojoType='dijit.form.Button'
+ onclick=\"Helpers.AppPasswords.removeSelected()\">" .
+ __('Remove selected passwords') . "</button>";
+
+ print "</div>"; # content pane
+ }
+
print "<div dojoType='dijit.layout.ContentPane' title=\"".__('One time passwords / Authenticator')."\">";
if ($_SESSION["auth_module"] == "auth_internal") {
@@ -403,17 +468,30 @@ class Pref_Prefs extends Handler_Protected {
print "</form>";
- } else if (function_exists("imagecreatefromstring")) {
+ } else {
print_warning("You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP.");
- print_notice("Scan the following code by the Authenticator application:");
+ print_notice("You will need to generate app passwords for the API clients if you enable OTP.");
- $csrf_token = $_SESSION["csrf_token"];
+ if (function_exists("imagecreatefromstring")) {
+ print "<h3>" . __("Scan the following code by the Authenticator application or copy the key manually") . "</h3>";
- print "<img alt='otp qr-code' src='backend.php?op=pref-prefs&method=otpqrcode&csrf_token=$csrf_token'>";
+ $csrf_token = $_SESSION["csrf_token"];
+ print "<img alt='otp qr-code' src='backend.php?op=pref-prefs&method=otpqrcode&csrf_token=$csrf_token'>";
+ } else {
+ print_error("PHP GD functions are required to generate QR codes.");
+ print "<h3>" . __("Use the following OTP key with a compatible Authenticator application") . "</h3>";
+ }
print "<form dojoType='dijit.form.Form' id='changeOtpForm'>";
+ $otp_secret = $this->otpsecret();
+
+ print "<fieldset>";
+ print "<label>".__("OTP Key:")."</label>";
+ print "<input dojoType='dijit.form.ValidationTextBox' disabled='disabled' value='$otp_secret' size='32'>";
+ print "</fieldset>";
+
print_hidden("op", "pref-prefs");
print_hidden("method", "otpenable");
@@ -454,8 +532,6 @@ class Pref_Prefs extends Handler_Protected {
print "</form>";
- } else {
- print_notice("PHP GD functions are required for OTP support.");
}
}
@@ -773,6 +849,24 @@ class Pref_Prefs extends Handler_Protected {
print_warning("Your PHP configuration has open_basedir restrictions enabled. Some plugins relying on CURL for functionality may not work correctly.");
}
+ $feed_handler_whitelist = [ "Af_Comics" ];
+
+ $feed_handlers = array_merge(
+ PluginHost::getInstance()->get_hooks(PluginHost::HOOK_FEED_FETCHED),
+ PluginHost::getInstance()->get_hooks(PluginHost::HOOK_FEED_PARSED),
+ PluginHost::getInstance()->get_hooks(PluginHost::HOOK_FETCH_FEED));
+
+ $feed_handlers = array_filter($feed_handlers, function($plugin) use ($feed_handler_whitelist) {
+ return in_array(get_class($plugin), $feed_handler_whitelist) === FALSE; });
+
+ if (count($feed_handlers) > 0) {
+ print_error(
+ T_sprintf("The following plugins use per-feed content hooks. This may cause excessive data usage and origin server load resulting in a ban of your instance: <b>%s</b>" ,
+ implode(", ", array_map(function($plugin) { return get_class($plugin); }, $feed_handlers))
+ ) . " (<a href='https://tt-rss.org/wiki/FeedHandlerPlugins' target='_blank'>".__("More info...")."</a>)"
+ );
+ }
+
print "<h2>".__("System plugins")."</h2>";
print_notice("System plugins are enabled in <strong>config.php</strong> for all users.");
@@ -886,27 +980,41 @@ class Pref_Prefs extends Handler_Protected {
$_SESSION["prefs_show_advanced"] = !$_SESSION["prefs_show_advanced"];
}
- function otpqrcode() {
- require_once "lib/phpqrcode/phpqrcode.php";
-
- $sth = $this->pdo->prepare("SELECT login,salt,otp_enabled
+ function otpsecret() {
+ $sth = $this->pdo->prepare("SELECT salt, otp_enabled
FROM ttrss_users
WHERE id = ?");
$sth->execute([$_SESSION['uid']]);
if ($row = $sth->fetch()) {
-
- $base32 = new \OTPHP\Base32();
-
- $login = $row["login"];
$otp_enabled = sql_bool_to_bool($row["otp_enabled"]);
if (!$otp_enabled) {
- $secret = $base32->encode(sha1($row["salt"]));
+ $base32 = new \OTPHP\Base32();
+ $secret = $base32->encode(mb_substr(sha1($row["salt"]), 0, 12), false);
+
+ return $secret;
+ }
+ }
+
+ return false;
+ }
+
+ function otpqrcode() {
+ require_once "lib/phpqrcode/phpqrcode.php";
+ $sth = $this->pdo->prepare("SELECT login
+ FROM ttrss_users
+ WHERE id = ?");
+ $sth->execute([$_SESSION['uid']]);
+
+ if ($row = $sth->fetch()) {
+ $secret = $this->otpsecret();
+ $login = $row['login'];
+
+ if ($secret) {
QRcode::png("otpauth://totp/".urlencode($login).
"?secret=$secret&issuer=".urlencode("Tiny Tiny RSS"));
-
}
}
}
@@ -920,16 +1028,12 @@ class Pref_Prefs extends Handler_Protected {
if ($authenticator->check_password($_SESSION["uid"], $password)) {
- $sth = $this->pdo->prepare("SELECT salt
- FROM ttrss_users
- WHERE id = ?");
- $sth->execute([$_SESSION['uid']]);
+ $secret = $this->otpsecret();
- if ($row = $sth->fetch()) {
+ if ($secret) {
$base32 = new \OTPHP\Base32();
- $secret = $base32->encode(sha1($row["salt"]));
$topt = new \OTPHP\TOTP($secret);
$otp_check = $topt->now();
@@ -972,6 +1076,31 @@ class Pref_Prefs extends Handler_Protected {
if ($authenticator->check_password($_SESSION["uid"], $password)) {
+ $sth = $this->pdo->prepare("SELECT email, login FROM ttrss_users WHERE id = ?");
+ $sth->execute([$_SESSION['uid']]);
+
+ if ($row = $sth->fetch()) {
+ $mailer = new Mailer();
+
+ require_once "lib/MiniTemplator.class.php";
+
+ $tpl = new MiniTemplator;
+
+ $tpl->readTemplateFromFile("templates/otp_disabled_template.txt");
+
+ $tpl->setVariable('LOGIN', $row["login"]);
+ $tpl->setVariable('TTRSS_HOST', SELF_URL_PATH);
+
+ $tpl->addBlock('message');
+
+ $tpl->generateOutputToString($message);
+
+ $mailer->mail(["to_name" => $row["login"],
+ "to_address" => $row["email"],
+ "subject" => "[tt-rss] OTP change notification",
+ "message" => $message]);
+ }
+
$sth = $this->pdo->prepare("UPDATE ttrss_users SET otp_enabled = false WHERE
id = ?");
$sth->execute([$_SESSION['uid']]);
@@ -1008,12 +1137,18 @@ class Pref_Prefs extends Handler_Protected {
print_hidden("method", "setpref");
print_hidden("key", "USER_STYLESHEET");
+ print "<div id='css_edit_apply_msg' style='display : none'>";
+ print_warning(__("User CSS has been applied, you might need to reload the page to see all changes."));
+ print "</div>";
+
print "<textarea class='panel user-css-editor' dojoType='dijit.form.SimpleTextarea'
style='font-size : 12px;' name='value'>$value</textarea>";
print "<footer>";
- print "<button dojoType='dijit.form.Button'
- onclick=\"dijit.byId('cssEditDlg').execute()\">".__('Save')."</button> ";
+ print "<button dojoType='dijit.form.Button' class='alt-success'
+ onclick=\"dijit.byId('cssEditDlg').apply()\">".__('Apply')."</button> ";
+ print "<button dojoType='dijit.form.Button' class='alt-primary'
+ onclick=\"dijit.byId('cssEditDlg').execute()\">".__('Save and reload')."</button> ";
print "<button dojoType='dijit.form.Button'
onclick=\"dijit.byId('cssEditDlg').hide()\">".__('Cancel')."</button>";
print "</footer>";
@@ -1130,4 +1265,87 @@ class Pref_Prefs extends Handler_Protected {
}
return "";
}
+
+ private function appPasswordList() {
+ print "<div dojoType='fox.Toolbar'>";
+ print "<div dojoType='fox.form.DropDownButton'>" .
+ "<span>" . __('Select') . "</span>";
+ print "<div dojoType='dijit.Menu' style='display: none'>";
+ print "<div onclick=\"Tables.select('app-password-list', true)\"
+ dojoType=\"dijit.MenuItem\">" . __('All') . "</div>";
+ print "<div onclick=\"Tables.select('app-password-list', false)\"
+ dojoType=\"dijit.MenuItem\">" . __('None') . "</div>";
+ print "</div></div>";
+ print "</div>"; #toolbar
+
+ print "<div class='panel panel-scrollable'>";
+ print "<table width='100%' id='app-password-list'>";
+ print "<tr>";
+ print "<th width='2%'></th>";
+ print "<th align='left'>".__("Description")."</th>";
+ print "<th align='right'>".__("Created")."</th>";
+ print "<th align='right'>".__("Last used")."</th>";
+ print "</tr>";
+
+ $sth = $this->pdo->prepare("SELECT id, title, created, last_used
+ FROM ttrss_app_passwords WHERE owner_uid = ?");
+ $sth->execute([$_SESSION['uid']]);
+
+ while ($row = $sth->fetch()) {
+
+ $row_id = $row["id"];
+
+ print "<tr data-row-id='$row_id'>";
+
+ print "<td align='center'>
+ <input onclick='Tables.onRowChecked(this)' dojoType='dijit.form.CheckBox' type='checkbox'></td>";
+ print "<td>" . htmlspecialchars($row["title"]) . "</td>";
+
+ print "<td align='right' class='text-muted'>";
+ print make_local_datetime($row['created'], false);
+ print "</td>";
+
+ print "<td align='right' class='text-muted'>";
+ print make_local_datetime($row['last_used'], false);
+ print "</td>";
+
+ print "</tr>";
+ }
+
+ print "</table>";
+ print "</div>";
+ }
+
+ private function encryptAppPassword($password) {
+ $salt = substr(bin2hex(get_random_bytes(24)), 0, 24);
+
+ return "SSHA-512:".hash('sha512', $salt . $password). ":$salt";
+ }
+
+ function deleteAppPassword() {
+ $ids = explode(",", clean($_REQUEST['ids']));
+ $ids_qmarks = arr_qmarks($ids);
+
+ $sth = $this->pdo->prepare("DELETE FROM ttrss_app_passwords WHERE id IN ($ids_qmarks) AND owner_uid = ?");
+ $sth->execute(array_merge($ids, [$_SESSION['uid']]));
+
+ $this->appPasswordList();
+ }
+
+ function generateAppPassword() {
+ $title = clean($_REQUEST['title']);
+ $new_password = make_password(16);
+ $new_password_hash = $this->encryptAppPassword($new_password);
+
+ print_warning(T_sprintf("Generated password <strong>%s</strong> for %s. Please remember it for future reference.", $new_password, $title));
+
+ $sth = $this->pdo->prepare("INSERT INTO ttrss_app_passwords
+ (title, pwd_hash, service, created, owner_uid)
+ VALUES
+ (?, ?, ?, NOW(), ?)");
+
+ $sth->execute([$title, $new_password_hash, Auth_Base::AUTH_SERVICE_API, $_SESSION['uid']]);
+
+ $this->appPasswordList();
+ }
}
diff --git a/classes/rpc.php b/classes/rpc.php
index 8736cbb65..af5bdf52c 100755
--- a/classes/rpc.php
+++ b/classes/rpc.php
@@ -572,7 +572,7 @@ class RPC extends Handler_Protected {
function log() {
$msg = clean($_REQUEST['msg']);
- $file = basename(clean($_REQUEST['file']));
+ $file = clean_filename($_REQUEST['file']);
$line = (int) clean($_REQUEST['line']);
$context = clean($_REQUEST['context']);
@@ -590,15 +590,20 @@ class RPC extends Handler_Protected {
function checkforupdates() {
$rv = [];
- if (CHECK_FOR_UPDATES && $_SESSION["access_level"] >= 10 && defined("GIT_VERSION_TIMESTAMP")) {
+ $git_timestamp = false;
+ $git_commit = false;
+
+ get_version($git_commit, $git_timestamp);
+
+ if (CHECK_FOR_UPDATES && $_SESSION["access_level"] >= 10 && $git_timestamp) {
$content = @fetch_file_contents(["url" => "https://srv.tt-rss.org/version.json"]);
if ($content) {
$content = json_decode($content, true);
if ($content && isset($content["changeset"])) {
- if ((int)GIT_VERSION_TIMESTAMP < (int)$content["changeset"]["timestamp"] &&
- GIT_VERSION_HEAD != $content["changeset"]["id"]) {
+ if ($git_timestamp < (int)$content["changeset"]["timestamp"] &&
+ $git_commit != $content["changeset"]["id"]) {
$rv = $content["changeset"];
}
diff --git a/classes/rssutils.php b/classes/rssutils.php
index fe4c0a8a3..66008899b 100755
--- a/classes/rssutils.php
+++ b/classes/rssutils.php
@@ -259,6 +259,8 @@ class RSSUtils {
*/
static function update_rss_feed($feed, $no_cache = false) {
+ reset_fetch_domain_quota();
+
Debug::log("start", Debug::$LOG_VERBOSE);
$pdo = Db::pdo();
@@ -335,8 +337,19 @@ class RSSUtils {
$force_refetch = isset($_REQUEST["force_refetch"]);
$feed_data = "";
+ Debug::log("running HOOK_FETCH_FEED handlers...", Debug::$LOG_VERBOSE);
+
foreach ($pluginhost->get_hooks(PluginHost::HOOK_FETCH_FEED) as $plugin) {
+ Debug::log("... " . get_class($plugin), Debug::$LOG_VERBOSE);
+ $start = microtime(true);
$feed_data = $plugin->hook_fetch_feed($feed_data, $fetch_url, $owner_uid, $feed, 0, $auth_login, $auth_pass);
+ Debug::log(sprintf("=== %.4f (sec)", microtime(true) - $start), Debug::$LOG_VERBOSE);
+ }
+
+ if ($feed_data) {
+ Debug::log("feed data has been modified by a plugin.", Debug::$LOG_VERBOSE);
+ } else {
+ Debug::log("feed data has not been modified by a plugin.", Debug::$LOG_VERBOSE);
}
// try cache
@@ -428,8 +441,20 @@ class RSSUtils {
return;
}
+ Debug::log("running HOOK_FEED_FETCHED handlers...", Debug::$LOG_VERBOSE);
+ $feed_data_checksum = md5($feed_data);
+
foreach ($pluginhost->get_hooks(PluginHost::HOOK_FEED_FETCHED) as $plugin) {
+ Debug::log("... " . get_class($plugin), Debug::$LOG_VERBOSE);
+ $start = microtime(true);
$feed_data = $plugin->hook_feed_fetched($feed_data, $fetch_url, $owner_uid, $feed);
+ Debug::log(sprintf("=== %.4f (sec)", microtime(true) - $start), Debug::$LOG_VERBOSE);
+ }
+
+ if (md5($feed_data) != $feed_data_checksum) {
+ Debug::log("feed data has been modified by a plugin.", Debug::$LOG_VERBOSE);
+ } else {
+ Debug::log("feed data has not been modified by a plugin.", Debug::$LOG_VERBOSE);
}
$rss = new FeedParser($feed_data);
@@ -437,8 +462,16 @@ class RSSUtils {
if (!$rss->error()) {
+ Debug::log("running HOOK_FEED_PARSED handlers...", Debug::$LOG_VERBOSE);
+
// We use local pluginhost here because we need to load different per-user feed plugins
- $pluginhost->run_hooks(PluginHost::HOOK_FEED_PARSED, "hook_feed_parsed", $rss);
+
+ foreach ($pluginhost->get_hooks(PluginHost::HOOK_FEED_PARSED) as $plugin) {
+ Debug::log("... " . get_class($plugin), Debug::$LOG_VERBOSE);
+ $start = microtime(true);
+ $plugin->hook_feed_parsed($rss);
+ Debug::log(sprintf("=== %.4f (sec)", microtime(true) - $start), Debug::$LOG_VERBOSE);
+ }
Debug::log("language: $feed_language", Debug::$LOG_VERBOSE);
Debug::log("processing feed data...", Debug::$LOG_VERBOSE);
@@ -559,18 +592,10 @@ class RSSUtils {
Debug::log("guid $entry_guid / $entry_guid_hashed", Debug::$LOG_VERBOSE);
- $entry_timestamp = strip_tags($item->get_date());
+ $entry_timestamp = (int)$item->get_date();
Debug::log("orig date: " . $item->get_date(), Debug::$LOG_VERBOSE);
- if ($entry_timestamp == -1 || !$entry_timestamp || $entry_timestamp > time()) {
- $entry_timestamp = time();
- }
-
- $entry_timestamp_fmt = strftime("%Y/%m/%d %H:%M:%S", $entry_timestamp);
-
- Debug::log("date $entry_timestamp [$entry_timestamp_fmt]", Debug::$LOG_VERBOSE);
-
$entry_title = strip_tags($item->get_title());
$entry_link = rewrite_relative_url($site_url, clean($item->get_link()));
@@ -599,31 +624,10 @@ class RSSUtils {
$entry_guid = mb_substr($entry_guid, 0, 245);
Debug::log("author $entry_author", Debug::$LOG_VERBOSE);
- Debug::log("num_comments: $num_comments", Debug::$LOG_VERBOSE);
Debug::log("looking for tags...", Debug::$LOG_VERBOSE);
- // parse <category> entries into tags
-
- $additional_tags = array();
-
- $additional_tags_src = $item->get_categories();
-
- if (is_array($additional_tags_src)) {
- foreach ($additional_tags_src as $tobj) {
- array_push($additional_tags, $tobj);
- }
- }
-
- $entry_tags = array_unique($additional_tags);
-
- for ($i = 0; $i < count($entry_tags); $i++) {
- $entry_tags[$i] = mb_strtolower($entry_tags[$i], 'utf-8');
-
- // we don't support numeric tags, let's prefix them
- if (is_numeric($entry_tags[$i])) $entry_tags[$i] = 't:' . $entry_tags[$i];
- }
-
- Debug::log("tags found: " . join(",", $entry_tags), Debug::$LOG_VERBOSE);
+ $entry_tags = $item->get_categories();
+ Debug::log("tags found: " . join(", ", $entry_tags), Debug::$LOG_VERBOSE);
Debug::log("done collecting data.", Debug::$LOG_VERBOSE);
@@ -656,7 +660,8 @@ class RSSUtils {
"force_catchup" => false, // ugly hack for the time being
"score_modifier" => 0, // no previous value, plugin should recalculate score modifier based on content if needed
"language" => $entry_language,
- "num_comments" => $num_comments, // read only
+ "timestamp" => $entry_timestamp,
+ "num_comments" => $num_comments,
"feed" => array("id" => $feed,
"fetch_url" => $fetch_url,
"site_url" => $site_url,
@@ -734,7 +739,7 @@ class RSSUtils {
if (count($matched_filter_ids) > 0) {
$filter_ids_qmarks = arr_qmarks($matched_filter_ids);
- $fsth = $pdo->prepare("UPDATE ttrss_filters2 SET last_triggered = NOW() WHERE
+ $fsth = $pdo->prepare("UPDATE ttrss_filters2 SET last_triggered = NOW() WHERE
id IN ($filter_ids_qmarks) AND owner_uid = ?");
$fsth->execute(array_merge($matched_filter_ids, [$owner_uid]));
@@ -797,6 +802,17 @@ class RSSUtils {
$article_labels = $article["labels"];
$entry_score_modifier = (int) $article["score_modifier"];
$entry_language = $article["language"];
+ $entry_timestamp = $article["timestamp"];
+ $num_comments = $article["num_comments"];
+
+ if ($entry_timestamp == -1 || !$entry_timestamp || $entry_timestamp > time()) {
+ $entry_timestamp = time();
+ }
+
+ $entry_timestamp_fmt = strftime("%Y/%m/%d %H:%M:%S", $entry_timestamp);
+
+ Debug::log("date $entry_timestamp [$entry_timestamp_fmt]", Debug::$LOG_VERBOSE);
+ Debug::log("num_comments: $num_comments", Debug::$LOG_VERBOSE);
if (Debug::get_loglevel() >= Debug::$LOG_EXTENDED) {
Debug::log("article labels:", Debug::$LOG_VERBOSE);
@@ -1071,9 +1087,7 @@ class RSSUtils {
$manual_tags = trim_array(explode(",", $f["param"]));
foreach ($manual_tags as $tag) {
- if (Article::tag_is_valid($tag)) {
- array_push($entry_tags, $tag);
- }
+ array_push($entry_tags, $tag);
}
}
}
@@ -1086,19 +1100,17 @@ class RSSUtils {
$filtered_tags = array();
$tags_to_cache = array();
- if ($entry_tags && is_array($entry_tags)) {
- foreach ($entry_tags as $tag) {
- if (array_search($tag, $boring_tags) === false) {
- array_push($filtered_tags, $tag);
- }
+ foreach ($entry_tags as $tag) {
+ if (array_search($tag, $boring_tags) === false) {
+ array_push($filtered_tags, $tag);
}
}
$filtered_tags = array_unique($filtered_tags);
- if (Debug::get_loglevel() >= Debug::$LOG_EXTENDED) {
- Debug::log("filtered article tags:", Debug::$LOG_VERBOSE);
- print_r($filtered_tags);
+ if (Debug::get_loglevel() >= Debug::$LOG_VERBOSE) {
+ Debug::log("filtered tags: " . implode(", ", $filtered_tags), Debug::$LOG_VERBOSE);
+
}
// Save article tags in the database
@@ -1113,12 +1125,9 @@ class RSSUtils {
(owner_uid,tag_name,post_int_id)
VALUES (?, ?, ?)");
- foreach ($filtered_tags as $tag) {
-
- $tag = Article::sanitize_tag($tag);
-
- if (!Article::tag_is_valid($tag)) continue;
+ $filtered_tags = FeedItem_Common::normalize_categories($filtered_tags);
+ foreach ($filtered_tags as $tag) {
$tsth->execute([$tag, $entry_int_id, $owner_uid]);
if (!$tsth->fetch()) {
@@ -1129,9 +1138,6 @@ class RSSUtils {
}
/* update the cache */
-
- $tags_to_cache = array_unique($tags_to_cache);
-
$tags_str = join(",", $tags_to_cache);
$tsth = $pdo->prepare("UPDATE ttrss_user_entries
@@ -1194,10 +1200,18 @@ class RSSUtils {
Debug::log("cache_enclosures: downloading: $src to $local_filename", Debug::$LOG_VERBOSE);
if (!$cache->exists($local_filename)) {
- $file_content = fetch_file_contents(array("url" => $src, "max_size" => MAX_CACHE_FILE_SIZE));
+
+ global $fetch_last_error_code;
+ global $fetch_last_error;
+
+ $file_content = fetch_file_contents(array("url" => $src,
+ "http_referrer" => $src,
+ "max_size" => MAX_CACHE_FILE_SIZE));
if ($file_content) {
$cache->put($local_filename, $file_content);
+ } else {
+ Debug::log("cache_enclosures: failed with $fetch_last_error_code: $fetch_last_error");
}
} else if (is_writable($local_filename)) {
$cache->touch($local_filename);
@@ -1228,10 +1242,17 @@ class RSSUtils {
if (!$cache->exists($local_filename)) {
Debug::log("cache_media: downloading: $src to $local_filename", Debug::$LOG_VERBOSE);
- $file_content = fetch_file_contents(array("url" => $src, "max_size" => MAX_CACHE_FILE_SIZE));
+ global $fetch_last_error_code;
+ global $fetch_last_error;
+
+ $file_content = fetch_file_contents(array("url" => $src,
+ "http_referrer" => $src,
+ "max_size" => MAX_CACHE_FILE_SIZE));
if ($file_content) {
$cache->put($local_filename, $file_content);
+ } else {
+ Debug::log("cache_media: failed with $fetch_last_error_code: $fetch_last_error");
}
} else if ($cache->isWritable($local_filename)) {
$cache->touch($local_filename);
@@ -1548,7 +1569,8 @@ class RSSUtils {
}
static function is_gzipped($feed_data) {
- return mb_strpos($feed_data, "\x1f" . "\x8b" . "\x08", 0, "US-ASCII") === 0;
+ return strpos(substr($feed_data, 0, 3),
+ "\x1f" . "\x8b" . "\x08", 0) === 0;
}
static function load_filters($feed_id, $owner_uid) {
diff --git a/css/default.css b/css/default.css
index 0de6b894a..4398315ac 100644
--- a/css/default.css
+++ b/css/default.css
@@ -656,6 +656,13 @@ body.ttrss_main #headlines-frame div.feed-title a {
body.ttrss_main #headlines-frame div.feed-title a:hover {
color: #257aa7;
}
+body.ttrss_main #headlines-frame.smooth-scroll {
+ scroll-behavior: smooth;
+}
+body.ttrss_main #headlines-frame.forbid-smooth-scroll,
+body.ttrss_main #content-insert.forbid-smooth-scroll {
+ scroll-behavior: auto;
+}
body.ttrss_main #toolbar-frame_splitter {
display: none;
}
@@ -742,6 +749,7 @@ body.ttrss_main #content-insert {
line-height: 1.5;
overflow: auto;
-webkit-overflow-scrolling: touch;
+ scroll-behavior: smooth;
}
body.ttrss_main img.feed-icon,
body.ttrss_main img.icon {
@@ -858,12 +866,22 @@ body.ttrss_main .dijitDialog h3:first-of-type,
body.ttrss_main .dijitDialog h4:first-of-type {
margin-top: 0px;
}
-body.ttrss_main i.icon-syndicate {
+body.ttrss_main #toolbar-headlines i.icon-syndicate {
color: #ff7c4b;
margin-right: 8px;
border: 1px solid #ff7c4b;
border-radius: 4px;
}
+body.ttrss_main #toolbar-headlines #feed_current_unread {
+ margin-left: 8px;
+ font-weight: bold;
+ text-align: center;
+ border: 1px solid #2a89bc;
+ color: white;
+ background: #2a89bc;
+ border-radius: 4px;
+ min-width: 23px;
+}
body.ttrss_main i.icon-no-feed {
opacity: 0.2;
}
diff --git a/css/default.css.map b/css/default.css.map
index 9a20fc622..4f155f25e 100644
--- a/css/default.css.map
+++ b/css/default.css.map
@@ -1 +1 @@
-{"version":3,"sources":["default.less","defines.less","tt-rss.less","cdm.less","prefs.less","utility.less","dijit_basic.less","dijit_light.less","zoom.less"],"names":[],"mappings":"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","file":"default.css"} \ No newline at end of file
+{"version":3,"sources":["default.less","defines.less","tt-rss.less","cdm.less","prefs.less","utility.less","dijit_basic.less","dijit_light.less","zoom.less"],"names":[],"mappings":"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","file":"default.css"} \ No newline at end of file
diff --git a/css/tt-rss.less b/css/tt-rss.less
index e185ad7e1..b4987e97f 100755
--- a/css/tt-rss.less
+++ b/css/tt-rss.less
@@ -772,6 +772,15 @@ body.ttrss_main {
}
}
+ #headlines-frame.smooth-scroll {
+ scroll-behavior: smooth;
+ }
+
+ #headlines-frame.forbid-smooth-scroll,
+ #content-insert.forbid-smooth-scroll {
+ scroll-behavior : auto;
+ }
+
#toolbar-frame_splitter {
display : none;
}
@@ -871,6 +880,7 @@ body.ttrss_main {
line-height: 1.5;
overflow : auto;
-webkit-overflow-scrolling : touch;
+ scroll-behavior: smooth;
}
img.feed-icon, img.icon {
@@ -1015,11 +1025,23 @@ body.ttrss_main .dijitDialog {
}
body.ttrss_main {
- i.icon-syndicate {
- color : @color-published;
- margin-right : 8px;
- border : 1px solid @color-published;
- border-radius : 4px;
+ #toolbar-headlines {
+ i.icon-syndicate {
+ color: @color-published;
+ margin-right: 8px;
+ border: 1px solid @color-published;
+ border-radius: 4px;
+ }
+ #feed_current_unread {
+ margin-left : 8px;
+ font-weight : bold;
+ text-align : center;
+ border : 1px solid lighten(@color-accent, 5%);;
+ color : white;
+ background : lighten(@color-accent, 5%);
+ border-radius : 4px;
+ min-width : 23px;
+ }
}
i.icon-no-feed {
diff --git a/include/colors.php b/include/colors.php
index c441f7cb1..2ad958e94 100644
--- a/include/colors.php
+++ b/include/colors.php
@@ -202,10 +202,13 @@ function _color_unpack($hex, $normalize = false) {
if (strpos($hex, '#') !== 0)
$hex = _resolve_htmlcolor($hex);
+ else
+ $hex = substr($hex, 1);
if (strlen($hex) == 4) {
$hex = $hex[1] . $hex[1] . $hex[2] . $hex[2] . $hex[3] . $hex[3];
- } $c = hexdec($hex);
+ }
+ $c = hexdec($hex);
for ($i = 16; $i >= 0; $i -= 8) {
$out[] = (($c >> $i) & 0xFF) / ($normalize ? 255 : 1);
} return $out;
diff --git a/include/controls.php b/include/controls.php
index 012bcf76c..8646ec15d 100755
--- a/include/controls.php
+++ b/include/controls.php
@@ -238,7 +238,7 @@ function stylesheet_tag($filename, $id = false) {
$id_part = $id ? "id=\"$id\"" : "";
- return "<link rel=\"stylesheet\" $id_part type=\"text/css\" href=\"$filename?$timestamp\"/>\n";
+ return "<link rel=\"stylesheet\" $id_part type=\"text/css\" data-orig-href=\"$filename\" href=\"$filename?$timestamp\"/>\n";
}
function javascript_tag($filename) {
diff --git a/include/functions.php b/include/functions.php
index c326ac468..9cd352833 100644
--- a/include/functions.php
+++ b/include/functions.php
@@ -1,6 +1,6 @@
<?php
define('EXPECTED_CONFIG_VERSION', 26);
- define('SCHEMA_VERSION', 138);
+ define('SCHEMA_VERSION', 139);
define('LABEL_BASE_INDEX', -1024);
define('PLUGIN_FEED_BASE_INDEX', -128);
@@ -63,6 +63,11 @@
define_default('MAX_CONDITIONAL_INTERVAL', 3600*12);
// max interval between forced unconditional updates for servers
// not complying with http if-modified-since (seconds)
+ define_default('MAX_FETCH_REQUESTS_PER_HOST', 25);
+ // a maximum amount of allowed HTTP requests per destination host
+ // during a single update (i.e. within PHP process lifetime)
+ // this is used to not cause excessive load on the origin server on
+ // e.g. feed subscription when all articles are being processes
/* tunables end here */
@@ -159,6 +164,12 @@
Debug::log($msg);
}
+ function reset_fetch_domain_quota() {
+ global $fetch_domain_hits;
+
+ $fetch_domain_hits = [];
+ }
+
// TODO: max_size currently only works for CURL transfers
// TODO: multiple-argument way is deprecated, first parameter is a hash now
function fetch_file_contents($options /* previously: 0: $url , 1: $type = false, 2: $login = false, 3: $pass = false,
@@ -171,6 +182,7 @@
global $fetch_last_modified;
global $fetch_effective_url;
global $fetch_curl_used;
+ global $fetch_domain_hits;
$fetch_last_error = false;
$fetch_last_error_code = -1;
@@ -180,6 +192,9 @@
$fetch_last_modified = "";
$fetch_effective_url = "";
+ if (!is_array($fetch_domain_hits))
+ $fetch_domain_hits = [];
+
if (!is_array($options)) {
// falling back on compatibility shim
@@ -215,6 +230,7 @@
$followlocation = isset($options["followlocation"]) ? $options["followlocation"] : true;
$max_size = isset($options["max_size"]) ? $options["max_size"] : MAX_DOWNLOAD_FILE_SIZE; // in bytes
$http_accept = isset($options["http_accept"]) ? $options["http_accept"] : false;
+ $http_referrer = isset($options["http_referrer"]) ? $options["http_referrer"] : false;
$url = ltrim($url, ' ');
$url = str_replace(' ', '%20', $url);
@@ -222,6 +238,14 @@
if (strpos($url, "//") === 0)
$url = 'http:' . $url;
+ $url_host = parse_url($url, PHP_URL_HOST);
+ $fetch_domain_hits[$url_host] += 1;
+
+ if ($fetch_domain_hits[$url_host] > MAX_FETCH_REQUESTS_PER_HOST) {
+ user_error("Exceeded fetch request quota for $url_host: " . $fetch_domain_hits[$url_host], E_USER_WARNING);
+ #return false;
+ }
+
if (!defined('NO_CURL') && function_exists('curl_init') && !ini_get("open_basedir")) {
$fetch_curl_used = true;
@@ -250,7 +274,9 @@
curl_setopt($ch, CURLOPT_USERAGENT, $useragent ? $useragent :
SELF_USER_AGENT);
curl_setopt($ch, CURLOPT_ENCODING, "");
- //curl_setopt($ch, CURLOPT_REFERER, $url);
+
+ if ($http_referrer)
+ curl_setopt($ch, CURLOPT_REFERER, $http_referrer);
if ($max_size) {
curl_setopt($ch, CURLOPT_NOPROGRESS, false);
@@ -378,6 +404,9 @@
if ($http_accept)
array_push($context_options['http']['header'], "Accept: $http_accept");
+ if ($http_referrer)
+ array_push($context_options['http']['header'], "Referer: $http_referrer");
+
if (defined('_HTTP_PROXY')) {
$context_options['http']['request_fulluri'] = true;
$context_options['http']['proxy'] = _HTTP_PROXY;
@@ -509,7 +538,7 @@
return "";
}
- function authenticate_user($login, $password, $check_only = false) {
+ function authenticate_user($login, $password, $check_only = false, $service = false) {
if (!SINGLE_USER_MODE) {
$user_id = false;
@@ -517,7 +546,7 @@
foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_AUTH_USER) as $plugin) {
- $user_id = (int) $plugin->authenticate($login, $password);
+ $user_id = (int) $plugin->authenticate($login, $password, $service);
if ($user_id) {
$auth_module = strtolower(get_class($plugin));
@@ -531,7 +560,6 @@
session_regenerate_id(true);
$_SESSION["uid"] = $user_id;
- $_SESSION["version"] = VERSION_STATIC;
$_SESSION["auth_module"] = $auth_module;
$pdo = DB::pdo();
@@ -593,7 +621,7 @@
}
function clean_filename($filename) {
- return basename(preg_replace("/\.\.|[\/\\\]/", "", $filename));
+ return basename(preg_replace("/\.\.|[\/\\\]/", "", clean($filename)));
}
function make_password($length = 12) {
@@ -1013,10 +1041,12 @@
__("Navigation") => array(
"next_feed" => __("Open next feed"),
"prev_feed" => __("Open previous feed"),
- "next_article" => __("Open next article"),
- "prev_article" => __("Open previous article"),
- "next_article_noscroll" => __("Open next article (don't scroll long articles)"),
- "prev_article_noscroll" => __("Open previous article (don't scroll long articles)"),
+ "next_article_or_scroll" => __("Open next article (in combined mode, scroll down)"),
+ "prev_article_or_scroll" => __("Open previous article (in combined mode, scroll up)"),
+ "next_article_page" => __("Scroll article by one page down"),
+ "prev_article_page" => __("Scroll article by one page up"),
+ "next_article_noscroll" => __("Open next article"),
+ "prev_article_noscroll" => __("Open previous article"),
"next_article_noexpand" => __("Move to next article (don't expand or mark read)"),
"prev_article_noexpand" => __("Move to previous article (don't expand or mark read)"),
"search_dialog" => __("Show search dialog")),
@@ -1030,6 +1060,8 @@
"catchup_above" => __("Mark above as read"),
"article_scroll_down" => __("Scroll down"),
"article_scroll_up" => __("Scroll up"),
+ "article_page_down" => __("Scroll down page"),
+ "article_page_up" => __("Scroll up page"),
"select_article_cursor" => __("Select article under cursor"),
"email_article" => __("Email article"),
"close_article" => __("Close/collapse article"),
@@ -1069,7 +1101,6 @@
"create_label" => __("Create label"),
"create_filter" => __("Create filter"),
"collapse_sidebar" => __("Un/collapse sidebar"),
- "toggle_night_mode" => __("Toggle night mode"),
"help_dialog" => __("Show help dialog"))
);
@@ -1084,10 +1115,14 @@
$hotkeys = array(
"k" => "next_feed",
"j" => "prev_feed",
- "n" => "next_article",
- "p" => "prev_article",
- "(38)|Up" => "prev_article",
- "(40)|Down" => "next_article",
+ "n" => "next_article_noscroll",
+ "p" => "prev_article_noscroll",
+ //"(33)|PageUp" => "prev_article_page",
+ //"(34)|PageDown" => "next_article_page",
+ "*(33)|Shift+PgUp" => "article_page_up",
+ "*(34)|Shift+PgDn" => "article_page_down",
+ "(38)|Up" => "prev_article_or_scroll",
+ "(40)|Down" => "next_article_or_scroll",
"*(38)|Shift+Up" => "article_scroll_up",
"*(40)|Shift+Down" => "article_scroll_down",
"^(38)|Ctrl+Up" => "prev_article_noscroll",
@@ -1136,7 +1171,6 @@
"c l" => "create_label",
"c f" => "create_filter",
"c s" => "collapse_sidebar",
- "a N" => "toggle_night_mode",
"?" => "help_dialog",
);
@@ -1221,13 +1255,11 @@
}
function iframe_whitelisted($entry) {
- $whitelist = array("youtube.com", "youtu.be", "vimeo.com", "player.vimeo.com");
-
@$src = parse_url($entry->getAttribute("src"), PHP_URL_HOST);
if ($src) {
- foreach ($whitelist as $w) {
- if ($src == $w || $src == "www.$w")
+ foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_IFRAME_WHITELISTED) as $plugin) {
+ if ($plugin->hook_iframe_whitelisted($src))
return true;
}
}
@@ -1554,7 +1586,7 @@
$value = get_pref('USER_STYLESHEET');
if ($value) {
- print "<style type=\"text/css\">";
+ print "<style type='text/css' id='user_css_style'>";
print str_replace("<br/>", "\n", $value);
print "</style>";
}
diff --git a/include/login_form.php b/include/login_form.php
index 6c6aaf8cf..941321fc0 100755
--- a/include/login_form.php
+++ b/include/login_form.php
@@ -91,11 +91,12 @@ function bwLimitChange(elem) {
dojoType="dijit.form.TextBox"
class="input input-text"
value="<?php echo $_SESSION["fake_password"] ?>"/>
-
- <?php if (strpos(PLUGINS, "auth_internal") !== FALSE) { ?>
- <a href="public.php?op=forgotpass"><?php echo __("I forgot my password") ?></a>
- <?php } ?>
</fieldset>
+ <?php if (strpos(PLUGINS, "auth_internal") !== FALSE) { ?>
+ <fieldset class="align-right">
+ <a href="public.php?op=forgotpass"><?php echo __("I forgot my password") ?></a>
+ </fieldset>
+ <?php } ?>
<fieldset>
<label><?php echo __("Profile:") ?></label>
diff --git a/include/version.php b/include/version.php
index db5c2ec80..d1c5e03b5 100644
--- a/include/version.php
+++ b/include/version.php
@@ -1,43 +1,36 @@
<?php
- define('VERSION_STATIC', '19.8');
- function get_version() {
- date_default_timezone_set('UTC');
- $root_dir = dirname(dirname(__FILE__));
-
- if (is_dir("$root_dir/.git") && file_exists("$root_dir/.git/HEAD")) {
- $head = trim(file_get_contents("$root_dir/.git/HEAD"));
-
- if ($head) {
- $matches = array();
+ /* for package maintainers who don't use git: if version_static.txt exists in tt-rss root
+ directory, its contents are displayed instead of git commit-based version, this could be generated
+ based on source git tree commit used when creating the package */
- if (preg_match("/^ref: (.*)/", $head, $matches)) {
- $ref = $matches[1];
+ function get_version(&$git_commit = false, &$git_timestamp = false) {
+ $version = "UNKNOWN (Unsupported)";
- if (!file_exists("$root_dir/.git/$ref"))
- return VERSION_STATIC;
- $suffix = substr(trim(file_get_contents("$root_dir/.git/$ref")), 0, 7);
- $timestamp = filemtime("$root_dir/.git/$ref");
+ date_default_timezone_set('UTC');
+ $root_dir = dirname(dirname(__FILE__));
- define("GIT_VERSION_HEAD", $suffix);
- define("GIT_VERSION_TIMESTAMP", $timestamp);
+ if (file_exists("$root_dir/version_static.txt")) {
+ $version = trim(file_get_contents("$root_dir/version_static.txt")) . " (Unsupported)";
+ } else if (is_dir("$root_dir/.git")) {
+ $rc = 0;
+ $output = [];
- return VERSION_STATIC . " ($suffix)";
+ exec("git log --pretty='%ct %h' -n1 HEAD " . escapeshellarg($root_dir), $output, $rc);
- } else {
- $suffix = substr(trim($head), 0, 7);
- $timestamp = filemtime("$root_dir/.git/HEAD");
+ if ($rc == 0) {
+ if (is_array($output) && count($output) > 0) {
+ list ($timestamp, $commit) = explode(" ", $output[0], 2);
- define("GIT_VERSION_HEAD", $suffix);
- define("GIT_VERSION_TIMESTAMP", $timestamp);
+ $git_commit = $commit;
+ $git_timestamp = $timestamp;
- return VERSION_STATIC . " ($suffix)";
+ $version = strftime("%y.%m", $timestamp) . "-$commit";
}
}
}
- return VERSION_STATIC;
-
+ return $version;
}
define('VERSION', get_version());
diff --git a/index.php b/index.php
index ee66c0ef8..f7ea6178a 100644
--- a/index.php
+++ b/index.php
@@ -48,8 +48,6 @@
$theme = get_pref("USER_CSS_THEME", false, false);
if ($theme && theme_exists("$theme")) {
echo stylesheet_tag(get_theme_path($theme), 'theme_css');
- } else {
- echo stylesheet_tag("css/default.css", 'theme_css');
}
}
?>
@@ -116,11 +114,23 @@
?>
</script>
+ <style type="text/css">
+ @media (prefers-color-scheme: dark) {
+ body {
+ background : #303030;
+ }
+ }
+
+ body.css_loading * {
+ display : none;
+ }
+ </style>
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta name="referrer" content="no-referrer"/>
</head>
-<body class="flat ttrss_main ttrss_index">
+<body class="flat ttrss_main ttrss_index css_loading">
<div id="overlay" style="display : block">
<div id="overlay_inner">
@@ -140,6 +150,11 @@
<div id="feedlistLoading">
<img src='images/indicator_tiny.gif'/>
<?php echo __("Loading, please wait..."); ?></div>
+ <?php
+ foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_FEED_TREE) as $p) {
+ echo $p->hook_feed_tree();
+ }
+ ?>
<div id="feedTree"></div>
</div>
@@ -229,7 +244,6 @@
<div dojoType="dijit.MenuItem" onclick="App.onActionSelected('qmcShowOnlyUnread')"><?php echo __('(Un)hide read feeds') ?></div>
<div dojoType="dijit.MenuItem" disabled="1"><?php echo __('Other actions:') ?></div>
<div dojoType="dijit.MenuItem" onclick="App.onActionSelected('qmcToggleWidescreen')"><?php echo __('Toggle widescreen mode') ?></div>
- <div dojoType="dijit.MenuItem" onclick="App.onActionSelected('qmcToggleNightMode')"><?php echo __('Toggle night mode') ?></div>
<div dojoType="dijit.MenuItem" onclick="App.onActionSelected('qmcHKhelp')"><?php echo __('Keyboard shortcuts help') ?></div>
<?php
diff --git a/install/index.php b/install/index.php
index 815422712..3db53107d 100755
--- a/install/index.php
+++ b/install/index.php
@@ -437,7 +437,7 @@
if (!$res) {
print_notice("Query: $line");
- print_error("Error: " . implode(", ", $this->pdo->errorInfo()));
+ print_error("Error: " . implode(", ", $pdo->errorInfo()));
}
}
}
diff --git a/js/AppBase.js b/js/AppBase.js
index a5e20b8f9..8a710d685 100644
--- a/js/AppBase.js
+++ b/js/AppBase.js
@@ -16,6 +16,51 @@ define(["dojo/_base/declare"], function (declare) {
setInitParam: function(k, v) {
this._initParams[k] = v;
},
+ nightModeChanged: function(is_night, link) {
+ console.log("night mode changed to", is_night);
+
+ if (link) {
+ const css_override = is_night ? "themes/night.css" : "css/default.css";
+ link.setAttribute("href", css_override + "?" + Date.now());
+ }
+ },
+ setupNightModeDetection: function(callback) {
+ if (!$("theme_css")) {
+ const mql = window.matchMedia('(prefers-color-scheme: dark)');
+
+ try {
+ mql.addEventListener("change", () => {
+ this.nightModeChanged(mql.matches, $("theme_auto_css"));
+ });
+ } catch (e) {
+ console.warn("exception while trying to set MQL event listener");
+ }
+
+ const link = new Element("link", {
+ rel: "stylesheet",
+ id: "theme_auto_css"
+ });
+
+ if (callback) {
+ link.onload = function () {
+ document.querySelector("body").removeClassName("css_loading");
+ callback();
+ };
+
+ link.onerror = function(event) {
+ alert("Fatal error while loading application stylesheet: " + link.getAttribute("href"));
+ }
+ }
+
+ this.nightModeChanged(mql.matches, link);
+
+ document.querySelector("head").appendChild(link);
+ } else {
+ document.querySelector("body").removeClassName("css_loading");
+
+ if (callback) callback();
+ }
+ },
enableCsrfSupport: function() {
Ajax.Base.prototype.initialize = Ajax.Base.prototype.initialize.wrap(
function (callOriginal, options) {
@@ -358,30 +403,6 @@ define(["dojo/_base/declare"], function (declare) {
this.initSecondStage();
},
- toggleNightMode: function() {
- const link = $("theme_css");
-
- if (link) {
-
- let user_theme = "";
- let user_css = "";
-
- if (link.getAttribute("href").indexOf("themes/night.css") == -1) {
- user_css = "themes/night.css?" + Date.now();
- user_theme = "night.css";
- } else {
- user_theme = "default.php";
- user_css = "css/default.css?" + Date.now();
- }
-
- $("main").fade({duration: 0.5, afterFinish: () => {
- link.setAttribute("href", user_css);
- $("main").appear({duration: 0.5});
- xhrPost("backend.php", {op: "rpc", method: "setpref", key: "USER_CSS_THEME", value: user_theme});
- }});
-
- }
- },
explainError: function(code) {
return this.displayDlg(__("Error explained"), "explainError", code);
},
diff --git a/js/Article.js b/js/Article.js
index b933ed716..08b565695 100644
--- a/js/Article.js
+++ b/js/Article.js
@@ -2,6 +2,7 @@
/* global __, ngettext */
define(["dojo/_base/declare"], function (declare) {
Article = {
+ _scroll_reset_timeout: false,
getScoreClass: function (score) {
if (score > 500) {
return "score-high";
@@ -32,7 +33,7 @@ define(["dojo/_base/declare"], function (declare) {
if (ids.length > 0) {
const score = prompt(__("Please enter new score for selected articles:"));
- if (parseInt(score) != undefined) {
+ if (!isNaN(parseInt(score))) {
ids.each((id) => {
const row = $("RROW-" + id);
@@ -66,7 +67,7 @@ define(["dojo/_base/declare"], function (declare) {
const score_old = row.getAttribute("data-score");
const score = prompt(__("Please enter new score for this article:"), score_old);
- if (parseInt(score) != undefined) {
+ if (!isNaN(parseInt(score))) {
row.setAttribute("data-score", score);
const pic = row.select(".icon-score")[0];
@@ -274,15 +275,28 @@ define(["dojo/_base/declare"], function (declare) {
dialog.show();
},
- cdmScrollToId: function (id, force) {
+ cdmScrollToId: function (id, force, event) {
const ctr = $("headlines-frame");
const e = $("RROW-" + id);
+ const is_expanded = App.getInitParam("cdm_expanded");
if (!e || !ctr) return;
- if (force || e.offsetTop + e.offsetHeight > (ctr.scrollTop + ctr.offsetHeight) ||
+ if (force || is_expanded || e.offsetTop + e.offsetHeight > (ctr.scrollTop + ctr.offsetHeight) ||
e.offsetTop < ctr.scrollTop) {
+ if (event && event.repeat || !is_expanded) {
+ ctr.addClassName("forbid-smooth-scroll");
+ window.clearTimeout(this._scroll_reset_timeout);
+
+ this._scroll_reset_timeout = window.setTimeout(() => {
+ if (ctr) ctr.removeClassName("forbid-smooth-scroll");
+ }, 250)
+
+ } else {
+ ctr.removeClassName("forbid-smooth-scroll");
+ }
+
ctr.scrollTop = e.offsetTop;
Element.hide("floatingTitle");
@@ -314,19 +328,30 @@ define(["dojo/_base/declare"], function (declare) {
else
return 0;
},
- scroll: function (offset) {
- if (!App.isCombinedMode()) {
- const ci = $("content-insert");
- if (ci) {
- ci.scrollTop += offset;
- }
- } else {
- const hi = $("headlines-frame");
- if (hi) {
- hi.scrollTop += offset;
- }
+ scrollByPages: function (page_offset, event) {
+ const elem = App.isCombinedMode() ? $("headlines-frame") : $("content-insert");
+
+ const offset = elem.offsetHeight * page_offset * 0.99;
+ this.scroll(offset, event);
+ },
+ scroll: function (offset, event) {
+
+ const elem = App.isCombinedMode() ? $("headlines-frame") : $("content-insert");
+
+ if (event && event.repeat) {
+ elem.addClassName("forbid-smooth-scroll");
+ window.clearTimeout(this._scroll_reset_timeout);
+
+ this._scroll_reset_timeout = window.setTimeout(() => {
+ if (elem) elem.removeClassName("forbid-smooth-scroll");
+ }, 250)
+
+ } else {
+ elem.removeClassName("forbid-smooth-scroll");
}
+
+ elem.scrollTop += offset;
},
mouseIn: function (id) {
this.post_under_pointer = id;
@@ -340,4 +365,4 @@ define(["dojo/_base/declare"], function (declare) {
}
return Article;
-}); \ No newline at end of file
+});
diff --git a/js/CommonDialogs.js b/js/CommonDialogs.js
index e0338a97c..c6d476de0 100644
--- a/js/CommonDialogs.js
+++ b/js/CommonDialogs.js
@@ -385,7 +385,7 @@ define(["dojo/_base/declare"], function (declare) {
const msg = __("Unsubscribe from %s?").replace("%s", title);
- if (title == undefined || confirm(msg)) {
+ if (typeof title == "undefined" || confirm(msg)) {
Notify.progress("Removing feed...");
const query = {op: "pref-feeds", quiet: 1, method: "remove", ids: feed_id};
diff --git a/js/Feeds.js b/js/Feeds.js
index 07ec89452..42ab6fe7e 100644
--- a/js/Feeds.js
+++ b/js/Feeds.js
@@ -93,7 +93,9 @@ define(["dojo/_base/declare"], function (declare) {
}
}
- this.hideOrShowFeeds(App.getInitParam("hide_read_feeds") == 1);
+ Headlines.updateCurrentUnread();
+
+ this.hideOrShowFeeds(App.getInitParam("hide_read_feeds"));
this._counters_prev = elems;
PluginHost.run(PluginHost.HOOK_COUNTERS_PROCESSED);
@@ -119,6 +121,8 @@ define(["dojo/_base/declare"], function (declare) {
Element.visible("feeds-holder") ? splitter.show() : splitter.hide();
dijit.byId("main").resize();
+
+ Headlines.updateCurrentUnread();
},
cancelSearch: function() {
this._search_query = "";
@@ -147,7 +151,7 @@ define(["dojo/_base/declare"], function (declare) {
const treeModel = new fox.FeedStoreModel({
store: store,
query: {
- "type": App.getInitParam('enable_feed_cats') == 1 ? "category" : "feed"
+ "type": App.getInitParam('enable_feed_cats') ? "category" : "feed"
},
rootId: "root",
rootLabel: "Feeds",
@@ -212,7 +216,7 @@ define(["dojo/_base/declare"], function (declare) {
this.open({feed: -3});
}
- this.hideOrShowFeeds(App.getInitParam("hide_read_feeds") == 1);
+ this.hideOrShowFeeds(App.getInitParam("hide_read_feeds"));
if (App.getInitParam("is_default_pw")) {
console.warn("user password is at default value");
@@ -237,7 +241,7 @@ define(["dojo/_base/declare"], function (declare) {
}
// bw_limit disables timeout() so we request initial counters separately
- if (App.getInitParam("bw_limit") == "1") {
+ if (App.getInitParam("bw_limit")) {
this.requestCounters(true);
} else {
setTimeout(() => {
@@ -274,7 +278,7 @@ define(["dojo/_base/declare"], function (declare) {
if (tree) return tree.selectFeed(feed, is_cat);
},
toggleUnread: function() {
- const hide = !(App.getInitParam("hide_read_feeds") == "1");
+ const hide = !App.getInitParam("hide_read_feeds");
xhrPost("backend.php", {op: "rpc", method: "setpref", key: "HIDE_READ_FEEDS", value: hide}, () => {
this.hideOrShowFeeds(hide);
@@ -385,7 +389,7 @@ define(["dojo/_base/declare"], function (declare) {
}
},
catchupFeed: function(feed, is_cat, mode) {
- if (is_cat == undefined) is_cat = false;
+ is_cat = is_cat || false;
let str = false;
@@ -409,7 +413,7 @@ define(["dojo/_base/declare"], function (declare) {
str = str.replace("%s", fn)
.replace("%w", mark_what);
- if (App.getInitParam("confirm_feed_catchup") == 1 && !confirm(str)) {
+ if (App.getInitParam("confirm_feed_catchup") && !confirm(str)) {
return;
}
@@ -424,7 +428,7 @@ define(["dojo/_base/declare"], function (declare) {
xhrPost("backend.php", catchup_query, (transport) => {
App.handleRpcJson(transport);
- const show_next_feed = App.getInitParam("on_catchup_show_next_feed") == "1";
+ const show_next_feed = App.getInitParam("on_catchup_show_next_feed");
if (show_next_feed) {
const nuf = this.getNextUnread(feed, is_cat);
diff --git a/js/Headlines.js b/js/Headlines.js
index 3c98bef6c..5b7aac0b0 100755
--- a/js/Headlines.js
+++ b/js/Headlines.js
@@ -7,6 +7,7 @@ define(["dojo/_base/declare"], function (declare) {
_observer_counters_timeout: 0,
headlines: [],
current_first_id: 0,
+ _scroll_reset_timeout: false,
row_observer: new MutationObserver((mutations) => {
const modified = [];
@@ -212,7 +213,7 @@ define(["dojo/_base/declare"], function (declare) {
clearTimeout(this._headlines_scroll_timeout);
this._headlines_scroll_timeout = window.setTimeout(function () {
//console.log('done scrolling', event);
- Headlines.scrollHandler();
+ Headlines.scrollHandler(event);
}, 50);
}
},
@@ -244,33 +245,35 @@ define(["dojo/_base/declare"], function (declare) {
Feeds.open({feed: Feeds.getActive(), is_cat: Feeds.activeIsCat(), offset: offset, append: true});
},
- scrollHandler: function () {
- try {
- Headlines.unpackVisible();
-
- if (App.isCombinedMode()) {
- Headlines.updateFloatingTitle();
+ isChildVisible: function (elem, ctr) {
+ const ctop = ctr.scrollTop;
+ const cbottom = ctop + ctr.offsetHeight;
- // set topmost child in the buffer as active, but not if we're at the beginning (to prevent auto marking
- // first article as read all the time)
- if ($("headlines-frame").scrollTop != 0 &&
- App.getInitParam("cdm_expanded") && App.getInitParam("cdm_auto_catchup") == 1) {
+ const etop = elem.offsetTop;
+ const ebottom = etop + elem.offsetHeight;
- const rows = $$("#headlines-frame > div[id*=RROW]");
+ return etop >= ctop && ebottom <= cbottom ||
+ etop < ctop && ebottom > ctop || ebottom > cbottom && etop < cbottom
- for (let i = 0; i < rows.length; i++) {
- const row = rows[i];
+ },
+ firstVisible: function() {
+ const rows = $$("#headlines-frame > div[id*=RROW]");
+ const ctr = $("headlines-frame");
- if ($("headlines-frame").scrollTop <= row.offsetTop &&
- row.offsetTop - $("headlines-frame").scrollTop < 100 &&
- row.getAttribute("data-article-id") != Article.getActive()) {
+ for (let i = 0; i < rows.length; i++) {
+ const row = rows[i];
- Article.setActive(row.getAttribute("data-article-id"));
- break;
- }
- }
- }
+ if (this.isChildVisible(row, ctr)) {
+ return row.getAttribute("data-article-id");
}
+ }
+ },
+ scrollHandler: function (/*event*/) {
+ try {
+ Headlines.unpackVisible();
+
+ if (App.isCombinedMode())
+ Headlines.updateFloatingTitle();
if (!Feeds.infscroll_disabled && !Feeds.infscroll_in_progress) {
const hsp = $("headlines-spacer");
@@ -290,7 +293,7 @@ define(["dojo/_base/declare"], function (declare) {
}
}
- if (App.getInitParam("cdm_auto_catchup") == 1) {
+ if (App.getInitParam("cdm_auto_catchup")) {
let rows = $$("#headlines-frame > div[id*=RROW][class*=Unread]");
@@ -442,7 +445,7 @@ define(["dojo/_base/declare"], function (declare) {
const originally_from = Article.formatOriginallyFrom(hl);
row = `<div class="cdm ${row_class} ${Article.getScoreClass(hl.score)}" id="RROW-${hl.id}" data-article-id="${hl.id}" data-orig-feed-id="${hl.feed_id}"
- data-content="${escapeHtml(hl.content)}" data-score="${hl.score}"
+ data-content="${escapeHtml(hl.content)}" data-score="${hl.score}" data-article-title="${hl.title}"
onmouseover="Article.mouseIn(${hl.id})" onmouseout="Article.mouseOut(${hl.id})">
<div class="header">
@@ -543,6 +546,18 @@ define(["dojo/_base/declare"], function (declare) {
return tmp.firstChild;
},
+ updateCurrentUnread: function() {
+ if ($("feed_current_unread")) {
+ const feed_unread = Feeds.getUnread(Feeds.getActive(), Feeds.activeIsCat());
+
+ if (feed_unread > 0 && !Element.visible("feeds-holder")) {
+ $("feed_current_unread").innerText = feed_unread;
+ Element.show("feed_current_unread");
+ } else {
+ Element.hide("feed_current_unread");
+ }
+ }
+ },
onLoaded: function (transport, offset, append) {
const reply = App.handleRpcJson(transport);
@@ -592,7 +607,9 @@ define(["dojo/_base/declare"], function (declare) {
Article.setActive(0);
try {
+ $("headlines-frame").removeClassName("smooth-scroll");
$("headlines-frame").scrollTop = 0;
+ $("headlines-frame").addClassName("smooth-scroll");
Element.hide("floatingTitle");
$("floatingTitle").setAttribute("data-article-id", 0);
@@ -643,6 +660,8 @@ define(["dojo/_base/declare"], function (declare) {
"</span>";
}
+ Headlines.updateCurrentUnread();
+
} else if (headlines_count > 0 && feed_id == Feeds.getActive() && is_cat == Feeds.activeIsCat()) {
const c = dijit.byId("headlines-frame");
@@ -803,19 +822,27 @@ define(["dojo/_base/declare"], function (declare) {
if (row)
row.toggleClassName("published");
},
- move: function (mode, noscroll, noexpand) {
+ move: function (mode, params) {
+ params = params || {};
+
+ const noscroll = params.noscroll || false;
+ const noexpand = params.noexpand || false;
+ const event = params.event;
+
const rows = Headlines.getLoaded();
let prev_id = false;
let next_id = false;
- if (!$('RROW-' + Article.getActive())) {
+ const active_row = $("RROW-" + Article.getActive());
+
+ if (!active_row) {
Article.setActive(0);
}
- if (!Article.getActive()) {
- next_id = rows[0];
- prev_id = rows[rows.length - 1]
+ if (!Article.getActive() || (active_row && !Headlines.isChildVisible(active_row, $("headlines-frame")))) {
+ next_id = Headlines.firstVisible();
+ prev_id = next_id;
} else {
for (let i = 0; i < rows.length; i++) {
if (rows[i] == Article.getActive()) {
@@ -836,21 +863,18 @@ define(["dojo/_base/declare"], function (declare) {
console.log("cur: " + Article.getActive() + " next: " + next_id);
- if (mode == "next") {
+ if (mode === "next") {
if (next_id || Article.getActive()) {
if (App.isCombinedMode()) {
- const article = $("RROW-" + Article.getActive());
+ //const row = $("RROW-" + Article.getActive());
const ctr = $("headlines-frame");
- if (!noscroll && article && article.offsetTop + article.offsetHeight >
- ctr.scrollTop + ctr.offsetHeight) {
-
- Article.scroll(ctr.offsetHeight / 4);
-
+ if (!noscroll) {
+ Article.scroll(ctr.offsetHeight / 2, event);
} else if (next_id) {
Article.setActive(next_id);
- Article.cdmScrollToId(next_id, true);
+ Article.cdmScrollToId(next_id, true, event);
}
} else if (next_id) {
@@ -860,22 +884,23 @@ define(["dojo/_base/declare"], function (declare) {
}
}
- if (mode == "prev") {
+ if (mode === "prev") {
if (prev_id || Article.getActive()) {
if (App.isCombinedMode()) {
- const article = $("RROW-" + Article.getActive());
- const prev_article = $("RROW-" + prev_id);
+ const row = $("RROW-" + Article.getActive());
+ //const prev_row = $("RROW-" + prev_id);
const ctr = $("headlines-frame");
- if (!noscroll && article && article.offsetTop < ctr.scrollTop) {
- Article.scroll(-ctr.offsetHeight / 3);
- } else if (!noscroll && prev_article &&
- prev_article.offsetTop < ctr.scrollTop) {
- Article.scroll(-ctr.offsetHeight / 4);
- } else if (prev_id) {
- Article.setActive(prev_id);
- Article.cdmScrollToId(prev_id, noscroll);
+ if (!noscroll) {
+ Article.scroll(-ctr.offsetHeight / 2, event);
+ } else {
+ if (row && row.offsetTop < ctr.scrollTop) {
+ Article.cdmScrollToId(Article.getActive(), noscroll, event);
+ } else if (prev_id) {
+ Article.setActive(prev_id);
+ Article.cdmScrollToId(prev_id, noscroll, event);
+ }
}
} else if (prev_id) {
@@ -900,9 +925,7 @@ define(["dojo/_base/declare"], function (declare) {
const row = $("RROW-" + id);
if (row) {
- //const origClassName = row.className;
-
- if (cmode == undefined) cmode = 2;
+ if (typeof cmode == "undefined") cmode = 2;
switch (cmode) {
case 0:
@@ -973,7 +996,7 @@ define(["dojo/_base/declare"], function (declare) {
str = str.replace("%d", rows.length);
str = str.replace("%s", fn);
- if (App.getInitParam("confirm_feed_catchup") == 1 && !confirm(str)) {
+ if (App.getInitParam("confirm_feed_catchup") && !confirm(str)) {
return;
}
@@ -1119,7 +1142,7 @@ define(["dojo/_base/declare"], function (declare) {
str = str.replace("%d", rows.length);
str = str.replace("%s", fn);
- if (App.getInitParam("confirm_feed_catchup") == 1 && !confirm(str)) {
+ if (App.getInitParam("confirm_feed_catchup") && !confirm(str)) {
return;
}
@@ -1145,7 +1168,7 @@ define(["dojo/_base/declare"], function (declare) {
str = str.replace("%d", rows.length);
str = str.replace("%s", fn);
- if (App.getInitParam("confirm_feed_catchup") == 1 && !confirm(str)) {
+ if (App.getInitParam("confirm_feed_catchup") && !confirm(str)) {
return;
}
@@ -1381,6 +1404,22 @@ define(["dojo/_base/declare"], function (declare) {
}
},
+ scrollByPages: function (offset, event) {
+ const elem = $("headlines-frame");
+
+ if (event && event.repeat) {
+ elem.addClassName("forbid-smooth-scroll");
+ window.clearTimeout(this._scroll_reset_timeout);
+
+ this._scroll_reset_timeout = window.setTimeout(() => {
+ if (elem) elem.removeClassName("forbid-smooth-scroll");
+ }, 250)
+ } else {
+ elem.removeClassName("forbid-smooth-scroll");
+ }
+
+ elem.scrollTop += elem.offsetHeight * offset * 0.99;
+ },
initHeadlinesMenu: function () {
if (!dijit.byId("headlinesMenu")) {
diff --git a/js/PrefHelpers.js b/js/PrefHelpers.js
index a3d122029..4b908204c 100644
--- a/js/PrefHelpers.js
+++ b/js/PrefHelpers.js
@@ -1,5 +1,43 @@
define(["dojo/_base/declare"], function (declare) {
Helpers = {
+ AppPasswords: {
+ getSelected: function() {
+ return Tables.getSelected("app-password-list");
+ },
+ updateContent: function(data) {
+ $("app_passwords_holder").innerHTML = data;
+ dojo.parser.parse("app_passwords_holder");
+ },
+ removeSelected: function() {
+ const rows = this.getSelected();
+
+ if (rows.length == 0) {
+ alert("No passwords selected.");
+ } else {
+ if (confirm(__("Remove selected app passwords?"))) {
+
+ xhrPost("backend.php", {op: "pref-prefs", method: "deleteAppPassword", ids: rows.toString()}, (transport) => {
+ this.updateContent(transport.responseText);
+ Notify.close();
+ });
+
+ Notify.progress("Loading, please wait...");
+ }
+ }
+ },
+ generate: function() {
+ const title = prompt("Password description:")
+
+ if (title) {
+ xhrPost("backend.php", {op: "pref-prefs", method: "generateAppPassword", title: title}, (transport) => {
+ this.updateContent(transport.responseText);
+ Notify.close();
+ });
+
+ Notify.progress("Loading, please wait...");
+ }
+ },
+ },
clearFeedAccessKeys: function() {
if (confirm(__("This will invalidate all previously generated feed URLs. Continue?"))) {
Notify.progress("Clearing URLs...");
@@ -112,6 +150,12 @@ define(["dojo/_base/declare"], function (declare) {
id: "cssEditDlg",
title: __("Customize stylesheet"),
style: "width: 600px",
+ apply: function() {
+ xhrPost("backend.php", this.attr('value'), () => {
+ new Effect.Appear("css_edit_apply_msg");
+ $("user_css_style").innerText = this.attr('value');
+ });
+ },
execute: function () {
Notify.progress('Saving data...', true);
diff --git a/js/prefs.js b/js/prefs.js
index 844ce8c8a..944e49258 100755
--- a/js/prefs.js
+++ b/js/prefs.js
@@ -63,19 +63,21 @@ require(["dojo/_base/kernel",
try {
const _App = declare("fox.App", AppBase, {
constructor: function() {
- parser.parse();
+ this.setupNightModeDetection(() => {
+ parser.parse();
- this.setLoadingProgress(50);
+ this.setLoadingProgress(50);
- const clientTzOffset = new Date().getTimezoneOffset() * 60;
- const params = {op: "rpc", method: "sanityCheck", clientTzOffset: clientTzOffset};
+ const clientTzOffset = new Date().getTimezoneOffset() * 60;
+ const params = {op: "rpc", method: "sanityCheck", clientTzOffset: clientTzOffset};
- xhrPost("backend.php", params, (transport) => {
- try {
- this.backendSanityCallback(transport);
- } catch (e) {
- this.Error.report(e);
- }
+ xhrPost("backend.php", params, (transport) => {
+ try {
+ this.backendSanityCallback(transport);
+ } catch (e) {
+ this.Error.report(e);
+ }
+ });
});
},
initSecondStage: function() {
@@ -142,8 +144,6 @@ require(["dojo/_base/kernel",
case "help_dialog":
App.helpDialog("main");
return false;
- case "toggle_night_mode":
- App.toggleNightMode();
default:
console.log("unhandled action: " + action_name + "; keycode: " + event.which);
}
@@ -157,7 +157,10 @@ require(["dojo/_base/kernel",
App = new _App();
} catch (e) {
- this.Error.report(e);
+ if (App && App.Error)
+ App.Error.report(e);
+ else
+ alert(e + "\n\n" + e.stack);
}
});
});
diff --git a/js/tt-rss.js b/js/tt-rss.js
index a31404426..84e42bf85 100644
--- a/js/tt-rss.js
+++ b/js/tt-rss.js
@@ -67,33 +67,35 @@ require(["dojo/_base/kernel",
_widescreen_mode: false,
hotkey_actions: {},
constructor: function () {
- parser.parse();
-
- if (!this.checkBrowserFeatures())
- return;
-
- this.setLoadingProgress(30);
- this.initHotkeyActions();
-
- const a = document.createElement('audio');
- const hasAudio = !!a.canPlayType;
- const hasSandbox = "sandbox" in document.createElement("iframe");
- const hasMp3 = !!(a.canPlayType && a.canPlayType('audio/mpeg;').replace(/no/, ''));
- const clientTzOffset = new Date().getTimezoneOffset() * 60;
-
- const params = {
- op: "rpc", method: "sanityCheck", hasAudio: hasAudio,
- hasMp3: hasMp3,
- clientTzOffset: clientTzOffset,
- hasSandbox: hasSandbox
- };
-
- xhrPost("backend.php", params, (transport) => {
- try {
- App.backendSanityCallback(transport);
- } catch (e) {
- App.Error.report(e);
- }
+ this.setupNightModeDetection(() => {
+ parser.parse();
+
+ if (!this.checkBrowserFeatures())
+ return;
+
+ this.setLoadingProgress(30);
+ this.initHotkeyActions();
+
+ const a = document.createElement('audio');
+ const hasAudio = !!a.canPlayType;
+ const hasSandbox = "sandbox" in document.createElement("iframe");
+ const hasMp3 = !!(a.canPlayType && a.canPlayType('audio/mpeg;').replace(/no/, ''));
+ const clientTzOffset = new Date().getTimezoneOffset() * 60;
+
+ const params = {
+ op: "rpc", method: "sanityCheck", hasAudio: hasAudio,
+ hasMp3: hasMp3,
+ clientTzOffset: clientTzOffset,
+ hasSandbox: hasSandbox
+ };
+
+ xhrPost("backend.php", params, (transport) => {
+ try {
+ App.backendSanityCallback(transport);
+ } catch (e) {
+ App.Error.report(e);
+ }
+ });
});
},
checkBrowserFeatures: function() {
@@ -204,8 +206,8 @@ require(["dojo/_base/kernel",
if (event.target.nodeName == "INPUT" || event.target.nodeName == "TEXTAREA") return;
// Arrow buttons and escape are not reported via keypress, handle them via keydown.
- // escape = 27, left = 37, up = 38, right = 39, down = 40
- if (event.type == "keydown" && event.which != 27 && (event.which < 37 || event.which > 40)) return;
+ // escape = 27, left = 37, up = 38, right = 39, down = 40, pgup = 33, pgdn = 34
+ if (event.type == "keydown" && event.which != 27 && (event.which < 33 || event.which > 40)) return;
const action_name = App.keyeventToAction(event);
@@ -213,7 +215,7 @@ require(["dojo/_base/kernel",
const action_func = this.hotkey_actions[action_name];
if (action_func != null) {
- action_func();
+ action_func(event);
event.stopPropagation();
return false;
}
@@ -277,23 +279,23 @@ require(["dojo/_base/kernel",
if (rv) Feeds.open({feed: rv[0], is_cat: rv[1], delayed: true})
};
- this.hotkey_actions["next_article"] = function () {
- Headlines.move('next');
+ this.hotkey_actions["next_article_or_scroll"] = function (event) {
+ Headlines.move('next', {event: event});
};
- this.hotkey_actions["prev_article"] = function () {
- Headlines.move('prev');
+ this.hotkey_actions["prev_article_or_scroll"] = function (event) {
+ Headlines.move('prev', {event: event});
};
- this.hotkey_actions["next_article_noscroll"] = function () {
- Headlines.move('next', true);
+ this.hotkey_actions["next_article_noscroll"] = function (event) {
+ Headlines.move('next', {noscroll: true, event: event});
};
- this.hotkey_actions["prev_article_noscroll"] = function () {
- Headlines.move('prev', true);
+ this.hotkey_actions["prev_article_noscroll"] = function (event) {
+ Headlines.move('prev', {noscroll: true, event: event});
};
- this.hotkey_actions["next_article_noexpand"] = function () {
- Headlines.move('next', true, true);
+ this.hotkey_actions["next_article_noexpand"] = function (event) {
+ Headlines.move('next', {noscroll: true, noexpand: true, event: event});
};
- this.hotkey_actions["prev_article_noexpand"] = function () {
- Headlines.move('prev', true, true);
+ this.hotkey_actions["prev_article_noexpand"] = function (event) {
+ Headlines.move('prev', {noscroll: true, noexpand: true, event: event});
};
this.hotkey_actions["search_dialog"] = function () {
Feeds.search();
@@ -324,11 +326,29 @@ require(["dojo/_base/kernel",
this.hotkey_actions["catchup_above"] = function () {
Headlines.catchupRelativeTo(0);
};
- this.hotkey_actions["article_scroll_down"] = function () {
- Article.scroll(40);
+ this.hotkey_actions["article_scroll_down"] = function (event) {
+ const ctr = App.isCombinedMode() ? $("headlines-frame") : $("content-insert");
+
+ if (ctr)
+ Article.scroll(ctr.offsetHeight / 2, event);
+ };
+ this.hotkey_actions["article_scroll_up"] = function (event) {
+ const ctr = App.isCombinedMode() ? $("headlines-frame") : $("content-insert");
+
+ if (ctr)
+ Article.scroll(-ctr.offsetHeight / 2, event);
+ };
+ this.hotkey_actions["next_article_page"] = function (event) {
+ Headlines.scrollByPages(1, event);
};
- this.hotkey_actions["article_scroll_up"] = function () {
- Article.scroll(-40);
+ this.hotkey_actions["prev_article_page"] = function (event) {
+ Headlines.scrollByPages(-1, event);
+ };
+ this.hotkey_actions["article_page_down"] = function (event) {
+ Article.scrollByPages(1, event);
+ };
+ this.hotkey_actions["article_page_up"] = function (event) {
+ Article.scrollByPages(-1, event);
};
this.hotkey_actions["close_article"] = function () {
if (App.isCombinedMode()) {
@@ -363,7 +383,7 @@ require(["dojo/_base/kernel",
Headlines.select('none');
};
this.hotkey_actions["feed_refresh"] = function () {
- if (Feeds.getActive() != undefined) {
+ if (typeof Feeds.getActive() != "undefined") {
Feeds.open({feed: Feeds.getActive(), is_cat: Feeds.activeIsCat()});
}
};
@@ -393,7 +413,7 @@ require(["dojo/_base/kernel",
CommonDialogs.editFeed(Feeds.getActive());
};
this.hotkey_actions["feed_catchup"] = function () {
- if (Feeds.getActive() != undefined) {
+ if (typeof Feeds.getActive() != "undefined") {
Feeds.catchupCurrent();
}
};
@@ -495,9 +515,6 @@ require(["dojo/_base/kernel",
Headlines.renderAgain();
});
};
- this.hotkey_actions["toggle_night_mode"] = function () {
- App.toggleNightMode();
- };
},
onActionSelected: function(opid) {
switch (opid) {
@@ -563,9 +580,6 @@ require(["dojo/_base/kernel",
alert(__("Widescreen is not available in combined mode."));
}
break;
- case "qmcToggleNightMode":
- App.toggleNightMode();
- break;
case "qmcHKhelp":
App.helpDialog("main");
break;
@@ -580,7 +594,10 @@ require(["dojo/_base/kernel",
App = new _App();
} catch (e) {
- App.Error.report(e);
+ if (App && App.Error)
+ App.Error.report(e);
+ else
+ alert(e + "\n\n" + e.stack);
}
});
});
diff --git a/plugins/af_comics/filters/af_comics_comicpress.php b/plugins/af_comics/filters/af_comics_comicpress.php
index 19c335660..7755bcb1a 100755
--- a/plugins/af_comics/filters/af_comics_comicpress.php
+++ b/plugins/af_comics/filters/af_comics_comicpress.php
@@ -18,9 +18,8 @@ class Af_Comics_ComicPress extends Af_ComicFilter {
// lol at people who block clients by user agent
// oh noes my ad revenue Q_Q
- $res = fetch_file_contents($article["link"], false, false, false,
- false, false, 0,
- "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)");
+ $res = fetch_file_contents(["url" => $article["link"],
+ "useragent" => "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)"]);
$doc = new DOMDocument();
@@ -30,10 +29,34 @@ class Af_Comics_ComicPress extends Af_ComicFilter {
if ($basenode) {
$article["content"] = $doc->saveHTML($basenode);
+ return true;
}
- }
- return true;
+ // buni-specific
+ $webtoon_link = $xpath->query("//a[contains(@href,'www.webtoons.com')]")->item(0);
+
+ if ($webtoon_link) {
+
+ $res = fetch_file_contents(["url" => $webtoon_link->getAttribute("href"),
+ "useragent" => "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)"]);
+
+ if (@$doc->loadHTML($res)) {
+ $xpath = new DOMXPath($doc);
+ $basenode = $xpath->query('//div[@id="_viewerBox"]')->item(0);
+
+ if ($basenode) {
+ $imgs = $xpath->query("//img[@data-url]", $basenode);
+
+ foreach ($imgs as $img) {
+ $img->setAttribute("src", $img->getAttribute("data-url"));
+ }
+
+ $article["content"] = $doc->saveHTML($basenode);
+ return true;
+ }
+ }
+ }
+ }
}
return false;
diff --git a/plugins/af_comics/init.php b/plugins/af_comics/init.php
index d24287c74..c0e97297d 100755
--- a/plugins/af_comics/init.php
+++ b/plugins/af_comics/init.php
@@ -114,9 +114,6 @@ class Af_Comics extends Plugin {
$tpl->setVariable('FEED_URL', htmlspecialchars($fetch_url), true);
$tpl->setVariable('SELF_URL', $site_url, true);
- $tpl->setVariable('ARTICLE_UPDATED_ATOM', date('c'), true);
- $tpl->setVariable('ARTICLE_UPDATED_RFC822', date(DATE_RFC822), true);
-
if ($body) {
$doc = new DOMDocument();
@@ -126,13 +123,22 @@ class Af_Comics extends Plugin {
$node = $xpath->query('//picture[contains(@class, "item-comic-image")]/img')->item(0);
if ($node) {
- $node->removeAttribute("width");
- $node->removeAttribute("data-srcset");
- $node->removeAttribute("srcset");
+ $title = $xpath->query('//h1')->item(0);
+
+ if ($title) {
+ $title = clean(trim($title->nodeValue));
+ } else {
+ $title = date('l, F d, Y');
+ }
+
+ foreach (['srcset', 'sizes', 'data-srcset', 'width'] as $attr ) {
+ $node->removeAttribute($attr);
+ }
$tpl->setVariable('ARTICLE_ID', $article_link, true);
$tpl->setVariable('ARTICLE_LINK', $article_link, true);
- $tpl->setVariable('ARTICLE_TITLE', date('l, F d, Y'), true);
+ $tpl->setVariable('ARTICLE_UPDATED_ATOM', date('c', mktime(11, 0, 0)), true);
+ $tpl->setVariable('ARTICLE_TITLE', htmlspecialchars($title), true);
$tpl->setVariable('ARTICLE_EXCERPT', '', true);
$tpl->setVariable('ARTICLE_CONTENT', $doc->saveHTML($node), true);
@@ -141,15 +147,12 @@ class Af_Comics extends Plugin {
$tpl->setVariable('ARTICLE_SOURCE_TITLE', $feed_title, true);
$tpl->addBlock('entry');
-
}
}
}
$tpl->addBlock('feed');
- $tmp_data = '';
-
if ($tpl->generateOutputToString($tmp_data))
$feed_data = $tmp_data;
}
diff --git a/plugins/af_zz_imgproxy/init.php b/plugins/af_proxy_http/init.php
index ddc30936f..80100160d 100755..100644
--- a/plugins/af_zz_imgproxy/init.php
+++ b/plugins/af_proxy_http/init.php
@@ -1,5 +1,5 @@
<?php
-class Af_Zz_ImgProxy extends Plugin {
+class Af_Proxy_Http extends Plugin {
/* @var PluginHost $host */
private $host;
@@ -9,7 +9,7 @@ class Af_Zz_ImgProxy extends Plugin {
function about() {
return array(1.0,
- "Load insecure images via built-in proxy",
+ "Loads media served over plain HTTP via built-in secure proxy",
"fox");
}
@@ -23,8 +23,8 @@ class Af_Zz_ImgProxy extends Plugin {
$this->host = $host;
$this->cache = new DiskCache("images");
- $host->add_hook($host::HOOK_RENDER_ARTICLE, $this);
- $host->add_hook($host::HOOK_RENDER_ARTICLE_CDM, $this);
+ $host->add_hook($host::HOOK_RENDER_ARTICLE, $this, 150);
+ $host->add_hook($host::HOOK_RENDER_ARTICLE_CDM, $this, 150);
$host->add_hook($host::HOOK_ENCLOSURE_ENTRY, $this);
$host->add_hook($host::HOOK_PREFS_TAB, $this);
@@ -141,8 +141,7 @@ class Af_Zz_ImgProxy extends Plugin {
}
}
- return get_self_url_prefix() . "/public.php?op=pluginhandler&plugin=af_zz_imgproxy&pmethod=imgproxy&url=" .
- urlencode($url);
+ return $this->host->get_public_method_url($this, "imgproxy", ["url" => $url]);
}
}
}
@@ -210,7 +209,7 @@ class Af_Zz_ImgProxy extends Plugin {
if ($args != "prefFeeds") return;
print "<div dojoType=\"dijit.layout.AccordionPane\"
- title=\"<i class='material-icons'>extension</i> ".__('Image proxy settings (af_zz_imgproxy)')."\">";
+ title=\"<i class='material-icons'>extension</i> ".__('Image proxy settings (af_proxy_http)')."\">";
print "<form dojoType=\"dijit.form.Form\">";
@@ -230,7 +229,7 @@ class Af_Zz_ImgProxy extends Plugin {
print_hidden("op", "pluginhandler");
print_hidden("method", "save");
- print_hidden("plugin", "af_zz_imgproxy");
+ print_hidden("plugin", "af_proxy_http");
$proxy_all = $this->host->get($this, "proxy_all");
print_checkbox("proxy_all", $proxy_all);
diff --git a/plugins/af_readability/init.php b/plugins/af_readability/init.php
index 7f3c6db4d..a487707c8 100755
--- a/plugins/af_readability/init.php
+++ b/plugins/af_readability/init.php
@@ -29,7 +29,8 @@ class Af_Readability extends Plugin {
{
$this->host = $host;
- if (version_compare(PHP_VERSION, '5.6.0', '<')) {
+ if (version_compare(PHP_VERSION, '7.0.0', '<')) {
+ user_error("af_readability requires PHP 7.0", E_USER_WARNING);
return;
}
@@ -51,8 +52,8 @@ class Af_Readability extends Plugin {
print "<div dojoType='dijit.layout.AccordionPane'
title=\"<i class='material-icons'>extension</i> ".__('Readability settings (af_readability)')."\">";
- if (version_compare(PHP_VERSION, '5.6.0', '<')) {
- print_error("This plugin requires PHP version 5.6.");
+ if (version_compare(PHP_VERSION, '7.0.0', '<')) {
+ print_error("This plugin requires PHP 7.0.");
} else {
print "<h2>" . __("Global settings") . "</h2>";
@@ -88,7 +89,7 @@ class Af_Readability extends Plugin {
print "</label>";
print "</fieldset>";
- print print_button("submit", __("Save"), "class='alt-primary'");
+ print_button("submit", __("Save"), "class='alt-primary'");
print "</form>";
$enabled_feeds = $this->host->get($this, "enabled_feeds");
@@ -179,7 +180,11 @@ class Af_Readability extends Plugin {
// this is the worst hack yet :(
if (strtolower($tmpdoc->encoding) != 'utf-8') {
$tmp = preg_replace("/<meta.*?charset.*?\/?>/i", "", $tmp);
- $tmp = mb_convert_encoding($tmp, 'utf-8', $tmpdoc->encoding);
+ if (empty($tmpdoc->encoding)) {
+ $tmp = mb_convert_encoding($tmp, 'utf-8');
+ } else {
+ $tmp = mb_convert_encoding($tmp, 'utf-8', $tmpdoc->encoding);
+ }
}
try {
diff --git a/plugins/af_readability/vendor/andreskrey/Readability/Configuration.php b/plugins/af_readability/vendor/andreskrey/Readability/Configuration.php
index 6c17bc757..0632399c6 100644
--- a/plugins/af_readability/vendor/andreskrey/Readability/Configuration.php
+++ b/plugins/af_readability/vendor/andreskrey/Readability/Configuration.php
@@ -167,32 +167,6 @@ class Configuration
}
/**
- * @deprecated Use getCharThreshold. Will be removed in version 2.0
- *
- * @return int
- */
- public function getWordThreshold()
- {
- @trigger_error('getWordThreshold was replaced with getCharThreshold and will be removed in version 3.0', E_USER_DEPRECATED);
-
- return $this->charThreshold;
- }
-
- /**
- * @param int $charThreshold
- *
- * @return $this
- */
- public function setWordThreshold($charThreshold)
- {
- @trigger_error('setWordThreshold was replaced with setCharThreshold and will be removed in version 3.0', E_USER_DEPRECATED);
-
- $this->charThreshold = $charThreshold;
-
- return $this;
- }
-
- /**
* @return bool
*/
public function getArticleByLine()
diff --git a/plugins/af_readability/vendor/andreskrey/Readability/Nodes/DOM/DOMNodeList.php b/plugins/af_readability/vendor/andreskrey/Readability/Nodes/DOM/DOMNodeList.php
new file mode 100644
index 000000000..5149c0b98
--- /dev/null
+++ b/plugins/af_readability/vendor/andreskrey/Readability/Nodes/DOM/DOMNodeList.php
@@ -0,0 +1,82 @@
+<?php
+
+namespace andreskrey\Readability\Nodes\DOM;
+
+/**
+ * Class DOMNodeList.
+ *
+ * This is a fake DOMNodeList class that allows adding items to the list. The original class is static and the nodes
+ * are defined automagically when instantiating it. This fake version behaves exactly the same way but adds the function
+ * add() that allows to insert new DOMNodes into the DOMNodeList.
+ *
+ * It cannot extend the original DOMNodeList class because the functionality behind the property ->length is hidden
+ * from the user and cannot be extended, changed, or tweaked.
+ */
+class DOMNodeList implements \Countable, \IteratorAggregate
+{
+ /**
+ * @var array
+ */
+ protected $items = [];
+
+ /**
+ * @var int
+ */
+ protected $length = 0;
+
+ /**
+ * To allow access to length in the same way that DOMNodeList allows.
+ *
+ * {@inheritdoc}
+ */
+ public function __get($name)
+ {
+ switch ($name) {
+ case 'length':
+ return $this->length;
+ default:
+ trigger_error(sprintf('Undefined property: %s::%s', static::class, $name));
+ }
+ }
+
+ /**
+ * @param DOMNode|DOMElement|DOMComment $node
+ *
+ * @return DOMNodeList
+ */
+ public function add($node)
+ {
+ $this->items[] = $node;
+ $this->length++;
+
+ return $this;
+ }
+
+ /**
+ * @param int $offset
+ *
+ * @return DOMNode|DOMElement|DOMComment
+ */
+ public function item(int $offset)
+ {
+ return $this->items[$offset];
+ }
+
+ /**
+ * @return int|void
+ */
+ public function count(): int
+ {
+ return $this->length;
+ }
+
+ /**
+ * To make it compatible with iterator_to_array() function.
+ *
+ * {@inheritdoc}
+ */
+ public function getIterator(): \ArrayIterator
+ {
+ return new \ArrayIterator($this->items);
+ }
+}
diff --git a/plugins/af_readability/vendor/andreskrey/Readability/Nodes/NodeTrait.php b/plugins/af_readability/vendor/andreskrey/Readability/Nodes/NodeTrait.php
index d7060ccbb..5198bbb5f 100644
--- a/plugins/af_readability/vendor/andreskrey/Readability/Nodes/NodeTrait.php
+++ b/plugins/af_readability/vendor/andreskrey/Readability/Nodes/NodeTrait.php
@@ -181,11 +181,11 @@ trait NodeTrait
/**
* Override for native hasAttribute.
*
- * @see getAttribute
- *
* @param $attributeName
*
* @return bool
+ *
+ * @see getAttribute
*/
public function hasAttribute($attributeName)
{
@@ -317,10 +317,14 @@ trait NodeTrait
*
* @param bool $filterEmptyDOMText Filter empty DOMText nodes?
*
+ * @deprecated Use NodeUtility::filterTextNodes, function will be removed in version 3.0
+ *
* @return array
*/
public function getChildren($filterEmptyDOMText = false)
{
+ @trigger_error('getChildren was replaced with NodeUtility::filterTextNodes and will be removed in version 3.0', E_USER_DEPRECATED);
+
$ret = iterator_to_array($this->childNodes);
if ($filterEmptyDOMText) {
// Array values is used to discard the key order. Needs to be 0 to whatever without skipping any number
@@ -418,12 +422,12 @@ trait NodeTrait
public function hasSingleTagInsideElement($tag)
{
// There should be exactly 1 element child with given tag
- if (count($children = $this->getChildren(true)) !== 1 || $children[0]->nodeName !== $tag) {
+ if (count($children = NodeUtility::filterTextNodes($this->childNodes)) !== 1 || $children->item(0)->nodeName !== $tag) {
return false;
}
// And there should be no text nodes with real content
- return array_reduce($children, function ($carry, $child) {
+ return array_reduce(iterator_to_array($children), function ($carry, $child) {
if (!$carry === false) {
return false;
}
@@ -443,7 +447,7 @@ trait NodeTrait
{
$result = false;
if ($this->hasChildNodes()) {
- foreach ($this->getChildren() as $child) {
+ foreach ($this->childNodes as $child) {
if (in_array($child->nodeName, $this->divToPElements)) {
$result = true;
} else {
@@ -500,18 +504,22 @@ trait NodeTrait
);
}
+ /**
+ * In the original JS project they check if the node has the style display=none, which unfortunately
+ * in our case we have no way of knowing that. So we just check for the attribute hidden or "display: none".
+ *
+ * Might be a good idea to check for classes or other attributes like 'aria-hidden'
+ *
+ * @return bool
+ */
public function isProbablyVisible()
{
- /*
- * In the original JS project they check if the node has the style display=none, which unfortunately
- * in our case we have no way of knowing that. So we just check for the attribute hidden or "display: none".
- *
- * Might be a good idea to check for classes or other attributes like 'aria-hidden'
- */
-
return !preg_match('/display:( )?none/', $this->getAttribute('style')) && !$this->hasAttribute('hidden');
}
+ /**
+ * @return bool
+ */
public function isWhitespace()
{
return ($this->nodeType === XML_TEXT_NODE && mb_strlen(trim($this->textContent)) === 0) ||
@@ -557,4 +565,23 @@ trait NodeTrait
$count -= ($count - $nodes->length);
}
}
+
+ /**
+ * Mimics JS's firstElementChild property. PHP only has firstChild which could be any type of DOMNode. Use this
+ * function to get the first one that is an DOMElement node.
+ *
+ * @return \DOMElement|null
+ */
+ public function getFirstElementChild()
+ {
+ if ($this->childNodes instanceof \Traversable) {
+ foreach ($this->childNodes as $node) {
+ if ($node instanceof \DOMElement) {
+ return $node;
+ }
+ }
+ }
+
+ return null;
+ }
}
diff --git a/plugins/af_readability/vendor/andreskrey/Readability/Nodes/NodeUtility.php b/plugins/af_readability/vendor/andreskrey/Readability/Nodes/NodeUtility.php
index 7a1f18ee4..cbf78bae0 100644
--- a/plugins/af_readability/vendor/andreskrey/Readability/Nodes/NodeUtility.php
+++ b/plugins/af_readability/vendor/andreskrey/Readability/Nodes/NodeUtility.php
@@ -5,6 +5,7 @@ namespace andreskrey\Readability\Nodes;
use andreskrey\Readability\Nodes\DOM\DOMDocument;
use andreskrey\Readability\Nodes\DOM\DOMElement;
use andreskrey\Readability\Nodes\DOM\DOMNode;
+use andreskrey\Readability\Nodes\DOM\DOMNodeList;
/**
* Class NodeUtility.
@@ -157,4 +158,23 @@ class NodeUtility
return ($originalNode) ? $originalNode->nextSibling : $originalNode;
}
+
+ /**
+ * Remove all empty DOMNodes from DOMNodeLists.
+ *
+ * @param \DOMNodeList $list
+ *
+ * @return DOMNodeList
+ */
+ public static function filterTextNodes(\DOMNodeList $list)
+ {
+ $newList = new DOMNodeList();
+ foreach ($list as $node) {
+ if ($node->nodeType !== XML_TEXT_NODE || mb_strlen(trim($node->nodeValue))) {
+ $newList->add($node);
+ }
+ }
+
+ return $newList;
+ }
}
diff --git a/plugins/af_readability/vendor/andreskrey/Readability/Readability.php b/plugins/af_readability/vendor/andreskrey/Readability/Readability.php
index 7b7eed6bf..6bcbf78d7 100644
--- a/plugins/af_readability/vendor/andreskrey/Readability/Readability.php
+++ b/plugins/af_readability/vendor/andreskrey/Readability/Readability.php
@@ -57,6 +57,13 @@ class Readability
protected $author = null;
/**
+ * Website name.
+ *
+ * @var string|null
+ */
+ protected $siteName = null;
+
+ /**
* Direction of the text.
*
* @var string|null
@@ -287,10 +294,10 @@ class Readability
$values = [];
// property is a space-separated list of values
- $propertyPattern = '/\s*(dc|dcterm|og|twitter)\s*:\s*(author|creator|description|title|image)\s*/i';
+ $propertyPattern = '/\s*(dc|dcterm|og|twitter)\s*:\s*(author|creator|description|title|image|site_name)(?!:)\s*/i';
// name is a single value
- $namePattern = '/^\s*(?:(dc|dcterm|og|twitter|weibo:(article|webpage))\s*[\.:]\s*)?(author|creator|description|title|image)\s*$/i';
+ $namePattern = '/^\s*(?:(dc|dcterm|og|twitter|weibo:(article|webpage))\s*[\.:]\s*)?(author|creator|description|title|image|site_name)(?!:)\s*$/i';
// Find description tags.
foreach ($this->dom->getElementsByTagName('meta') as $meta) {
@@ -332,7 +339,6 @@ class Readability
* This could be easily replaced with an ugly set of isset($values['key']) or a bunch of ??s.
* Will probably replace it with ??s after dropping support of PHP5.6
*/
-
$key = current(array_intersect([
'dc:title',
'dcterm:title',
@@ -373,11 +379,18 @@ class Readability
// get main image
$key = current(array_intersect([
+ 'image',
'og:image',
'twitter:image'
], array_keys($values)));
$this->setImage(isset($values[$key]) ? $values[$key] : null);
+
+ $key = current(array_intersect([
+ 'og:site_name'
+ ], array_keys($values)));
+
+ $this->setSiteName(isset($values[$key]) ? $values[$key] : null);
}
/**
@@ -722,7 +735,7 @@ class Readability
*/
if ($node->hasSingleTagInsideElement('p') && $node->getLinkDensity() < 0.25) {
$this->logger->debug(sprintf('[Get Nodes] Found DIV with a single P node, removing DIV. Node content is: \'%s\'', substr($node->nodeValue, 0, 128)));
- $pNode = $node->getChildren(true)[0];
+ $pNode = NodeUtility::filterTextNodes($node->childNodes)->item(0);
$node->parentNode->replaceChild($pNode, $node);
$node = $pNode;
$elementsToScore[] = $node;
@@ -1082,7 +1095,7 @@ class Readability
// If the top candidate is the only child, use parent instead. This will help sibling
// joining logic when adjacent content is actually located in parent's sibling node.
$parentOfTopCandidate = $topCandidate->parentNode;
- while ($parentOfTopCandidate->nodeName !== 'body' && count($parentOfTopCandidate->getChildren(true)) === 1) {
+ while ($parentOfTopCandidate->nodeName !== 'body' && count(NodeUtility::filterTextNodes($parentOfTopCandidate->childNodes)) === 1) {
$topCandidate = $parentOfTopCandidate;
$parentOfTopCandidate = $topCandidate->parentNode;
}
@@ -1102,14 +1115,16 @@ class Readability
$siblingScoreThreshold = max(10, $topCandidate->contentScore * 0.2);
// Keep potential top candidate's parent node to try to get text direction of it later.
$parentOfTopCandidate = $topCandidate->parentNode;
- $siblings = $parentOfTopCandidate->getChildren();
+ $siblings = $parentOfTopCandidate->childNodes;
$hasContent = false;
$this->logger->info('[Rating] Adding top candidate siblings...');
- /** @var DOMElement $sibling */
- foreach ($siblings as $sibling) {
+ /* @var DOMElement $sibling */
+ // Can't foreach here because down there we might change the tag name and that causes the foreach to skip items
+ for ($i = 0; $i < $siblings->length; $i++) {
+ $sibling = $siblings[$i];
$append = false;
if ($sibling === $topCandidate) {
@@ -1147,7 +1162,6 @@ class Readability
* We have a node that isn't a common block level element, like a form or td tag.
* Turn it into a div so it doesn't get filtered out later by accident.
*/
-
$sibling = NodeUtility::setNodeTag($sibling, 'div');
}
@@ -1266,11 +1280,11 @@ class Readability
// Remove single-cell tables
foreach ($article->shiftingAwareGetElementsByTagName('table') as $table) {
/** @var DOMNode $table */
- $tbody = $table->hasSingleTagInsideElement('tbody') ? $table->childNodes[0] : $table;
+ $tbody = $table->hasSingleTagInsideElement('tbody') ? $table->getFirstElementChild() : $table;
if ($tbody->hasSingleTagInsideElement('tr')) {
- $row = $tbody->firstChild;
+ $row = $tbody->getFirstElementChild();
if ($row->hasSingleTagInsideElement('td')) {
- $cell = $row->firstChild;
+ $cell = $row->getFirstElementChild();
$cell = NodeUtility::setNodeTag($cell, (array_reduce(iterator_to_array($cell->childNodes), function ($carry, $node) {
return $node->isPhrasingContent() && $carry;
}, true)) ? 'p' : 'div');
@@ -1597,7 +1611,7 @@ class Readability
$node->removeAttribute('class');
}
- for ($node = $node->firstChild; $node !== null; $node = $node->nextSibling) {
+ for ($node = $node->getFirstElementChild(); $node !== null; $node = $node->nextSibling) {
$this->_cleanClasses($node);
}
}
@@ -1757,6 +1771,22 @@ class Readability
}
/**
+ * @return string|null
+ */
+ public function getSiteName()
+ {
+ return $this->siteName;
+ }
+
+ /**
+ * @param string $siteName
+ */
+ protected function setSiteName($siteName)
+ {
+ $this->siteName = $siteName;
+ }
+
+ /**
* @return null|string
*/
public function getDirection()
diff --git a/plugins/af_youtube_embed/init.php b/plugins/af_youtube_embed/init.php
index 16dcc926c..0a6160752 100644
--- a/plugins/af_youtube_embed/init.php
+++ b/plugins/af_youtube_embed/init.php
@@ -4,7 +4,7 @@ class Af_Youtube_Embed extends Plugin {
function about() {
return array(1.0,
- "Embed videos in Youtube RSS feeds",
+ "Embed videos in Youtube RSS feeds (and whitelist Youtube iframes)",
"fox");
}
@@ -12,6 +12,11 @@ class Af_Youtube_Embed extends Plugin {
$this->host = $host;
$host->add_hook($host::HOOK_RENDER_ENCLOSURE, $this);
+ $host->add_hook($host::HOOK_IFRAME_WHITELISTED, $this);
+ }
+
+ function hook_iframe_whitelisted($src) {
+ return in_array($src, ["www.youtube.com", "youtube.com", "youtu.be"]);
}
/**
diff --git a/plugins/auth_internal/init.php b/plugins/auth_internal/init.php
index 8200ddc02..bcba7970a 100644
--- a/plugins/auth_internal/init.php
+++ b/plugins/auth_internal/init.php
@@ -10,81 +10,99 @@ class Auth_Internal extends Plugin implements IAuthModule {
true);
}
- /* @var PluginHost $host */
- function init($host) {
+ /* @var PluginHost $host */
+ function init($host) {
$this->host = $host;
$this->pdo = Db::pdo();
$host->add_hook($host::HOOK_AUTH_USER, $this);
}
- function authenticate($login, $password) {
+ function authenticate($login, $password, $service = '') {
$pwd_hash1 = encrypt_password($password);
$pwd_hash2 = encrypt_password($password, $login);
$otp = $_REQUEST["otp"];
if (get_schema_version() > 96) {
- if (!defined('AUTH_DISABLE_OTP') || !AUTH_DISABLE_OTP) {
- $sth = $this->pdo->prepare("SELECT otp_enabled,salt FROM ttrss_users WHERE
- login = ?");
- $sth->execute([$login]);
+ $sth = $this->pdo->prepare("SELECT otp_enabled,salt FROM ttrss_users WHERE
+ login = ?");
+ $sth->execute([$login]);
- if ($row = $sth->fetch()) {
+ if ($row = $sth->fetch()) {
+ $otp_enabled = $row['otp_enabled'];
+
+ if ($otp_enabled) {
+
+ // only allow app password checking if OTP is enabled
+ if ($service && get_schema_version() > 138) {
+ return $this->check_app_password($login, $password, $service);
+ }
- $base32 = new \OTPHP\Base32();
-
- $otp_enabled = $row['otp_enabled'];
- $secret = $base32->encode(sha1($row['salt']));
-
- $topt = new \OTPHP\TOTP($secret);
- $otp_check = $topt->now();
-
- if ($otp_enabled) {
- if ($otp) {
- if ($otp != $otp_check) {
- return false;
- }
- } else {
- $return = urlencode($_REQUEST["return"]);
- ?>
- <!DOCTYPE html>
- <html>
- <head>
- <title>Tiny Tiny RSS</title>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- </head>
- <?php echo stylesheet_tag("css/default.css") ?>
- <body class="ttrss_utility otp">
- <h1><?php echo __("Authentication") ?></h1>
- <div class="content">
- <form action="public.php?return=<?php echo $return ?>"
- method="POST" class="otpform">
- <input type="hidden" name="op" value="login">
- <input type="hidden" name="login" value="<?php echo htmlspecialchars($login) ?>">
- <input type="hidden" name="password" value="<?php echo htmlspecialchars($password) ?>">
- <input type="hidden" name="bw_limit" value="<?php echo htmlspecialchars($_POST["bw_limit"]) ?>">
- <input type="hidden" name="remember_me" value="<?php echo htmlspecialchars($_POST["remember_me"]) ?>">
- <input type="hidden" name="profile" value="<?php echo htmlspecialchars($_POST["profile"]) ?>">
-
- <fieldset>
- <label><?php echo __("Please enter your one time password:") ?></label>
- <input autocomplete="off" size="6" name="otp" value=""/>
- <input type="submit" value="Continue"/>
- </fieldset>
- </form></div>
- <script type="text/javascript">
- document.forms[0].otp.focus();
- </script>
- <?php
- exit;
+ if ($otp) {
+ $base32 = new \OTPHP\Base32();
+
+ $secret = $base32->encode(mb_substr(sha1($row["salt"]), 0, 12), false);
+ $secret_legacy = $base32->encode(sha1($row["salt"]));
+
+ $totp = new \OTPHP\TOTP($secret);
+ $otp_check = $totp->now();
+
+ $totp_legacy = new \OTPHP\TOTP($secret_legacy);
+ $otp_check_legacy = $totp_legacy->now();
+
+ if ($otp != $otp_check && $otp != $otp_check_legacy) {
+ return false;
}
+ } else {
+ $return = urlencode($_REQUEST["return"]);
+ ?>
+ <!DOCTYPE html>
+ <html>
+ <head>
+ <title>Tiny Tiny RSS</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ </head>
+ <?php echo stylesheet_tag("css/default.css") ?>
+ <body class="ttrss_utility otp">
+ <h1><?php echo __("Authentication") ?></h1>
+ <div class="content">
+ <form action="public.php?return=<?php echo $return ?>"
+ method="POST" class="otpform">
+ <input type="hidden" name="op" value="login">
+ <input type="hidden" name="login" value="<?php echo htmlspecialchars($login) ?>">
+ <input type="hidden" name="password" value="<?php echo htmlspecialchars($password) ?>">
+ <input type="hidden" name="bw_limit" value="<?php echo htmlspecialchars($_POST["bw_limit"]) ?>">
+ <input type="hidden" name="remember_me" value="<?php echo htmlspecialchars($_POST["remember_me"]) ?>">
+ <input type="hidden" name="profile" value="<?php echo htmlspecialchars($_POST["profile"]) ?>">
+
+ <fieldset>
+ <label><?php echo __("Please enter your one time password:") ?></label>
+ <input autocomplete="off" size="6" name="otp" value=""/>
+ <input type="submit" value="Continue"/>
+ </fieldset>
+ </form></div>
+ <script type="text/javascript">
+ document.forms[0].otp.focus();
+ </script>
+ <?php
+ exit;
}
}
}
}
+ // check app passwords first but allow regular password as a fallback for the time being
+ // if OTP is not enabled
+
+ if ($service && get_schema_version() > 138) {
+ $user_id = $this->check_app_password($login, $password, $service);
+
+ if ($user_id)
+ return $user_id;
+ }
+
if (get_schema_version() > 87) {
$sth = $this->pdo->prepare("SELECT salt FROM ttrss_users WHERE login = ?");
@@ -96,7 +114,7 @@ class Auth_Internal extends Plugin implements IAuthModule {
if ($salt == "") {
$sth = $this->pdo->prepare("SELECT id FROM ttrss_users WHERE
- login = ? AND (pwd_hash = ? OR pwd_hash = ?)");
+ login = ? AND (pwd_hash = ? OR pwd_hash = ?)");
$sth->execute([$login, $pwd_hash1, $pwd_hash2]);
@@ -111,7 +129,7 @@ class Auth_Internal extends Plugin implements IAuthModule {
$pwd_hash = encrypt_password($password, $salt, true);
$sth = $this->pdo->prepare("UPDATE ttrss_users SET
- pwd_hash = ?, salt = ? WHERE login = ?");
+ pwd_hash = ?, salt = ? WHERE login = ?");
$sth->execute([$pwd_hash, $salt, $login]);
@@ -125,8 +143,8 @@ class Auth_Internal extends Plugin implements IAuthModule {
$pwd_hash = encrypt_password($password, $salt, true);
$sth = $this->pdo->prepare("SELECT id
- FROM ttrss_users WHERE
- login = ? AND pwd_hash = ?");
+ FROM ttrss_users WHERE
+ login = ? AND pwd_hash = ?");
$sth->execute([$login, $pwd_hash]);
if ($row = $sth->fetch()) {
@@ -136,8 +154,8 @@ class Auth_Internal extends Plugin implements IAuthModule {
} else {
$sth = $this->pdo->prepare("SELECT id
- FROM ttrss_users WHERE
- login = ? AND (pwd_hash = ? OR pwd_hash = ?)");
+ FROM ttrss_users WHERE
+ login = ? AND (pwd_hash = ? OR pwd_hash = ?)");
$sth->execute([$login, $pwd_hash1, $pwd_hash2]);
@@ -147,22 +165,22 @@ class Auth_Internal extends Plugin implements IAuthModule {
}
} else {
$sth = $this->pdo->prepare("SELECT id
- FROM ttrss_users WHERE
- login = ? AND (pwd_hash = ? OR pwd_hash = ?)");
+ FROM ttrss_users WHERE
+ login = ? AND (pwd_hash = ? OR pwd_hash = ?)");
$sth->execute([$login, $pwd_hash1, $pwd_hash2]);
if ($row = $sth->fetch()) {
return $row['id'];
}
- }
+ }
return false;
}
function check_password($owner_uid, $password) {
- $sth = $this->pdo->prepare("SELECT salt,login FROM ttrss_users WHERE
+ $sth = $this->pdo->prepare("SELECT salt,login,otp_enabled FROM ttrss_users WHERE
id = ?");
$sth->execute([$owner_uid]);
@@ -176,7 +194,7 @@ class Auth_Internal extends Plugin implements IAuthModule {
$password_hash2 = encrypt_password($password, $login);
$sth = $this->pdo->prepare("SELECT id FROM ttrss_users WHERE
- id = ? AND (pwd_hash = ? OR pwd_hash = ?)");
+ id = ? AND (pwd_hash = ? OR pwd_hash = ?)");
$sth->execute([$owner_uid, $password_hash1, $password_hash2]);
@@ -186,7 +204,7 @@ class Auth_Internal extends Plugin implements IAuthModule {
$password_hash = encrypt_password($password, $salt, true);
$sth = $this->pdo->prepare("SELECT id FROM ttrss_users WHERE
- id = ? AND pwd_hash = ?");
+ id = ? AND pwd_hash = ?");
$sth->execute([$owner_uid, $password_hash]);
@@ -194,7 +212,7 @@ class Auth_Internal extends Plugin implements IAuthModule {
}
}
- return false;
+ return false;
}
function change_password($owner_uid, $old_password, $new_password) {
@@ -211,15 +229,66 @@ class Auth_Internal extends Plugin implements IAuthModule {
$_SESSION["pwd_hash"] = $new_password_hash;
+ $sth = $this->pdo->prepare("SELECT email, login FROM ttrss_users WHERE id = ?");
+ $sth->execute([$owner_uid]);
+
+ if ($row = $sth->fetch()) {
+ $mailer = new Mailer();
+
+ require_once "lib/MiniTemplator.class.php";
+
+ $tpl = new MiniTemplator;
+
+ $tpl->readTemplateFromFile("templates/password_change_template.txt");
+
+ $tpl->setVariable('LOGIN', $row["login"]);
+ $tpl->setVariable('TTRSS_HOST', SELF_URL_PATH);
+
+ $tpl->addBlock('message');
+
+ $tpl->generateOutputToString($message);
+
+ $mailer->mail(["to_name" => $row["login"],
+ "to_address" => $row["email"],
+ "subject" => "[tt-rss] Password change notification",
+ "message" => $message]);
+
+ }
+
return __("Password has been changed.");
} else {
return "ERROR: ".__('Old password is incorrect.');
}
}
+ private function check_app_password($login, $password, $service) {
+ $sth = $this->pdo->prepare("SELECT p.id, p.pwd_hash, u.id AS uid
+ FROM ttrss_app_passwords p, ttrss_users u
+ WHERE p.owner_uid = u.id AND u.login = ? AND service = ?");
+ $sth->execute([$login, $service]);
+
+ while ($row = $sth->fetch()) {
+ list ($algo, $hash, $salt) = explode(":", $row["pwd_hash"]);
+
+ if ($algo == "SSHA-512") {
+ $test_hash = hash('sha512', $salt . $password);
+
+ if ($test_hash == $hash) {
+ $usth = $this->pdo->prepare("UPDATE ttrss_app_passwords SET last_used = NOW() WHERE id = ?");
+ $usth->execute([$row['id']]);
+
+ return $row['uid'];
+ }
+ } else {
+ user_error("Got unknown algo of app password for user $login: $algo");
+ }
+ }
+
+ return false;
+ }
+
function api_version() {
return 2;
}
}
-?>
diff --git a/prefs.php b/prefs.php
index 38e201fec..d75fc5553 100644
--- a/prefs.php
+++ b/prefs.php
@@ -40,8 +40,6 @@
$theme = get_pref("USER_CSS_THEME", false, false);
if ($theme && theme_exists("$theme")) {
echo stylesheet_tag(get_theme_path($theme), 'theme_css');
- } else {
- echo stylesheet_tag("css/default.css", 'theme_css');
}
}
?>
@@ -99,10 +97,22 @@
?>
</script>
+ <style type="text/css">
+ @media (prefers-color-scheme: dark) {
+ body {
+ background : #303030;
+ }
+ }
+
+ body.css_loading * {
+ display : none;
+ }
+ </style>
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
-<body class="flat ttrss_main ttrss_prefs">
+<body class="flat ttrss_main ttrss_prefs css_loading">
<div id="notify" class="notify"></div>
<div id="cmdline" style="display : none"></div>
diff --git a/public.php b/public.php
index 7aebde78f..e37c44172 100644
--- a/public.php
+++ b/public.php
@@ -2,21 +2,6 @@
set_include_path(dirname(__FILE__) ."/include" . PATH_SEPARATOR .
get_include_path());
- /* remove ill effects of magic quotes */
-
- if (get_magic_quotes_gpc()) {
- function stripslashes_deep($value) {
- $value = is_array($value) ?
- array_map('stripslashes_deep', $value) : stripslashes($value);
- return $value;
- }
-
- $_POST = array_map('stripslashes_deep', $_POST);
- $_GET = array_map('stripslashes_deep', $_GET);
- $_COOKIE = array_map('stripslashes_deep', $_COOKIE);
- $_REQUEST = array_map('stripslashes_deep', $_REQUEST);
- }
-
require_once "autoload.php";
require_once "sessions.php";
require_once "functions.php";
diff --git a/schema/ttrss_schema_mysql.sql b/schema/ttrss_schema_mysql.sql
index fcff9c9bb..60b121e37 100644
--- a/schema/ttrss_schema_mysql.sql
+++ b/schema/ttrss_schema_mysql.sql
@@ -33,6 +33,7 @@ drop table if exists ttrss_cat_counters_cache;
drop table if exists ttrss_feeds;
drop table if exists ttrss_archived_feeds;
drop table if exists ttrss_feed_categories;
+drop table if exists ttrss_app_passwords;
drop table if exists ttrss_users;
drop table if exists ttrss_themes;
drop table if exists ttrss_sessions;
@@ -57,6 +58,14 @@ create table ttrss_users (id integer primary key not null auto_increment,
insert into ttrss_users (login,pwd_hash,access_level) values ('admin',
'SHA1:5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8', 10);
+create table ttrss_app_passwords (id integer not null primary key auto_increment,
+ title varchar(250) not null,
+ pwd_hash text not null,
+ service varchar(100) not null,
+ created datetime not null,
+ last_used datetime default null,
+ owner_uid integer not null references ttrss_users(id) on delete cascade) ENGINE=InnoDB DEFAULT CHARSET=UTF8;
+
create table ttrss_feed_categories(id integer not null primary key auto_increment,
owner_uid integer not null,
title varchar(200) not null,
@@ -137,7 +146,7 @@ create table ttrss_feeds (id integer not null auto_increment primary key,
unique(feed_url(255), owner_uid)) ENGINE=InnoDB DEFAULT CHARSET=UTF8;
insert into ttrss_feeds (owner_uid, title, feed_url) values
- (1, 'Tiny Tiny RSS: Forum', 'http://tt-rss.org/forum/rss.php');
+ ((select id from ttrss_users where login = 'admin'), 'Tiny Tiny RSS: Forum', 'https://tt-rss.org/forum/rss.php');
create table ttrss_entries (id integer not null primary key auto_increment,
title text not null,
@@ -287,7 +296,7 @@ create table ttrss_tags (id integer primary key auto_increment,
create table ttrss_version (schema_version int not null) ENGINE=InnoDB DEFAULT CHARSET=UTF8;
-insert into ttrss_version values (138);
+insert into ttrss_version values (139);
create table ttrss_enclosures (id integer primary key auto_increment,
content_url text not null,
diff --git a/schema/ttrss_schema_pgsql.sql b/schema/ttrss_schema_pgsql.sql
index ac1b38315..c818596b8 100644
--- a/schema/ttrss_schema_pgsql.sql
+++ b/schema/ttrss_schema_pgsql.sql
@@ -30,6 +30,7 @@ drop table if exists ttrss_cat_counters_cache;
drop table if exists ttrss_archived_feeds;
drop table if exists ttrss_feeds;
drop table if exists ttrss_feed_categories;
+drop table if exists ttrss_app_passwords;
drop table if exists ttrss_users;
drop table if exists ttrss_themes;
drop table if exists ttrss_sessions;
@@ -55,6 +56,14 @@ create table ttrss_users (id serial not null primary key,
insert into ttrss_users (login,pwd_hash,access_level) values ('admin',
'SHA1:5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8', 10);
+create table ttrss_app_passwords (id serial not null primary key,
+ title varchar(250) not null,
+ pwd_hash text not null,
+ service varchar(100) not null,
+ created timestamp not null,
+ last_used timestamp default null,
+ owner_uid integer not null references ttrss_users(id) on delete cascade);
+
create table ttrss_feed_categories(id serial not null primary key,
owner_uid integer not null references ttrss_users(id) on delete cascade,
collapsed boolean not null default false,
@@ -106,7 +115,7 @@ create index ttrss_feeds_owner_uid_index on ttrss_feeds(owner_uid);
create index ttrss_feeds_cat_id_idx on ttrss_feeds(cat_id);
insert into ttrss_feeds (owner_uid, title, feed_url) values
- (1, 'Tiny Tiny RSS: Forum', 'http://tt-rss.org/forum/rss.php');
+ ((select id from ttrss_users where login = 'admin'), 'Tiny Tiny RSS: Forum', 'https://tt-rss.org/forum/rss.php');
create table ttrss_archived_feeds (id integer not null primary key,
owner_uid integer not null references ttrss_users(id) on delete cascade,
@@ -269,7 +278,7 @@ create index ttrss_tags_post_int_id_idx on ttrss_tags(post_int_id);
create table ttrss_version (schema_version int not null);
-insert into ttrss_version values (138);
+insert into ttrss_version values (139);
create table ttrss_enclosures (id serial not null primary key,
content_url text not null,
diff --git a/schema/versions/mysql/139.sql b/schema/versions/mysql/139.sql
new file mode 100644
index 000000000..88dfb69c7
--- /dev/null
+++ b/schema/versions/mysql/139.sql
@@ -0,0 +1,13 @@
+begin;
+
+create table ttrss_app_passwords (id integer not null primary key auto_increment,
+ title varchar(250) not null,
+ pwd_hash text not null,
+ service varchar(100) not null,
+ created datetime not null,
+ last_used datetime default null,
+ owner_uid integer not null references ttrss_users(id) on delete cascade) ENGINE=InnoDB DEFAULT CHARSET=UTF8;
+
+update ttrss_version set schema_version = 139;
+
+commit;
diff --git a/schema/versions/pgsql/139.sql b/schema/versions/pgsql/139.sql
new file mode 100644
index 000000000..b2617390c
--- /dev/null
+++ b/schema/versions/pgsql/139.sql
@@ -0,0 +1,13 @@
+begin;
+
+create table ttrss_app_passwords (id serial not null primary key,
+ title varchar(250) not null,
+ pwd_hash text not null,
+ service varchar(100) not null,
+ created timestamp not null,
+ last_used timestamp default null,
+ owner_uid integer not null references ttrss_users(id) on delete cascade);
+
+update ttrss_version set schema_version = 139;
+
+commit;
diff --git a/templates/digest_template.txt b/templates/digest_template.txt
index aa56fb3ae..841f8ee98 100644
--- a/templates/digest_template.txt
+++ b/templates/digest_template.txt
@@ -11,4 +11,5 @@ ${FEED_TITLE}
<!-- $EndBlock feed -->
--
To unsubscribe, visit your configuration options or contact instance owner.
+Sent by tt-rss mailer daemon at ${TTRSS_HOST}.
<!-- $EndBlock digest -->
diff --git a/templates/digest_template_html.txt b/templates/digest_template_html.txt
index ede93d917..f38d98a21 100644
--- a/templates/digest_template_html.txt
+++ b/templates/digest_template_html.txt
@@ -14,5 +14,7 @@
<!-- $EndBlock feed -->
<hr>
-<em>To unsubscribe, visit your configuration options or contact instance owner.</em>
+
+<em>To unsubscribe, visit your configuration options or contact instance owner.</em><br/>
+<em>Sent by tt-rss mailer daemon at ${TTRSS_HOST}.</em>
<!-- $EndBlock digest -->
diff --git a/templates/email_article_template.txt b/templates/email_article_template.txt
index b6bc63921..c955100a0 100644
--- a/templates/email_article_template.txt
+++ b/templates/email_article_template.txt
@@ -12,5 +12,5 @@ Thought I'd share the following with you:
<!-- $EndBlock article -->
--
-This message has been sent by Tiny Tiny RSS installation at ${TTRSS_HOST}.
+Sent by Tiny Tiny RSS mailer daemon at ${TTRSS_HOST}.
<!-- $EndBlock email -->
diff --git a/templates/mail_change_template.txt b/templates/mail_change_template.txt
new file mode 100644
index 000000000..1f7b2a60e
--- /dev/null
+++ b/templates/mail_change_template.txt
@@ -0,0 +1,10 @@
+<!-- $BeginBlock message -->
+Hello, ${LOGIN}.
+
+Your mail address for this Tiny Tiny RSS instance has been changed to ${NEWMAIL}.
+
+If you haven't requested this change, consider contacting your instance owner or resetting your password.
+
+--
+Sent by tt-rss mailer daemon at ${TTRSS_HOST}.
+<!-- $EndBlock message -->
diff --git a/templates/otp_disabled_template.txt b/templates/otp_disabled_template.txt
new file mode 100644
index 000000000..93334dc24
--- /dev/null
+++ b/templates/otp_disabled_template.txt
@@ -0,0 +1,10 @@
+<!-- $BeginBlock message -->
+Hello, ${LOGIN}.
+
+One time passwords (2FA) has been disabled for your account on this Tiny Tiny RSS instance.
+
+If you haven't requested this change, consider contacting your instance owner or resetting your password.
+
+--
+Sent by tt-rss mailer daemon at ${TTRSS_HOST}.
+<!-- $EndBlock message -->
diff --git a/templates/password_change_template.txt b/templates/password_change_template.txt
new file mode 100644
index 000000000..a5fa9c761
--- /dev/null
+++ b/templates/password_change_template.txt
@@ -0,0 +1,10 @@
+<!-- $BeginBlock message -->
+Hello, ${LOGIN}.
+
+Your password for this Tiny Tiny RSS instance has been changed.
+
+If you haven't requested this change, consider contacting your instance owner.
+
+--
+Sent by tt-rss mailer daemon at ${TTRSS_HOST}.
+<!-- $EndBlock message -->
diff --git a/templates/resetpass_link_template.txt b/templates/resetpass_link_template.txt
index d238c8616..c5c5d5f3a 100644
--- a/templates/resetpass_link_template.txt
+++ b/templates/resetpass_link_template.txt
@@ -10,5 +10,6 @@ Please note that the above link will only be valid for the next 15 minutes.
If you don't want to reset your password, ignore this message.
-Sincerely, Tiny Tiny RSS Mail Daemon.
+--
+Sent by tt-rss mailer daemon at ${TTRSS_HOST}.
<!-- $EndBlock message -->
diff --git a/templates/resetpass_template.txt b/templates/resetpass_template.txt
deleted file mode 100644
index c262f9a77..000000000
--- a/templates/resetpass_template.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-<!-- $BeginBlock message -->
-Hello, ${LOGIN}.
-
-Your password for this Tiny Tiny RSS installation has been reset.
-
-Your new password is ${NEWPASS}, please remember it for later reference.
-
-Sincerely, Tiny Tiny RSS Mail Daemon.
-<!-- $EndBlock message -->
diff --git a/tests/ApiTest.php b/tests/ApiTest.php
deleted file mode 100644
index 24f474e51..000000000
--- a/tests/ApiTest.php
+++ /dev/null
@@ -1,256 +0,0 @@
-<?php
-use PHPUnit\Framework\TestCase;
-
-set_include_path(dirname(__DIR__) ."/include" . PATH_SEPARATOR .
- dirname(__DIR__) . PATH_SEPARATOR .
- get_include_path());
-
-require_once "autoload.php";
-
-final class ApiTest extends TestCase {
-
- public function __construct() {
- init_plugins();
- initialize_user_prefs(1);
- set_pref('ENABLE_API_ACCESS', true, 1);
-
- parent::__construct();
- }
-
- public function apiCall($args, $method) {
- $_REQUEST = $args;
-
- $api = new API($args);
- ob_start();
- $api->$method();
- $rv = json_decode(ob_get_contents(), true);
- ob_end_clean();
-
- $this->assertEquals(API::STATUS_OK, $rv['status']);
-
- return $rv;
- }
-
- public function testBasicAuth() {
- $this->assertEquals(true,
- authenticate_user("admin", "password"));
- }
-
- public function testVersion() {
-
- $ret = $this->apiCall([], "getVersion");
-
- $this->assertStringStartsWith(
- VERSION_STATIC,
- $ret['content']['version']);
- }
-
- public function testLogin() {
-
- $ret = $this->apiCall(["op" => "login",
- "user" => "admin",
- "password" => "password"], "login");
-
- $this->assertNotEmpty($ret['content']['session_id']);
- }
-
- public function testGetUnread() {
- $this->testLogin();
- $ret = $this->apiCall([],"getUnread");
-
- $this->assertNotEmpty($ret['content']['unread']);
- }
-
- public function testGetFeeds() {
- $this->testLogin();
- $ret = $this->apiCall([], "getFeeds");
-
- $this->assertInternalType('array', $ret['content']);
-
- $this->assertEquals("http://tt-rss.org/forum/rss.php",
- $ret['content'][0]['feed_url']);
-
- }
-
- public function testGetCategories() {
- $this->testLogin();
- $ret = $this->apiCall([], "getCategories");
-
- $this->assertInternalType('array', $ret['content']);
-
- $this->assertGreaterThanOrEqual(2, sizeof($ret['content']));
-
- foreach ($ret['content'] as $cat) {
-
- $this->assertNotEmpty($cat['title']);
- $this->assertNotNull($cat['id']);
- $this->assertGreaterThanOrEqual(0, $cat['unread']);
-
- $this->assertContains($cat['title'],
- ['Special', 'Labels', 'Uncategorized']);
- }
- }
-
- public function testGetHeadlines() {
- $this->testLogin();
- $ret = $this->apiCall(['feed_id' => -4, 'view_mode' => 'adaptive'], "getHeadlines");
-
- $this->assertInternalType('array', $ret['content']);
-
- foreach ($ret['content'] as $hl) {
- $this->assertInternalType('array', $hl);
-
- $this->assertNotEmpty($hl['guid']);
- $this->assertNotEmpty($hl['title']);
- $this->assertNotEmpty($hl['link']);
- }
-
- $ret = $this->apiCall(['feed_id' => 1, 'view_mode' => 'all_articles'], "getHeadlines");
-
- $this->assertInternalType('array', $ret['content']);
-
- foreach ($ret['content'] as $hl) {
- $this->assertInternalType('array', $hl);
-
- $this->assertNotEmpty($hl['guid']);
- $this->assertNotEmpty($hl['title']);
- $this->assertNotEmpty($hl['link']);
- }
- }
-
- public function testArticle() {
-
- $this->testLogin();
- $ret = $this->apiCall(['feed_id' => -4], "getHeadlines");
-
- $this->assertInternalType('array', $ret['content'][0]);
- $article_id = $ret['content'][0]['id'];
- $title = $ret['content'][0]['title'];
-
- $ret = $this->apiCall(['article_id' => $article_id], "getArticle");
-
- $this->assertInternalType('array', $ret['content']);
- $this->assertNotEmpty($ret['content'][0]['content']);
- $this->assertEquals($title, $ret['content'][0]['title']);
- }
-
- public function testCounters() {
-
- $this->testLogin();
- $ret = $this->apiCall(['output_mode' => 'flc'], "getCounters");
-
- $this->assertInternalType('array', $ret['content']);
-
- foreach ($ret['content'] as $ctr) {
- $this->assertInternalType('array', $ctr);
-
- $this->assertNotNull($ctr['id']);
- $this->assertGreaterThanOrEqual(0, $ctr['counter']);
- }
- }
-
- public function testGetConfig() {
-
- $this->testLogin();
- $ret = $this->apiCall([], "getConfig");
-
- $this->assertInternalType('array', $ret['content']);
-
- foreach ($ret['content'] as $k => $v) {
- $this->assertInternalType('string', $k);
- $this->assertNotEmpty($k);
- }
- }
-
- public function testBasicPrefs() {
-
- $this->testLogin();
- $ret = $this->apiCall(['pref_name' => 'ENABLE_API_ACCESS'], "getPref");
- $this->assertEquals(1, $ret['content']['value']);
-
- set_pref('ENABLE_API_ACCESS', false, 1);
-
- $ret = $this->apiCall(['pref_name' => 'ENABLE_API_ACCESS'], "getPref");
- $this->assertEquals(0, $ret['content']['value']);
-
- set_pref('ENABLE_API_ACCESS', true, 1);
-
- $ret = $this->apiCall(['pref_name' => 'ENABLE_API_ACCESS'], "getPref");
- $this->assertEquals(1, $ret['content']['value']);
- }
-
- public function testFeedTree() {
-
- $this->testLogin();
- $ret = $this->apiCall([], "getFeedTree");
- $this->assertInternalType('array', $ret['content']);
-
- // root
- foreach ($ret['content'] as $tr) {
- $this->assertInternalType('array', $tr);
-
- $this->assertInternalType('array', $tr['items']);
-
- // cats
- foreach ($tr['items'] as $cr) {
- $this->assertInternalType('array', $cr['items']);
-
- $this->assertNotEmpty($cr['id']);
- $this->assertNotEmpty($cr['name']);
-
- // feeds
- foreach ($cr['items'] as $fr) {
- $this->assertNotEmpty($fr['id']);
- $this->assertNotEmpty($fr['name']);
- }
- }
- }
- }
-
-
- public function testLabels() {
- // create label
-
- Labels::create('Test', '', '', 1);
-
- $this->testLogin();
- $ret = $this->apiCall([], "getLabels");
- $this->assertInternalType('array', $ret['content']);
-
- $this->assertEquals('Test', $ret['content'][0]['caption']);
- $label_feed_id = $ret['content'][0]['id'];
- $label_id = Labels::feed_to_label_id($label_feed_id);
-
- $this->assertLessThan(0, $label_feed_id);
- $this->assertGreaterThan(0, $label_id);
-
- // assign/remove label to article
-
- $ret = $this->apiCall(['feed_id' => -4, 'view_mode' => 'adaptive'], "getHeadlines");
- $this->assertInternalType('array', $ret['content'][0]);
- $article_id = $ret['content'][0]['id'];
-
- $ret = $this->apiCall(['article_ids' => $article_id,
- 'label_id' => $label_feed_id, "assign" => "true"],
- "setArticleLabel");
-
- $ret = $this->apiCall(['article_id' => $article_id], "getArticle");
- $this->assertContains($label_feed_id, $ret['content'][0]['labels'][0]);
-
- $ret = $this->apiCall(['article_ids' => $article_id,
- 'label_id' => $label_feed_id, "assign" => "false"],
- "setArticleLabel");
-
- $ret = $this->apiCall(['article_id' => $article_id], "getArticle");
- $this->assertEmpty($ret['content'][0]['labels']);
-
- // clean up and check
-
- Labels::remove($label_id, 1);
-
- $ret = $this->apiCall([], "getLabels");
- $this->assertEmpty($ret['content']);
- }
-
-
-}
diff --git a/themes/light.css b/themes/light.css
new file mode 100644
index 000000000..621afcac5
--- /dev/null
+++ b/themes/light.css
@@ -0,0 +1,2 @@
+@import "../css/default.css";
+/*# sourceMappingURL=light.css.map */ \ No newline at end of file
diff --git a/themes/light.css.map b/themes/light.css.map
new file mode 100644
index 000000000..5fe503f13
--- /dev/null
+++ b/themes/light.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["light.less"],"names":[],"mappings":"QAAQ","file":"light.css"} \ No newline at end of file
diff --git a/themes/light.less b/themes/light.less
new file mode 100644
index 000000000..d35996c5a
--- /dev/null
+++ b/themes/light.less
@@ -0,0 +1 @@
+@import "../css/default.css";
diff --git a/themes/night.css b/themes/night.css
index 64f8a0411..8ae734b4d 100644
--- a/themes/night.css
+++ b/themes/night.css
@@ -657,6 +657,13 @@ body.ttrss_main #headlines-frame div.feed-title a {
body.ttrss_main #headlines-frame div.feed-title a:hover {
color: #b87d2c;
}
+body.ttrss_main #headlines-frame.smooth-scroll {
+ scroll-behavior: smooth;
+}
+body.ttrss_main #headlines-frame.forbid-smooth-scroll,
+body.ttrss_main #content-insert.forbid-smooth-scroll {
+ scroll-behavior: auto;
+}
body.ttrss_main #toolbar-frame_splitter {
display: none;
}
@@ -743,6 +750,7 @@ body.ttrss_main #content-insert {
line-height: 1.5;
overflow: auto;
-webkit-overflow-scrolling: touch;
+ scroll-behavior: smooth;
}
body.ttrss_main img.feed-icon,
body.ttrss_main img.icon {
@@ -859,12 +867,22 @@ body.ttrss_main .dijitDialog h3:first-of-type,
body.ttrss_main .dijitDialog h4:first-of-type {
margin-top: 0px;
}
-body.ttrss_main i.icon-syndicate {
+body.ttrss_main #toolbar-headlines i.icon-syndicate {
color: #ff7c4b;
margin-right: 8px;
border: 1px solid #ff7c4b;
border-radius: 4px;
}
+body.ttrss_main #toolbar-headlines #feed_current_unread {
+ margin-left: 8px;
+ font-weight: bold;
+ text-align: center;
+ border: 1px solid #cd8b31;
+ color: white;
+ background: #cd8b31;
+ border-radius: 4px;
+ min-width: 23px;
+}
body.ttrss_main i.icon-no-feed {
opacity: 0.2;
}
diff --git a/themes/night.css.map b/themes/night.css.map
index ad42163ab..8f1a94dd6 100644
--- a/themes/night.css.map
+++ b/themes/night.css.map
@@ -1 +1 @@
-{"version":3,"sources":["night_base.less","night.less","C:/Users/fox/Projects/tt-rss/css/defines.less","C:/Users/fox/Projects/tt-rss/css/tt-rss.less","C:/Users/fox/Projects/tt-rss/css/cdm.less","C:/Users/fox/Projects/tt-rss/css/prefs.less","C:/Users/fox/Projects/tt-rss/css/utility.less","C:/Users/fox/Projects/tt-rss/css/dijit_basic.less"],"names":[],"mappings":"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","file":"night.css"} \ No newline at end of file
+{"version":3,"sources":["night_base.less","night.less","C:/Users/fox/Projects/tt-rss/css/defines.less","C:/Users/fox/Projects/tt-rss/css/tt-rss.less","C:/Users/fox/Projects/tt-rss/css/cdm.less","C:/Users/fox/Projects/tt-rss/css/prefs.less","C:/Users/fox/Projects/tt-rss/css/utility.less","C:/Users/fox/Projects/tt-rss/css/dijit_basic.less"],"names":[],"mappings":"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","file":"night.css"} \ No newline at end of file
diff --git a/themes/night_blue.css b/themes/night_blue.css
index 487d149b2..694741367 100644
--- a/themes/night_blue.css
+++ b/themes/night_blue.css
@@ -657,6 +657,13 @@ body.ttrss_main #headlines-frame div.feed-title a {
body.ttrss_main #headlines-frame div.feed-title a:hover {
color: #257aa7;
}
+body.ttrss_main #headlines-frame.smooth-scroll {
+ scroll-behavior: smooth;
+}
+body.ttrss_main #headlines-frame.forbid-smooth-scroll,
+body.ttrss_main #content-insert.forbid-smooth-scroll {
+ scroll-behavior: auto;
+}
body.ttrss_main #toolbar-frame_splitter {
display: none;
}
@@ -743,6 +750,7 @@ body.ttrss_main #content-insert {
line-height: 1.5;
overflow: auto;
-webkit-overflow-scrolling: touch;
+ scroll-behavior: smooth;
}
body.ttrss_main img.feed-icon,
body.ttrss_main img.icon {
@@ -859,12 +867,22 @@ body.ttrss_main .dijitDialog h3:first-of-type,
body.ttrss_main .dijitDialog h4:first-of-type {
margin-top: 0px;
}
-body.ttrss_main i.icon-syndicate {
+body.ttrss_main #toolbar-headlines i.icon-syndicate {
color: #ff7c4b;
margin-right: 8px;
border: 1px solid #ff7c4b;
border-radius: 4px;
}
+body.ttrss_main #toolbar-headlines #feed_current_unread {
+ margin-left: 8px;
+ font-weight: bold;
+ text-align: center;
+ border: 1px solid #2a89bc;
+ color: white;
+ background: #2a89bc;
+ border-radius: 4px;
+ min-width: 23px;
+}
body.ttrss_main i.icon-no-feed {
opacity: 0.2;
}
diff --git a/themes/night_blue.css.map b/themes/night_blue.css.map
index 4c8037c5a..07fe6e237 100644
--- a/themes/night_blue.css.map
+++ b/themes/night_blue.css.map
@@ -1 +1 @@
-{"version":3,"sources":["night_base.less","night_blue.less","C:/Users/fox/Projects/tt-rss/css/defines.less","C:/Users/fox/Projects/tt-rss/css/tt-rss.less","C:/Users/fox/Projects/tt-rss/css/cdm.less","C:/Users/fox/Projects/tt-rss/css/prefs.less","C:/Users/fox/Projects/tt-rss/css/utility.less","C:/Users/fox/Projects/tt-rss/css/dijit_basic.less"],"names":[],"mappings":"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","file":"night_blue.css"} \ No newline at end of file
+{"version":3,"sources":["night_base.less","night_blue.less","C:/Users/fox/Projects/tt-rss/css/defines.less","C:/Users/fox/Projects/tt-rss/css/tt-rss.less","C:/Users/fox/Projects/tt-rss/css/cdm.less","C:/Users/fox/Projects/tt-rss/css/prefs.less","C:/Users/fox/Projects/tt-rss/css/utility.less","C:/Users/fox/Projects/tt-rss/css/dijit_basic.less"],"names":[],"mappings":"QACQ;QCAA;ACeR,IAAI;AACJ,IAAI;AACJ;EACE,kBAAA;EACA,WAAA;EACA,YAAA;EACA,SAAA;EACA,UAAA;EACA,SAAA;;ACxBF,IAAI;EACH,gBAAA;EACA,WAAA;EACA,aAAa,8CAAb;EACA,eAAA;EACA,gBAAA;;AALD,IAAI,WAOH;EACC,aAAA;;AARF,IAAI,WAWH,IAAG;EACF,YAAA;EACA,eAAA;;AAbF,IAAI,WAWH,IAAG,KAIF,IAAG;EACF,YAAA;EACA,cAAA;EACA,sBAAA;EACA,wBAAA;EACA,gBAAA;;AApBH,IAAI,WAWH,IAAG,KAIF,IAAG,OAOF;AAtBH,IAAI,WAWH,IAAG,KAIF,IAAG,OAOK;EACN,aAAA;;AAvBJ,IAAI,WAWH,IAAG,KAIF,IAAG,OAWF;EACC,aAAA;EACA,kBAAA;EACA,iBAAA;EACA,mBAAA;EACA,8BAAA;;AA/BJ,IAAI,WAWH,IAAG,KAIF,IAAG,OAmBF;EACC,YAAA;;AAnCJ,IAAI,WAWH,IAAG,KAIF,IAAG,OAuBF;EACC,mBAAA;;AAvCJ,IAAI,WAWH,IAAG,KAIF,IAAG,OA2BF;AA1CH,IAAI,WAWH,IAAG,KAIF,IAAG,OA2BG,EAAC;EACL,eAAA;EACA,sBAAA;EACA,WAAA;;AA7CJ,IAAI,WAWH,IAAG,KAIF,IAAG,OAiCF;EACC,YAAA;EACA,eAAA;EACA,gBAAA;EACA,kCAAA;EACA,aDrDY,qBAAqB,qBAAqB,yBAAyB,oBAAoB,8CCqDnG;;AArDJ,IAAI,WAWH,IAAG,KA8CF,IAAG;EACF,aAAA;EACA,eAAA;;AA3DH,IAAI,WAWH,IAAG,KA8CF,IAAG,QAIF;AA7DH,IAAI,WAWH,IAAG,KA8CF,IAAG,QAKF;EACC,iBAAA;EACA,cAAA;EACA,YAAA;;AAjEJ,IAAI,WAWH,IAAG,KA8CF,IAAG,QAWF;EACC,aAAA;;AArEJ,IAAI,WAWH,IAAG,KA8CF,IAAG,QAeF;EACC,cAAA;EACA,cAAA;;AA1EJ,IAAI,WA+EH;EACC,aAAA;EACA,mBAAA;;AAjFF,IAAI,WA+EH,eAIC;EACC,iBAAA;;AApFH,IAAI,WAwFH;EACC,yBAAA;EACA,WAAA;EACA,yBAAA;EACA,cAAA;EACA,aAAA;EACA,mBAAA;;AA9FF,IAAI,WAwFH,cAQC;EACC,YAAA;;AAjGH,IAAI,WAqGH,cAAa;EACZ,eAAA;;AAtGF,IAAI,WAyGH;EACC,eAAA;EACA,gBAAA;EACA,kCAAA;;AA5GF,IAAI,WAgHH;EACC,eAAA;EACA,gBAAA;EACA,kCAAA;;AAnHF,IAAI,WAuHH;EACC,eAAA;EACA,gBAAA;EACA,kCAAA;;AA1HF,IAAI,WA8HH;EACC,eAAA;EACA,gBAAA;EACA,kCAAA;;AAjIF,IAAI,WAqIH;EACC,cAAA;EACA,qBAAA;;AAvIF,IAAI,WA0IH,EAAC;EACA,cAAA;EACA,0BAAA;;AA5IF,IAAI,WA+IH,QAAO;EACN,YAAA;;AAhJF,IAAI,WAmJH;EACC,YAAA;EACA,WAAA;EACA,gBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;EACA,eAAA;EACA,eAAA;EACA,WAAA;EACA,aAAA;EACA,UAAA;EACA,mBAAA;EACA,aAAA;EACA,+BAAA;EACA,0CAAA;;AAlKF,IAAI,WAmJH,QAiBC;EACC,sBAAA;;AArKH,IAAI,WAmJH,QAqBC;EACC,YAAA;EACA,eAAA;EACA,iBAAA;;AA3KH,IAAI,WAmJH,QA2BC;EACC,eAAA;;AA/KH,IAAI,WAmLH;EACC,qBAAA;EACA,yBAAA;;AArLF,IAAI,WAwLH,QAAO;EACN,qBAAA;EACA,yBAAA;;AA1LF,IAAI,WA6LH,QAAO;EACN,qBAAA;EACA,yBAAA;;AA/LF,IAAI,WA6LH,QAAO,YAIN,EAAC;EACA,cAAA;;AAlMH,IAAI,WAsMH,QAAO;EACN,sBAAA;EACA,kBAAA;EACA,YAAA;;AAzMF,IAAI,WAsMH,QAAO,aAKN,EAAC;AA3MH,IAAI,WAsMH,QAAO,aAKS,EAAC;EACf,YAAA;;AA5MH,IAAI,WAgNH,gBACC,eACC;EACC,qBAAA;;AAnNJ,IAAI,WAgNH,gBACC,eAIC;EACC,aAAA;;AAtNJ,IAAI,WA2NH;EACC,sBAAA;EACA,wBAAA;EACA,uCAAA;EACA,aAAA;EACA,mBAAA;EACA,iBAAA;EACA,gBAAA;EACA,mBAAA;EACA,iBAAA;;AApOF,IAAI,WA2NH,IAWC;EACC,mBAAA;EACA,YAAA;;AAxOH,IAAI,WA2NH,IAgBC;EACC,sBAAA;;AA5OH,IAAI,WA2NH,IAoBC;AA/OF,IAAI,WA2NH,IAoBQ;EACN,aAAA;EACA,mBAAA;;AAjPH,IAAI,WA2NH,IAoBC,MAIC,EAAC;AAnPJ,IAAI,WA2NH,IAoBQ,OAIN,EAAC;EACA,gBAAA;EACA,YAAA;EACA,6BAAA;EACA,iBAAA;EACA,eAAA;;AAxPJ,IAAI,WA2NH,IAiCC,OACC,EAAC;EACA,WAAA;;AA9PJ,IAAI,WA2NH,IAuCC,IAAG;EACF,eAAA;EACA,YAAA;EACA,gBAAA;EACA,uBAAA;;AAtQH,IAAI,WA2NH,IA8CC,KAAI;EACH,mBAAA;EACA,WAAA;EACA,eAAA;EACA,mBAAA;;AA7QH,IAAI,WA2NH,IAqDC,IAAG;EACF,iBAAA;;AAjRH,IAAI,WA2NH,IAyDC,KAAI,KAAM;EACT,kBAAA;EACA,qBAAA;EACA,gBAAA;EACA,eAAA;EACA,kBAAA;EACA,mBAAA;EACA,WAAA;;AA3RH,IAAI,WA2NH,IAmEC,KAAI,KAAM,EAAC;EACV,cAAA;;AA/RH,IAAI,WA2NH,IAuEC,KAAI;EACH,WAAA;EACA,iBAAA;EACA,eAAA;EACA,kBAAA;;AAtSH,IAAI,WA2NH,IA8EC,KAAI,QAAS;EACZ,qBAAA;;AA1SH,IAAI,WA2NH,IAkFC,IAAG,KAAM;EACR,eAAA;;AA9SH,IAAI,WA2NH,IAsFC,IAAG,KAAM;AAjTX,IAAI,WA2NH,IAsFe,IAAG,MAAO;EACvB,eAAA;;AAlTH,IAAI,WA2NH,IA0FC,IAAG,MAAO;EACT,gBAAA;EACA,kCAAA;EACA,aDvTS,oBAAoB,8CCuT7B;EACA,WAAA;;AAzTH,IAAI,WA2NH,IAiGC,EAAC,MAAM;AA5TT,IAAI,WA2NH,IAiGe,KAAI,WAAW,KAAM;EAClC,cAAA;;AA7TH,IAAI,WAiUH,IAAG,MAAO;EACT,aAAA;;AAlUF,IAAI,WAqUH,IAAG;EACF,iBAAA;;AAtUF,IAAI,WAyUH,IAAG,OAAQ,IAAG,MAAO;EACpB,YAAA;;AA1UF,IAAI,WA6UH,IAAG,OAAQ,IAAG,MAAO;EACpB,cAAA;;;AA9UF,IAAI,WAkVH,IAAG;EACF,mBAAA;;AAnVF,IAAI,WAsVH,IAAG;AAtVJ,IAAI,WAuVH,IAAG;EACF,YAAA;EACA,mBAAA;;AAzVF,IAAI,WAsVH,IAAG,OAKF;AA3VF,IAAI,WAuVH,IAAG,SAIF;AA3VF,IAAI,WAsVH,IAAG,OAMF,MAAM;AA5VR,IAAI,WAuVH,IAAG,SAKF,MAAM;AA5VR,IAAI,WAsVH,IAAG,OAOF,YAAY,EAAC;AA7Vf,IAAI,WAuVH,IAAG,SAMF,YAAY,EAAC;AA7Vf,IAAI,WAsVH,IAAG,OAQF;AA9VF,IAAI,WAuVH,IAAG,SAOF;EACC,YAAA;;AA/VH,IAAI,WAmWH,IAAG;EACF,cAAA;;AApWF,IAAI,WAuWH,gBAAgB;AAvWjB,IAAI,WAwWH,iBAAiB;AAxWlB,IAAI,WAyWH,kBAAkB;EACjB,uBAAA;EACA,WAAA;EACA,kBAAA;EACA,sBAAA;EACA,sBAAA;;AA9WF,IAAI,WAiXH,gBAAgB;AAjXjB,IAAI,WAkXH,iBAAiB;AAlXlB,IAAI,WAmXH,kBAAkB;EACjB,cAAA;EACA,sBAAA;;AArXF,IAAI,WAwXH,gBAAgB;AAxXjB,IAAI,WAyXH,iBAAiB;AAzXlB,IAAI,WA0XH,kBAAkB;EACjB,uBAAA;EACA,aAAA;EACA,WAAA;EACA,sBAAA;EACA,eAAA;EACA,sBAAA;EACA,gBAAA;EACA,cAAA;EACA,cAAA;EACA,cAAA;;AApYF,IAAI,WAuYH,IAAG;EACF,WAAA;EACA,YAAA;;AAzYF,IAAI,WA4YH,KAAI;EACH,WAAA;EACA,mBAAA;EACA,eAAA;EACA,iBAAA;;AAhZF,IAAI,WAmZH;EACC,qBAAA;EACA,sBAAA;EACA,yBAAA;EACA,cAAA;EACA,WAAA;EACA,mBAAA;EACA,gBAAA;EACA,gBAAA;EACA,mBAAA;;AA5ZF,IAAI,WA+ZH,EAAC;AA/ZF,IAAI,WA+ZW,EAAC;EACd,eAAA;EACA,WAAA;;AAjaF,IAAI,WAoaH,IAAG;EACF,sBAAA;EACA,uBAAA;EACA,YAAA;;AAvaF,IAAI,WA0aH,GAAE;EACD,aAAA;EACA,WAAA;EACA,cAAA;EACA,6BAAA;EACA,kBAAA;EACA,mBAAA;EACA,uBAAA;EACA,uBAAA;EACA,qBAAA;EACA,YAAA;;AApbF,IAAI,WA0aH,GAAE,eAYD;EACC,aAAA;EACA,mBAAA;;AAxbH,IAAI,WA0aH,GAAE,eAYD,GAIC;EACC,WAAA;;AA3bJ,IAAI,WAicH,gBAAgB,KAAI;EACnB,cAAA;;AAlcF,IAAI,WAqcH,GAAE;EACD,qBAAA;EACA,WAAA;EACA,YAAA;;AAxcF,IAAI,WAqcH,GAAE,QAKD;EACC,WAAA;EACA,YAAA;;AA5cH,IAAI,WAgdH;EACC,iBAAA;;AAjdF,IAAI,WAodH;EACC,gBAAA;EACA,OAAA;EACA,MAAA;EACA,YAAA;EACA,WAAA;EACA,YAAA;EACA,kBAAA;;AA3dF,IAAI,WA8dH;EACC,iBAAA;EACA,WAAA;;AAheF,IAAI,WAmeH,IAAG;EACF,YAAA;EACA,kBAAA;EACA,iBAAA;;AAteF,IAAI,WAyeH,IAAG;EACF,gBAAA;EACA,kBAAA;EACA,wBAAA;EACA,eAAA;EACA,sBAAA;EACA,wBAAA;;AA/eF,IAAI,WAkfH,IAAG,gBAAgB,KAClB;EACC,iBAAA;EACA,mBAAA;;AArfH,IAAI,WAkfH,IAAG,gBAAgB,KAMlB,IAAI;EACH,aAAA;;AAzfH,IAAI,WA6fH,aAEC;AA/fF,IAAI,WA6fH,aAGC;AAhgBF,IAAI,WA6fH,aAGU;EACR,eAAA;EACA,gBAAA;EACA,WAAA;EACA,aDpgBa,qBAAqB,qBAAqB,yBAAyB,oBAAoB,8CCogBpG;;AApgBH,IAAI,WA6fH,aAUC;AAvgBF,IAAI,WA6fH,aAWC;EACC,iBAAA;;AAzgBH,IAAI,WA6fH,aAeC,OAAM,WAAY;AA5gBpB,IAAI,WA6fH,aAgBC,aAAa;EACZ,cAAA;;AA9gBH,IAAI,WA6fH,aAoBC,QAAO;EACN,SAAA;;AAlhBH,IAAI,WA6fH,aAwBC,QAGC,SACC;AAzhBJ,IAAI,WA6fH,aAyBC,IAAG,WAEF,SACC;AAzhBJ,IAAI,WA6fH,aAyBiB,IAAG,aAElB,SACC;EACC,iBAAA;EACA,kBAAA;EACA,qBAAA;EACA,gBAAA;EACA,iBAAA;;AA9hBL,IAAI,WA6fH,aAwBC,QAGC,SASC,QAAO;AAjiBX,IAAI,WA6fH,aAyBC,IAAG,WAEF,SASC,QAAO;AAjiBX,IAAI,WA6fH,aAyBiB,IAAG,aAElB,SASC,QAAO;EACN,mBAAA;EACA,eAAA;;AAniBL,IAAI,WA6fH,aAwBC,QAGC,SAcC,QAAO;AAtiBX,IAAI,WA6fH,aAyBC,IAAG,WAEF,SAcC,QAAO;AAtiBX,IAAI,WA6fH,aAyBiB,IAAG,aAElB,SAcC,QAAO;EACN,eAAA;;AAviBL,IAAI,WA6fH,aAwBC,QAsBC;AA3iBH,IAAI,WA6fH,aAyBC,IAAG,WAqBF;AA3iBH,IAAI,WA6fH,aAyBiB,IAAG,aAqBlB;EACC,iBAAA;EACA,gBAAA;;AA7iBJ,IAAI,WA6fH,aAwBC,QA2BC,SAAQ;AAhjBX,IAAI,WA6fH,aAyBC,IAAG,WA0BF,SAAQ;AAhjBX,IAAI,WA6fH,aAyBiB,IAAG,aA0BlB,SAAQ;EACP,gBAAA;;AAjjBJ,IAAI,WA6fH,aAwBC,QA+BC,SAAQ;AApjBX,IAAI,WA6fH,aAyBC,IAAG,WA8BF,SAAQ;AApjBX,IAAI,WA6fH,aAyBiB,IAAG,aA8BlB,SAAQ;EACP,iBAAA;;AArjBJ,IAAI,WA6fH,aA4DC;AAzjBF,IAAI,WA6fH,aA6DC;EACC,eAAA;EACA,iBAAA;;AA5jBH,IAAI,WA6fH,aAkEC,OAAM;EACL,kBAAA;;AAhkBH,IAAI,WAokBH,EAAC;EACA,cAAA;;AArkBF,IAAI,WAwkBH,IAAG;EACF,kBAAA;EACA,SAAA;EACA,WAAA;EACA,eAAA;EACA,WAAA;EACA,iBAAA;EACA,sBAAA;EACA,yBAAA;EACA,wBAAA;EACA,UAAA;;AAllBF,IAAI,WAqlBH;EACC,sBAAA;EACA,YAAA;EACA,WAAA;;AAxlBF,IAAI,WA2lBH,cACC;EACC,eAAA;EACA,YAAA;;AA9lBH,IAAI,WA2lBH,cAMC;EACC,gBAAA;;AAlmBH,IAAI,WA2lBH,cAUC,gBACC;EACC,UAAA;;AAvmBJ,IAAI,WA2lBH,cAUC,gBAKC;EACC,UAAA;EACA,aAAA;;AA5mBJ,IAAI,WA2lBH,cAUC,gBASC;EACC,kBAAA;;AA/mBJ,IAAI,WAonBH;EACC,YAAA;EACA,iBAAA;EACA,WAAA;;AAvnBF,IAAI,WA0nBH;EACC,YAAA;EACA,sBAAA;EACA,gBAAA;EACA,gBAAA;EACA,sDAAA;EACA,iCAAA;;AAhoBF,IAAI,WA0nBH,cAQC;EACC,YAAA;EACA,kBAAA;EACA,kCAAA;EACA,aDroBS,oBAAoB,8CCqoB7B;;AAtoBH,IAAI,WA0nBH,cAQC,UAMC,aAAY;EACX,gBAAA;EACA,cAAA;EACA,qBAAA;;AA3oBJ,IAAI,WA0nBH,cAQC,UAYC;EACC,iBAAA;EACA,qBAAA;EACA,cAAA;EACA,kBAAA;EACA,yBAAA;EACA,YAAA;EACA,mBAAA;EACA,kBAAA;EACA,sBAAA;EACA,YAAA;EACA,kBAAA;EACA,iBAAA;EACA,iBAAA;EACA,eAAA;EACA,eAAA;EACA,YAAA;;AA9pBJ,IAAI,WA0nBH,cAQC,UA+BC,eAAe;EACd,UAAA;EACA,YAAA;EACA,kBAAA;EACA,SAAA;;AArqBJ,IAAI,WA0nBH,cAQC,UAsCC,cAAc,gBAAe;EAC5B,iBAAA;;AAzqBJ,IAAI,WA0nBH,cAQC,UA0CC,cAAa,MAAO;EACnB,UAAA;;AA7qBJ,IAAI,WA0nBH,cAQC,UA8CC,eAAe;EACd,6BAAA;;AAjrBJ,IAAI,WA0nBH,cAQC,UAkDC,eAAe;EACd,gDAAA;EACA,8BAAA;EACA,gBAAA;EACA,WAAA;;AAxrBJ,IAAI,WA0nBH,cAQC,UAyDC,WAAU;EACT,iBAAA;;AA5rBJ,IAAI,WA0nBH,cAQC,UA6DC,EAAC,KAAK;EACL,WAAA;;AAhsBJ,IAAI,WA0nBH,cAQC,UAiEC,EAAC,KAAK;EACL,cAAA;;AApsBJ,IAAI,WA0nBH,cAQC,UAqEC,EAAC,KAAK;EACL,kBAAA;EACA,cAAA;EACA,eAAA;EACA,UAAA;;AA3sBJ,IAAI,WA0nBH,cAQC,UA4EC,EAAC,KAAK;EACL,cAAA;;AA/sBJ,IAAI,WA0nBH,cAQC,UAgFC,EAAC,KAAK;EACL,cAAA;;AAntBJ,IAAI,WA0nBH,cAQC,UAoFC,EAAC,KAAK;EACL,kBAAA;EACA,SAAA;EACA,iBAAA;EACA,cAAA;;AA1tBJ,IAAI,WAguBH;EACC,YAAA;EACA,WAAA;EACA,iBAAA;;AAnuBF,IAAI,WAsuBH,iBAAgB,cAAe,QAAQ;EACtC,aAAA;;AAvuBF,IAAI,WA0uBH;EACC,YAAA;EACA,gBAAA;EACA,eAAA;EACA,iCAAA;EACA,mBAAmB,aAAnB;EACA,mCAAA;;AAhvBF,IAAI,WA0uBH,iBAQC,IAAG;EACF,yBAAA;EACA,wBAAA;EACA,gBAAA;;AArvBH,IAAI,WA0uBH,iBAcC,IAAG,WAAY,EAAC;EACf,WAAA;EACA,iBAAA;;AA1vBH,IAAI,WA0uBH,iBAmBC,IAAG,WAAY;EACd,WAAA;;AA9vBH,IAAI,WA0uBH,iBAuBC,IAAG,WAAY,EAAC;EACf,cAAA;;AAlwBH,IAAI,WAswBH,iBAAgB;EACf,uBAAA;;AAvwBF,IAAI,WA0wBH,iBAAgB;AA1wBjB,IAAI,WA2wBH,gBAAe;EACd,qBAAA;;AA5wBF,IAAI,WA+wBH;EACC,aAAA;;AAhxBF,IAAI,WAmxBH;EACC,YAAA;EACA,WAAA;EACA,iBAAA;EACA,mBAAA;EACA,eAAA;;AAxxBF,IAAI,WAmxBH,eAOC;EACC,iBAAA;EACA,sBAAA;EACA,wBAAA;EACA,iBAAA;EACA,YAAA;EACA,aAAA;EACA,mBAAA;EACA,iBAAA;EACA,WAAA;EACA,eAAA;EACA,mBAAA;;AAryBH,IAAI,WAmxBH,eAOC,SAaC;AAvyBH,IAAI,WAmxBH,eAOC,SAcC,qBAAqB;AAxyBxB,IAAI,WAmxBH,eAOC,SAeC,kBAAkB;EACjB,WAAA;;AA1yBJ,IAAI,WAmxBH,eAOC,SAmBC,EAAC;AA7yBJ,IAAI,WAmxBH,eAOC,SAmBc,MAAM,EAAC;EACnB,UAAA;;AA9yBJ,IAAI,WAmxBH,eAOC,SAuBC,EAAC;EACA,cAAA;;AAlzBJ,IAAI,WAmxBH,eAOC,SA2BC;EACC,kBAAA;EACA,YAAA;EACA,aAAA;;AAxzBJ,IAAI,WAmxBH,eAOC,SA2BC,mBAKC;EACC,YAAA;EACA,aAAA;EACA,mBAAA;;AA7zBL,IAAI,WAmxBH,eAOC,SA2BC,mBAKC,MAKC;EACC,sBAAA;EACA,iBAAA;;AAj0BN,IAAI,WAmxBH,eAOC,SA2BC,mBAgBC;EACC,aAAA;EACA,mBAAA;;AAv0BL,IAAI,WAmxBH,eAOC,SAiDC;EACC,cAAA;EACA,kBAAA;;AA70BJ,IAAI,WAmxBH,eAOC,SAsDC;EACC,kBAAA;EACA,iBAAA;EACA,iBAAA;EACA,cAAA;;AAGD,QAA0B;EAA1B,IAv1BC,WAmxBH,eAOC,SA8DE;IACC,aAAA;;;AAz1BL,IAAI,WA+1BH;EACC,iBAAA;EACA,iBAAA;EACA,WAAA;EACA,wBAAA;EACA,WAAA;EACA,kBAAA;EACA,UAAA;EACA,QAAA;EACA,UAAA;;AAx2BF,IAAI,WA22BH;EACC,YAAA;EACA,kBAAA;EACA,iBAAA;EACA,gBAAA;EACA,cAAA;EACA,iCAAA;EACA,uBAAA;;AAl3BF,IAAI,WAq3BH,IAAG;AAr3BJ,IAAI,WAq3BY,IAAG;EACjB,WAAA;EACA,YAAA;EACA,iBAAA;EACA,sBAAA;EACA,qBAAA;;AA13BF,IAAI,WA63BH;EACC,qBAAA;EACA,WAAA;EACA,eAAA;EACA,uBAAA;EACA,sBAAA;EACA,wBAAA;EACA,uBAAA;EACA,WAAA;EACA,kBAAA;EACA,gBAAA;;AAv4BF,IAAI,WA04BH,QAAO;EACN,cAAA;EACA,qBAAA;;AA54BF,IAAI,WA+4BH,QAAO;EACN,gBAAA;EACA,eAAA;;AAj5BF,IAAI,WAo5BH,iBAAgB,aAAc;EAC7B,YAAA;;AAr5BF,IAAI,WAw5BH;EACC,gBAAA;EACA,kBAAA;EACA,WAAA;EACA,eAAA;EACA,kBAAA;;AA75BF,IAAI,WAw5BH,kBAOC;AA/5BF,IAAI,WAw5BH,kBAOI;EACF,WAAA;EACA,aAAA;EACA,cAAA;;AAl6BH,IAAI,WAw5BH,kBAaC,EAAC;EACA,cAAA;;AAt6BH,IAAI,WA06BH,GAAE;AA16BH,IAAI,WA06BmB,GAAE;EACvB,iBAAA;EACA,cAAA;EACA,qBAAA;EACA,mBAAA;EACA,kBAAA;EACA,6BAAA;EACA,sBAAA;EACA,uBAAA;EACA,YAAA;EACA,gBAAA;;AAp7BF,IAAI,WAu7BH,GAAE,kBAAmB;AAv7BtB,IAAI,WAu7BsB,GAAE,kBAAmB;EAC7C,eAAA;;AAx7BF,IAAI,WA27BH,GAAE,kBAAmB,GAAG;AA37BzB,IAAI,WA27BqC,GAAE,kBAAmB,GAAG;EAC/D,iBAAA;;AA57BF,IAAI,WA+7BH,GAAE,aACD;EACC,aAAA;;AAj8BH,IAAI,WA+7BH,GAAE,aAKD,GAAE;EACD,YAAA;;AAr8BH,IAAI,WA+7BH,GAAE,aASD;EACC,cAAA;EACA,YAAA;;AA18BH,IAAI,WA+7BH,GAAE,aAcD;EACC,eAAA;;AA98BH,IAAI,WAk9BH,OAAM;EACL,cAAA;EACA,gBAAA;EACA,gBAAA;;AAr9BF,IAAI,WAw9BH,iBAAiB;EAChB,aAAA;EACA,YAAA;;AA19BF,IAAI,WA69BH,KAAI;EACH,yBAAA;EACA,cAAA;;AA/9BF,IAAI,WAs+BH,iBAAiB;EAChB,iBAAA;;AAv+BF,IAAI,WA0+BH;EACC,iBAAA;;AA3+BF,IAAI,WA8+BH,aAAa,IAAG;EACf,sBAAA;EACA,YAAA;EACA,WAAA;EACA,eAAA;EACA,gBAAA;EACA,YAAA;EACA,WAAA;;AAIF,IAAI,WAAY,aACf,GAAE;AADH,IAAI,WAAY,aAEf,GAAE;AAFH,IAAI,WAAY,aAGf,GAAE;AAHH,IAAI,WAAY,aAIf,GAAE;EACD,eAAA;;AAIF,IAAI,WACH,mBACC,EAAC;EACA,cAAA;EACA,iBAAA;EACA,yBAAA;EACA,kBAAA;;AANH,IAAI,WACH,mBAOC;EACC,gBAAA;EACA,iBAAA;EACA,kBAAA;EACA,yBAAA;EACA,YAAA;EACA,mBAAA;EACA,kBAAA;EACA,eAAA;;AAhBH,IAAI,WAoBH,EAAC;EACA,YAAA;;AArBF,IAAI,WAwBH,cAAa,gBAAiB;EAC7B,YAAA;;AAzBF,IAAI,WA4BH,eAAc,OAAQ,EAAC;AA5BxB,IAAI,WA6BH,KAAI,OAAQ,MAAM,EAAC;AA7BpB,IAAI,WA8BH,IAAG,OAAQ,MAAM,EAAC;EACjB,cAAA;;AA/BF,IAAI,WAkCH,eAAc,UAAW,EAAC;AAlC3B,IAAI,WAmCH,KAAI,UAAW,MAAM,EAAC;AAnCvB,IAAI,WAoCH,IAAG,UAAW,MAAM,EAAC;EACpB,cAAA;;AArCF,IAAI,WAwCH,YAAY,EAAC;EACZ,cAAA;;AAzCF,IAAI,WA4CH,WAAW,EAAC;EACX,WAAA;;AA7CF,IAAI,WAgDH,eAAe,EAAC;EACf,YAAA;;AAjDF,IAAI,WAoDH,EAAC;EACA,eAAA;;AArDF,IAAI,WAwDH;EACC,sBAAA;EACA,gBAAA;EACA,YAAA;;AA3DF,IAAI,WA8DH,aAAa;EACZ,gBAAA;;AA/DF,IAAI,WAkEH;EACC,cAAA;EACA,aAAA;;AApEF,IAAI,WAuEH,GAAE,KAAM;EACP,YAAA;;AAxEF,IAAI,WA2EH,GAAE;EACD,YAAA;;AA5EF,IAAI,WA+EH,GAAE;EACD,qBAAA;;AAhFF,IAAI,WAmFH;EACC,kBAAA;;AApFF,IAAI,WAuFH,0BACC;EACC,WAAA;;AAzFH,IAAI,WAuFH,0BAKC;EACC,iBAAA;;AA7FH,IAAI,WAuFH,0BASC;EACC,cAAA;;AAMH,IAAI,WACH;AADgB,IAAI,cACpB;EACC,0BAAA;EACA,mBAAA;;EAEA,yBAAA;EACA,yBAAA;EACA,kBAAA;;AAPF,IAAI,WACH,OAQC;AATe,IAAI,cACpB,OAQC;EACC,kBAAA;EACA,SAAA;EACA,YAAA;EACA,iBAAA;EACA,eAAA;;AAdH,IAAI,WAkBH;AAlBgB,IAAI,cAkBpB;EACC,YAAA;;AAnBF,IAAI,WAsBH;AAtBgB,IAAI,cAsBpB;EACC,WAAA;;AAvBF,IAAI,WA0BH;AA1BgB,IAAI,cA0BpB;EACC,cAAA;;AA3BF,IAAI,WA8BH;AA9BgB,IAAI,cA8BpB;EACC,cAAA;;AA/BF,IAAI,WAkCH;AAlCgB,IAAI,cAkCpB;EACC,cAAA;;AAnCF,IAAI,WAsCH;AAtCgB,IAAI,cAsCpB;EACC,cAAA;;AAvCF,IAAI,WA0CH;AA1CgB,IAAI,cA0CpB;AA1CD,IAAI,WA2CH,OAAO;AA3CS,IAAI,cA2CpB,OAAO;EACN,cAAA;;AA5CF,IAAI,WA+CH,OAAO;AA/CS,IAAI,cA+CpB,OAAO;EACN,SAAA;;AAhDF,IAAI,WAmDH;AAnDgB,IAAI,cAmDpB;EACC,cAAA;EACA,yBAAA;EACA,qBAAA;;AAtDF,IAAI,WAyDH,eAAe;AAzDC,IAAI,cAyDpB,eAAe;EACd,cAAA;;AA1DF,IAAI,WA6DH;AA7DgB,IAAI,cA6DpB;AA7DD,IAAI,WA8DH;AA9DgB,IAAI,cA8DpB;EACC,cAAA;EACA,yBAAA;EACA,qBAAA;;AAjEF,IAAI,WAoEH,cAAc;AApEE,IAAI,cAoEpB,cAAc;AApEf,IAAI,WAqEH,aAAa;AArEG,IAAI,cAqEpB,aAAa;EACZ,cAAA;;AAtEF,IAAI,WAyEH;AAzEgB,IAAI,cAyEpB;EACC,cAAA;EACA,yBAAA;EACA,qBAAA;;AA5EF,IAAI,WAyEH,YAKC;AA9Ee,IAAI,cAyEpB,YAKC;EACC,cAAA;;AA/EH,IAAI,WAmFH;AAnFgB,IAAI,cAmFpB;EACC,sBAAA;EACA,wBAAA;;AArFF,IAAI,WAwFH;AAxFgB,IAAI,cAwFpB;EACC,WAAA;;AAzFF,IAAI,WA4FH;AA5FgB,IAAI,cA4FpB;EACC,eAAA;;AA7FF,IAAI,WAgGH,IAAG;AAhGa,IAAI,cAgGpB,IAAG;EACF,kBAAA;EACA,YAAA;EACA,sBAAA;EACA,sBAAA;EACA,WAAA;EACA,YAAA;;AAtGF,IAAI,WAgGH,IAAG,aAQF;AAxGe,IAAI,cAgGpB,IAAG,aAQF;EACC,qBAAA;EACA,WAAA;EACA,YAAA;;AA3GH,IAAI,WAgGH,IAAG,aAcF,GAAG,GAAE;AA9GU,IAAI,cAgGpB,IAAG,aAcF,GAAG,GAAE;EACJ,yBAAA;;AA/GH,IAAI,WAgGH,IAAG,aAkBF,GAAG;AAlHY,IAAI,cAgGpB,IAAG,aAkBF,GAAG;EACF,qBAAA;EACA,cAAA;EACA,SAAA;EACA,YAAA;EACA,eAAA;;AAMH;EACC,mBAAA;EACA,WAAA;;AAGD;EACC,UAAA;;AAGD;EACC,yBAAA;;AAGD;EACC,sBAAA;;AAGD,KAAK;EACJ,aAAA;;ACxvCD,IACC,EAAC;EACA,WAAA;;AAFF,IAKC;AALD,IAKU;EACR,aAAA;EACA,mBAAA;EACA,iBAAA;;AARF,IAWC,QAAQ;AAXT,IAWc,QAAQ;AAXtB,IAYC,QAAQ,EAAC;EACR,eAAA;EACA,sBAAA;;AAdF,IAiBC;EACC,mBAAA;;AAlBF,IAiBC,QAGC;EACC,YAAA;EACA,mBAAA;;AAtBH,IAiBC,QAQC;AAzBF,IAiBC,QAQQ;EACN,aAAA;EACA,mBAAA;;AA3BH,IAiBC,QAQC,MAIC,EAAC;AA7BJ,IAiBC,QAQQ,OAIN,EAAC;EACA,gBAAA;EACA,YAAA;EACA,6BAAA;EACA,iBAAA;EACA,eAAA;;AAlCJ,IAiBC,QAqBC;EACC,YAAA;;AAvCH,IAiBC,QAyBC,KAAI;EACH,WAAA;EACA,mBAAA;EACA,eAAA;EACA,mBAAA;;AA9CH,IAiBC,QAgCC;EACC,eAAA;;AAlDH,IAsDC;EACC,YAAA;EACA,iBAAA;EACA,mBAAA;EACA,WAAA;EACA,WAAA;EACA,mBAAA;;AA5DF,IAsDC,QAQC;EACC,YAAA;;AA/DH,IAmEC;EACC,gBAAA;EACA,iBAAA;;AArEF,IAwEC;EACC,YAAA;EACA,gBAAA;EACA,eAAA;;AA3EF,IA8EC,cAAc;AA9Ef,IA+EC,cAAc;AA/Ef,IAgFC,eAAe;AAhFhB,IAiFC,eAAe;EACd,iBAAA;EACA,cAAA;EACA,YAAA;;AAIF,IAAI;;;;AAAJ,IAAI,SAIH;AAJD,IAAI,SAIQ;EACV,aAAA;;AALF,IAAI,SAQH;EACC,mBAAA;;AATF,IAAI,SAYH;EACC,sBAAA;EACA,wBAAA;;AAdF,IAAI,SAiBH;EACC,eAAA;EACA,kBAAA;;AAKF,GAAG,IAAI,SAAU,IAAG;EACnB,mCAAA;;AAGD,GAAG,IAAI,SAAU,IAAG,OAAQ,EAAC;EAC5B,eAAA;EACA,WAAA;EACA,gBAAA;EACA,uCAAA;EACA,kCAAA;EACA,aF1He,qBAAqB,qBAAqB,yBAAyB,oBAAoB,8CE0HtG;;AAGD,GAAG,IAAI,SAAS;EACf,iBAAA;;AAGD,GAAG,IAAI,SAAS,OAAQ,IAAG,OAAQ,EAAC;EACnC,cAAA;;AAGD,GAAG,IAAI,SAAS,OAAQ,IAAG,OAAQ,EAAC;EACnC,YAAA;;AAGD,GAAG,IAAI,SAAU,IAAG;EACnB,WAAA;;AAGD,GAAG,IAAI,SAAS,OAAQ,IAAG;EAC1B,YAAA;;AAGD,GAAG,IAAI,OAAQ,IAAG;EACjB,YAAA;;AAGD,GAAG,IAAI,MAAO;EACb,aAAA;;AAGD,IACC,IAAG;EACF,yBAAA;EACA,wBAAA;EACA,wBAAA;;AAJF,IAOC,IAAG,WAAY,EAAC;EACf,WAAA;EACA,iBAAA;;AATF,IAYC,IAAG,WAAY;EACd,WAAA;;AAbF,IAgBC,IAAG,WAAY,EAAC;EACf,cAAA;;AAjBF,IAoBC,IAAG,OAAQ,KAAI;EACd,YAAA;EACA,mBAAA;EACA,kBAAA;;AAvBF,IA0BC,IAAG,OAAQ,IAAG;AA1Bf,IA0BsB,IAAG,OAAQ,IAAG,KAAM;EACxC,sBAAA;EACA,WAAA;EACA,mBAAA;EACA,kBAAA;EACA,eAAA;;AA/BF,IAkCC,IAAG,cAAe;;EAEjB,qBAAA;EACA,kBAAA;EACA,aAAA;;AAtCF,IAyCC,IAAG,cAAe;EACjB,cAAA;EACA,cAAA;;AA3CF,IA8CC,IAAG,OAAQ,KAAI;EACd,mBAAA;EACA,WAAA;EACA,eAAA;EACA,mBAAA;;AAlDF,IAqDC,MAAM;EACL,kBAAA;EACA,qBAAA;EACA,wBAAA;;AAIF,KAAK,IAAI,aAAc,IAAG,cACzB;EACC,aAAA;;AAIF,GAAG;EACF,kBAAA;EACA,UAAA;EACA,QAAA;EACA,UAAA;EACA,SAAA;EACA,sBAAA;EACA,wBAAA;EACA,iBAAA;EACA,WAAA;EACA,aAAA;EACA,mBAAA;EACA,iBAAA;EACA,+CAAA;EACA,mBAAA;;AAdD,GAAG,cAgBF;EACC,mBAAA;EACA,YAAA;;AAlBF,GAAG,cAqBF;AArBD,GAAG,cAqBK;EACN,aAAA;EACA,mBAAA;;AAvBF,GAAG,cAqBF,MAIC,EAAC;AAzBH,GAAG,cAqBK,OAIN,EAAC;EACA,gBAAA;EACA,eAAA;EACA,YAAA;EACA,iBAAA;;AA7BH,GAAG,cAqBF,MAWC,EAAC;AAhCH,GAAG,cAqBK,OAWN,EAAC;EACA,gBAAA;EACA,iBAAA;EACA,YAAA;EACA,WAAA;EACA,eAAA;;AArCH,GAAG,cAyCF;EACC,aAAA;;AA1CF,GAAG,cA6CF,UAAU,EAAC;EACV,cAAA;EACA,eAAA;;AA/CF,GAAG,cAkDF,KAAI;EACH,WAAA;EACA,eAAA;EACA,mBAAA;;AArDF,GAAG,cAwDF,EAAC;EACA,eAAA;EACA,WAAA;EACA,uCAAA;EACA,gBAAA;EACA,kCAAA;EACA,aFzRc,qBAAqB,qBAAqB,yBAAyB,oBAAoB,8CEyRrG;;AA9DF,GAAG,cAiEF,IAAG;EACF,mBAAA;EACA,WAAA;EACA,mBAAA;EACA,kBAAA;EACA,eAAA;EACA,mBAAA;;AAvEF,GAAG,cA0EF,IAAG,KAAM;EACR,kBAAA;EACA,qBAAA;EACA,wBAAA;;AA7EF,GAAG,cAgFF,KAAI;EACH,mBAAA;EACA,mBAAA;EACA,WAAA;EACA,eAAA;;AApFF,GAAG,cAuFF,IAAG,KAAM;EACR,WAAA;;AAxFF,GAAG,cA2FF,KAAI;EACH,WAAA;EACA,mBAAA;;AA7FF,GAAG,cAgGF,YACC;EACC,mBAAA;EACA,sBAAA;;AAnGH,GAAG,cAgGF,YAMC,EAAC;EACA,WAAA;;AAvGH,GAAG,cAgGF,YAUC,EAAC;EACA,iBAAA;EACA,WAAA;EACA,mBAAA;EACA,eAAA;EACA,mBAAA;;AA/GH,GAAG,cAgGF,YAkBC,EAAC,QAAQ;EACR,cAAA;;AAMH,GAAG,cAAc,OAAQ,EAAC;EACzB,YAAA;;AAGD,IAAI;EACH,sBAAA;EACA,sBAAA;EACA,wBAAA;;AAHD,IAAI,WAKH;EACC,aAAA;;AANF,IAAI,WASH,IAAG,OAAQ,KAAI;EACd,mBAAA;EACA,uBAAA;EACA,gBAAA;;AAZF,IAAI,WAeH;EACC,mBAAA;EACA,eAAA;EACA,WAAA;EACA,mBAAA;EACA,eAAA;;AAKF,IAAI,WAAW,IAAI;EAClB,iBAAA;;AAGD,IAAI,WAAW;EACd,iBAAA;;AAGD,IAAI,WAAW,SAAS,IAAI;EAC3B,mBAAA;;AADD,IAAI,WAAW,SAAS,IAAI,SAG3B;AAHD,IAAI,WAAW,SAAS,IAAI,SAI3B,QAAQ,EAAC;AAJV,IAAI,WAAW,SAAS,IAAI,SAK3B;EACC,YAAA;;AAIF,IAAI,WAAW;EACd,6BAAA;;AAGD,GAAG,IAAI,WAAW,OAAQ,IAAG,OAAQ,KAAI;EACxC,mBAAA;;AAGD,GAAG,IAAI,WAAY,IAAG,OAAQ,EAAC;EAC9B,gBAAA;EACA,WAAA;EACA,eAAA;EACA,uCAAA;EACA,kCAAA;EACA,aFjZe,qBAAqB,qBAAqB,yBAAyB,oBAAoB,8CEiZtG;;AAGD,GAAG,IAAI,WAAW,OAAQ,IAAG,OAAQ,EAAC;EACrC,YAAA;;AAGD,GAAG,IAAI,WAAW,OACjB,UAAU,EAAC;EACV,cAAA;EACA,eAAA;;AAHF,GAAG,IAAI,WAAW,OAMjB;EACC,aAAA;;AAPF,GAAG,IAAI,WAAW,OAUjB,IAAG,OAAQ,EAAC;EACX,cAAA;EACA,eAAA;EACA,gBAAA;EACA,kCAAA;EACA,aFvac,qBAAqB,qBAAqB,yBAAyB,oBAAoB,8CEuarG;;AAIF,GAAG,IAAI,WAAW,IAAI;EACrB,eAAA;;AADD,GAAG,IAAI,WAAW,IAAI,SAGrB;AAHD,GAAG,IAAI,WAAW,IAAI,SAGX;EACT,aAAA;;AC/aF,IAAI;EACH,sBAAA;EACA,aAAa,8CAAb;EACA,eAAA;;AAHD,IAAI,YAKH;AALD,IAAI,YAKC;AALL,IAAI,YAKK;AALT,IAAI,YAKS;EACX,aHNc,qBAAqB,qBAAqB,yBAAyB,oBAAoB,8CGMrG;EACA,gBAAA;EACA,WAAA;;AARF,IAAI,YAWH,kBACC,GAAE;AAZJ,IAAI,YAWH,kBAEC,GAAE;AAbJ,IAAI,YAWH,kBAGC,GAAE;EACD,eAAA;;AAfH,IAAI,YAmBH;AAnBD,IAAI,YAmBM;EACR,YAAA;EACA,eAAA;;AArBF,IAAI,YAwBH;EACC,YAAA;;AAzBF,IAAI,YA4BH;EACC,aAAA;;AA7BF,IAAI,YAgCH;EACC,sBAAA;EACA,eAAA;EACA,WAAA;EACA,kBAAA;;AApCF,IAAI,YAuCH,QAAQ;EACP,sBAAA;EACA,eAAA;;AAzCF,IAAI,YA4CH,WAAU,WAAY;AA5CvB,IAAI,YA6CH,WAAU,UAAW;AA7CtB,IAAI,YA8CH,WAAU,WAAY;EACrB,aAAA;;AA/CF,IAAI,YAkDH,qBAAqB,EAAC;EACrB,SAAA;EACA,kBAAA;;AApDF,IAAI,YAuDH,6BAA6B,EAAC;EAC7B,YAAA;;AAxDF,IAAI,YA2DH,aAAa,oBAAoB;EAChC,YAAA;;AA5DF,IAAI,YA+DH,IAAG;AA/DJ,IAAI,YA+DkB,IAAG;AA/DzB,IAAI,YA+DyC,IAAG;EAC9C,kBAAA;EACA,YAAA;EACA,WAAA;;AAlEF,IAAI,YAqEH,IAAG,gBAAiB;AArErB,IAAI,YAqEsB,IAAG,kBAAmB;AArEhD,IAAI,YAqEiD,IAAG;EACtD,iBAAA;;AAtEF,IAAI,YAyEH;EACC,UAAA;;AA1EF,IAAI,YA6EH;EACC,aAAA;EACA,YAAA;;AA/EF,IAAI,YAkFH,SAAQ;EACP,gBAAA;;AAnFF,IAAI,YAkFH,SAAQ,MAGP,MAAK;EACJ,gBAAA;;AAtFH,IAAI,YAkFH,SAAQ,MAOP;EACC,qBAAA;EACA,iBAAA;;AA3FH,IAAI,YA+FH,SAAQ,OACP,MAAK;EACJ,YAAA;EACA,mBAAA;EACA,qBAAA;;AAnGH,IAAI,YA+FH,SAAQ,OACP,MAAK,YAKJ;EACC,kBAAA;;AAtGJ,IAAI,YA2GH,cACC,GACC;EACC,eAAA;;AA9GJ,IAAI,YA2GH,cACC,GAKC;EACC,kBAAA;EACA,iBAAA;EACA,mBAAA;;AApHJ,IAAI,YA2GH,cACC,GAWC;EACC,qBAAA;;AAxHJ,IAAI,YA2GH,cACC,GAeC;AA3HH,IAAI,YA2GH,cACC,GAeY;AA3Hd,IAAI,YA2GH,cACC,GAeoB;EAClB,WAAA;;AA5HJ,IAAI,YAiIH;EACC,qBAAA;EACA,eAAA;;AAnIF,IAAI,YAsIH,SACC;EACC,yBAAA;;AAxIH,IAAI,YAsIH,SAKC,GAAE;AA3IJ,IAAI,YAsIH,SAKO,GAAE;EACP,sBAAA;;AA5IH,IAAI,YAsIH,SASC,GAAE;EACD,iBAAA;;AAhJH,IAAI,YAsIH,SAaC,GAAE;EACD,sBAAA;EACA,qBAAA;;AAKH,IAAI,YAEH,kBACC;AAFF,IAAI,WACH,kBACC;EACC,mBAAA;;AAJH,IAAI,YAEH,kBAIC;AALF,IAAI,WACH,kBAIC;EACC,mBAAA;;AAKH,IAAI,YAEH;AADD,IAAI,cACH;EACC,iBAAA;EACA,gBAAA;;AAJF,IAAI,YAOH,SAAQ;AANT,IAAI,cAMH,SAAQ;EACP,gBAAA;;AARF,IAAI,YAWH,SAAQ;AAVT,IAAI,cAUH,SAAQ;EACP,iBAAA;;AAZF,IAAI,YAeH,SAAS,QAAO;AAdjB,IAAI,cAcH,SAAS,QAAO;EACf,gBAAA;EACA,kBAAA;EACA,qBAAA;EACA,iBAAA;EACA,iBAAA;;AApBF,IAAI,YAuBH,SAAS,QAAO;AAtBjB,IAAI,cAsBH,SAAS,QAAO;EACf,eAAA;EACA,mBAAA;;AC/LF,IAAI,cAAc;EACjB,gBAAA;;AAGD,IAAI;EACH,gBAAA;EACA,WAAA;EACA,aAAa,8CAAb;EACA,eAAA;EACA,WAAA;;AALD,IAAI,cAOH;EACC,iBAAA;EACA,sBAAA;EACA,aAAA;EACA,+CAAA;;AAXF,IAAI,cAOH,SAMC,GAAE;EACD,aAAA;;AAdH,IAAI,cAOH,SAUC;AAjBF,IAAI,cAOH,SAUK;AAjBN,IAAI,cAOH,SAUS;EACP,cAAA;EACA,aJvBa,qBAAqB,qBAAqB,yBAAyB,oBAAoB,8CIuBpG;;AAnBH,IAAI,cAOH,SAeC;EACC,eAAA;;AAvBH,IAAI,cAOH,SAmBC;EACC,eAAA;;AA3BH,IAAI,cA+BH;EACC,cAAA;EACA,qBAAA;;AAjCF,IAAI,cAoCH,EAAC;AApCF,IAAI,cAqCH,EAAC;EACA,cAAA;EACA,0BAAA;;AAvCF,IAAI,cA0CH;EACC,WAAA;EACA,aJhDc,qBAAqB,qBAAqB,yBAAyB,oBAAoB,8CIgDrG;EACA,eAAA;EACA,kBAAA;;AA9CF,IAAI,cAiDH;EACC,kBAAA;EACA,iBAAA;;AAnDF,IAAI,cAiDH,QAIC;EACC,WAAA;;AAtDH,IAAI,cAiDH,QAQC,EAAC;EACA,cAAA;;AA1DH,IAAI,cA8DH;EACC,SAAA;;AAIF,IAAI,cAAc,IACjB,SACC,SAAS;EACR,eAAA;;AAKH,IAAI,cAAc;EACjB,SAAA;EACA,UAAA;EACA,WAAA;EACA,YAAA;EACA,kBAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;;AARD,IAAI,cAAc,YAUjB;EACC,gBAAA;EACA,iBAAA;EACA,kBAAA;;AAbF,IAAI,cAAc,YAUjB,WAKC;EACC,aAAA;;AAKH,IAAI,cAAc;AAClB,IAAI,cAAc;EACjB,WAAA;;AAGD,IAAI,cAAc;EACjB,SAAA;EACA,UAAA;EACA,iBAAA;;AAHD,IAAI,cAAc,YAKjB;EACC,aAAA;EACA,eAAA;EACA,gBAAA;;ACjHF,KAEC;EACC,YAAA;;AAHF,KAMC,UACC,kBAAkB;EACjB,wBAAA;;AARH,KAYC,aAAa,EAAC;EACb,kBAAA;EACA,SAAA;;AAdF,KAiBC,UAAU,IAAG;EACZ,kBAAA;EACA,SAAA;;AAnBF,KAsBC,mBAAmB,KAAI;EACtB,YAAA;;AAvBF,KA0BC,YAAY,aAAa,GAAE;AA1B5B,KA2BC,mBAAmB,KAAI,WAAW;EACjC,UAAA;;AA5BF,KA+BC;EACC,eAAA;EACA,YAAA;;AAjCF,KAoCC;EACC,0CAAA;;AArCF,KAwCC,eAAc;EACb,yBAAA;EACA,qBAAA;;AA1CF,KA6CC,WAAW,eAAe;EACzB,gBAAA;EACA,eAAA;;AA/CF,KAkDC,WAAW,eAAc,cAAc,IAAI,wBAAyB;EACnE,cAAA;;AAnDF,KAsDC,WAAW,eAAe;EACzB,YAAA;;AAvDF,KA0DC;EACC,WAAA;;AA3DF,KA8DC,eAAc;EACb,aAAa,WAAb;EACA,SAAS,OAAT;EACA,YAAA;;AAjEF,KAoEC,UAEC,EAAC;AAtEH,KAqEC,8BAA6B,IAAI,gBAChC,EAAC;EACA,cAAA;;AAvEH,KA2EC,WACC;AA5EF,KA2EC,WAEC;EACC,aAAA;;AA9EH,KA2EC,WAMC,sBACC,aAAa;EACZ,YAAA;;AAnFJ,KA2EC,WAMC,sBAKC;EACC,cAAA;;AAvFJ,KA2EC,WAgBC,eAAe,cAAa;EAC3B,YAAA;;AA5FH,KA2EC,WAoBC,cAAc;EACb,kBAAA;EACA,SAAA;;AAjGH,KA2EC,WAyBC;EACC,YAAA;EACA,kBAAA;;AAtGH,KA2EC,WA8BC,cAAa;EACZ,YAAA;;AA1GH,KA2EC,WA8BC,cAAa,eAGZ;EACC,QAAS,YAAT;;AA7GJ,KA2EC,WAsCC;EACC,YAAA;;AAlHH,KA2EC,WA0CC;EACC,eAAA;EACA,mBAAA;EACA,mBAAA;EACA,iBAAA;;AAzHH,KA2EC,WA0CC,aAMC;EACC,YAAA;;AA5HJ,KA2EC,WAqDC;EACC,eAAA;;AAjIH,KA2EC,WAyDC;EACC,gBAAA;EACA,sBAAA;EACA,uBAAA;;AAvIH,KA4IC,MAAK;EACJ,sBAAA;EACA,YAAA;EACA,kBAAA;EACA,eAAA;EACA,kBAAA;EACA,QAAA;;AAlJF,KAqJC,MAAK,YAAY;EAChB,sBAAA;;AAtJF,KAyJC,WACC,eAAe;EACd,oBAAA;EACA,iBAAA;EACA,WAAA;;AL5HH;EACE,aAAa,gBAAb;EACA,kBAAA;EACA,gBAAA;EACA,mDAAA;;EACA,KAAK,MAAM,mBACX,MAAM,2EAC2C,OAAO,0DACR,OAAO,wDACR,OAAO,WAJtD;;AAOF;EACE,aAAa,gBAAb;EACA,mBAAA;EACA,kBAAA;EACA,eAAA;;EACA,qBAAA;EACA,cAAA;EAEA,oBAAA;EACA,sBAAA;EACA,iBAAA;EACA,mBAAA;EACA,cAAA;EACA,sBAAA;;EAGA,mCAAA;;EAEA,kCAAA;;EAGA,kCAAA;;EAGA,uBAAuB,MAAvB;;AFpDF,IAAI,KAAK,WAAW,YACnB;AADD,IAAI,KAAK,WAAW,YACZ;EACN,gBAAA;;AAFF,IAAI,KAAK,WAAW,YAKnB,QAAQ;EACP,WAAA;;AANF,IAAI,KAAK,WAAW,YASnB,GAAE;AATH,IAAI,KAAK,WAAW,YAUnB,IAAG;EACF,cAAA;;AAXF,IAAI,KAAK,WAAW,YAcnB,kBACC;EACC,mBAAA;;AAhBH,IAAI,KAAK,WAAW,YAcnB,kBAIC;EACC,mBAAA;;AAKH,IAAI,KAAK;;;;;;;;;;;;;;;;;AAAT,IAAI,KAAK,WACR,IAAG;EACF,QAAS,SAAT;;AAFF,IAAI,KAAK,WAKR,EAAC;EACA,cAAA;;AANF,IAAI,KAAK,WASR;AATD,IAAI,KAAK,WASD;EACN,WAAA;EACA,gBAAA;;AAXF,IAAI,KAAK,WAcR,eAAe;EACd,gBAAA;EACA,cAAA;;AAhBF,IAAI,KAAK,WAmBR;EACC,gBAAA;EACA,wCAAA;;AArBF,IAAI,KAAK,WAmBR,cAIC,UACC,aAAY;EACX,gBAAA;EACA,WAAA;EACA,kBAAA;;AA3BJ,IAAI,KAAK,WAmBR,cAIC,UAOC;EACC,gBAAA;EACA,8BAAA;EACA,cAAA;;AAjCJ,IAAI,KAAK,WAmBR,cAIC,UAaC,sBAAsB;EACrB,iBAAA;;AArCJ,IAAI,KAAK,WA0CR;EACC,sBAAA;;AA3CF,IAAI,KAAK,WA0CR,eAGC,MAAM;EACL,cAAA;;AA9CH,IAAI,KAAK,WA0CR,eAOC,EAAC;EACA,YAAA;;AAlDH,IAAI,KAAK,WAsDR,IAAG,cAAc,OAAQ,EAAC;EACzB,cAAA;;AAvDF,IAAI,KAAK,WA0DR,iBACC,IAAG,IAAI,SAAS,IAAI,WAAW,IAAI;AA3DrC,IAAI,KAAK,WA0DR,iBAEC,KAAI,WAAW,IAAI,SAAS,IAAI,WAAW,IAAI;EAC9C,gBAAA;;AA7DH,IAAI,KAAK,WA0DR,iBAMC,IAAG,OAAO,IAAI,SAAS,IAAI;AAhE7B,IAAI,KAAK,WA0DR,iBAOC,KAAI,WAAW,OAAO,IAAI,SAAS,IAAI;EACtC,gBAAA;;AAlEH,IAAI,KAAK,WA0DR,iBAWC,KAAI;EACH,gBAAA;;AAtEH,IAAI,KAAK,WA0DR,iBAeC,IAAG,OAAQ;AAzEb,IAAI,KAAK,WA0DR,iBAgBC,KAAI,OAAQ;EACX,cAAA;;AA3EH,IAAI,KAAK,WA0DR,iBAoBC,IAAG,OAGF;AAjFH,IAAI,KAAK,WA0DR,iBAqBC,IAAG,SAEF;AAjFH,IAAI,KAAK,WA0DR,iBAsBC,KAAI,WAAW,SACd;EACC,QAAS,SAAT;;AAlFJ,IAAI,KAAK,WA0DR,iBAoBC,IAAG,OAGF,IAGC;AApFJ,IAAI,KAAK,WA0DR,iBAqBC,IAAG,SAEF,IAGC;AApFJ,IAAI,KAAK,WA0DR,iBAsBC,KAAI,WAAW,SACd,IAGC;EACC,QAAS,SAAT;;AArFL,IAAI,KAAK,WA0DR,iBAoBC,IAAG,OAWF;AAzFH,IAAI,KAAK,WA0DR,iBAqBC,IAAG,SAUF;AAzFH,IAAI,KAAK,WA0DR,iBAsBC,KAAI,WAAW,SASd;EACC,QAAS,SAAT;;AA1FJ,IAAI,KAAK,WA0DR,iBAoCC,IAAG,SAAS,OAGX,EAAC;AAjGJ,IAAI,KAAK,WA0DR,iBAqCC,KAAI,WAAW,SAAS,OAEvB,EAAC;AAjGJ,IAAI,KAAK,WA0DR,iBAsCC,IAAG,OAAO,OACT,EAAC;EACA,QAAS,SAAT;;AAlGJ,IAAI,KAAK,WA0DR,iBA4CC,IAAG,SAAS,UAGX,EAAC;AAzGJ,IAAI,KAAK,WA0DR,iBA6CC,KAAI,WAAW,SAAS,UAEvB,EAAC;AAzGJ,IAAI,KAAK,WA0DR,iBA8CC,IAAG,OAAO,UACT,EAAC;EACA,QAAS,SAAT;;AA1GJ,IAAI,KAAK,WA0DR,iBAoDC,KAAI,SAAS,OAAQ;AA9GvB,IAAI,KAAK,WA0DR,iBAqDC,KAAI,WAAW,OAAQ;EACtB,cAAA;;AAhHH,IAAI,KAAK,WA0DR,iBAyDC,KAAI,WAAW;EACd,gBAAA;;AApHH,IAAI,KAAK,WA0DR,iBA6DC;AAvHF,IAAI,KAAK,WA0DR,iBA6DM;EACJ,WAAA;;AAxHH,IAAI,KAAK,WA0DR,iBA6DC,IAGC;AA1HH,IAAI,KAAK,WA0DR,iBA6DM,KAGJ;EACC,WAAA;;AA3HJ,IAAI,KAAK,WA0DR,iBA6DC,IAOC;AA9HH,IAAI,KAAK,WA0DR,iBA6DM,KAOJ;EACC,cAAA;;AA/HJ,IAAI,KAAK,WA0DR,iBA6DC,IAWC;AAlIH,IAAI,KAAK,WA0DR,iBA6DM,KAWJ;AAlIH,IAAI,KAAK,WA0DR,iBA6DC,IAWW;AAlIb,IAAI,KAAK,WA0DR,iBA6DM,KAWM;EACT,WAAA;;AAnIJ,IAAI,KAAK,WA0DR,iBA6DC,IAeC,MAAM;AAtIT,IAAI,KAAK,WA0DR,iBA6DM,KAeJ,MAAM;EACL,cAAA;;AAvIJ,IAAI,KAAK,WA0DR,iBAiFC,KAAK;EACJ,kBAAA;EACA,WAAA;;AA7IH,IAAI,KAAK,WA0DR,iBAsFC,MACC,EAAC;AAjJJ,IAAI,KAAK,WA0DR,iBAsFC,MAEC;EACC,YAAA;;AAnJJ,IAAI,KAAK,WAyJR,cACC,aACC;AA3JH,IAAI,KAAK,WAyJR,cACC,aACuB;EACrB,wCAAA;;AA5JJ,IAAI,KAAK,WAyJR,cAOC,aAAY,IAAI,aACf;AAjKH,IAAI,KAAK,WAyJR,cAOC,aAAY,IAAI,aACO;EACrB,sBAAA;;AAlKJ,IAAI,KAAK,WAuKR,eAAc,IAAI,eAAe;EAChC,cAAA;EACA,gBAAA;;AAzKF,IAAI,KAAK,WA4KR;EACC,cAAA;;AA7KF,IAAI,KAAK,WAgLR,sCAAsC;EACrC,YAAA;;AAjLF,IAAI,KAAK,WAoLR,aAAa;EACZ,gBAAA;;AArLF,IAAI,KAAK,WAwLR,UAAS,IAAI;EACZ,gBAAA;;AAzLF,IAAI,KAAK,WA4LR,UAAS,gBAAgB;EACxB,cAAA;;AA7LF,IAAI,KAAK,WAgMR,MAAK;EACJ,sBAAA;;AAjMF,IAAI,KAAK,WAoMR,MAAK,YAAY;EAChB,qBAAA;EACA,sBAAA;;AAtMF,IAAI,KAAK,WAyMR;EACC,cAAA;;AA1MF,IAAI,KAAK,WA6MR;EACC,WAAA;;AA9MF,IAAI,KAAK,WAiNR;EACC,sBAAA;EACA,kBAAA;;AAnNF,IAAI,KAAK,WAsNR,aAAa;EACZ,sBAAA;;AAvNF,IAAI,KAAK,WA0NR,iBAAiB;AA1NlB,IAAI,KAAK,WA2NR,gBAAgB;EACf,WAAA;EACA,qBAAA;;AA7NF,IAAI,KAAK,WAgOR;EACC,WAAA;EACA,gBAAA;;AAlOF,IAAI,KAAK,WAqOR,GAAE;AArOH,IAAI,KAAK,WAqOc,GAAE;EACvB,gBAAA;EACA,kBAAA;;AAvOF,IAAI,KAAK,WA0PR;EACC,mBAAA;EACA,qBAAA;EACA,WAAA;;AA7PF,IAAI,KAAK,WA0PR,cAKC,EAAC;EACA,WAAA;;AAhQH,IAAI,KAAK,WAoQR;EACC,UAAA;;AArQF,IAAI,KAAK,WAwQR;EACC,sBAAA;;AAzQF,IAAI,KAAK,WA4QR;EACC,sBAAA;;AA7QF,IAAI,KAAK,WAgRR;EACC,gBAAA;EACA,qBAAA","file":"night_blue.css"} \ No newline at end of file
diff --git a/utils/gitlab-ci/check-schema.sh b/utils/gitlab-ci/check-schema.sh
deleted file mode 100644
index a7e63ae01..000000000
--- a/utils/gitlab-ci/check-schema.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-export PGPASSWORD=test
-
-psql -h localhost -q -U test test < schema/ttrss_schema_pgsql.sql
diff --git a/utils/gitlab-ci/config-template.php b/utils/gitlab-ci/config-template.php
deleted file mode 100644
index abe34442e..000000000
--- a/utils/gitlab-ci/config-template.php
+++ /dev/null
@@ -1,207 +0,0 @@
-<?php
- // *******************************************
- // *** Database configuration (important!) ***
- // *******************************************
-
- define('DB_TYPE', "pgsql"); // or mysql
- define('DB_HOST', "localhost");
- define('DB_USER', "test");
- define('DB_NAME', "test");
- define('DB_PASS', "test");
- define('DB_PORT', ''); // usually 5432 for PostgreSQL, 3306 for MySQL
-
- define('MYSQL_CHARSET', 'UTF8');
- // Connection charset for MySQL. If you have a legacy database and/or experience
- // garbage unicode characters with this option, try setting it to a blank string.
-
- // ***********************************
- // *** Basic settings (important!) ***
- // ***********************************
-
- define('SELF_URL_PATH', 'http://localhost/tt-rss/');
- // Full URL of your tt-rss installation. This should be set to the
- // location of tt-rss directory, e.g. http://example.org/tt-rss/
- // You need to set this option correctly otherwise several features
- // including PUSH, bookmarklets and browser integration will not work properly.
-
- define('FEED_CRYPT_KEY', '');
- // WARNING: mcrypt is deprecated in php 7.1. This directive exists for backwards
- // compatibility with existing installs, new passwords are NOT going to be encrypted.
- // Use update.php --decrypt-feeds to decrypt existing passwords in the database while
- // mcrypt is still available.
-
- // Key used for encryption of passwords for password-protected feeds
- // in the database. A string of 24 random characters. If left blank, encryption
- // is not used. Requires mcrypt functions.
- // Warning: changing this key will make your stored feed passwords impossible
- // to decrypt.
-
- define('SINGLE_USER_MODE', false);
- // Operate in single user mode, disables all functionality related to
- // multiple users and authentication. Enabling this assumes you have
- // your tt-rss directory protected by other means (e.g. http auth).
-
- define('SIMPLE_UPDATE_MODE', false);
- // Enables fallback update mode where tt-rss tries to update feeds in
- // background while tt-rss is open in your browser.
- // If you don't have a lot of feeds and don't want to or can't run
- // background processes while not running tt-rss, this method is generally
- // viable to keep your feeds up to date.
- // Still, there are more robust (and recommended) updating methods
- // available, you can read about them here: http://tt-rss.org/wiki/UpdatingFeeds
-
- // *****************************
- // *** Files and directories ***
- // *****************************
-
- define('PHP_EXECUTABLE', '/usr/bin/php');
- // Path to PHP *COMMAND LINE* executable, used for various command-line tt-rss
- // programs and update daemon. Do not try to use CGI binary here, it won't work.
- // If you see HTTP headers being displayed while running tt-rss scripts,
- // then most probably you are using the CGI binary. If you are unsure what to
- // put in here, ask your hosting provider.
-
- define('LOCK_DIRECTORY', 'lock');
- // Directory for lockfiles, must be writable to the user you run
- // daemon process or cronjobs under.
-
- define('CACHE_DIR', 'cache');
- // Local cache directory for RSS feed content.
-
- define('ICONS_DIR', "feed-icons");
- define('ICONS_URL', "feed-icons");
- // Local and URL path to the directory, where feed favicons are stored.
- // Unless you really know what you're doing, please keep those relative
- // to tt-rss main directory.
-
- // **********************
- // *** Authentication ***
- // **********************
-
- // Please see PLUGINS below to configure various authentication modules.
-
- define('AUTH_AUTO_CREATE', true);
- // Allow authentication modules to auto-create users in tt-rss internal
- // database when authenticated successfully.
-
- define('AUTH_AUTO_LOGIN', true);
- // Automatically login user on remote or other kind of externally supplied
- // authentication, otherwise redirect to login form as normal.
- // If set to true, users won't be able to set application language
- // and settings profile.
-
- // *********************
- // *** Feed settings ***
- // *********************
-
- define('FORCE_ARTICLE_PURGE', 0);
- // When this option is not 0, users ability to control feed purging
- // intervals is disabled and all articles (which are not starred)
- // older than this amount of days are purged.
-
- // *** PubSubHubbub settings ***
-
- define('PUBSUBHUBBUB_HUB', '');
- // URL to a PubSubHubbub-compatible hub server. If defined, "Published
- // articles" generated feed would automatically become PUSH-enabled.
-
- define('PUBSUBHUBBUB_ENABLED', false);
- // Enable client PubSubHubbub support in tt-rss. When disabled, tt-rss
- // won't try to subscribe to PUSH feed updates.
-
- // ****************************
- // *** Sphinx search plugin ***
- // ****************************
-
- define('SPHINX_SERVER', 'localhost:9312');
- // Hostname:port combination for the Sphinx server.
-
- define('SPHINX_INDEX', 'ttrss, delta');
- // Index name in Sphinx configuration. You can specify multiple indexes
- // as a comma-separated string.
- // Example configuration files are available on tt-rss wiki.
-
- // ***********************************
- // *** Self-registrations by users ***
- // ***********************************
-
- define('ENABLE_REGISTRATION', false);
- // Allow users to register themselves. Please be aware that allowing
- // random people to access your tt-rss installation is a security risk
- // and potentially might lead to data loss or server exploit. Disabled
- // by default.
-
- define('REG_NOTIFY_ADDRESS', '[email protected]');
- // Email address to send new user notifications to.
-
- define('REG_MAX_USERS', 10);
- // Maximum amount of users which will be allowed to register on this
- // system. 0 - no limit.
-
- // **********************************
- // *** Cookies and login sessions ***
- // **********************************
-
- define('SESSION_COOKIE_LIFETIME', 86400);
- // Default lifetime of a session (e.g. login) cookie. In seconds,
- // 0 means cookie will be deleted when browser closes.
-
- // *********************************
- // *** Email and digest settings ***
- // *********************************
-
- define('SMTP_FROM_NAME', 'Tiny Tiny RSS');
- define('SMTP_FROM_ADDRESS', '[email protected]');
- // Name, address and subject for sending outgoing mail. This applies
- // to password reset notifications, digest emails and any other mail.
-
- define('DIGEST_SUBJECT', '[tt-rss] New headlines for last 24 hours');
- // Subject line for email digests
-
- define('SMTP_SERVER', '');
- // Hostname:port combination to send outgoing mail (i.e. localhost:25).
- // Blank - use system MTA.
-
- define('SMTP_LOGIN', '');
- define('SMTP_PASSWORD', '');
- // These two options enable SMTP authentication when sending
- // outgoing mail. Only used with SMTP_SERVER.
-
- define('SMTP_SECURE', '');
- // Used to select a secure SMTP connection. Allowed values: ssl, tls,
- // or empty.
-
- // ***************************************
- // *** Other settings (less important) ***
- // ***************************************
-
- define('CHECK_FOR_UPDATES', true);
- // Check for updates automatically if running Git version
-
- define('ENABLE_GZIP_OUTPUT', false);
- // Selectively gzip output to improve wire performance. This requires
- // PHP Zlib extension on the server.
- // Enabling this can break tt-rss in several httpd/php configurations,
- // if you experience weird errors and tt-rss failing to start, blank pages
- // after login, or content encoding errors, disable it.
-
- define('PLUGINS', 'auth_internal, note');
- // Comma-separated list of plugins to load automatically for all users.
- // System plugins have to be specified here. Please enable at least one
- // authentication plugin here (auth_*).
- // Users may enable other user plugins from Preferences/Plugins but may not
- // disable plugins specified in this list.
- // Disabling auth_internal in this list would automatically disable
- // reset password link on the login form.
-
- define('LOG_DESTINATION', 'sql');
- // Log destination to use. Possible values: sql (uses internal logging
- // you can read in Preferences -> System), syslog - logs to system log.
- // Setting this to blank uses PHP logging (usually to http server
- // error.log).
-
- define('CONFIG_VERSION', 26);
- // Expected config version. Please update this option in config.php
- // if necessary (after migrating all new options from this file).
-
- // vim:ft=php
diff --git a/utils/gitlab-ci/nginx-default b/utils/gitlab-ci/nginx-default
deleted file mode 100644
index 1989af927..000000000
--- a/utils/gitlab-ci/nginx-default
+++ /dev/null
@@ -1,81 +0,0 @@
-##
-# You should look at the following URL's in order to grasp a solid understanding
-# of Nginx configuration files in order to fully unleash the power of Nginx.
-# http://wiki.nginx.org/Pitfalls
-# http://wiki.nginx.org/QuickStart
-# http://wiki.nginx.org/Configuration
-#
-# Generally, you will want to move this file somewhere, and start with a clean
-# file but keep this around for reference. Or just disable in sites-enabled.
-#
-# Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples.
-##
-
-# Default server configuration
-#
-server {
- listen 80 default_server;
- listen [::]:80 default_server;
-
- # SSL configuration
- #
- # listen 443 ssl default_server;
- # listen [::]:443 ssl default_server;
- #
- # Self signed certs generated by the ssl-cert package
- # Don't use them in a production server!
- #
- # include snippets/snakeoil.conf;
-
- root /builds/;
-
- # Add index.php to the list if you are using PHP
- index index.php index.html index.htm index.nginx-debian.html;
-
- server_name _;
-
- location / {
- # First attempt to serve request as file, then
- # as directory, then fall back to displaying a 404.
- try_files $uri $uri/ =404;
- autoindex on;
- }
-
- # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
- #
- location ~ \.php$ {
- include snippets/fastcgi-php.conf;
-
- # With php5-cgi alone:
- #fastcgi_pass 127.0.0.1:9000;
- # With php5-fpm:
- fastcgi_pass unix:/var/run/php5-fpm.sock;
- }
-
- # deny access to .htaccess files, if Apache's document root
- # concurs with nginx's one
- #
- #location ~ /\.ht {
- # deny all;
- #}
-}
-
-
-# Virtual Host configuration for example.com
-#
-# You can move that to a different file under sites-available/ and symlink that
-# to sites-enabled/ to enable it.
-#
-#server {
-# listen 80;
-# listen [::]:80;
-#
-# server_name example.com;
-#
-# root /var/www/example.com;
-# index index.html;
-#
-# location / {
-# try_files $uri $uri/ =404;
-# }
-#}
diff --git a/utils/gitlab-ci/php-lint.sh b/utils/gitlab-ci/php-lint.sh
deleted file mode 100644
index 9bd513f88..000000000
--- a/utils/gitlab-ci/php-lint.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-set -e
-
-exec find . -name "*.php" -not -path "*/lib/*" -print0 | xargs -0 -n1 php -l
diff --git a/utils/gitlab-ci/phpmd-ruleset.xml b/utils/gitlab-ci/phpmd-ruleset.xml
deleted file mode 100644
index d2c010fbc..000000000
--- a/utils/gitlab-ci/phpmd-ruleset.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<ruleset name="basic-rules"
- xmlns="http://pmd.sf.net/ruleset/1.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0
- http://pmd.sf.net/ruleset_xml_schema.xsd"
- xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
-
- <description>phpmd</description>
-
- <!-- phpmd author is a bit weird i guess -->
-
- <!-- <rule ref="rulesets/cleancode.xml">
- <exclude name="BooleanArgumentFlag" />
- <exclude name="ElseExpression" />
- </rule> -->
-
- <rule ref="rulesets/unusedcode.xml" />
-
-</ruleset>
-
diff --git a/utils/gitlab-ci/phpmd.sh b/utils/gitlab-ci/phpmd.sh
deleted file mode 100644
index 7541db840..000000000
--- a/utils/gitlab-ci/phpmd.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh
-
-set -e
-
-phpmd include,classes,plugins text utils/gitlab-ci/phpmd-ruleset.xml
-
-FILES=$(ls -dm *.php | tr -d " "| tr -d "\n")
-phpmd $FILES text utils/gitlab-ci/phpmd-ruleset.xml