| 
									
										
										
										
											2018-07-21 08:55:24 +02: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-23 21:15:32 +02:00
										 |  |  | async function initDocumentOptions() { | 
					
						
							| 
									
										
										
										
											2018-07-21 08:55:24 +02:00
										 |  |  |     await optionService.createOption('documentId', utils.randomSecureToken(16), false); | 
					
						
							|  |  |  |     await optionService.createOption('documentSecret', utils.randomSecureToken(16), false); | 
					
						
							| 
									
										
										
										
											2018-07-23 21:15:32 +02:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2018-07-21 08:55:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-23 21:15:32 +02:00
										 |  |  | async function initSyncedOptions(username, password) { | 
					
						
							|  |  |  |     await optionService.createOption('protectedSessionTimeout', 600); | 
					
						
							|  |  |  |     await optionService.createOption('noteRevisionSnapshotTimeInterval', 600); | 
					
						
							| 
									
										
										
										
											2018-07-21 08:55:24 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     await optionService.createOption('username', username); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     await optionService.createOption('passwordVerificationSalt', utils.randomSecureToken(32)); | 
					
						
							|  |  |  |     await optionService.createOption('passwordDerivedKeySalt', utils.randomSecureToken(32)); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const passwordVerificationKey = utils.toBase64(await myScryptService.getVerificationHash(password)); | 
					
						
							|  |  |  |     await optionService.createOption('passwordVerificationHash', passwordVerificationKey); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // passwordEncryptionService expects these options to already exist
 | 
					
						
							|  |  |  |     await optionService.createOption('encryptedDataKey', ''); | 
					
						
							|  |  |  |     await optionService.createOption('encryptedDataKeyIv', ''); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     await passwordEncryptionService.setDataKey(password, utils.randomSecureToken(16)); | 
					
						
							| 
									
										
										
										
											2018-07-23 21:15:32 +02:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-25 08:30:41 +02:00
										 |  |  | async function initNotSyncedOptions(initialized, startNotePath = '', syncServerHost = '', syncProxy = '') { | 
					
						
							| 
									
										
										
										
											2018-07-23 21:15:32 +02:00
										 |  |  |     await optionService.createOption('startNotePath', startNotePath, false); | 
					
						
							|  |  |  |     await optionService.createOption('lastBackupDate', dateUtils.nowDate(), false); | 
					
						
							|  |  |  |     await optionService.createOption('dbVersion', appInfo.dbVersion, false); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-25 10:12:34 +02:00
										 |  |  |     await optionService.createOption('lastSyncedPull', 0, false); | 
					
						
							| 
									
										
										
										
											2018-07-23 21:15:32 +02:00
										 |  |  |     await optionService.createOption('lastSyncedPush', 0, false); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     await optionService.createOption('zoomFactor', 1.0, false); | 
					
						
							|  |  |  |     await optionService.createOption('theme', 'white', false); | 
					
						
							| 
									
										
										
										
											2018-07-22 22:21:16 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-23 21:15:32 +02:00
										 |  |  |     await optionService.createOption('syncServerHost', syncServerHost, false); | 
					
						
							| 
									
										
										
										
											2018-07-22 22:21:16 +02:00
										 |  |  |     await optionService.createOption('syncServerTimeout', 5000, false); | 
					
						
							| 
									
										
										
										
											2018-07-25 08:30:41 +02:00
										 |  |  |     await optionService.createOption('syncProxy', syncProxy, false); | 
					
						
							| 
									
										
										
										
											2018-07-24 08:12:36 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     await optionService.createOption('initialized', initialized ? 'true' : 'false', false); | 
					
						
							| 
									
										
										
										
											2018-07-21 08:55:24 +02:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | module.exports = { | 
					
						
							| 
									
										
										
										
											2018-07-23 21:15:32 +02:00
										 |  |  |     initDocumentOptions, | 
					
						
							|  |  |  |     initSyncedOptions, | 
					
						
							|  |  |  |     initNotSyncedOptions | 
					
						
							| 
									
										
										
										
											2018-07-21 08:55:24 +02:00
										 |  |  | }; |