Commit Graph

92 Commits (3851bf351f77f6350cb04385e50494ca39d66e28)

Author SHA1 Message Date
Scott Nonnenberg 68af1ae1ea Show dialog if application fails to start up properly 6 years ago
Scott Nonnenberg 11fdf22881 Change sessions.id to a TEXT field to prevent type coercion 6 years ago
Scott Nonnenberg fb670ad6b9 Remove IndexedDB files after removing IndexedDB database 7 years ago
Scott Nonnenberg 9f647f00d8 A couple fixes for the data layer, legacy message upgrade/migrate 7 years ago
Scott Nonnenberg f11dd18536 Be resilient to malformed ephemeral.json 7 years ago
Scott Nonnenberg 1755e0adfd Move all remaining stores to SQLCipher 7 years ago
Scott Nonnenberg a7d78c0e9b Sealed Sender support
https://signal.org/blog/sealed-sender/
7 years ago
Scott Nonnenberg 2cfbfe477a Better handle large numbers of messages in cache on startup 7 years ago
Scott Nonnenberg cd60bdd08a Move conversations to SQLCipher 7 years ago
Scott Nonnenberg 48d937b66a Follow symlinks on target file path as well as user/config paths 7 years ago
Scott Nonnenberg 998c35dcb3 Split configuration into low and high traffic files
Also, we're now handling config ourselves instead of using
electron-config and config dependencies.
7 years ago
Scott Nonnenberg 496ebf2a47 Store SQLCipher decryption key in separate file
First, we write the key a whole lot less. We write it on creation, then
never again.

Second, it's in a file we control very closely. Instead of blindly
regenerating the key if the target file generates an error on read,
we block startup unless the error is 'ENOENT' - the file isn't there
at all.

This still allows for the key.txt file to be deleted or corrupted
somehow, but it should be a lot less common than the high-traffic
config.json used for window location and media permissions.
7 years ago
Scott Nonnenberg 9f920aa35b Re-enable orphaned attachment cleanup 7 years ago
Scott Nonnenberg a247ffe5cf When iOS device has been linked, use iOS color scheme 7 years ago
Scott Nonnenberg fba8e8d479 Add logging to help diagnose protocol handler false positives 7 years ago
Scott Nonnenberg c88df69094 New SQL indices and query tweaks to eliminate table scans
Also: New logging on client side to track performance of db queries
7 years ago
Scott Nonnenberg 727925a266 Clean up old messages, better handle errors from sending 7 years ago
Scott Nonnenberg 6e193456f9 Eliminate orphaned external message files on startup
Attachments, visual attachment thumbnails, video attachment screenshots
Quote thumbnails
Contact avatars
7 years ago
Scott Nonnenberg c56ea55e36 Fix duplicate message detection 7 years ago
Scott Nonnenberg 4d5894bf04 Ensure that all multi-statement sql functionss are serialized 7 years ago
Scott Nonnenberg 3105b77475 Migrate to SQLCipher for messages/cache
Quite a few other fixes, including:
  - Sending to contact with no avatar yet (not synced from mobile)
  - Left pane doesn't update quickly or at all on new message
  - Left pane doesn't show sent or error status

Also:
 - Contributing.md: Ensure set of linux dev dependencies is complete
7 years ago
Scott Nonnenberg 5933a34a18 Use window.log in browser context, turn on console eslint rule 7 years ago
Scott Nonnenberg 3c69886320 Finish new Message component, integrate into application
Also:
- New schema version 8 with video/image thumbnails, screenshots, sizes
- Upgrade messages not at current schema version when loading messages
  to show in conversation
- New MessageDetail react component
- New ConversationHeader react component
7 years ago
Scott Nonnenberg 3a2582a087 Permissions: 'return callback(true)' instead of 'return true' 7 years ago
Scott Nonnenberg ad4387803b New media permission, show dialog when not enabled for voice msg
UI now in separate renderer:
  - the permissions popup
  - settings dialog
  - debug log dialog
  - about window

