Commit Graph

232 Commits

Author SHA1 Message Date
Lorenzo Blasa
2e9ab310bd Shutdown command
Summary:
Introduce a 'shutdown' command which effectively kills the process.

Killing the process, for flipper-server, will close down the server and active ws connections.

Reviewed By: passy

Differential Revision: D37209193

fbshipit-source-id: 83303e8209530a41ba870009603cfb383915b7a6
2022-06-21 04:46:42 -07:00
Andrey Goncharov
115a4b7997 Use AbstractPluginInitializer from flipper-frontend-core in flipper-ui-core
Summary: See D37139129

Reviewed By: passy

Differential Revision: D37238571

fbshipit-source-id: 39d6bb87d6beacc793ef5acd71097fcc4e82969d
2022-06-20 12:18:40 -07:00
Lorenzo Blasa
b6bf7c6ee7 Close servers on exit
Summary: On exit, close the servers explicitly.

Reviewed By: lawrencelomax

Differential Revision: D37206986

fbshipit-source-id: 7f4313cce1db18e1fb1320993a58c440af2cc7e0
2022-06-20 03:27:19 -07:00
Lorenzo Blasa
747b91da5f Add file:// as possible origin
Summary:
For Flipper Desktop, Electron based, the origin maybe file:// as shown in tests:

```
Refused socket connection from cross domain request, origin: file://, host: localhost:52342.

Expected origins: http://localhost:52342 or http://[::1]:52342 or http://::1:52342 or http://localhost:3000.
Expected hosts: localhost:52342 or [::1]:52342 or ::1:52342 or localhost:3000
```

This change effectively adds `file://` as a valid origin.

Reviewed By: passy

Differential Revision: D37212809

fbshipit-source-id: 311a93bb8872587d15c6be4329238af6b0f6988d
2022-06-16 10:45:08 -07:00
Lorenzo Blasa
8a1e484d0c Handle ws operations in a safe manner
Summary:
After doing some tests, any error thrown during ws events can result in flipper-server shutting down.

To avoid this, effectively, errors throughout should be properly handled.

The problem is that there's no guarantees this is or will be the case.

Instead, wrap the event handlers in a safe function execution wrapper. Any errors will be caught and logged.

Reviewed By: aigoncharov

Differential Revision: D37206923

fbshipit-source-id: 6f7cadc297ac39768030962c6eaadde55048fd21
2022-06-16 10:35:17 -07:00
Andrey Goncharov
d987e36c62 Add a single place to initialize Flipper utilitary folders
Summary: We have several folders Flipper uses that sometimes we forget to create before Flipper starts. With this diff we have a single place to initialise the necessary folder structure.

Reviewed By: lblasa

Differential Revision: D37036601

fbshipit-source-id: f945f2bfdfc6be24ba87bd4b13c7fcef3fd74451
2022-06-10 06:38:50 -07:00
Lorenzo Blasa
9cc8e4076f flipper-server refactor
Summary:
This changes moves most of the functionality found in flipper-server to flipper-server-core.

flipper-server will mostly be a package that wraps around flipper-server-core. Staying in flipper-server:
- Command line args
- Orchestration to start the necessary servers

Reviewed By: aigoncharov

Differential Revision: D36807087

fbshipit-source-id: f29002c7cc5d08b8c5184fdaaa02ba22562a9f45
2022-06-07 02:42:16 -07:00
Andrey Goncharov
976399b950 Move Tail to flipper-server-core
Summary: Tail is a server-side logging utility. We cannot add it to flipper-frontend-core as it is going to be included into the browser bundle then and break the build.

Reviewed By: antonk52

Differential Revision: D36771864

fbshipit-source-id: 169cdb88543f1e47f39e8c0976c3a3f45c0439d5
2022-05-31 02:58:21 -07:00
Andrey Goncharov
4eca8d1088 Add isHeadlessBuild to EnvironmentInfo
Summary: Allows to attribute errors to flipper server or flipper electron

Reviewed By: passy

Differential Revision: D36698504

