aboutsummaryrefslogblamecommitdiffhomepage
path: root/bin/install
blob: 5b93e46e3cd7bb06eba2e8ac00b695f5d59dda44 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11

              




                                                                          



                                                      
















                                               
                                                       






































                                                                                                                                 





                                                               
#!/usr/bin/php
<?php
require_once __DIR__. '/../vendor/autoload.php';

use Symfony\Component\Yaml\Yaml;

$parameters = Yaml::parse(file_get_contents('app/config/parameters.yml'));

echo 'Okay, you want to install wallabag, let\'s go!';
echo "\r\n";

function executeQuery($handle, $sql, $params) {
    try
    {
        $query = $handle->prepare($sql);
        $query->execute($params);
        return $query->fetchAll();
    }
    catch (Exception $e)
    {
        return false;
    }
}

$configFile      = 'app/config/config.inc.php';
$dbFile          = 'app/db/poche.sqlite';
$username        = 'wallabag';
$password        = 'wallabag';
$salt            = $parameters['parameters']['secret'];
$defaultLanguage = 'en_EN.UTF8';

if (!copy('app/config/config.inc.default.php', $configFile)) {
    die('Installation aborted, impossible to create ' . $configFile . ' file. Maybe you don\'t have write access to create it.');
}

$content = file_get_contents($configFile);
$content = str_replace("define ('SALT', '');", "define ('SALT', '".$salt."');", $content);
file_put_contents($configFile, $content);

if (!copy('bin/poche.sqlite', $dbFile)) {
    die('Impossible to create ' . $dbFile . ' file.');
}

chmod($dbFile, 0777);

$dbPath = 'sqlite:' . realpath('') . '/' . $dbFile;

$handle = new PDO($dbPath);

$handle->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$saltedPassword = sha1($password . $username . $salt);

$sql    = "INSERT INTO users (username, password, name, email) VALUES (?, ?, ?, '')";
$params = array($username, $saltedPassword, $username);
$query  = executeQuery($handle, $sql, $params);

$idUser = (int)$handle->lastInsertId('users_id_seq');

$sql    = 'INSERT INTO users_config ( user_id, name, value ) VALUES (?, ?, ?)';
$params = array($idUser, 'pager', '10');
$query  = executeQuery($handle, $sql, $params);

$sql    = 'INSERT INTO users_config ( user_id, name, value ) VALUES (?, ?, ?)';
$params = array($idUser, 'language', $defaultLanguage);
$query  = executeQuery($handle, $sql, $params);

echo 'wallabag is now installed';
echo "\r\n";
echo 'Just execute the following commands for using wallabag:';
echo "\r\n";
echo 'cd web';
echo "\r\n";
echo 'php -S localhost:8000';