diff options
| author | 2016-10-22 12:58:06 +0200 | |
|---|---|---|
| committer | 2016-10-22 12:58:06 +0200 | |
| commit | e1f214e9e2e09a83a9920e33fbf617dfe48fbb7e (patch) | |
| tree | 916b23c04ce53891e8d9e2af6ed413c7f7379491 /cli | |
| parent | 40b5d3f933e27f37894f58f99c63409f2cdd2d5a (diff) | |
CLI list-users and create-user
https://github.com/FreshRSS/FreshRSS/issues/1095
https://github.com/FreshRSS/FreshRSS/issues/1090
Diffstat (limited to 'cli')
| -rw-r--r-- | cli/.htaccess | 3 | ||||
| -rw-r--r-- | cli/_cli.php | 39 | ||||
| -rw-r--r-- | cli/create-user.php | 41 | ||||
| -rw-r--r-- | cli/index.html | 13 | ||||
| -rw-r--r-- | cli/list-users.php | 14 |
5 files changed, 110 insertions, 0 deletions
diff --git a/cli/.htaccess b/cli/.htaccess new file mode 100644 index 000000000..9e768397d --- /dev/null +++ b/cli/.htaccess @@ -0,0 +1,3 @@ +Order Allow,Deny +Deny from all +Satisfy all diff --git a/cli/_cli.php b/cli/_cli.php new file mode 100644 index 000000000..cb6d8ec32 --- /dev/null +++ b/cli/_cli.php @@ -0,0 +1,39 @@ +<?php +if (php_sapi_name() !== 'cli') { + die('FreshRSS error: This PHP script may only be invoked from command line!'); +} + +require(dirname(__FILE__) . '/../constants.php'); +require(LIB_PATH . '/lib_rss.php'); + +Minz_Configuration::register('system', + DATA_PATH . '/config.php', + DATA_PATH . '/config.default.php'); +FreshRSS_Context::$system_conf = Minz_Configuration::get('system'); +Minz_Translate::init(); + +FreshRSS_Context::$isCli = true; + +function fail($message) { + fwrite(STDERR, $message . "\n"); + die(1); +} + +function cliInitUser($username) { + if (!ctype_alnum($username)) { + fail('FreshRSS error: invalid username: ' . $username . "\n"); + } + + $usernames = listUsers(); + if (!in_array($username, $usernames)) { + fail('FreshRSS error: user not found: ' . $username . "\n"); + } + + FreshRSS_Context::$user_conf = get_user_configuration($username); + if (FreshRSS_Context::$user_conf == null) { + fail('FreshRSS error: invalid configuration for user: ' . $username . "\n"); + } + new Minz_ModelPdo($username); + + return $username; +} diff --git a/cli/create-user.php b/cli/create-user.php new file mode 100644 index 000000000..08c057af8 --- /dev/null +++ b/cli/create-user.php @@ -0,0 +1,41 @@ +#!/usr/bin/php +<?php +require('_cli.php'); + +$options = getopt('', array( + 'user:', + 'password::', + 'api-password::', + 'language::', + 'email::', + 'token::', + )); + +if (empty($options['user'])) { + fail('Usage: ' . basename(__FILE__) . " --user=username --password='password' --api-password='api_password'" . + " --language=en --email=user@example.net --token='longRandomString'"); +} +$new_user_name = $options['user']; +if (!ctype_alnum($new_user_name)) { + fail('FreshRSS error: invalid username “' . $new_user_name . '”'); +} + +$usernames = listUsers(); +if (preg_grep("/^$new_user_name$/i", $usernames)) { + fail('FreshRSS error: username already taken “' . $new_user_name . '”'); +} + +echo 'FreshRSS creating user “', $new_user_name, "”…\n"; + +$ok = FreshRSS_user_Controller::createUser($new_user_name, + empty($options['password']) ? '' : $options['password'], + empty($options['api-password']) ? '' : $options['api-password'], + array( + 'language' => empty($options['language']) ? '' : $options['language'], + 'token' => empty($options['token']) ? '' : $options['token'], + )); + +invalidateHttpCache(FreshRSS_Context::$system_conf->default_user); + +echo 'Result: ', ($ok ? 'success' : 'fail'), ".\n"; +exit($ok ? 0 : 1); diff --git a/cli/index.html b/cli/index.html new file mode 100644 index 000000000..85faaa37e --- /dev/null +++ b/cli/index.html @@ -0,0 +1,13 @@ +<!DOCTYPE html> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-GB" lang="en-GB"> +<head> +<meta charset="UTF-8" /> +<meta http-equiv="Refresh" content="0; url=/" /> +<title>Redirection</title> +<meta name="robots" content="noindex" /> +</head> + +<body> +<p><a href="/">Redirection</a></p> +</body> +</html> diff --git a/cli/list-users.php b/cli/list-users.php new file mode 100644 index 000000000..cc1cf5269 --- /dev/null +++ b/cli/list-users.php @@ -0,0 +1,14 @@ +#!/usr/bin/php +<?php +require('_cli.php'); + +$users = listUsers(); +sort($users); +if ($system_conf->default_user !== '') { + array_unshift($users, $system_conf->default_user); + $users = array_unique($users); +} + +foreach ($users as $user) { + echo $user, "\n"; +} |
