123456789101112131415161718192021222324252627282930313233343536373839 |
- const { URL } = require('url')
- const fileHash = require('../../util/backup_filehash')
- const apple_timestamp = require('../../util/apple_timestamp')
- const HISTORY_DB = fileHash('Library/Safari/History.db', 'AppDomain-com.apple.mobilesafari')
- module.exports = {
- version: 4,
- name: 'safari.webhistory',
- description: `List all web history`,
- requiresBackup: true,
- // Run on a v3 lib / backup object
- run (lib, { backup }) {
- return getWebHistory(backup)
- },
- // Available fields.
- output: {
- timestamp: el => el.XFORMATTEDDATESTRING,
- origin: el => new URL(el.url || '').origin || '',
- url: el => el.url,
- title: el => (el.title || '')
- }
- }
- /// Get all web history entries.
- function getWebHistory (backup) {
- return new Promise((resolve, reject) => {
- backup.openDatabase(HISTORY_DB)
- .then(db => {
- db.all(`SELECT *, ${apple_timestamp.parse('visit_time')} AS XFORMATTEDDATESTRING from history_visits LEFT JOIN history_items ON history_items.ROWID = history_visits.history_item`, function (err, rows) {
- if (err) reject(err)
- resolve(rows)
- })
- })
- .catch(reject)
- })
- }
|