fbshipit-source-id: 6d07216fd05aa48b7c8cca5b53145916b64526eb
2022-05-27 02:37:53 -07:00
dependabot[bot]
f2279f62c5 Bump ws from 8.5.0 to 8.6.0 in /desktop (#3708)
Summary:
Bumps [ws](https://github.com/websockets/ws) from 8.5.0 to 8.6.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/websockets/ws/releases">ws's releases</a>.</em></p>
<blockquote>
<h2>8.6.0</h2>
<h1>Features</h1>
<ul>
<li>Add the ability to remove confidential headers on a per-redirect basis (<a href="https://github-redirect.dependabot.com/websockets/ws/issues/2030">https://github.com/facebook/flipper/issues/2030</a>).</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="ba214d9693"><code>ba214d9</code></a> [dist] 8.6.0</li>
<li><a href="8e3f1181f2"><code>8e3f118</code></a> [feature] Introduce the <code>'redirect'</code> event (<a href="https://github-redirect.dependabot.com/websockets/ws/issues/2030">https://github.com/facebook/flipper/issues/2030</a>)</li>
<li><a href="69e682806d"><code>69e6828</code></a> [ci] Test on node 18</li>
<li><a href="0b6eb71665"><code>0b6eb71</code></a> [ci] Do not test on node 17</li>
<li><a href="d062ded622"><code>d062ded</code></a> [example] Fix require path</li>
<li><a href="2cf6202f8a"><code>2cf6202</code></a> [example] Use the <code>WebSocket.WebSocket{,Server}</code> aliases</li>
<li><a href="62e9b199ad"><code>62e9b19</code></a> [doc] Fix nits</li>
<li><a href="2619c003ce"><code>2619c00</code></a> [minor] Fix nit in comment</li>
<li><a href="d086f4bcbb"><code>d086f4b</code></a> [minor] Make <code>abortHandshake()</code> emit the error in the next tick</li>
<li><a href="ff80d665f9"><code>ff80d66</code></a> [test] Do not use a relative URL</li>
<li>Additional commits viewable in <a href="https://github.com/websockets/ws/compare/8.5.0...8.6.0">compare view</a></li>
</ul>
</details>
<br />

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=ws&package-manager=npm_and_yarn&previous-version=8.5.0&new-version=8.6.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

 ---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `dependabot rebase` will rebase this PR
- `dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `dependabot merge` will merge this PR after your CI passes on it
- `dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `dependabot cancel merge` will cancel a previously requested merge and block automerging
- `dependabot reopen` will reopen this PR if it is closed
- `dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

</details>

Pull Request resolved: https://github.com/facebook/flipper/pull/3708

Reviewed By: timur-valiev

Differential Revision: D36371198

Pulled By: mweststrate

fbshipit-source-id: df9befdb3f95be2b8c564f87287bd8621e3a0c59
2022-05-23 07:29:26 -07:00
Andrey Goncharov
0f038218f8 Share uuid
Summary: Expose uuid from flipper-common as it is required in multiple packages

Reviewed By: lblasa

Differential Revision: D36441889

fbshipit-source-id: 1fa539cb437976dbefe7d5d9a52e5e098a6402a7
2022-05-18 03:13:31 -07:00
Andrey Goncharov
810e5840c6 Remove stale TODO
Reviewed By: passy

Differential Revision: D36441402

fbshipit-source-id: 5b0a7ed035a68d75e4c86c56686e302a80bd9fd0
2022-05-17 08:23:33 -07:00
Andrey Goncharov
b8dda9b0a7 Create .flipper/certs folder when necessary
Reviewed By: passy

Differential Revision: D36346367

fbshipit-source-id: 290a4a64ad3266f282f13074b2161d988a2bf2cc
2022-05-13 03:19:47 -07:00
Andrey Goncharov
d1ed676a48 Remove dynamic dependencies from flipper-server
Summary:
Currently, Flipper Server has a few productions dependencies (mac-ca, node-fetch) that are not bundled with the Flipper Server. It makes it harder to distribute Flipper Server, as now all potential consumers need not only to download the bundle, but also install these additional dependencies.
This diff makes it possible to bundle `mac-ca` and `node-fetch` with Flipper Server. As a result, Flipper Server becomes dependency-free in production.

Reviewed By: lblasa

Differential Revision: D36345213

fbshipit-source-id: 2cd6ba1b3301b45dc2295891964ba020fd107586
2022-05-13 03:19:47 -07:00
Andrey Goncharov
754afd0d2d Fix and re-apply "[flipper] Automatically set Android devices into the permissive mode"
Summary: Reverts D36263724 (0ee8f09fe5) and fixes the underlying crash by setting only physical devices in the permissive mode

Reviewed By: passy

Differential Revision: D36275055

fbshipit-source-id: 25a691e9c07e20a3341630db508795c133a9bd81
2022-05-10 08:42:58 -07:00
Andrey Goncharov
3dd7583fdc Add device-find, client-find server commands
Reviewed By: passy

Differential Revision: D36098171

fbshipit-source-id: f0d0bbefcafc57a6413f9ffe8da271419c0d4deb
2022-05-10 05:13:24 -07:00
Mengke Ding
0ee8f09fe5 Back out "Automatically set Android devices into the permissive mode"
Summary:
Original commit changeset: 471470c5ca91

Original Phabricator Diff: D35356211 (501abc6b55)

Recently, bloks users reported that android emulators lost connection upon launching Flipper. (S270689)

Manual bisecting indicates that remote emulators won't crash on v0.142.362128844 (4/6) but crash on 0.143.365099607 (4/21).

Looking at https://www.internalfb.com/code/fbsource/[history]/xplat/scripts/.flipperversion.v2, and backing out D35356211 (501abc6b55) fixes the issue.

It's still unclear why setting `setIntoPermissiveMode` would crash/disconnect the android emulators, I'd defer Flipper team to investigate this further but this diff should unblock all the android bloks emulator + Flipper use case.

Reviewed By: lblasa

Differential Revision: D36263724

fbshipit-source-id: e8674730c0185457f6eda347ce7d9a41f9e1a2a4
2022-05-09 16:04:14 -07:00
Pascal Hartig
342e22bd87 Upgrade more /desktop deps
Summary: More bumps for patch and minor releases. allow-large-files

Reviewed By: aigoncharov

Differential Revision: D36104098

fbshipit-source-id: 6db995e660afbe4febd72aa70ed8150cc16a8c93
2022-05-04 04:03:19 -07:00
Pascal Hartig
cc3aca0e8b Upgrade @types/node to one version everywhere
Summary: Caused some inconsistencies when running `tsc`. This brings them back in line.

Reviewed By: aigoncharov

Differential Revision: D36101548

fbshipit-source-id: b8f757c59f879911c9b0920fe11396246ffa37e2
2022-05-04 04:03:19 -07:00
Andrey Goncharov
501abc6b55 Automatically set Android devices into the permissive mode
Reviewed By: nikoant

Differential Revision: D35356211

fbshipit-source-id: 471470c5ca91c824590a409c4474433f2277b1f2
2022-04-07 02:49:48 -07:00
Andrey Goncharov
ba9a80545d Support globally installed React DevTools
Summary:
- Support loading globally installed DevTools

Background:
1. Initially, I wanted to use react-devtools-core as before. react-devtools-core standalone contains quite a few imports of node.js APIs. After [a conversation with Brian](https://fb.workplace.com/groups/react.devtools/permalink/3131548550392044), I pivoted to react-devtools-inline
2. Technical design doc of react-devtools-inline integration: https://docs.google.com/document/d/1STUSUhXzrW_KkvqSu7Ge-rxjVFF7oU3_NbwzimkO_Z4
3. We support usage of globally installed devtools. Code of react-devtools-inline is not ready to be used by the browser as is. We need to bundle it and substitute React and ReactDOM imports with the globals.
4. As we can't pre-compile what users install globally, we need to bundle global devtools on demand,
5. I tried re-using our Metro bundling pipeline initially, but gave up after fighting it for 2 days. Included, `rollup` instead.
6. Size of a `tgz` archive with a plugin is 2.1MB

allow-large-files

Reviewed By: mweststrate

Differential Revision: D34968770

fbshipit-source-id: 352299964ccc195b8677dbda47db84ffaf38737b
2022-03-31 04:01:33 -07:00
Michel Weststrate
393e1f08d4 Added details to failing assertions
Summary: Added a clearer message to the null checks, to give some clue on what goes wrong

Reviewed By: lawrencelomax

Differential Revision: D35246065

fbshipit-source-id: d33a6184bf722a386c2b2dff1afd41db20efe90b
2022-03-30 03:33:42 -07:00
Shachar Erez
04dfc91c51 Fix origin validation check
Reviewed By: mweststrate

Differential Revision: D35080146

fbshipit-source-id: 3b8353c23b7c9c2f537801513e518b5b23a11520
2022-03-24 09:49:16 -07:00
Andrey Goncharov
f8e4c0c02c Log invalid URL
Reviewed By: passy

Differential Revision: D35050026

fbshipit-source-id: 95d367a752351a728d355edd56cb68156c80c8b5
2022-03-23 07:37:10 -07:00
Andres Orozco Gonzalez
83133618d6 add adbkit configurations settings
Summary: Adbkit configurations settings may be neccesary when we want to run flipper-server in an IPv6 stack machine as localhost would bind to [::1] rather than 127.0.0.1 which is where the adb server usually runs

Reviewed By: mweststrate

Differential Revision: D34964851

fbshipit-source-id: 9cf70f9bdc0c40e92382b1537013439f85983f65
2022-03-23 04:24:23 -07:00
Pascal Hartig
c180b24753 Fix typo
Summary: Well, and added another word.

Reviewed By: lblasa

Differential Revision: D34944504

fbshipit-source-id: eb4e7db05ee846721fa18899aa50596124632b5b
2022-03-17 04:11:37 -07:00
Lorenzo Blasa
76847bbef1 Do not emit errors when unable to extract client query
Summary:
^

Usually, when launching Chrome, this error will take place a significat amount of times. By looking at the HTTP request, it is difficult to determine the origin other than being a Chrome extension.

There's no actionable items in Flipper, so do not emit the error.

Changelog: Do not emit errors when unable to extract client query

Reviewed By: antonk52

Differential Revision: D34898603

fbshipit-source-id: fbeb2db7ec2914669192cbebc2e6b15464e31827
2022-03-16 02:26:42 -07:00
Lawrence Lomax
995d1c8180 Remove IOSDevice.buffer, IOSDevice.log
Summary: It's unused, can only assume that it was a log buffer in some distant time which is now hidden behind a separate log listener class

Reviewed By: passy

Differential Revision: D34787086

fbshipit-source-id: 0f920649c119efc5172ca7dcc6b53cfb802a5cbf
2022-03-10 09:48:42 -08:00
Pascal Hartig
71bdb23a1d Make log clear failures a warning
Summary:
Logcat can sometimes fail to clear the logs for some reason.
There's nothing we can do about this as we're directly calling out to adb.

Reviewed By: lawrencelomax

Differential Revision: D34749970

fbshipit-source-id: 2166717ace491f7b73b380576392638ef9276b78
2022-03-09 07:40:39 -08:00
Pascal Hartig
9bd6c7f54a Remove unused import
Summary: Per title.

Reviewed By: jknoxville

Differential Revision: D34749935

fbshipit-source-id: 8adaedf18d1528a60a0623bbe67b8072e3d11b13
2022-03-09 07:40:39 -08:00
Pascal Hartig
6d05e6c226 Bump /desktop again
Summary:
New round of releases and PRs came up, so bumping again.

Very selective Metro update as some dependencies don't play well together. A bunch of other dependencies use ESM and fail at various stages of the build or runtime process.

Reviewed By: mweststrate

Differential Revision: D34688830

fbshipit-source-id: 2ff5c46c253b814140f634a986ba0d246e9b0945
2022-03-08 03:02:11 -08:00
Pascal Hartig
a5529d789d Don't raise EADDRINUSE as error on startup
Summary:
There will likely be more so I added a place for inspecting
these messages to the top.

Reviewed By: antonk52

Differential Revision: D34681084

fbshipit-source-id: ad32145d44dba08b813d8a2ddc63d500a0c360d8
2022-03-07 09:09:52 -08:00
Anton Nikolaev
37ff34390a Enable Marketplace for Flipper (#3491)
Summary:
This is PR on top of: https://github.com/facebook/flipper/pull/3473

It adds an option to Settings to allow distribution of marketplace plugins.

Also includes a simple fetch function to retrieve data from external API/server.

## Changelog

Allow marketplace plugins

Pull Request resolved: https://github.com/facebook/flipper/pull/3491

Test Plan:
1. Enable marketplace
2. Provide custom marketplace server (it will serve the list of internal plugins with downloadURL)
3. Test if can see Available plugins and can download/remove the plugin
4. If new update for the plugin, it should also allow auto update

Reviewed By: antonk52

Differential Revision: D34586339

Pulled By: nikoant

fbshipit-source-id: c887982aa0f0f9abd3b5360f22e8692a2445d345
2022-03-07 02:49:49 -08:00
Andrey Goncharov
6c74f2dd18 Set device features on device initialization
Summary:
1. Identify if device supports screenshots/screen recording when it is created.
2. Disable screen recording/screenshot buttons when they are not supported

Reviewed By: passy

Differential Revision: D34611133

fbshipit-source-id: 82ad2d67e4af482d9becf7995187667b5d99bc36
2022-03-04 02:00:23 -08:00
Pascal Hartig
7c1251075f Dep bump for /desktop
Summary:
Combining a bunch of dependabot PRs.

N.B. I had to manually clean up the `yarn.lock` a few times because some dependencies resolved to multiple version numbers, catching tsc off-guard.
allow-large-files

Reviewed By: nikoant

Differential Revision: D34579180

fbshipit-source-id: a4848e1010ff240d9b0e721d3878585e7b4bd078
2022-03-03 04:11:52 -08:00
Andrey Goncharov
5068c8273b Add deprecation notice notification
Summary: Add deprecation notice device icon and notification

Reviewed By: lblasa

Differential Revision: D34582475

fbshipit-source-id: 90fde15caf1925b42f50fbfc77dece88c82833cf
2022-03-02 09:18:15 -08:00
Andrey Goncharov
3ec5b56263 Polyfill fetch
Summary: Provide server add-on writers with a well-known fetch API

Reviewed By: mweststrate

Differential Revision: D34447630

fbshipit-source-id: 70386940c12f9e53aa97b3530a7edf1d40b5f2e2
2022-02-28 03:50:34 -08:00
Andrey Goncharov
aec05533d7 Expose a subset of flipper-plugin to flipper server
Summary: Flipper plugins rely on 'flipper-plugin' package being accessible from 'global'. Expose a subset (without UI stuff) of flipper-plugin to server add-ons

Reviewed By: mweststrate

Differential Revision: D34400811

fbshipit-source-id: e0079ddfa67e66c1b24ab02d7682917ddfc84aaf
2022-02-28 03:50:34 -08:00
Andrey Goncharov
01a5f3da90 Add generics to server add-on connection
Reviewed By: mweststrate

Differential Revision: D34307356

fbshipit-source-id: 27e61355a85995368ebb197c42d58f4145473567
2022-02-28 03:50:34 -08:00
Andrey Goncharov
9e4ac0aaa9 Add unit tests for PluginManager
Reviewed By: mweststrate

Differential Revision: D34307076

fbshipit-source-id: 7cb6c808bea10d15627958e8fabc02b4563183d4
2022-02-28 03:50:34 -08:00
Andrey Goncharov
d96cf8127f Add unit tests for ServerAddOn
Reviewed By: mweststrate

Differential Revision: D34303780

fbshipit-source-id: 03a4570a6e891d979b87caca14f51068d74df877
2022-02-28 03:50:34 -08:00
Andrey Goncharov
81d0057a8d Fix potential race conditions for starting/stopping server add-ons
Reviewed By: mweststrate

Differential Revision: D34301593

fbshipit-source-id: 2950de8a8567318cd3e87eff176657df5ba8fd1b
2022-02-28 03:50:34 -08:00
Andrey Goncharov
8b94186783 Load installed server add-ons
Reviewed By: nikoant

Differential Revision: D34300475

fbshipit-source-id: 6bb6c0ab811e28806a0924b3487931bdb0dd2c59
2022-02-28 03:50:34 -08:00
Andrey Goncharov
4067f5bd88 Implement sending messages from desktop to add-on
Reviewed By: antonk52

Differential Revision: D34239803

fbshipit-source-id: 1a18d522ba877ade3d0703fbb374c15b596241d7
2022-02-28 03:50:34 -08:00
Andrey Goncharov
2ce037d96b Load bundled server add-ons
Reviewed By: antonk52

Differential Revision: D34238883

fbshipit-source-id: 01b4b1c1c0a63cbfb639e903f6a77307ae370330
2022-02-28 03:50:34 -08:00
Andrey Goncharov
b655efc78e Migrate to default exports for server add-ons
Reviewed By: antonk52

Differential Revision: D34201906

fbshipit-source-id: 3ee2bf831d5a1f5c6c9252acce1b1731462871f1
2022-02-28 03:50:34 -08:00
Andrey Goncharov
04eab80c98 Move server add-on interfaces to flipper-common
Reviewed By: antonk52

Differential Revision: D34169419

fbshipit-source-id: 69fcc8da7d98f59818fbb5b486a488f19830cd81
2022-02-28 03:50:34 -08:00
Andrey Goncharov
b9294645d3 Limit methods server add on can access
Reviewed By: mweststrate

Differential Revision: D34076174

fbshipit-source-id: e51a1b08dab54de6b7dc82ca59ec18a10f81ddd7
2022-02-28 03:50:34 -08:00
Andrey Goncharov
db976d5113 Implement sending messages from a server add-on
Reviewed By: mweststrate

Differential Revision: D34074383

fbshipit-source-id: de85e7a22dc9bb780163fc5b522708e8bc976df3
2022-02-28 03:50:34 -08:00
Andrey Goncharov
842b2c810a Implement sending messages to server add-on
Reviewed By: mweststrate

Differential Revision: D34073403

fbshipit-source-id: eacd73811b436f2b5c4255a83d8eb09367a96a67
2022-02-28 03:50:34 -08:00