geofences.js 991 B

12345678910111213141516171819202122232425262728293031323334353637
  1. const fileHash = require('../../util/backup_filehash')
  2. const GEO_DB = fileHash('Library/Caches/locationd/consolidated.db', 'RootDomain')
  3. module.exports = {
  4. version: 4,
  5. name: 'system.geofences',
  6. description: `List local geofences used for triggers`,
  7. requiresBackup: true,
  8. // Run on a v3 lib / backup object.
  9. run (lib, { backup }) {
  10. return getGeoFences(backup)
  11. },
  12. // Wifi Report Fields.
  13. output: {
  14. date: el => el.XFORMATTEDDATESTRING,
  15. latitude: el => el.Latitude,
  16. longitude: el => el.Longitude,
  17. distance: el => el.Distance
  18. }
  19. }
  20. function getGeoFences (backup) {
  21. return new Promise((resolve, reject) => {
  22. backup.openDatabase(GEO_DB)
  23. .then(db => {
  24. db.all(`SELECT datetime(Timestamp + 978307200, 'unixepoch') AS XFORMATTEDDATESTRING, Latitude, Longitude, Distance FROM Fences ORDER BY Timestamp ASC`, async function (err, rows) {
  25. if (err) reject(err)
  26. resolve(rows)
  27. })
  28. })
  29. .catch(reject)
  30. })
  31. }