38 lines
971 B
JavaScript
38 lines
971 B
JavaScript
var sqlite3 = require('sqlite3');
|
|
var mkdirp = require('mkdirp');
|
|
var crypto = require('crypto');
|
|
let fs = require('fs');
|
|
|
|
if (!fs.existsSync('./uploads')){
|
|
fs.mkdirSync('./uploads');
|
|
}
|
|
|
|
mkdirp.sync('./var/db');
|
|
|
|
var db = new sqlite3.Database('./var/db/media.db');
|
|
|
|
db.serialize(function() {
|
|
// create the database schema for the todos app
|
|
db.run("CREATE TABLE IF NOT EXISTS users ( \
|
|
id INTEGER PRIMARY KEY, \
|
|
username TEXT UNIQUE, \
|
|
hashed_password BLOB, \
|
|
salt BLOB \
|
|
)");
|
|
|
|
db.run("CREATE TABLE IF NOT EXISTS media ( \
|
|
id INTEGER PRIMARY KEY, \
|
|
path TEXT NOT NULL, \
|
|
expire INTEGER \
|
|
)");
|
|
|
|
// create an initial user (username: alice, password: letmein)
|
|
var salt = crypto.randomBytes(16);
|
|
db.run('INSERT OR IGNORE INTO users (username, hashed_password, salt) VALUES (?, ?, ?)', [
|
|
'admin',
|
|
crypto.pbkdf2Sync(process.env.EBPASS || 'changeme', salt, 310000, 32, 'sha256'),
|
|
salt
|
|
]);
|
|
});
|
|
|
|
module.exports = db;
|