Couple bug fixes:
  - About Window: Fix 'escape' to close window
  - Remove outdated dist/copy tasks from Gruntfile

Eslintified settings_view.js
7 years ago
Scott Nonnenberg 4415293100 Make all OS menus localizable
Turns out that Electron is not localizing the 'role' elements like we
expected would happen.
7 years ago
Scott Nonnenberg 7c3325f55e File protocol filter: log when non-absolute path is rejected 7 years ago
Scott Nonnenberg beb65b14c0 Deny all permissions we don't actually need 7 years ago
Scott Nonnenberg eec61f5289 Fine-tune file protocol filter 7 years ago
Scott Nonnenberg 06b0544bbe Hardening: normalize on-disk attachment paths before save/load 7 years ago
Scott Nonnenberg 53a471b2b1 Expand set of blocked URI schemes 7 years ago
Scott Nonnenberg e2d044e02b Filter file scheme; disable http, https and ftp entirely 7 years ago
Scott Nonnenberg 754d65ae2e Let's make it all pretty, shall we?
We missed a couple directories with previous attempts to turn this on
globally: app/ and libtextsecure/

Not to mention files in places we didn't expect: ts files that weren't
in the ts directory!

This turns prettier on for every file we care about (js, ts, tsx, md)
everywhere in the project but for a few key parts.
7 years ago
Daniel Gasienica f56dc09d01 Add `getAbsoluteAttachmentPath` 7 years ago
Daniel Gasienica 394d2f0bff Fix type signature 7 years ago
Daniel Gasienica 24f4ad53bc Use single quotes for identifiers 7 years ago
Daniel Gasienica 5a6668e677 Add `Attachments.createWriteForExisting`
This function lets us choose where to write attachment to instead of picking
random name.
7 years ago
Daniel Gasienica efd673083d Rename `writeAttachmentData` to `writeNewAttachmentData` 7 years ago
Daniel Gasienica 36771a2dab Prefer double quotes over backticks for identifiers 7 years ago
Daniel Gasienica 8474f3cf7f Use `create*` prefix to clarify curried functions 7 years ago
Daniel Gasienica d9be6a0f94 Destructure Lodash `require`s 7 years ago
Daniel Gasienica add5d4ab0b Prevent macOS Spotlight indexing of attachments folder
See: https://apple.stackexchange.com/a/92785
7 years ago
Daniel Gasienica 10afcf1bb0 Add `Attachments.deleteData` 7 years ago
Daniel Gasienica 1c8123ff1a Move `writeAttachmentData` into `Attachments`
Encapsulates all attachment operations that require Node.js / Electron APIs,
e.g. file system access.
7 years ago
Daniel Gasienica 6355c54114 Return relative path from `writeAttachmentData`
This will make our app more robust to changes in location on the file system.
7 years ago
Daniel Gasienica 1262d1d696 Shorten prefix to 2 characters
Using 2 hex characters [0-9a-f] will give us 16 * 16 = 256 root folders which
seems more manageable than 4096 (16^3). Assuming a user has 10,000 attachments,
they should roughly distribute at ~40 per folder with prefix length 2 rather
than ~2.5 per folder with a prefix of 3.
7 years ago
Daniel Gasienica e0428355be Wire up `writeAttachment` 7 years ago
Daniel Gasienica 8a94ca5c42 🎨 Use `Buffer.from` 7 years ago
Daniel Gasienica 1283c77518 Switch from hashed to random attachment file names
Using hashes, we get the benefit of deduplication but if a user receives two
messages with the same attachment, deleting one would delete it for both since
they are only stored once. To avoid the complexity of tracking number of
references, we simply generate random file names similar to iMessage on MacOS
(?) and Signal Android.
7 years ago
Daniel Gasienica d9de6dacba Add `writeAttachmentData` module 7 years ago