2018-07-21 14:55:24 +08:00
|
|
|
const optionService = require('./options');
|
|
|
|
const passwordEncryptionService = require('./password_encryption');
|
|
|
|
const myScryptService = require('./my_scrypt');
|
|
|
|
const appInfo = require('./app_info');
|
|
|
|
const utils = require('./utils');
|
|
|
|
const dateUtils = require('./date_utils');
|
|
|
|
|
2018-07-24 03:15:32 +08:00
|
|
|
async function initDocumentOptions() {
|
2018-07-21 14:55:24 +08:00
|
|
|
await optionService.createOption('documentId', utils.randomSecureToken(16), false);
|
|
|
|
await optionService.createOption('documentSecret', utils.randomSecureToken(16), false);
|
2018-07-24 03:15:32 +08:00
|
|
|
}
|
2018-07-21 14:55:24 +08:00
|
|
|
|
2018-07-24 03:15:32 +08:00
|
|
|
async function initSyncedOptions(username, password) {
|
2018-08-18 00:11:03 +08:00
|
|
|
await optionService.createOption('protectedSessionTimeout', 600, true);
|
|
|
|
await optionService.createOption('noteRevisionSnapshotTimeInterval', 600, true);
|
2018-07-21 14:55:24 +08:00
|
|
|
|
2018-08-18 00:11:03 +08:00
|
|
|
await optionService.createOption('username', username, true);
|
2018-07-21 14:55:24 +08:00
|
|
|
|
2018-08-18 00:11:03 +08:00
|
|
|
await optionService.createOption('passwordVerificationSalt', utils.randomSecureToken(32), true);
|
|
|
|
await optionService.createOption('passwordDerivedKeySalt', utils.randomSecureToken(32), true);
|
2018-07-21 14:55:24 +08:00
|
|
|
|
2018-08-18 00:11:03 +08:00
|
|
|
const passwordVerificationKey = utils.toBase64(await myScryptService.getVerificationHash(password), true);
|
|
|
|
await optionService.createOption('passwordVerificationHash', passwordVerificationKey, true);
|
2018-07-21 14:55:24 +08:00
|
|
|
|
|
|
|
// passwordEncryptionService expects these options to already exist
|
2018-08-18 00:11:03 +08:00
|
|
|
await optionService.createOption('encryptedDataKey', '', true);
|
|
|
|
await optionService.createOption('encryptedDataKeyIv', '', true);
|
2018-07-21 14:55:24 +08:00
|
|
|
|
2018-08-18 00:11:03 +08:00
|
|
|
await passwordEncryptionService.setDataKey(password, utils.randomSecureToken(16), true);
|
2018-07-24 03:15:32 +08:00
|
|
|
}
|
|
|
|
|
2018-07-25 16:57:36 +08:00
|
|
|
async function initNotSyncedOptions(initialized, startNotePath = 'root', syncServerHost = '', syncProxy = '') {
|
2018-07-24 03:15:32 +08:00
|
|
|
await optionService.createOption('startNotePath', startNotePath, false);
|
2018-07-30 22:40:50 +08:00
|
|
|
await optionService.createOption('lastDailyBackupDate', dateUtils.nowDate(), false);
|
|
|
|
await optionService.createOption('lastWeeklyBackupDate', dateUtils.nowDate(), false);
|
|
|
|
await optionService.createOption('lastMonthlyBackupDate', dateUtils.nowDate(), false);
|
2018-07-24 03:15:32 +08:00
|
|
|
await optionService.createOption('dbVersion', appInfo.dbVersion, false);
|
|
|
|
|
2018-07-25 16:12:34 +08:00
|
|
|
await optionService.createOption('lastSyncedPull', 0, false);
|
2018-07-24 03:15:32 +08:00
|
|
|
await optionService.createOption('lastSyncedPush', 0, false);
|
|
|
|
|
|
|
|
await optionService.createOption('zoomFactor', 1.0, false);
|
|
|
|
await optionService.createOption('theme', 'white', false);
|
2018-07-23 04:21:16 +08:00
|
|
|
|
2018-09-07 05:21:14 +08:00
|
|
|
await optionService.createOption('leftPaneMinWidth', '350', false);
|
|
|
|
await optionService.createOption('leftPaneWidthPercent', '20', false);
|
|
|
|
|
2018-07-24 03:15:32 +08:00
|
|
|
await optionService.createOption('syncServerHost', syncServerHost, false);
|
2018-07-23 04:21:16 +08:00
|
|
|
await optionService.createOption('syncServerTimeout', 5000, false);
|
2018-07-25 14:30:41 +08:00
|
|
|
await optionService.createOption('syncProxy', syncProxy, false);
|
2018-07-24 14:12:36 +08:00
|
|
|
|
|
|
|
await optionService.createOption('initialized', initialized ? 'true' : 'false', false);
|
2018-07-21 14:55:24 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
module.exports = {
|
2018-07-24 03:15:32 +08:00
|
|
|
initDocumentOptions,
|
|
|
|
initSyncedOptions,
|
|
|
|
initNotSyncedOptions
|
2018-07-21 14:55:24 +08:00
|
|
|
};
|