diff options
| author | 2019-03-31 16:38:46 +0200 | |
|---|---|---|
| committer | 2019-03-31 16:38:46 +0200 | |
| commit | d413f67dd28738f4a6d8cf036e00714737f757b8 (patch) | |
| tree | 1509f631dc8814bcf85d907a292ddd6437a2efcd /cli | |
| parent | 8dcdde6251ae4dfc690b1a014488df125c5e5cdc (diff) | |
| parent | 2a935516d850d63a215f9650b96ede102311f7ca (diff) | |
Merge pull request #2298 from FreshRSS/dev1.14.0
FreshRSS 1.14.0
Diffstat (limited to 'cli')
| -rw-r--r-- | cli/_cli.php | 25 | ||||
| -rw-r--r-- | cli/_update-or-create-user.php | 2 | ||||
| -rwxr-xr-x | cli/actualize-user.php | 10 | ||||
| -rwxr-xr-x | cli/db-optimize.php | 10 | ||||
| -rwxr-xr-x | cli/delete-user.php | 10 | ||||
| -rwxr-xr-x | cli/do-install.php | 6 | ||||
| -rwxr-xr-x | cli/export-opml-for-user.php | 10 | ||||
| -rwxr-xr-x | cli/export-zip-for-user.php | 12 | ||||
| -rw-r--r-- | cli/i18n/ignore/kr.php | 16 | ||||
| -rw-r--r-- | cli/i18n/ignore/zh-cn.php | 4 | ||||
| -rwxr-xr-x | cli/import-for-user.php | 12 | ||||
| -rwxr-xr-x | cli/list-users.php | 2 | ||||
| -rwxr-xr-x | cli/reconfigure.php | 8 | ||||
| -rwxr-xr-x | cli/user-info.php | 79 |
14 files changed, 147 insertions, 59 deletions
diff --git a/cli/_cli.php b/cli/_cli.php index e8fb6ae42..dec244bc3 100644 --- a/cli/_cli.php +++ b/cli/_cli.php @@ -3,6 +3,9 @@ if (php_sapi_name() !== 'cli') { die('FreshRSS error: This PHP script may only be invoked from command line!'); } +const REGEX_INPUT_OPTIONS = '/^--/'; +const REGEX_PARAM_OPTIONS = '/:*$/'; + require(__DIR__ . '/../constants.php'); require(LIB_PATH . '/lib_rss.php'); //Includes class autoloader require(LIB_PATH . '/lib_install.php'); @@ -64,3 +67,25 @@ function performRequirementCheck($databaseType) { fail($message); } } + +function getLongOptions($options, $regex) { + $longOptions = array_filter($options, function($a) use ($regex) { + return preg_match($regex, $a); + }); + return array_map(function($a) use ($regex) { + return preg_replace($regex, '', $a); + }, $longOptions); +} + +function validateOptions($input, $params) { + $sanitizeInput = getLongOptions($input, REGEX_INPUT_OPTIONS); + $sanitizeParams = getLongOptions($params, REGEX_PARAM_OPTIONS); + $unknownOptions = array_diff($sanitizeInput, $sanitizeParams); + + if (0 === count($unknownOptions)) { + return true; + } + + fwrite(STDERR, sprintf("FreshRSS error: unknown options: %s\n", implode (', ', $unknownOptions))); + return false; +} diff --git a/cli/_update-or-create-user.php b/cli/_update-or-create-user.php index a5960b58a..eda597f19 100644 --- a/cli/_update-or-create-user.php +++ b/cli/_update-or-create-user.php @@ -22,7 +22,7 @@ if (!$isUpdate) { $options = getopt('', $params); -if (empty($options['user'])) { +if (!validateOptions($argv, $params) || empty($options['user'])) { fail('Usage: ' . basename($_SERVER['SCRIPT_FILENAME']) . " --user username ( --password 'password' --api_password 'api_password'" . " --language en --email user@example.net --token 'longRandomString'" . diff --git a/cli/actualize-user.php b/cli/actualize-user.php index dd07fc142..08e17de98 100755 --- a/cli/actualize-user.php +++ b/cli/actualize-user.php @@ -2,11 +2,13 @@ <?php require(__DIR__ . '/_cli.php'); -$options = getopt('', array( - 'user:', - )); +$params = array( + 'user:', +); -if (empty($options['user'])) { +$options = getopt('', $params); + +if (!validateOptions($argv, $params) || empty($options['user'])) { fail('Usage: ' . basename(__FILE__) . " --user username"); } diff --git a/cli/db-optimize.php b/cli/db-optimize.php index 39dc97638..bd0623a48 100755 --- a/cli/db-optimize.php +++ b/cli/db-optimize.php @@ -2,11 +2,13 @@ <?php require(__DIR__ . '/_cli.php'); -$options = getopt('', array( - 'user:', - )); +$params = array( + 'user:', +); -if (empty($options['user'])) { +$options = getopt('', $params); + +if (!validateOptions($argv, $params) || empty($options['user'])) { fail('Usage: ' . basename(__FILE__) . " --user username"); } diff --git a/cli/delete-user.php b/cli/delete-user.php index 30cc31754..ab02dfdbf 100755 --- a/cli/delete-user.php +++ b/cli/delete-user.php @@ -2,11 +2,13 @@ <?php require(__DIR__ . '/_cli.php'); -$options = getopt('', array( - 'user:', - )); +$params = array( + 'user:', +); -if (empty($options['user'])) { +$options = getopt('', $params); + +if (!validateOptions($argv, $params) || empty($options['user'])) { fail('Usage: ' . basename(__FILE__) . " --user username"); } $username = $options['user']; diff --git a/cli/do-install.php b/cli/do-install.php index 7435ab9f1..fd5aa4a3c 100755 --- a/cli/do-install.php +++ b/cli/do-install.php @@ -31,10 +31,10 @@ $dBparams = array( $options = getopt('', array_merge($params, $dBparams)); -if (empty($options['default_user'])) { +if (!validateOptions($argv, array_merge($params, $dBparams)) || empty($options['default_user'])) { fail('Usage: ' . basename(__FILE__) . " --default_user admin ( --auth_type form" . - " --environment production --base_url https://rss.example.net" . - " --language en --title FreshRSS --allow_anonymous --api_enabled" . + " --environment production --base_url https://rss.example.net --allow_robots" . + " --language en --title FreshRSS --allow_anonymous --allow_anonymous_refresh --api_enabled" . " --db-type mysql --db-host localhost:3306 --db-user freshrss --db-password dbPassword123" . " --db-base freshrss --db-prefix freshrss_ --disable_update )"); } diff --git a/cli/export-opml-for-user.php b/cli/export-opml-for-user.php index 076cffe74..8e7ed08f7 100755 --- a/cli/export-opml-for-user.php +++ b/cli/export-opml-for-user.php @@ -2,11 +2,13 @@ <?php require(__DIR__ . '/_cli.php'); -$options = getopt('', array( - 'user:', - )); +$params = array( + 'user:', +); -if (empty($options['user'])) { +$options = getopt('', $params); + +if (!validateOptions($argv, $params) || empty($options['user'])) { fail('Usage: ' . basename(__FILE__) . " --user username > /path/to/file.opml.xml"); } diff --git a/cli/export-zip-for-user.php b/cli/export-zip-for-user.php index 86113d9fa..b89a55104 100755 --- a/cli/export-zip-for-user.php +++ b/cli/export-zip-for-user.php @@ -2,12 +2,14 @@ <?php require(__DIR__ . '/_cli.php'); -$options = getopt('', array( - 'user:', - 'max-feed-entries:', - )); +$params = array( + 'user:', + 'max-feed-entries:', +); -if (empty($options['user'])) { +$options = getopt('', $params); + +if (!validateOptions($argv, $params) || empty($options['user'])) { fail('Usage: ' . basename(__FILE__) . " --user username ( --max-feed-entries 100 ) > /path/to/file.zip"); } diff --git a/cli/i18n/ignore/kr.php b/cli/i18n/ignore/kr.php index 24cfbc86a..bbccb2d7d 100644 --- a/cli/i18n/ignore/kr.php +++ b/cli/i18n/ignore/kr.php @@ -8,6 +8,18 @@ return array( 'conf.sharing.shaarli', 'conf.sharing.twitter', 'conf.sharing.wallabag', + 'gen.date.Apr', + 'gen.date.Aug', + 'gen.date.Dec', + 'gen.date.Feb', + 'gen.date.Jan', + 'gen.date.Jul', + 'gen.date.Jun', + 'gen.date.Mar', + 'gen.date.May', + 'gen.date.Nov', + 'gen.date.Oct', + 'gen.date.Sep', 'gen.lang.cz', 'gen.lang.de', 'gen.lang.en', @@ -17,6 +29,7 @@ return array( 'gen.lang.it', 'gen.lang.kr', 'gen.lang.nl', + 'gen.lang.oc', 'gen.lang.pt-br', 'gen.lang.ru', 'gen.lang.tr', @@ -29,8 +42,11 @@ return array( 'gen.share.g+', 'gen.share.gnusocial', 'gen.share.jdh', + 'gen.share.linkedin', 'gen.share.mastodon', 'gen.share.movim', + 'gen.share.pinboard', + 'gen.share.pocket', 'gen.share.shaarli', 'gen.share.twitter', 'gen.share.wallabag', diff --git a/cli/i18n/ignore/zh-cn.php b/cli/i18n/ignore/zh-cn.php index c00ac79d3..d55071d10 100644 --- a/cli/i18n/ignore/zh-cn.php +++ b/cli/i18n/ignore/zh-cn.php @@ -18,6 +18,7 @@ return array( 'gen.lang.it', 'gen.lang.kr', 'gen.lang.nl', + 'gen.lang.oc', 'gen.lang.pt-br', 'gen.lang.ru', 'gen.lang.tr', @@ -29,8 +30,11 @@ return array( 'gen.share.g+', 'gen.share.gnusocial', 'gen.share.jdh', + 'gen.share.linkedin', 'gen.share.mastodon', 'gen.share.movim', + 'gen.share.pinboard', + 'gen.share.pocket', 'gen.share.shaarli', 'gen.share.twitter', 'gen.share.wallabag', diff --git a/cli/import-for-user.php b/cli/import-for-user.php index 95ff18c8c..7c66fbef2 100755 --- a/cli/import-for-user.php +++ b/cli/import-for-user.php @@ -2,12 +2,14 @@ <?php require(__DIR__ . '/_cli.php'); -$options = getopt('', array( - 'user:', - 'filename:', - )); +$params = array( + 'user:', + 'filename:', +); -if (empty($options['user']) || empty($options['filename'])) { +$options = getopt('', $params); + +if (!validateOptions($argv, $params) || empty($options['user']) || empty($options['filename'])) { fail('Usage: ' . basename(__FILE__) . " --user username --filename /path/to/file.ext"); } diff --git a/cli/list-users.php b/cli/list-users.php index 758bbdb46..b3ce9936f 100755 --- a/cli/list-users.php +++ b/cli/list-users.php @@ -13,3 +13,5 @@ if (FreshRSS_Context::$system_conf->default_user !== '' foreach ($users as $user) { echo $user, "\n"; } + +done(); diff --git a/cli/reconfigure.php b/cli/reconfigure.php index cfe713fa8..84073b70e 100755 --- a/cli/reconfigure.php +++ b/cli/reconfigure.php @@ -27,6 +27,14 @@ $dBparams = array( $options = getopt('', array_merge($params, $dBparams)); +if (!validateOptions($argv, array_merge($params, $dBparams))) { + fail('Usage: ' . basename(__FILE__) . " --default_user admin ( --auth_type form" . + " --environment production --base_url https://rss.example.net --allow_robots" . + " --language en --title FreshRSS --allow_anonymous --allow_anonymous_refresh --api_enabled" . + " --db-type mysql --db-host localhost:3306 --db-user freshrss --db-password dbPassword123" . + " --db-base freshrss --db-prefix freshrss_ --disable_update )"); +} + fwrite(STDERR, 'Reconfiguring FreshRSS…' . "\n"); $config = Minz_Configuration::get('system'); diff --git a/cli/user-info.php b/cli/user-info.php index 043bebf7c..aa4db7c2f 100755 --- a/cli/user-info.php +++ b/cli/user-info.php @@ -2,19 +2,46 @@ <?php require(__DIR__ . '/_cli.php'); -$options = getopt('h', array( - 'user:', - )); +const DATA_FORMAT = "%-7s | %-20s | %-25s | %-15s | %-10s | %-10s | %-10s | %-10s | %-10s | %-10s\n"; + +$params = array( + 'user:', + 'header', +); +$options = getopt('h', $params); + +if (!validateOptions($argv, $params)) { + fail('Usage: ' . basename(__FILE__) . ' (-h --header --user username --user username …)'); +} if (empty($options['user'])) { - fail('Usage: ' . basename(__FILE__) . " -h --user username"); + $users = listUsers(); +} elseif (is_array($options['user'])) { + $users = $options['user']; +} else { + $users = array($options['user']); } -$users = $options['user'] === '*' ? listUsers() : array($options['user']); +sort($users); + +if (array_key_exists('header', $options)) { + printf( + DATA_FORMAT, + 'default', + 'user', + 'last update', + 'space used', + 'categories', + 'feeds', + 'reads', + 'unreads', + 'favourites', + 'tags' + ); +} foreach ($users as $username) { $username = cliInitUser($username); - echo $username === FreshRSS_Context::$system_conf->default_user ? '*' : ' ', "\t"; $catDAO = FreshRSS_Factory::createCategoryDao(); $feedDAO = FreshRSS_Factory::createFeedDao($username); @@ -25,29 +52,23 @@ foreach ($users as $username) { $nbEntries = $entryDAO->countUnreadRead(); $nbFavorites = $entryDAO->countUnreadReadFavorites(); + $data = array( + 'default' => $username === FreshRSS_Context::$system_conf->default_user ? '*' : '', + 'user' => $username, + 'lastUpdate' => FreshRSS_UserDAO::mtime($username), + 'spaceUsed' => $databaseDAO->size(), + 'categories' => $catDAO->count(), + 'feeds' => count($feedDAO->listFeedsIds()), + 'reads' => $nbEntries['read'], + 'unreads' => $nbEntries['unread'], + 'favourites' => $nbFavorites['all'], + 'tags' => $tagDAO->count(), + ); if (isset($options['h'])) { //Human format - echo - $username, "\t", - date('c', FreshRSS_UserDAO::mtime($username)), "\t", - format_bytes($databaseDAO->size()), "\t", - $catDAO->count(), " categories\t", - count($feedDAO->listFeedsIds()), " feeds\t", - $nbEntries['read'], " reads\t", - $nbEntries['unread'], " unreads\t", - $nbFavorites['all'], " favourites\t", - $tagDAO->count(), " tags\t", - "\n"; - } else { - echo - $username, "\t", - FreshRSS_UserDAO::mtime($username), "\t", - $databaseDAO->size(), "\t", - $catDAO->count(), "\t", - count($feedDAO->listFeedsIds()), "\t", - $nbEntries['read'], "\t", - $nbEntries['unread'], "\t", - $nbFavorites['all'], "\t", - $tagDAO->count(), "\t", - "\n"; + $data['lastUpdate'] = date('c', $data['lastUpdate']); + $data['spaceUsed'] = format_bytes($data['spaceUsed']); } + vprintf(DATA_FORMAT, $data); } + +done(); |
