aboutsummaryrefslogtreecommitdiff
path: root/cli
diff options
context:
space:
mode:
authorGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2016-10-24 01:41:09 +0200
committerGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2016-10-24 01:41:09 +0200
commitab4ece6780cf841f6ce4e89f7b81a1ff1661f615 (patch)
tree61b7f383d2d9749bc19e4154dcb0407f88785314 /cli
parent1f03e8a3aec8ff4b7bbba45bc3fd14a0552c2bc4 (diff)
CLI do-install
https://github.com/FreshRSS/FreshRSS/issues/1095 https://github.com/FreshRSS/FreshRSS/issues/1090
Diffstat (limited to 'cli')
-rw-r--r--cli/_cli.php7
-rwxr-xr-xcli/create-user.php10
-rw-r--r--cli/do-install.php102
3 files changed, 116 insertions, 3 deletions
diff --git a/cli/_cli.php b/cli/_cli.php
index 66506f07a..7d1a7c6b2 100644
--- a/cli/_cli.php
+++ b/cli/_cli.php
@@ -38,7 +38,12 @@ function cliInitUser($username) {
return $username;
}
-function done($ok) {
+function accessRights() {
+ echo '• Remember to re-apply the appropriate access rights, such as:' , "\n",
+ "\t", 'sudo chown -R :www-data . && sudo chmod -R g+r . && sudo chmod -R g+w ./data/', "\n";
+}
+
+function done($ok = true) {
fwrite(STDERR, 'Result: ' . ($ok ? 'success' : 'fail') . "\n");
exit($ok ? 0 : 1);
}
diff --git a/cli/create-user.php b/cli/create-user.php
index 243e65a35..5e93d4605 100755
--- a/cli/create-user.php
+++ b/cli/create-user.php
@@ -12,8 +12,8 @@ $options = getopt('', array(
));
if (empty($options['user'])) {
- fail('Usage: ' . basename(__FILE__) . " --user username --password 'password' --api-password 'api_password'" .
- " --language en --email user@example.net --token 'longRandomString'");
+ fail('Usage: ' . basename(__FILE__) . " --user username ( --password 'password' --api-password 'api_password'" .
+ " --language en --email user@example.net --token 'longRandomString' )");
}
$username = $options['user'];
if (!ctype_alnum($username)) {
@@ -35,6 +35,12 @@ $ok = FreshRSS_user_Controller::createUser($username,
'token' => empty($options['token']) ? '' : $options['token'],
));
+if (!$ok) {
+ fail('FreshRSS could not create user!');
+}
+
invalidateHttpCache(FreshRSS_Context::$system_conf->default_user);
+accessRights();
+
done($ok);
diff --git a/cli/do-install.php b/cli/do-install.php
new file mode 100644
index 000000000..5eeedc626
--- /dev/null
+++ b/cli/do-install.php
@@ -0,0 +1,102 @@
+#!/usr/bin/php
+<?php
+require('_cli.php');
+require(LIB_PATH . '/lib_install.php');
+
+$params = array(
+ 'environment:',
+ 'base_url:',
+ 'language:',
+ 'title:',
+ 'default_user:',
+ 'allow_anonymous',
+ 'allow_anonymous_refresh',
+ 'auth_type:',
+ 'api_enabled',
+ 'allow_robots',
+ );
+
+$dBparams = array(
+ 'db-type:',
+ 'db-host:',
+ 'db-user:',
+ 'db-password:',
+ 'db-base:',
+ 'db-prefix:',
+ );
+
+$options = getopt('', array_merge($params, $dBparams));
+
+if (empty($options['default_user']) || empty($options['auth_type'])) {
+ 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" .
+ " --db-type mysql --db-host localhost:3306 --db-user freshrss --db-password dbPassword123" .
+ " --db-base freshrss --db-prefix freshrss )");
+}
+
+fwrite(STDERR, 'FreshRSS install…' . "\n");
+
+$requirements = checkRequirements();
+if ($requirements['all'] !== 'ok') {
+ $message = 'FreshRSS install failed requirements:' . "\n";
+ foreach ($requirements as $requirement => $check) {
+ if ($check !== 'ok' && $requirement !== 'all') {
+ $message .= '• ' . $requirement . "\n";
+ }
+ }
+ fail($message);
+}
+
+if (!ctype_alnum($options['default_user'])) {
+ fail('FreshRSS invalid default username (must be ASCII alphanumeric): ' . $options['default_user']);
+}
+
+if (!in_array($options['auth_type'], array('form', 'http_auth', 'none'))) {
+ fail('FreshRSS invalid authentication method (auth_type must be one of { form, http_auth, none }: ' . $options['auth_type']);
+}
+
+$config = array(
+ 'salt' => generateSalt(),
+ 'db' => FreshRSS_Context::$system_conf->db,
+ );
+
+foreach ($params as $param) {
+ $param = rtrim($param, ':');
+ if (isset($options[$param])) {
+ $config[$param] = $options[$param] === false ? true : $options[$param];
+ }
+}
+
+if ((!empty($config['base_url'])) && server_is_public($config['base_url'])) {
+ $config['pubsubhubbub_enabled'] = true;
+}
+
+foreach ($dBparams as $dBparam) {
+ $dBparam = rtrim($dBparam, ':');
+ if (!empty($options[$dBparam])) {
+ $param = substr($dBparam, strlen('db-'));
+ $config['db'][$param] = $options[$dBparam];
+ }
+}
+
+if (file_put_contents(join_path(DATA_PATH, 'config.php'), "<?php\n return " . var_export($config, true) . ";\n") === false) {
+ fail('FreshRSS could not write configuration file!: ' . join_path(DATA_PATH, 'config.php'));
+}
+
+$config['db']['default_user'] = $config['default_user'];
+if (!checkDb($config['db'])) {
+ @unlink(join_path(DATA_PATH, 'config.php'));
+ fail('FreshRSS database error: ' . (empty($config['db']['bd_error']) ? 'Unknown error' : $config['db']['bd_error']));
+}
+
+echo '• Remember to create the default user: ', $config['default_user'] , "\n",
+ "\t", './cli/create-user.php --user ', $config['default_user'] , " --password 'password' --more-options\n";
+
+accessRights();
+
+if (!deleteInstall()) {
+ fail('FreshRSS access right problem while deleting install file!');
+}
+
+done();